D20549: Improve the look of the Plymouth Boot Splash Screen KCM UI

Kai Uwe Broulik noreply at phabricator.kde.org
Wed Apr 17 16:34:13 BST 2019


broulik added inline comments.

INLINE COMMENTS

> kcm.cpp:88
> +        m_newStuffDialog->winId(); // so it creates the windowHandle();
>          connect(m_newStuffDialog.data(), &KNS3::DownloadDialog::accepted, this,  &KCMPlymouth::load);
>          connect(m_newStuffDialog.data(), &KNS3::DownloadDialog::finished, m_newStuffDialog.data(),  &KNS3::DownloadDialog::deleteLater);

Ideally here we would reload the model and then set the newly installed theme as current

> kcm.cpp:157
> +    const auto list = dir.entryInfoList();
> +    for (const QFileInfo &fileInfo : list) {
> +        const QString pluginName = fileInfo.fileName();

I think the model population must be split from the KCM `load()` so you can reload the model without marking it as non-dirty.

Right now when installing a new theme, the Apply button doesn't enable and no theme is selected. Ideally it would select the newly installed theme.

Also needs a `emit selectedPluginIndexChanged();` after reloading the model as a model reset will cause `ListView` to forget its `currentIndex`

> kcm.cpp:210
>      if (!rc) {
> -        KMessageBox::error(nullptr, i18n("Unable to authenticate/execute the action: %1, %2", job->error(), job->errorString()));
> +        emit showErrorMessage(i18n("Unable to authenticate/execute the action: %1 (%2)", job->error(), job->errorString()));
> +        emit load();

In error handling we should probably check for `error() == KAuth::ActionReply::UserCancelledError` to not show a pointless error message when user canceled

> kcm.cpp:211
> +        emit showErrorMessage(i18n("Unable to authenticate/execute the action: %1 (%2)", job->error(), job->errorString()));
> +        emit load();
>      }

This isn't a signal, also why do you need to reload when saving? It's not like any themes could magically appear here?

> kcm.h:72
> +
> +    void beginSave();
> +    void finishSave();

I think this should be a property `Q_PROPERTY(bool saving...)` or more generic `busy` like in the other KCMs and then proper bindings in the UI

> main.qml:68
>  
> -                            Rectangle {
> -                                anchors {
> -                                    left: parent.left
> -                                    right: parent.right
> -                                    bottom: parent.bottom
> -                                }
> -                                height: childrenRect.height
> -                                gradient: Gradient {
> -                                    GradientStop {
> -                                        position: 0.0
> -                                        color: "transparent"
> -                                    }
> -                                    GradientStop {
> -                                        position: 1.0
> -                                        color: Qt.rgba(0, 0, 0, 0.5)
> -                                    }
> -                                }
> -                                QtControls.Label {
> -                                    anchors {
> -                                        horizontalCenter: parent.horizontalCenter
> -                                    }
> -                                    color: "white"
> -                                    text: model.display
> -                                }
> -                            }
> -                        }
> -                        Rectangle {
> -                            opacity: grid.currentIndex == index ? 1.0 : 0
> -                            anchors.fill: parent
> -                            border.width: units.smallSpacing * 2
> -                            border.color: syspal.highlight
> -                            color: "transparent"
> -                            Behavior on opacity {
> -                                PropertyAnimation {
> -                                    duration: units.longDuration
> -                                    easing.type: Easing.OutQuad
> -                                }
> -                            }
> -                        }
> -                        MouseArea {
> -                            anchors.fill: parent
> -                            hoverEnabled: true
> -                            onClicked: {
> -                                grid.currentIndex = index
> -                                kcm.selectedPlugin = model.pluginName
> -                            }
> -                            Timer {
> -                                interval: 1000 // FIXME TODO: Use platform value for tooltip activation delay.
> +        Kirigami.InlineMessage {
> +            id: infoLabel

In all the other KCMs the `InlineMessage` is above the controls to not push them around as it comes and goes

> main.qml:74
>  
> -                                running: parent.containsMouse && !parent.pressedButtons
> +        QtControls.ProgressBar {
> +            id: progressBar

I don't think this "progress" bar adds much value

REPOSITORY
  R258 Plymouth KCM

BRANCH
  improve-the-look-of-the-plymouth-boot-splash-screen-kcm-ui (branched from master)

REVISION DETAIL
  https://phabricator.kde.org/D20549

To: GB_2, #plasma, #vdg, ngraham, broulik
Cc: abetts, ngraham, broulik, #vdg, plasma-devel, #plasma, jraleigh, GB_2, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, sebas, apol, mart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20190417/9f71a3b3/attachment-0001.html>


More information about the Plasma-devel mailing list