diff options
author | Arno <arno@disconnect.de> | 2015-08-27 06:43:54 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2015-08-27 06:43:54 +0200 |
commit | 921eb687af0335c030d7095da7c7be1069f10490 (patch) | |
tree | d1b7ccdcad3bd8e384015a68ae2ee3309a20ed22 | |
parent | 9eedf8c619c15302d080ee55b513e07a2bf5d591 (diff) | |
download | SheMov-921eb687af0335c030d7095da7c7be1069f10490.tar.gz SheMov-921eb687af0335c030d7095da7c7be1069f10490.tar.bz2 SheMov-921eb687af0335c030d7095da7c7be1069f10490.zip |
Make PictureViewer2 controls work
Now the controls actually do something. Not still as promised, but they
kinda work!
-rw-r--r-- | pictureviewer2.cpp | 61 | ||||
-rw-r--r-- | pictureviewer2.h | 14 |
2 files changed, 71 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); } } diff --git a/pictureviewer2.h b/pictureviewer2.h index a3f1f2d..1592b5d 100644 --- a/pictureviewer2.h +++ b/pictureviewer2.h @@ -58,6 +58,9 @@ class PictureViewer2 : public QGraphicsView { void previous(); void skip(int amount); void selectPic(const QString &path); + void stopSlide(); + void startSlide(); + void startSlideAll(); void toggleSlide(bool slide); void slide(bool); void slideThrouhghAll(bool); @@ -71,6 +74,7 @@ class PictureViewer2 : public QGraphicsView { void addToNewPics(); void markCurrent(); void clearMarks(); + void doControl(QGraphicsItem *item); protected: virtual void wheelEvent(QWheelEvent *event); @@ -102,6 +106,7 @@ class PictureViewer2 : public QGraphicsView { int mCurPos; int mConfigInfoPos; int mConfigMapPos; + int mCursorOffset; QTimer *mSlideTimer; QTimer *mSlideTimerAll; QTimer *mCurTimer; @@ -119,6 +124,7 @@ class PictureViewer2 : public QGraphicsView { QGraphicsTextItem *mSlideAllC; bool mUseGradient; QColor mBgColor; + QColor mDefaultTextColor; QPointF mInfoPos; QPointF mMappingPos; QPointF mBoundingPos; @@ -166,11 +172,19 @@ class BoundingRectItem : public QGraphicsItem { }; class PictureViewerGraphicsScene : public QGraphicsScene { + Q_OBJECT public: explicit PictureViewerGraphicsScene(QObject *parent = 0) : QGraphicsScene(parent) {} + void setCursorOffset(int offset) { mCursorOffset = offset; } + + signals: + void itemClicked(QGraphicsItem *item); protected: virtual void mousePressEvent(QGraphicsSceneMouseEvent *e); + + private: + int mCursorOffset; }; #endif // PICTUREVIEWER2_H |