Warning, /frameworks/knewstuff/src/qtquick/qml/private/Rating.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2012 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
0003
0004 SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.11
0008 import QtQuick.Layouts 1.11
0009 import QtQuick.Controls 2.11 as QtControls
0010
0011 import org.kde.kirigami 2.0 as Kirigami
0012
0013 RowLayout
0014 {
0015 id: view
0016 property bool editable: false
0017 property int max: 100
0018 property int rating: 0
0019 property real starSize: Kirigami.Units.gridUnit
0020 property bool reverseLayout: false
0021
0022 clip: true
0023 spacing: 0
0024
0025 readonly property var ratingIndex: Math.floor((theRepeater.count*view.rating)/view.max)
0026 readonly property var ratingHalf: (theRepeater.count*view.rating)%view.max >= view.max / 2
0027
0028 QtControls.Label {
0029 Layout.minimumWidth: view.starSize
0030 Layout.minimumHeight: view.starSize
0031 visible: view.reverseLayout
0032 text: ratingAsText.text
0033 }
0034 Item {
0035 visible: view.reverseLayout
0036 Layout.minimumHeight: view.starSize;
0037 Layout.minimumWidth: Kirigami.Units.smallSpacing;
0038 Layout.maximumWidth: Kirigami.Units.smallSpacing;
0039 }
0040 Repeater {
0041 id: theRepeater
0042 model: 5
0043 delegate: Kirigami.Icon {
0044 Layout.minimumWidth: view.starSize
0045 Layout.minimumHeight: view.starSize
0046 Layout.preferredWidth: view.starSize
0047 Layout.preferredHeight: view.starSize
0048
0049 source: index < view.ratingIndex
0050 ? "rating"
0051 : (view.ratingHalf && index == view.ratingIndex
0052 ? (view.LayoutMirroring.enabled ? "rating-half-rtl" : "rating-half")
0053 : "rating-unrated")
0054 opacity: (view.editable && mouse.item.containsMouse) ? 0.7 : 1
0055
0056 ConditionalLoader {
0057 id: mouse
0058
0059 anchors.fill: parent
0060 condition: view.editable
0061 componentTrue: MouseArea {
0062 hoverEnabled: true
0063 onClicked: rating = (max/theRepeater.model*(index+1))
0064 }
0065 componentFalse: null
0066 }
0067 }
0068 }
0069 Item {
0070 visible: !view.reverseLayout
0071 Layout.minimumHeight: view.starSize;
0072 Layout.minimumWidth: Kirigami.Units.smallSpacing;
0073 Layout.maximumWidth: Kirigami.Units.smallSpacing;
0074 }
0075 QtControls.Label {
0076 id: ratingAsText
0077 Layout.minimumWidth: view.starSize
0078 Layout.minimumHeight: view.starSize
0079 visible: !view.reverseLayout
0080 text: i18ndc("knewstuff6", "A text representation of the rating, shown as a fraction of the max value", "(%1/%2)", view.rating / 10, view.max / 10)
0081 }
0082 }