Changeset View
Changeset View
Standalone View
Standalone View
kcms/desktoptheme/kcm.cpp
Show All 38 Lines | |||||
39 | 39 | | |||
40 | Q_LOGGING_CATEGORY(KCM_DESKTOP_THEME, "kcm_desktoptheme") | 40 | Q_LOGGING_CATEGORY(KCM_DESKTOP_THEME, "kcm_desktoptheme") | ||
41 | 41 | | |||
42 | K_PLUGIN_FACTORY_WITH_JSON(KCMDesktopThemeFactory, "kcm_desktoptheme.json", registerPlugin<KCMDesktopTheme>();) | 42 | K_PLUGIN_FACTORY_WITH_JSON(KCMDesktopThemeFactory, "kcm_desktoptheme.json", registerPlugin<KCMDesktopTheme>();) | ||
43 | 43 | | |||
44 | KCMDesktopTheme::KCMDesktopTheme(QObject *parent, const QVariantList &args) | 44 | KCMDesktopTheme::KCMDesktopTheme(QObject *parent, const QVariantList &args) | ||
45 | : KQuickAddons::ConfigModule(parent, args) | 45 | : KQuickAddons::ConfigModule(parent, args) | ||
46 | , m_defaultTheme(new Plasma::Theme(this)) | 46 | , m_defaultTheme(new Plasma::Theme(this)) | ||
47 | , m_haveThemeExplorerInstalled(false) | ||||
47 | { | 48 | { | ||
48 | //This flag seems to be needed in order for QQuickWidget to work | 49 | //This flag seems to be needed in order for QQuickWidget to work | ||
49 | //see https://bugreports.qt-project.org/browse/QTBUG-40765 | 50 | //see https://bugreports.qt-project.org/browse/QTBUG-40765 | ||
50 | //also, it seems to work only if set in the kcm, not in the systemsettings' main | 51 | //also, it seems to work only if set in the kcm, not in the systemsettings' main | ||
51 | qApp->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); | 52 | qApp->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); | ||
52 | qmlRegisterType<QStandardItemModel>(); | 53 | qmlRegisterType<QStandardItemModel>(); | ||
53 | 54 | | |||
54 | KAboutData* about = new KAboutData(QStringLiteral("kcm_desktoptheme"), i18n("Configure Desktop Theme"), | 55 | KAboutData* about = new KAboutData(QStringLiteral("kcm_desktoptheme"), i18n("Configure Desktop Theme"), | ||
55 | QStringLiteral("0.1"), QString(), KAboutLicense::LGPL); | 56 | QStringLiteral("0.1"), QString(), KAboutLicense::LGPL); | ||
56 | about->addAuthor(i18n("David Rosca"), QString(), QStringLiteral("nowrep@gmail.com")); | 57 | about->addAuthor(i18n("David Rosca"), QString(), QStringLiteral("nowrep@gmail.com")); | ||
57 | setAboutData(about); | 58 | setAboutData(about); | ||
58 | setButtons(Apply | Default | Help); | 59 | setButtons(Apply | Default | Help); | ||
59 | 60 | | |||
60 | m_model = new QStandardItemModel(this); | 61 | m_model = new QStandardItemModel(this); | ||
61 | QHash<int, QByteArray> roles = m_model->roleNames(); | 62 | QHash<int, QByteArray> roles = m_model->roleNames(); | ||
62 | roles[PluginNameRole] = QByteArrayLiteral("pluginName"); | 63 | roles[PluginNameRole] = QByteArrayLiteral("pluginName"); | ||
63 | roles[ThemeNameRole] = QByteArrayLiteral("themeName"); | 64 | roles[ThemeNameRole] = QByteArrayLiteral("themeName"); | ||
64 | roles[IsLocalRole] = QByteArrayLiteral("isLocal"); | 65 | roles[IsLocalRole] = QByteArrayLiteral("isLocal"); | ||
65 | m_model->setItemRoleNames(roles); | 66 | m_model->setItemRoleNames(roles); | ||
67 | | ||||
68 | m_haveThemeExplorerInstalled = !QStandardPaths::findExecutable(QStringLiteral("plasmathemeexplorer")).isEmpty(); | ||||
apol: Wouldn't it be better to just do `QStandardPaths::findExecutable("plasmathemeexplorer")`? This… | |||||
66 | } | 69 | } | ||
67 | 70 | | |||
68 | KCMDesktopTheme::~KCMDesktopTheme() | 71 | KCMDesktopTheme::~KCMDesktopTheme() | ||
69 | { | 72 | { | ||
70 | delete m_defaultTheme; | 73 | delete m_defaultTheme; | ||
71 | } | 74 | } | ||
72 | 75 | | |||
73 | QStandardItemModel *KCMDesktopTheme::desktopThemeModel() const | 76 | QStandardItemModel *KCMDesktopTheme::desktopThemeModel() const | ||
▲ Show 20 Lines • Show All 164 Lines • ▼ Show 20 Line(s) | 234 | { | |||
238 | updateNeedsSave(); | 241 | updateNeedsSave(); | ||
239 | } | 242 | } | ||
240 | 243 | | |||
241 | void KCMDesktopTheme::defaults() | 244 | void KCMDesktopTheme::defaults() | ||
242 | { | 245 | { | ||
243 | setSelectedPlugin(QStringLiteral("default")); | 246 | setSelectedPlugin(QStringLiteral("default")); | ||
244 | } | 247 | } | ||
245 | 248 | | |||
249 | bool KCMDesktopTheme::canEditThemes() const | ||||
250 | { | ||||
251 | return m_haveThemeExplorerInstalled; | ||||
252 | } | ||||
253 | | ||||
254 | void KCMDesktopTheme::editTheme(const QString &theme) | ||||
255 | { | ||||
256 | QProcess::startDetached(QStringLiteral("plasmathemeexplorer -t ") % theme); | ||||
apol: QProcess? | |||||
257 | } | ||||
258 | | ||||
246 | void KCMDesktopTheme::updateNeedsSave() | 259 | void KCMDesktopTheme::updateNeedsSave() | ||
247 | { | 260 | { | ||
248 | setNeedsSave(!m_pendingRemoval.isEmpty() || m_selectedPlugin != m_defaultTheme->themeName()); | 261 | setNeedsSave(!m_pendingRemoval.isEmpty() || m_selectedPlugin != m_defaultTheme->themeName()); | ||
249 | } | 262 | } | ||
250 | 263 | | |||
251 | void KCMDesktopTheme::removeThemes() | 264 | void KCMDesktopTheme::removeThemes() | ||
252 | { | 265 | { | ||
253 | const QString program = QStringLiteral("plasmapkg2"); | 266 | const QString program = QStringLiteral("plasmapkg2"); | ||
Show All 30 Lines |
Wouldn't it be better to just do QStandardPaths::findExecutable("plasmathemeexplorer")? This way we don't need a new dependency