Warning, /plasma/powerdevil/kcmodule/profiles/ui/TimeDelaySpinBox.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2023 Jakob Petsovits <jpetso@petsovits.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 import QtQuick 0008 import QtQuick.Controls as QQC2 0009 import org.kde.kirigami as Kirigami 0010 0011 QQC2.SpinBox { 0012 id: root 0013 0014 readonly property string minutesSuffixes: i18nc("List of recognized strings for 'minutes' in a time delay expression such as 'after 10 min'", "m|min|mins|minutes") 0015 readonly property string secondsSuffixes: i18nc("List of recognized strings for 'seconds' in a time delay expression such as 'after 10 sec'", "s|sec|secs|seconds") 0016 readonly property var extractor: new RegExp(i18nc("Validator/extractor regular expression for a time delay number and unit, from e.g. 'after 10 min'. Uses recognized strings for minutes and seconds as %1 and %2.", 0017 "[^\\d]*(\\d+)\\s*(%1|%2)\\s*", minutesSuffixes, secondsSuffixes)) 0018 0019 editable: true 0020 validator: RegularExpressionValidator { 0021 regularExpression: extractor 0022 } 0023 0024 textFromValue: function(value, locale) { 0025 if (stepSize == 60 && value % 60 == 0) { 0026 return i18np("after %1 min", "after %1 min", value / 60); 0027 } 0028 return i18np("after %1 sec", "after %1 sec", value); 0029 } 0030 0031 valueFromText: function(text, locale) { 0032 const match = text.match(root.extractor); 0033 if (match[1]) { 0034 const multiplier = minutesSuffixes.split("|").includes(match[2]) ? 60 : 1; 0035 return Number.fromLocaleString(locale, match[1]) * multiplier; 0036 } 0037 return root.value; // unchanged 0038 } 0039 0040 TextMetrics { 0041 id: metricsMax 0042 text: textFromValue(to, root.locale) 0043 } 0044 TextMetrics { 0045 id: metricsAlmostMax 0046 text: textFromValue(to - stepSize, root.locale) 0047 } 0048 implicitWidth: Math.max(metricsMax.advanceWidth, metricsAlmostMax.advanceWidth) + Kirigami.Units.gridUnit * 2 0049 }