From 57fa166da3b9e5efd1381d940894b8023e329bab Mon Sep 17 00:00:00 2001 From: Mentalflow <312902918@qq.com> Date: Sun, 14 May 2023 18:31:17 +0800 Subject: [PATCH] Add PageMode for FluNavigationView. --- .../FluentUI/Controls/FluContentPage.qml | 2 ++ .../FluentUI/Controls/FluNavigationView.qml | 33 ++++++++++++++++++- .../FluentUI/Controls/FluScrollablePage.qml | 2 ++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/imports/FluentUI/Controls/FluContentPage.qml b/src/imports/FluentUI/Controls/FluContentPage.qml index 4f3ac99..15f4842 100644 --- a/src/imports/FluentUI/Controls/FluContentPage.qml +++ b/src/imports/FluentUI/Controls/FluContentPage.qml @@ -12,6 +12,8 @@ Item { property int topPadding: 0 property int rightPadding: 0 property int bottomPadding: 0 + property int pageMode: FluNavigationView.SingleTask + property string url: '' id:control diff --git a/src/imports/FluentUI/Controls/FluNavigationView.qml b/src/imports/FluentUI/Controls/FluNavigationView.qml index 2f95143..855d521 100644 --- a/src/imports/FluentUI/Controls/FluNavigationView.qml +++ b/src/imports/FluentUI/Controls/FluNavigationView.qml @@ -22,6 +22,12 @@ Item { property Component autoSuggestBox property Component actionItem + enum PageModeFlag{ + Standard = 0, + SingleTop = 1, + SingleTask = 2 + } + id:control QtObject{ @@ -900,7 +906,32 @@ Item { } function push(url){ - nav_swipe.push(url) + if (nav_swipe.depth>0) + { + let page = nav_swipe.find(function(item) { + return item.url === url; + }) + if (page) + { + switch(page.pageMode) + { + case FluNavigationView.SingleTask: + while(nav_swipe.currentItem !== page) + { + nav_swipe.pop() + d.stackItems.pop() + } + return + case FluNavigationView.SingleTop: + if (nav_swipe.currentItem.url === url) + return + break + case FluNavigationView.Standard: + default: + } + } + } + nav_swipe.push(url,{url:url}) } function getCurrentIndex(){ diff --git a/src/imports/FluentUI/Controls/FluScrollablePage.qml b/src/imports/FluentUI/Controls/FluScrollablePage.qml index f71b85c..00a0c4f 100644 --- a/src/imports/FluentUI/Controls/FluScrollablePage.qml +++ b/src/imports/FluentUI/Controls/FluScrollablePage.qml @@ -13,6 +13,8 @@ Item { property int topPadding: 0 property int rightPadding: 10 property int bottomPadding: 10 + property int pageMode: FluNavigationView.SingleTask + property string url: '' id:control