// static TQString TDEIconTheme::current() { // Static pointer because of unloading problems wrt DSO's. if (_theme != 0L) return *_theme; _theme = new TQString(); TDEConfig *config = TDEGlobal::config(); TDEConfigGroupSaver saver(config, "Icons"); *_theme = config->readEntry("Theme",defaultThemeName()); if ( *_theme == TQString::fromLatin1("hicolor") ) *_theme = defaultThemeName(); /* if (_theme->isEmpty()) { if (TQPixmap::defaultDepth() > 8) *_theme = defaultThemeName(); else *_theme = TQString::fromLatin1("locolor"); }*/ return *_theme; }
void ThemeManager::setCurrentTheme(const QString &themeName) { // compatibility with pre-0.12 versions QString fixedName = themeName; // custom themes had two trailing slashes and QDir::dirName() was returning empty string fixedName.replace(QRegExp("/*$"), QString()); if (QFileInfo(fixedName).isAbsolute()) fixedName = QDir(fixedName).dirName(); if (Themes.contains(fixedName)) CurrentThemeName = fixedName; else CurrentThemeName = defaultThemeName(); }
void ThemeManager::populateThemeMenu() { if (!d->themeMenuAction) return; QString theme(currentThemeName()); d->themeMenuAction->menu()->clear(); delete d->themeMenuActionGroup; d->themeMenuActionGroup = new QActionGroup(d->themeMenuAction); connect(d->themeMenuActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(slotChangePalette())); KAction* action = new KAction(defaultThemeName(), d->themeMenuActionGroup); action->setCheckable(true); d->themeMenuAction->addAction(action); const QStringList schemeFiles = KGlobal::dirs()->findAllResources("data", "color-schemes/*.colors", KStandardDirs::NoDuplicates); QMap<QString, QAction*> actionMap; for (int i = 0; i < schemeFiles.size(); ++i) { const QString filename = schemeFiles.at(i); const QFileInfo info(filename); KSharedConfigPtr config = KSharedConfig::openConfig(filename); QIcon icon = createSchemePreviewIcon(config); KConfigGroup group(config, "General"); const QString name = group.readEntry("Name", info.baseName()); action = new KAction(name, d->themeMenuActionGroup); d->themeMap.insert(name, filename); action->setIcon(icon); action->setCheckable(true); actionMap.insert(name, action); } // sort the list QStringList actionMapKeys = actionMap.keys(); actionMapKeys.sort(); foreach(const QString& name, actionMapKeys) { d->themeMenuAction->addAction(actionMap.value(name)); }
void ThemeManager::slotChangePalette() { // qDebug() << "slotChangePalette" << sender(); updateCurrentKDEdefaultThemePreview(); QString theme(currentThemeName()); if (theme == defaultThemeName() || theme.isEmpty()) { theme = currentKDEdefaultTheme(); } QString filename = d->themeMap.value(theme); KSharedConfigPtr config = KSharedConfig::openConfig(filename); QPalette palette = qApp->palette(); QPalette::ColorGroup states[3] = { QPalette::Active, QPalette::Inactive, QPalette::Disabled }; // TT thinks tooltips shouldn't use active, so we use our active colors for all states KColorScheme schemeTooltip(QPalette::Active, KColorScheme::Tooltip, config); for ( int i = 0; i < 3 ; ++i ) { QPalette::ColorGroup state = states[i]; KColorScheme schemeView(state, KColorScheme::View, config); KColorScheme schemeWindow(state, KColorScheme::Window, config); KColorScheme schemeButton(state, KColorScheme::Button, config); KColorScheme schemeSelection(state, KColorScheme::Selection, config); palette.setBrush(state, QPalette::WindowText, schemeWindow.foreground()); palette.setBrush(state, QPalette::Window, schemeWindow.background()); palette.setBrush(state, QPalette::Base, schemeView.background()); palette.setBrush(state, QPalette::Text, schemeView.foreground()); palette.setBrush(state, QPalette::Button, schemeButton.background()); palette.setBrush(state, QPalette::ButtonText, schemeButton.foreground()); palette.setBrush(state, QPalette::Highlight, schemeSelection.background()); palette.setBrush(state, QPalette::HighlightedText, schemeSelection.foreground()); palette.setBrush(state, QPalette::ToolTipBase, schemeTooltip.background()); palette.setBrush(state, QPalette::ToolTipText, schemeTooltip.foreground()); palette.setColor(state, QPalette::Light, schemeWindow.shade(KColorScheme::LightShade)); palette.setColor(state, QPalette::Midlight, schemeWindow.shade(KColorScheme::MidlightShade)); palette.setColor(state, QPalette::Mid, schemeWindow.shade(KColorScheme::MidShade)); palette.setColor(state, QPalette::Dark, schemeWindow.shade(KColorScheme::DarkShade)); palette.setColor(state, QPalette::Shadow, schemeWindow.shade(KColorScheme::ShadowShade)); palette.setBrush(state, QPalette::AlternateBase, schemeView.background(KColorScheme::AlternateBackground)); palette.setBrush(state, QPalette::Link, schemeView.foreground(KColorScheme::LinkText)); palette.setBrush(state, QPalette::LinkVisited, schemeView.foreground(KColorScheme::VisitedText)); } // qDebug() << ">>>>>>>>>>>>>>>>>> going to set palette on app" << theme; qApp->setPalette(palette); if (theme == defaultThemeName() || theme.isEmpty()) { #ifdef __APPLE__ qApp->setStyle("Macintosh"); qApp->style()->polish(qApp); #endif } else { #ifdef __APPLE__ qApp->setStyle("Fusion"); qApp->style()->polish(qApp); #endif } qDebug() << ">>>>>>>>>>>>>>>>>>> THEMECHANGED <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< "; emit signalThemeChanged(); }