/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifndef RANDOMTAB_H #define RANDOMTAB_H #include #include #include #include class QComboBox; class QPushButton; class QTreeView; class QSortFilterProxyModel; class QStandardItemModel; class QLineEdit; class QTextEdit; class QAction; class QMenu; class QContextMenuEvent; class RandomFileView; class RandomTab : public QWidget { Q_OBJECT public: enum CustomRoles { IdRole = Qt::UserRole + 1, SizeRole = Qt::UserRole + 2, DurationRole = Qt::UserRole + 3, DvdNoRole = Qt::UserRole + 4 }; enum Columns { FileName = 0, Size = 1, Duration = 2, Md5 = 3, Location = 4, FullPath = 5 }; enum { ColumnCount = 6 }; explicit RandomTab(QWidget *parent = 0); virtual ~RandomTab(); const QMenu *contextMenu() const { return mContextMenu; } QMenu *editMenu() { return mEditMenu; } public slots: void setupModels(); void clearAll(); void refreshComboboxes(); void select(); void playAll(); void playSelected(); void playDoubleclicked(QModelIndex idx); void play(const QStringList &files); void logMessage(const QString &msg); signals: void configure(); private: void setupGui(); void setupActions(); void writeSettings(); void readSettings(); QStringList validDvdNos(); QComboBox *mGenre1; QComboBox *mGenre2; QComboBox *mGenre3; QVector mGenreBoxes; QComboBox *mActor1; QComboBox *mActor2; QComboBox *mActor3; QVector mActorBoxes; QLineEdit *mNumber; QPushButton *mSelect; QPushButton *mClear; QPushButton *mRefresh; QPushButton *mPlaySelected; QPushButton *mPlayAll; RandomFileView *mFileView; QTextEdit *mLog; QStandardItemModel *mFileModel; QStandardItemModel *mGenreModel; QStandardItemModel *mActorModel; QSortFilterProxyModel *mFileProxy; QSqlDatabase mDb; QStringList mValidDvds; QAction *mPlaySelectedA; QAction *mPlayAllA; QAction *mClearA; QAction *mRefreshA; QAction *mGoA; QAction *mConfigureA; QMenu *mContextMenu; QMenu *mEditMenu; }; class RandomFileView : public QTreeView { Q_OBJECT public: explicit RandomFileView(QWidget *parent = 0); void setContextMenu(QMenu *menu) { mCtxMenu = menu; } protected: virtual void contextMenuEvent(QContextMenuEvent *e); private: QMenu *mCtxMenu; }; #endif // RANDOMTAB_H