|
|
/******************************************************************
|
|
|
Copyright © Deng Zhimao Co., Ltd. 1990-2030. All rights reserved.
|
|
|
* @projectName QDesktop
|
|
|
* @brief main.qml
|
|
|
* @author Deng Zhimao
|
|
|
* @email 1252699831@qq.com
|
|
|
* @date 2020-07-31
|
|
|
*******************************************************************/
|
|
|
import QtQuick 2.9
|
|
|
import QtQuick.Window 2.3
|
|
|
import QtQuick.Controls 2.0
|
|
|
import QtQuick.Controls 2.2
|
|
|
import QtQuick.Controls.Styles 1.4
|
|
|
import QtGraphicalEffects 1.12
|
|
|
import QtQuick.Controls 1.2
|
|
|
import an.weather 1.0
|
|
|
import an.model 1.0
|
|
|
import myDesktop 1.0
|
|
|
import "./calculator"
|
|
|
import "./weather"
|
|
|
import "./desktop"
|
|
|
import "./music"
|
|
|
import "./media"
|
|
|
import "./wireless"
|
|
|
import "./fileview"
|
|
|
import "./tcpclient"
|
|
|
import "./tcpserver"
|
|
|
import "./alarms"
|
|
|
import "./udpchat"
|
|
|
import "./photoview"
|
|
|
import "./iotest"
|
|
|
import "./sensor"
|
|
|
import "./system"
|
|
|
import "./radio"
|
|
|
import "./settings"
|
|
|
import "./aflex"
|
|
|
|
|
|
Window {
|
|
|
id: mainWindow
|
|
|
property int dayOrNight: 0
|
|
|
property bool myMusicstate: false
|
|
|
property string currentTimeString
|
|
|
property string currentTimeStringSecond
|
|
|
property string currentDateString
|
|
|
property string currentWeekString
|
|
|
property bool rebootFlag: false
|
|
|
property bool poweroffFlag: false
|
|
|
property bool backFlag: false
|
|
|
visible: true
|
|
|
width: WINenv ? 800 : Screen.desktopAvailableWidth
|
|
|
height: WINenv ? 480 : Screen.desktopAvailableHeight
|
|
|
property bool smallScreen: width == 480 ? true : false
|
|
|
|
|
|
//flags:Qt.FramelessWindowHint
|
|
|
|
|
|
MyDesktop {
|
|
|
id: myDesktop
|
|
|
onSysVolumeChanged: {
|
|
|
system_volume_slider.value = Number(sysVolume)
|
|
|
}
|
|
|
onCpuTempChanged: {
|
|
|
displayCpuTemp.text = "CPU:" + cpuTemp + "℃"
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Component.onCompleted: {
|
|
|
myDesktop.timerInit()
|
|
|
}
|
|
|
|
|
|
Timer{
|
|
|
id: volume_timer
|
|
|
interval: 5000
|
|
|
repeat: true
|
|
|
running: false
|
|
|
onTriggered:{
|
|
|
volume_timer.stop()
|
|
|
desktop_bell.checked = false
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Timer{
|
|
|
id: menu_timer
|
|
|
interval: 5000
|
|
|
repeat: true
|
|
|
running: false
|
|
|
onTriggered:{
|
|
|
menu_timer.stop()
|
|
|
if (menuBt.checked){
|
|
|
hideMenu.start()
|
|
|
xMoveRight.start()
|
|
|
opacityAnHide.start()
|
|
|
menuBt.checked = false
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
RoundButton {
|
|
|
id: backBtn
|
|
|
z: 109
|
|
|
x: parent.x + parent.width - 90
|
|
|
y: parent.y + parent.height / 2 - 50
|
|
|
width: 60
|
|
|
height: 60
|
|
|
focus: false
|
|
|
visible: mainSwipeView.currentIndex != 0
|
|
|
hoverEnabled: enabled
|
|
|
opacity: hovered ? 1 : 0.5
|
|
|
background: Rectangle{
|
|
|
color: "#55ffffff"
|
|
|
radius: parent.width / 2
|
|
|
}
|
|
|
Image {
|
|
|
anchors.centerIn: parent
|
|
|
id: backImage
|
|
|
source: "qrc:/desktop/images/back.png"
|
|
|
}
|
|
|
MouseArea {
|
|
|
anchors.fill: parent
|
|
|
drag.target: backBtn
|
|
|
drag.minimumX: 0
|
|
|
drag.minimumY: 0
|
|
|
drag.maximumX: mainWindow.width - 60
|
|
|
drag.maximumY: mainWindow.height - 60
|
|
|
onClicked: {
|
|
|
if (mainSwipeView.currentIndex == 3)
|
|
|
mainSwipeView.currentIndex = 0
|
|
|
if (mainSwipeView.currentIndex != 0 && mainSwipeView.currentIndex != 3 && backFlag != true)
|
|
|
WINStyle ? mainSwipeView.currentIndex = 0 : mainSwipeView.currentIndex = 3
|
|
|
if (backFlag)
|
|
|
mainSwipeView.currentIndex = 0
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
Rectangle {
|
|
|
anchors.fill: parent
|
|
|
color: "#1f1e58"
|
|
|
}
|
|
|
|
|
|
Item {
|
|
|
id: menuItem
|
|
|
z: 111
|
|
|
//visible: mainSwipeView.currentIndex == 0
|
|
|
visible: false
|
|
|
anchors.fill: parent
|
|
|
|
|
|
Rectangle {
|
|
|
id : menuButtonsBg
|
|
|
color: "transparent"
|
|
|
height: 30
|
|
|
width: 0
|
|
|
x: menuBt.x
|
|
|
y: menuBt.y
|
|
|
radius: 5
|
|
|
Item {
|
|
|
visible: menuButtonsBg.x < menuBt.x - 50
|
|
|
anchors.fill: parent
|
|
|
Image {
|
|
|
id: closeImage
|
|
|
source: "qrc:/desktop/images/close.png"
|
|
|
anchors.centerIn: parent
|
|
|
antialiasing: true
|
|
|
width: 25
|
|
|
height: 25
|
|
|
MouseArea {
|
|
|
hoverEnabled: true
|
|
|
anchors.fill: parent
|
|
|
onClicked: {
|
|
|
Qt.quit()
|
|
|
}
|
|
|
onEntered: closeImage.opacity = 0.5
|
|
|
onExited: closeImage.opacity = 0.8
|
|
|
}
|
|
|
}
|
|
|
Image {
|
|
|
id: rebootImage
|
|
|
source: "qrc:/desktop/images/reboot.png"
|
|
|
anchors.left: parent.left
|
|
|
anchors.top: parent.top
|
|
|
width: 25
|
|
|
height: 25
|
|
|
antialiasing: true
|
|
|
MouseArea {
|
|
|
hoverEnabled: true
|
|
|
anchors.fill: parent
|
|
|
onClicked: {
|
|
|
rebootFlag = true
|
|
|
Qt.quit()
|
|
|
}
|
|
|
onEntered: rebootImage.opacity = 0.5
|
|
|
onExited: rebootImage.opacity = 0.8
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Image {
|
|
|
id: poweroffImage
|
|
|
source: "qrc:/desktop/images/poweroff.png"
|
|
|
anchors.right: parent.right
|
|
|
width: 25
|
|
|
height: 25
|
|
|
antialiasing: true
|
|
|
MouseArea {
|
|
|
hoverEnabled: true
|
|
|
anchors.fill: parent
|
|
|
onClicked: {
|
|
|
poweroffFlag = true
|
|
|
Qt.quit()
|
|
|
}
|
|
|
onEntered: poweroffImage.opacity = 0.5
|
|
|
onExited: poweroffImage.opacity = 0.8
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
PropertyAnimation{
|
|
|
id: showMenu
|
|
|
target: menuButtonsBg
|
|
|
properties: "width"
|
|
|
from: 0
|
|
|
to: 180
|
|
|
duration: 500
|
|
|
}
|
|
|
PropertyAnimation{
|
|
|
id: hideMenu
|
|
|
target: menuButtonsBg
|
|
|
properties: "width"
|
|
|
from: 180
|
|
|
to: 0
|
|
|
duration: 500
|
|
|
}
|
|
|
PropertyAnimation{
|
|
|
id: xMoveLeft
|
|
|
target: menuButtonsBg
|
|
|
properties: "x"
|
|
|
from: menuBt.x
|
|
|
to: menuBt.x - 190
|
|
|
duration: 500
|
|
|
}
|
|
|
|
|
|
PropertyAnimation{
|
|
|
id: xMoveRight
|
|
|
target: menuButtonsBg
|
|
|
properties: "x"
|
|
|
from: menuBt.x -190
|
|
|
to: menuBt.x
|
|
|
duration: 500
|
|
|
}
|
|
|
PropertyAnimation{
|
|
|
id: opacityAnShow
|
|
|
target: menuButtonsBg
|
|
|
properties: "opacity"
|
|
|
from: 0.0
|
|
|
to: 0.8
|
|
|
duration: 500
|
|
|
}
|
|
|
PropertyAnimation{
|
|
|
id: opacityAnHide
|
|
|
target: menuButtonsBg
|
|
|
properties: "opacity"
|
|
|
from: 0.8
|
|
|
to: 0.0
|
|
|
duration: 500
|
|
|
}
|
|
|
Button {
|
|
|
id: menuBt
|
|
|
anchors.right: parent.right
|
|
|
anchors.rightMargin: 20
|
|
|
anchors.topMargin: 5
|
|
|
anchors.top: parent.top
|
|
|
width: 40
|
|
|
height: 20
|
|
|
checked: false
|
|
|
style:ButtonStyle {
|
|
|
background: Rectangle{
|
|
|
color: "transparent"
|
|
|
}
|
|
|
}
|
|
|
Text {
|
|
|
id: menuText
|
|
|
text: qsTr("…")
|
|
|
anchors.centerIn: parent
|
|
|
color: menuBt.hovered ? "white" : "#ccffffff"
|
|
|
font.pixelSize: 30
|
|
|
}
|
|
|
onClicked: {
|
|
|
menu_timer.start()
|
|
|
if (!checked) {
|
|
|
showMenu.start()
|
|
|
xMoveLeft.start()
|
|
|
opacityAnShow.start()
|
|
|
} else {
|
|
|
hideMenu.start()
|
|
|
xMoveRight.start()
|
|
|
opacityAnHide.start()
|
|
|
}
|
|
|
checked = !checked
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Button {
|
|
|
id: desktop_bell
|
|
|
//visible: WINStyle ? menuBt.visible : false
|
|
|
visible: false
|
|
|
anchors.top: menuBt.bottom
|
|
|
anchors.horizontalCenter: menuBt.horizontalCenter
|
|
|
anchors.topMargin: 8
|
|
|
width: 22
|
|
|
height: 26
|
|
|
checked: false
|
|
|
style: ButtonStyle {
|
|
|
background: Rectangle {
|
|
|
color: "transparent"
|
|
|
Image {
|
|
|
anchors.fill: parent
|
|
|
source: "qrc:/desktop/images/bell.png"
|
|
|
opacity: desktop_bell.hovered ? 1 : 0.8
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
onClicked: {
|
|
|
volume_timer.start()
|
|
|
checked = !checked
|
|
|
if (checked)
|
|
|
myDesktop.getSystemVolume()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Rectangle {
|
|
|
anchors.centerIn: parent
|
|
|
width: 300
|
|
|
height: 80
|
|
|
radius: 20
|
|
|
visible: desktop_bell.checked
|
|
|
color: "#424242"
|
|
|
Slider {
|
|
|
id: system_volume_slider
|
|
|
height: 50
|
|
|
width: 280
|
|
|
anchors.centerIn: parent
|
|
|
updateValueWhileDragging: true
|
|
|
stepSize: 1
|
|
|
maximumValue: 127
|
|
|
property bool handled: false
|
|
|
onPressedChanged: {
|
|
|
handled = !handled
|
|
|
volume_timer.start()
|
|
|
if (!handled)
|
|
|
myDesktop.setSystemVolume(value)
|
|
|
}
|
|
|
onValueChanged: {
|
|
|
volume_timer.stop()
|
|
|
}
|
|
|
style: SliderStyle {
|
|
|
groove: Rectangle {
|
|
|
width: control.width
|
|
|
height: 3
|
|
|
radius: 1
|
|
|
color: "white"
|
|
|
Rectangle {
|
|
|
width: styleData.handlePosition
|
|
|
height: 3
|
|
|
color: "#27e0fb"
|
|
|
radius: 1
|
|
|
}
|
|
|
}
|
|
|
handle: Rectangle {
|
|
|
width: 1
|
|
|
height: 30
|
|
|
color: "transparent"
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Item {
|
|
|
id: topMenu
|
|
|
anchors.top: mainWindow.top
|
|
|
anchors.left: mainWindow.left
|
|
|
width: mainWindow.width
|
|
|
height: 30
|
|
|
Rectangle {
|
|
|
anchors.fill: topMenu
|
|
|
//color: "#55111111"
|
|
|
color: "transparent"
|
|
|
Text {
|
|
|
id: netText
|
|
|
text: qsTr("www.openedv.com")
|
|
|
color: "white"
|
|
|
font.bold: true
|
|
|
font.pixelSize: 20
|
|
|
anchors.left: alientek.right
|
|
|
anchors.leftMargin: 10
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
}
|
|
|
Image {
|
|
|
id: alientek
|
|
|
source: "qrc:/desktop/images/alientek.png"
|
|
|
anchors.left: parent.left
|
|
|
//anchors.leftMargin: mainSwipeView.currentIndex == 0 ? 5 : 40
|
|
|
anchors.leftMargin: 5
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
}
|
|
|
|
|
|
Text {
|
|
|
id: displayCpuTemp
|
|
|
anchors.verticalCenter: alientek.verticalCenter
|
|
|
anchors.left: netText.right
|
|
|
anchors.leftMargin: 10
|
|
|
text: qsTr("CPU:50℃")
|
|
|
color: "white"
|
|
|
font.bold: true
|
|
|
font.pixelSize: 20
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
Rectangle {
|
|
|
anchors.left: parent.left
|
|
|
anchors.top: parent.top
|
|
|
anchors.bottom: parent.bottom
|
|
|
anchors.right: parent.right
|
|
|
color: "transparent"
|
|
|
SwipeView {
|
|
|
id: mainSwipeView
|
|
|
anchors.fill: parent
|
|
|
interactive: false
|
|
|
orientation: ListView.Vertical
|
|
|
Component.onCompleted: {
|
|
|
contentItem.highlightMoveDuration = 0
|
|
|
}
|
|
|
// Desktop 与 WinStyleDesktop 只能二选一,选择DeskTop需要取消注释Applications,
|
|
|
// 这里设计两款桌面,一种是类似是安卓类型,一种是类似Win10类型
|
|
|
//DeskTop{}
|
|
|
WinStyleDesktop{}
|
|
|
Music{}
|
|
|
Alarm{}
|
|
|
//Media{}
|
|
|
//Applications{}
|
|
|
Weather{}
|
|
|
Radio{}
|
|
|
Calculator{}
|
|
|
TcpServer{}
|
|
|
TcpClient{}
|
|
|
UdpChat{}
|
|
|
PhotoView{}
|
|
|
FileView{}
|
|
|
Aflex{}
|
|
|
Iotest{}
|
|
|
Sensor{}
|
|
|
MyWireless{}
|
|
|
System{}
|
|
|
Settings{}
|
|
|
onCurrentIndexChanged : {
|
|
|
mainSwipeView.currentItem.visible = true
|
|
|
for (var i = 0; i < mainSwipeView.count; i++){
|
|
|
if (i != mainSwipeView.currentIndex)
|
|
|
mainSwipeView.itemAt(i).visible = false
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
Text {
|
|
|
id: mainTimeText
|
|
|
visible: false // mainSwipeView.currentIndex == 0
|
|
|
text: currentTimeString
|
|
|
anchors.top: parent.top
|
|
|
anchors.topMargin: 50
|
|
|
anchors.left: parent.left
|
|
|
anchors.leftMargin: 50
|
|
|
color: "white"
|
|
|
font.pixelSize: 30
|
|
|
font.bold: true
|
|
|
}
|
|
|
Text {
|
|
|
id: weekText
|
|
|
visible: false // mainSwipeView.currentIndex == 0
|
|
|
text: currentWeekString
|
|
|
anchors.top: mainTimeText.bottom
|
|
|
anchors.topMargin: 5
|
|
|
anchors.horizontalCenter: mainTimeText.horizontalCenter
|
|
|
color: "#99eeeeee"
|
|
|
font.pixelSize: 15
|
|
|
font.bold: true
|
|
|
}
|
|
|
|
|
|
function currentDate(){
|
|
|
return Qt.formatDateTime(new Date(), "ddd yyyy年MM月dd日" )
|
|
|
}
|
|
|
|
|
|
function currentWeek(){
|
|
|
var dayofWeek = ""
|
|
|
var str = Qt.formatDateTime(new Date(), "ddd" )
|
|
|
switch (str){
|
|
|
case "Sun":
|
|
|
case "周日":
|
|
|
dayofWeek = "周日"
|
|
|
break;
|
|
|
case "Mon":
|
|
|
case "周一":
|
|
|
dayofWeek = "周一"
|
|
|
break;
|
|
|
case "Tue":
|
|
|
case "周二":
|
|
|
dayofWeek = "周二"
|
|
|
break;
|
|
|
case "Wed":
|
|
|
case "周三":
|
|
|
dayofWeek = "周三"
|
|
|
break;
|
|
|
case "Thu":
|
|
|
case "周四":
|
|
|
dayofWeek = "周四"
|
|
|
break;
|
|
|
case "Fri":
|
|
|
case "周五":
|
|
|
dayofWeek = "周五"
|
|
|
break;
|
|
|
case "Sat":
|
|
|
case "周六":
|
|
|
dayofWeek = "周六"
|
|
|
break;
|
|
|
}
|
|
|
return dayofWeek + Qt.formatDateTime(new Date(), ",MM月dd日" )
|
|
|
}
|
|
|
|
|
|
function currentTime(){
|
|
|
dayOrNight = new Date().getHours()
|
|
|
return Qt.formatDateTime(new Date(), "hh:mm" )
|
|
|
}
|
|
|
|
|
|
function currentTimeSecond(){
|
|
|
dayOrNight = new Date().getHours()
|
|
|
return Qt.formatDateTime(new Date(), "hh:mm:ss" )
|
|
|
}
|
|
|
|
|
|
Timer{
|
|
|
id: timer
|
|
|
interval: 1000
|
|
|
repeat: true
|
|
|
running: true
|
|
|
property int welcomeTimerCount: 0
|
|
|
onTriggered:{
|
|
|
currentTimeString= currentTime()
|
|
|
currentDateString = currentDate()
|
|
|
currentWeekString = currentWeek()
|
|
|
currentTimeStringSecond = currentTimeSecond()
|
|
|
if (welcomeTimerCount < 4)
|
|
|
welcomeTimerCount++
|
|
|
if (welcomeTimerCount == 2)
|
|
|
welcome_text.text = "欢迎"
|
|
|
if (welcomeTimerCount >= 4){
|
|
|
welcome_display.visible = false
|
|
|
}
|
|
|
}
|
|
|
Component.onCompleted: {
|
|
|
currentTimeString= currentTime()
|
|
|
currentDateString = currentDate()
|
|
|
currentWeekString = currentWeek()
|
|
|
}
|
|
|
}
|
|
|
Item {
|
|
|
id: welcome_display
|
|
|
anchors.fill: parent
|
|
|
//visible: !WINenv
|
|
|
z: 120
|
|
|
Flickable {
|
|
|
anchors.fill: parent
|
|
|
contentWidth: parent.width
|
|
|
contentHeight: parent.height +20
|
|
|
Rectangle {
|
|
|
anchors.fill: parent
|
|
|
color: "#1f1e58"
|
|
|
Text {
|
|
|
id: welcome_text
|
|
|
text: qsTr("正在初始化,请稍候...")
|
|
|
color: "white"
|
|
|
font.pixelSize: 30
|
|
|
font.bold: true
|
|
|
anchors.centerIn: parent
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|