D24846: Port kcm icons to kconfigxt
Kevin Ottens
noreply at phabricator.kde.org
Wed Oct 30 12:07:20 GMT 2019
ervin requested changes to this revision.
ervin added inline comments.
This revision now requires changes to proceed.
INLINE COMMENTS
> main.cpp:101
>
> - connect(m_model, &IconsModel::selectedThemeChanged, this, [this] {
> - m_selectedThemeDirty = true;
> - setNeedsSave(true);
> - });
> - connect(m_model, &IconsModel::pendingDeletionsChanged, this, [this] {
> - setNeedsSave(true);
> - });
> + connect(m_model, SIGNAL(selectedThemeChanged()), this, SLOT(_k_settingsChanged()));
> + connect(m_model, SIGNAL(pendingDeletionsChanged()), this, SLOT(_k_settingsChanged()));
Shouldn't you be able to remove that connect? I'd expect this signal trickling down to changing the settings object, wouldn't it?
> main.cpp:102
> + connect(m_model, SIGNAL(selectedThemeChanged()), this, SLOT(_k_settingsChanged()));
> + connect(m_model, SIGNAL(pendingDeletionsChanged()), this, SLOT(_k_settingsChanged()));
>
Now that my ManagedConfigModule change landed, you should use a proper compile time check connect to settingsChanged here.
> main.cpp:110
> {
> + foreach (KIconTheme* theme, m_kicon_theme_map) {
> + delete theme;
Don't do foreach. Instead write:
for (auto theme : qAsConst(m_iconThemeCache)) {
Or even better, just use qDeleteAll:
qDeleteAll(m_iconThemeCache)
Or even better yet : try to use std::unique_ptr, std::shared_ptr or QScopedPointer as values in your associative container (I let you check which one fits best).
> main.cpp:137
> {
> - return m_iconSizes[group];
> -}
> -
> -void IconModule::setIconSize(int group, int size)
> -{
> - if (iconSize(group) == size) {
> - return;
> + QString themeName(m_model->selectedTheme());
> + if (!m_kicon_theme_map.contains(m_model->selectedTheme())) {
nitpick, I find = more readable in such a context (and less prone to the most vexing parse since you don't use curly braces init).
I'd write: `const auto themeName = m_model->selectedTheme();`
> main.cpp:138
> + QString themeName(m_model->selectedTheme());
> + if (!m_kicon_theme_map.contains(m_model->selectedTheme())) {
> + m_kicon_theme_map.insert(themeName, new KIconTheme(themeName));
Couldn't you fill the cache as soon as the selected theme changes instead? This way you wouldn't need to modify your cache here.
> main.h:34
> #include <QScopedPointer>
> +#include <QMap>
>
s/QMap/QHash/
> main.h:83
>
> - Q_INVOKABLE int iconSize(int group) const;
> - Q_INVOKABLE void setIconSize(int group, int size);
> - Q_INVOKABLE QList<int> availableIconSizes(int group) const;
> + Q_INVOKABLE QList<int> availableIconSizes(int group);
>
Killing the const here is semantically wrong IMO.
> main.h:117
>
> - QVector<int> m_iconSizes;
> + QMap<QString, KIconTheme*> m_kicon_theme_map;
>
You don't need the keys to be sorted, so please use QHash instead.
Also we do camel case here, not snake case. :-)
> IconSizePopup.qml:81
>
> + property var sizesMap: [
> + {"settingName":"desktopSize", "displayName": i18n("Desktop")},
I think I'd have expected that logic on the C++ side actually. Others might disagree. :-)
> IconSizePopup.qml:91
> + function sizeDisplayName(index) {
> + index = index <0 ? 0 : index;
> + return iconTypeList.sizesMap[index].displayName;
Urgh, I'd assert than silently swallow that I think.
REPOSITORY
R119 Plasma Desktop
REVISION DETAIL
https://phabricator.kde.org/D24846
To: bport, ervin, mart, #plasma, crossi
Cc: broulik, plasma-devel, LeGast00n, The-Feren-OS-Dev, jraleigh, fbampaloukas, GB_2, ragreen, ZrenBot, ngraham, alexeymin, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, ahiemstra, mart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20191030/83c81d6b/attachment-0001.html>
More information about the Plasma-devel
mailing list