Provide more meaningful theme colors to deal with not completed and recent states

This commit is contained in:
luisangelsm
2026-03-07 19:01:30 +01:00
parent b9005c4f5a
commit d65ce375df
8 changed files with 25 additions and 14 deletions

View File

@ -151,7 +151,8 @@
"folderIconSelectedColor": "#e0e0e0",
"folderIconSelectedShadowColor": "#000000",
"folderIconShadowColor": "#000000",
"folderIndicatorColor": "#edc518",
"newItemColor": "#edc518",
"folderNotCompletedColor": "#edc518",
"folderReadOverlayColor": "#464646",
"folderReadOverlaySelectedColor": "#464646",
"scrollBackgroundColor": "#404040",

View File

@ -151,7 +151,8 @@
"folderIconSelectedColor": "#e0e0e0",
"folderIconSelectedShadowColor": "#000000",
"folderIconShadowColor": "#000000",
"folderIndicatorColor": "#edc518",
"newItemColor": "#edc518",
"folderNotCompletedColor": "#edc518",
"folderReadOverlayColor": "#222222",
"folderReadOverlaySelectedColor": "#222222",
"scrollBackgroundColor": "#404040",

View File

@ -151,7 +151,8 @@
"folderIconSelectedColor": "#ffffff",
"folderIconSelectedShadowColor": "#161616",
"folderIconShadowColor": "#ffffff",
"folderIndicatorColor": "#555f7f",
"newItemColor": "#555f7f",
"folderNotCompletedColor": "#555f7f",
"folderReadOverlayColor": "#ffffff",
"folderReadOverlaySelectedColor": "#161616",
"scrollBackgroundColor": "#e0e0e0",

View File

@ -195,7 +195,8 @@ struct NavigationTreeThemeTemplates {
struct NavigationTreeTheme {
QString navigationTreeQSS;
QColor folderIndicatorColor; // For incomplete folders and recently updated folders
QColor folderNotCompletedColor; // Left-edge bar for folders not yet fully read
QColor newItemColor; // Dot for recently added/updated folders
// Branch indicator icon paths (used by QSS url())
QString branchClosedIconPath;

View File

@ -101,7 +101,8 @@ struct NavigationTreeParams {
QColor scrollBackgroundColor;
QColor scrollHandleColor;
QColor selectedTextColor;
QColor folderIndicatorColor;
QColor folderNotCompletedColor;
QColor newItemColor;
// Branch indicator icon colors (independent of sidebarIcons.iconColor)
QColor branchIndicatorColor;
@ -657,7 +658,8 @@ Theme makeTheme(const ThemeParams &params)
theme.navigationTree.branchOpenIconPath,
theme.navigationTree.branchClosedIconSelectedPath,
theme.navigationTree.branchOpenIconSelectedPath);
theme.navigationTree.folderIndicatorColor = nt.folderIndicatorColor;
theme.navigationTree.folderNotCompletedColor = nt.folderNotCompletedColor;
theme.navigationTree.newItemColor = nt.newItemColor;
// Folder icon — normal and selected states with independent colors
{
@ -1032,7 +1034,8 @@ Theme makeTheme(const QJsonObject &json)
nt.scrollBackgroundColor = colorFromJson(o, "scrollBackgroundColor", nt.scrollBackgroundColor);
nt.scrollHandleColor = colorFromJson(o, "scrollHandleColor", nt.scrollHandleColor);
nt.selectedTextColor = colorFromJson(o, "selectedTextColor", nt.selectedTextColor);
nt.folderIndicatorColor = colorFromJson(o, "folderIndicatorColor", nt.folderIndicatorColor);
nt.folderNotCompletedColor = colorFromJson(o, "folderNotCompletedColor", nt.folderNotCompletedColor);
nt.newItemColor = colorFromJson(o, "newItemColor", nt.newItemColor);
nt.branchIndicatorColor = colorFromJson(o, "branchIndicatorColor", nt.branchIndicatorColor);
nt.branchIndicatorSelectedColor = colorFromJson(o, "branchIndicatorSelectedColor", nt.branchIndicatorSelectedColor);
nt.folderIconColor = colorFromJson(o, "folderIconColor", nt.folderIconColor);

View File

@ -87,15 +87,18 @@ void YACReaderFoldersViewItemDeletegate::paint(QPainter *painter, const QStyleOp
if (opt.state & QStyle::State_MouseOver)
opt.state |= QStyle::State_Selected;
// Get indicator color from parent tree view
QColor indicatorColor(237, 197, 24); // Default fallback
if (auto treeView = qobject_cast<YACReaderTreeView *>(parent())) {
indicatorColor = treeView->folderIndicatorColor();
// Get indicator colors from the theme via the owning view
QColor notCompletedColor(237, 197, 24); // Default fallback
QColor newItemDotColor(237, 197, 24); // Default fallback
if (auto foldersView = qobject_cast<YACReaderFoldersView *>(parent())) {
const auto &nt = foldersView->navigationTreeTheme();
notCompletedColor = nt.folderNotCompletedColor;
newItemDotColor = nt.newItemColor;
}
if (!index.data(FolderModel::CompletedRole).toBool()) {
painter->save();
painter->setBrush(QBrush(indicatorColor));
painter->setBrush(QBrush(notCompletedColor));
painter->setPen(QPen(QBrush(), 0));
painter->drawRect(0, opt.rect.y(), 2, opt.rect.height());
painter->restore();
@ -114,7 +117,7 @@ void YACReaderFoldersViewItemDeletegate::paint(QPainter *painter, const QStyleOp
if (now - added < daysInSeconds || now - updated < daysInSeconds) {
painter->save();
painter->setRenderHint(QPainter::Antialiasing);
painter->setBrush(QBrush(indicatorColor));
painter->setBrush(QBrush(newItemDotColor));
painter->setPen(QPen(QBrush(), 0));
painter->drawEllipse(opt.rect.x() + 13, opt.rect.y() + 2, 7, 7);
painter->restore();

View File

@ -2,6 +2,7 @@
#define YACREADER_FOLDERS_VIEW_H
#include "yacreader_treeview.h"
#include "theme.h"
#include <QtWidgets>
@ -10,6 +11,7 @@ class YACReaderFoldersView : public YACReaderTreeView
Q_OBJECT
public:
explicit YACReaderFoldersView(QWidget *parent = nullptr);
const NavigationTreeTheme &navigationTreeTheme() const { return theme.navigationTree; }
signals:
// Drops

View File

@ -10,7 +10,6 @@ class YACReaderTreeView : public QTreeView, protected Themable
Q_OBJECT
public:
explicit YACReaderTreeView(QWidget *parent = 0);
QColor folderIndicatorColor() const { return theme.navigationTree.folderIndicatorColor; }
private:
void mousePressEvent(QMouseEvent *event) override;