diff options
author | Arno <am@disconnect.de> | 2013-07-08 22:09:36 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-07-08 22:09:36 +0200 |
commit | 9dc2528dfdb04f18641602cfd24c09cb9b119107 (patch) | |
tree | 3849b34fea7be7db681af81ab732c4cbe72371ac /archiveview.cpp | |
parent | 1013140a8b66968de1cfa0d07a353b47b8234899 (diff) | |
download | SheMov-9dc2528dfdb04f18641602cfd24c09cb9b119107.tar.gz SheMov-9dc2528dfdb04f18641602cfd24c09cb9b119107.tar.bz2 SheMov-9dc2528dfdb04f18641602cfd24c09cb9b119107.zip |
Make new archive work
Well, this is a huge commit. Should be severals, but who knew...
First and foremost feature: Make NewMovieWizard work with the
experimental model. This change obsoleted a lot of code. Also, the old
archive won't work with with the new Wizward...
There are most probably many other features I forgot about.
Diffstat (limited to 'archiveview.cpp')
-rw-r--r-- | archiveview.cpp | 66 |
1 files changed, 50 insertions, 16 deletions
diff --git a/archiveview.cpp b/archiveview.cpp index d829356..8e1257c 100644 --- a/archiveview.cpp +++ b/archiveview.cpp @@ -17,6 +17,7 @@ #include <QSplitter> #include <QVBoxLayout> #include <QHeaderView> +#include <QSpinBox> #include "archiveview.h" #include "archivecontroller.h" @@ -54,7 +55,7 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) { // item in the list, nothing will happen otherwise! mArchiveModel->setOrder(sortOrderName); connect(mSortOrder, SIGNAL(currentIndexChanged(QString)), mArchiveModel, SLOT(setOrder(QString))); - connect(mArchiveModel, SIGNAL(modelReset()), this, SLOT(expandedItems())); + connect(mArchiveModel, SIGNAL(modelReset()), this, SLOT(doSelection())); QLabel *l1 = new QLabel(tr("Filter")); mFilter = new QLineEdit; @@ -115,7 +116,8 @@ void ArchiveView::readSettings(){ mExpandedItems[ArchiveModel::Actor] = list; list = s.value("archivemodel/expandedseries").toList(); mExpandedItems[ArchiveModel::SeriesName] = list; - expandedItems(); + mCurrentArchivePath = s.value("archivemodel/selectedseries").toStringList(); + doSelection(); mFiles->readHeaderConfig(); mFiles->setSortingEnabled(true); } @@ -127,16 +129,17 @@ void ArchiveView::writeSettings() { s.setValue("archivemodel/expandedgenres", mExpandedItems.value(ArchiveModel::Genre)); s.setValue("archivemodel/expandedactors", mExpandedItems.value(ArchiveModel::Actor)); s.setValue("archivemodel/expandedseries", mExpandedItems.value(ArchiveModel::SeriesName)); + s.setValue("archivemodel/selectedseries", mCurrentArchivePath); mFiles->writeHeaderConfig(); } void ArchiveView::refreshArchive(){ writeSettings(); mArchiveModel->refresh(); - expandedItems(); + doSelection(); } -void ArchiveView::expandedItems(){ +void ArchiveView::doSelection(){ QVariantList list = mExpandedItems.value(currentSortOrder()); foreach(QVariant p, list){ QStringList path = p.toStringList(); @@ -145,6 +148,13 @@ void ArchiveView::expandedItems(){ mTree->setExpanded(mProxy->mapFromSource(idx), true); } } + if(!mCurrentArchivePath.isEmpty()){ + QModelIndexList l = mArchiveModel->pathToIndex(mCurrentArchivePath); + if(!l.isEmpty()){ + QModelIndex sel = mProxy->mapFromSource(l.last()); + mTree->selectionModel()->select(sel, QItemSelectionModel::Rows | QItemSelectionModel::ClearAndSelect); + } + } } void ArchiveView::setFilter(){ @@ -186,7 +196,8 @@ void ArchiveView::collapseItem(const QModelIndex &idx){ void ArchiveView::initController(){ mController = new ArchiveController(this); - mController->setArchiveView(mTree, mProxy); + mController->setArchiveView(this); + mController->setArchiveTree(mTree, mProxy); mController->setArchiveFiles(mFiles, mFilesProxy); mController->setModels(mArchiveModel, mFilesModel); mController->init(); @@ -258,24 +269,47 @@ ArchiveFilesProxy::ArchiveFilesProxy(QObject *parent) : QSortFilterProxyModel(pa /* Delegate for file type */ +FileTypeDelegate::FileTypeDelegate(QObject *parent) : QStyledItemDelegate(parent){ + mFiletypeMap = SmGlobals::instance()->filetypeMap(); +} + QString FileTypeDelegate::displayText(const QVariant &value, const QLocale &locale) const{ Q_UNUSED(locale); int type = value.toInt(); - switch(type){ - case ArchiveFilesModel::Movie: - return tr("Movie"); - case ArchiveFilesModel::FrontCover: - return tr("Front Cover"); - case ArchiveFilesModel::BackCover: - return tr("Back Cover"); - case ArchiveFilesModel::GeneralCover: - return tr("General Cover"); - default: - ; + QString retval = mFiletypeMap.value(type); + if(!retval.isEmpty()){ + return retval; } return tr("n/a"); } +QWidget *FileTypeDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const{ + Q_UNUSED(option); + Q_UNUSED(index); + QComboBox *retval = new QComboBox(parent); + retval->addItems(mFiletypeMap.values()); + return retval; +} + +/* Delegate for File no. */ + +QString FileNoDelegate::displayText(const QVariant &value, const QLocale &locale) const{ + Q_UNUSED(locale); + int no = value.toInt(); + if(no){ + return QString::number(no); + } + return QString(); +} + +QWidget *FileNoDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const{ + Q_UNUSED(option); + QSpinBox *retval = new QSpinBox(parent); + int no = index.data().toInt(); + retval->setValue(no); + return retval; +} + /* Delegate for Dvd no. */ QString DvdNoDelegate::displayText(const QVariant &value, const QLocale &locale) const{ |