Warning, /utilities/klimbgrades/src/GradeWidgetBase.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright 2016 Marco Martin <mart@kde.org> 0003 * 0004 * This program is free software; you can redistribute it and/or modify 0005 * it under the terms of the GNU Library General Public License as 0006 * published by the Free Software Foundation; either version 2, or 0007 * (at your option) any later version. 0008 * 0009 * This program is distributed in the hope that it will be useful, 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0012 * GNU Library General Public License for more details 0013 * 0014 * You should have received a copy of the GNU Library General Public 0015 * License along with this program; if not, write to the 0016 * Free Software Foundation, Inc., 0017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0018 */ 0019 0020 import QtQuick 2.0 0021 import QtQuick.Controls 2.15 as Controls 0022 import QtQuick.Layouts 1.2 0023 import QtGraphicalEffects 1.0 0024 import org.kde.kirigami 2.19 as Kirigami 0025 import "HeuristicConverter.js" as HeuristicConverter 0026 0027 Controls.Control { 0028 id: root 0029 0030 Layout.fillWidth: true 0031 0032 property Item page 0033 required property QtObject availableGradesModel 0034 required property string name 0035 required property string url 0036 required property string description 0037 required property bool scaleEnabled 0038 required property int index 0039 required property bool isLast 0040 0041 visible: scaleEnabled 0042 0043 function increment() { 0044 print("Decimal grade: " + availableGradesModel.currentGrade); 0045 0046 availableGradesModel.currentGrade++; 0047 } 0048 0049 function decrement() { 0050 print("Decimal grade: " + availableGradesModel.currentGrade); 0051 availableGradesModel.currentGrade = Math.max(0, availableGradesModel.currentGrade - 1); 0052 } 0053 0054 function format(decimalGrade) { 0055 var formattedGrade = dataStore.gradeName(root.name, decimalGrade); 0056 if (formattedGrade) { 0057 return formattedGrade; 0058 } 0059 var func = HeuristicConverter["format"+root.name.replace(/\s+/g, '')] 0060 if (func) { 0061 return func(decimalGrade); 0062 } 0063 return "--"; 0064 } 0065 0066 signal infoClicked 0067 0068 contentItem: ColumnLayout { 0069 Kirigami.Heading { 0070 Layout.alignment: Qt.AlignHCenter 0071 level: 2 0072 text: root.name 0073 } 0074 RowLayout { 0075 Layout.fillWidth: true 0076 Controls.ToolButton { 0077 icon.name: "go-previous" 0078 onClicked: availableGradesModel.currentGrade -= 2; 0079 } 0080 Kirigami.Heading { 0081 Layout.fillWidth: true 0082 horizontalAlignment: Text.AlignHCenter 0083 color: availableGradesModel.currentGrade <= 100 ? Kirigami.Theme.textColor : "red" 0084 text: format(availableGradesModel.currentGrade); 0085 } 0086 Controls.ToolButton { 0087 icon.name: "go-next" 0088 onClicked: availableGradesModel.currentGrade += 2; 0089 } 0090 } 0091 0092 RowLayout { 0093 Layout.fillWidth: true 0094 Controls.Label { 0095 Layout.fillWidth: true 0096 text: page.model.personalRecord > 0 ? (qsTr("Record: ") + format(page.model.personalRecord)) : ""; 0097 } 0098 Controls.ToolButton { 0099 icon.name: "documentinfo" 0100 0101 onClicked: { 0102 sheet.description = description 0103 sheet.url = url 0104 sheet.open(); 0105 } 0106 } 0107 } 0108 } 0109 MouseArea { 0110 id: mouseArea 0111 anchors.fill: parent 0112 property int startX 0113 preventStealing: true 0114 onPressed: { 0115 startX = mouse.x 0116 } 0117 onPositionChanged: { 0118 var change = false; 0119 0120 if (mouse.x - startX > Kirigami.Units.gridUnit) { 0121 startX = mouse.x; 0122 increment(); 0123 0124 } else if (mouse.x - startX < -Kirigami.Units.gridUnit) { 0125 startX = mouse.x; 0126 decrement(); 0127 } 0128 } 0129 } 0130 background: Item { 0131 visible: !root.isLast 0132 Kirigami.Separator { 0133 anchors { 0134 left: parent.left 0135 right: parent.right 0136 bottom: parent.bottom 0137 } 0138 } 0139 } 0140 }