#ifndef FILEWIDGET_H #define FILEWIDGET_H #include #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 OriginDialog; class QMenu; class QSignalMapper; class FileWidget : public QWidget { Q_OBJECT public: enum FileAttrs { NotPresent = 0, Present = 1, NoVideo = 2, ParentDir = 3, Directory = 4, Origin = 5 }; enum CustomRoles { AttrsRole = Qt::UserRole + 1, FullPathRole = Qt::UserRole + 2, DurationRole = Qt::UserRole + 3, MD5SumRole = Qt::UserRole + 4, SecondsRole = Qt::UserRole + 5 }; enum { ColumnCount = 7 }; enum Columns { IconColumn = 0, NameColumn = 1, CopiedColumn = 2, MimeColumn = 3, DurationColumn = 4, SizeColumn = 5, Md5Column = 6 }; enum FileAction { Copy, Cut, Paste }; explicit FileWidget(QWidget *parent = 0); QTreeView *fileView() { return mFileView; } QMenuBar *menuBar() { return mMenuBar; } QToolBar *toolBar() { return mToolBar; } const QString currentDir() const { return mDir->text(); } void setProgressBar(QProgressBar *progressBar) { mProgressBar = progressBar; } ~FileWidget(); signals: void statusMessage(const QString &msg); void selectionCountChanged(const QString &msg); void durationChanged(const QString &duration); void freeSpaceChanged(const QString &dir); 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 preview(); void filter(); void clearFilter(); void copy(); void cut(); void paste(); void selectFirst(); void addAsOrigin(); 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); bool haveOrigin(const QString filename); 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; QMenu *mCopyToMenu; QSignalMapper *mCopyToMapper; QToolBar *mToolBar; QProgressBar *mProgressBar; QString mLastDir; QSqlDatabase mDb; QSqlQuery mQOrigin; QSqlQuery mQFiles; QSqlQuery mQSimilar; QMimeData *mMimeData; QAction *mSelDirA; QAction *mRefreshA; QAction *mDirUpA; QAction *mDirBackA; QAction *mPropertiesA; QAction *mPreviewA; QAction *mCopyA; QAction *mCutA; QAction *mPasteA; QAction *mDeleteA; QAction *mAddAsOriginA; FileDisplay *mFileDisplay; VideoSorter *mProxy; OriginDialog *mOrignDlg; int mFileAction; }; #endif // FILEWIDGET_H