diff --git a/example/T_Settings.qml b/example/T_Settings.qml
new file mode 100644
index 0000000..dd1ed94
--- /dev/null
+++ b/example/T_Settings.qml
@@ -0,0 +1,51 @@
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.Window
+import QtQuick.Controls
+import FluentUI
+import "qrc:///global/"
+import "./component"
+
+FluScrollablePage{
+
+ title:"Settings"
+ leftPadding:10
+ rightPadding:10
+ bottomPadding:20
+ spacing: 0
+
+ FluArea{
+ Layout.fillWidth: true
+ Layout.topMargin: 20
+ height: 200
+ paddings: 10
+
+ ColumnLayout{
+ spacing: 10
+ anchors{
+ verticalCenter: parent.verticalCenter
+ left: parent.left
+ }
+
+ FluText{
+ text:"NavigationView Display Mode"
+ fontStyle: FluText.BodyStrong
+ Layout.bottomMargin: 4
+ }
+
+ Repeater{
+ id:repeater
+ model: [{title:"Top",mode:FluNavigationView2.Top},{title:"Open",mode:FluNavigationView2.Open},{title:"Compact",mode:FluNavigationView2.Compact},{title:"Minimal",mode:FluNavigationView2.Minimal},{title:"Auto",mode:FluNavigationView2.Auto}]
+ delegate: FluRadioButton{
+ selected : MainEvent.displayMode===modelData.mode
+ text:modelData.title
+ onClicked:{
+ MainEvent.displayMode = modelData.mode
+ console.debug(modelData.mode)
+ }
+ }
+ }
+ }
+
+ }
+}
diff --git a/example/global/ItemsFooter.qml b/example/global/ItemsFooter.qml
index 363a9a9..9e34533 100644
--- a/example/global/ItemsFooter.qml
+++ b/example/global/ItemsFooter.qml
@@ -5,17 +5,22 @@ import FluentUI
FluObject{
id:footer_items
+
+ property var navigationView
+
FluPaneItemSeparator{}
FluPaneItem{
- title:"意见反馈"
- onTap:{
- Qt.openUrlExternally("https://github.com/zhuzichu520/FluentUI/issues/new")
- }
- }
- FluPaneItem{
- title:"关于"
- onTap:{
+ title:"About"
+ icon:FluentIcons.Contact
+ tapFunc:function(){
FluApp.navigate("/about")
}
}
+ FluPaneItem{
+ title:"Settings"
+ icon:FluentIcons.Settings
+ onTap:{
+ navigationView.push("qrc:/T_Settings.qml")
+ }
+ }
}
diff --git a/example/global/ItemsOriginal.qml b/example/global/ItemsOriginal.qml
index fd3b9ec..87bd306 100644
--- a/example/global/ItemsOriginal.qml
+++ b/example/global/ItemsOriginal.qml
@@ -308,7 +308,6 @@ FluObject{
if(navigationView.getCurrentIndex() === i){
return
}
- item.tap()
navigationView.setCurrentIndex(i)
if(item.parent){
item.parent.isExpand = true
diff --git a/example/global/MainEvent.qml b/example/global/MainEvent.qml
new file mode 100644
index 0000000..aae1ca3
--- /dev/null
+++ b/example/global/MainEvent.qml
@@ -0,0 +1,10 @@
+pragma Singleton
+
+import QtQuick
+import FluentUI
+
+QtObject {
+
+ property int displayMode : FluNavigationView2.Open
+
+}
diff --git a/example/global/qmldir b/example/global/qmldir
index eb6bfea..a112280 100644
--- a/example/global/qmldir
+++ b/example/global/qmldir
@@ -1,2 +1,3 @@
singleton ItemsOriginal 1.0 ItemsOriginal.qml
singleton ItemsFooter 1.0 ItemsFooter.qml
+singleton MainEvent 1.0 MainEvent.qml
diff --git a/example/page/MainPage.qml b/example/page/MainPage.qml
index a9ca7d0..e312232 100644
--- a/example/page/MainPage.qml
+++ b/example/page/MainPage.qml
@@ -15,25 +15,27 @@ FluWindow {
FluAppBar{
id:appbar
- z:10
+ z:9
showDark: true
width:parent.width
+ darkText: "Dark Mode"
}
- FluNavigationView{
+ FluNavigationView2{
id:nav_view
anchors.fill: parent
items: ItemsOriginal
footerItems:ItemsFooter
+ z:11
+ displayMode:MainEvent.displayMode
logo: "qrc:/res/image/favicon.ico"
- z: 11
title:"FluentUI"
autoSuggestBox:FluAutoSuggestBox{
width: 280
anchors.centerIn: parent
iconSource: FluentIcons.Zoom
items: ItemsOriginal.getSearchData()
- placeholderText: "查找"
+ placeholderText: "Search"
onItemClicked:
(data)=>{
ItemsOriginal.startPageByItem(data)
@@ -41,8 +43,8 @@ FluWindow {
}
Component.onCompleted: {
ItemsOriginal.navigationView = nav_view
+ ItemsFooter.navigationView = nav_view
nav_view.setCurrentIndex(0)
- nav_view.push("qrc:/T_Home.qml")
}
}
diff --git a/example/qml.qrc b/example/qml.qrc
index 672f023..343900b 100644
--- a/example/qml.qrc
+++ b/example/qml.qrc
@@ -158,5 +158,7 @@
component/CodeExpander.qml
T_TableView.qml
T_StatusView.qml
+ T_Settings.qml
+ global/MainEvent.qml
diff --git a/src/Fluent.cpp b/src/Fluent.cpp
index 7551241..831160d 100644
--- a/src/Fluent.cpp
+++ b/src/Fluent.cpp
@@ -33,6 +33,7 @@ void Fluent::registerTypes(const char *uri){
qmlRegisterType(uri,major,minor,"WindowHelper");
qmlRegisterType(uri,major,minor,"FluColorSet");
+ qmlRegisterType(QUrl("qrc:/com.zhuzichu/controls/FluNavigationView2.qml"),uri,major,minor,"FluNavigationView2");
qmlRegisterType(QUrl("qrc:/com.zhuzichu/controls/FluStatusView.qml"),uri,major,minor,"FluStatusView");
qmlRegisterType(QUrl("qrc:/com.zhuzichu/controls/FluPagination.qml"),uri,major,minor,"FluPagination");
qmlRegisterType(QUrl("qrc:/com.zhuzichu/controls/FluToggleButton.qml"),uri,major,minor,"FluToggleButton");
diff --git a/src/controls/FluAutoSuggestBox.qml b/src/controls/FluAutoSuggestBox.qml
index f633ef0..29ce597 100644
--- a/src/controls/FluAutoSuggestBox.qml
+++ b/src/controls/FluAutoSuggestBox.qml
@@ -5,6 +5,7 @@ import FluentUI
FluTextBox{
property var items:[]
property string emptyText: "没有找到结果"
+ property int autoSuggestBoxReplacement: FluentIcons.Zoom
signal itemClicked(var data)
signal handleClicked
QtObject{
diff --git a/src/controls/FluNavigationView.qml b/src/controls/FluNavigationView.qml
index 4c9941b..c39f0ff 100644
--- a/src/controls/FluNavigationView.qml
+++ b/src/controls/FluNavigationView.qml
@@ -520,6 +520,7 @@ Item {
return footerItems.children
}
}
+ interactive: false
currentIndex: -1
delegate: Loader{
property var model: modelData
diff --git a/src/controls/FluNavigationView2.qml b/src/controls/FluNavigationView2.qml
new file mode 100644
index 0000000..0108601
--- /dev/null
+++ b/src/controls/FluNavigationView2.qml
@@ -0,0 +1,668 @@
+import QtQuick
+import QtQuick.Window
+import QtQuick.Controls
+import QtQuick.Layouts
+import FluentUI
+
+Item {
+
+ enum DisplayMode {
+ Open,
+ Top,
+ Compact,
+ Minimal,
+ Auto
+ }
+
+ property url logo
+ property string title: ""
+ property FluObject items
+ property FluObject footerItems
+ property int displayMode: FluNavigationView2.Open
+ property Component autoSuggestBox
+ property var window : {
+ if(Window.window == null)
+ return null
+ return Window.window
+ }
+
+ id:control
+
+ QtObject{
+ id:d
+ property bool enableStack: true
+ property var stackItems: []
+ property bool enableNavigationPanel: false
+ function handleItems(){
+ var idx = 0
+ var data = []
+ if(items){
+ for(var i=0;icontrols/FluPagination.qml
controls/FluToggleButton.qml
controls/FluStatusView.qml
+ controls/FluNavigationView2.qml
+ controls/FluPaneItemEmpty.qml