forked from qt-creator/qt-creator
Instead of duplicating a couple of code lines and hardcoding the used theme, create a commonly used QComboBox as theme selector. The selected theme remains stored in the settings. Change-Id: I78f0d59a5594e7cc4f899656caaae1bb7caab385 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
74 lines
2.7 KiB
C++
74 lines
2.7 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2020 The Qt Company Ltd.
|
|
** Contact: https://www.qt.io/licensing/
|
|
**
|
|
** This file is part of Qt Creator.
|
|
**
|
|
** Commercial License Usage
|
|
** Licensees holding valid commercial Qt licenses may use this file in
|
|
** accordance with the commercial license agreement provided with the
|
|
** Software or, alternatively, in accordance with the terms contained in
|
|
** a written agreement between you and The Qt Company. For licensing terms
|
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
** information use the contact form at https://www.qt.io/contact-us.
|
|
**
|
|
** GNU General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU
|
|
** General Public License version 3 as published by the Free Software
|
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
|
** included in the packaging of this file. Please review the following
|
|
** information to ensure the GNU General Public License requirements will
|
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
|
**
|
|
****************************************************************************/
|
|
|
|
#include "themeselector.h"
|
|
|
|
#include <utils/stylehelper.h>
|
|
#include <utils/theme/theme.h>
|
|
#include <utils/theme/theme_p.h>
|
|
|
|
#include <coreplugin/manhattanstyle.h>
|
|
|
|
#include <QApplication>
|
|
#include <QDir>
|
|
#include <QSettings>
|
|
|
|
static const char themeNameKey[] = "ThemeName";
|
|
|
|
static void setTheme(const QString &themeFile)
|
|
{
|
|
using namespace Utils;
|
|
|
|
static Theme theme("");
|
|
QSettings settings(themeFile, QSettings::IniFormat);
|
|
theme.readSettings(settings);
|
|
setCreatorTheme(&theme);
|
|
StyleHelper::setBaseColor(QColor(StyleHelper::DEFAULT_BASE_COLOR));
|
|
QApplication::setStyle(new ManhattanStyle(creatorTheme()->preferredStyles().value(0)));
|
|
QApplication::setPalette(theme.palette());
|
|
}
|
|
|
|
ManualTest::ThemeSelector::ThemeSelector(QWidget *parent)
|
|
: QComboBox(parent)
|
|
{
|
|
QCoreApplication::setOrganizationName("QtProject");
|
|
QCoreApplication::setApplicationName("tst_manual");
|
|
|
|
for (const QFileInfo &themeFile : QDir(":/themes/", "*.creatortheme").entryInfoList()) {
|
|
QSettings settings(themeFile.absoluteFilePath(), QSettings::IniFormat);
|
|
addItem(settings.value("ThemeName").toString(), themeFile.absoluteFilePath());
|
|
}
|
|
|
|
QSettings appSettings;
|
|
setCurrentText(appSettings.value(themeNameKey, "Flat Dark").toString());
|
|
setTheme(currentData().toString());
|
|
|
|
connect(this, &QComboBox::currentTextChanged, [this]{
|
|
setTheme(currentData().toString());
|
|
QSettings appSettings;
|
|
appSettings.setValue(themeNameKey, currentText());
|
|
});
|
|
}
|