summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pictureviewer2.cpp62
-rw-r--r--pictureviewer2.h10
2 files changed, 67 insertions, 5 deletions
diff --git a/pictureviewer2.cpp b/pictureviewer2.cpp
index 71f4a80..b18f9ed 100644
--- a/pictureviewer2.cpp
+++ b/pictureviewer2.cpp
@@ -9,6 +9,9 @@
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsPixmapItem>
+#include <QGraphicsTextItem>
+#include <QGraphicsLineItem>
+#include <QFontMetrics>
#include <QImage>
#include <QWheelEvent>
#include <QContextMenuEvent>
@@ -73,9 +76,9 @@ PictureViewer2::PictureViewer2(QWidget *parent) : QGraphicsView(parent), mCur(0)
setScene(mScene);
readSettings();
setMinimumSize(QSize(800, 600));
+ constructControlItem();
showFile(mFiles.at(mCurPos));
- mBoundingRectItem = new BoundingRectItem(QSize(100, 300));
- mScene->addItem(mBoundingRectItem);
+
}
void PictureViewer2::addFiles(const PicDataList &files, bool clear){
@@ -455,8 +458,8 @@ void PictureViewer2::hideEvent(QHideEvent *e){
void PictureViewer2::resizeEvent(QResizeEvent *event){
QGraphicsView::resizeEvent(event);
- int brposy = event->size().height() - mBoundingRectItem->boundingRect().size().height() - 5;
- mBoundingRectItem->setPos(5, brposy);
+ qreal ypos = event->size().height() / 2 - mBoundingRectItem->boundingRect().size().height() / 2;
+ mBoundingRectItem->setPos(width() - 15 - mBoundingRectItem->boundingRect().size().width(), ypos);
showFile(mCurPicData);
}
@@ -601,6 +604,57 @@ void PictureViewer2::nextFromAll(){
++mCurPos;
}
+void PictureViewer2::constructControlItem(){
+ QStringList controls = QStringList() << "Next (>)" << "Previous (<)" << "Skip forward (>>)" << "Skip back (<<)" << "Stop Slide" << "Slide" << "Slide all";
+ 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);
+ mBoundingRectItem = new BoundingRectItem(QSize(width + 10, 16 * (controls.count() + 3)));
+ mBoundingRectItem->setZValue(5);
+ mScene->addItem(mBoundingRectItem);
+ mNextC = new QGraphicsTextItem(mBoundingRectItem);
+ mNextC->setFont(f);
+ mNextC->setPlainText(controls.at(0));
+ mPreviousC = new QGraphicsTextItem(mBoundingRectItem);
+ mPreviousC->setFont(f);
+ mPreviousC->setPlainText(controls.at(1));
+ mPreviousC->moveBy(0, 16);
+ QGraphicsLineItem *l1 = new QGraphicsLineItem(mBoundingRectItem);
+ l1->setLine(QLine(QPoint(5, 48), QPoint(width, 48)));
+ mSkipForwardC = new QGraphicsTextItem(mBoundingRectItem);
+ mSkipForwardC->setFont(f);
+ mSkipForwardC->setPlainText(controls.at(2));
+ mSkipForwardC->moveBy(0, 48);
+ mSkipBackwardC = new QGraphicsTextItem(mBoundingRectItem);
+ mSkipBackwardC->setFont(f);
+ mSkipBackwardC->setPlainText(controls.at(3));
+ mSkipBackwardC->moveBy(0, 64);
+ QGraphicsLineItem *l2 = new QGraphicsLineItem(mBoundingRectItem);
+ l2->setLine(QLine(QPoint(5, 96), QPoint(width, 96)));
+ mSlideStopC = new QGraphicsTextItem(mBoundingRectItem);
+ mSlideStopC->setFont(f);
+ mSlideStopC->setPlainText(controls.at(4));
+ mSlideStopC->setDefaultTextColor(Qt::darkGreen);
+ mSlideStopC->moveBy(0, 96);
+ mSlideC = new QGraphicsTextItem(mBoundingRectItem);
+ mSlideC->setFont(f);
+ mSlideC->setPlainText(controls.at(5));
+ mSlideC->moveBy(0, 112);
+ mSlideAllC = new QGraphicsTextItem(mBoundingRectItem);
+ mSlideAllC->setFont(f);
+ mSlideAllC->setPlainText(controls.at(5));
+ mSlideAllC->moveBy(0, 128);
+}
+
void PictureViewer2::setGradient(const QPixmap &pic){
QPoint val1 = QPoint(qrand() % pic.width(), qrand() % pic.height());
QPoint val2 = QPoint(qrand() % pic.width(), qrand() % pic.height());
diff --git a/pictureviewer2.h b/pictureviewer2.h
index 6ebcdd8..a3f1f2d 100644
--- a/pictureviewer2.h
+++ b/pictureviewer2.h
@@ -16,6 +16,7 @@
class PictureViewerGraphicsScene;
class BoundingRectItem;
+class QGraphicsTextItem;
class QGraphicsPixmapItem;
class QWheelEvent;
class QContextMenuEvent;
@@ -87,7 +88,7 @@ class PictureViewer2 : public QGraphicsView {
void nextFromAll();
private:
- void setupDialog();
+ void constructControlItem();
void setGradient(const QPixmap &pic);
void setNextBatch();
QTextDocument *treeToString(const SmTreeItem *root) const;
@@ -109,6 +110,13 @@ class PictureViewer2 : public QGraphicsView {
PictureViewer2Item *mFnItem;
PictureViewer2Item *mMappingItem;
BoundingRectItem *mBoundingRectItem;
+ QGraphicsTextItem *mNextC;
+ QGraphicsTextItem *mPreviousC;
+ QGraphicsTextItem *mSkipForwardC;
+ QGraphicsTextItem *mSkipBackwardC;
+ QGraphicsTextItem *mSlideStopC;
+ QGraphicsTextItem *mSlideC;
+ QGraphicsTextItem *mSlideAllC;
bool mUseGradient;
QColor mBgColor;
QPointF mInfoPos;