/* 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 class QGraphicsScene; class QGraphicsPixmapItem; class QWheelEvent; class QContextMenuEvent; class QTimer; class PictureViewer2FilenameItem; typedef QList PicData; typedef QList > PicDataList; class PictureViewer2 : public QGraphicsView { Q_OBJECT public: 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(); protected: virtual void wheelEvent(QWheelEvent *event); virtual void contextMenuEvent(QContextMenuEvent *e); private slots: void showFile(const PicData &file); void constructFilenameItem(const QString &filename); private: void setupDialog(); void setCurPalette(const QPixmap &pic); QString constructWindowTitle() const; PicDataList mFiles; QGraphicsScene *mScene; QSize mMinimunSize; QGraphicsPixmapItem *mCur; int mCurPos; QTimer *mSlideTimer; const QString mDefaultFile; PictureViewer2FilenameItem *mFnItem; }; class PictureViewer2FilenameItem : public QGraphicsItem { public: explicit PictureViewer2FilenameItem(const QString &fileName, QGraphicsItem *parent = 0); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); private: QString mFilename; }; #endif // PICTUREVIEWER2_H