├── README.md
├── SmartHouse.pro
├── SmartHouse.pro.user
├── component
├── XConfigItemDelegate.qml
├── XControlBtn.qml
├── XControlListView.qml
├── XLabel.qml
├── XMainDrawerItem.qml
├── XMainTabBtn.qml
├── XNormalText.qml
├── XPage.qml
├── XPromptBox.qml
├── XSubmitBtn.qml
├── XSwitchBtn.qml
├── XToolBar.qml
└── XTopRect.qml
├── imgs
├── bg
│ ├── blue.jpg
│ ├── darkblue.jpg
│ ├── login.jpg
│ └── userinfo.png
├── btn
│ ├── Control_button_01.png
│ ├── Control_button_02.png
│ ├── Control_button_03.png
│ ├── Control_button_04.png
│ ├── Control_button_05.png
│ ├── Control_button_06.png
│ ├── Control_button_07.png
│ ├── Control_button_08.png
│ ├── Control_button_09.png
│ ├── add.png
│ ├── choose.png
│ ├── main_bottom_btn1.png
│ ├── main_bottom_btn2.png
│ ├── main_bottom_btn3.png
│ ├── main_bottom_btn4.png
│ ├── menu.png
│ ├── power_off.png
│ ├── power_on.png
│ └── sub.png
├── icon
│ ├── account.png
│ ├── aircondition_big.png
│ ├── aircondition_small.png
│ ├── cold.png
│ ├── hot.png
│ ├── light_big.png
│ ├── light_small.png
│ ├── logo.png
│ ├── main
│ │ ├── alarm.png
│ │ ├── master.png
│ │ ├── music.png
│ │ ├── pos.png
│ │ ├── sys.png
│ │ └── time.png
│ ├── mode
│ │ ├── GamePad.png
│ │ ├── add.png
│ │ ├── bag.png
│ │ ├── cake.png
│ │ ├── chat.png
│ │ ├── choose.png
│ │ ├── clock.png
│ │ ├── coffice.png
│ │ ├── dvd.png
│ │ ├── juice.png
│ │ ├── light_off.png
│ │ ├── light_on.png
│ │ ├── moon.png
│ │ ├── news.png
│ │ ├── rain.png
│ │ ├── snow.png
│ │ ├── sofa.png
│ │ ├── sun.png
│ │ ├── turkey.png
│ │ ├── tv.png
│ │ ├── vedio.png
│ │ └── wine.png
│ ├── no.png
│ ├── ok.png
│ ├── password.png
│ ├── time.png
│ ├── user2.png
│ ├── warn.png
│ ├── warn
│ │ ├── door.png
│ │ ├── fire.png
│ │ ├── man.png
│ │ └── smoke.png
│ ├── wind_big.png
│ ├── wind_mid.png
│ └── wind_small.png
└── other
│ ├── circle_big.png
│ ├── circle_small.png
│ ├── circle_top.png
│ ├── navigation_next_item.png
│ ├── navigation_previous_item.png
│ └── next.png
├── main.cpp
├── main.qml
├── pages
├── Page_AirconditionChoose.qml
├── Page_Airconditon.qml
├── Page_Alarm.qml
├── Page_Control.qml
├── Page_LightChoose.qml
├── Page_Login.qml
├── Page_Main.qml
├── Page_MainDrawer.qml
├── Page_Mode.qml
├── Page_Register.qml
└── Page_UserInfo.qml
├── pages_preview
├── AIRCONDITION.png
├── AIRCONDITION_CHOOSE.png.png
├── ALARM.png
├── CONTROL.png
├── LIGHT_CHOOSE.png
├── LOGIN.png
├── MAIN.png
├── MAIN_DRAWER.png
├── MODE.png
├── REG.png
└── USER_INFO.png
└── qml.qrc
/README.md:
--------------------------------------------------------------------------------
1 | # SmartHouse
2 | QML SmartHouse UI (QML智能家居UI)
3 |
4 | ## pages(界面预览)
5 |
6 | 
7 | login page(登陆界面)
8 |
9 | 
10 | login page(注册界面)
11 |
12 | 
13 | main page(主页)
14 |
15 | 
16 | control page(控制界面)
17 |
18 | 
19 | airconditionChoose page(空调选择)
20 |
21 | 
22 | aircondition page(空调界面)
23 |
24 | 
25 | lightChoose page(灯光选择)
26 |
27 | 
28 | mode page(场景模式)
29 |
30 | 
31 | alarm page(报警页面)
32 |
33 | 
34 | main drawer page(主面侧栏)
35 |
36 | 
37 | userinfo page(主面侧栏)
38 |
39 |
--------------------------------------------------------------------------------
/SmartHouse.pro:
--------------------------------------------------------------------------------
1 | QT += quick
2 | CONFIG += c++11
3 |
4 | # The following define makes your compiler emit warnings if you use
5 | # any feature of Qt which as been marked deprecated (the exact warnings
6 | # depend on your compiler). Please consult the documentation of the
7 | # deprecated API in order to know how to port your code away from it.
8 | DEFINES += QT_DEPRECATED_WARNINGS
9 |
10 | # You can also make your code fail to compile if you use deprecated APIs.
11 | # In order to do so, uncomment the following line.
12 | # You can also select to disable deprecated APIs only up to a certain version of Qt.
13 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
14 |
15 | SOURCES += main.cpp
16 |
17 | RESOURCES += qml.qrc
18 |
19 | # Additional import path used to resolve QML modules in Qt Creator's code model
20 | QML_IMPORT_PATH =
21 |
22 | # Additional import path used to resolve QML modules just for Qt Quick Designer
23 | QML_DESIGNER_IMPORT_PATH =
24 |
25 | # Default rules for deployment.
26 | qnx: target.path = /tmp/$${TARGET}/bin
27 | else: unix:!android: target.path = /opt/$${TARGET}/bin
28 | !isEmpty(target.path): INSTALLS += target
29 |
--------------------------------------------------------------------------------
/SmartHouse.pro.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | EnvironmentId
7 | {3d7bc731-8123-4e5d-9b62-49af871ea687}
8 |
9 |
10 | ProjectExplorer.Project.ActiveTarget
11 | 0
12 |
13 |
14 | ProjectExplorer.Project.EditorSettings
15 |
16 | true
17 | false
18 | true
19 |
20 | Cpp
21 |
22 | CppGlobal
23 |
24 |
25 |
26 | QmlJS
27 |
28 | QmlJSGlobal
29 |
30 |
31 | 2
32 | UTF-8
33 | false
34 | 4
35 | false
36 | 80
37 | true
38 | true
39 | 1
40 | true
41 | false
42 | 0
43 | true
44 | true
45 | 0
46 | 8
47 | true
48 | 1
49 | true
50 | true
51 | true
52 | false
53 |
54 |
55 |
56 | ProjectExplorer.Project.PluginSettings
57 |
58 |
59 | -fno-delayed-template-parsing
60 |
61 | true
62 |
63 |
64 |
65 | ProjectExplorer.Project.Target.0
66 |
67 | Desktop Qt 5.12.0 MSVC2017 32bit
68 | Desktop Qt 5.12.0 MSVC2017 32bit
69 | qt.qt5.5120.win32_msvc2017_kit
70 | 0
71 | 0
72 | 0
73 |
74 | D:/github/build-SmartHouse-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug
75 |
76 |
77 | true
78 | qmake
79 |
80 | QtProjectManager.QMakeBuildStep
81 | true
82 |
83 | false
84 | false
85 | false
86 |
87 |
88 | true
89 | Make
90 |
91 | Qt4ProjectManager.MakeStep
92 |
93 | false
94 |
95 |
96 | false
97 |
98 | 2
99 | Build
100 |
101 | ProjectExplorer.BuildSteps.Build
102 |
103 |
104 |
105 | true
106 | Make
107 |
108 | Qt4ProjectManager.MakeStep
109 |
110 | true
111 | clean
112 |
113 | false
114 |
115 | 1
116 | Clean
117 |
118 | ProjectExplorer.BuildSteps.Clean
119 |
120 | 2
121 | false
122 |
123 | Debug
124 | Debug
125 | Qt4ProjectManager.Qt4BuildConfiguration
126 | 2
127 | true
128 |
129 |
130 | D:/github/build-SmartHouse-Desktop_Qt_5_12_0_MSVC2017_32bit-Release
131 |
132 |
133 | true
134 | qmake
135 |
136 | QtProjectManager.QMakeBuildStep
137 | false
138 |
139 | false
140 | false
141 | true
142 |
143 |
144 | true
145 | Make
146 |
147 | Qt4ProjectManager.MakeStep
148 |
149 | false
150 |
151 |
152 | false
153 |
154 | 2
155 | Build
156 |
157 | ProjectExplorer.BuildSteps.Build
158 |
159 |
160 |
161 | true
162 | Make
163 |
164 | Qt4ProjectManager.MakeStep
165 |
166 | true
167 | clean
168 |
169 | false
170 |
171 | 1
172 | Clean
173 |
174 | ProjectExplorer.BuildSteps.Clean
175 |
176 | 2
177 | false
178 |
179 | Release
180 | Release
181 | Qt4ProjectManager.Qt4BuildConfiguration
182 | 0
183 | true
184 |
185 |
186 | D:/github/build-SmartHouse-Desktop_Qt_5_12_0_MSVC2017_32bit-Profile
187 |
188 |
189 | true
190 | qmake
191 |
192 | QtProjectManager.QMakeBuildStep
193 | true
194 |
195 | false
196 | true
197 | true
198 |
199 |
200 | true
201 | Make
202 |
203 | Qt4ProjectManager.MakeStep
204 |
205 | false
206 |
207 |
208 | false
209 |
210 | 2
211 | Build
212 |
213 | ProjectExplorer.BuildSteps.Build
214 |
215 |
216 |
217 | true
218 | Make
219 |
220 | Qt4ProjectManager.MakeStep
221 |
222 | true
223 | clean
224 |
225 | false
226 |
227 | 1
228 | Clean
229 |
230 | ProjectExplorer.BuildSteps.Clean
231 |
232 | 2
233 | false
234 |
235 | Profile
236 | Profile
237 | Qt4ProjectManager.Qt4BuildConfiguration
238 | 0
239 | true
240 |
241 | 3
242 |
243 |
244 | 0
245 | 部署
246 |
247 | ProjectExplorer.BuildSteps.Deploy
248 |
249 | 1
250 | Deploy Configuration
251 |
252 | ProjectExplorer.DefaultDeployConfiguration
253 |
254 | 1
255 |
256 |
257 | false
258 | false
259 | 1000
260 |
261 | true
262 |
263 | false
264 | false
265 | false
266 | false
267 | true
268 | 0.01
269 | 10
270 | true
271 | 1
272 | 25
273 |
274 | 1
275 | true
276 | false
277 | true
278 | valgrind
279 |
280 | 0
281 | 1
282 | 2
283 | 3
284 | 4
285 | 5
286 | 6
287 | 7
288 | 8
289 | 9
290 | 10
291 | 11
292 | 12
293 | 13
294 | 14
295 |
296 | 2
297 |
298 | SmartHouse
299 |
300 | Qt4ProjectManager.Qt4RunConfiguration:D:/github/SmartHouse/SmartHouse.pro
301 | SmartHouse.pro
302 |
303 | 3768
304 | false
305 | true
306 | true
307 | false
308 | false
309 | true
310 |
311 | D:/github/build-SmartHouse-Desktop_Qt_5_12_0_MSVC2017_32bit-Debug
312 |
313 | 1
314 |
315 |
316 |
317 | ProjectExplorer.Project.TargetCount
318 | 1
319 |
320 |
321 | ProjectExplorer.Project.Updater.FileVersion
322 | 20
323 |
324 |
325 | Version
326 | 20
327 |
328 |
329 |
--------------------------------------------------------------------------------
/component/XConfigItemDelegate.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 2.5
3 | import QtQuick.Layouts 1.3
4 | ItemDelegate {
5 | width: parent.width;
6 | height: dpH(50);
7 | property string strKey: "";
8 | property string strValue: "";
9 | property bool showTopLine: false;
10 | Column{
11 | width: parent.width;
12 | height: parent.height;
13 | Rectangle{
14 | visible: showTopLine;
15 | width: parent.width;
16 | height: dpH(1);
17 | color: "#aacdcdcd";
18 | }
19 | RowLayout{
20 | width: parent.width;
21 | height: parent.height;
22 | XNormalText {
23 | Layout.alignment: Qt.AlignLeft;
24 | Layout.leftMargin: dpW(20);
25 | Layout.preferredWidth: dpW(100);
26 | text: strKey;
27 | color: "black";
28 | font.family: "Verdana";
29 | font.pixelSize: dpX(16);
30 | }
31 | XNormalText {
32 | Layout.alignment: Qt.AlignRight;
33 | text: strValue;
34 | font.family: "Verdana";
35 | font.pixelSize: dpX(14);
36 | }
37 | Image {
38 | Layout.alignment: parent.verticalCenter | Qt.AlignRight;
39 | Layout.rightMargin: dpW(10);
40 | Layout.preferredWidth: dpW(25);
41 | Layout.preferredHeight: dpH(25);
42 | source: "qrc:/imgs/other/next.png"
43 | }
44 | }
45 | Rectangle{
46 | width: parent.width;
47 | height: dpH(1);
48 | color: "#aacdcdcd";
49 | }
50 | }
51 | background : Rectangle{
52 | color: parent.pressed ? "#aaa5c2fd" : Qt.rgba(0,0,0,0);
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/component/XControlBtn.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 1.4
3 | import QtQuick.Controls.Styles 1.4
4 |
5 | Button{
6 | property url imgPath: "";
7 | property string btnText: "";
8 | width: dpW(109);
9 | height: dpH(121);
10 | Image{
11 | anchors.fill: parent;
12 | source: imgPath;
13 | }
14 | style: ButtonStyle{
15 | background: Rectangle{
16 | color: Qt.rgba(0,0,0,0);
17 | border.color: Qt.rgba(255,255,255,0.1);
18 | border.width: dpX(1);
19 | radius: dpX(2);
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/component/XControlListView.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | ListView{
3 | property double iconScale: 1;
4 | function addDevice(dID, dText, dState, dImgPath)
5 | {
6 | listModel.append({
7 | deviceText: dText,
8 | deviceState: dState,
9 | deviceID: dID,
10 | deviceImg: dImgPath
11 | })
12 | }
13 |
14 | model: ListModel{
15 | id: listModel;
16 | }
17 | delegate: Component{
18 | Item {
19 | width: parent.width
20 | height: dpH(65);
21 |
22 | MouseArea{
23 | anchors.fill: parent;
24 | onClicked: {
25 | stackViewPush("qrc:/pages/Page_Airconditon.qml");
26 | }
27 | }
28 | XNormalText{
29 | visible: false;
30 | text: deviceID;
31 | }
32 | XNormalText {
33 | anchors.centerIn: parent.Center;
34 | anchors.left: parent.left;
35 | anchors.leftMargin: dpW(100);
36 | verticalAlignment: Text.AlignVCenter;
37 | width: dpW(50);
38 | height: parent.height;
39 | font.pixelSize: dpX(15);
40 | text: deviceText;
41 | }
42 | XSwitchBtn{
43 | id: switchBtn;
44 | checked: deviceState;
45 | anchors.right: parent.right;
46 | anchors.rightMargin: dpW(20);
47 | anchors.verticalCenter: parent.verticalCenter;
48 | }
49 | Rectangle{
50 | id:deviceImgRect;
51 | anchors.verticalCenter: parent.verticalCenter;
52 | anchors.left: parent.left;
53 | anchors.leftMargin: dpW(20);
54 | width: dpW(50);
55 | height: dpH(50);
56 | radius: 100;
57 | Behavior on color {ColorAnimation {}}
58 | color: switchBtn.checked ? "#4cd964":"#c8cacc";
59 | Image {
60 | anchors.fill: parent;
61 | source: deviceImg;
62 | scale: iconScale;
63 | }
64 | }
65 | Rectangle{
66 | id:line;
67 | color: "#e6e6e6";
68 | width: parent.width - deviceImgRect.x - deviceImgRect.width;
69 | height: dpH(1);
70 | anchors.bottom: parent.bottom;
71 | anchors.right: parent.right;
72 | }
73 | }
74 | }
75 | }
76 |
77 |
--------------------------------------------------------------------------------
/component/XLabel.qml:
--------------------------------------------------------------------------------
1 | import QtQuick.Controls 2.5
2 | import QtQuick 2.5
3 | Label {
4 | font.family: "黑体";
5 | font.pixelSize: dpX(14);
6 | color:"#808080";
7 | background: Rectangle{
8 | color: Qt.rgba(0,0,0,0);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/component/XMainDrawerItem.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 2.5
3 | import QtQuick.Layouts 1.3
4 | ItemDelegate {
5 | width: parent.width;
6 | height: dpH(40);
7 | property url iconImg: "";
8 | property string strKey: "";
9 | property string strValue: "";
10 | RowLayout{
11 | width: parent.width;
12 | height: parent.height;
13 | Image {
14 | Layout.leftMargin: dpW(10);
15 | Layout.preferredWidth: dpW(25); Layout.preferredHeight: dpH(25);
16 | source: iconImg;
17 | }
18 | XNormalText {
19 | Layout.alignment: Qt.AlignLeft;
20 | Layout.leftMargin: dpW(10);
21 | Layout.preferredWidth: dpW(100);
22 | text: strKey;
23 | color: "white";
24 |
25 | }
26 | XNormalText {
27 | Layout.rightMargin: dpW(10);
28 | Layout.alignment: Qt.AlignLeft;
29 | Layout.preferredWidth: dpW(100);
30 | text: strValue;
31 | color: "#00ffd4";
32 | }
33 | }
34 |
35 | background : Rectangle{
36 |
37 | color: parent.pressed ? Qt.rgba(0,0,0,0.2) : Qt.rgba(0,0,0,0);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/component/XMainTabBtn.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 2.0
3 | TabButton {
4 | property url imgPath: "";
5 | property string btnText: "";
6 | background: Rectangle{
7 | id:tabBtnBg;
8 | Image{
9 | anchors.fill: parent;
10 | source: imgPath;
11 | }
12 | XNormalText{
13 | anchors.bottom: parent.bottom;
14 | anchors.bottomMargin: dpH(15);
15 | anchors.horizontalCenter: parent.horizontalCenter;
16 | text: btnText;
17 | }
18 | anchors.fill: parent;
19 | color: parent.pressed? "#09c4e8": "white";
20 |
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/component/XNormalText.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 |
3 | Text {
4 | font.family: "黑体";
5 | font.pixelSize: dpX(14);
6 | color:"#808080";
7 | }
8 |
--------------------------------------------------------------------------------
/component/XPage.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 2.5
3 | Page {
4 | property string color: "#049eff";
5 | property bool showToolBtn : false;
6 | }
7 |
--------------------------------------------------------------------------------
/component/XPromptBox.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 |
3 | Rectangle{
4 | property string msgText: "";
5 | property int waitTime: 0;
6 | property string msgColor: "black";
7 | id:msg_rect;
8 | radius: dpX(20);
9 | z: 5;
10 | width: dpW(200);
11 | height: dpH(30);
12 | color:msgColor;
13 | opacity:0;
14 | anchors.centerIn: parent;
15 | XNormalText{
16 | anchors.centerIn: parent;
17 | text:msgText;
18 | color: "white";
19 | font.pixelSize: dpX(15);
20 | }
21 | Component.onCompleted: {
22 | animation.start();
23 | }
24 | SequentialAnimation{
25 | id:animation;
26 | onStopped: {
27 | msg_rect.destroy;
28 | }
29 | NumberAnimation {
30 | target: msg_rect;
31 | property: "opacity";
32 | duration: waitTime;
33 | to:0;
34 | easing.type: Easing.InCubic;
35 | }
36 | NumberAnimation {
37 | target: msg_rect;
38 | property: "opacity";
39 | duration: 2000;
40 | to:50;
41 | easing.type: Easing.InOutQuad;
42 | }
43 | NumberAnimation {
44 | target: msg_rect;
45 | property: "opacity";
46 | duration: 1000;
47 | to:0;
48 | easing.type: Easing.InOutQuad;
49 | }
50 |
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/component/XSubmitBtn.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 1.4
3 | import QtQuick.Controls.Styles 1.4
4 |
5 | Button {
6 | property int radius: dpX(3);
7 | width: parent.width;
8 | height: parent.height;
9 | id: submitBtn;
10 |
11 |
12 | style: ButtonStyle{
13 | background: Rectangle{
14 | id:rect_bg;
15 | color: control.hovered ?"#049eff":Qt.darker("#049eff", 1.1);
16 | width: parent.width;
17 | height: parent.height;
18 | radius: control.radius
19 | border.color: "#1eb9f2";
20 | border.width: control.activeFocus ? dpX(2) : dpX(1);
21 | }
22 | label: Text {
23 | renderType: Text.NativeRendering
24 | verticalAlignment: Text.AlignVCenter
25 | horizontalAlignment: Text.AlignHCenter
26 | font.family: "黑体"
27 | color: "white";
28 | font.pixelSize: dpX(15);
29 | text: control.text;
30 | }
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/component/XSwitchBtn.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import QtQuick.Controls 1.2
3 | import QtQuick.Controls.Styles 1.1
4 |
5 | Switch {
6 | style:
7 | SwitchStyle {
8 | groove: Rectangle {
9 | implicitHeight: dpH(30);
10 | implicitWidth: dpW(60);
11 | radius: dpX(20);
12 | color:control.checked ? "#4cd964":"white";
13 | border.color:control.checked ? "#4cd964":"#e5e5e5";
14 | Behavior on color {ColorAnimation {}}
15 | Behavior on border.color {ColorAnimation {}}
16 | }
17 | handle:
18 | Rectangle {
19 | width: dpW(30);
20 | height: dpH(30);
21 | color: "white";
22 | border.color: "#e5e5e5";
23 | radius: dpX(30)
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/component/XToolBar.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.9
2 | import QtQuick.Controls 2.5
3 | import QtQuick.Controls.Styles 1.4
4 | ToolBar {
5 | visible: titleText.text !== "";
6 | height: dpH(40);
7 | signal sig_ToolBtnClicked(string strTitle);
8 | Rectangle {
9 | width: dpW(40);
10 | height: dpH(40);
11 | Image{
12 | id: preImg;
13 | anchors.fill: parent;
14 | visible: stackView.depth > 1;
15 | source: "qrc:/imgs/other/navigation_previous_item.png";
16 | }
17 | color: preMouseArea.pressed ? Qt.rgba(255,255,255,0.2) : Qt.rgba(0,0,0,0);
18 | MouseArea{
19 | id: preMouseArea;
20 | anchors.fill: parent;
21 | onClicked: {
22 | if (stackView.depth > 1) {
23 | stackView.pop()
24 | }
25 | }
26 | }
27 | }
28 |
29 | Rectangle {
30 | width: dpW(40);
31 | height: dpH(40);
32 | visible: stackView.currentItem.showToolBtn;
33 | anchors.right: parent.right;
34 | Image{
35 | anchors.fill: parent;
36 | scale: 0.5;
37 | source: "qrc:/imgs/btn/choose.png";
38 | }
39 | color: toolBtnMouseArea.pressed ? Qt.rgba(255,255,255,0.2) : Qt.rgba(0,0,0,0);
40 | MouseArea{
41 | id: toolBtnMouseArea
42 | anchors.fill: parent;
43 | onClicked: {
44 | emit: sig_ToolBtnClicked(stackView.currentItem.title);
45 | }
46 | }
47 | }
48 |
49 | XNormalText {
50 | id: titleText;
51 | text: stackView.currentItem.title;
52 | anchors.centerIn: parent;
53 | font.pixelSize: dpX(18);
54 | color: "white";
55 | }
56 |
57 | background: Rectangle{
58 | id:bgRect;
59 | color: stackView.currentItem.color;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/component/XTopRect.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 |
3 | Rectangle{
4 | property string bgColor: "";
5 | property string imgPath: "";
6 | property int imgOffset: 0;
7 | property double imgScale: 1;
8 | id:top;
9 | z:5;
10 | width: parent.width;
11 | height: dpH(253);
12 | color: bgColor;
13 | Image {
14 | width: dpW(190);
15 | height: dpH(190);
16 | anchors.verticalCenter: parent.verticalCenter;
17 | anchors.horizontalCenter: parent.horizontalCenter;
18 | id: light;
19 | Image {
20 | width: parent.width;
21 | height: parent.height;
22 | anchors.verticalCenterOffset: dpH(imgOffset);
23 | scale: imgScale;
24 | anchors.centerIn: parent;
25 | source: imgPath;
26 | }
27 | source: "qrc:/imgs/other/circle_top.png";
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/imgs/bg/blue.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/bg/blue.jpg
--------------------------------------------------------------------------------
/imgs/bg/darkblue.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/bg/darkblue.jpg
--------------------------------------------------------------------------------
/imgs/bg/login.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/bg/login.jpg
--------------------------------------------------------------------------------
/imgs/bg/userinfo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/bg/userinfo.png
--------------------------------------------------------------------------------
/imgs/btn/Control_button_01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/Control_button_01.png
--------------------------------------------------------------------------------
/imgs/btn/Control_button_02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/Control_button_02.png
--------------------------------------------------------------------------------
/imgs/btn/Control_button_03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/Control_button_03.png
--------------------------------------------------------------------------------
/imgs/btn/Control_button_04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/Control_button_04.png
--------------------------------------------------------------------------------
/imgs/btn/Control_button_05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/Control_button_05.png
--------------------------------------------------------------------------------
/imgs/btn/Control_button_06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/Control_button_06.png
--------------------------------------------------------------------------------
/imgs/btn/Control_button_07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/Control_button_07.png
--------------------------------------------------------------------------------
/imgs/btn/Control_button_08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/Control_button_08.png
--------------------------------------------------------------------------------
/imgs/btn/Control_button_09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/Control_button_09.png
--------------------------------------------------------------------------------
/imgs/btn/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/add.png
--------------------------------------------------------------------------------
/imgs/btn/choose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/choose.png
--------------------------------------------------------------------------------
/imgs/btn/main_bottom_btn1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/main_bottom_btn1.png
--------------------------------------------------------------------------------
/imgs/btn/main_bottom_btn2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/main_bottom_btn2.png
--------------------------------------------------------------------------------
/imgs/btn/main_bottom_btn3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/main_bottom_btn3.png
--------------------------------------------------------------------------------
/imgs/btn/main_bottom_btn4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/main_bottom_btn4.png
--------------------------------------------------------------------------------
/imgs/btn/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/menu.png
--------------------------------------------------------------------------------
/imgs/btn/power_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/power_off.png
--------------------------------------------------------------------------------
/imgs/btn/power_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/power_on.png
--------------------------------------------------------------------------------
/imgs/btn/sub.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/btn/sub.png
--------------------------------------------------------------------------------
/imgs/icon/account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/account.png
--------------------------------------------------------------------------------
/imgs/icon/aircondition_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/aircondition_big.png
--------------------------------------------------------------------------------
/imgs/icon/aircondition_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/aircondition_small.png
--------------------------------------------------------------------------------
/imgs/icon/cold.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/cold.png
--------------------------------------------------------------------------------
/imgs/icon/hot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/hot.png
--------------------------------------------------------------------------------
/imgs/icon/light_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/light_big.png
--------------------------------------------------------------------------------
/imgs/icon/light_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/light_small.png
--------------------------------------------------------------------------------
/imgs/icon/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/logo.png
--------------------------------------------------------------------------------
/imgs/icon/main/alarm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/main/alarm.png
--------------------------------------------------------------------------------
/imgs/icon/main/master.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/main/master.png
--------------------------------------------------------------------------------
/imgs/icon/main/music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/main/music.png
--------------------------------------------------------------------------------
/imgs/icon/main/pos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/main/pos.png
--------------------------------------------------------------------------------
/imgs/icon/main/sys.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/main/sys.png
--------------------------------------------------------------------------------
/imgs/icon/main/time.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/main/time.png
--------------------------------------------------------------------------------
/imgs/icon/mode/GamePad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/GamePad.png
--------------------------------------------------------------------------------
/imgs/icon/mode/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/add.png
--------------------------------------------------------------------------------
/imgs/icon/mode/bag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/bag.png
--------------------------------------------------------------------------------
/imgs/icon/mode/cake.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/cake.png
--------------------------------------------------------------------------------
/imgs/icon/mode/chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/chat.png
--------------------------------------------------------------------------------
/imgs/icon/mode/choose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/choose.png
--------------------------------------------------------------------------------
/imgs/icon/mode/clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/clock.png
--------------------------------------------------------------------------------
/imgs/icon/mode/coffice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/coffice.png
--------------------------------------------------------------------------------
/imgs/icon/mode/dvd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/dvd.png
--------------------------------------------------------------------------------
/imgs/icon/mode/juice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/juice.png
--------------------------------------------------------------------------------
/imgs/icon/mode/light_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/light_off.png
--------------------------------------------------------------------------------
/imgs/icon/mode/light_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/light_on.png
--------------------------------------------------------------------------------
/imgs/icon/mode/moon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/moon.png
--------------------------------------------------------------------------------
/imgs/icon/mode/news.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/news.png
--------------------------------------------------------------------------------
/imgs/icon/mode/rain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/rain.png
--------------------------------------------------------------------------------
/imgs/icon/mode/snow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/snow.png
--------------------------------------------------------------------------------
/imgs/icon/mode/sofa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/sofa.png
--------------------------------------------------------------------------------
/imgs/icon/mode/sun.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/sun.png
--------------------------------------------------------------------------------
/imgs/icon/mode/turkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/turkey.png
--------------------------------------------------------------------------------
/imgs/icon/mode/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/tv.png
--------------------------------------------------------------------------------
/imgs/icon/mode/vedio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/vedio.png
--------------------------------------------------------------------------------
/imgs/icon/mode/wine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/mode/wine.png
--------------------------------------------------------------------------------
/imgs/icon/no.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/no.png
--------------------------------------------------------------------------------
/imgs/icon/ok.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/ok.png
--------------------------------------------------------------------------------
/imgs/icon/password.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/password.png
--------------------------------------------------------------------------------
/imgs/icon/time.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/time.png
--------------------------------------------------------------------------------
/imgs/icon/user2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/user2.png
--------------------------------------------------------------------------------
/imgs/icon/warn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/warn.png
--------------------------------------------------------------------------------
/imgs/icon/warn/door.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/warn/door.png
--------------------------------------------------------------------------------
/imgs/icon/warn/fire.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/warn/fire.png
--------------------------------------------------------------------------------
/imgs/icon/warn/man.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/warn/man.png
--------------------------------------------------------------------------------
/imgs/icon/warn/smoke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/warn/smoke.png
--------------------------------------------------------------------------------
/imgs/icon/wind_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/wind_big.png
--------------------------------------------------------------------------------
/imgs/icon/wind_mid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/wind_mid.png
--------------------------------------------------------------------------------
/imgs/icon/wind_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/icon/wind_small.png
--------------------------------------------------------------------------------
/imgs/other/circle_big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/other/circle_big.png
--------------------------------------------------------------------------------
/imgs/other/circle_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/other/circle_small.png
--------------------------------------------------------------------------------
/imgs/other/circle_top.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/other/circle_top.png
--------------------------------------------------------------------------------
/imgs/other/navigation_next_item.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/other/navigation_next_item.png
--------------------------------------------------------------------------------
/imgs/other/navigation_previous_item.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/other/navigation_previous_item.png
--------------------------------------------------------------------------------
/imgs/other/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/imgs/other/next.png
--------------------------------------------------------------------------------
/main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | int main(int argc, char *argv[])
5 | {
6 | #if defined(Q_OS_WIN)
7 | QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
8 | #endif
9 |
10 | QGuiApplication app(argc, argv);
11 |
12 | QQmlApplicationEngine engine;
13 | engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
14 | if (engine.rootObjects().isEmpty())
15 | return -1;
16 |
17 | return app.exec();
18 | }
19 |
--------------------------------------------------------------------------------
/main.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.9
2 | import QtQuick.Controls 2.2
3 | import "pages"
4 | import "component"
5 | ApplicationWindow {
6 | id: window
7 | visible: true
8 | title: qsTr("Smart House")
9 | width: 360
10 | height: 640
11 | property real multiplierH: (window.height/640)*1000;
12 | property real multiplierW: (window.width/360)*1000;
13 | function dpH(numbers) {
14 | return numbers*multiplierH/1000;
15 | }
16 | function dpW(numbers) {
17 | return numbers*multiplierW/1000;
18 | }
19 | function dpX(numbers){
20 | return (dpW(numbers)+dpH(numbers))/2;
21 | }
22 |
23 | header: XToolBar {
24 | id:mainToolBar;
25 | }
26 |
27 |
28 | signal sig_StackViewPush(string strPath);
29 | signal sig_StackViewPop(int nIndex);
30 | function stackViewPush(strPath){
31 | emit: sig_StackViewPush(strPath);
32 | }
33 |
34 | function stackViewPop(nIndex){
35 | emit: onSig_StackViewPop(nIndex);
36 | }
37 |
38 | function showMsgBox(strMsg){
39 | var dialog = Qt.createComponent("qrc:/component/XPromptBox.qml").createObject(window);
40 | dialog.msgText = strMsg;
41 | }
42 |
43 | onSig_StackViewPush: {
44 | console.log("push page: "+strPath)
45 | stackView.push(strPath);
46 | var item = stackView.currentItem;
47 | }
48 | onSig_StackViewPop: {
49 | if(stackView.depth > 1){
50 | stackView.pop(nIndex);
51 | }else if(index == -1)
52 | {
53 | stackView.pop();
54 |
55 | }
56 | else if(nIndex == 0)
57 | {
58 | stackView.clear();
59 | return;
60 | }
61 | var item = stackView.currentItem;
62 | }
63 |
64 | StackView {
65 | id: stackView
66 | initialItem: "qrc:/pages/Page_Login.qml"
67 | anchors.fill: parent
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/pages/Page_AirconditionChoose.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import "../component"
3 | XPage {
4 | title: qsTr("AIRCONDITIONS");
5 | Column{
6 | width: parent.width;
7 | height: parent.height;
8 | XTopRect{
9 | XTopRect{
10 | id:topRect;
11 | imgPath: "qrc:/imgs/icon/aircondition_small.png";
12 | imgScale: 0.35;
13 | imgOffset: 25;
14 | bgColor: "#049eff";
15 | }
16 | }
17 | XControlListView{
18 | id:listView;
19 | iconScale:0.7;
20 | width: parent.width;
21 | height: parent.height - topRect.height;
22 | Component.onCompleted: {
23 | addDevice(1, "Living Room", 1, "qrc:/imgs/icon/aircondition_small.png");
24 | addDevice(2, "Bedroom", 0, "qrc:/imgs/icon/aircondition_small.png");
25 | }
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/pages/Page_Airconditon.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import QtQuick.Controls 2.0
3 | import QtQuick.Controls.Styles 1.4
4 | import QtQuick.Extras 1.4
5 | import QtQuick.Dialogs 1.0
6 | import "../component"
7 |
8 | XPage {
9 | title: qsTr("AIRCONDITION");
10 | property bool bPower: false;
11 | Rectangle{
12 | width: dpW(50);
13 | height: dpH(50);
14 | color: Qt.rgba(0,0,0,0);
15 | anchors.top: parent.top;
16 | anchors.topMargin: dpH(100);
17 | radius: width/2;
18 | border.color: Qt.rgba(255,255,255,0.6);
19 | opacity: 0.8;
20 | border.width: 1;
21 | anchors.horizontalCenter: parent.horizontalCenter;
22 | Image {
23 | anchors.fill: parent;
24 | scale: 0.55;
25 | id: power_img;
26 | source: bPower ? "qrc:/imgs/btn/power_on.png" : "qrc:/imgs/btn/power_off.png";
27 | }
28 | MouseArea{
29 | anchors.fill: parent;
30 | onClicked: {
31 | bPower = bPower == true ? false : true;
32 | console.log("click"+bPower);
33 | }
34 | }
35 | }
36 | Rectangle{
37 | anchors.fill: parent;
38 | z:-1;
39 | Image {
40 | anchors.fill: parent;
41 | source: "qrc:/imgs/bg/darkblue.jpg"
42 | }
43 | }
44 |
45 | Rectangle{
46 | id:dial_rect;
47 | anchors.centerIn: parent;
48 | width: dpW(190);
49 | height: dpH(190);
50 | border.width: dpW(10);
51 | border.color: Qt.rgba(0,0,0,0.1);
52 | color: Qt.rgba(0,0,0,0);
53 | radius: width/2;
54 | Dial {
55 | id:dial;
56 | XNormalText {
57 | anchors.centerIn: parent;
58 | id: value_text;
59 | color:"white";
60 | font.family: "方正兰亭超细黑简体";
61 | font.bold: true;
62 | font.pixelSize: dpX(60);
63 | text: dial.value.toString();
64 | }
65 | XNormalText{
66 | anchors.left: value_text.right;
67 | anchors.bottom: value_text.bottom;
68 | anchors.bottomMargin: dpH(10);
69 | font.pixelSize: dpX(20);
70 | text: "℃";
71 | color: "white";
72 | }
73 | XNormalText{
74 | id:mode_text;
75 | anchors.horizontalCenter: parent.horizontalCenter;
76 | anchors.top: value_text.bottom;
77 | font.pixelSize: dpX(10);
78 | text: "mode clod";
79 | color: "white";
80 | }
81 |
82 | anchors.centerIn: parent;
83 | tickmarksVisible:false;
84 | stepSize: 1;
85 | maximumValue: 31;
86 | minimumValue: 16;
87 | onValueChanged: {
88 | canvas.requestPaint();
89 | console.log(value);
90 | }
91 | Canvas{
92 | id:canvas;
93 | width: dpW(169);
94 | height: dpH(169);
95 | anchors.centerIn: parent
96 | contextType: "2d"
97 | antialiasing:true
98 |
99 | onPaint: {
100 | var ctx = getContext("2d");
101 | ctx.clearRect(0, 0, width, height)
102 | ctx.lineWidth = dpW(2)
103 | ctx.strokeStyle = "#0efa88"
104 | ctx.fillStyle = "transparent"
105 | ctx.beginPath();
106 | ctx.arc(width/2,height/2,width/2-2,Math.PI/8*5,Math.PI/8*5+(2/15)*(Math.PI-(1/8)*Math.PI)*(dial.value-16));
107 | ctx.fill();
108 | ctx.stroke();
109 |
110 | }
111 | }
112 | style: DialStyle {
113 | labelInset: 0;
114 | handle :Rectangle{
115 | }
116 | background: Rectangle{
117 | color:Qt.rgba(26,26,26,0.1)
118 | implicitWidth: dpW(170);
119 | implicitHeight: dpH(170);
120 | radius: implicitWidth/2;
121 | border.color: Qt.rgba(0,0,0,0.3);
122 | border.width: dpX(2);
123 | Rectangle{
124 | anchors.centerIn: parent;
125 | width: dpW(172);
126 | height: dpH(172);
127 | color: "white";
128 | radius: width/2;
129 | opacity: 0.08;
130 | }
131 | }
132 | }
133 | }
134 | }
135 |
136 | Rectangle{
137 | id:addRect;
138 | color: Qt.rgba(0,0,0,0);
139 | width: dpW(28);
140 | height: dpH(28);
141 | anchors.left: parent.left;
142 | anchors.verticalCenter: dial_rect.verticalCenter;
143 | anchors.leftMargin: dpW(34);
144 | Image{
145 | anchors.fill: parent;
146 | source:"qrc:/imgs/btn/add.png";
147 | }
148 | MouseArea{
149 | anchors.fill: parent;
150 | onClicked: {
151 | dial.value++;
152 | }
153 | }
154 | }
155 |
156 | Rectangle{
157 | id:subRect;
158 | color: Qt.rgba(0,0,0,0);
159 | width: dpW(28);
160 | height: dpH(28);
161 | anchors.right: parent.right;
162 | anchors.rightMargin: dpW(34);
163 | anchors.verticalCenter: dial_rect.verticalCenter;
164 |
165 | Image{
166 | anchors.fill: parent;
167 | source:"qrc:/imgs/btn/sub.png";
168 | }
169 | MouseArea{
170 | anchors.fill: parent;
171 | onClicked: {
172 | dial.value--;
173 | }
174 | }
175 | }
176 |
177 | Grid{
178 | columns: 3;
179 | rows: 2;
180 | horizontalItemAlignment: Grid.AlignHCenter;
181 | rowSpacing: dpH(12);
182 | columnSpacing: dpW(50);
183 | anchors.horizontalCenter: parent.horizontalCenter;
184 | anchors.bottom: parent.bottom;
185 | anchors.bottomMargin: dpH(81);
186 | Rectangle{
187 | width: dpW(55);
188 | height: dpH(55);
189 | radius: width/2;
190 | color: Qt.rgba(0,0,0,0);
191 | border.color: Qt.rgba(255,255,255,0.6);
192 | Image {
193 | width: dpW(55);
194 | height: dpH(55);
195 | id: mode_img;
196 | scale: dpX(0.5);
197 | source: "qrc:/imgs/icon/cold.png";
198 | }
199 | }
200 | Rectangle{
201 | width: dpW(55);
202 | height: dpH(55);
203 | radius: width/2;
204 | color: Qt.rgba(0,0,0,0);
205 | border.color: Qt.rgba(255,255,255,0.6);
206 | Image {
207 | width: dpW(55);
208 | height: dpH(55);
209 | id: wind_img;
210 | scale: dpX(0.5);
211 | source: "qrc:/imgs/icon/wind_small.png";
212 | }
213 | }
214 | Rectangle{
215 | width: dpW(55);
216 | height: dpH(55);
217 | radius: width/2;
218 | color: Qt.rgba(0,0,0,0);
219 | border.color: Qt.rgba(255,255,255,0.6);
220 | Image {
221 | width: dpW(55);
222 | height: dpH(55);
223 | id: time_img;
224 | scale: dpX(0.5);
225 | source: "qrc:/imgs/icon/time.png";
226 | }
227 | }
228 | XNormalText {
229 | font.pixelSize: dpX(15);
230 | color:"white";
231 | text: qsTr("mode")
232 | }
233 | XNormalText {
234 | font.pixelSize: dpX(15);
235 | color:"white";
236 | text: qsTr("speed")
237 | }
238 | XNormalText {
239 | font.pixelSize: dpX(15);
240 | color:"white";
241 | text: qsTr("timing")
242 | }
243 | }
244 | }
245 |
--------------------------------------------------------------------------------
/pages/Page_Alarm.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import "../component"
3 | XPage{
4 | title: qsTr("ALARM");
5 | function addWarnInfo(warnText, iconColor, iconPath, timeText)
6 | {
7 | listModel.append({
8 | warnText: warnText,
9 | iconColor: iconColor,
10 | iconPath: iconPath,
11 | timeText: timeText
12 | })
13 | }
14 | Component.onCompleted: {
15 | addWarnInfo("fire", "red", "qrc:/imgs/icon/warn/fire.png", "today");
16 | addWarnInfo("smoke", "lightblue", "qrc:/imgs/icon/warn/smoke.png", "today");
17 | addWarnInfo("man", "pink", "qrc:/imgs/icon/warn/man.png", "today");
18 | addWarnInfo("door", "black", "qrc:/imgs/icon/warn/door.png", "today");
19 | }
20 | ListView{
21 | anchors.fill: parent;
22 | model: ListModel{
23 | id: listModel;
24 | }
25 | delegate: Item{
26 | height: dpH(65);
27 | width: parent.width;
28 | XNormalText {
29 | anchors.left: iconRect.right;
30 | anchors.leftMargin: dpW(20);
31 | verticalAlignment: Text.AlignVCenter;
32 | width: dpW(50);
33 | height: parent.height;
34 | font.pixelSize: dpX(18);
35 | text: warnText;
36 | }
37 | Rectangle{
38 | id: iconRect;
39 | anchors.verticalCenter: parent.verticalCenter;
40 | anchors.left: parent.left;
41 | anchors.leftMargin: dpW(20);
42 | width: dpW(50);
43 | height: dpH(50);
44 | radius: width / 2;
45 | color: iconColor;
46 | Image {
47 | scale: 0.7;
48 | anchors.fill: parent;
49 | source: iconPath;
50 | }
51 | }
52 | XNormalText {
53 | text: timeText;
54 | anchors.right: parent.right;
55 | anchors.rightMargin: dpW(10);
56 | anchors.verticalCenter: parent.verticalCenter;
57 | color: "#d6d6d6";
58 | font.pixelSize: dpX(14);
59 | }
60 | Rectangle{
61 | id:line;
62 | color: "#e6e6e6";
63 | width: parent.width-iconRect.x-iconRect.width;
64 | height: dpH(1);
65 | anchors.bottom: parent.bottom;
66 | anchors.right: parent.right;
67 | }
68 | }
69 | }
70 | }
71 |
72 |
--------------------------------------------------------------------------------
/pages/Page_Control.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 2.0
3 | import QtQuick.Layouts 1.3
4 | import "../component"
5 | XPage{
6 | title: qsTr("CONTROL");
7 | GridView{
8 | cellWidth: dpW(109);
9 | cellHeight: dpH(121);
10 | anchors.horizontalCenter: parent.horizontalCenter;
11 | width: dpW(327)
12 | height: parent.height;
13 | model:controlModel;
14 | delegate: Column {
15 | XControlBtn {
16 | imgPath: portrait;
17 | onClicked: {
18 | stackViewPush(pages);
19 | }
20 | }
21 | }
22 | }
23 | ListModel{
24 | id:controlModel;
25 | ListElement{
26 | portrait: "qrc:/imgs/btn/Control_button_01.png";
27 | pages: "qrc:/pages/Page_AirconditionChoose.qml";
28 | }
29 | ListElement{
30 | portrait: "qrc:/imgs/btn/Control_button_02.png";
31 | pages: "qrc:/pages/Page_LightChoose.qml";
32 | }
33 | ListElement{
34 | portrait: "qrc:/imgs/btn/Control_button_03.png";
35 | pages: "11";
36 | }
37 | ListElement{
38 | portrait: "qrc:/imgs/btn/Control_button_04.png";
39 | pages: "11";
40 | }
41 | ListElement{
42 | portrait: "qrc:/imgs/btn/Control_button_05.png";
43 | pages: "11";
44 | }
45 | ListElement{
46 | portrait: "qrc:/imgs/btn/Control_button_06.png";
47 | pages: "11";
48 | }
49 | ListElement{
50 | portrait: "qrc:/imgs/btn/Control_button_07.png";
51 | pages: "11";
52 | }
53 | ListElement{
54 | portrait: "qrc:/imgs/btn/Control_button_08.png";
55 | pages: "11";
56 | }
57 | ListElement{
58 | portrait: "qrc:/imgs/btn/Control_button_09.png";
59 | pages: "11";
60 | }
61 | }
62 | Image {
63 | anchors.fill: parent;
64 | id: bgImg;
65 | z: -1;
66 | source: "qrc:/imgs/bg/darkblue.jpg";
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/pages/Page_LightChoose.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import "../component"
3 | XPage {
4 | title: qsTr("LIGHTS");
5 | Column{
6 | width: parent.width;
7 | height: parent.height;
8 | XTopRect{
9 | id:topRect;
10 | imgPath: "qrc:/imgs/icon/light_big.png";
11 | imgScale: 0.5;
12 | imgOffset: 25;
13 | bgColor: "#049eff";
14 | }
15 | XControlListView{
16 | id:listView;
17 | width: parent.width;
18 | height: parent.height - topRect.height;
19 | Component.onCompleted: {
20 | addDevice(1, "Kitchen", 1, "qrc:/imgs/icon/light_small.png");
21 | addDevice(2, "Bedroom", 0, "qrc:/imgs/icon/light_small.png");
22 | }
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/pages/Page_Login.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 2.2
3 | import QtQuick.Controls 1.4
4 | import QtQuick.Controls.Styles 1.4
5 | import QtQuick.Layouts 1.1
6 | import "../component"
7 | XPage {
8 | id:loginPage;
9 | title: qsTr("");
10 | Rectangle{
11 | id:logo_rect;
12 | color: Qt.rgba(0,0,0,0);
13 | width: dpW(76);
14 | height: dpH(76);
15 | anchors.top:parent.top;
16 | anchors.topMargin: dpH(75);
17 | anchors.horizontalCenter: parent.horizontalCenter;
18 | Image {
19 | id: logo_img;
20 | anchors.fill: parent;
21 | source: "qrc:/imgs/icon/logo.png";
22 | }
23 |
24 | }
25 | Rectangle{
26 | id:tfGroup;
27 | anchors.top:logo_rect.bottom;
28 | anchors.topMargin: dpH(48);
29 | anchors.horizontalCenter: parent.horizontalCenter;
30 | width: dpW(301);
31 | height: dpH(100);
32 | radius: dpX(5);
33 | color: Qt.rgba(255,255,255,0.2);
34 | GridLayout{
35 | columns: 2;
36 | rows: 3;
37 | rowSpacing: 0;
38 | columnSpacing: 0;
39 |
40 | Image {
41 | id: un_img;
42 | scale: 0.7;
43 | Layout.preferredWidth:dpW(50);
44 | Layout.preferredHeight:dpH(50);
45 | source: "qrc:/imgs/icon/account.png"
46 | }
47 |
48 |
49 | TextField{
50 | id :un_TF;
51 | Layout.preferredWidth:dpW(230);
52 | Layout.preferredHeight:dpH(50);
53 | font.pixelSize: dpX(15);
54 | textColor: "white";
55 | style:TextFieldStyle{
56 | background: Rectangle {
57 | opacity: 0;
58 | }
59 | }
60 | }
61 |
62 | Rectangle{
63 | id:lineRect;
64 | width: dpW(301)
65 | height: dpH(1);
66 | color:"white";
67 | opacity: 0.3;
68 | Layout.columnSpan: 2;
69 | }
70 |
71 | Image {
72 | id: pwImg;
73 | scale: 0.7;
74 | Layout.preferredWidth:dpW(50);
75 | Layout.preferredHeight:dpH(50);
76 | source: "qrc:/imgs/icon/password.png"
77 | }
78 |
79 |
80 | TextField{
81 | id :pwTF;
82 | Layout.preferredWidth:dpW(230);
83 | Layout.preferredHeight:dpH(50);
84 | width: parent.width;
85 |
86 | validator: RegExpValidator{regExp: /^[\w]{6,20}$/}
87 | font.pixelSize: dpX(15);
88 | echoMode: 2;
89 | textColor: "white";
90 | style:TextFieldStyle{
91 | background: Rectangle {
92 | opacity: 0;
93 | }
94 | }
95 | }
96 | }
97 | }
98 |
99 |
100 | XSubmitBtn{
101 | id:submitBtn;
102 | text: qsTr("LOGIN");
103 | anchors.top: tfGroup.bottom;
104 | anchors.topMargin: dpH(25);
105 | anchors.horizontalCenter: parent.horizontalCenter;
106 | width: dpW(301);
107 | height: dpH(40);
108 | onClicked: {
109 | emit: sig_StackViewPush("qrc:/pages/Page_Main.qml");
110 | console.log("login clicked");
111 | }
112 | }
113 |
114 | RowLayout{
115 | width: dpW(301);
116 | height: dpH(40);
117 | anchors.top: submitBtn.bottom;
118 | anchors.topMargin: dpH(10);
119 | anchors.left: tfGroup.left;
120 |
121 | XNormalText {
122 | id: forgetText;
123 | color: "white";
124 | text: qsTr("forget");
125 | }
126 |
127 | XNormalText {
128 | id: registerText;
129 | Layout.alignment: Qt.AlignRight;
130 | color: "white";
131 | text: qsTr("register");
132 | MouseArea{
133 | anchors.fill: parent;
134 | onClicked: {
135 | emit: sig_StackViewPush("qrc:/pages/Page_Register.qml");
136 | }
137 | }
138 | }
139 | }
140 |
141 |
142 | Rectangle{
143 | id:bgRect;
144 | z:-1;
145 | anchors.fill: parent;
146 | Image {
147 | id: bg_img;
148 | anchors.fill: parent;
149 | source: "qrc:/imgs/bg/login.jpg";
150 | }
151 | }
152 | }
153 |
--------------------------------------------------------------------------------
/pages/Page_Main.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 2.0
3 | import QtQuick.Controls.Styles 1.4
4 |
5 | import "../component"
6 | XPage {
7 | id:mainPage;
8 | title: qsTr("");
9 | Rectangle{
10 | id: menuRect;
11 | width: dpW(20);
12 | height: dpH(20);
13 | anchors.top: parent.top; anchors.topMargin: dpH(10);
14 | anchors.left: parent.left; anchors.leftMargin: dpW(10);
15 | color: menuArea.pressed ? Qt.rgba(0,0,0,0.2) : Qt.rgba(0,0,0,0);
16 | radius: dpX(5);
17 | MouseArea{
18 | id: menuArea;
19 | anchors.fill: parent;
20 | onClicked: {
21 | drawer.open();
22 | }
23 | }
24 | Image{
25 | anchors.fill: parent;
26 | source: "qrc:/imgs/btn/menu.png"
27 | }
28 | z: 2;
29 | }
30 |
31 | Page_MainDrawer {
32 | id: drawer
33 | }
34 |
35 | Rectangle{
36 | id:bgRect;
37 | width: parent.width;
38 | height: dpH(640-104);
39 | color: "#049eff";
40 | Image {
41 | anchors.fill:parent;
42 | id:circle;
43 | source: "qrc:/imgs/other/circle_big.png";
44 | Column{
45 | spacing: dpH(5);
46 | anchors.verticalCenterOffset: dpH(-50);
47 | anchors.centerIn: parent;
48 | XNormalText {
49 | id: cityText;
50 | color:"white"
51 | text: qsTr("City");
52 | font.pixelSize: dpX(35);
53 | }
54 | Row{
55 | spacing: dpW(5);
56 | XNormalText {
57 | id: dateText;
58 | text: qsTr("Date");
59 | color: "white";
60 | font.pixelSize: dpX(15);
61 | }
62 | XNormalText {
63 | id: typeText;
64 | text: qsTr("Weather");
65 | color: "white";
66 | font.pixelSize: dpX(15);
67 | }
68 | }
69 | }
70 | }
71 |
72 | }
73 |
74 |
75 |
76 | Rectangle{
77 | id:warnRect;
78 | anchors.bottom: bgRect.bottom;
79 | MouseArea{
80 | id: warnRectMouseArea;
81 | anchors.fill: parent;
82 | onClicked: {
83 | stackViewPush("qrc:/pages/Page_Alarm.qml");
84 | }
85 | }
86 | Rectangle{
87 | id:lineRect;
88 | color:Qt.rgba(255,255,255, 0.3);
89 | height: dpH(1);
90 | width: parent.width;
91 | anchors.top: parent.top;
92 | }
93 | Column{
94 | anchors.left:warnImg.right;
95 | anchors.verticalCenter: parent.verticalCenter;
96 | spacing: dpH(5);
97 | XNormalText {
98 | text: qsTr("Security alarm");
99 | font.pixelSize: dpX(14);
100 | color: "white";
101 | }
102 | XNormalText{
103 | id:event_text;
104 | text: qsTr("17:00 Someone in the living room broke into");
105 | font.pixelSize: dpX(10);
106 | color: "white";
107 | }
108 | }
109 | color: warnRectMouseArea.pressed ? Qt.rgba(0,0,0,0.2) : Qt.rgba(0,0,0,0);
110 | width: parent.width
111 | height: dpH(60);
112 |
113 | anchors.horizontalCenter: parent.horizontalCenter;
114 | Image {
115 | id:warnImg;
116 | anchors.leftMargin: dpW(25);
117 | height: dpH(60); width: dpW(60);
118 | scale: 0.7;
119 | opacity: 0.8;
120 | source: "qrc:/imgs/other/circle_small.png";
121 | Image {
122 | height: dpH(60); width: dpW(60);
123 | scale: 0.6;
124 | source: "qrc:/imgs/icon/warn.png"
125 | }
126 | }
127 |
128 | Image {
129 | anchors.right: parent.right;
130 | anchors.verticalCenter: parent.verticalCenter;
131 | width: dpW(60);
132 | height: dpH(60);
133 | opacity: 0.8;
134 | scale: 0.5;
135 | source: "qrc:/imgs/other/navigation_next_item.png"
136 | }
137 |
138 | }
139 |
140 | Grid{
141 | anchors.bottom:warnRect.top;anchors.bottomMargin: dpH(35);
142 | anchors.horizontalCenter: parent.horizontalCenter;
143 | width: dpW(220);height: dpH(50);
144 | rows:2;columns: 2;
145 | rowSpacing: dpH(10);
146 | XNormalText {
147 | color: "white";
148 | text: qsTr("Indoor temperature");
149 | font.pixelSize: dpX(14);
150 | }
151 | XNormalText {
152 |
153 | text: qsTr("Indoor humidity");
154 | font.pixelSize: dpX(14);
155 | color: "white";
156 | }
157 | Rectangle{
158 | color:Qt.rgba(0,0,0,0);
159 | width: dpW(110);
160 | height: dpH(30);
161 |
162 | XNormalText{
163 | id:tmpText;
164 | anchors.centerIn: parent;
165 | text:qsTr("20");
166 | font.pixelSize: dpX(30);
167 | color: "white";
168 | }
169 | XNormalText{
170 | anchors.left: tmpText.right;
171 | anchors.bottom: tmpText.bottom;
172 | anchors.bottomMargin: dpH(5);
173 | text:qsTr("℃");
174 | font.pixelSize: dpX(15);
175 | color: "white";
176 | }
177 | }
178 | Rectangle{
179 | color:Qt.rgba(0,0,0,0);
180 | width: dpW(110);
181 | height: dpH(30);
182 | XNormalText{
183 | id:rh_text;
184 | anchors.centerIn: parent;
185 | text:qsTr("20");
186 | font.pixelSize: dpX(30);
187 | color: "white";
188 | }
189 | }
190 | }
191 |
192 | footer: TabBar {
193 | id:tabBar;
194 | anchors.bottom: mainPage.bottom;
195 | contentHeight: dpH(104);
196 | XMainTabBtn {
197 | height:parent.height;
198 | imgPath: "qrc:/imgs/btn/main_bottom_btn1.png";
199 | btnText: qsTr(" Control");
200 | onClicked: {
201 | stackViewPush("qrc:/pages/Page_Control.qml");
202 | }
203 | }
204 | XMainTabBtn {
205 | height:parent.height;
206 | imgPath:"qrc:/imgs/btn/main_bottom_btn2.png";
207 | btnText: qsTr("Mode");
208 | onClicked: {
209 | stackViewPush("qrc:/pages/Page_Mode.qml");
210 | }
211 | }
212 | XMainTabBtn {
213 | height:parent.height;
214 | imgPath: "qrc:/imgs/btn/main_bottom_btn3.png";
215 | btnText: qsTr("Monitor");
216 | }
217 | XMainTabBtn {
218 | height:parent.height;
219 | imgPath: "qrc:/imgs/btn/main_bottom_btn4.png";
220 | btnText: qsTr("Security ");
221 | }
222 | }
223 | }
224 |
--------------------------------------------------------------------------------
/pages/Page_MainDrawer.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.5
2 | import QtQuick.Controls 2.5
3 | import QtQuick.Layouts 1.3
4 | import QtGraphicalEffects 1.0
5 | import "../component"
6 | Drawer {
7 | id: drawer
8 | width: window.width * 0.75
9 | height: window.height
10 | LinearGradient {
11 | Column {
12 | anchors.fill: parent;
13 | Rectangle{
14 | width: parent.width;
15 | height: dpH(70);
16 | color: Qt.rgba(0,0,0,0);
17 | MouseArea{
18 | anchors.fill: parent;
19 | onClicked: {
20 | stackViewPush("qrc:/pages/Page_UserInfo.qml");
21 | drawer.close();
22 | }
23 | }
24 | RowLayout {
25 | width: parent.width;
26 | height: dpH(70);
27 | Rectangle{
28 | Image {
29 | anchors.fill: parent;
30 | source: "qrc:/imgs/icon/user2.png"
31 | }
32 | Layout.preferredWidth: dpW(40);
33 | Layout.preferredHeight: dpH(40);
34 | radius: width / 2;
35 | color: Qt.rgba(0,0,0,0);
36 | }
37 | XNormalText{
38 | color: "white";
39 | text: "XuChaoChi@gmail.com";
40 | Layout.alignment: parent.verticalCenter | Qt.AlignLeft;
41 |
42 | }
43 | Image {
44 | Layout.alignment: parent.verticalCenter | Qt.AlignRight;
45 | Layout.rightMargin: dpW(10);
46 | Layout.preferredWidth: dpW(25);
47 | Layout.preferredHeight: dpH(25);
48 | source: "qrc:/imgs/other/navigation_next_item.png"
49 | }
50 |
51 |
52 | }
53 | }
54 |
55 | Rectangle{
56 | id: lineRect;
57 | width: parent.width;
58 | height: dpH(1);
59 | color: Qt.rgba(255,255,255,0.3);
60 | }
61 | XMainDrawerItem{
62 | iconImg: "qrc:/imgs/icon/main/master.png"; strKey: qsTr("Master"); strValue: "Master1";
63 | }
64 | XMainDrawerItem{
65 | iconImg: "qrc:/imgs/icon/main/music.png"; strKey: qsTr("BG Music"); strValue: qsTr("How To Love");
66 | }
67 | XMainDrawerItem{
68 | iconImg: "qrc:/imgs/icon/main/alarm.png"; strKey: qsTr("Alarm linkage");
69 | }
70 | XMainDrawerItem{
71 | iconImg: "qrc:/imgs/icon/main/time.png"; strKey: qsTr("Timing arming");
72 | }
73 | XMainDrawerItem{
74 | iconImg: "qrc:/imgs/icon/main/pos.png"; strKey: qsTr("Region");
75 | }
76 | XMainDrawerItem{
77 | iconImg: "qrc:/imgs/icon/main/sys.png"; strKey: qsTr("System");
78 | }
79 | }
80 |
81 | anchors.fill: parent;
82 | gradient: Gradient {
83 | GradientStop{ position: 0.0; color: "#05265b";}
84 | GradientStop{ position: 0.5; color: "#0b4889";}
85 | GradientStop{ position: 1.0; color: "#47729c";}
86 | }
87 | start: Qt.point(0, 0);
88 | end: Qt.point(parent.width, parent.height);
89 | }
90 |
91 | }
92 |
--------------------------------------------------------------------------------
/pages/Page_Mode.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtGraphicalEffects 1.12
3 | import "../component"
4 | XPage {
5 | id: modePage;
6 | title: qsTr("MODE");
7 | color: "#262c38";
8 | showToolBtn: true;
9 | Connections{
10 | target: mainToolBar;
11 | onSig_ToolBtnClicked:
12 | {
13 | showMsgBox("edit..");
14 | }
15 | }
16 |
17 | GridView{
18 | id:gridView;
19 | width: parent.width;
20 | height: parent.height - dpH(40);
21 | cellWidth: dpW(120); cellHeight: dpH(120);
22 | focus: true;
23 | model:listModel;
24 |
25 | delegate: Rectangle{
26 | Column {
27 | height: dpH(120);
28 | width: dpW(120);
29 | Image { id:img; source: portrait; anchors.horizontalCenter: parent.horizontalCenter; width:dpW(80); height: dpH(80);}
30 | XNormalText { text: name; anchors.horizontalCenter: parent.horizontalCenter; font.pixelSize: dpX(12); }
31 | }
32 | color:Qt.rgba(0,0,0,0);
33 | border.color: Qt.rgba(0,0,0,0.05);
34 | border.width: dpX(1);
35 | height: dpH(120);
36 | width: dpW(120);
37 | MouseArea {
38 | anchors.fill: parent;
39 | onClicked:{
40 | if(index == (gridView.count-1)){
41 | showMsgBox("add...");
42 | }
43 | else{
44 | gridView.currentIndex = index;
45 | console.log(index);
46 | }
47 | }
48 | }
49 | }
50 |
51 | highlight: Rectangle{
52 | height: dpH(120);
53 | width: dpW(120);
54 | color:Qt.rgba(0,0,0,0);
55 | Image {
56 | width: dpW(25);
57 | height: dpH(25);
58 | anchors.right: parent.right; anchors.top:parent.top;
59 | anchors.rightMargin: dpW(15); anchors.topMargin: dpH(15);
60 | source: "qrc:/imgs/icon/mode/choose.png"
61 | }
62 | }
63 |
64 | Rectangle{
65 | id:back_rect;
66 | color:"white";
67 | anchors.fill: parent;
68 | z:-1;
69 | }
70 |
71 | }
72 |
73 | ListModel {
74 | id:listModel;
75 | ListElement {
76 | name: qsTr("sun");
77 | portrait: "qrc:/imgs/icon/mode/sun.png";
78 | }
79 | ListElement {
80 | name: qsTr("bag");
81 | portrait: "qrc:/imgs/icon/mode/bag.png";
82 | }
83 | ListElement {
84 | name: qsTr("music");
85 | portrait: "qrc:/imgs/icon/mode/dvd.png";
86 | }
87 | ListElement {
88 | name: qsTr("moon");
89 | portrait: "qrc:/imgs/icon/mode/moon.png";
90 | }
91 | ListElement {
92 | name: qsTr("add");
93 | portrait: "qrc:/imgs/icon/mode/add.png";
94 | }
95 | }
96 |
97 | }
98 |
--------------------------------------------------------------------------------
/pages/Page_Register.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import QtQuick.Controls 2.0
3 | import QtQuick.Controls.Styles 1.4
4 | import QtQuick.Layouts 1.1
5 | import "../component"
6 | XPage {
7 | id:regPage;
8 | title: qsTr("REGISTER");
9 | property bool userNameStatus: false;
10 | property int pwMinSize:6
11 |
12 | GridLayout{
13 | id:gLayout;
14 | anchors.horizontalCenter: parent.horizontalCenter;
15 | columns: 3;
16 | columnSpacing: 0;
17 |
18 | width: dpW(315); height: dpH(340);
19 | XNormalText {
20 | Layout.preferredWidth: dpW(80);
21 | text: qsTr("account");
22 | }
23 |
24 | TextInput{
25 | id:user_tInput;
26 | Layout.preferredWidth: dpW(170);
27 | validator: RegExpValidator{regExp: /^[\w]{6,20}$/}
28 | }
29 | Rectangle{
30 | Layout.preferredWidth: dpW(65);
31 | Image {
32 | anchors.centerIn: parent;
33 | id:u_img;
34 | height: dpH(25);
35 | width: dpW(25);
36 | source: userNameStatus?"qrc:/imgs/icon/ok.png":"qrc:/imgs/icon/no.png";
37 | }
38 | }
39 |
40 | Rectangle{
41 | width: parent.width;
42 | Layout.columnSpan: 3;
43 | Layout.preferredHeight: dpH(1);
44 | color: "#d8d8d8";
45 | }
46 | XNormalText {
47 | text: qsTr("password");
48 | }
49 | TextInput{
50 | id:pw_tInput;
51 | echoMode: TextInput.Password;
52 | validator: RegExpValidator{regExp: /^[\w]{6,20}$/}
53 | Layout.preferredWidth: dpW(170);
54 | onTextChanged: {
55 | pw_img.source = (text.length < pwMinSize)?"qrc:/img/img/icon/no.png":"qrc:/img/img/icon/ok.png";
56 | }
57 | }
58 | Rectangle{
59 | Layout.preferredWidth: dpW(65);
60 | Image {
61 | anchors.centerIn: parent;
62 | id:pw_img;
63 | height: dpH(25);
64 | width: dpW(25);
65 | source: "qrc:/imgs/icon/ok.png";
66 | }
67 | }
68 | Rectangle{
69 | Layout.columnSpan: 3;
70 | Layout.preferredHeight: dpH(1);
71 | width: parent.width;
72 | color: "#d8d8d8";
73 | }
74 | XNormalText {
75 | text: qsTr("repeat password");
76 | }
77 | TextInput{
78 | id:pw2_tInput;
79 | echoMode: TextInput.Password;
80 | Layout.preferredWidth: dpW(170);
81 | validator: RegExpValidator{regExp: /^[\w]{6,20}$/}
82 | onTextChanged: {
83 | pw2_img.source = ((text.length < pwMinSize)|| (pw_tInput.text != pw2_tInput.text)) ?"qrc:/img/img/icon/no.png":"qrc:/img/img/icon/ok.png";
84 | }
85 | }
86 | Rectangle{
87 | Layout.preferredWidth: dpW(65);
88 | Image {
89 | anchors.centerIn: parent;
90 | id:pw2_img;
91 | height: dpH(25);
92 | width: dpW(25);
93 | source: "qrc:/imgs/icon/ok.png";
94 | }
95 | }
96 |
97 |
98 |
99 | Rectangle{
100 | Layout.columnSpan: 3;
101 | Layout.preferredHeight: dpH(1);
102 | width: parent.width;
103 | color: "#d8d8d8";
104 |
105 | }
106 | XNormalText {
107 | text: qsTr("phone");
108 | }
109 | TextInput{
110 | id:phone_tInput;
111 | validator: RegExpValidator{regExp: /^[0-9]{6,11}$/}
112 | Layout.preferredWidth: dpW(170);
113 | }
114 | Rectangle{
115 | Layout.preferredWidth: dpW(65);
116 | Image {
117 | anchors.centerIn: parent;
118 | id:phone_img;
119 | height: dpH(25);
120 | width: dpW(25);
121 | source: "qrc:/imgs/icon/ok.png";
122 | }
123 | }
124 | Rectangle{
125 | Layout.columnSpan: 3;
126 | Layout.preferredHeight: dpH(1);
127 | width: parent.width;
128 | color: "#d8d8d8";
129 | }
130 |
131 | XNormalText {
132 | text: qsTr("verification");
133 | }
134 | TextInput{
135 | id:validate_tInput;
136 | Layout.preferredWidth: dpW(170);
137 | }
138 | XNormalText {
139 |
140 | text: qsTr("send");
141 | color: "#489beb";
142 | MouseArea{
143 | anchors.fill: parent;
144 | onClicked: {
145 | var dialog = Qt.createComponent("qrc:/component/XPromptBox.qml").createObject(regPage);
146 | dialog.msgText = qsTr("send verification clicked");
147 | }
148 | }
149 | }
150 | Rectangle{
151 | Layout.columnSpan: 3;
152 | Layout.preferredHeight: dpH(1);
153 | width: parent.width;
154 | color: "#d8d8d8";
155 | }
156 |
157 | XNormalText {
158 | Layout.columnSpan: 3;
159 | text: qsTr("info:password can't be short");
160 | width: parent.width;
161 | color: "#d8d8d8";
162 | }
163 | }
164 |
165 | XSubmitBtn{
166 | anchors.bottom: parent.bottom;
167 | width: parent.width;
168 | height: dpH(45);
169 | radius: 0;
170 | text: qsTr("register");
171 | onClicked: {
172 | var dialog = Qt.createComponent("qrc:/component/XPromptBox.qml").createObject(regPage);
173 | dialog.msgText = qsTr("register");
174 | }
175 | }
176 |
177 |
178 | Rectangle{
179 | width: dpW(360);
180 | height: dpH(640);
181 | color: "white";
182 | z:-1;
183 | }
184 |
185 | }
186 |
--------------------------------------------------------------------------------
/pages/Page_UserInfo.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.0
2 | import "../component"
3 | XPage {
4 | title: qsTr("USER INFO");
5 | color: "black";
6 | Column{
7 | width: parent.width;
8 | height: parent.height;
9 | Image {
10 | id: topImg;
11 | z: 1;
12 | width: parent.width;
13 | height: dpH(253);
14 | source: "qrc:/imgs/bg/userinfo.png"
15 | Rectangle {
16 | id: outCircleRect;
17 | color: Qt.rgba(0,0,0,0);
18 | border.color: Qt.rgba(255,255,255,0.2);
19 | border.width: dpX(2);
20 | width: dpW(75);
21 | height: dpH(75);
22 | radius: width / 2;
23 | anchors.verticalCenter: parent.verticalCenter;
24 | anchors.verticalCenterOffset: dpH(-30);
25 | anchors.horizontalCenter: parent.horizontalCenter;
26 | Rectangle{
27 | id: inCircleRect;
28 | anchors.verticalCenter: parent.verticalCenter;
29 | anchors.horizontalCenter: parent.horizontalCenter;
30 | width: dpW(54);
31 | height: dpH((54));
32 | radius: width / 2;
33 | color: Qt.rgba(0,0,0,0);
34 | Image {
35 | id: userImg;
36 | anchors.fill: parent;
37 | source: "qrc:/imgs/icon/user2.png";
38 | }
39 | }
40 | }
41 | XNormalText{
42 | text: qsTr("xuchaochi@gmail.com");
43 | color: "white";
44 | font.pixelSize: dpX(18);
45 | anchors.verticalCenter: parent.verticalCenter;
46 | anchors.verticalCenterOffset: dpH(50);
47 | anchors.horizontalCenter: parent.horizontalCenter;
48 | }
49 | }
50 | XConfigItemDelegate{
51 | strKey: qsTr("Nickname"); strValue: qsTr("XuChaoChi");
52 | }
53 | XConfigItemDelegate{
54 | strKey: qsTr("Account"); strValue: qsTr("Chi");
55 | }
56 | XConfigItemDelegate{
57 | strKey: qsTr("Sex"); strValue: qsTr("Man");
58 | }
59 | Rectangle{
60 | width: parent.width;
61 | height: dpH(13);
62 | color : "#00000000";
63 | }
64 | XConfigItemDelegate{
65 | showTopLine: true;
66 | strKey: qsTr("Abort");
67 | }
68 |
69 |
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/pages_preview/AIRCONDITION.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/AIRCONDITION.png
--------------------------------------------------------------------------------
/pages_preview/AIRCONDITION_CHOOSE.png.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/AIRCONDITION_CHOOSE.png.png
--------------------------------------------------------------------------------
/pages_preview/ALARM.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/ALARM.png
--------------------------------------------------------------------------------
/pages_preview/CONTROL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/CONTROL.png
--------------------------------------------------------------------------------
/pages_preview/LIGHT_CHOOSE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/LIGHT_CHOOSE.png
--------------------------------------------------------------------------------
/pages_preview/LOGIN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/LOGIN.png
--------------------------------------------------------------------------------
/pages_preview/MAIN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/MAIN.png
--------------------------------------------------------------------------------
/pages_preview/MAIN_DRAWER.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/MAIN_DRAWER.png
--------------------------------------------------------------------------------
/pages_preview/MODE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/MODE.png
--------------------------------------------------------------------------------
/pages_preview/REG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/REG.png
--------------------------------------------------------------------------------
/pages_preview/USER_INFO.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XuChaoChi/SmartHouse/54b25a3197d83360689ed925030c1a891815a5d6/pages_preview/USER_INFO.png
--------------------------------------------------------------------------------
/qml.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | main.qml
4 | pages/Page_Login.qml
5 | pages/Page_Register.qml
6 | imgs/bg/blue.jpg
7 | imgs/bg/darkblue.jpg
8 | imgs/bg/login.jpg
9 | imgs/icon/account.png
10 | imgs/icon/password.png
11 | imgs/icon/logo.png
12 | pages/Page_Main.qml
13 | component/XNormalText.qml
14 | component/XSubmitBtn.qml
15 | component/XToolBar.qml
16 | imgs/btn/main_bottom_btn1.png
17 | imgs/btn/main_bottom_btn2.png
18 | imgs/btn/main_bottom_btn3.png
19 | imgs/btn/main_bottom_btn4.png
20 | component/XMainTabBtn.qml
21 | imgs/icon/no.png
22 | imgs/icon/ok.png
23 | component/XPromptBox.qml
24 | imgs/other/circle_big.png
25 | imgs/other/circle_small.png
26 | imgs/other/navigation_next_item.png
27 | imgs/icon/warn.png
28 | component/XControlBtn.qml
29 | pages/Page_Control.qml
30 | imgs/btn/Control_button_01.png
31 | imgs/btn/Control_button_02.png
32 | imgs/btn/Control_button_03.png
33 | imgs/btn/Control_button_04.png
34 | imgs/btn/Control_button_05.png
35 | imgs/btn/Control_button_06.png
36 | imgs/btn/Control_button_07.png
37 | imgs/btn/Control_button_08.png
38 | imgs/btn/Control_button_09.png
39 | imgs/other/navigation_previous_item.png
40 | component/XPage.qml
41 | pages/Page_LightChoose.qml
42 | component/XControlListView.qml
43 | component/XSwitchBtn.qml
44 | imgs/icon/light_big.png
45 | imgs/icon/light_small.png
46 | component/XTopRect.qml
47 | imgs/other/circle_top.png
48 | pages/Page_AirconditionChoose.qml
49 | imgs/icon/aircondition_big.png
50 | imgs/icon/aircondition_small.png
51 | pages/Page_Airconditon.qml
52 | imgs/btn/power_off.png
53 | imgs/btn/power_on.png
54 | imgs/icon/cold.png
55 | imgs/icon/hot.png
56 | imgs/icon/time.png
57 | imgs/icon/wind_big.png
58 | imgs/icon/wind_mid.png
59 | imgs/icon/wind_small.png
60 | imgs/btn/add.png
61 | imgs/btn/sub.png
62 | pages/Page_Mode.qml
63 | imgs/icon/mode/add.png
64 | imgs/icon/mode/bag.png
65 | imgs/icon/mode/cake.png
66 | imgs/icon/mode/chat.png
67 | imgs/icon/mode/choose.png
68 | imgs/icon/mode/clock.png
69 | imgs/icon/mode/coffice.png
70 | imgs/icon/mode/dvd.png
71 | imgs/icon/mode/GamePad.png
72 | imgs/icon/mode/juice.png
73 | imgs/icon/mode/light_off.png
74 | imgs/icon/mode/light_on.png
75 | imgs/icon/mode/moon.png
76 | imgs/icon/mode/news.png
77 | imgs/icon/mode/rain.png
78 | imgs/icon/mode/snow.png
79 | imgs/icon/mode/sofa.png
80 | imgs/icon/mode/sun.png
81 | imgs/icon/mode/turkey.png
82 | imgs/icon/mode/tv.png
83 | imgs/icon/mode/vedio.png
84 | imgs/icon/mode/wine.png
85 | imgs/icon/warn/door.png
86 | imgs/icon/warn/fire.png
87 | imgs/icon/warn/man.png
88 | imgs/icon/warn/smoke.png
89 | imgs/btn/choose.png
90 | imgs/btn/menu.png
91 | pages/Page_Alarm.qml
92 | imgs/icon/main/alarm.png
93 | imgs/icon/main/master.png
94 | imgs/icon/main/music.png
95 | imgs/icon/main/pos.png
96 | imgs/icon/main/sys.png
97 | imgs/icon/main/time.png
98 | component/XMainDrawerItem.qml
99 | component/XLabel.qml
100 | pages/Page_MainDrawer.qml
101 | imgs/icon/user2.png
102 | pages/Page_UserInfo.qml
103 | imgs/bg/userinfo.png
104 | component/XConfigItemDelegate.qml
105 | imgs/other/next.png
106 |
107 |
108 |
--------------------------------------------------------------------------------