[plasmalnf] Add description to theme widget

This commit is contained in:
Adriaan de Groot 2017-12-14 17:01:59 -05:00
parent 8b3f71af40
commit 244919d6fe
5 changed files with 29 additions and 7 deletions

View File

@ -19,7 +19,6 @@
#include "PlasmaLnfPage.h" #include "PlasmaLnfPage.h"
#include "ui_page_plasmalnf.h" #include "ui_page_plasmalnf.h"
#include "ThemeWidget.h"
#include "utils/Logger.h" #include "utils/Logger.h"
#include "utils/Retranslator.h" #include "utils/Retranslator.h"
@ -27,6 +26,13 @@
#include <KPackage/Package> #include <KPackage/Package>
#include <KPackage/PackageLoader> #include <KPackage/PackageLoader>
ThemeInfo::ThemeInfo( const KPluginMetaData& data )
: id( data.pluginId() )
, name( data.name() )
, description( data.description() )
{
}
static ThemeInfoList plasma_themes() static ThemeInfoList plasma_themes()
{ {
ThemeInfoList packages; ThemeInfoList packages;
@ -37,7 +43,7 @@ static ThemeInfoList plasma_themes()
{ {
if ( data.isValid() && !data.isHidden() && !data.name().isEmpty() ) if ( data.isValid() && !data.isHidden() && !data.name().isEmpty() )
{ {
packages << ThemeInfo{ data.pluginId(), data.name() }; packages << ThemeInfo{ data };
} }
} }
@ -89,6 +95,7 @@ void PlasmaLnfPage::updateThemeNames()
if ( t != nullptr ) if ( t != nullptr )
{ {
enabled_theme.name = t->name; enabled_theme.name = t->name;
enabled_theme.description = t->description;
} }
} }
} }

View File

@ -142,14 +142,17 @@ PlasmaLnfViewStep::setConfigurationMap( const QVariantMap& configurationMap )
{ {
ThemeInfoList allThemes; ThemeInfoList allThemes;
auto themeList = configurationMap.value( "themes" ).toList(); auto themeList = configurationMap.value( "themes" ).toList();
// Create the ThemInfo objects for the listed themes; information
// about the themes from Plasma (e.g. human-readable name and description)
// are filled in by update_names() in PlasmaLnfPage.
for ( const auto& i : themeList ) for ( const auto& i : themeList )
if ( i.type() == QVariant::Map ) if ( i.type() == QVariant::Map )
{ {
auto iv = i.toMap(); auto iv = i.toMap();
allThemes.append( ThemeInfo( iv.value( "theme" ).toString(), QString(), iv.value( "image" ).toString() ) ); allThemes.append( ThemeInfo( iv.value( "theme" ).toString(), iv.value( "image" ).toString() ) );
} }
else if ( i.type() == QVariant::String ) else if ( i.type() == QVariant::String )
allThemes.append( ThemeInfo( i.toString(), QString() ) ); allThemes.append( ThemeInfo( i.toString() ) );
if ( allThemes.length() == 1 ) if ( allThemes.length() == 1 )
cDebug() << "WARNING: only one theme enabled in plasmalnf"; cDebug() << "WARNING: only one theme enabled in plasmalnf";

View File

@ -22,6 +22,8 @@
#include <QList> #include <QList>
#include <QString> #include <QString>
class KPluginMetaData;
/** @brief describes a single plasma LnF theme. /** @brief describes a single plasma LnF theme.
* *
* A theme description has an id, which is really the name of the desktop * A theme description has an id, which is really the name of the desktop
@ -33,17 +35,25 @@ struct ThemeInfo
{ {
QString id; QString id;
QString name; QString name;
QString description;
QString imagePath; QString imagePath;
ThemeInfo() ThemeInfo()
{} {}
ThemeInfo( const QString& _id, const QString& _name, const QString& image = QString() ) explicit ThemeInfo( const QString& _id )
: id( _id )
{
}
explicit ThemeInfo( const QString& _id, const QString& image )
: id( _id ) : id( _id )
, name( _name )
, imagePath( image ) , imagePath( image )
{} {}
// Defined in PlasmaLnfPage.cpp
explicit ThemeInfo( const KPluginMetaData& );
bool isValid() const { return !id.isEmpty(); } bool isValid() const { return !id.isEmpty(); }
} ; } ;

View File

@ -34,6 +34,7 @@ ThemeWidget::ThemeWidget(const ThemeInfo& info, QWidget* parent)
layout->addWidget( m_check ); layout->addWidget( m_check );
layout->addWidget( new QLabel( "Image", this ) ); layout->addWidget( new QLabel( "Image", this ) );
layout->addWidget( new QLabel( info.description, this ) );
connect( m_check, &QRadioButton::clicked, this, &ThemeWidget::clicked ); connect( m_check, &QRadioButton::clicked, this, &ThemeWidget::clicked );
} }

View File

@ -23,7 +23,8 @@
class QAbstractButton; class QAbstractButton;
class QRadioButton; class QRadioButton;
class ThemeInfo;
struct ThemeInfo;
class ThemeWidget : public QWidget class ThemeWidget : public QWidget
{ {