summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2015-08-27 06:43:54 +0200
committerArno <arno@disconnect.de>2015-08-27 06:43:54 +0200
commit921eb687af0335c030d7095da7c7be1069f10490 (patch)
treed1b7ccdcad3bd8e384015a68ae2ee3309a20ed22
parent9eedf8c619c15302d080ee55b513e07a2bf5d591 (diff)
downloadSheMov-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.cpp61
-rw-r--r--pictureviewer2.h14
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