File indexing completed on 2024-06-02 05:43:38
0001 /* Preview widget for KDE Display color scheme setup module 0002 SPDX-FileCopyrightText: 2007 Matthew Woehlke <mw_triad@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2007 Urs Wolfer <uwolfer @ kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "previewwidget.h" 0009 0010 #include <KColorScheme> 0011 0012 PreviewWidget::PreviewWidget(QWidget *parent) 0013 : QFrame(parent) 0014 { 0015 setupUi(this); 0016 0017 // set correct colors on... lots of things 0018 setAutoFillBackground(true); 0019 frame->setBackgroundRole(QPalette::Base); 0020 viewWidget->setBackgroundRole(QPalette::Base); 0021 labelView0->setBackgroundRole(QPalette::Base); 0022 labelView3->setBackgroundRole(QPalette::Base); 0023 labelView4->setBackgroundRole(QPalette::Base); 0024 labelView2->setBackgroundRole(QPalette::Base); 0025 labelView1->setBackgroundRole(QPalette::Base); 0026 labelView5->setBackgroundRole(QPalette::Base); 0027 labelView6->setBackgroundRole(QPalette::Base); 0028 labelView7->setBackgroundRole(QPalette::Base); 0029 selectionWidget->setBackgroundRole(QPalette::Highlight); 0030 labelSelection0->setBackgroundRole(QPalette::Highlight); 0031 labelSelection3->setBackgroundRole(QPalette::Highlight); 0032 labelSelection4->setBackgroundRole(QPalette::Highlight); 0033 labelSelection2->setBackgroundRole(QPalette::Highlight); 0034 labelSelection1->setBackgroundRole(QPalette::Highlight); 0035 labelSelection5->setBackgroundRole(QPalette::Highlight); 0036 labelSelection6->setBackgroundRole(QPalette::Highlight); 0037 labelSelection7->setBackgroundRole(QPalette::Highlight); 0038 0039 QList<QWidget *> widgets = findChildren<QWidget *>(); 0040 foreach (QWidget *widget, widgets) { 0041 widget->installEventFilter(this); 0042 widget->setFocusPolicy(Qt::NoFocus); 0043 } 0044 } 0045 0046 PreviewWidget::~PreviewWidget() 0047 { 0048 } 0049 0050 bool PreviewWidget::eventFilter(QObject *, QEvent *ev) 0051 { 0052 switch (ev->type()) { 0053 case QEvent::MouseButtonPress: 0054 case QEvent::MouseButtonRelease: 0055 case QEvent::MouseButtonDblClick: 0056 case QEvent::MouseMove: 0057 case QEvent::KeyPress: 0058 case QEvent::KeyRelease: 0059 case QEvent::Enter: 0060 case QEvent::Leave: 0061 case QEvent::Wheel: 0062 case QEvent::ContextMenu: 0063 return true; // ignore 0064 default: 0065 break; 0066 } 0067 return false; 0068 } 0069 0070 inline void copyPaletteBrush(QPalette &palette, QPalette::ColorGroup state, QPalette::ColorRole role) 0071 { 0072 palette.setBrush(QPalette::Active, role, palette.brush(state, role)); 0073 if (state == QPalette::Disabled) 0074 // ### hack, while Qt has no inactive+disabled state 0075 // TODO copy from Inactive+Disabled to Inactive instead 0076 palette.setBrush(QPalette::Inactive, role, palette.brush(QPalette::Disabled, role)); 0077 } 0078 0079 void PreviewWidget::setPaletteRecursive(QWidget *widget, const QPalette &palette) 0080 { 0081 widget->setPalette(palette); 0082 0083 const QObjectList children = widget->children(); 0084 foreach (QObject *child, children) { 0085 if (child->isWidgetType()) 0086 setPaletteRecursive((QWidget *)child, palette); 0087 } 0088 } 0089 0090 inline void adjustWidgetForeground(QWidget *widget, 0091 QPalette::ColorGroup state, 0092 const KSharedConfigPtr &config, 0093 QPalette::ColorRole color, 0094 KColorScheme::ColorSet set, 0095 KColorScheme::ForegroundRole role) 0096 { 0097 QPalette palette = widget->palette(); 0098 KColorScheme::adjustForeground(palette, role, color, set, config); 0099 copyPaletteBrush(palette, state, color); 0100 widget->setPalette(palette); 0101 } 0102 0103 void PreviewWidget::setPalette(const KSharedConfigPtr &config, QPalette::ColorGroup state) 0104 { 0105 QPalette palette = KColorScheme::createApplicationPalette(config); 0106 0107 if (state != QPalette::Active) { 0108 copyPaletteBrush(palette, state, QPalette::Base); 0109 copyPaletteBrush(palette, state, QPalette::Text); 0110 copyPaletteBrush(palette, state, QPalette::Window); 0111 copyPaletteBrush(palette, state, QPalette::WindowText); 0112 copyPaletteBrush(palette, state, QPalette::Button); 0113 copyPaletteBrush(palette, state, QPalette::ButtonText); 0114 copyPaletteBrush(palette, state, QPalette::Highlight); 0115 copyPaletteBrush(palette, state, QPalette::HighlightedText); 0116 copyPaletteBrush(palette, state, QPalette::AlternateBase); 0117 copyPaletteBrush(palette, state, QPalette::Link); 0118 copyPaletteBrush(palette, state, QPalette::LinkVisited); 0119 copyPaletteBrush(palette, state, QPalette::Light); 0120 copyPaletteBrush(palette, state, QPalette::Midlight); 0121 copyPaletteBrush(palette, state, QPalette::Mid); 0122 copyPaletteBrush(palette, state, QPalette::Dark); 0123 copyPaletteBrush(palette, state, QPalette::Shadow); 0124 } 0125 0126 setPaletteRecursive(this, palette); 0127 0128 #define ADJUST_WIDGET_FOREGROUND(w, c, s, r) adjustWidgetForeground(w, state, config, QPalette::c, KColorScheme::s, KColorScheme::r); 0129 0130 ADJUST_WIDGET_FOREGROUND(labelView1, Text, View, InactiveText); 0131 ADJUST_WIDGET_FOREGROUND(labelView2, Text, View, ActiveText); 0132 ADJUST_WIDGET_FOREGROUND(labelView3, Text, View, LinkText); 0133 ADJUST_WIDGET_FOREGROUND(labelView4, Text, View, VisitedText); 0134 ADJUST_WIDGET_FOREGROUND(labelView5, Text, View, NegativeText); 0135 ADJUST_WIDGET_FOREGROUND(labelView6, Text, View, NeutralText); 0136 ADJUST_WIDGET_FOREGROUND(labelView7, Text, View, PositiveText); 0137 0138 ADJUST_WIDGET_FOREGROUND(labelSelection1, HighlightedText, Selection, InactiveText); 0139 ADJUST_WIDGET_FOREGROUND(labelSelection2, HighlightedText, Selection, ActiveText); 0140 ADJUST_WIDGET_FOREGROUND(labelSelection3, HighlightedText, Selection, LinkText); 0141 ADJUST_WIDGET_FOREGROUND(labelSelection4, HighlightedText, Selection, VisitedText); 0142 ADJUST_WIDGET_FOREGROUND(labelSelection5, HighlightedText, Selection, NegativeText); 0143 ADJUST_WIDGET_FOREGROUND(labelSelection6, HighlightedText, Selection, NeutralText); 0144 ADJUST_WIDGET_FOREGROUND(labelSelection7, HighlightedText, Selection, PositiveText); 0145 }