RinUI 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. RinUI/__init__.py +4 -4
  2. RinUI/assets/fonts/FluentSystemIcons-Index.js +5255 -5255
  3. RinUI/components/Base.qml +78 -78
  4. RinUI/components/BasicInput/Button.qml +146 -146
  5. RinUI/components/BasicInput/CheckBox.qml +98 -98
  6. RinUI/components/BasicInput/ComboBox.qml +159 -159
  7. RinUI/components/BasicInput/DropDownButton.qml +20 -20
  8. RinUI/components/BasicInput/Hyperlink.qml +17 -17
  9. RinUI/components/BasicInput/PillButton.qml +10 -10
  10. RinUI/components/BasicInput/RadioButton.qml +94 -94
  11. RinUI/components/BasicInput/RoundButton.qml +26 -26
  12. RinUI/components/BasicInput/Slider.qml +212 -212
  13. RinUI/components/BasicInput/Switch.qml +101 -101
  14. RinUI/components/BasicInput/ToggleButton.qml +10 -10
  15. RinUI/components/BasicInput/ToolButton.qml +30 -30
  16. RinUI/components/ContextMenu.qml +183 -183
  17. RinUI/components/DateAndTime/DatePicker.qml +142 -140
  18. RinUI/components/DateAndTime/PickerView.qml +223 -223
  19. RinUI/components/DateAndTime/TimePicker.qml +114 -114
  20. RinUI/components/DialogsAndFlyouts/Dialog.qml +106 -106
  21. RinUI/components/DialogsAndFlyouts/DialogButtonBox.qml +47 -47
  22. RinUI/components/DialogsAndFlyouts/Flyout.qml +87 -87
  23. RinUI/components/DialogsAndFlyouts/Popup.qml +110 -106
  24. RinUI/components/FocusIndicator.qml +33 -33
  25. RinUI/components/IconWidget.qml +52 -52
  26. RinUI/components/Indicator.qml +89 -89
  27. RinUI/components/Layout/Expander.qml +159 -159
  28. RinUI/components/Layout/SettingExpander.qml +66 -66
  29. RinUI/components/Layout/SettingItem.qml +70 -70
  30. RinUI/components/ListAndCollections/Clip.qml +21 -21
  31. RinUI/components/ListAndCollections/Frame.qml +43 -43
  32. RinUI/components/ListAndCollections/ListView.qml +104 -104
  33. RinUI/components/ListAndCollections/ListViewDelegate.qml +82 -82
  34. RinUI/components/ListAndCollections/SettingCard.qml +72 -72
  35. RinUI/components/ListAndCollections/TableView.qml +81 -81
  36. RinUI/components/ListAndCollections/TableViewDelegate.qml +88 -88
  37. RinUI/components/Media/Avatar.qml +82 -82
  38. RinUI/components/MenusAndToolbars/Menu.qml +150 -150
  39. RinUI/components/MenusAndToolbars/MenuBar.qml +42 -42
  40. RinUI/components/MenusAndToolbars/MenuItem.qml +131 -131
  41. RinUI/components/MenusAndToolbars/MenuItemGroup.qml +43 -43
  42. RinUI/components/MenusAndToolbars/MenuSeparator.qml +13 -13
  43. RinUI/components/MenusAndToolbars/TextInputMenu.qml +37 -37
  44. RinUI/components/MenusAndToolbars/ToolSeparator.qml +16 -16
  45. RinUI/components/Navigation/ErrorPage.qml +48 -48
  46. RinUI/components/Navigation/NavigationBar.qml +179 -179
  47. RinUI/components/Navigation/NavigationItem.qml +193 -193
  48. RinUI/components/Navigation/NavigationSubItem.qml +103 -103
  49. RinUI/components/Navigation/NavigationView.qml +228 -227
  50. RinUI/components/Navigation/Segmented.qml +16 -16
  51. RinUI/components/Navigation/SegmentedItem.qml +107 -107
  52. RinUI/components/Navigation/SelectorBar.qml +12 -12
  53. RinUI/components/Navigation/SelectorBarItem.qml +88 -88
  54. RinUI/components/ScrollBar.qml +204 -204
  55. RinUI/components/ScrollView.qml +12 -12
  56. RinUI/components/Shadow.qml +47 -47
  57. RinUI/components/StatusAndInfo/InfoBadge.qml +77 -77
  58. RinUI/components/StatusAndInfo/InfoBar.qml +256 -251
  59. RinUI/components/StatusAndInfo/ProgressBar.qml +126 -126
  60. RinUI/components/StatusAndInfo/ProgressRing.qml +149 -0
  61. RinUI/components/StatusAndInfo/Toast.qml +236 -236
  62. RinUI/components/StatusAndInfo/ToolTip.qml +93 -93
  63. RinUI/components/Text/SpinBox.qml +150 -133
  64. RinUI/components/Text/Text.qml +44 -44
  65. RinUI/components/Text/TextArea.qml +117 -117
  66. RinUI/components/Text/TextField.qml +113 -113
  67. RinUI/components/Text/TextInput.qml +47 -47
  68. RinUI/components/qmldir +80 -80
  69. RinUI/core/__init__.py +4 -4
  70. RinUI/core/config.py +129 -129
  71. RinUI/core/launcher.py +129 -129
  72. RinUI/core/theme.py +339 -339
  73. RinUI/core/translator.py +25 -25
  74. RinUI/hooks/__init__.py +3 -3
  75. RinUI/hooks/hook-RinUI.py +3 -3
  76. RinUI/qmldir +108 -104
  77. RinUI/themes/Appearance.qml +36 -0
  78. RinUI/themes/Colors.qml +36 -0
  79. RinUI/themes/dark.qml +145 -145
  80. RinUI/themes/light.qml +145 -145
  81. RinUI/themes/qmldir +9 -6
  82. RinUI/themes/theme.qml +151 -149
  83. RinUI/themes/utils.qml +37 -37
  84. RinUI/utils/Animation.qml +12 -12
  85. RinUI/utils/FloatLayer.qml +132 -123
  86. RinUI/utils/FontIconLoader.qml +13 -13
  87. RinUI/utils/Position.qml +19 -19
  88. RinUI/utils/Severity.qml +13 -13
  89. RinUI/utils/Typography.qml +17 -17
  90. RinUI/utils/qmldir +4 -4
  91. RinUI/windows/CtrlBtn.qml +118 -118
  92. RinUI/windows/FluentPage.qml +92 -92
  93. RinUI/windows/FluentWindow.qml +31 -30
  94. RinUI/windows/FluentWindowBase.qml +158 -158
  95. RinUI/windows/TitleBar.qml +135 -135
  96. RinUI/windows/qmldir +7 -7
  97. RinUI/windows/window/ApplicationWindow.qml +8 -8
  98. RinUI/windows/window/Window.qml +118 -118
  99. {rinui-0.1.0.data → rinui-0.1.1.data}/data/LICENSE +21 -21
  100. {rinui-0.1.0.data → rinui-0.1.1.data}/data/README.md +100 -100
  101. {rinui-0.1.0.dist-info → rinui-0.1.1.dist-info}/METADATA +116 -115
  102. rinui-0.1.1.dist-info/RECORD +112 -0
  103. {rinui-0.1.0.dist-info → rinui-0.1.1.dist-info}/WHEEL +1 -1
  104. {rinui-0.1.0.dist-info → rinui-0.1.1.dist-info/licenses}/LICENSE +21 -21
  105. RinUI/__pycache__/__init__.cpython-38.pyc +0 -0
  106. RinUI/config/rin_ui.json +0 -8
  107. RinUI/core/__pycache__/__init__.cpython-38.pyc +0 -0
  108. RinUI/core/__pycache__/config.cpython-38.pyc +0 -0
  109. RinUI/core/__pycache__/launcher.cpython-38.pyc +0 -0
  110. RinUI/core/__pycache__/theme.cpython-38.pyc +0 -0
  111. RinUI/core/__pycache__/translator.cpython-38.pyc +0 -0
  112. rinui-0.1.0.dist-info/RECORD +0 -116
  113. {rinui-0.1.0.dist-info → rinui-0.1.1.dist-info}/entry_points.txt +0 -0
  114. {rinui-0.1.0.dist-info → rinui-0.1.1.dist-info}/top_level.txt +0 -0
@@ -1,193 +1,193 @@
1
- import QtQuick 2.15
2
- import QtQuick.Controls 2.15
3
- import "../../themes"
4
- import "../../components"
5
-
6
- Item {
7
- id: navigationItems
8
- property var itemData
9
- readonly property bool subItem: itemData.subItems && itemData.subItems.length > 0
10
- property var currentPage
11
- property bool highlighted: String(navigationBar.currentPage) === String(itemData.page) || (collapsed && subItemHighlighted)
12
-
13
- property bool subItemHighlighted: {
14
- if (!subItem) return false;
15
- for (let i = 0; i < itemData.subItems.length; i++) {
16
- if (String(itemData.subItems[i].page) === String(navigationBar.currentPage)) {
17
- return true;
18
- }
19
- }
20
- return false;
21
- }
22
- property bool collapsed: true // 是否折叠
23
-
24
- height: 40 + (!collapsed && subItem ? subItemsColumn.height : 0)
25
- width: parent ? parent.width : 200
26
-
27
- Button {
28
- id: itemBtn
29
- // anchors.fill: parent
30
- width: parent.width
31
- height: 37
32
- anchors.topMargin: 2
33
- anchors.bottomMargin: 2
34
- clip: true
35
- flat: true
36
- accessibliityIndicator: false
37
- background.opacity: navigationItems.highlighted ? 1 : hovered ? 1 : 0
38
-
39
- // accessibility
40
- FocusIndicator {
41
- control: parent
42
- anchors.margins: 2
43
- }
44
-
45
- Row {
46
- id: left
47
- spacing: 16
48
- anchors.left: parent.left
49
- anchors.verticalCenter: parent.verticalCenter
50
- anchors.leftMargin: 11
51
- anchors.topMargin: 6
52
- anchors.bottomMargin: 8
53
-
54
- IconWidget {
55
- id: icon
56
- anchors.verticalCenter: parent.verticalCenter
57
- size: itemData.icon || itemData.source ? 19 : 0
58
- icon: itemData.icon || ""
59
- source: itemData.source || ""
60
- }
61
-
62
- Text {
63
- id: text
64
- anchors.verticalCenter: parent.verticalCenter
65
- typography: Typography.Body
66
- text: itemData.title
67
- clip: true
68
- opacity: navigationBar.collapsed ? 0 : 1
69
- wrapMode: Text.NoWrap
70
- horizontalAlignment: Text.AlignLeft
71
-
72
- Behavior on x {
73
- NumberAnimation {
74
- duration: Utils.appearanceSpeed
75
- easing.type: Easing.InOutQuint
76
- }
77
- }
78
-
79
- Behavior on opacity {
80
- NumberAnimation {
81
- duration: Utils.appearanceSpeed
82
- }
83
- }
84
- }
85
- }
86
-
87
- // 提示
88
- ToolTip {
89
- visible: navigationBar.collapsed && itemBtn.hovered
90
- delay: 500
91
- text: itemData.title
92
- }
93
-
94
- Indicator {
95
- id: indicator
96
- y: (itemBtn.height + 3) / 2 - indicator.height / 2 - 2
97
- currentItemHeight: itemBtn.height + 3
98
- visible: highlighted ? 1 : 0
99
- width: 3
100
- }
101
-
102
- // 展开按钮
103
- ToolButton {
104
- id: expandBtn
105
- focusPolicy: Qt.NoFocus
106
- anchors.right: parent.right
107
- anchors.verticalCenter: parent.verticalCenter
108
- width: parent.height
109
- height: parent.height
110
- hoverable: false
111
- size: 14
112
- icon.name: "ic_fluent_chevron_down_20_filled"
113
- accessibliityIndicator: false
114
-
115
- FocusIndicator {
116
- control: parent
117
- anchors.margins: 2
118
- }
119
-
120
- transform: Rotation {
121
- angle: collapsed ? 0 : 180 ; origin.x: 37/2; origin.y: 37/2
122
- Behavior on angle { NumberAnimation { duration: Utils.animationSpeed; easing.type: Easing.OutQuint } }
123
- }
124
-
125
- visible: subItem && !navigationBar.collapsed
126
- opacity: 0.7
127
-
128
- onClicked: { collapsed = !collapsed }
129
- }
130
-
131
- onClicked: {
132
- if (subItem) {
133
- if (!navigationBar.collapsed) {
134
- collapsed = !collapsed
135
- } else {
136
- subMenu.open()
137
- }
138
- }
139
- if (itemData.page && currentPage && !navigationItems.highlighted) {
140
- // 记录上一次的索引
141
- navigationView.safePush(itemData.page, true)
142
- }
143
- }
144
- }
145
-
146
- // 动画 / Animation //
147
- Behavior on height { NumberAnimation { duration: Utils.animationSpeed; easing.type: Easing.OutQuint } }
148
-
149
- // 折叠菜单
150
- Menu {
151
- id: subMenu
152
- position: Position.Right
153
- Repeater {
154
- id: subMenuRepeater
155
- model: itemData.subItems
156
- delegate: MenuItem {
157
- text: modelData.title
158
- onClicked: {
159
- if (modelData.page && navigationItems.currentPage) {
160
- navigationView.safePush(modelData.page)
161
- }
162
- }
163
- }
164
- }
165
- }
166
-
167
- // 递归处理子项
168
- Column {
169
- id: subItemsColumn
170
- opacity: !collapsed && subItem
171
- spacing: 2
172
- anchors.top: itemBtn.bottom
173
- width: parent.width
174
- anchors.topMargin: 1
175
- anchors.leftMargin: 16
176
- Behavior on opacity { NumberAnimation { duration: Utils.animationSpeed; easing.type: Easing.OutQuint } }
177
-
178
- Repeater {
179
- id: subItemsRepeater
180
- model: itemData.subItems
181
- delegate: NavigationSubItem {
182
- id: subItems
183
- itemData: modelData
184
- currentPage: navigationItems.currentPage
185
- }
186
- }
187
-
188
- Item {
189
- width: parent.width
190
- height: 1
191
- }
192
- }
193
- }
1
+ import QtQuick 2.15
2
+ import QtQuick.Controls 2.15
3
+ import "../../themes"
4
+ import "../../components"
5
+
6
+ Item {
7
+ id: navigationItems
8
+ property var itemData
9
+ readonly property bool subItem: itemData.subItems && itemData.subItems.length > 0
10
+ property var currentPage
11
+ property bool highlighted: String(navigationBar.currentPage) === String(itemData.page) || (collapsed && subItemHighlighted)
12
+
13
+ property bool subItemHighlighted: {
14
+ if (!subItem) return false;
15
+ for (let i = 0; i < itemData.subItems.length; i++) {
16
+ if (String(itemData.subItems[i].page) === String(navigationBar.currentPage)) {
17
+ return true;
18
+ }
19
+ }
20
+ return false;
21
+ }
22
+ property bool collapsed: true // 是否折叠
23
+
24
+ height: 40 + (!collapsed && subItem ? subItemsColumn.height : 0)
25
+ width: parent ? parent.width : 200
26
+
27
+ Button {
28
+ id: itemBtn
29
+ // anchors.fill: parent
30
+ width: parent.width
31
+ height: 37
32
+ anchors.topMargin: 2
33
+ anchors.bottomMargin: 2
34
+ clip: true
35
+ flat: true
36
+ accessibliityIndicator: false
37
+ background.opacity: navigationItems.highlighted ? 1 : hovered ? 1 : 0
38
+
39
+ // accessibility
40
+ FocusIndicator {
41
+ control: parent
42
+ anchors.margins: 2
43
+ }
44
+
45
+ Row {
46
+ id: left
47
+ spacing: 16
48
+ anchors.left: parent.left
49
+ anchors.verticalCenter: parent.verticalCenter
50
+ anchors.leftMargin: 11
51
+ anchors.topMargin: 6
52
+ anchors.bottomMargin: 8
53
+
54
+ IconWidget {
55
+ id: icon
56
+ anchors.verticalCenter: parent.verticalCenter
57
+ size: itemData.icon || itemData.source ? 19 : 0
58
+ icon: itemData.icon || ""
59
+ source: itemData.source || ""
60
+ }
61
+
62
+ Text {
63
+ id: text
64
+ anchors.verticalCenter: parent.verticalCenter
65
+ typography: Typography.Body
66
+ text: itemData.title
67
+ clip: true
68
+ opacity: navigationBar.collapsed ? 0 : 1
69
+ wrapMode: Text.NoWrap
70
+ horizontalAlignment: Text.AlignLeft
71
+
72
+ Behavior on x {
73
+ NumberAnimation {
74
+ duration: Utils.appearanceSpeed
75
+ easing.type: Easing.InOutQuint
76
+ }
77
+ }
78
+
79
+ Behavior on opacity {
80
+ NumberAnimation {
81
+ duration: Utils.appearanceSpeed
82
+ }
83
+ }
84
+ }
85
+ }
86
+
87
+ // 提示
88
+ ToolTip {
89
+ visible: navigationBar.collapsed && itemBtn.hovered
90
+ delay: 500
91
+ text: itemData.title
92
+ }
93
+
94
+ Indicator {
95
+ id: indicator
96
+ y: (itemBtn.height + 3) / 2 - indicator.height / 2 - 2
97
+ currentItemHeight: itemBtn.height + 3
98
+ visible: highlighted ? 1 : 0
99
+ width: 3
100
+ }
101
+
102
+ // 展开按钮
103
+ ToolButton {
104
+ id: expandBtn
105
+ focusPolicy: Qt.NoFocus
106
+ anchors.right: parent.right
107
+ anchors.verticalCenter: parent.verticalCenter
108
+ width: parent.height
109
+ height: parent.height
110
+ hoverable: false
111
+ size: 14
112
+ icon.name: "ic_fluent_chevron_down_20_filled"
113
+ accessibliityIndicator: false
114
+
115
+ FocusIndicator {
116
+ control: parent
117
+ anchors.margins: 2
118
+ }
119
+
120
+ transform: Rotation {
121
+ angle: collapsed ? 0 : 180 ; origin.x: 37/2; origin.y: 37/2
122
+ Behavior on angle { NumberAnimation { duration: Utils.animationSpeed; easing.type: Easing.OutQuint } }
123
+ }
124
+
125
+ visible: subItem && !navigationBar.collapsed
126
+ opacity: 0.7
127
+
128
+ onClicked: { collapsed = !collapsed }
129
+ }
130
+
131
+ onClicked: {
132
+ if (subItem) {
133
+ if (!navigationBar.collapsed) {
134
+ collapsed = !collapsed
135
+ } else {
136
+ subMenu.open()
137
+ }
138
+ }
139
+ if (itemData.page && currentPage && !navigationItems.highlighted) {
140
+ // 记录上一次的索引
141
+ navigationView.safePush(itemData.page, true)
142
+ }
143
+ }
144
+ }
145
+
146
+ // 动画 / Animation //
147
+ Behavior on height { NumberAnimation { duration: Utils.animationSpeed; easing.type: Easing.OutQuint } }
148
+
149
+ // 折叠菜单
150
+ Menu {
151
+ id: subMenu
152
+ position: Position.Right
153
+ Repeater {
154
+ id: subMenuRepeater
155
+ model: itemData.subItems
156
+ delegate: MenuItem {
157
+ text: modelData.title
158
+ onClicked: {
159
+ if (modelData.page && navigationItems.currentPage) {
160
+ navigationView.safePush(modelData.page)
161
+ }
162
+ }
163
+ }
164
+ }
165
+ }
166
+
167
+ // 递归处理子项
168
+ Column {
169
+ id: subItemsColumn
170
+ opacity: !collapsed && subItem
171
+ spacing: 2
172
+ anchors.top: itemBtn.bottom
173
+ width: parent.width
174
+ anchors.topMargin: 1
175
+ anchors.leftMargin: 16
176
+ Behavior on opacity { NumberAnimation { duration: Utils.animationSpeed; easing.type: Easing.OutQuint } }
177
+
178
+ Repeater {
179
+ id: subItemsRepeater
180
+ model: itemData.subItems
181
+ delegate: NavigationSubItem {
182
+ id: subItems
183
+ itemData: modelData
184
+ currentPage: navigationItems.currentPage
185
+ }
186
+ }
187
+
188
+ Item {
189
+ width: parent.width
190
+ height: 1
191
+ }
192
+ }
193
+ }
@@ -1,103 +1,103 @@
1
- import QtQuick 2.15
2
- import QtQuick.Controls 2.15
3
- import "../../themes"
4
- import "../../components"
5
-
6
-
7
- ItemDelegate {
8
- id: root
9
- property var itemData
10
- property int parentIndex: -1
11
- property var currentPage
12
- highlighted: String(navigationBar.currentPage) === String(itemData.page)
13
-
14
- height: 40
15
-
16
- focusPolicy: collapsed ? Qt.NoFocus : Qt.StrongFocus // to get keyboard focus
17
-
18
- // accessibility
19
- FocusIndicator {
20
- control: parent
21
- anchors.margins: 2
22
- }
23
-
24
- width: parent ? parent.width : 200
25
-
26
- background: Rectangle {
27
- id: itemBg
28
- anchors.fill: parent
29
- anchors.topMargin: 2
30
- anchors.bottomMargin: 2
31
- clip: true
32
- radius: Theme.currentTheme.appearance.buttonRadius / 2
33
- color: pressed
34
- ? Theme.currentTheme.colors.subtleTertiaryColor
35
- : (root.highlighted || root.hovered)
36
- ? Theme.currentTheme.colors.subtleSecondaryColor
37
- : Theme.currentTheme.colors.subtleColor
38
-
39
- Row {
40
- id: left
41
- spacing: 16
42
- anchors.left: parent.left
43
- anchors.verticalCenter: parent.verticalCenter
44
- anchors.leftMargin: 11 + 34
45
- anchors.topMargin: 6
46
- anchors.bottomMargin: 8
47
-
48
- IconWidget {
49
- id: icon
50
- anchors.verticalCenter: parent.verticalCenter
51
- size: itemData.icon || itemData.source ? 19 : 0
52
- icon: itemData.icon || ""
53
- source: itemData.source || ""
54
- }
55
-
56
- Text {
57
- id: text
58
- anchors.verticalCenter: parent.verticalCenter
59
- typography: Typography.Body
60
- text: itemData.title
61
- clip: true
62
- opacity: navigationBar.collapsed ? 0 : 1
63
- wrapMode: Text.NoWrap
64
- horizontalAlignment: Text.AlignLeft
65
-
66
- Behavior on x {
67
- NumberAnimation {
68
- duration: Utils.appearanceSpeed
69
- easing.type: Easing.InOutQuint
70
- }
71
- }
72
-
73
- Behavior on opacity {
74
- NumberAnimation {
75
- duration: Utils.appearanceSpeed
76
- }
77
- }
78
- }
79
- }
80
-
81
- Indicator {
82
- id: indicator
83
- y: root.height / 2 - indicator.height / 2 -2
84
- currentItemHeight: root.height
85
- visible: highlighted ? 1 : 0
86
- width: 3
87
- }
88
-
89
- Behavior on color {
90
- ColorAnimation {
91
- duration: Utils.appearanceSpeed
92
- easing.type: Easing.InOutQuart
93
- }
94
- }
95
- }
96
-
97
- onClicked: {
98
- if (itemData.page && currentPage && !root.highlighted && !collapsed) {
99
- // 记录上一次的索引
100
- navigationView.safePush(itemData.page)
101
- }
102
- }
103
- }
1
+ import QtQuick 2.15
2
+ import QtQuick.Controls 2.15
3
+ import "../../themes"
4
+ import "../../components"
5
+
6
+
7
+ ItemDelegate {
8
+ id: root
9
+ property var itemData
10
+ property int parentIndex: -1
11
+ property var currentPage
12
+ highlighted: String(navigationBar.currentPage) === String(itemData.page)
13
+
14
+ height: 40
15
+
16
+ focusPolicy: collapsed ? Qt.NoFocus : Qt.StrongFocus // to get keyboard focus
17
+
18
+ // accessibility
19
+ FocusIndicator {
20
+ control: parent
21
+ anchors.margins: 2
22
+ }
23
+
24
+ width: parent ? parent.width : 200
25
+
26
+ background: Rectangle {
27
+ id: itemBg
28
+ anchors.fill: parent
29
+ anchors.topMargin: 2
30
+ anchors.bottomMargin: 2
31
+ clip: true
32
+ radius: Theme.currentTheme.appearance.buttonRadius / 2
33
+ color: pressed
34
+ ? Theme.currentTheme.colors.subtleTertiaryColor
35
+ : (root.highlighted || root.hovered)
36
+ ? Theme.currentTheme.colors.subtleSecondaryColor
37
+ : Theme.currentTheme.colors.subtleColor
38
+
39
+ Row {
40
+ id: left
41
+ spacing: 16
42
+ anchors.left: parent.left
43
+ anchors.verticalCenter: parent.verticalCenter
44
+ anchors.leftMargin: 11 + 34
45
+ anchors.topMargin: 6
46
+ anchors.bottomMargin: 8
47
+
48
+ IconWidget {
49
+ id: icon
50
+ anchors.verticalCenter: parent.verticalCenter
51
+ size: itemData.icon || itemData.source ? 19 : 0
52
+ icon: itemData.icon || ""
53
+ source: itemData.source || ""
54
+ }
55
+
56
+ Text {
57
+ id: text
58
+ anchors.verticalCenter: parent.verticalCenter
59
+ typography: Typography.Body
60
+ text: itemData.title
61
+ clip: true
62
+ opacity: navigationBar.collapsed ? 0 : 1
63
+ wrapMode: Text.NoWrap
64
+ horizontalAlignment: Text.AlignLeft
65
+
66
+ Behavior on x {
67
+ NumberAnimation {
68
+ duration: Utils.appearanceSpeed
69
+ easing.type: Easing.InOutQuint
70
+ }
71
+ }
72
+
73
+ Behavior on opacity {
74
+ NumberAnimation {
75
+ duration: Utils.appearanceSpeed
76
+ }
77
+ }
78
+ }
79
+ }
80
+
81
+ Indicator {
82
+ id: indicator
83
+ y: root.height / 2 - indicator.height / 2 -2
84
+ currentItemHeight: root.height
85
+ visible: highlighted ? 1 : 0
86
+ width: 3
87
+ }
88
+
89
+ Behavior on color {
90
+ ColorAnimation {
91
+ duration: Utils.appearanceSpeed
92
+ easing.type: Easing.InOutQuart
93
+ }
94
+ }
95
+ }
96
+
97
+ onClicked: {
98
+ if (itemData.page && currentPage && !root.highlighted && !collapsed) {
99
+ // 记录上一次的索引
100
+ navigationView.safePush(itemData.page)
101
+ }
102
+ }
103
+ }