diff options
author | Arno <am@disconnect.de> | 2010-07-28 22:21:38 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-07-28 22:21:38 +0200 |
commit | ff8fdb92b8c2dfaa4818150d75c32fc303b438cb (patch) | |
tree | bb21093ef7887a6f75e31aa7a070d636666574be | |
parent | 004b9243248a29eaa73b5fae5a5ef7b5ca914f94 (diff) | |
download | SheMov-ff8fdb92b8c2dfaa4818150d75c32fc303b438cb.tar.gz SheMov-ff8fdb92b8c2dfaa4818150d75c32fc303b438cb.tar.bz2 SheMov-ff8fdb92b8c2dfaa4818150d75c32fc303b438cb.zip |
Reset NewMovieWizard
Well, the point of this commit was to have one NewMovieWizard in memory
all the time and just show it when it's needed.
For this several things were necessary:
1. implement initializePage() for every QWizardPage. For this I had to
implement reset functions in some models.
2. setOption(QWizard::IndependentPages, true) in Wizard constructor.
3. Make NewMovieWizard a member of SheMov... Well, it was, already, but
I didn't remove the ptr.
The good news: the Wizard works.
Bad News:
1. Program crashes in ArchiveViewWizard::currentChanged (see TODOS)
2. Cover files also have a quality Attribute attached.
-rw-r--r-- | TODOS | 11 | ||||
-rw-r--r-- | newmoviewizard.cpp | 30 | ||||
-rw-r--r-- | newmoviewizard.h | 3 | ||||
-rw-r--r-- | seriestreewidget.cpp | 17 | ||||
-rw-r--r-- | seriestreewidget.h | 1 | ||||
-rw-r--r-- | shemov.cpp | 8 | ||||
-rw-r--r-- | shemov.h | 1 |
7 files changed, 62 insertions, 9 deletions
@@ -22,10 +22,19 @@ SheMov (MainWindow) TODOS: -File properties for TreeView --Fix statistics menu! -Finish this file -Fix Unable to free statement on exit +TODOS 20100728: +-Whenn adding covers via NewMovieWizard covers have quality +-CRASH in ArchiveTreeWidget::currentChanged. This is totally +borked. Revisit and revamp, rename SeriesWidget::mapToSource +or make it virtual, maybe add some isValid() +-implement some moveToIncoming() or something for debugging + + + + GOOD FILES TO REMOVE: *archiveeditdialog *listeditor diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp index 9a47a64..4b8d728 100644 --- a/newmoviewizard.cpp +++ b/newmoviewizard.cpp @@ -36,6 +36,7 @@ NewMovieWizard::NewMovieWizard(QWidget *parent) : QWizard(parent){ addPage(new MovieInfoPage); addPage(new MovieMappingPage("actors")); addPage(new MovieMappingPage("genres")); + setOption(QWizard::IndependentPages, true); } void NewMovieWizard::accept(){ @@ -120,12 +121,7 @@ MovieInfoPage::MovieInfoPage(QWidget *parent) : QWizardPage(parent){ //files model setup QStringList modelHeaders = QStringList() << tr("File name") << tr("Size") << tr("File Type") << tr("Full path"); mFileModel = new WizardTreeModel(modelHeaders, this); - SmTreeItem *root = new SmTreeItem(4); - mMoviesItem= new SmTreeItem(QList<QVariant>() << tr("Movie files") << QVariant() << QVariant() << QVariant(), root); - root->appendChild(mMoviesItem); - mCoversItem = new SmTreeItem(QList<QVariant>() << tr("Cover files") << QVariant() << QVariant() << QVariant(), root); - root->appendChild(mCoversItem); - mFileModel->setRoot(root); + initModel(); //files view mFileView = new QTreeView; @@ -221,6 +217,15 @@ MovieInfoPage::MovieInfoPage(QWidget *parent) : QWizardPage(parent){ registerField("onDvd", mOnDvd); } +void MovieInfoPage::initializePage(){ + initModel(); + mTitle->clear(); + mSeriesNo->setValue(1); + mPartno->setValue(1); + mQuality->setValue(8); + mOnDvd->setChecked(false); +} + void MovieInfoPage::addFiles(){ QSettings s; QString startDir = s.value("paths/selecteddir", QDir::homePath()).toString(); @@ -295,6 +300,15 @@ void MovieInfoPage::setNextDvdNo(){ mDvdNo->setValue(nextdvd + 1); } +void MovieInfoPage::initModel(){ + SmTreeItem *root = new SmTreeItem(4); + mMoviesItem= new SmTreeItem(QList<QVariant>() << tr("Movie files") << QVariant() << QVariant() << QVariant(), root); + root->appendChild(mMoviesItem); + mCoversItem = new SmTreeItem(QList<QVariant>() << tr("Cover files") << QVariant() << QVariant() << QVariant(), root); + root->appendChild(mCoversItem); + mFileModel->setRoot(root); +} + MovieMappingPage::MovieMappingPage(const QString &table, QWidget *parent) : QWizardPage(parent){ QString title = QString(tr("Edit %1")).arg(table); QString subTitle = QString(tr("Edit %1 by adding them from the text field below")).arg(table); @@ -308,6 +322,10 @@ MovieMappingPage::MovieMappingPage(const QString &table, QWidget *parent) : QWiz setLayout(mainLayout); } +void MovieMappingPage::initializePage(){ + model()->setStringList(QStringList()); +} + WizardTreeModel::WizardTreeModel(QStringList &headers, QObject *parent) : SmTreeModel(headers, parent){ FilesTreeModel *filesModel = static_cast<FilesTreeModel*>(SmGlobals::instance()->model("FilesModel")); mFileTypeMap = filesModel->fileTypes(); diff --git a/newmoviewizard.h b/newmoviewizard.h index 7c671cd..d79531f 100644 --- a/newmoviewizard.h +++ b/newmoviewizard.h @@ -41,6 +41,7 @@ class MovieInfoPage : public QWizardPage { public: explicit MovieInfoPage(QWidget *parent = 0); WizardTreeModel *model() { return mFileModel; } + virtual void initializePage(); private slots: void addFiles(); @@ -48,6 +49,7 @@ class MovieInfoPage : public QWizardPage { void onDvd(int); void typeChanged(QString); void setNextDvdNo(); + void initModel(); private: QTreeView *mFileView; @@ -71,6 +73,7 @@ class MovieMappingPage : public QWizardPage { public: explicit MovieMappingPage(const QString &table, QWidget *parent = 0); MappingTableItemModel *model() { return mWidget->model(); } + virtual void initializePage(); private: MappingTableWidget *mWidget; diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp index a124450..7e5d41f 100644 --- a/seriestreewidget.cpp +++ b/seriestreewidget.cpp @@ -95,6 +95,23 @@ void SeriesTreeWidget::newSeries(){ } } +void SeriesTreeWidget::seriesAdded(QString seriesName, int seriesPart, bool resort){ + if(resort){ + mProxy->invalidate(); + } + QModelIndex destIdx = mModel->findValue(seriesName); + if(destIdx.isValid()){ + QModelIndex seriesPartIdx = mModel->findValue(seriesPart, destIdx, SeriesTreeModel::SeriesPart); + if(seriesPartIdx.isValid()){ + destIdx = seriesPartIdx; + } + } + if(destIdx.isValid()){ + QModelIndex proxyIndex = mProxy->mapFromSource(destIdx); + mView->selectionModel()->setCurrentIndex(proxyIndex, QItemSelectionModel::ClearAndSelect); + } +} + void SeriesTreeWidget::deleteFromSeries(){ QModelIndexList selected = mView->selectionModel()->selectedRows(); if(selected.isEmpty()){ diff --git a/seriestreewidget.h b/seriestreewidget.h index 815b5f5..fd850b4 100644 --- a/seriestreewidget.h +++ b/seriestreewidget.h @@ -33,6 +33,7 @@ class SeriesTreeWidget : public QWidget { public slots: void newSeries(); + void seriesAdded(const QString seriesName, int seriesPart, bool resort = true); void deleteFromSeries(); void readSettings(); void writeSettings(); @@ -61,6 +61,10 @@ SheMov::SheMov(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, fla connect(mATree->filesWidget()->filesTree()->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), this, SLOT(updateSelectionCount(const QItemSelection &, const QItemSelection &))); connect(mATree->seriesWidget()->seriesTree()->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(updateSelectionCount(QItemSelection,QItemSelection))); + //newmoviewizard + mNewMovieWizard = new NewMovieWizard(this); + connect(mNewMovieWizard, SIGNAL(seriesAdded(QString,int)), mATree->seriesWidget(), SLOT(seriesAdded(QString,int))); + QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(mTab); @@ -207,8 +211,8 @@ void SheMov::showStatistics(){ } void SheMov::newMovieWizard(){ - NewMovieWizard wiz(this); - wiz.exec(); + mNewMovieWizard->restart(); + mNewMovieWizard->show(); } void SheMov::setSize(qint64 size){ @@ -119,6 +119,7 @@ class SheMov : public QMainWindow { QMenu *mTreeViewMenu; QAction *mEditFSMenuA; + //widgets + dialogs QTabWidget *mTab; FilesystemWidget *mFSWidget; ArchiveTreeView *mATree; |