/* 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 PictureViewer2FileinfoItem; 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 setFile(const PicData &file); 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); private: void setupDialog(); void setGradient(const QPixmap &pic); QString constructWindowTitle() const; PicDataList mFiles; QGraphicsScene *mScene; QSize mMinimunSize; QGraphicsPixmapItem *mCur; int mCurPos; QTimer *mSlideTimer; const QString mDefaultFile; PictureViewer2FileinfoItem *mFnItem; bool mUseGradient; QColor mBgColor; QPointF mInfoPos; QAction *mSlideA; QAction *mHideA; }; class PictureViewer2FileinfoItem : public QGraphicsItem { public: explicit PictureViewer2FileinfoItem(const PicData &data, const int numSelected, const QSize &picSize = QSize(), QGraphicsItem *parent = 0); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); private: QStaticText mText; }; #endif // PICTUREVIEWER2_H