diff --git a/kdevplatform/shell/colorschemechooser.cpp b/kdevplatform/shell/colorschemechooser.cpp index ee898eebf0..2a6bed5f95 100644 --- a/kdevplatform/shell/colorschemechooser.cpp +++ b/kdevplatform/shell/colorschemechooser.cpp @@ -1,99 +1,104 @@ /************************************************************************************* * This file is part of KDevPlatform * * Copyright 2016 Zhigalin Alexander * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2.1 of the License, or (at your option) version 3, or any * * later version accepted by the membership of KDE e.V. (or its * * successor approved by the membership of KDE e.V.), which shall * * act as a proxy defined in Section 6 of version 3 of the license. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * * Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with this library. If not, see . * *************************************************************************************/ #include "colorschemechooser.h" #include #include #include #include #include #include #include #include #include #include "mainwindow.h" #include "core.h" #include "debug.h" namespace KDevelop { ColorSchemeChooser::ColorSchemeChooser(QObject* parent) : QAction(parent) { auto manager = new KColorSchemeManager(parent); const auto scheme(currentSchemeName()); qCDebug(SHELL) << "Color scheme : " << scheme; auto selectionMenu = manager->createSchemeSelectionMenu(scheme, this); connect(selectionMenu->menu(), &QMenu::triggered, this, &ColorSchemeChooser::slotSchemeChanged); manager->activateScheme(manager->indexForScheme(scheme)); setMenu(selectionMenu->menu()); menu()->setIcon(QIcon::fromTheme(QStringLiteral("preferences-desktop-color"))); menu()->setTitle(i18n("&Color Theme")); } QString ColorSchemeChooser::loadCurrentScheme() const { KSharedConfigPtr config = KSharedConfig::openConfig(); KConfigGroup cg(config, "UiSettings"); return cg.readEntry("ColorScheme", currentDesktopDefaultScheme()); } void ColorSchemeChooser::saveCurrentScheme(const QString &name) { KSharedConfigPtr config = KSharedConfig::openConfig(); KConfigGroup cg(config, "UiSettings"); cg.writeEntry("ColorScheme", name); cg.sync(); } QString ColorSchemeChooser::currentDesktopDefaultScheme() const { KSharedConfigPtr config = KSharedConfig::openConfig(QStringLiteral("kdeglobals")); KConfigGroup group(config, "General"); - return group.readEntry("ColorScheme", QStringLiteral("Breeze")); + const QString scheme = group.readEntry("ColorScheme", QStringLiteral("Breeze")); + const QString path = QStandardPaths::locate(QStandardPaths::GenericDataLocation, + QStringLiteral("color-schemes/%1.colors").arg(scheme)); + KSharedConfigPtr schemeFile = KSharedConfig::openConfig(path, KConfig::SimpleConfig); + const QString name = KConfigGroup(schemeFile, "General").readEntry("Name", scheme); + return name; } QString ColorSchemeChooser::currentSchemeName() const { if(!menu()) return loadCurrentScheme(); QAction* const action = menu()->activeAction(); if(action) return KLocalizedString::removeAcceleratorMarker(action->text()); return currentDesktopDefaultScheme(); } void ColorSchemeChooser::slotSchemeChanged(QAction* triggeredAction) { saveCurrentScheme(KLocalizedString::removeAcceleratorMarker(triggeredAction->text())); } } // namespace KDevelop