From 53de208d55156aaf56f174df31595372ba4d5050 Mon Sep 17 00:00:00 2001 From: tranfelix Date: Thu, 19 Oct 2023 14:02:51 +0200 Subject: [PATCH] replace navigationsplitview with overlaysplitview show toggle sidebar only if sidebar and content don't have enough space cleaup --- src/resources/resetMainWindow.ui | 432 ++++++++++++++++--------------- src/resources/resetUI.cmb | 235 +++++++++-------- src/window/imp.rs | 27 +- src/window/mod.rs | 41 +-- 4 files changed, 372 insertions(+), 363 deletions(-) diff --git a/src/resources/resetMainWindow.ui b/src/resources/resetMainWindow.ui index 1e5078c..c61adc1 100644 --- a/src/resources/resetMainWindow.ui +++ b/src/resources/resetMainWindow.ui @@ -5,235 +5,249 @@ diff --git a/src/resources/resetUI.cmb b/src/resources/resetUI.cmb index e7da6e4..6abeabd 100644 --- a/src/resources/resetUI.cmb +++ b/src/resources/resetUI.cmb @@ -7,47 +7,49 @@ (5,1,None,"resetWifiEntry",None,None,None,None,None,None,None) - (3,1,"AdwApplicationWindow","resetUI",None,None,None,None,-1,None), - (3,2,"GtkBox",None,1,None,None,None,-1,None), - (3,3,"AdwHeaderBar",None,2,None,None,None,None,None), - (3,5,"AdwWindowTitle",None,3,None,None,None,-1,None), - (3,6,"AdwNavigationSplitView","resetNavigationSplitView",2,None,None,None,1,None), - (3,7,"AdwNavigationPage",None,6,None,None,None,-1,None), - (3,8,"AdwNavigationPage",None,6,None,None,None,-1,None), - (3,73,"GtkViewport",None,7,None,None,None,-1,None), - (3,74,"GtkBox",None,73,None,None,None,None,None), - (3,75,"GtkSearchEntry","resetSearchEntry",74,None,None,None,None,None), - (3,76,"GtkListBox","resetSidebarList",74,None,None,None,1,None), - (3,79,"GtkListBoxRow","resetWifi",76,None,None,None,1,None), - (3,81,"GtkListBoxRow","resetBluetooth",76,None,None,None,2,None), - (3,83,"GtkListBoxRow","resetVPN",76,None,None,None,3,None), - (3,85,"GtkListBoxRow","resetAudio",76,None,None,None,4,None), - (3,87,"GtkListBoxRow","resetVolume",76,None,None,None,5,None), - (3,89,"GtkListBoxRow","resetMicrophone",76,None,None,None,6,None), - (3,91,"GtkListBoxRow","resetConnectivity",76,None,None,None,None,None), - (3,93,"GtkBox",None,91,None,None,None,None,None), - (3,94,"GtkImage",None,93,None,None,None,None,None), - (3,95,"GtkLabel",None,93,None,None,None,1,None), - (3,96,"GtkBox",None,79,None,None,None,None,None), - (3,97,"GtkImage",None,96,None,None,None,None,None), - (3,98,"GtkLabel",None,96,None,None,None,1,None), - (3,99,"GtkBox",None,89,None,None,None,None,None), - (3,100,"GtkImage",None,99,None,None,None,None,None), - (3,101,"GtkLabel",None,99,None,None,None,1,None), - (3,102,"GtkBox",None,83,None,None,None,None,None), - (3,103,"GtkImage",None,102,None,None,None,None,None), - (3,104,"GtkLabel",None,102,None,None,None,1,None), - (3,105,"GtkBox",None,87,None,None,None,None,None), - (3,106,"GtkImage",None,105,None,None,None,None,None), - (3,107,"GtkLabel",None,105,None,None,None,1,None), - (3,108,"GtkBox",None,81,None,None,None,None,None), - (3,109,"GtkImage",None,108,None,None,None,None,None), - (3,110,"GtkLabel",None,108,None,None,None,1,None), - (3,111,"GtkBox",None,85,None,None,None,None,None), - (3,112,"GtkImage",None,111,None,None,None,None,None), - (3,113,"GtkLabel",None,111,None,None,None,1,None), - (3,117,"GtkFlowBox","resetMain",8,None,None,None,-1,None), - (3,118,"GtkButton","resetSideBarToggle",3,None,None,None,-1,None), + (3,1,"AdwApplicationWindow","resetUI",None,None,None,None,-1," <child>\n <object id=\"resetSidebarBreakpoint\" class=\"AdwBreakpoint\">\n </object>\n </child>"), + (3,2,"AdwOverlaySplitView","resetOverlaySplitView",1,None,None,None,None,""), + (3,3,"GtkBox",None,2,None,None,None,None,None), + (3,4,"GtkBox",None,3,None,None,None,None,None), + (3,5,"GtkButton","resetSideBarToggle",4,None,None,None,None,None), + (3,6,"GtkButton",None,4,None,None,None,1,None), + (3,7,"GtkButton",None,4,None,None,None,2,None), + (3,8,"GtkLabel",None,4,None,None,None,3,None), + (3,9,"GtkButton",None,4,None,None,None,4,None), + (3,10,"GtkButton",None,4,None,None,None,5,None), + (3,11,"GtkFlowBox","resetMain",3,None,None,None,1,None), + (3,12,"GtkViewport",None,2,None,None,None,None,None), + (3,13,"GtkBox",None,12,None,None,None,None,None), + (3,14,"GtkSearchEntry","resetSearchEntry",13,None,None,None,None,None), + (3,15,"GtkListBox","resetSidebarList",13,None,None,None,1,None), + (3,16,"GtkListBoxRow","resetConnectivity",15,None,None,None,None,None), + (3,17,"GtkBox",None,16,None,None,None,None,None), + (3,18,"GtkImage",None,17,None,None,None,None,None), + (3,19,"GtkLabel",None,17,None,None,None,1,None), + (3,20,"GtkListBoxRow","resetWifi",15,None,None,None,1,None), + (3,21,"GtkBox",None,20,None,None,None,None,None), + (3,22,"GtkImage",None,21,None,None,None,None,None), + (3,23,"GtkLabel",None,21,None,None,None,1,None), + (3,24,"GtkListBoxRow","resetBluetooth",15,None,None,None,2,None), + (3,25,"GtkBox",None,24,None,None,None,None,None), + (3,26,"GtkImage",None,25,None,None,None,None,None), + (3,27,"GtkLabel",None,25,None,None,None,1,None), + (3,28,"GtkListBoxRow","resetVPN",15,None,None,None,3,None), + (3,29,"GtkBox",None,28,None,None,None,None,None), + (3,30,"GtkImage",None,29,None,None,None,None,None), + (3,31,"GtkLabel",None,29,None,None,None,1,None), + (3,32,"GtkListBoxRow","resetAudio",15,None,None,None,4,None), + (3,33,"GtkBox",None,32,None,None,None,None,None), + (3,34,"GtkImage",None,33,None,None,None,None,None), + (3,35,"GtkLabel",None,33,None,None,None,1,None), + (3,36,"GtkListBoxRow","resetVolume",15,None,None,None,5,None), + (3,37,"GtkBox",None,36,None,None,None,None,None), + (3,38,"GtkImage",None,37,None,None,None,None,None), + (3,39,"GtkLabel",None,37,None,None,None,1,None), + (3,40,"GtkListBoxRow","resetMicrophone",15,None,None,None,6,None), + (3,41,"GtkBox",None,40,None,None,None,None,None), + (3,42,"GtkImage",None,41,None,None,None,None,None), + (3,43,"GtkLabel",None,41,None,None,None,1,None), (4,7,"GtkBox","resetWifi",None,None,None,None,None,None), (4,8,"AdwClampScrollable",None,7,None,None,None,None,None), (4,9,"GtkBox",None,8,None,None,None,None,None), @@ -68,80 +70,77 @@ (5,5,"GtkButton","resetWifiButton",2,None,None,None,2,None) - (3,2,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (3,3,"AdwHeaderBar","centering-policy","strict",None,None,None,None,None,None,None,None,None), - (3,3,"AdwHeaderBar","title-widget",None,None,None,None,None,5,None,None,None,None), - (3,5,"AdwWindowTitle","title","ReSet",None,None,None,None,None,None,None,None,None), - (3,6,"AdwNavigationSplitView","content",None,None,None,None,None,8,None,None,None,None), - (3,6,"AdwNavigationSplitView","max-sidebar-width","200.0",None,None,None,None,None,None,None,None,None), - (3,6,"AdwNavigationSplitView","min-sidebar-width","200.0",None,None,None,None,None,None,None,None,None), - (3,6,"AdwNavigationSplitView","show-content","True",None,None,None,None,None,None,None,None,None), - (3,6,"AdwNavigationSplitView","sidebar",None,None,None,None,None,7,None,None,None,None), - (3,6,"GtkWidget","vexpand","True",None,None,None,None,None,None,None,None,None), - (3,7,"AdwNavigationPage","child",None,None,None,None,None,73,None,None,None,None), - (3,7,"AdwNavigationPage","title","asdf",None,None,None,None,None,None,None,None,None), - (3,8,"AdwNavigationPage","child",None,None,None,None,None,117,None,None,None,None), - (3,8,"AdwNavigationPage","title","fdas",None,None,None,None,None,None,None,None,None), - (3,8,"GtkWidget","margin-bottom","20",None,None,None,None,None,None,None,None,None), - (3,8,"GtkWidget","margin-end","20",None,None,None,None,None,None,None,None,None), - (3,8,"GtkWidget","margin-start","20",None,None,None,None,None,None,None,None,None), - (3,8,"GtkWidget","margin-top","20",None,None,None,None,None,None,None,None,None), - (3,73,"GtkScrollable","vscroll-policy","natural",None,None,None,None,None,None,None,None,None), - (3,74,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), - (3,74,"GtkWidget","width-request","150",None,None,None,None,None,None,None,None,None), - (3,75,"GtkSearchEntry","placeholder-text","Search",None,None,None,None,None,None,None,None,None), - (3,75,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), - (3,75,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), - (3,76,"GtkWidget","css-name","resetList",None,None,None,None,None,None,None,None,None), - (3,76,"GtkWidget","width-request","150",None,None,None,None,None,None,None,None,None), - (3,93,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), - (3,93,"GtkWidget","margin-start","10",None,None,None,None,None,None,None,None,None), - (3,93,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (3,94,"GtkImage","icon-name","network-wired-symbolic",None,None,None,None,None,None,None,None,None), - (3,94,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), - (3,95,"GtkLabel","label","Connectivity",None,None,None,None,None,None,None,None,None), - (3,96,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), - (3,96,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), - (3,96,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (3,97,"GtkImage","icon-name","network-wireless-symbolic",None,None,None,None,None,None,None,None,None), - (3,97,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), - (3,98,"GtkLabel","label","WiFi",None,None,None,None,None,None,None,None,None), - (3,99,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), - (3,99,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), - (3,99,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (3,100,"GtkImage","icon-name","audio-input-microphone-symbolic",None,None,None,None,None,None,None,None,None), - (3,100,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), - (3,101,"GtkLabel","label","Microphone",None,None,None,None,None,None,None,None,None), - (3,102,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), - (3,102,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), - (3,102,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (3,103,"GtkImage","icon-name","network-vpn-symbolic",None,None,None,None,None,None,None,None,None), - (3,103,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), - (3,104,"GtkLabel","label","VPN",None,None,None,None,None,None,None,None,None), - (3,105,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), - (3,105,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), - (3,105,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (3,106,"GtkImage","icon-name","audio-volume-high-symbolic",None,None,None,None,None,None,None,None,None), - (3,106,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), - (3,107,"GtkLabel","label","Volume",None,None,None,None,None,None,None,None,None), - (3,108,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), - (3,108,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), - (3,108,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (3,109,"GtkImage","icon-name","bluetooth-symbolic",None,None,None,None,None,None,None,None,None), - (3,109,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), - (3,110,"GtkLabel","label","Bluetooth",None,None,None,None,None,None,None,None,None), - (3,111,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), - (3,111,"GtkWidget","margin-start","10",None,None,None,None,None,None,None,None,None), - (3,111,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), - (3,112,"GtkImage","icon-name","audio-headset-symbolic",None,None,None,None,None,None,None,None,None), - (3,112,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), - (3,113,"GtkLabel","label","Audio",None,None,None,None,None,None,None,None,None), - (3,117,"GtkFlowBox","column-spacing","25",None,None,None,None,None,None,None,None,None), - (3,117,"GtkFlowBox","homogeneous","True",None,None,None,None,None,None,None,None,None), - (3,117,"GtkFlowBox","row-spacing","25",None,None,None,None,None,None,None,None,None), - (3,117,"GtkFlowBox","selection-mode","none",None,None,None,None,None,None,None,None,None), - (3,117,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), - (3,118,"GtkButton","icon-name","sidebar-show-symbolic",None,None,None,None,None,None,None,None,None), + (3,2,"AdwOverlaySplitView","content",None,None,None,None,None,3,None,None,None,None), + (3,2,"AdwOverlaySplitView","max-sidebar-width","180.0",None,None,None,None,None,None,None,None,None), + (3,2,"AdwOverlaySplitView","sidebar",None,None,None,None,None,12,None,None,None,None), + (3,2,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), + (3,2,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), + (3,2,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None), + (3,3,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (3,3,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None), + (3,5,"GtkButton","icon-name","sidebar-show-symbolic",None,None,None,None,None,None,None,None,None), + (3,5,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None), + (3,6,"GtkButton","icon-name","go-previous-symbolic",None,None,None,None,None,None,None,None,None), + (3,7,"GtkButton","icon-name","go-previous-symbolic-rtl",None,None,None,None,None,None,None,None,None), + (3,8,"GtkLabel","label","breadcrum path",None,None,None,None,None,None,None,None,None), + (3,9,"GtkButton","icon-name","open-menu-symbolic",None,None,None,None,None,None,None,None,None), + (3,9,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None), + (3,9,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None), + (3,9,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None), + (3,10,"GtkButton","icon-name","window-close-symbolic",None,None,None,None,None,None,None,None,None), + (3,11,"GtkFlowBox","column-spacing","25",None,None,None,None,None,None,None,None,None), + (3,11,"GtkFlowBox","homogeneous","True",None,None,None,None,None,None,None,None,None), + (3,11,"GtkFlowBox","row-spacing","25",None,None,None,None,None,None,None,None,None), + (3,11,"GtkFlowBox","selection-mode","none",None,None,None,None,None,None,None,None,None), + (3,11,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), + (3,13,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), + (3,13,"GtkWidget","width-request","150",None,None,None,None,None,None,None,None,None), + (3,14,"GtkSearchEntry","placeholder-text","Search",None,None,None,None,None,None,None,None,None), + (3,14,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None), + (3,15,"GtkWidget","css-name","resetList",None,None,None,None,None,None,None,None,None), + (3,15,"GtkWidget","width-request","150",None,None,None,None,None,None,None,None,None), + (3,17,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), + (3,17,"GtkWidget","margin-start","10",None,None,None,None,None,None,None,None,None), + (3,17,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), + (3,18,"GtkImage","icon-name","network-wired-symbolic",None,None,None,None,None,None,None,None,None), + (3,18,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), + (3,19,"GtkLabel","label","Connectivity",None,None,None,None,None,None,None,None,None), + (3,21,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), + (3,21,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), + (3,21,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), + (3,22,"GtkImage","icon-name","network-wireless-symbolic",None,None,None,None,None,None,None,None,None), + (3,22,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), + (3,23,"GtkLabel","label","WiFi",None,None,None,None,None,None,None,None,None), + (3,25,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), + (3,25,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), + (3,25,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), + (3,26,"GtkImage","icon-name","bluetooth-symbolic",None,None,None,None,None,None,None,None,None), + (3,26,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), + (3,27,"GtkLabel","label","Bluetooth",None,None,None,None,None,None,None,None,None), + (3,29,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), + (3,29,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), + (3,29,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), + (3,30,"GtkImage","icon-name","network-vpn-symbolic",None,None,None,None,None,None,None,None,None), + (3,30,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), + (3,31,"GtkLabel","label","VPN",None,None,None,None,None,None,None,None,None), + (3,33,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), + (3,33,"GtkWidget","margin-start","10",None,None,None,None,None,None,None,None,None), + (3,33,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), + (3,34,"GtkImage","icon-name","audio-headset-symbolic",None,None,None,None,None,None,None,None,None), + (3,34,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), + (3,35,"GtkLabel","label","Audio",None,None,None,None,None,None,None,None,None), + (3,37,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), + (3,37,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), + (3,37,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), + (3,38,"GtkImage","icon-name","audio-volume-high-symbolic",None,None,None,None,None,None,None,None,None), + (3,38,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), + (3,39,"GtkLabel","label","Volume",None,None,None,None,None,None,None,None,None), + (3,41,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None), + (3,41,"GtkWidget","margin-start","30",None,None,None,None,None,None,None,None,None), + (3,41,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None), + (3,42,"GtkImage","icon-name","audio-input-microphone-symbolic",None,None,None,None,None,None,None,None,None), + (3,42,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None), + (3,43,"GtkLabel","label","Microphone",None,None,None,None,None,None,None,None,None), (4,7,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None), (4,7,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None), (4,7,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None), @@ -170,10 +169,10 @@ (5,5,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None) - (3,76,"GtkWidget",2,2,None,1,None,None,None,None), - (3,76,"GtkWidget",1,1,None,None,None,None,None,None) + (3,15,"GtkWidget",2,2,None,1,None,None,None,None), + (3,15,"GtkWidget",1,1,None,None,None,None,None,None) - (3,76,"GtkWidget",2,2,"name","b") + (3,15,"GtkWidget",2,2,"name","b") diff --git a/src/window/imp.rs b/src/window/imp.rs index 92f6f82..8014a2c 100644 --- a/src/window/imp.rs +++ b/src/window/imp.rs @@ -1,6 +1,6 @@ use adw::glib::{StaticTypeExt}; -use adw::NavigationSplitView; -use adw::subclass::prelude::AdwApplicationWindowImpl; +use adw::{Breakpoint, OverlaySplitView}; +use adw::subclass::prelude::{AdwApplicationWindowImpl}; use glib::subclass::InitializingObject; use gtk::subclass::prelude::*; use gtk::{glib, CompositeTemplate, SearchEntry, ListBox, FlowBox, Button}; @@ -11,15 +11,17 @@ use crate::wifi::WifiBox; #[template(resource = "/org/xetibo/reset/resetMainWindow.ui")] pub struct Window { #[template_child] - pub resetNavigationSplitView: TemplateChild, + pub resetMain: TemplateChild, + #[template_child] + pub resetSidebarBreakpoint: TemplateChild, + #[template_child] + pub resetOverlaySplitView: TemplateChild, #[template_child] pub resetSearchEntry: TemplateChild, #[template_child] pub resetSidebarList: TemplateChild, #[template_child] - pub resetMain: TemplateChild, - #[template_child] - pub resetSideBarToggle: TemplateChild