Warning, /plasma/plasma-desktop/kcms/ksplash/ui/main.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2014 Marco Martin <mart@kde.org>
0003     SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-only
0006 */
0007 
0008 import QtQuick 2.1
0009 import QtQuick.Window 2.2
0010 import QtQuick.Layouts 1.1
0011 import org.kde.kirigami 2.4 as Kirigami
0012 import org.kde.newstuff 1.91 as NewStuff
0013 import org.kde.kcmutils as KCM
0014 
0015 KCM.GridViewKCM {
0016     id: root
0017 
0018     KCM.SettingStateBinding {
0019         configObject: kcm.splashScreenSettings
0020         settingName: "theme"
0021         extraEnabledConditions: !kcm.testing
0022     }
0023 
0024     view.model: kcm.splashSortedModel
0025     //NOTE: pay attention to never break this binding
0026     view.currentIndex: kcm.sortModelPluginIndex(kcm.splashScreenSettings.theme)
0027 
0028     actions: NewStuff.Action {
0029         id: newStuffButton
0030         text: i18n("&Get New…")
0031         configFile: "ksplash.knsrc"
0032         viewMode: NewStuff.Page.ViewMode.Preview
0033         onEntryEvent: function(entry, event) {
0034             if (event === NewStuff.Entry.StatusChangedEvent) {
0035                 kcm.ghnsEntryChanged(entry);
0036             }
0037         }
0038     }
0039 
0040     // putting the InlineMessage as header item causes it to show up initially despite visible false
0041     header: ColumnLayout {
0042         Kirigami.InlineMessage {
0043             id: testingFailedLabel
0044             Layout.fillWidth: true
0045             showCloseButton: true
0046             type: Kirigami.MessageType.Error
0047 
0048             Connections {
0049                 target: kcm
0050                 function onTestingFailed(processErrorOutput) {
0051                     testingFailedLabel.text = i18n("Failed to show the splash screen preview.")
0052                     if (processErrorOutput) {
0053                         testingFailedLabel.text += "\n" + processErrorOutput
0054                     }
0055                     testingFailedLabel.visible = true
0056                 }
0057                 function onError(text) {
0058                     testingFailedLabel.text = text
0059                     testingFailedLabel.visible = true
0060                 }
0061             }
0062         }
0063     }
0064 
0065     view.delegate: KCM.GridDelegate {
0066         id: delegate
0067 
0068         text: model.display
0069         toolTip: model.description
0070 
0071         thumbnailAvailable: model.screenshot.toString() !== ""
0072         thumbnail: Image {
0073             anchors.fill: parent
0074             source: model.screenshot
0075             sourceSize: Qt.size(delegate.GridView.view.cellWidth * Screen.devicePixelRatio,
0076                                 delegate.GridView.view.cellHeight * Screen.devicePixelRatio)
0077             opacity: model.pendingDeletion ? 0.3 : 1
0078         }
0079         actions: [
0080             Kirigami.Action {
0081                 visible: model.pluginName !== "None"
0082                 icon.name: "media-playback-start"
0083                 tooltip: i18n("Preview Splash Screen")
0084                 onTriggered: kcm.test(model.pluginName)
0085             },
0086             Kirigami.Action {
0087                 icon.name: model.pendingDeletion ? "edit-undo" : "edit-delete"
0088                 tooltip: i18n("Uninstall")
0089                 enabled: model.uninstallable
0090                 onTriggered: model.pendingDeletion = !model.pendingDeletion
0091             }
0092         ]
0093         onClicked: {
0094             kcm.splashScreenSettings.theme = model.pluginName;
0095             view.forceActiveFocus();
0096         }
0097         onDoubleClicked: {
0098             kcm.save();
0099         }
0100     }
0101 }