FluentUI/src/controls/FluAppBar.qml

170 lines
4.4 KiB
QML
Raw Normal View History

2023-02-27 18:46:39 +08:00
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Layouts 1.15
import FluentUI 1.0
Rectangle{
2023-03-06 12:09:06 +08:00
color: FluTheme.primaryColor.dark
2023-02-27 18:46:39 +08:00
height: 50
width: {
2023-02-28 23:57:55 +08:00
if(parent==null)
return 200
return parent.width
2023-02-27 18:46:39 +08:00
}
2023-03-06 12:09:06 +08:00
z: 65535
2023-02-27 18:46:39 +08:00
property string title: "标题"
2023-03-03 18:19:48 +08:00
property bool showDark: false
property bool showFps: false
2023-03-02 00:35:58 +08:00
property bool resizable: {
if(Window.window == null){
return false
}
return !(Window.window.minimumHeight === Window.window.maximumHeight && Window.window.maximumWidth === Window.window.minimumWidth)
}
2023-02-27 18:46:39 +08:00
MouseArea{
anchors.fill: parent
anchors.topMargin: 5
acceptedButtons: Qt.LeftButton
2023-03-02 00:35:58 +08:00
hoverEnabled: true
2023-02-27 18:46:39 +08:00
onPressed: Window.window.startSystemMove()
onDoubleClicked: {
2023-03-02 00:35:58 +08:00
if(resizable)
toggleMaximized();
2023-02-27 18:46:39 +08:00
}
}
function toggleMaximized() {
if (Window.window.visibility === Window.Maximized) {
Window.window.showNormal();
} else {
Window.window.showMaximized();
}
}
FluText {
text: title
anchors{
verticalCenter: parent.verticalCenter
left: parent.left
leftMargin: 14
}
2023-03-06 12:09:06 +08:00
color:"#FFFFFFFF"
2023-02-27 18:46:39 +08:00
fontStyle: FluText.Title
font.pixelSize: 14
font.bold: true
}
RowLayout{
anchors.right: parent.right;
2023-03-06 12:09:06 +08:00
anchors.rightMargin: 10
2023-02-27 18:46:39 +08:00
height: parent.height
2023-03-06 12:09:06 +08:00
spacing: 15
2023-02-27 18:46:39 +08:00
2023-03-01 11:58:30 +08:00
TFpsMonitor{
2023-03-02 00:35:58 +08:00
Layout.alignment: Qt.AlignVCenter
Layout.rightMargin: 12
Layout.topMargin: 5
2023-03-06 12:09:06 +08:00
color:"#FFFFFFFF"
2023-03-03 18:19:48 +08:00
visible: showFps
2023-03-01 11:58:30 +08:00
}
2023-02-27 18:46:39 +08:00
RowLayout{
Layout.alignment: Qt.AlignVCenter
spacing: 5
2023-03-03 18:19:48 +08:00
visible: showDark
2023-02-27 18:46:39 +08:00
FluText{
text:"夜间模式"
2023-03-06 12:09:06 +08:00
color:"#FFFFFFFF"
2023-02-27 18:46:39 +08:00
fontStyle: FluText.Body
}
FluToggleSwitch{
checked: FluApp.isDark
2023-02-28 18:29:00 +08:00
onClickFunc:function(){
2023-02-27 18:46:39 +08:00
FluApp.isDark = !FluApp.isDark
}
}
}
2023-03-06 12:09:06 +08:00
FluIcon{
2023-02-27 18:46:39 +08:00
icon : FluentIcons.FA_window_minimize
Layout.alignment: Qt.AlignVCenter
iconSize: 15
2023-03-06 12:09:06 +08:00
color:"#FFFFFF"
MouseArea{
id:mouse_miniminzed
anchors.fill: parent
hoverEnabled: true
onClicked: {
Window.window.showMinimized()
}
}
FluTooltip{
visible: mouse_miniminzed.containsMouse
text:"最小化"
delay: 1000
2023-02-27 18:46:39 +08:00
}
}
2023-03-06 12:09:06 +08:00
FluIcon{
property bool isRestore: {
2023-02-27 18:46:39 +08:00
if(Window.window == null)
return false
2023-03-06 12:09:06 +08:00
return Window.Maximized === Window.window.visibility
}
color:"#FFFFFF"
icon : {
if(Window.window == null)
return FluentIcons.FA_window_restore
2023-02-27 18:46:39 +08:00
return Window.Maximized === Window.window.visibility ? FluentIcons.FA_window_restore : FluentIcons.FA_window_maximize
}
Layout.alignment: Qt.AlignVCenter
2023-03-02 00:35:58 +08:00
visible: resizable
2023-02-27 18:46:39 +08:00
iconSize: 15
2023-03-06 12:09:06 +08:00
MouseArea{
id:mouse_maximized
anchors.fill: parent
hoverEnabled: true
onClicked: {
toggleMaximized()
}
}
FluTooltip{
visible: mouse_maximized.containsMouse
text:{
return parent.isRestore?"向下还原":"最大化"
}
delay: 1000
2023-02-27 18:46:39 +08:00
}
}
2023-03-06 12:09:06 +08:00
FluIcon{
2023-02-27 18:46:39 +08:00
icon : FluentIcons.FA_close
Layout.alignment: Qt.AlignVCenter
2023-03-06 12:09:06 +08:00
color:"#FFFFFF"
MouseArea{
id:mouse_close
anchors.fill: parent
hoverEnabled: true
onClicked: {
Window.window.close()
}
}
FluTooltip{
visible: mouse_close.containsMouse
text:"关闭"
delay: 1000
2023-02-27 18:46:39 +08:00
}
}
}
2023-02-28 18:29:00 +08:00
FluDivider{
2023-02-27 18:46:39 +08:00
width: parent.width;
height: 1;
anchors.bottom: parent.bottom;
}
}