#ifndef FILEWIDGET_H #define FILEWIDGET_H #include #include #include #include class QLineEdit; class QStandardItemModel; class QTreeView; 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 }; explicit FileWidget(QWidget *parent = 0); ~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); private slots: void gatherData(); void selectDir(); void filter(); void clearFilter(); void itemDoubleClicked(const QModelIndex &idx); private: void setupGui(); int md5Count(const QString &md5); void readHeaderData(); void writeHeaderData(); void readSettings(); void writeSettings(); QLineEdit *mDir; QLineEdit *mFilter; QStandardItemModel *mModel; QTreeView *mFileView; VideoSorter *mProxy; QSqlDatabase mDb; QSqlQuery mQOrigin; QSqlQuery mQFiles; FileDisplay *mFileDisplay; }; #endif // FILEWIDGET_H