diff options
Diffstat (limited to 'pictureviewer2.cpp')
-rw-r--r-- | pictureviewer2.cpp | 61 |
1 files changed, 57 insertions, 4 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp index b18f9ed..e9af43d 100644 --- a/pictureviewer2.cpp +++ b/pictureviewer2.cpp @@ -73,6 +73,7 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0) //setup gui mScene = new PictureViewerGraphicsScene(this); + connect(mScene, SIGNAL(itemClicked(QGraphicsItem*)), this, SLOT(doControl(QGraphicsItem*))); setScene(mScene); readSettings(); setMinimumSize(QSize(800, 600)); @@ -231,6 +232,32 @@ void PictureViewer2::selectPic(const QString &path){ } } +void PictureViewer2::stopSlide(){ + mCurTimer->stop(); + mSlideStopC->setDefaultTextColor(Qt::darkGreen); + mSlideAllC->setDefaultTextColor(mDefaultTextColor); + mSlideC->setDefaultTextColor(mDefaultTextColor); +} + +void PictureViewer2::startSlide(){ + mCurTimer->stop(); + mCurTimer = mSlideTimer; + mSlideStopC->setDefaultTextColor(mDefaultTextColor); + mSlideAllC->setDefaultTextColor(mDefaultTextColor); + mSlideC->setDefaultTextColor(Qt::darkGreen); + mCurTimer->start(5000); +} + +void PictureViewer2::startSlideAll(){ + mCurTimer->stop(); + mCurTimer = mSlideTimerAll; + mSlideStopC->setDefaultTextColor(mDefaultTextColor); + mSlideAllC->setDefaultTextColor(Qt::darkGreen); + mSlideC->setDefaultTextColor(mDefaultTextColor); + mCurTimer->start(5000); +} + + void PictureViewer2::toggleSlide(bool slide){ if(slide){ mCurTimer->start(5000); @@ -274,6 +301,8 @@ void PictureViewer2::readSettings(){ mConfigMapPos = s.value("ui/mappingposition").toInt(); mMappingPos = s.value("ui/pvmappingpos", QPointF(20, 20)).toPointF(); mScene->setSceneRect(QRectF(0, 0, width(), height())); + mCursorOffset = s.value("ui/cursoroffset").toInt(); + mScene->setCursorOffset(mCursorOffset); showFile(mCurPicData); } @@ -397,6 +426,27 @@ 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 == mSlideStopC){ + stopSlide(); + }else if(curItem == mSlideC){ + startSlide(); + }else if(curItem == mSlideAllC){ + startSlideAll(); + } + } +} + void PictureViewer2::wheelEvent(QWheelEvent *event){ int steps = event->delta() / 8 / 15; if(steps < 0){ @@ -606,7 +656,7 @@ void PictureViewer2::nextFromAll(){ void PictureViewer2::constructControlItem(){ QStringList controls = QStringList() << "Next (>)" << "Previous (<)" << "Skip forward (>>)" << "Skip back (<<)" << "Stop Slide" << "Slide" << "Slide all"; - QFont f = QFont(); + QFont f = QFont(); f.setPointSize(14); f.setBold(true); QFontMetrics fm(f); @@ -624,6 +674,7 @@ void PictureViewer2::constructControlItem(){ mNextC = new QGraphicsTextItem(mBoundingRectItem); mNextC->setFont(f); mNextC->setPlainText(controls.at(0)); + mDefaultTextColor = mNextC->defaultTextColor(); mPreviousC = new QGraphicsTextItem(mBoundingRectItem); mPreviousC->setFont(f); mPreviousC->setPlainText(controls.at(1)); @@ -651,7 +702,7 @@ void PictureViewer2::constructControlItem(){ mSlideC->moveBy(0, 112); mSlideAllC = new QGraphicsTextItem(mBoundingRectItem); mSlideAllC->setFont(f); - mSlideAllC->setPlainText(controls.at(5)); + mSlideAllC->setPlainText(controls.at(6)); mSlideAllC->moveBy(0, 128); } @@ -822,8 +873,10 @@ void BoundingRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem * void PictureViewerGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *e){ QGraphicsScene::mousePressEvent(e); - QGraphicsItem *item = itemAt(e->scenePos(), QTransform()); + QPointF curPos = e->scenePos(); + curPos = QPointF(e->scenePos().x(), e->scenePos().y() - 16); + QGraphicsItem *item = itemAt(curPos, QTransform()); if(item){ - //do something! + emit itemClicked(item); } } |