/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifndef PICTUREVIEWER2_H #define PICTUREVIEWER2_H #include #include #include #include #include class QGraphicsScene; class QGraphicsPixmapItem; class QWheelEvent; class QContextMenuEvent; class QTimer; class QTextDocument; class QTextCursor; class PictureViewer2Item; class QGraphicsItem; class SmTreeItem; class MappingTreeModel; typedef QList PicData; typedef QList > PicDataList; class PictureViewer2 : public QGraphicsView { Q_OBJECT public: enum AssocActions { SlideAction, HideAction }; explicit PictureViewer2(QWidget *parent = 0); void addFiles(const PicDataList &files, bool clear = true); void addFiles(const QString &dir, bool clear = true); void setFile(const PicData &file); void setFile(const QString &fullPath); PicData picData(const QString &fullPath); virtual QSize sizeHint() const; public slots: void next(); void previous(); void slide(bool); void readSettings(); void writeSettings(); void shuffle(); void initActions(); protected: virtual void wheelEvent(QWheelEvent *event); virtual void contextMenuEvent(QContextMenuEvent *e); virtual void keyPressEvent(QKeyEvent *e); virtual void hideEvent(QHideEvent *); private slots: void showFile(const PicData &data); void constructInfoItem(const PicData &file, QSize picSize); void constructMappingItem(const PicData &file); private: void setupDialog(); void setGradient(const QPixmap &pic); QTextDocument *treeToString(const SmTreeItem *root) const; void treeToStringRecursive(const SmTreeItem *parent, QTextCursor *cursor, int indent) const; QPointF getPos(PictureViewer2Item *item, int pos, const QPointF &movPos); QString constructWindowTitle() const; PicDataList mFiles; QGraphicsScene *mScene; QSize mMinimunSize; QGraphicsPixmapItem *mCur; int mCurPos; int mConfigInfoPos; int mConfigMapPos; QTimer *mSlideTimer; const QString mDefaultFile; PictureViewer2Item *mFnItem; PictureViewer2Item *mMappingItem; bool mUseGradient; bool mShowInfoItem; bool mShowMapItem; QColor mBgColor; QPointF mInfoPos; QPointF mMappingPos; QAction *mSlideA; QAction *mHideA; }; class PictureViewer2Item : public QGraphicsItem { public: explicit PictureViewer2Item(const PicData &data, const int numSelected, const QSize &picSize = QSize(), QGraphicsItem *parent = 0); explicit PictureViewer2Item(QTextDocument *doc, QGraphicsItem *parent = 0); ~PictureViewer2Item(); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); private: QStaticText mText; QTextDocument *mDoc; }; #endif // PICTUREVIEWER2_H