calamares/src/modules/plasmalnf/PlasmaLnfPage.cpp

87 lines
2.5 KiB
C++
Raw Normal View History

/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2017, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#include "PlasmaLnfPage.h"
#include "PlasmaLnfInfo.h"
#include "ui_page_plasmalnf.h"
#include "Branding.h"
#include "JobQueue.h"
#include "GlobalStorage.h"
#include "utils/Logger.h"
#include "utils/CalamaresUtilsGui.h"
#include "utils/Retranslator.h"
#include "ViewManager.h"
#include <KPackage/Package>
#include <KPackage/PackageLoader>
#include <QButtonGroup>
#include <QDesktopServices>
#include <QLabel>
#include <QProcess>
static QStringList plasma_themes()
{
QStringList packages;
QList<KPluginMetaData> pkgs = KPackage::PackageLoader::self()->listPackages("Plasma/LookAndFeel");
for (const KPluginMetaData &data : pkgs) {
packages << data.pluginId();
}
return packages;
}
PlasmaLnfPage::PlasmaLnfPage(QWidget *parent)
: QWidget( parent )
, ui( new Ui::PlasmaLnfPage )
{
using StringEntry = Calamares::Branding::StringEntry;
ui->setupUi( this );
CALAMARES_RETRANSLATE(
ui->retranslateUi( this );
ui->generalExplanation->setText( tr( "Please choose a look-and-feel for the KDE Plasma Desktop, below." ) );
)
ui->lnfCombo->addItems( plasma_themes() );
QObject::connect<void(QComboBox::*)(const QString&)>(ui->lnfCombo, &QComboBox::activated, this, &PlasmaLnfPage::activated);
}
void
PlasmaLnfPage::activated(const QString& name)
{
cDebug() << "Changed to" << name;
QProcess lnftool;
lnftool.start( Calamares::lnftool(), {"--resetLayout", "--apply", name} );
if ( lnftool.waitForStarted(1000) && lnftool.waitForFinished( 1000 ) && (lnftool.exitCode() == 0) && (lnftool.exitStatus() == QProcess::NormalExit ) )
; // OK
else
cDebug() << "WARNING: could not apply look-and-feel" << name;
emit plasmaThemeSelected( name );
}