Warning, /frameworks/knewstuff/src/qtquick/qml/private/ErrorDisplayer.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2020 Dan Leinir Turthra Jensen <admin@leinir.dk> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 0008 import QtQuick.Layouts 0009 import org.kde.kirigami as Kirigami 0010 import org.kde.newstuff as NewStuff 0011 0012 Kirigami.PromptDialog { 0013 id: component 0014 0015 title: i18ndc("knewstuff6", "Title for a dialog box which shows error messages", "An Error Occurred"); 0016 standardButtons: Kirigami.Dialog.NoButton 0017 0018 property bool active: true; 0019 property QtObject engine; 0020 property QtObject connection: Connections { 0021 target: engine 0022 function onErrorCode(errorCode, message, metadata) { 0023 component.showError(errorCode, message, metadata); 0024 } 0025 } 0026 0027 property var errorsToShow: [] 0028 function showError(errorCode, errorMessage, errorMetadata) { 0029 if (active === true) { 0030 errorsToShow.push({ 0031 code: errorCode, 0032 message: errorMessage, 0033 metadata: errorMetadata 0034 }); 0035 showNextError(); 0036 } 0037 } 0038 onVisibleChanged: displayThrottle.start() 0039 property QtObject displayThrottle: Timer { 0040 interval: Kirigami.Units.shortDuration 0041 onTriggered: showNextError(); 0042 } 0043 function showNextError() { 0044 if (visible === false && errorsToShow.length > 0) { 0045 currentError = errorsToShow.shift(); 0046 open(); 0047 } 0048 } 0049 0050 property var currentError: null 0051 0052 RowLayout { 0053 implicitWidth: Kirigami.Units.gridUnit * 10 0054 spacing: Kirigami.Units.largeSpacing 0055 0056 Kirigami.Icon { 0057 Layout.alignment: Qt.AlignVCenter 0058 visible: source !== "" 0059 source: { 0060 if (currentError === null) { 0061 return ""; 0062 } else if (currentError.code === NewStuff.ErrorCode.TryAgainLaterError) { 0063 return "accept_time_event"; 0064 } else { 0065 return "dialog-warning"; 0066 } 0067 } 0068 } 0069 0070 Kirigami.SelectableLabel { 0071 Layout.fillWidth: true 0072 Layout.alignment: Qt.AlignVCenter 0073 wrapMode: Text.Wrap 0074 textFormat: TextEdit.AutoText 0075 onLinkActivated: link => Qt.openUrlExternally(link) 0076 0077 text: { 0078 if (currentError === null) { 0079 return ""; 0080 } else if (currentError.code === NewStuff.ErrorCode.TryAgainLaterError) { 0081 return currentError.message + "\n\n" + i18n("Please try again later.") 0082 } else { 0083 return currentError.message; 0084 } 0085 } 0086 } 0087 } 0088 }