diff options
author | Arno <am@disconnect.de> | 2013-07-06 19:24:04 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-07-06 19:24:04 +0200 |
commit | b039fbf6aaef0e961490f8267a91976866ac2e0a (patch) | |
tree | 270fbd374dbb0d2cc524ba24328da537f30213a7 /archivemodel.cpp | |
parent | bd6a6a7c42dabe2d0d86e309a6dc6b04de7c0a10 (diff) | |
download | SheMov-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 'archivemodel.cpp')
-rw-r--r-- | archivemodel.cpp | 67 |
1 files changed, 55 insertions, 12 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 3746105..2dd151b 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -12,6 +12,8 @@ #include <QMutexLocker> #include <QSignalMapper> #include <QFileInfo> +#include <QBrush> +#include <QFont> #include "smtreeitem.h" #include "archivemodel.h" @@ -413,6 +415,7 @@ QVariant ArchiveFilesModel::data(const QModelIndex &index, int role) const { return QVariant(); } SmTreeItem *item = itemAt(index); + int col = index.column(); if(role == SeriesPartIdRole){ return item->data(SeriesPartId); } @@ -440,15 +443,52 @@ QVariant ArchiveFilesModel::data(const QModelIndex &index, int role) const { if(role == FileIdRole){ return item->data(FileId); } - if(role == PicSizeRole){ - return item->data(PicSize); + if(role == SizeDurRole){ + return item->data(SizeDur); } - if(role == DurationRole){ - return item->data(Duration); + if(role == SizeDurRole){ + return item->data(SizeDur); } if(role == FullPathRole){ return item->data(FullPath); } + if(role == Qt::ForegroundRole){ + if(col == DvdNo){ + if(item->data(DvdNo).toInt() < 0){ + return QBrush(Qt::blue); + }else{ + return QBrush(Qt::red); + } + } + if(col == Size){ + qint64 size = item->data(Size).toInt(); + qint64 fMax = Q_INT64_C(1024 * 1024 * 1024 * 4); + if(size < fMax){ + return QBrush(Qt::green); + }else{ + return QBrush(Qt::red); + } + } + } + if(role == Qt::TextAlignmentRole){ + switch(col){ + case Size: + case FileId: + case Quality: + case FileNumber: + case SizeDur: + return Qt::AlignRight; + + } + } + if(role == Qt::FontRole){ + switch(col){ + case Md5Sum: + case FullPath: + case SizeDur: + return QFont("courier new"); + } + } return SmTreeModel::data(index, role); } @@ -488,14 +528,11 @@ void ArchiveFilesModel::populate(const QSet<int> &seriesPartIds){ } SmTreeItem *root = new SmTreeItem(NumFields); SmTreeItem *movies = new SmTreeItem(NumFields, root); - movies->setData(Filename, tr("Movies")); + movies->setData(Expansion, QChar(0x2642)); root->appendChild(movies); SmTreeItem *pictures = new SmTreeItem(NumFields, root); - pictures->setData(Filename, tr("Pictures")); + pictures->setData(Expansion, QChar(0x2640)); root->appendChild(pictures); - QSettings s; - QString archivePath = s.value("paths/archive").toString(); - QStringList ids; foreach(int i, seriesPartIds){ ids << QString::number(i); @@ -504,10 +541,16 @@ void ArchiveFilesModel::populate(const QSet<int> &seriesPartIds){ QSqlQuery q(queryString, mDb); while(q.next()){ QList<QVariant> data; - for(int i = 0; i < NumFields - 1; ++i){ - data << q.value(i); + data << QVariant(); //expansion (empty) + data << q.value(0) << q.value(1) << q.value(2) << q.value(3) << q.value(4) << q.value(5) << q.value(6) << q.value(7) << q.value(8); // << q.value(9); + if(!q.value(9).isNull()){ + data << q.value(9); + }else if(!q.value(10).isNull()){ + data << q.value(10); + }else{ + data << 0x0; } - QString fullPath = Helper::createArchivePath(archivePath, data.at(Md5Sum).toString()); + QString fullPath = Helper::createArchivePath(data.at(Filename).toString(), data.at(Md5Sum).toString()); data << fullPath; if(data.at(FileType).toInt() == Movie){ SmTreeItem *newItem = new SmTreeItem(data, movies); |