From c36515f19c039252a3b80f33eb9cff059d656b16 Mon Sep 17 00:00:00 2001 From: gaoxiangyang Date: Wed, 8 May 2024 20:35:31 +0800 Subject: [PATCH 1/2] =?UTF-8?q?info=E6=8F=90=E7=A4=BA=E8=AF=AD=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E4=B8=BB=E5=8A=A8=E8=B0=83=E7=94=A8=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=85=B3=E9=97=AD=EF=BC=8C=E6=94=AF=E6=8C=81=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=89=80=E6=9C=89info=E6=A1=86=E7=9A=84=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/qml/page/T_InfoBar.qml | 60 ++++++++++++++++++- .../imports/FluentUI/Controls/FluInfoBar.qml | 41 ++++++++----- .../imports/FluentUI/Controls/FluWindow.qml | 11 ++-- .../imports/FluentUI/Controls/FluInfoBar.qml | 47 +++++++++------ .../imports/FluentUI/Controls/FluWindow.qml | 11 ++-- 5 files changed, 126 insertions(+), 44 deletions(-) diff --git a/example/qml/page/T_InfoBar.qml b/example/qml/page/T_InfoBar.qml index 52862494..7e68055b 100644 --- a/example/qml/page/T_InfoBar.qml +++ b/example/qml/page/T_InfoBar.qml @@ -9,9 +9,13 @@ FluScrollablePage{ title: qsTr("InfoBar") + property var info1 + property var info2 + property var info3 + FluFrame{ Layout.fillWidth: true - Layout.preferredHeight: 270 + Layout.preferredHeight: 350 padding: 10 ColumnLayout{ spacing: 14 @@ -49,6 +53,51 @@ FluScrollablePage{ showInfo(qsTr("This is an InfoBar in the Info Style"),0,qsTr("Manual shutdown is supported")) } } + FluText{ + wrapMode: Text.WrapAnywhere + width: parent.width + text: qsTr("Manually close the info message box") + } + Row{ + spacing: 5 + FluButton{ + text: (info1 ? qsTr("close '%1'") : qsTr("show '%1")).arg("info1") + onClicked: { + if(info1) { + info1.close() + return + } + info1 = showInfo(qsTr("This is an '%1'").arg("info1"), 0) + } + } + FluButton{ + text: (info2 ? qsTr("close '%1'") : qsTr("show '%1")).arg("info2") + onClicked: { + if(info2) { + info2.close() + return + } + info2 = showInfo(qsTr("This is an '%1'").arg("info2"), 0) + } + } + FluButton{ + text: (info3 ? qsTr("close '%1'") : qsTr("show '%1")).arg("info3") + onClicked: { + if(info3) { + info3.close() + return + } + info3 = showInfo(qsTr("This is an '%1'").arg("info3"), 0) + } + } + FluButton{ + text: qsTr("clear all info") + onClicked: { + clearAllInfo() + } + } + } + FluButton{ text:"Loading" onClicked: { @@ -60,12 +109,17 @@ FluScrollablePage{ CodeExpander{ Layout.fillWidth: true Layout.topMargin: -6 - code:'showInfo(qsTr("This is an InfoBar in the Info Style")) + code:` +showInfo(qsTr("This is an InfoBar in the Info Style")) showWarning(qsTr("This is an InfoBar in the Warning Style")) showError(qsTr("This is an InfoBar in the Error Style")) -showSuccess(qsTr("This is an InfoBar in the Success Style"))' +showSuccess(qsTr("This is an InfoBar in the Success Style")) + +var info1 = showInfo(qsTr("This is an 'Info1'"), 0) +info1.close() +` } } diff --git a/src/Qt5/imports/FluentUI/Controls/FluInfoBar.qml b/src/Qt5/imports/FluentUI/Controls/FluInfoBar.qml index 3773a1e2..ecaaa37d 100644 --- a/src/Qt5/imports/FluentUI/Controls/FluInfoBar.qml +++ b/src/Qt5/imports/FluentUI/Controls/FluInfoBar.qml @@ -18,22 +18,23 @@ FluObject { if(screenLayout){ var last = screenLayout.getLastloader(); if(last.type === type && last.text === text && moremsg === last.moremsg){ - last.restart(); - return; + last.duration = duration + if (duration > 0) last.restart(); + return last; } } initScreenLayout(); - contentComponent.createObject(screenLayout,{ - type:type, - text:text, - duration:duration, - moremsg:moremsg, - }); + return contentComponent.createObject(screenLayout,{ + type:type, + text:text, + duration:duration, + moremsg:moremsg, + }); } function createCustom(itemcomponent,duration){ initScreenLayout(); if(itemcomponent){ - contentComponent.createObject(screenLayout,{itemcomponent:itemcomponent,duration:duration}); + return contentComponent.createObject(screenLayout,{itemcomponent:itemcomponent,duration:duration}); } } function initScreenLayout(){ @@ -85,7 +86,9 @@ FluObject { } Timer { id:delayTimer - interval: duration; running: duration > 0; repeat: duration > 0 + interval: duration; + running: duration > 0; + repeat: duration > 0 onTriggered: content.close(); } FluLoader{ @@ -235,18 +238,26 @@ FluObject { } } function showSuccess(text,duration=1000,moremsg){ - mcontrol.create(mcontrol.const_success,text,duration,moremsg ? moremsg : ""); + return mcontrol.create(mcontrol.const_success,text,duration,moremsg ? moremsg : ""); } function showInfo(text,duration=1000,moremsg){ - mcontrol.create(mcontrol.const_info,text,duration,moremsg ? moremsg : ""); + return mcontrol.create(mcontrol.const_info,text,duration,moremsg ? moremsg : ""); } function showWarning(text,duration=1000,moremsg){ - mcontrol.create(mcontrol.const_warning,text,duration,moremsg ? moremsg : ""); + return mcontrol.create(mcontrol.const_warning,text,duration,moremsg ? moremsg : ""); } function showError(text,duration=1000,moremsg){ - mcontrol.create(mcontrol.const_error,text,duration,moremsg ? moremsg : ""); + return mcontrol.create(mcontrol.const_error,text,duration,moremsg ? moremsg : ""); } function showCustom(itemcomponent,duration=1000){ - mcontrol.createCustom(itemcomponent,duration); + return mcontrol.createCustom(itemcomponent,duration); + } + function clearAllInfo(){ + if(mcontrol.screenLayout != null) { + mcontrol.screenLayout.destroy() + mcontrol.screenLayout = null + } + + return true } } diff --git a/src/Qt5/imports/FluentUI/Controls/FluWindow.qml b/src/Qt5/imports/FluentUI/Controls/FluWindow.qml index 10a099d5..4597e593 100644 --- a/src/Qt5/imports/FluentUI/Controls/FluWindow.qml +++ b/src/Qt5/imports/FluentUI/Controls/FluWindow.qml @@ -295,16 +295,19 @@ Window { loader_loading.sourceComponent = undefined } function showSuccess(text,duration,moremsg){ - info_bar.showSuccess(text,duration,moremsg) + return info_bar.showSuccess(text,duration,moremsg) } function showInfo(text,duration,moremsg){ - info_bar.showInfo(text,duration,moremsg) + return info_bar.showInfo(text,duration,moremsg) } function showWarning(text,duration,moremsg){ - info_bar.showWarning(text,duration,moremsg) + return info_bar.showWarning(text,duration,moremsg) } function showError(text,duration,moremsg){ - info_bar.showError(text,duration,moremsg) + return info_bar.showError(text,duration,moremsg) + } + function clearAllInfo(){ + return info_bar.clearAllInfo() } function moveWindowToDesktopCenter(){ screen = Qt.application.screens[FluTools.cursorScreenIndex()] diff --git a/src/Qt6/imports/FluentUI/Controls/FluInfoBar.qml b/src/Qt6/imports/FluentUI/Controls/FluInfoBar.qml index c78d6bed..ecaaa37d 100644 --- a/src/Qt6/imports/FluentUI/Controls/FluInfoBar.qml +++ b/src/Qt6/imports/FluentUI/Controls/FluInfoBar.qml @@ -1,6 +1,6 @@ -import QtQuick -import QtQuick.Controls -import FluentUI +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import FluentUI 1.0 FluObject { property var root; @@ -18,22 +18,23 @@ FluObject { if(screenLayout){ var last = screenLayout.getLastloader(); if(last.type === type && last.text === text && moremsg === last.moremsg){ - last.restart(); - return; + last.duration = duration + if (duration > 0) last.restart(); + return last; } } initScreenLayout(); - contentComponent.createObject(screenLayout,{ - type:type, - text:text, - duration:duration, - moremsg:moremsg, - }); + return contentComponent.createObject(screenLayout,{ + type:type, + text:text, + duration:duration, + moremsg:moremsg, + }); } function createCustom(itemcomponent,duration){ initScreenLayout(); if(itemcomponent){ - contentComponent.createObject(screenLayout,{itemcomponent:itemcomponent,duration:duration}); + return contentComponent.createObject(screenLayout,{itemcomponent:itemcomponent,duration:duration}); } } function initScreenLayout(){ @@ -85,7 +86,9 @@ FluObject { } Timer { id:delayTimer - interval: duration; running: duration > 0; repeat: duration > 0 + interval: duration; + running: duration > 0; + repeat: duration > 0 onTriggered: content.close(); } FluLoader{ @@ -235,18 +238,26 @@ FluObject { } } function showSuccess(text,duration=1000,moremsg){ - mcontrol.create(mcontrol.const_success,text,duration,moremsg ? moremsg : ""); + return mcontrol.create(mcontrol.const_success,text,duration,moremsg ? moremsg : ""); } function showInfo(text,duration=1000,moremsg){ - mcontrol.create(mcontrol.const_info,text,duration,moremsg ? moremsg : ""); + return mcontrol.create(mcontrol.const_info,text,duration,moremsg ? moremsg : ""); } function showWarning(text,duration=1000,moremsg){ - mcontrol.create(mcontrol.const_warning,text,duration,moremsg ? moremsg : ""); + return mcontrol.create(mcontrol.const_warning,text,duration,moremsg ? moremsg : ""); } function showError(text,duration=1000,moremsg){ - mcontrol.create(mcontrol.const_error,text,duration,moremsg ? moremsg : ""); + return mcontrol.create(mcontrol.const_error,text,duration,moremsg ? moremsg : ""); } function showCustom(itemcomponent,duration=1000){ - mcontrol.createCustom(itemcomponent,duration); + return mcontrol.createCustom(itemcomponent,duration); + } + function clearAllInfo(){ + if(mcontrol.screenLayout != null) { + mcontrol.screenLayout.destroy() + mcontrol.screenLayout = null + } + + return true } } diff --git a/src/Qt6/imports/FluentUI/Controls/FluWindow.qml b/src/Qt6/imports/FluentUI/Controls/FluWindow.qml index 16dd0a33..a3f6f397 100644 --- a/src/Qt6/imports/FluentUI/Controls/FluWindow.qml +++ b/src/Qt6/imports/FluentUI/Controls/FluWindow.qml @@ -294,16 +294,19 @@ Window { loader_loading.sourceComponent = undefined } function showSuccess(text,duration,moremsg){ - info_bar.showSuccess(text,duration,moremsg) + return info_bar.showSuccess(text,duration,moremsg) } function showInfo(text,duration,moremsg){ - info_bar.showInfo(text,duration,moremsg) + return info_bar.showInfo(text,duration,moremsg) } function showWarning(text,duration,moremsg){ - info_bar.showWarning(text,duration,moremsg) + return info_bar.showWarning(text,duration,moremsg) } function showError(text,duration,moremsg){ - info_bar.showError(text,duration,moremsg) + return info_bar.showError(text,duration,moremsg) + } + function clearAllInfo(){ + return info_bar.clearAllInfo() } function moveWindowToDesktopCenter(){ screen = Qt.application.screens[FluTools.cursorScreenIndex()] From 9aa6615189ed896ee4f20447a6a0f86e6917b7d1 Mon Sep 17 00:00:00 2001 From: gaoxiangyang Date: Wed, 8 May 2024 21:10:00 +0800 Subject: [PATCH 2/2] =?UTF-8?q?FluRadioButtons=20=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20disabled=E3=80=81manuallyDisabled=E9=80=89?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit disabled: true // 禁用所有FluRadioButton子组件 manuallyDisabled: true // 是否指定每个FluRadioButton上的disabled选项 --- example/qml/page/T_GroupBox.qml | 36 +++++++++++++++++-- .../FluentUI/Controls/FluRadioButtons.qml | 16 ++++++++- .../FluentUI/Controls/FluRadioButtons.qml | 16 ++++++++- 3 files changed, 64 insertions(+), 4 deletions(-) diff --git a/example/qml/page/T_GroupBox.qml b/example/qml/page/T_GroupBox.qml index 7a9c698b..4da717c6 100644 --- a/example/qml/page/T_GroupBox.qml +++ b/example/qml/page/T_GroupBox.qml @@ -22,18 +22,37 @@ FluScrollablePage{ FluGroupBox { title: qsTr("RadioButton Group") + Layout.fillWidth: true + Layout.preferredHeight: 150 + Layout.topMargin: 20 FluRadioButtons { + anchors{ + verticalCenter: parent.verticalCenter + left: parent.left + } spacing: 10 + disabled: radio_button_switch.checked FluRadioButton { text: qsTr("E-mail") } FluRadioButton { text: qsTr("Calendar") } FluRadioButton { text: qsTr("Contacts") } } + + FluToggleSwitch{ + id: radio_button_switch + anchors{ + right: parent.right + verticalCenter: parent.verticalCenter + } + text: qsTr("Disabled") + } } + CodeExpander{ Layout.fillWidth: true Layout.topMargin: 4 - code:'FluGroupBox { + code:` +FluGroupBox { title: qsTr("CheckBox Group") ColumnLayout { spacing: 10 @@ -42,7 +61,20 @@ FluScrollablePage{ FluCheckBox { text: qsTr("Calendar") } FluCheckBox { text: qsTr("Contacts") } } -}' +} + +FluGroupBox { + title: qsTr("RadioButton Group") + FluRadioButtons { + spacing: 10 + disabled: true // 禁用所有FluRadioButton子组件 + manuallyDisabled: true // 是否指定每个FluRadioButton上的disabled选项 + FluRadioButton { text: qsTr("E-mail") } + FluRadioButton { text: qsTr("Calendar") } + FluRadioButton { text: qsTr("Contacts") } + } +} +` } } diff --git a/src/Qt5/imports/FluentUI/Controls/FluRadioButtons.qml b/src/Qt5/imports/FluentUI/Controls/FluRadioButtons.qml index 83060795..b725950a 100644 --- a/src/Qt5/imports/FluentUI/Controls/FluRadioButtons.qml +++ b/src/Qt5/imports/FluentUI/Controls/FluRadioButtons.qml @@ -6,6 +6,8 @@ import FluentUI 1.0 ColumnLayout { default property alias buttons: control.data property int currentIndex : -1 + property bool disabled: false + property bool manuallyDisabled: false id:control onCurrentIndexChanged: { for(var i = 0;i