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()]