import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Layouts 1.15 import FluentUI 1.0 import QtGraphicalEffects 1.15 Item { id:root property var window : { if(Window.window == null) return null return Window.window } property color color: { if(window && window.active){ return FluTheme.isDark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(238/255,244/255,249/255,1) } return FluTheme.isDark ? Qt.rgba(32/255,32/255,32/255,1) : Qt.rgba(243/255,243/255,243/255,1) } property string title: "FluentUI" property int minimumWidth property int maximumWidth property int minimumHeight property int maximumHeight property int modality:0 signal initArgument(var argument) property int borderless:{ if(!FluTheme.isFrameless){ return 0 } return (window && (window.visibility === Window.Maximized)) ? 0 : 4 } default property alias content: container.data FluWindowResize{ border:borderless } Behavior on opacity{ NumberAnimation{ duration: 100 } } Rectangle{ property color borerlessColor : FluTheme.isDark ? FluTheme.primaryColor.lighter : FluTheme.primaryColor.dark color: (window && window.active) ? borerlessColor : Qt.lighter(borerlessColor,1.1) border.width: 1 anchors.fill: parent radius: 4 border.color:FluTheme.isDark ? Qt.darker(FluTheme.primaryColor.lighter,1.3) : Qt.lighter(FluTheme.primaryColor.dark,1.2) } Rectangle{ id:container color:root.color anchors.fill: parent anchors.margins: borderless clip: true Behavior on color{ ColorAnimation { duration: 300 } } } Component.onCompleted: { } Connections{ target: FluApp function onWindowReady(view){ if(FluApp.equalsWindow(view,window)){ initArgument(helper.initWindow(view)) helper.setTitle(title) if(minimumWidth){ helper.setMinimumWidth(minimumWidth) } if(maximumWidth){ helper.setMaximumWidth(maximumWidth) } if(minimumHeight){ helper.setMinimumHeight(minimumHeight) } if(maximumHeight){ helper.setMaximumHeight(maximumHeight) } helper.setModality(root.modality); helper.updateWindow() } } } WindowHelper{ id:helper } FluInfoBar{ id:infoBar root: root } function showSuccess(text,duration,moremsg){ infoBar.showSuccess(text,duration,moremsg); } function showInfo(text,duration,moremsg){ infoBar.showInfo(text,duration,moremsg); } function showWarning(text,duration,moremsg){ infoBar.showWarning(text,duration,moremsg); } function showError(text,duration,moremsg){ infoBar.showError(text,duration,moremsg); } function close(){ window.close() } function onResult(data){ } }