summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--archivebrowser.cpp1
-rw-r--r--archivebrowsermodel.cpp18
-rw-r--r--archivebrowsermodel.h4
-rw-r--r--delegates.cpp6
-rw-r--r--delegates.h7
-rw-r--r--smglobals.cpp2
6 files changed, 32 insertions, 6 deletions
diff --git a/archivebrowser.cpp b/archivebrowser.cpp
index d3d64a5..9bf7cb7 100644
--- a/archivebrowser.cpp
+++ b/archivebrowser.cpp
@@ -44,6 +44,7 @@ ArchiveBrowser::ArchiveBrowser(QWidget *parent) : QWidget(parent), mSelectedSize
mTree->setColumnHidden(ArchiveBrowserModel::NodeType, true);
mTree->setItemDelegateForColumn(ArchiveBrowserModel::TotalSize, new SizeDelegate(this));
mTree->setItemDelegateForColumn(ArchiveBrowserModel::FileType, new FileTypeDelegate(this));
+ mTree->setItemDelegateForColumn(ArchiveBrowserModel::Genres, new GenreDelegate(this));
mTree->setSelectionMode(QAbstractItemView::ExtendedSelection);
QToolBar *toolBar = new QToolBar;
diff --git a/archivebrowsermodel.cpp b/archivebrowsermodel.cpp
index c6e7d08..da8e316 100644
--- a/archivebrowsermodel.cpp
+++ b/archivebrowsermodel.cpp
@@ -13,7 +13,7 @@
#include "smglobals.h"
#include "helper.h"
-ArchiveBrowserModel::ArchiveBrowserModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent), mNumFields(9) {
+ArchiveBrowserModel::ArchiveBrowserModel(const QStringList &headers, QObject *parent) : SmTreeModel(headers, parent), mNumFields(10) {
mDb = QSqlDatabase::database("treedb");
readConfig();
populate();
@@ -52,6 +52,9 @@ QVariant ArchiveBrowserModel::data(const QModelIndex &index, int role) const {
if(role == SelectedRole){
return item->data(Selected);
}
+ if(role == GenreRole){
+ return item->data(Genres);
+ }
if(role == Qt::ForegroundRole){
if(col == TotalSize){
qint64 s = item->data(TotalSize).toLongLong();
@@ -162,6 +165,8 @@ void ArchiveBrowserModel::populate(){
mAvailableQualities.clear();
QSqlQuery localFilesQ(mDb);
localFilesQ.prepare("SELECT tfilename, bisize, sifiletype, siquality, ifiles_id, cmd5sum FROM files WHERE iseriespart_id = :sid ORDER BY sifiletype");
+ QSqlQuery localGenresQ(mDb);
+ localGenresQ.prepare("SELECT seriesparts_genremap.igenres_id, genres.tgenrename FROM seriesparts_genremap, genres WHERE iseriesparts_id = :sid AND seriesparts_genremap.igenres_id = genres.igenres_id ORDER BY genres.tgenrename ASC");
QSqlQuery localQ = QSqlQuery("SELECT DISTINCT(series.iseries_id), tseries_name, seriesparts.iseriespart, seriesparts.tsubtitle, seriesparts.iseriesparts_id FROM series LEFT JOIN seriesparts ON series.iseries_id = seriesparts.iseries_id LEFT JOIN files ON seriesparts.iseriesparts_id = files.iseriespart_id WHERE files.sifiletype = 1 AND files.idvd < 1 AND seriesparts.bfavorite = false ORDER BY tseries_name ASC", mDb);
while(localQ.next()){
QList<QVariant> serPartData;
@@ -171,16 +176,17 @@ void ArchiveBrowserModel::populate(){
}else{
name = QString("%1 - %2").arg(localQ.value(1).toString(), localQ.value(3).toString());
}
- serPartData << QChar(0x26A4) << name << localQ.value(4) << SeriesPartNode << QVariant() << QVariant() << QVariant() << QString() << false;
+ serPartData << QChar(0x26A4) << name << localQ.value(4) << SeriesPartNode << QVariant() << QVariant() << QVariant() << QString() << false << QVariant();
SmTreeItem *seriesItem = new SmTreeItem(serPartData, rootItem);
rootItem->appendChild(seriesItem);
localFilesQ.bindValue(":sid", localQ.value(4));
localFilesQ.exec();
qint64 totalSize = 0;
int quality = -1;
+ QStringList genres;
while(localFilesQ.next()){
QList<QVariant> fileData;
- fileData << QVariant() << localFilesQ.value(0) << localFilesQ.value(4) << FileNode << localFilesQ.value(1) << localFilesQ.value(3) << localFilesQ.value(2) << Helper::createArchivePath(localFilesQ.value(0).toString(), localFilesQ.value(5).toString()) << false;
+ fileData << QVariant() << localFilesQ.value(0) << localFilesQ.value(4) << FileNode << localFilesQ.value(1) << localFilesQ.value(3) << localFilesQ.value(2) << Helper::createArchivePath(localFilesQ.value(0).toString(), localFilesQ.value(5).toString()) << false << QVariant();
totalSize += localFilesQ.value(1).toDouble();
if(localFilesQ.value(2) == FT_MOVIE){
int q = localFilesQ.value(3).toInt();
@@ -192,8 +198,14 @@ void ArchiveBrowserModel::populate(){
SmTreeItem *fileItem = new SmTreeItem(fileData, seriesItem);
seriesItem->appendChild(fileItem);
}
+ localGenresQ.bindValue(":sid", localQ.value(4));
+ localGenresQ.exec();
+ while(localGenresQ.next()){
+ genres << localGenresQ.value(1).toString();
+ }
seriesItem->setData(Quality, quality);
seriesItem->setData(TotalSize, totalSize);
+ seriesItem->setData(Genres, QVariant(genres));
}
setRoot(rootItem);
emit populated();
diff --git a/archivebrowsermodel.h b/archivebrowsermodel.h
index c72fe9e..7d0d263 100644
--- a/archivebrowsermodel.h
+++ b/archivebrowsermodel.h
@@ -17,8 +17,8 @@
class ArchiveBrowserModel : public SmTreeModel {
Q_OBJECT
public:
- enum CustomRoles { ExpansionRole = Qt::UserRole + 1, NameRole = Qt::UserRole + 2, GenericIdRole = Qt::UserRole + 3, NodeTypeRole = Qt::UserRole + 4, TotalSizeRole = Qt::UserRole + 5, QualityRole = 6, FileTypeRole = Qt::UserRole + 7, FullPathRole = Qt::UserRole + 8, SelectedRole = Qt::UserRole + 9 };
- enum Fields { Expansion = 0, Name = 1, GenericId = 2, NodeType = 3, TotalSize = 4, Quality = 5, FileType = 6, FullPath = 7, Selected = 8 };
+ enum CustomRoles { ExpansionRole = Qt::UserRole + 1, NameRole = Qt::UserRole + 2, GenericIdRole = Qt::UserRole + 3, NodeTypeRole = Qt::UserRole + 4, TotalSizeRole = Qt::UserRole + 5, QualityRole = 6, FileTypeRole = Qt::UserRole + 7, FullPathRole = Qt::UserRole + 8, SelectedRole = Qt::UserRole + 9, GenreRole = Qt::UserRole + 10 };
+ enum Fields { Expansion = 0, Name = 1, GenericId = 2, NodeType = 3, TotalSize = 4, Quality = 5, FileType = 6, FullPath = 7, Selected = 8, Genres = 9 };
enum NodeTypes { SeriesPartNode = 1, FileNode = 2 };
explicit ArchiveBrowserModel(const QStringList &headers, QObject *parent = nullptr);
virtual QVariant data(const QModelIndex &index, int role) const;
diff --git a/delegates.cpp b/delegates.cpp
index 7a14bb4..4be7f4d 100644
--- a/delegates.cpp
+++ b/delegates.cpp
@@ -56,6 +56,12 @@ QWidget *FileTypeDelegate::createEditor(QWidget *parent, const QStyleOptionViewI
return retval;
}
+/* Delegate for Genres */
+QString GenreDelegate::displayText(const QVariant &value, const QLocale &) const {
+ QStringList genres = value.toStringList();
+ return genres.join(' ');
+}
+
/* Delegate for Dvd no. */
QString DvdNoDelegate::displayText(const QVariant &value, const QLocale &locale) const{
diff --git a/delegates.h b/delegates.h
index 72b3b13..0db3bf9 100644
--- a/delegates.h
+++ b/delegates.h
@@ -32,6 +32,13 @@ class FileTypeDelegate : public QStyledItemDelegate {
QHash<int, QString> mFiletypeMap;
};
+class GenreDelegate : public QStyledItemDelegate {
+ Q_OBJECT
+ public:
+ explicit GenreDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {}
+ virtual QString displayText(const QVariant &value, const QLocale &locale) const;
+};
+
class DvdNoDelegate : public QStyledItemDelegate {
Q_OBJECT
public:
diff --git a/smglobals.cpp b/smglobals.cpp
index 0612b13..8b287e9 100644
--- a/smglobals.cpp
+++ b/smglobals.cpp
@@ -83,7 +83,7 @@ QAbstractItemModel *SmGlobals::model(const QString &which){
}
}else if(which == "BrowserModel"){
if(!mModels.contains("BrowserModel")){
- QStringList headers = QStringList() << QChar(0x26A7) << tr("Name") << tr("Generic Id") << tr("Node Type") << tr("Size") << tr("Quality") << tr("File Type") << tr("Full Path") << tr("Selected");
+ QStringList headers = QStringList() << QChar(0x26A7) << tr("Name") << tr("Generic Id") << tr("Node Type") << tr("Size") << tr("Quality") << tr("File Type") << tr("Full Path") << tr("Selected") << tr("Genres");
ArchiveBrowserModel *model = new ArchiveBrowserModel(headers);
mModels.insert(which, model);
}