diff options
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r-- | pictureviewer2.cpp | 287 |
1 files changed, 6 insertions, 281 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index d95602a..df90ffb 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -56,7 +56,7 @@ const QString PictureViewer2::mDefaultFile = ":/picgone.png"; -PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0), mCurPos(0), mFnItem(0), mMappingItem(0), mShowInfoItem(true), mShowMappingItem(true), mShowMarkItem(false), mShuffle(false) { +PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0), mCurPos(0), mFnItem(0), mMappingItem(0), mShowInfoItem(true), mShowMappingItem(true), mShowMarkItem(false) { setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setWindowState(Qt::WindowMaximized); @@ -73,18 +73,9 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) //picture show mTimer = new QTimer(this); - mSlideTimer = new QTimer(this); - mSlideTimerAll = new QTimer(this); - mSlideTimerRecent = new QTimer(this); - mCurTimer = mSlideTimer; - mSlideTimerAllRestart = true; connect(mTimer, SIGNAL(timeout()), this, SLOT(nextSlide())); - 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")); mPicFilesModel = static_cast<PicFilesModel*>(SmGlobals::instance()->model("PicFiles")); mNewPicsDlg = new NewPicsDialog(this); @@ -94,9 +85,7 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) setScene(mScene); readSettings(); setMinimumSize(QSize(800, 600)); - constructControlItem(); showFile(mFiles.at(mCurPos)); - } void PictureViewer2::addFiles(const PicDataList &files, bool clear){ @@ -141,11 +130,6 @@ void PictureViewer2::addFiles(const QStringList &files, bool clear){ addFiles(pd, clear); } -void PictureViewer2::addFile(const QString &fullPath, int fileId){ - mFiles << picData(fullPath, fileId); -} - - void PictureViewer2::addFiles(const QString &dir, bool clear){ QFileInfo fi(dir); if(!fi.isDir()){ @@ -250,101 +234,11 @@ void PictureViewer2::selectPic(const QString &path){ } void PictureViewer2::stopSlide(){ - mCurTimer->stop(); - mSlideStopC->setDefaultTextColor(Qt::darkGreen); - mSlideAllC->setDefaultTextColor(mDefaultTextColor); - mSlideRecentC->setDefaultTextColor(mDefaultTextColor); - mSlideC->setDefaultTextColor(mDefaultTextColor); - mShuffleC->setDefaultTextColor(mDefaultTextColor); - mShuffle = false; + mTimer->stop(); } void PictureViewer2::startSlide(){ - mCurTimer->stop(); - mCurTimer = mSlideTimer; - mSlideStopC->setDefaultTextColor(mDefaultTextColor); - mSlideAllC->setDefaultTextColor(mDefaultTextColor); - mSlideC->setDefaultTextColor(Qt::darkGreen); - PicDataList data = mPicFilesModel->allFiles(); - if(mShuffle){ - std::random_shuffle(data.begin(), data.end()); - } - addFiles(data, true); - mCurTimer->start(5000); -} - -void PictureViewer2::startSlideAll(){ - mCurTimer->stop(); - mCurTimer = mSlideTimerAll; - 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){ - mCurTimer->start(5000); - }else{ - mCurTimer->stop(); - } -} - -void PictureViewer2::slide(bool){ - mSlideTimerAll->stop(); - mSlideTimerRecent->stop(); - mCurTimer = mSlideTimer; - if(mSlideTimer->isActive()){ - mSlideTimer->stop(); - }else{ - PicDataList data = mPicFilesModel->allFiles(); - addFiles(data, true); - mSlideTimer->start(5000); - } -} - -void PictureViewer2::slideThrouhghAll(bool){ - mSlideTimer->stop(); - mSlideTimerRecent->stop(); - mCurTimer = mSlideTimerAll; - mShowMappingItem = true; - if(mSlideTimerAll->isActive()){ - mSlideTimerAll->stop(); - }else{ - 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); - } + mTimer->start(); } void PictureViewer2::readSettings(){ @@ -370,15 +264,6 @@ void PictureViewer2::writeSettings(){ } } -void PictureViewer2::shuffle(){ - mShuffle = !mShuffle; - if(mShuffle){ - mShuffleC->setDefaultTextColor(Qt::darkGreen); - }else{ - mShuffleC->setDefaultTextColor(mDefaultTextColor); - } -} - void PictureViewer2::initActions(){ foreach(QAction *a, actions()){ //never, ever forget this when casting to int @@ -473,33 +358,7 @@ void PictureViewer2::clearMarks(){ constructInfoItem(mCurPicData, QSize()); } -void PictureViewer2::doControl(QGraphicsItem *item){ - QGraphicsTextItem *curItem = static_cast<QGraphicsTextItem*>(item); - if(curItem){ - if(curItem == mNextC){ - next(); - }else if(curItem == mPreviousC){ - previous(); - }else if(curItem == mSkipForwardC){ - skip(25); - }else if(curItem == mSkipBackwardC){ - skip(-25); - }else if(curItem == mShuffleC){ - shuffle(); - }else if(curItem == mSlideStopC){ - stopSlide(); - }else if(curItem == mSlideC){ - startSlide(); - }else if(curItem == mSlideAllC){ - startSlideAll(); - }else if(curItem == mSlideRecentC){ - startSlideRecent(); - } - } -} - void PictureViewer2::showSlide(){ - mSlideTimer->stop(); mSlideDlg->show(); } @@ -563,15 +422,12 @@ void PictureViewer2::keyPressEvent(QKeyEvent *e){ skip(-25); } if(e->key() == Qt::Key_Space){ - if(mCurTimer->isActive()){ + if(mTimer->isActive()){ stopSlide(); }else{ - startSlideAll(); + startSlide(); } } - if(e->key() == Qt::Key_R){ - shuffle(); - } return; } @@ -580,7 +436,7 @@ void PictureViewer2::keyPressEvent(QKeyEvent *e){ mHideA->toggle(); } if(e->key() == Qt::Key_Space){ - if(mCurTimer->isActive()){ + if(mTimer->isActive()){ stopSlide(); }else{ startSlide(); @@ -622,8 +478,6 @@ void PictureViewer2::hideEvent(QHideEvent *e){ void PictureViewer2::resizeEvent(QResizeEvent *event){ QGraphicsView::resizeEvent(event); - qreal ypos = event->size().height() - mBoundingRectItem->boundingRect().size().height() - 10; - mBoundingRectItem->setPos(width() - 15 - mBoundingRectItem->boundingRect().size().width(), ypos); showFile(mCurPicData); } @@ -779,105 +633,6 @@ void PictureViewer2::docFromTree(SmTreeItem *start, QTextCursor *cur, int indent } } -void PictureViewer2::nextFromAll(){ - if(mSlideTimerAllRestart){ - mSlideTimerAll->stop(); - mPicFilesModel->allPicIds(); - mSlideTimerAllRestart = false; - setNextBatch(); - 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(); - } - mMarkA->setChecked(mMarkedFiles.contains(mFiles.at(mCurPos))); - showFile(mFiles.at(mCurPos)); - ++mCurPos; -} - -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>" << "Slide recent"; - QFont f = QFont(); - f.setPointSize(14); - f.setBold(true); - QFontMetrics fm(f); - int width = 0; - foreach(QString c, controls){ - int curWidth = fm.width(c); - if(curWidth > width){ - width = curWidth; - } - } - f.setBold(true); - int lineLeftMargin = 10; - int lineLength = width + 10; - int textLeftMargin = 5; - int textFactor = 16; - mBoundingRectItem = new BoundingRectItem(QSize(width + 20, 16 * (controls.count() + 4) + 5)); - mBoundingRectItem->setZValue(5); - mScene->addItem(mBoundingRectItem); - mNextC = new QGraphicsTextItem(mBoundingRectItem); - mNextC->setFont(f); - mNextC->setPlainText(controls.at(0)); - mNextC->moveBy(textLeftMargin, 0 * textFactor); - mDefaultTextColor = mNextC->defaultTextColor(); - mPreviousC = new QGraphicsTextItem(mBoundingRectItem); - mPreviousC->setFont(f); - mPreviousC->setPlainText(controls.at(1)); - mPreviousC->moveBy(textLeftMargin, 1 * textFactor); - QGraphicsLineItem *l1 = new QGraphicsLineItem(mBoundingRectItem); - l1->setLine(QLine(QPoint(lineLeftMargin, 3 * textFactor), QPoint(lineLength, 3 * textFactor))); - mSkipForwardC = new QGraphicsTextItem(mBoundingRectItem); - mSkipForwardC->setFont(f); - mSkipForwardC->setPlainText(controls.at(2)); - mSkipForwardC->moveBy(textLeftMargin, 3 * textFactor); - mSkipBackwardC = new QGraphicsTextItem(mBoundingRectItem); - mSkipBackwardC->setFont(f); - mSkipBackwardC->setPlainText(controls.at(3)); - mSkipBackwardC->moveBy(textLeftMargin, 4 * textFactor); - QGraphicsLineItem *l2 = new QGraphicsLineItem(mBoundingRectItem); - l2->setLine(QLine(QPoint(lineLeftMargin, 6 * textFactor), QPoint(lineLength, 6 * textFactor))); - mShuffleC = new QGraphicsTextItem(mBoundingRectItem); - mShuffleC->setFont(f); - mShuffleC->setPlainText(controls.at(4)); - mShuffleC->moveBy(textLeftMargin, 6 * textFactor); - QGraphicsLineItem *l3 = new QGraphicsLineItem(mBoundingRectItem); - l3->setLine(QLine(QPoint(lineLeftMargin, 8 * textFactor), QPoint(lineLength, 8 * textFactor))); - mSlideStopC = new QGraphicsTextItem(mBoundingRectItem); - mSlideStopC->setFont(f); - mSlideStopC->setPlainText(controls.at(5)); - mSlideStopC->setDefaultTextColor(Qt::darkGreen); - mSlideStopC->moveBy(textLeftMargin, 8 * textFactor); - mSlideC = new QGraphicsTextItem(mBoundingRectItem); - mSlideC->setFont(f); - mSlideC->setPlainText(controls.at(6)); - mSlideC->moveBy(textLeftMargin, 9 * textFactor); - mSlideAllC = new QGraphicsTextItem(mBoundingRectItem); - 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){ QPoint val1 = QPoint(qrand() % pic.width(), qrand() % pic.height()); QPoint val2 = QPoint(qrand() % pic.width(), qrand() % pic.height()); @@ -890,17 +645,6 @@ void PictureViewer2::setGradient(const QPixmap &pic){ setBackgroundBrush(QBrush(g)); } -void PictureViewer2::setNextBatch(){ - 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; - mCurTimer->start(); -} - QTextDocument *PictureViewer2::treeToString(const SmTreeItem *root) const{ QTextDocument *retval = new QTextDocument; retval->setIndentWidth(2); @@ -1112,25 +856,6 @@ void PictureViewer2Item::paint(QPainter *painter, const QStyleOptionGraphicsItem painter->restore(); } -QRectF BoundingRectItem::boundingRect() const { - return QRectF(0, 0, mSize.width(), mSize.height()); -} - -void BoundingRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget){ - Q_UNUSED(option); - Q_UNUSED(widget); - painter->save(); - painter->setRenderHint(QPainter::Antialiasing, true); - painter->setRenderHint(QPainter::TextAntialiasing, true); - QColor bgColor = QColor(Qt::white); - bgColor.setAlpha(80); - QBrush brush(bgColor); - painter->setPen(QColor(Qt::yellow)); - painter->setBrush(brush); - painter->drawRoundedRect(boundingRect(), 15.0, 15.0); - painter->restore(); -} - void PictureViewerGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *e){ QGraphicsScene::mousePressEvent(e); QPointF curPos = e->scenePos(); |