/* 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 ARCHIVETREEVIEW_H #define ARCHIVETREEVIEW_H #include #include #include #include #include #include #include "smtreemodel.h" class SeriesTreeWidget; class FilesTreeWidget; class FilesTreeModel; class SeriesTreeModel; class MappingTableWidget; class MappingTableModel; class NoCoverMovieDialog; class MetadataDisplay; class QItemSelection; class QSqlQuery; class QPushButton; class QContextMenuEvent; class QLabel; class ArchiveTreeView : public QWidget { Q_OBJECT public: enum CopyType { WindowsDir, WindowsFullPath, UnixDir, UnixFullPath }; explicit ArchiveTreeView(QWidget *parent = 0); virtual ~ArchiveTreeView() {} SeriesTreeWidget *seriesWidget() { return mSeriesWidget; } FilesTreeWidget *filesWidget() { return mFilesWidget; } const QString windowTitle() { return mWindowTitle; } signals: void needWindowTitleChange(QString); public slots: void setFileViewMode(int mode); void cleanDatabase(const QString &table); void showNoCoverDialog(); void selectMovie(const QModelIndex &idx); void copyPath(int type); void readSettings(); private slots: void currentChanged(const QItemSelection &selected, const QItemSelection &deselected); void setMappingItems(const QList seriesPartIds, MappingTableModel *model, MappingTableWidget *widget); void playSelected(const QString &preferred = QString()); private: //functions void constructWindowTitle(); const QString createWindowsPath(const QString &path) const; //widgets SeriesTreeWidget *mSeriesWidget; FilesTreeWidget *mFilesWidget; MappingTableWidget *mActorsWidget; MappingTableWidget *mGenresWidget; MetadataDisplay *mMetaData; //models FilesTreeModel *mFilesModel; SeriesTreeModel *mSeriesModel; MappingTableModel *mActorsModel; MappingTableModel *mGenresModel; //misc QString mWindowTitle; NoCoverMovieDialog *mNoCoverDialog; }; class NoCoverMovieModel : public SmTreeModel { Q_OBJECT public: enum CustomRoles { SeriesNameRole = Qt::UserRole + 1, SeriesPartRole = Qt::UserRole + 2, SeriesIdRole = Qt::UserRole + 3 }; enum Fields { Display = 0, SeriesName = 1, SeriesPart = 2, SeriesId = 3 }; explicit NoCoverMovieModel(const QStringList &headers, QObject *parent = 0); virtual ~NoCoverMovieModel(); virtual QVariant data(const QModelIndex &index, int role) const; Qt::ItemFlags flags(const QModelIndex &index) const; public slots: void refresh(); signals: void refreshed(); private: QSqlDatabase mDb; QSqlQuery *mDataQuery; }; class NoCoverMovieView : public QTreeView { Q_OBJECT public: explicit NoCoverMovieView(QWidget *parent = 0); virtual ~NoCoverMovieView() {} protected: void contextMenuEvent(QContextMenuEvent *e); }; class NoCoverMovieDialog : public QDialog { Q_OBJECT public: explicit NoCoverMovieDialog(QWidget *parent = 0, Qt::WindowFlags flags = 0); virtual ~NoCoverMovieDialog() {} NoCoverMovieView *view() { return mView; } private slots: void openInBrowser(); void copyToClipboard(); void updateLabel(); private: const QString selectedText() const; const QString labelText() const; QPushButton *mClose; QPushButton *mRefresh; NoCoverMovieView *mView; NoCoverMovieModel *mModel; QLabel *mMovieLabel; QAction *mCopyA; QAction *mBrowserA; }; #endif