+void MainWindow::slotChangePalette(QAction *action)
+{
+ // Load the theme file
+ QString theme = action->data().toString();
+
+ // Make palette for all widgets.
+ QPalette plt;
+ if (theme.isEmpty())
+ plt = QApplication::desktop()->palette();
+ else {
+ KConfig confFile(theme, KConfig::SimpleConfig);
+ plt = kapp->palette();
+ int h, s, v;
+ const QColor fg(confFile.entryMap().value("TextRegularColor"));
+ const QColor bg(confFile.entryMap().value("BaseColor"));
+
+ bg.getHsv(&h, &s, &v);
+ v += (v < 128) ? + 50 : -50;
+ v &= 255; //ensures 0 <= v < 256
+ const QColor highlight = QColor::fromHsv(h, s, v);
+
+ fg.getHsv(&h, &s, &v);
+ v += (v < 128) ? + 150 : -150;
+ v &= 255; //ensures 0 <= v < 256
+ const QColor alternate = QColor::fromHsv(h, s, v);
+
+ plt.setColor(QPalette::Active, QPalette::Base, bg);
+ plt.setColor(QPalette::Active, QPalette::AlternateBase, alternate);
+ plt.setColor(QPalette::Active, QPalette::Background, bg.dark(115));
+ plt.setColor(QPalette::Active, QPalette::Foreground, fg);
+ plt.setColor(QPalette::Active, QPalette::Highlight, highlight);
+ plt.setColor(QPalette::Active, QPalette::HighlightedText, confFile.entryMap().value("TextSelectedColor"));
+ plt.setColor(QPalette::Active, QPalette::Dark, Qt::darkGray);
+ plt.setColor(QPalette::Active, QPalette::Button, bg);
+ plt.setColor(QPalette::Active, QPalette::ButtonText, fg);
+ plt.setColor(QPalette::Active, QPalette::Text, fg);
+ plt.setColor(QPalette::Active, QPalette::Link, confFile.entryMap().value("TextSpecialRegularColor"));
+ plt.setColor(QPalette::Active, QPalette::LinkVisited, confFile.entryMap().value("TextSpecialSelectedColor"));
+
+ plt.setColor(QPalette::Inactive, QPalette::Base, bg);
+ plt.setColor(QPalette::Inactive, QPalette::AlternateBase, alternate);
+ plt.setColor(QPalette::Inactive, QPalette::Background, bg.dark(115));
+ plt.setColor(QPalette::Inactive, QPalette::Foreground, fg);
+ plt.setColor(QPalette::Inactive, QPalette::Highlight, highlight);
+ plt.setColor(QPalette::Inactive, QPalette::HighlightedText, confFile.entryMap().value("TextSelectedColor"));
+ plt.setColor(QPalette::Inactive, QPalette::Dark, Qt::darkGray);
+ plt.setColor(QPalette::Inactive, QPalette::Button, bg);
+ plt.setColor(QPalette::Inactive, QPalette::ButtonText, fg);
+ plt.setColor(QPalette::Inactive, QPalette::Text, fg);
+ plt.setColor(QPalette::Inactive, QPalette::Link, confFile.entryMap().value("TextSpecialRegularColor"));
+ plt.setColor(QPalette::Inactive, QPalette::LinkVisited, confFile.entryMap().value("TextSpecialSelectedColor"));
+
+ plt.setColor(QPalette::Disabled, QPalette::Base, bg);
+ plt.setColor(QPalette::Disabled, QPalette::AlternateBase, alternate);
+ plt.setColor(QPalette::Disabled, QPalette::Background, bg.dark(115));
+ plt.setColor(QPalette::Disabled, QPalette::Foreground, fg);
+ plt.setColor(QPalette::Disabled, QPalette::Highlight, highlight);
+ plt.setColor(QPalette::Disabled, QPalette::HighlightedText, confFile.entryMap().value("TextSelectedColor"));
+ plt.setColor(QPalette::Disabled, QPalette::Dark, Qt::darkGray);
+ plt.setColor(QPalette::Disabled, QPalette::Button, bg);
+ plt.setColor(QPalette::Disabled, QPalette::ButtonText, fg);
+ plt.setColor(QPalette::Disabled, QPalette::Text, fg);
+ plt.setColor(QPalette::Disabled, QPalette::Link, confFile.entryMap().value("TextSpecialRegularColor"));
+ plt.setColor(QPalette::Disabled, QPalette::LinkVisited, confFile.entryMap().value("TextSpecialSelectedColor"));
+
+ /*
+ cg.setColor(QColorGroup::Light, ThemeEngine::instance()->textRegColor());
+ cg.setColor(QColorGroup::Midlight, ThemeEngine::instance()->textRegColor());
+ cg.setColor(QColorGroup::Mid, ThemeEngine::instance()->textRegColor());
+ cg.setColor(QColorGroup::Shadow, ThemeEngine::instance()->textRegColor());
+ */
+ }
+
+ kapp->setPalette(plt);
+}
+
+