summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-06-01 09:42:15 +0200
committerArno <am@disconnect.de>2013-06-01 09:42:15 +0200
commitd43981754db00a2091e95a55cd6583bf1fbc724d (patch)
tree00535b6e13e3d2b4072cf7b767281ec3bc9e8f03
parentac5f624734f712bce84f36cc47c0133a1382534f (diff)
downloadSheMov-d43981754db00a2091e95a55cd6583bf1fbc724d.tar.gz
SheMov-d43981754db00a2091e95a55cd6583bf1fbc724d.tar.bz2
SheMov-d43981754db00a2091e95a55cd6583bf1fbc724d.zip
Fix various display issues of ArchiveModel
* Show childcount * Show subtitle or part no * Resize Widget properly
-rw-r--r--archivemodel.cpp31
-rw-r--r--archivemodel.h1
-rw-r--r--archivetreeview.h3
-rw-r--r--archiveview.cpp16
-rw-r--r--archiveview.h6
-rw-r--r--smglobals.cpp2
6 files changed, 48 insertions, 11 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp
index 3bae59b..3379d67 100644
--- a/archivemodel.cpp
+++ b/archivemodel.cpp
@@ -24,6 +24,36 @@ const QStringList ArchiveModel::availableOrders() const {
return retval;
}
+QVariant ArchiveModel::data(const QModelIndex &index, int role) const{
+ SmTreeItem *item = itemAt(index);
+ if(role == Qt::DisplayRole && index.column() == 0){
+ QString retval;
+ int part = item->data(SeriesPart).toInt();
+ int childCount = item->data(Count).toInt();
+ int nodeType = item->data(Type).toInt();
+ if(nodeType == SeriesNode){
+ retval = QString("%1 (%2)").arg(item->data(Name).toString()).arg(QString::number(childCount));
+ }else if(nodeType == SeriesPartNode){
+ if(part > 0){
+ retval = QString("%1 %2").arg(item->data(Name).toString()).arg(QString::number(part));
+ }else{
+ QString subtitle = item->data(Subtitle).toString();
+ if(!subtitle.isEmpty()){
+ retval = QString("%1 - %2").arg(item->data(Name).toString()).arg(item->data(Subtitle).toString());
+ }
+ }
+ }
+ return retval;
+ }
+ if(role == Qt::ForegroundRole){
+ bool favorite = item->data(Favorite).toBool();
+ if(favorite){
+ return QColor(Qt::darkGreen);
+ }
+ }
+ return SmTreeModel::data(index, role);
+}
+
void ArchiveModel::setOrder(int order) {
switch (order) {
case SeriesName:
@@ -42,7 +72,6 @@ void ArchiveModel::setOrder(int order) {
void ArchiveModel::populateBySeriesName() {
SmTreeItem *rootItem = new SmTreeItem(NumFields);
- //fetchChildren(rootItem);
fetchSeries(QVariant(), rootItem);
fetchParts(rootItem);
setRoot(rootItem);
diff --git a/archivemodel.h b/archivemodel.h
index 8e71a46..f4af14e 100644
--- a/archivemodel.h
+++ b/archivemodel.h
@@ -23,6 +23,7 @@ class ArchiveModel : public SmTreeModel {
enum NodeType { SeriesNode, SeriesPartNode, GenreNode, ActorNode };
explicit ArchiveModel(const QStringList &headers, QObject *parent = 0);
const QStringList availableOrders() const;
+ virtual QVariant data(const QModelIndex &index, int role) const;
signals:
diff --git a/archivetreeview.h b/archivetreeview.h
index ac70f16..b62d323 100644
--- a/archivetreeview.h
+++ b/archivetreeview.h
@@ -20,8 +20,7 @@ class NoCoverMovieDialog;
class MetadataDisplay;
class QItemSelection;
-class ArchiveTreeView : public QWidget
-{
+class ArchiveTreeView : public QWidget {
Q_OBJECT
public:
enum CopyType { WindowsDir, WindowsFullPath, UnixDir, UnixFullPath };
diff --git a/archiveview.cpp b/archiveview.cpp
index d91fab7..fd1a4ff 100644
--- a/archiveview.cpp
+++ b/archiveview.cpp
@@ -20,6 +20,14 @@
ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) {
mArchiveModel = static_cast<ArchiveModel*>(SmGlobals::instance()->model("ArchiveModel"));
mTree = new ArchiveTree;
+ mTree->setColumnHidden(ArchiveModel::SeriesId, true);
+ mTree->setColumnHidden(ArchiveModel::SeriesPartId, true);
+ mTree->setColumnHidden(ArchiveModel::SeriesPart, true);
+ mTree->setColumnHidden(ArchiveModel::Type, true);
+ mTree->setColumnHidden(ArchiveModel::Favorite, true);
+ mTree->setColumnHidden(ArchiveModel::Subtitle, true);
+ mTree->setColumnHidden(ArchiveModel::Count, true);
+ mTree->resizeColumnToContents(ArchiveModel::Name);
mSortOrder = new QComboBox;
mSortOrder->addItems(mArchiveModel->availableOrders());
QLabel *l1 = new QLabel(tr("Filter"));
@@ -41,20 +49,20 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) {
QSplitter *treeSplitter = new QSplitter(Qt::Horizontal);
treeSplitter->addWidget(treeWidget);
treeSplitter->addWidget(mFiles);
- treeSplitter->setStretchFactor(0, 2);
- treeSplitter->setStretchFactor(1, 3);
+ treeSplitter->setStretchFactor(0, 1);
+ treeSplitter->setStretchFactor(1, 4);
QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addWidget(treeSplitter);
setLayout(mainLayout);
}
-ArchiveTree::ArchiveTree(QWidget *parent) : QTreeView(parent) {
+ArchiveTree::ArchiveTree(QWidget *parent) : SmTreeView(parent) {
mModel = static_cast<ArchiveModel*>(SmGlobals::instance()->model("ArchiveModel"));
mProxy = new QSortFilterProxyModel;
mProxy->setSourceModel(mModel);
setModel(mProxy);
}
-ArchiveFiles::ArchiveFiles(QWidget *parent) : QTreeView(parent){
+ArchiveFiles::ArchiveFiles(QWidget *parent) : SmTreeView(parent){
}
diff --git a/archiveview.h b/archiveview.h
index a8aed6b..d97ca7f 100644
--- a/archiveview.h
+++ b/archiveview.h
@@ -9,9 +9,9 @@
#define ARCHIVEVIEW_H
#include <QWidget>
-#include <QTreeView>
#include "archivemodel.h"
+#include "smtreeview.h"
class QSortFilterProxyModel;
class QComboBox;
@@ -33,7 +33,7 @@ class ArchiveView : public QWidget {
ArchiveModel *mArchiveModel;
};
-class ArchiveTree : public QTreeView {
+class ArchiveTree : public SmTreeView {
public:
explicit ArchiveTree(QWidget *parent = 0);
@@ -42,7 +42,7 @@ class ArchiveTree : public QTreeView {
ArchiveModel *mModel;
};
-class ArchiveFiles : public QTreeView {
+class ArchiveFiles : public SmTreeView {
public:
explicit ArchiveFiles(QWidget *parent = 0);
};
diff --git a/smglobals.cpp b/smglobals.cpp
index 7b6e36c..9946e28 100644
--- a/smglobals.cpp
+++ b/smglobals.cpp
@@ -107,7 +107,7 @@ QAbstractItemModel *SmGlobals::model(const QString &which){
mModels.insert(which, model);
}
}else if(which == "ArchiveModel"){
- QStringList headers = QStringList() << tr("Series") << tr("Series ID") << tr("Series part ID") << tr("Part") << tr("Type") << tr("Favorite") << tr("Subtitle") << tr("Is Local") << tr("Count");
+ QStringList headers = QStringList() << tr("Series") << tr("Series ID") << tr("Series part ID") << tr("Part") << tr("Type") << tr("Favorite") << tr("Subtitle") << tr("Count");
ArchiveModel *model = new ArchiveModel(headers);
mModels.insert(which, model);
}