fix logic when NOT using skins colors but make applying custom colors from settings work, great flexibility now
This commit is contained in:
parent
cb6c49a36e
commit
a10d6e2384
@ -39,11 +39,11 @@ QVariant MessagesForFiltersModel::data(const QModelIndex& index, int role) const
|
||||
if (m_filteringDecisions.contains(index.row())) {
|
||||
switch (m_filteringDecisions.value(index.row())) {
|
||||
case MessageObject::FilteringAction::Accept:
|
||||
return qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::Allright);
|
||||
return qApp->skins()->colorForModel(SkinEnums::PaletteColors::Allright);
|
||||
|
||||
case MessageObject::FilteringAction::Ignore:
|
||||
case MessageObject::FilteringAction::Purge:
|
||||
return qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgError);
|
||||
return qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgError);
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -476,9 +476,9 @@ QVariant MessagesModel::data(const QModelIndex& idx, int role) const {
|
||||
: QSqlQueryModel::data(idx_important);
|
||||
|
||||
if (dta.toInt() == 1) {
|
||||
return qApp->skins()->currentSkin().colorForModel(role == Qt::ItemDataRole::ForegroundRole
|
||||
? SkinEnums::PaletteColors::FgInteresting
|
||||
: SkinEnums::PaletteColors::FgSelectedInteresting);
|
||||
return qApp->skins()->colorForModel(role == Qt::ItemDataRole::ForegroundRole
|
||||
? SkinEnums::PaletteColors::FgInteresting
|
||||
: SkinEnums::PaletteColors::FgSelectedInteresting);
|
||||
}
|
||||
}
|
||||
|
||||
@ -487,9 +487,9 @@ QVariant MessagesModel::data(const QModelIndex& idx, int role) const {
|
||||
QVariant dta = m_cache->containsData(idx_read.row()) ? m_cache->data(idx_read) : QSqlQueryModel::data(idx_read);
|
||||
|
||||
if (dta.toInt() == 0) {
|
||||
return qApp->skins()->currentSkin().colorForModel(role == Qt::ItemDataRole::ForegroundRole
|
||||
? SkinEnums::PaletteColors::FgInteresting
|
||||
: SkinEnums::PaletteColors::FgSelectedInteresting);
|
||||
return qApp->skins()->colorForModel(role == Qt::ItemDataRole::ForegroundRole
|
||||
? SkinEnums::PaletteColors::FgInteresting
|
||||
: SkinEnums::PaletteColors::FgSelectedInteresting);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -306,7 +306,7 @@ void SettingsGui::loadSettings() {
|
||||
QColor clr = settings()->value(GROUP(CustomSkinColors), enumer.key(i)).toString();
|
||||
|
||||
if (!clr.isValid()) {
|
||||
clr = qApp->skins()->currentSkin().colorForModel(pal).value<QColor>();
|
||||
clr = qApp->skins()->colorForModel(pal).value<QColor>();
|
||||
}
|
||||
|
||||
rst_btn->setObjectName(QString::number(enumer.value(i)));
|
||||
@ -339,7 +339,7 @@ void SettingsGui::resetCustomSkinColor() {
|
||||
auto* clr_btn = m_ui->m_gbCustomSkinColors->findChild<ColorToolButton*>(sender()->objectName());
|
||||
SkinEnums::PaletteColors pal = SkinEnums::PaletteColors(sender()->objectName().toInt());
|
||||
|
||||
clr_btn->setColor(qApp->skins()->currentSkin().colorForModel(pal, true).value<QColor>());
|
||||
clr_btn->setColor(qApp->skins()->colorForModel(pal, true).value<QColor>());
|
||||
}
|
||||
|
||||
void SettingsGui::saveSettings() {
|
||||
|
@ -37,7 +37,7 @@ TextBrowserViewer::TextBrowserViewer(QWidget* parent)
|
||||
setDocument(m_document.data());
|
||||
|
||||
// Apply master CSS.
|
||||
QColor a_color = qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgInteresting).value<QColor>();
|
||||
QColor a_color = qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgInteresting).value<QColor>();
|
||||
|
||||
if (!a_color.isValid()) {
|
||||
a_color = qApp->palette().color(QPalette::ColorRole::Highlight);
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include <QTextDocument>
|
||||
#include <QToolTip>
|
||||
|
||||
SkinFactory::SkinFactory(QObject* parent) : QObject(parent), m_styleIsFrozen(false) {}
|
||||
SkinFactory::SkinFactory(QObject* parent) : QObject(parent), m_styleIsFrozen(false), m_useSkinColors(false) {}
|
||||
|
||||
void SkinFactory::loadCurrentSkin() {
|
||||
QList<QString> skin_names_to_try = {selectedSkinName(), QSL(APP_SKIN_DEFAULT)};
|
||||
@ -47,6 +47,10 @@ void SkinFactory::loadCurrentSkin() {
|
||||
qCriticalNN << LOGSEC_GUI << "Failed to load selected or default skin. Quitting!";
|
||||
}
|
||||
|
||||
QVariant SkinFactory::colorForModel(SkinEnums::PaletteColors type, bool ignore_custom_colors) const {
|
||||
return m_currentSkin.colorForModel(type, m_useSkinColors, ignore_custom_colors);
|
||||
}
|
||||
|
||||
bool SkinFactory::isStyleGoodForAlternativeStylePalette(const QString& style_name) const {
|
||||
static QRegularExpression re = QRegularExpression(QSL("^(fusion|windows|qt[56]ct-style)$"));
|
||||
|
||||
@ -167,12 +171,11 @@ void SkinFactory::loadSkinFromData(const Skin& skin) {
|
||||
// NOTE: We can do this because in Qt source code
|
||||
// they specifically set object name to style name.
|
||||
m_currentStyle = qApp->style()->objectName();
|
||||
|
||||
const bool use_skin_colors =
|
||||
m_useSkinColors =
|
||||
skin.m_forcedSkinColors || qApp->settings()->value(GROUP(GUI), SETTING(GUI::ForcedSkinColors)).toBool();
|
||||
|
||||
if (isStyleGoodForAlternativeStylePalette(m_currentStyle)) {
|
||||
if (!skin.m_stylePalette.isEmpty() && use_skin_colors) {
|
||||
if (!skin.m_stylePalette.isEmpty() && m_useSkinColors) {
|
||||
qDebugNN << LOGSEC_GUI << "Activating alternative palette.";
|
||||
|
||||
QPalette pal = skin.extractPalette();
|
||||
@ -191,7 +194,7 @@ void SkinFactory::loadSkinFromData(const Skin& skin) {
|
||||
}
|
||||
|
||||
if (!skin.m_rawData.isEmpty()) {
|
||||
if (qApp->styleSheet().simplified().isEmpty() && use_skin_colors) {
|
||||
if (qApp->styleSheet().simplified().isEmpty() && m_useSkinColors) {
|
||||
qApp->setStyleSheet(skin.m_rawData);
|
||||
}
|
||||
else {
|
||||
@ -529,7 +532,7 @@ uint qHash(const SkinEnums::PaletteColors& key) {
|
||||
return uint(key);
|
||||
}
|
||||
|
||||
QVariant Skin::colorForModel(SkinEnums::PaletteColors type, bool ignore_custom_colors) const {
|
||||
QVariant Skin::colorForModel(SkinEnums::PaletteColors type, bool use_skin_colors, bool ignore_custom_colors) const {
|
||||
if (!ignore_custom_colors) {
|
||||
bool enabled = qApp->settings()->value(GROUP(CustomSkinColors), SETTING(CustomSkinColors::Enabled)).toBool();
|
||||
|
||||
@ -544,7 +547,7 @@ QVariant Skin::colorForModel(SkinEnums::PaletteColors type, bool ignore_custom_c
|
||||
}
|
||||
}
|
||||
|
||||
return m_colorPalette.contains(type) ? m_colorPalette[type] : QVariant();
|
||||
return (use_skin_colors & m_colorPalette.contains(type)) ? m_colorPalette[type] : QVariant();
|
||||
}
|
||||
|
||||
QPalette Skin::extractPalette() const {
|
||||
|
@ -70,7 +70,9 @@ struct RSSGUARD_DLLSPEC Skin {
|
||||
bool m_forcedSkinColors;
|
||||
QMultiHash<QPalette::ColorGroup, QPair<QPalette::ColorRole, QPair<QColor, Qt::BrushStyle>>> m_stylePalette;
|
||||
|
||||
QVariant colorForModel(SkinEnums::PaletteColors type, bool ignore_custom_colors = false) const;
|
||||
QVariant colorForModel(SkinEnums::PaletteColors type,
|
||||
bool use_skin_colors,
|
||||
bool ignore_custom_colors = false) const;
|
||||
QPalette extractPalette() const;
|
||||
};
|
||||
|
||||
@ -89,6 +91,9 @@ class RSSGUARD_DLLSPEC SkinFactory : public QObject {
|
||||
void loadCurrentSkin();
|
||||
Skin currentSkin() const;
|
||||
|
||||
// Gets color for model from active skin.
|
||||
QVariant colorForModel(SkinEnums::PaletteColors type, bool ignore_custom_colors = false) const;
|
||||
|
||||
bool isStyleGoodForAlternativeStylePalette(const QString& style_name) const;
|
||||
|
||||
// Returns the name of the skin, that should be activated
|
||||
@ -109,9 +114,7 @@ class RSSGUARD_DLLSPEC SkinFactory : public QObject {
|
||||
void setCurrentSkinName(const QString& skin_name);
|
||||
|
||||
QString customSkinBaseFolder() const;
|
||||
|
||||
bool styleIsFrozen() const;
|
||||
|
||||
QString currentStyle() const;
|
||||
|
||||
private:
|
||||
@ -124,6 +127,7 @@ class RSSGUARD_DLLSPEC SkinFactory : public QObject {
|
||||
Skin m_currentSkin;
|
||||
QString m_currentStyle;
|
||||
bool m_styleIsFrozen;
|
||||
bool m_useSkinColors;
|
||||
};
|
||||
|
||||
inline Skin SkinFactory::currentSkin() const {
|
||||
|
@ -58,11 +58,11 @@ QVariant Feed::data(int column, int role) const {
|
||||
case HIGHLIGHTED_FOREGROUND_TITLE_ROLE:
|
||||
switch (status()) {
|
||||
case Status::NewMessages:
|
||||
return qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgSelectedNewMessages);
|
||||
return qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgSelectedNewMessages);
|
||||
|
||||
case Status::Normal:
|
||||
if (countOfUnreadMessages() > 0) {
|
||||
return qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgSelectedInteresting);
|
||||
return qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgSelectedInteresting);
|
||||
}
|
||||
else {
|
||||
return QVariant();
|
||||
@ -72,7 +72,7 @@ QVariant Feed::data(int column, int role) const {
|
||||
case Status::ParsingError:
|
||||
case Status::AuthError:
|
||||
case Status::OtherError:
|
||||
return qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgSelectedError);
|
||||
return qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgSelectedError);
|
||||
|
||||
default:
|
||||
return QVariant();
|
||||
@ -81,11 +81,11 @@ QVariant Feed::data(int column, int role) const {
|
||||
case Qt::ItemDataRole::ForegroundRole:
|
||||
switch (status()) {
|
||||
case Status::NewMessages:
|
||||
return qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgNewMessages);
|
||||
return qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgNewMessages);
|
||||
|
||||
case Status::Normal:
|
||||
if (countOfUnreadMessages() > 0) {
|
||||
return qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgInteresting);
|
||||
return qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgInteresting);
|
||||
}
|
||||
else {
|
||||
return QVariant();
|
||||
@ -95,7 +95,7 @@ QVariant Feed::data(int column, int role) const {
|
||||
case Status::ParsingError:
|
||||
case Status::AuthError:
|
||||
case Status::OtherError:
|
||||
return qApp->skins()->currentSkin().colorForModel(SkinEnums::PaletteColors::FgError);
|
||||
return qApp->skins()->colorForModel(SkinEnums::PaletteColors::FgError);
|
||||
|
||||
default:
|
||||
return QVariant();
|
||||
|
Loading…
x
Reference in New Issue
Block a user