#ifndef FILEWIDGET_H #define FILEWIDGET_H #include #include #include #include #include #include #include class QLineEdit; class QStandardItemModel; class QTreeView; class QProgressBar; class QKeyEvent; class QAction; class QMimeData; class VideoSorter; class FileDisplay; class FileWidget : public QWidget { Q_OBJECT public: enum FileAttrs { NotPresent = 0, Present = 1, NoVideo = 2, ParentDir = 3, Directory = 4 }; enum CustomRoles { AttrsRole = Qt::UserRole + 1, FullPathRole = Qt::UserRole + 2, DurationRole = Qt::UserRole + 3, MD5SumRole = Qt::UserRole + 4, SecondsRole = Qt::UserRole + 5 }; enum { ColumnCount = 5 }; enum Columns { IconColumn = 0, NameColumn = 1, MimeColumn = 2, DurationColumn = 3, Md5Column = 4 }; enum FileAction { Copy, Cut, Paste }; explicit FileWidget(QWidget *parent = 0); QTreeView *fileView() { return mFileView; } QMenuBar *menuBar() { return mMenuBar; } QToolBar *toolBar() { return mToolBar; } void setProgressBar(QProgressBar *progressBar) { mProgressBar = progressBar; } ~FileWidget(); signals: void statusMessage(const QString &msg); void selectionCountChanged(const QString &msg); void durationChanged(const QString &duration); public slots: void fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected); void cd(const QString &to); void cdUp(); void cdLast(); void deleteFiles(); void gatherData(); void selectDir(); void properties(); void properties(const QModelIndex &idx); void filter(); void clearFilter(); void copy(); void cut(); void paste(); protected: virtual void keyPressEvent(QKeyEvent *e); virtual void contextMenuEvent(QContextMenuEvent *e); private: void setupGui(); void createActions(); void fileData(const QString &fullPath, const QString &md5); int md5Count(const QString &md5); void readHeaderData(); void writeHeaderData(); void readSettings(); void writeSettings(); void deleteRecursive(const QFileInfo &start); void cutOrCopy(); QAction *createSeparator(); QLineEdit *mDir; QLineEdit *mFilter; QStandardItemModel *mModel; QTreeView *mFileView; QMenuBar *mMenuBar; QToolBar *mToolBar; QProgressBar *mProgressBar; QString mLastDir; QSqlDatabase mDb; QSqlQuery mQOrigin; QSqlQuery mQFiles; QMimeData *mMimeData; QAction *mSelDirA; QAction *mRefreshA; QAction *mDirUpA; QAction *mDirBackA; QAction *mPropertiesA; QAction *mCopyA; QAction *mCutA; QAction *mPasteA; QAction *mDeleteA; FileDisplay *mFileDisplay; VideoSorter *mProxy; int mFileAction; }; #endif // FILEWIDGET_H