mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-04-08 22:52:01 +02:00
add button to toggle sidebar
sidebar can hide itself if not enough space fix dependencies
This commit is contained in:
parent
e7a7f76f2c
commit
62af24da81
|
@ -5,9 +5,9 @@ edition = "2021"
|
|||
description = "A wip universal Linux settings application."
|
||||
|
||||
[dependencies]
|
||||
ReSet-Lib = "0.1.0"
|
||||
adw = { version = "0.5.3", package = "libadwaita" }
|
||||
gtk = { version = "0.7.3", package = "gtk4" }
|
||||
ReSet-Lib = "*"
|
||||
adw = { version = "*", package = "libadwaita", features = ["v1_4"]}
|
||||
gtk = { version = "*", package = "gtk4"}
|
||||
|
||||
[build-dependencies]
|
||||
glib-build-tools = "0.18.0"
|
||||
glib-build-tools = "*"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!-- Created with Cambalache 0.17.0 -->
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.8"/>
|
||||
<requires lib="gtk" version="4.12"/>
|
||||
<requires lib="libadwaita" version="1.4"/>
|
||||
<template class="resetUI" parent="AdwApplicationWindow">
|
||||
<child>
|
||||
|
@ -16,19 +16,17 @@
|
|||
</object>
|
||||
</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="test"/>
|
||||
<object class="GtkButton" id="resetSideBarToggle">
|
||||
<property name="icon-name">sidebar-show-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwNavigationSplitView">
|
||||
<object class="AdwNavigationSplitView" id="resetNavigationSplitView">
|
||||
<property name="content">
|
||||
<object class="AdwNavigationPage">
|
||||
<property name="margin-bottom">20</property>
|
||||
<property name="margin-end">20</property>
|
||||
<property name="margin-start">20</property>
|
||||
<property name="margin-top">20</property>
|
||||
<child>
|
||||
<property name="child">
|
||||
<object class="GtkFlowBox" id="resetMain">
|
||||
<property name="column-spacing">25</property>
|
||||
<property name="homogeneous">True</property>
|
||||
|
@ -36,9 +34,17 @@
|
|||
<property name="selection-mode">none</property>
|
||||
<property name="valign">start</property>
|
||||
</object>
|
||||
</child>
|
||||
</property>
|
||||
<property name="margin-bottom">20</property>
|
||||
<property name="margin-end">20</property>
|
||||
<property name="margin-start">20</property>
|
||||
<property name="margin-top">20</property>
|
||||
<property name="title">fdas</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="max-sidebar-width">200.0</property>
|
||||
<property name="min-sidebar-width">200.0</property>
|
||||
<property name="show-content">True</property>
|
||||
<property name="sidebar">
|
||||
<object class="AdwNavigationPage">
|
||||
<property name="child">
|
||||
|
@ -174,7 +180,7 @@
|
|||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-bottom">10</property>
|
||||
<property name="margin-start">35</property>
|
||||
<property name="margin-start">30</property>
|
||||
<property name="margin-top">10</property>
|
||||
<child>
|
||||
<object class="GtkImage">
|
||||
|
@ -222,6 +228,7 @@
|
|||
</child>
|
||||
</object>
|
||||
</property>
|
||||
<property name="title">asdf</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="vexpand">True</property>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
(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",None,2,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),
|
||||
|
@ -46,8 +46,8 @@
|
|||
(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,115,"GtkLabel","test",3,None,None,None,-1,None),
|
||||
(3,116,"GtkFlowBox","resetMain",8,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),
|
||||
(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),
|
||||
|
@ -73,9 +73,15 @@
|
|||
(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),
|
||||
|
@ -113,7 +119,7 @@
|
|||
(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","35",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),
|
||||
|
@ -130,11 +136,12 @@
|
|||
(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,116,"GtkFlowBox","column-spacing","25",None,None,None,None,None,None,None,None,None),
|
||||
(3,116,"GtkFlowBox","homogeneous","True",None,None,None,None,None,None,None,None,None),
|
||||
(3,116,"GtkFlowBox","row-spacing","25",None,None,None,None,None,None,None,None,None),
|
||||
(3,116,"GtkFlowBox","selection-mode","none",None,None,None,None,None,None,None,None,None),
|
||||
(3,116,"GtkWidget","valign","start",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),
|
||||
(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),
|
||||
|
|
|
@ -5,8 +5,6 @@ mod wifiEntry;
|
|||
|
||||
use adw::glib::Object;
|
||||
use gtk::{glib};
|
||||
use gtk::prelude::WidgetExt;
|
||||
use gtk::subclass::prelude::*;
|
||||
|
||||
glib::wrapper! {
|
||||
pub struct WifiBox(ObjectSubclass<wifiBox::WifiBox>)
|
||||
|
@ -26,8 +24,4 @@ impl WifiBox {
|
|||
}
|
||||
}
|
||||
|
||||
impl WifiEntry {
|
||||
fn onClick(&self) {
|
||||
self.imp().resetWifiButton.set_tooltip_text(Option::from("asd"));
|
||||
}
|
||||
}
|
||||
impl WifiEntry {}
|
|
@ -3,13 +3,13 @@ use gtk::prelude::*;
|
|||
use gtk::subclass::prelude::*;
|
||||
use crate::wifi::WifiEntry;
|
||||
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[derive(Default, CompositeTemplate)]
|
||||
#[template(resource = "/org/xetibo/reset/resetWiFi.ui")]
|
||||
pub struct WifiBox {
|
||||
#[template_child]
|
||||
pub resetWifiList: TemplateChild<ListBox>,
|
||||
// pub resetWifiList2: Vec<ListBox>,
|
||||
}
|
||||
|
||||
#[glib::object_subclass]
|
||||
|
@ -31,6 +31,16 @@ impl ObjectSubclass for WifiBox {
|
|||
impl ObjectImpl for WifiBox {
|
||||
fn constructed(&self) {
|
||||
self.parent_constructed();
|
||||
|
||||
// for i in 0.. {
|
||||
// let listEntryOption = self.resetWifiList.row_at_index(i);
|
||||
// match listEntryOption {
|
||||
// None => break,
|
||||
// Some(row) => {
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
use adw::glib::StaticTypeExt;
|
||||
use adw::glib::{StaticTypeExt};
|
||||
use adw::NavigationSplitView;
|
||||
use adw::subclass::prelude::AdwApplicationWindowImpl;
|
||||
use glib::subclass::InitializingObject;
|
||||
use gtk::subclass::prelude::*;
|
||||
use gtk::{glib, CompositeTemplate, SearchEntry, Label, ListBox, FlowBox};
|
||||
use gtk::{glib, CompositeTemplate, SearchEntry, ListBox, FlowBox, Button};
|
||||
use crate::wifi::WifiBox;
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[derive(CompositeTemplate, Default)]
|
||||
#[template(resource = "/org/xetibo/reset/resetMainWindow.ui")]
|
||||
pub struct Window {
|
||||
#[template_child]
|
||||
pub resetNavigationSplitView: TemplateChild<NavigationSplitView>,
|
||||
#[template_child]
|
||||
pub resetSearchEntry: TemplateChild<SearchEntry>,
|
||||
#[template_child]
|
||||
|
@ -16,7 +19,7 @@ pub struct Window {
|
|||
#[template_child]
|
||||
pub resetMain: TemplateChild<FlowBox>,
|
||||
#[template_child]
|
||||
pub test: TemplateChild<Label>,
|
||||
pub resetSideBarToggle: TemplateChild<Button>
|
||||
}
|
||||
|
||||
#[glib::object_subclass]
|
||||
|
@ -54,7 +57,17 @@ impl ObjectImpl for Window {
|
|||
}
|
||||
}
|
||||
|
||||
impl WidgetImpl for Window {}
|
||||
impl WidgetImpl for Window {
|
||||
fn size_allocate(&self, width: i32, height: i32, baseline: i32) {
|
||||
println!("new width {}, new hight {}", width, height);
|
||||
self.parent_size_allocate(width, height, baseline);
|
||||
if width < 550 {
|
||||
self.obj().hideSidebar(true);
|
||||
} else {
|
||||
self.obj().hideSidebar(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl WindowImpl for Window {}
|
||||
|
||||
|
|
|
@ -23,19 +23,14 @@ impl Window {
|
|||
self.imp()
|
||||
.resetSearchEntry
|
||||
.connect_search_changed(clone!(@ weak self as window => move |_| {
|
||||
window.setText();
|
||||
window.filterList();
|
||||
}));
|
||||
}
|
||||
|
||||
fn setText(&self) {
|
||||
let buffer = self.imp()
|
||||
.resetSearchEntry
|
||||
.text()
|
||||
.to_string();
|
||||
self.imp()
|
||||
.test
|
||||
.set_text(&buffer);
|
||||
.resetSideBarToggle
|
||||
.connect_clicked(clone!(@ weak self as window => move |_| {
|
||||
window.toggleSidebar();
|
||||
}));
|
||||
}
|
||||
|
||||
fn filterList(&self) {
|
||||
|
@ -57,4 +52,22 @@ impl Window {
|
|||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
fn hideSidebar(&self, hidden: bool) {
|
||||
self.imp()
|
||||
.resetNavigationSplitView
|
||||
.set_collapsed(hidden);
|
||||
}
|
||||
|
||||
fn toggleSidebar(&self) {
|
||||
if self.imp().resetNavigationSplitView.shows_content() {
|
||||
self.imp()
|
||||
.resetNavigationSplitView
|
||||
.set_show_content(false);
|
||||
} else {
|
||||
self.imp()
|
||||
.resetNavigationSplitView
|
||||
.set_show_content(true);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue