/* 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 FILESTREEWIDGET_H #define FILESTREEWIDGET_H #include #include #include typedef QList PersistenModelIndexList; class FilesTreeView; class FilesTreeModel; class FilesTreeSortModel; class SeriesTreeModel; class PictureViewer2; class HoverWindow; class QContextMenuEvent; class QSpinBox; class QPushButton; class QEvent; class FilesTreeWidget : public QWidget { Q_OBJECT public: explicit FilesTreeWidget(QWidget *parent = 0); FilesTreeView *filesTree() { return mView; } void resetSize(); public slots: void moveToBurn(); void removeFiles(); void moveToDirectory(); void fileProperties(); void edit(int column); void suggest(); private slots: void fileSelectionChanged(); void itemDoubleClicked(const QModelIndex &index); signals: void selectedSize(qint64); void numSelected(int); void statusMessage(QString); private: FilesTreeView *mView; FilesTreeModel *mModel; FilesTreeSortModel *mProxy; SeriesTreeModel *mSeriesModel; PictureViewer2 *mPictureViewer; QModelIndexList mSelectedFiles; qint64 mSelectedSize; }; class FilesTreeView : public QTreeView { Q_OBJECT public: explicit FilesTreeView(QWidget *parent = 0); virtual void setModel(QAbstractItemModel *model); public slots: void readSettings(); void readHeaderConfig(); void writeHeaderConfig(); void toggleHeader(QObject *action); protected: virtual void contextMenuEvent(QContextMenuEvent *event); virtual bool event(QEvent *event); private: bool exitHover(bool exitVal = true); void doHover(const QModelIndex &idx); const QString fileNameText(const QModelIndex &idx) const; const QString metaDataText(const QModelIndex &idx) const; const QPixmap annotateHover(const QPixmap &hoverImage, const QString &text) const; QModelIndex mCurHover; HoverWindow *mHoverWin; bool mHoverPics; bool mHoverMovies; qint16 mCursorOffest; }; class FilesTreeSortModel : public QSortFilterProxyModel { Q_OBJECT public: FilesTreeSortModel(QObject *parent = 0); ~FilesTreeSortModel() {} protected: virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const; }; #endif