├── 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 | ![login](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/LOGIN.png) 7 | login page(登陆界面) 8 | 9 | ![register](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/REG.png) 10 | login page(注册界面) 11 | 12 | ![main](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/MAIN.png) 13 | main page(主页) 14 | 15 | ![control](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/CONTROL.png) 16 | control page(控制界面) 17 | 18 | ![airconditionChoose](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/AIRCONDITION_CHOOSE.png.png) 19 | airconditionChoose page(空调选择) 20 | 21 | ![aircondition](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/AIRCONDITION.png) 22 | aircondition page(空调界面) 23 | 24 | ![lightChoose](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/LIGHT_CHOOSE.png) 25 | lightChoose page(灯光选择) 26 | 27 | ![mode](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/MODE.png) 28 | mode page(场景模式) 29 | 30 | ![alarm](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/ALARM.png) 31 | alarm page(报警页面) 32 | 33 | ![main drawer](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/MAIN_DRAWER.png) 34 | main drawer page(主面侧栏) 35 | 36 | ![userinfo](https://github.com/XuChaoChi/SmartHouse/blob/master/pages_preview/USER_INFO.png) 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 | --------------------------------------------------------------------------------