You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

60 lines
2.0 KiB

/*************************************************************************************
* SPDX-FileCopyrightText: 2016 Zhigalin Alexander <alexander@zhigalin.tk>
* SPDX-FileCopyrightText: 2021 DI DIO Maximilien <maximilien.didio@gmail.com>
*
* SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*************************************************************************************/
#include "AppColorSchemeChooser.h"
#include "konsoledebug.h"
#include <QMenu>
#include <QModelIndex>
#include <KActionCollection>
#include <KActionMenu>
#include <KConfigGroup>
#include <KLocalizedString>
#include <KSharedConfig>
AppColorSchemeChooser::AppColorSchemeChooser(QObject *parent)
: QAction(parent)
{
auto *manager = new KColorSchemeManager(parent);
const QString scheme(currentSchemeName());
qCDebug(KonsoleDebug) << "Color scheme : " << scheme;
auto *selectionMenu = manager->createSchemeSelectionMenu(scheme, this);
connect(selectionMenu->menu(), &QMenu::triggered, this, &AppColorSchemeChooser::slotSchemeChanged);
manager->activateScheme(manager->indexForScheme(scheme));
setMenu(selectionMenu->menu());
menu()->setIcon(QIcon::fromTheme(QStringLiteral("preferences-desktop-color")));
menu()->setTitle(i18n("&Window Color Scheme"));
}
QString AppColorSchemeChooser::currentSchemeName() const
{
if (!menu()) {
KSharedConfigPtr config = KSharedConfig::openConfig();
KConfigGroup cg(config, "UiSettings");
return cg.readEntry("WindowColorScheme", QString());
}
if (QAction *const action = menu()->activeAction()) {
return KLocalizedString::removeAcceleratorMarker(action->text());
}
return QString();
}
void AppColorSchemeChooser::slotSchemeChanged(QAction *triggeredAction)
{
KSharedConfigPtr config = KSharedConfig::openConfig();
KConfigGroup cg(config, "UiSettings");
cg.writeEntry("WindowColorScheme", KLocalizedString::removeAcceleratorMarker(triggeredAction->text()));
cg.sync();
}