summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2015-08-29 11:41:40 +0200
committerArno <arno@disconnect.de>2015-08-29 11:41:40 +0200
commitb8c44e336b596aa45f4fd4054353912b73b71e66 (patch)
tree4cf75ee2e5fc3df266b0f0c3c60ff32874189b62
parent8044844879f3bdb57f216c5be1499b0af5b5bbb7 (diff)
downloadSheMov-b8c44e336b596aa45f4fd4054353912b73b71e66.tar.gz
SheMov-b8c44e336b596aa45f4fd4054353912b73b71e66.tar.bz2
SheMov-b8c44e336b596aa45f4fd4054353912b73b71e66.zip
Slide through recent in PictureViewer2
For now, recent is hardcoded to pictures added in the last 6 months. Maybe it should be configurable...
-rw-r--r--picfilesmodel.cpp15
-rw-r--r--picfilesmodel.h3
-rw-r--r--pictureviewer2.cpp63
-rw-r--r--pictureviewer2.h6
4 files changed, 81 insertions, 6 deletions
diff --git a/picfilesmodel.cpp b/picfilesmodel.cpp
index 3eff4cb..ec1b82d 100644
--- a/picfilesmodel.cpp
+++ b/picfilesmodel.cpp
@@ -305,6 +305,19 @@ void PicFilesModel::allPicIds(){
cur << q.value(0) << q.value(1) << q.value(2);
mAllPics << cur;
}
+ mCurrentPics = &mAllPics;
+}
+
+void PicFilesModel::recentPicIds(){
+ mRecentPics.clear();
+ mCurrentBatch = 0;
+ QSqlQuery q("SELECT tfilename, cmd5sum, ipicsid FROM pics WHERE dtadded > now() - interval '6 months' ORDER BY random()", mDb);
+ while(q.next()){
+ QList<QVariant> cur;
+ cur << q.value(0) << q.value(1) << q.value(2);
+ mRecentPics << cur;
+ }
+ mCurrentPics = &mRecentPics;
}
QList<QList<QVariant> > PicFilesModel::getNextBatch(){
@@ -312,7 +325,7 @@ QList<QList<QVariant> > PicFilesModel::getNextBatch(){
mCurrentBatch = 0;
}
int start = mCurrentBatch * 100;
- QList<QList<QVariant> > res = mAllPics.mid(start, 100);
+ QList<QList<QVariant> > res = mCurrentPics->mid(start, 100);
QList<QList<QVariant> > retval;
for(QList<QList<QVariant> >::const_iterator it = res.constBegin(); it != res.constEnd(); ++it){
QList<QVariant> c = *it;
diff --git a/picfilesmodel.h b/picfilesmodel.h
index c64a70c..8af7bda 100644
--- a/picfilesmodel.h
+++ b/picfilesmodel.h
@@ -34,6 +34,7 @@ class PicFilesModel : public SmTreeModel {
SmTreeItem *findRecursive(SmTreeItem *start, const QVariant &name, const QVariant id) const;
QList<MappingData> mappingDataFromFiles(const QList<int> fileIds) const;
void allPicIds();
+ void recentPicIds();
QList<QList<QVariant> > getNextBatch();
public slots:
@@ -47,6 +48,8 @@ class PicFilesModel : public SmTreeModel {
QString mMappingsQS;
QList<int> mMappingIds;
QList<QList<QVariant> > mAllPics;
+ QList<QList<QVariant> > mRecentPics;
+ QList<QList<QVariant> > *mCurrentPics;
int mCurrentBatch;
};
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index 2640c2f..2eb4566 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -61,10 +61,12 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0)
//picture show
mSlideTimer = new QTimer(this);
mSlideTimerAll = new QTimer(this);
+ mSlideTimerRecent = new QTimer(this);
mCurTimer = mSlideTimer;
mSlideTimerAllRestart = true;
connect(mSlideTimer, SIGNAL(timeout()), this, SLOT(next()));
connect(mSlideTimerAll, SIGNAL(timeout()), this, SLOT(nextFromAll()));
+ connect(mSlideTimerRecent, SIGNAL(timeout()), this, SLOT(nextFromRecent()));
//models + dialogs
mMappingTreeModel = static_cast<MappingTreeModel*>(SmGlobals::instance()->model("MappingTree"));
@@ -231,6 +233,7 @@ void PictureViewer2::stopSlide(){
mCurTimer->stop();
mSlideStopC->setDefaultTextColor(Qt::darkGreen);
mSlideAllC->setDefaultTextColor(mDefaultTextColor);
+ mSlideRecentC->setDefaultTextColor(mDefaultTextColor);
mSlideC->setDefaultTextColor(mDefaultTextColor);
mShuffleC->setDefaultTextColor(mDefaultTextColor);
mShuffle = false;
@@ -256,12 +259,26 @@ void PictureViewer2::startSlideAll(){
mSlideStopC->setDefaultTextColor(mDefaultTextColor);
mSlideAllC->setDefaultTextColor(Qt::darkGreen);
mSlideC->setDefaultTextColor(mDefaultTextColor);
+ mSlideRecentC->setDefaultTextColor(mDefaultTextColor);
mShuffleC->setDefaultTextColor(mDefaultTextColor);
mShuffle = false;
mSlideTimerAllRestart = true;
mCurTimer->start(5000);
}
+void PictureViewer2::startSlideRecent(){
+ mCurTimer->stop();
+ mCurTimer = mSlideTimerRecent;
+ mSlideStopC->setDefaultTextColor(mDefaultTextColor);
+ mSlideAllC->setDefaultTextColor(mDefaultTextColor);
+ mSlideC->setDefaultTextColor(mDefaultTextColor);
+ mShuffleC->setDefaultTextColor(mDefaultTextColor);
+ mSlideRecentC->setDefaultTextColor(Qt::darkGreen);
+ mShuffle = false;
+ mSlideTimerRecentRestart = true;
+ mCurTimer->start(5000);
+}
+
void PictureViewer2::toggleSlide(bool slide){
if(slide){
@@ -273,6 +290,7 @@ void PictureViewer2::toggleSlide(bool slide){
void PictureViewer2::slide(bool){
mSlideTimerAll->stop();
+ mSlideTimerRecent->stop();
mCurTimer = mSlideTimer;
if(mSlideTimer->isActive()){
mSlideTimer->stop();
@@ -285,17 +303,30 @@ void PictureViewer2::slide(bool){
void PictureViewer2::slideThrouhghAll(bool){
mSlideTimer->stop();
+ mSlideTimerRecent->stop();
mCurTimer = mSlideTimerAll;
mShowMappingItem = true;
if(mSlideTimerAll->isActive()){
mSlideTimerAll->stop();
}else{
- mSlideTimer->stop();
mSlideTimerAllRestart = true;
mSlideTimerAll->start(5000);
}
}
+void PictureViewer2::slideThrougRecent(bool){
+ mSlideTimer->stop();
+ mSlideTimerAll->stop();
+ mCurTimer = mSlideTimerRecent;
+ mShowMappingItem = true;
+ if(mSlideTimerRecent->isActive()){
+ mSlideTimerRecent->stop();
+ }else{
+ mSlideTimerRecentRestart = true;
+ mSlideTimerRecent->start(5000);
+ }
+}
+
void PictureViewer2::readSettings(){
QSettings s;
mUseGradient = s.value("ui/pvgradient").toBool();
@@ -440,6 +471,8 @@ void PictureViewer2::doControl(QGraphicsItem *item){
startSlide();
}else if(curItem == mSlideAllC){
startSlideAll();
+ }else if(curItem == mSlideRecentC){
+ startSlideRecent();
}
}
}
@@ -666,7 +699,23 @@ void PictureViewer2::nextFromAll(){
mPicFilesModel->allPicIds();
mSlideTimerAllRestart = false;
setNextBatch();
- mSlideTimerAll->start();
+ mSlideTimerAll->start(5000);
+ }
+ if(mCurPos == mFiles.size()){
+ setNextBatch();
+ }
+ mMarkA->setChecked(mMarkedFiles.contains(mFiles.at(mCurPos)));
+ showFile(mFiles.at(mCurPos));
+ ++mCurPos;
+}
+
+void PictureViewer2::nextFromRecent(){
+ if(mSlideTimerRecentRestart){
+ mSlideTimerRecent->stop();
+ mPicFilesModel->recentPicIds();
+ mSlideTimerRecentRestart = false;
+ setNextBatch();
+ mSlideTimerRecent->start(5000);
}
if(mCurPos == mFiles.size()){
setNextBatch();
@@ -677,7 +726,7 @@ void PictureViewer2::nextFromAll(){
}
void PictureViewer2::constructControlItem(){
- QStringList controls = QStringList() << "Next (>)" << "Previous (<)" << "Skip forward (C->)" << "Skip back (C-<)" << "Shuffle (C-R)" << "Stop Slide <SP>" << "Slide <SP>" << "Slide all <C-SP>";
+ QStringList controls = QStringList() << "Next (>)" << "Previous (<)" << "Skip forward (C->)" << "Skip back (C-<)" << "Shuffle (C-R)" << "Stop Slide <SP>" << "Slide <SP>" << "Slide all <C-SP>" << "Slide recent";
QFont f = QFont();
f.setPointSize(14);
f.setBold(true);
@@ -737,6 +786,10 @@ void PictureViewer2::constructControlItem(){
mSlideAllC->setFont(f);
mSlideAllC->setPlainText(controls.at(7));
mSlideAllC->moveBy(textLeftMargin, 10 * textFactor);
+ mSlideRecentC = new QGraphicsTextItem(mBoundingRectItem);
+ mSlideRecentC->setFont(f);
+ mSlideRecentC->setPlainText(controls.at(8));
+ mSlideRecentC->moveBy(textLeftMargin, 11 * textFactor);
}
void PictureViewer2::setGradient(const QPixmap &pic){
@@ -752,14 +805,14 @@ void PictureViewer2::setGradient(const QPixmap &pic){
}
void PictureViewer2::setNextBatch(){
- mSlideTimerAll->stop();
+ mCurTimer->stop();
mFiles.clear();
QList<QList<QVariant> > data = mPicFilesModel->getNextBatch();
foreach(QList<QVariant> l, data){
addFile(l.value(0).toString(), l.value(1).toInt());
}
mCurPos = 0;
- mSlideTimerAll->start();
+ mCurTimer->start();
}
QTextDocument *PictureViewer2::treeToString(const SmTreeItem *root) const{
diff --git a/pictureviewer2.h b/pictureviewer2.h
index 31c5bb3..63b020d 100644
--- a/pictureviewer2.h
+++ b/pictureviewer2.h
@@ -60,9 +60,11 @@ class PictureViewer2 : public QGraphicsView {
void stopSlide();
void startSlide();
void startSlideAll();
+ void startSlideRecent();
void toggleSlide(bool slide);
void slide(bool);
void slideThrouhghAll(bool);
+ void slideThrougRecent(bool);
void readSettings();
void writeSettings();
void shuffle();
@@ -89,6 +91,7 @@ class PictureViewer2 : public QGraphicsView {
void constructMappingItem(const PicData &file);
void docFromTree(SmTreeItem *start, QTextCursor *cur, int indent);
void nextFromAll();
+ void nextFromRecent();
private:
void constructControlItem();
@@ -108,8 +111,10 @@ class PictureViewer2 : public QGraphicsView {
int mCursorOffset;
QTimer *mSlideTimer;
QTimer *mSlideTimerAll;
+ QTimer *mSlideTimerRecent;
QTimer *mCurTimer;
bool mSlideTimerAllRestart;
+ bool mSlideTimerRecentRestart;
const static QString mDefaultFile;
PictureViewer2Item *mFnItem;
PictureViewer2Item *mMappingItem;
@@ -122,6 +127,7 @@ class PictureViewer2 : public QGraphicsView {
QGraphicsTextItem *mSlideStopC;
QGraphicsTextItem *mSlideC;
QGraphicsTextItem *mSlideAllC;
+ QGraphicsTextItem *mSlideRecentC;
bool mUseGradient;
QColor mBgColor;
QColor mDefaultTextColor;