summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2025-05-03 01:08:13 +0200
committerArno <arno@disconnect.de>2025-05-03 01:08:13 +0200
commitf18b4201d891aea10a4b38bd923f4c8fc4ee7209 (patch)
treeb36b9364cfdef72bb3152d5c6fdeb1b8b8b270ab
parent88a80f8fb94ad10a9162ff340e392e79a7103fa3 (diff)
downloadSheMov-f18b4201d891aea10a4b38bd923f4c8fc4ee7209.tar.gz
SheMov-f18b4201d891aea10a4b38bd923f4c8fc4ee7209.tar.bz2
SheMov-f18b4201d891aea10a4b38bd923f4c8fc4ee7209.zip
Beautify genre display in ArchiveBrowser
Display explicitly included genres with a check mark, and others with a cross mark.
-rw-r--r--archivebrowser.cpp2
-rw-r--r--archivebrowsermodel.h1
-rw-r--r--delegates.cpp12
-rw-r--r--delegates.h9
4 files changed, 20 insertions, 4 deletions
diff --git a/archivebrowser.cpp b/archivebrowser.cpp
index 9234dbb..e648ec7 100644
--- a/archivebrowser.cpp
+++ b/archivebrowser.cpp
@@ -44,7 +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->setItemDelegateForColumn(ArchiveBrowserModel::Genres, new GenreDelegate(this, mProxy));
mTree->setSelectionMode(QAbstractItemView::ExtendedSelection);
QToolBar *toolBar = new QToolBar;
diff --git a/archivebrowsermodel.h b/archivebrowsermodel.h
index ccf601a..7074af4 100644
--- a/archivebrowsermodel.h
+++ b/archivebrowsermodel.h
@@ -51,6 +51,7 @@ class ArchiveBrowserModelProxy : public QSortFilterProxyModel {
Q_OBJECT
public:
explicit ArchiveBrowserModelProxy(QObject *parent = nullptr);
+ QStringList &genreFilters() { return mGenreFilters; }
public slots:
void setQualityFilter(QString quality);
diff --git a/delegates.cpp b/delegates.cpp
index 4be7f4d..f542014 100644
--- a/delegates.cpp
+++ b/delegates.cpp
@@ -12,6 +12,7 @@
#include "delegates.h"
#include "smglobals.h"
#include "helper.h"
+#include "archivebrowsermodel.h"
/* Delegate for File no. */
@@ -58,8 +59,17 @@ QWidget *FileTypeDelegate::createEditor(QWidget *parent, const QStyleOptionViewI
/* Delegate for Genres */
QString GenreDelegate::displayText(const QVariant &value, const QLocale &) const {
+ const QStringList &filtered = mProxy->genreFilters();
QStringList genres = value.toStringList();
- return genres.join(' ');
+ QStringList retval;
+ for(const QString &g : std::as_const(genres)){
+ if(filtered.contains(g)){
+ retval << QString("%1 %2").arg(QChar(0x2705)).arg(g);
+ }else{
+ retval << QString("%1 %2").arg(QChar(0x274c)).arg(g);
+ }
+ }
+ return retval.join(' ');
}
/* Delegate for Dvd no. */
diff --git a/delegates.h b/delegates.h
index 0db3bf9..d24095a 100644
--- a/delegates.h
+++ b/delegates.h
@@ -13,6 +13,8 @@
#include <QStyleOptionViewItem>
#include <QStyledItemDelegate>
+class ArchiveBrowserModelProxy;
+
class FileNoDelegate : public QStyledItemDelegate {
Q_OBJECT
public:
@@ -35,8 +37,11 @@ class FileTypeDelegate : public QStyledItemDelegate {
class GenreDelegate : public QStyledItemDelegate {
Q_OBJECT
public:
- explicit GenreDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {}
- virtual QString displayText(const QVariant &value, const QLocale &locale) const;
+ explicit GenreDelegate(QObject *parent = nullptr, ArchiveBrowserModelProxy *proxy = nullptr) : QStyledItemDelegate(parent), mProxy(proxy) {};
+ virtual QString displayText(const QVariant &value, const QLocale &locale) const;
+
+ private:
+ ArchiveBrowserModelProxy *mProxy;
};
class DvdNoDelegate : public QStyledItemDelegate {