You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

586 lines
17 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/******************************************************************
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
}
}
}
}
}