diff options
author | Arno <arno@disconnect.de> | 2025-05-03 01:08:13 +0200 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2025-05-03 01:08:13 +0200 |
commit | f18b4201d891aea10a4b38bd923f4c8fc4ee7209 (patch) | |
tree | b36b9364cfdef72bb3152d5c6fdeb1b8b8b270ab | |
parent | 88a80f8fb94ad10a9162ff340e392e79a7103fa3 (diff) | |
download | SheMov-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.cpp | 2 | ||||
-rw-r--r-- | archivebrowsermodel.h | 1 | ||||
-rw-r--r-- | delegates.cpp | 12 | ||||
-rw-r--r-- | delegates.h | 9 |
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 { |