summaryrefslogtreecommitdiffstats
path: root/archiveview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'archiveview.cpp')
-rw-r--r--archiveview.cpp66
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{