summaryrefslogtreecommitdiffstats
path: root/archiveview.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-07-06 19:24:04 +0200
committerArno <am@disconnect.de>2013-07-06 19:24:04 +0200
commitb039fbf6aaef0e961490f8267a91976866ac2e0a (patch)
tree270fbd374dbb0d2cc524ba24328da537f30213a7 /archiveview.cpp
parentbd6a6a7c42dabe2d0d86e309a6dc6b04de7c0a10 (diff)
downloadSheMov-b039fbf6aaef0e961490f8267a91976866ac2e0a.tar.gz
SheMov-b039fbf6aaef0e961490f8267a91976866ac2e0a.tar.bz2
SheMov-b039fbf6aaef0e961490f8267a91976866ac2e0a.zip
Lots of Display Changes
* Save header states * Implement delegates for columns * unify size and duration to 1 column * colorize View ... and lots of other things I forgot :)
Diffstat (limited to 'archiveview.cpp')
-rw-r--r--archiveview.cpp83
1 files changed, 80 insertions, 3 deletions
diff --git a/archiveview.cpp b/archiveview.cpp
index f570751..53903f9 100644
--- a/archiveview.cpp
+++ b/archiveview.cpp
@@ -16,10 +16,12 @@
#include <QSettings>
#include <QSplitter>
#include <QVBoxLayout>
+#include <QHeaderView>
#include "archiveview.h"
#include "archivecontroller.h"
#include "smglobals.h"
+#include "helper.h"
ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) {
QSettings s;
@@ -77,7 +79,12 @@ ArchiveView::ArchiveView(QWidget *parent) : QWidget(parent) {
treeWidget->setLayout(treeLayout);
mFiles = new ArchiveFiles;
- mFilesModel = new ArchiveFilesModel(QStringList() << tr("Seriespartid") << tr("Filename") << tr("Md5Sum") << tr("Size") << tr("Dvd") << tr("Type") << tr("No") << tr("Quality") << tr("Fileid") << tr("Pic size") << tr("Duration") << tr("Full Path"), this);
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::FileType, new FileTypeDelegate(this));
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::DvdNo, new DvdNoDelegate(this));
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::Size, new SizeDelegate(this));
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::SizeDur, new DurationDelegate(this));
+ mFiles->setItemDelegateForColumn(ArchiveFilesModel::FileNumber, new EmptyDelegate(this));
+ mFilesModel = new ArchiveFilesModel(QStringList() << QChar(0x26A7) << tr("Seriespartid") << tr("Filename") << tr("Md5Sum") << tr("Size") << tr("Dvd") << tr("Type") << tr("No") << tr("Q") << tr("Fileid") << tr("S/Dur") << tr("Full Path"), this);
mFilesProxy = new ArchiveFilesProxy;
mFilesProxy->setSourceModel(mFilesModel);
mFiles->setModel(mFilesProxy);
@@ -107,6 +114,8 @@ void ArchiveView::readSettings(){
list = s.value("archivemodel/expandedseries").toList();
mExpandedItems[ArchiveModel::SeriesName] = list;
expandedItems();
+ mFiles->readHeaderConfig();
+ mFiles->setSortingEnabled(true);
}
void ArchiveView::writeSettings() {
@@ -116,7 +125,7 @@ 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));
-
+ mFiles->writeHeaderConfig();
}
void ArchiveView::refreshArchive(){
@@ -179,6 +188,7 @@ void ArchiveView::initController(){
mController->setArchiveFiles(mFiles, mFilesProxy);
mController->setModels(mArchiveModel, mFilesModel);
mController->init();
+ SmGlobals::instance()->setArchiveController(mController);
}
ArchiveTree::ArchiveTree(QWidget *parent) : SmTreeView(parent) {}
@@ -221,7 +231,8 @@ void ArchiveTree::impossible(const QString msg){
QMessageBox::critical(this, tr("Error"), msg);
}
-ArchiveFiles::ArchiveFiles(QWidget *parent) : SmTreeView(parent){
+ArchiveFiles::ArchiveFiles(const QString &headerSettings, QWidget *parent) : SmTreeView(headerSettings, parent){
+ setEditTriggers(QAbstractItemView::NoEditTriggers);
}
ArchiveProxy::ArchiveProxy(QObject *parent) : QSortFilterProxyModel(parent) {}
@@ -242,3 +253,69 @@ bool ArchiveProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePare
}
ArchiveFilesProxy::ArchiveFilesProxy(QObject *parent) : QSortFilterProxyModel(parent) {}
+
+/* Delegate for file type */
+
+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:
+ ;
+ }
+ return tr("n/a");
+}
+
+/* Delegate for Dvd no. */
+
+QString DvdNoDelegate::displayText(const QVariant &value, const QLocale &locale) const{
+ Q_UNUSED(locale);
+ int no = value.toInt();
+ if(no < 0){
+ return tr("(local)");
+ }
+ QString retval = QString(tr("#%1")).arg(QString::number(no));
+ return retval;
+}
+
+/* Delegate for size */
+
+QString SizeDelegate::displayText(const QVariant &value, const QLocale &locale) const{
+ // locale.toString() doesn't work, maybe b/c it's const
+ Q_UNUSED(locale);
+ QLocale l;
+ return l.toString(value.toLongLong());
+}
+
+/* Delegate for duration */
+
+QString DurationDelegate::displayText(const QVariant &value, const QLocale &locale) const{
+ Q_UNUSED(locale);
+ if(value.toString().contains("x")){
+ return value.toString();
+ }
+ qint64 secs = value.toInt();
+ if(secs == 0){
+ return tr("n/a");
+ }
+ Helper::Duration dur(secs);
+ return dur.toString();
+}
+
+/* Empty delegate */
+
+QString EmptyDelegate::displayText(const QVariant &value, const QLocale &locale) const{
+ int i = value.toInt();
+ if(i < 1){
+ return QString();
+ }
+ return QStyledItemDelegate::displayText(value, locale);
+}