/* 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 NEWMOVIEWIZARD_H #define NEWMOVIEWIZARD_H #include #include #include "smtreemodel.h" #include "mappingtablewidget.h" class QSpinBox; class QComboBox; class QCheckBox; class QPlainTextEdit; class QSortFilterProxyModel; class WizardTreeModel; class MovieInfoPage; class MovieMappingPage; class MovieMetadataPage; class PictureViewer2; class QCompleter; class QStringListModel; class MappingEditorWidget; class MetadataEditorWidget; class NewMovieWizard : public QWizard { Q_OBJECT public: explicit NewMovieWizard(QWidget *parent = 0); virtual void accept(); virtual void reject(); MovieInfoPage *infoPage() { return mInfoPage; } MovieMappingPage *actorPage() { return mActorPage; } MovieMappingPage *genrePage() { return mGenrePage; } private: MovieInfoPage *mInfoPage; MovieMappingPage *mActorPage; MovieMappingPage *mGenrePage; MovieMetadataPage *mMetadataPage; }; class MovieInfoPage : public QWizardPage { Q_OBJECT public: explicit MovieInfoPage(QWidget *parent = 0); WizardTreeModel *model() { return mFileModel; } virtual void initializePage(); void addFile(const QString &file); void setCurrentDir(const QString &dir) { mCurrentDir = dir; } void selectFirst(); void saveData(); void restoreData(); public slots: void initCompleters(); private slots: void extractTitle(); void addOld(); void addFiles(); void removeFile(); private: void setupGui(); SmTreeView *mFileView; QLineEdit *mTitle; QLineEdit *mSubtitle; QSpinBox *mSeriesNo; QSpinBox *mQuality; QPushButton *mExtractTitle; QPushButton *mAddOld; QPushButton *mAddFile; QPushButton *mRemoveFile; WizardTreeModel *mFileModel; SmTreeItem *mMoviesItem; SmTreeItem *mCoversItem; QCompleter *mSeriesCompleter; QStringListModel *mSeriesCompleterModel; QSortFilterProxyModel *mProxy; QString mCurrentDir; QString mCurTitle; QString mCurSubtitle; int mCurSeriesno; int mCurQuality; }; class MovieMappingPage : public QWizardPage { Q_OBJECT public: explicit MovieMappingPage(const QString &table, QWidget *parent = 0); MappingEditorWidget *widget() { return mWidget; } virtual void initializePage(); private: /* defined in archiveview.h */ MappingEditorWidget *mWidget; QString mTable; }; class MovieMetadataPage : public QWizardPage { Q_OBJECT public: explicit MovieMetadataPage(QWidget *parent = 0); MetadataEditorWidget *widget() { return mWidget; } virtual void initializePage(); private: void setupGui(); /* defined in archiveview.h */ MetadataEditorWidget *mWidget; QCheckBox *mMetadataEnabled; }; class WizardTreeModel : public SmTreeModel { Q_OBJECT public: enum CustomRoles { FileNameRole = Qt::UserRole + 1, FileSizeRole = Qt::UserRole + 2, FileTypeRole = Qt::UserRole + 3, FilePartRole = Qt::UserRole + 4, FullPathRole = Qt::UserRole + 5 }; enum Fields { FileName = 0, FileSize = 1, FileType = 2, FilePart = 3, FullPath = 4 }; enum { NumFields = 5 }; enum Types { Movie = 1, FrontCover = 2, BackCover = 3, GeneralCover = 4, Origin = 5 }; explicit WizardTreeModel(QStringList &headers, QObject *parent = 0); //data + flags virtual QVariant data(const QModelIndex &index, int role) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role); virtual Qt::ItemFlags flags(const QModelIndex &index) const; QList fileData(const QModelIndex &idx) const; void clear(); private: QHash mFiletypeMap; QHash mFilePartMap; }; #endif