#ifndef FSWIDGET_H #define FSWIDGET_H #include #include class QComboBox; class QTreeView; class QStandardItemModel; class QSortFilterProxyModel; class QContextMenuEvent; class QAction; class QProcess; class QDir; class NewMovieWizard; class NewPicsDialog; class Viewer; class FSProxy; class SmView; class VideoViewer; class FSWidget : public QWidget { Q_OBJECT public: enum CustomRoles { FullPathRole = Qt::UserRole + 1, DurationRole = Qt::UserRole + 2, SizeRole = Qt::UserRole + 3, MimeRole = Qt::UserRole + 4, DupDataRole = Qt::UserRole + 5, MD5SumRole = Qt::UserRole + 6 }; explicit FSWidget(QWidget *parent = nullptr); QString wTitle; ~FSWidget(); public slots: void readSettings(); void writeSettings(); void refresh(); private slots: void insertItem(QComboBox *cb, const QString &text); void removeItem(QComboBox *cb); void gatherData(const QString &curDir); void deleteFiles(); void archiveMovie(); void archivePics(); void copyMD5(); void advanceDir(int by); int queryCount(QSqlQuery *q, const QString &arg); void filterMime(const QString &mime); void unpack(); void doubleClicked(const QModelIndex &idx); void preview(); void comparePics(); void playSelected(int count, QString player); void doPlay(); void selectFilter(); void calculateSelectionChanged(); signals: void message(QString msg); void selectionChanged(int count, qint64 size, qint64 duration); void needRefreshFs(); void needConfig(); void needTitleChange(QString msg); private: void setupWidget(); const QStringList readDescript(const QDir &dir); const QString guessSubject(const QStringList &subjects, const QString &fn); QComboBox *mDirCB; QComboBox *mFilterCB; QProcess *mPlayer; QStringList mPlayerArgs; QStringList mPlaylist; SmView *mFileView; QStandardItemModel *mModel; FSProxy *mProxy; NewMovieWizard *mMovieWizard; NewPicsDialog *mNewPicsDlg; Viewer *mViewer; int mQueryCount; QAction *mPlayWithA; }; #endif // FSWIDGET_H