#ifndef FILEWIDGET_H #define FILEWIDGET_H #include #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 FileCopier; class CachedFileData; class QStandardItem; class QComboBox; class SearchDialog; class FileCopier; 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, SizeRole = Qt::UserRole + 6 }; 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 = nullptr); QTreeView *fileView() { return mFileView; } QMenuBar *menuBar() { return mMenuBar; } QToolBar *toolBar() { return mToolBar; } FileCopier *fileCopier() { return mFileCopier; } const QString currentDir() const { return mDir->text(); } void setProgressBar(QProgressBar *progressBar) { mProgressBar = progressBar; } virtual ~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 cdAbsolute(const QString &to); void cdUp(); void cdLast(); void deleteFiles(); void gatherData(); void readDescriptION(); void guessSubject(); void searchGoogle(); void selectDir(); void properties(); void properties(const QModelIndex &idx); void preview(); void filter(int column, QString regexp); void copy(); void cut(); void paste(); void selectFirst(); void addAsOrigin(); void copyFiles(QString destDir); void copySuccess(bool success, QString source); void removeFromCache(); void clearCache(); void readSettings(); 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 writeSettings(); void readCache(); void writeCache(); void cutOrCopy(); void populateFavDirs(); void populateMimeFilters(); QList constructRow(CachedFileData *fd) const; QAction *createSeparator(); QLineEdit *mDir; QLineEdit *mFilter; QStandardItemModel *mModel; QTreeView *mFileView; QMenuBar *mMenuBar; QMenu *mCopyToMenu; 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 *mPreviewA; QAction *mCopyA; QAction *mCutA; QAction *mPasteA; QAction *mDeleteA; QAction *mAddAsOriginA; QAction *mRemoveFromCacheA; QAction *mClearCacheA; QAction *mGuessSubjectA; QAction *mCancelCopyA; FileDisplay *mFileDisplay; VideoSorter *mProxy; OriginDialog *mOrignDlg; FileCopier *mFileCopier; QCache mFileCache; QComboBox *mFavDirs; QComboBox *mMimeFilters; int mFileAction; QStringList mDescript; SearchDialog *mSearchDlg; }; #endif // FILEWIDGET_H