summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-07-28 22:21:38 +0200
committerArno <am@disconnect.de>2010-07-28 22:21:38 +0200
commitff8fdb92b8c2dfaa4818150d75c32fc303b438cb (patch)
treebb21093ef7887a6f75e31aa7a070d636666574be
parent004b9243248a29eaa73b5fae5a5ef7b5ca914f94 (diff)
downloadSheMov-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--TODOS11
-rw-r--r--newmoviewizard.cpp30
-rw-r--r--newmoviewizard.h3
-rw-r--r--seriestreewidget.cpp17
-rw-r--r--seriestreewidget.h1
-rw-r--r--shemov.cpp8
-rw-r--r--shemov.h1
7 files changed, 62 insertions, 9 deletions
diff --git a/TODOS b/TODOS
index 8f37176..7a60061 100644
--- a/TODOS
+++ b/TODOS
@@ -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();
diff --git a/shemov.cpp b/shemov.cpp
index 03b9271..6c443de 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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){
diff --git a/shemov.h b/shemov.h
index 4ba2f48..ac0332e 100644
--- a/shemov.h
+++ b/shemov.h
@@ -119,6 +119,7 @@ class SheMov : public QMainWindow {
QMenu *mTreeViewMenu;
QAction *mEditFSMenuA;
+ //widgets + dialogs
QTabWidget *mTab;
FilesystemWidget *mFSWidget;
ArchiveTreeView *mATree;