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 }