/*SPDX-FileCopyrightText: 2014 Marco Martin <mart@kde.org>SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>SPDX-License-Identifier: LGPL-2.0-only*/import QtQuickimport QtQuick.Windowimport QtQuick.Layoutsimport org.kde.kirigami as Kirigamiimport org.kde.newstuff as NewStuffimport org.kde.kcmutils as KCMKCM.GridViewKCM {id: rootKCM.SettingStateBinding {configObject: kcm.splashScreenSettingssettingName: "theme"extraEnabledConditions: !kcm.testing}view.model: kcm.splashSortedModel//NOTE: pay attention to never break this bindingview.currentIndex: kcm.sortModelPluginIndex(kcm.splashScreenSettings.theme)actions: NewStuff.Action {id: newStuffButtontext: i18nc("@action:button", "&Get Newβ¦")configFile: "ksplash.knsrc"viewMode: NewStuff.Page.ViewMode.PreviewonEntryEvent: function(entry, event) {if (event === NewStuff.Entry.StatusChangedEvent) {kcm.ghnsEntryChanged(entry);}}}headerPaddingEnabled: false // Let the InlineMessage touch the edgesheader: Kirigami.InlineMessage {id: testingFailedLabelshowCloseButton: trueposition: Kirigami.InlineMessage.Position.Headertype: Kirigami.MessageType.ErrorConnections {target: kcmfunction onTestingFailed(processErrorOutput) {testingFailedLabel.text = i18nc("@info:status", "Failed to show the splash screen preview.")if (processErrorOutput) {testingFailedLabel.text += "\n" + processErrorOutput}testingFailedLabel.visible = true}function onError(text) {testingFailedLabel.text = texttestingFailedLabel.visible = true}}}view.delegate: KCM.GridDelegate {id: delegatetext: model.displaytoolTip: model.descriptionthumbnailAvailable: model.screenshot.toString() !== ""thumbnail: Image {anchors.fill: parentsource: model.screenshotsourceSize: Qt.size(delegate.GridView.view.cellWidth * Screen.devicePixelRatio,delegate.GridView.view.cellHeight * Screen.devicePixelRatio)opacity: model.pendingDeletion ? 0.3 : 1}actions: [Kirigami.Action {visible: model.pluginName !== "None"icon.name: "media-playback-start"tooltip: i18nc("@info:tooltip", "Preview splash screen")onTriggered: kcm.test(model.pluginName)},Kirigami.Action {visible: model.pluginName !== "None"icon.name: model.pendingDeletion ? "edit-undo" : "edit-delete"tooltip: if (enabled) {return i18nc("@info:tooltip", "Remove splash screen");} else if (model.uninstallable) {return i18nc("@info:tooltip", "Cannot delete the active splash screen");} else {return i18nc("@info:tooltip", "Cannot delete system-installed splash screens");}enabled: model.uninstallable && !delegate.GridView.isCurrentItemonTriggered: model.pendingDeletion = !model.pendingDeletion}]onClicked: {kcm.splashScreenSettings.theme = model.pluginName;view.forceActiveFocus();}onDoubleClicked: {kcm.save();}}}