mirror of
				https://github.com/Xetibo/ReSet.git
				synced 2025-11-04 01:35:20 +01:00 
			
		
		
		
	feat: Add dynamic window expansion
This commit is contained in:
		
							parent
							
								
									e03dad964b
								
							
						
					
					
						commit
						4836f1d8c2
					
				
					 10 changed files with 61 additions and 49 deletions
				
			
		| 
						 | 
					@ -5,14 +5,14 @@ use std::time::{Duration, SystemTime};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use adw::glib;
 | 
					use adw::glib;
 | 
				
			||||||
use adw::glib::Object;
 | 
					use adw::glib::Object;
 | 
				
			||||||
use adw::prelude::{ComboRowExt, ListModelExtManual};
 | 
					use adw::prelude::{ComboRowExt, ListModelExtManual, PreferencesGroupExt};
 | 
				
			||||||
use adw::subclass::prelude::ObjectSubclassIsExt;
 | 
					use adw::subclass::prelude::ObjectSubclassIsExt;
 | 
				
			||||||
use dbus::blocking::Connection;
 | 
					use dbus::blocking::Connection;
 | 
				
			||||||
use dbus::message::SignalArgs;
 | 
					use dbus::message::SignalArgs;
 | 
				
			||||||
use dbus::{Error, Path};
 | 
					use dbus::{Error, Path};
 | 
				
			||||||
use glib::{clone, Cast};
 | 
					use glib::{clone, Cast};
 | 
				
			||||||
use gtk::glib::Variant;
 | 
					use gtk::glib::Variant;
 | 
				
			||||||
use gtk::prelude::{ActionableExt, BoxExt, ButtonExt, ListBoxRowExt, WidgetExt};
 | 
					use gtk::prelude::{ActionableExt, ButtonExt, ListBoxRowExt, WidgetExt};
 | 
				
			||||||
use gtk::{gio, StringObject, Widget};
 | 
					use gtk::{gio, StringObject, Widget};
 | 
				
			||||||
use ReSet_Lib::bluetooth::bluetooth::{BluetoothAdapter, BluetoothDevice};
 | 
					use ReSet_Lib::bluetooth::bluetooth::{BluetoothAdapter, BluetoothDevice};
 | 
				
			||||||
use ReSet_Lib::signals::{BluetoothDeviceAdded, BluetoothDeviceChanged, BluetoothDeviceRemoved};
 | 
					use ReSet_Lib::signals::{BluetoothDeviceAdded, BluetoothDeviceChanged, BluetoothDeviceRemoved};
 | 
				
			||||||
| 
						 | 
					@ -183,9 +183,9 @@ pub fn populate_conntected_bluetooth_devices(bluetooth_box: Arc<BluetoothBox>) {
 | 
				
			||||||
                        .borrow_mut()
 | 
					                        .borrow_mut()
 | 
				
			||||||
                        .insert(path, (bluetooth_entry.clone(), entry.clone(), device));
 | 
					                        .insert(path, (bluetooth_entry.clone(), entry.clone(), device));
 | 
				
			||||||
                    if connected {
 | 
					                    if connected {
 | 
				
			||||||
                        imp.reset_bluetooth_connected_devices.append(&*entry);
 | 
					                        imp.reset_bluetooth_connected_devices.add(&*entry);
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        imp.reset_bluetooth_available_devices.append(&*entry);
 | 
					                        imp.reset_bluetooth_available_devices.add(&*entry);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
| 
						 | 
					@ -245,9 +245,9 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
 | 
				
			||||||
                        (bluetooth_entry.clone(), entry.clone(), ir.bluetooth_device),
 | 
					                        (bluetooth_entry.clone(), entry.clone(), ir.bluetooth_device),
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
                    if connected {
 | 
					                    if connected {
 | 
				
			||||||
                        imp.reset_bluetooth_connected_devices.append(&*entry);
 | 
					                        imp.reset_bluetooth_connected_devices.add(&*entry);
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        imp.reset_bluetooth_available_devices.append(&*entry);
 | 
					                        imp.reset_bluetooth_available_devices.add(&*entry);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
| 
						 | 
					@ -287,10 +287,10 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
 | 
				
			||||||
                    if let Some(list_entry) = map.get(&ir.bluetooth_device.path) {
 | 
					                    if let Some(list_entry) = map.get(&ir.bluetooth_device.path) {
 | 
				
			||||||
                        if list_entry.2.connected != ir.bluetooth_device.connected {
 | 
					                        if list_entry.2.connected != ir.bluetooth_device.connected {
 | 
				
			||||||
                            if ir.bluetooth_device.connected {
 | 
					                            if ir.bluetooth_device.connected {
 | 
				
			||||||
                                imp.reset_bluetooth_connected_devices.append(&*list_entry.1);
 | 
					                                imp.reset_bluetooth_connected_devices.add(&*list_entry.1);
 | 
				
			||||||
                                imp.reset_bluetooth_available_devices.remove(&*list_entry.1);
 | 
					                                imp.reset_bluetooth_available_devices.remove(&*list_entry.1);
 | 
				
			||||||
                            } else {
 | 
					                            } else {
 | 
				
			||||||
                                imp.reset_bluetooth_available_devices.append(&*list_entry.1);
 | 
					                                imp.reset_bluetooth_available_devices.add(&*list_entry.1);
 | 
				
			||||||
                                imp.reset_bluetooth_connected_devices.remove(&*list_entry.1);
 | 
					                                imp.reset_bluetooth_connected_devices.remove(&*list_entry.1);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
use adw::{ActionRow, ComboRow};
 | 
					use adw::{ActionRow, ComboRow, PreferencesGroup};
 | 
				
			||||||
use dbus::Path;
 | 
					use dbus::Path;
 | 
				
			||||||
use gtk::subclass::prelude::*;
 | 
					use gtk::subclass::prelude::*;
 | 
				
			||||||
use gtk::{glib, Button, CompositeTemplate, Switch};
 | 
					use gtk::{glib, Button, CompositeTemplate, Switch};
 | 
				
			||||||
| 
						 | 
					@ -21,13 +21,13 @@ pub struct BluetoothBox {
 | 
				
			||||||
    #[template_child]
 | 
					    #[template_child]
 | 
				
			||||||
    pub reset_bluetooth_switch: TemplateChild<Switch>,
 | 
					    pub reset_bluetooth_switch: TemplateChild<Switch>,
 | 
				
			||||||
    #[template_child]
 | 
					    #[template_child]
 | 
				
			||||||
    pub reset_bluetooth_available_devices: TemplateChild<gtk::Box>,
 | 
					    pub reset_bluetooth_available_devices: TemplateChild<PreferencesGroup>,
 | 
				
			||||||
    #[template_child]
 | 
					    #[template_child]
 | 
				
			||||||
    pub reset_bluetooth_refresh_button: TemplateChild<Button>,
 | 
					    pub reset_bluetooth_refresh_button: TemplateChild<Button>,
 | 
				
			||||||
    #[template_child]
 | 
					    #[template_child]
 | 
				
			||||||
    pub reset_bluetooth_adapter: TemplateChild<ComboRow>,
 | 
					    pub reset_bluetooth_adapter: TemplateChild<ComboRow>,
 | 
				
			||||||
    #[template_child]
 | 
					    #[template_child]
 | 
				
			||||||
    pub reset_bluetooth_connected_devices: TemplateChild<gtk::Box>,
 | 
					    pub reset_bluetooth_connected_devices: TemplateChild<PreferencesGroup>,
 | 
				
			||||||
    #[template_child]
 | 
					    #[template_child]
 | 
				
			||||||
    pub reset_visibility: TemplateChild<ActionRow>,
 | 
					    pub reset_visibility: TemplateChild<ActionRow>,
 | 
				
			||||||
    #[template_child]
 | 
					    #[template_child]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ use crate::components::wifi::wifi_box::{
 | 
				
			||||||
    scan_for_wifi, show_stored_connections, start_event_listener, WifiBox,
 | 
					    scan_for_wifi, show_stored_connections, start_event_listener, WifiBox,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
use gtk::prelude::WidgetExt;
 | 
					use gtk::prelude::WidgetExt;
 | 
				
			||||||
use gtk::{FlowBox, Frame};
 | 
					use gtk::{Align, FlowBox, FlowBoxChild, Frame};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub const HANDLE_CONNECTIVITY_CLICK: fn(Arc<Listeners>, FlowBox) =
 | 
					pub const HANDLE_CONNECTIVITY_CLICK: fn(Arc<Listeners>, FlowBox) =
 | 
				
			||||||
    |listeners: Arc<Listeners>, reset_main: FlowBox| {
 | 
					    |listeners: Arc<Listeners>, reset_main: FlowBox| {
 | 
				
			||||||
| 
						 | 
					@ -22,11 +22,11 @@ pub const HANDLE_CONNECTIVITY_CLICK: fn(Arc<Listeners>, FlowBox) =
 | 
				
			||||||
        start_event_listener(listeners.clone(), wifi_box.clone());
 | 
					        start_event_listener(listeners.clone(), wifi_box.clone());
 | 
				
			||||||
        show_stored_connections(wifi_box.clone());
 | 
					        show_stored_connections(wifi_box.clone());
 | 
				
			||||||
        scan_for_wifi(wifi_box.clone());
 | 
					        scan_for_wifi(wifi_box.clone());
 | 
				
			||||||
        let wifi_frame = wrap_in_frame(SettingBox::new(&*wifi_box));
 | 
					        let wifi_frame = wrap_in_flow_box_child(SettingBox::new(&*wifi_box));
 | 
				
			||||||
        let bluetooth_box = BluetoothBox::new(listeners.clone());
 | 
					        let bluetooth_box = BluetoothBox::new(listeners.clone());
 | 
				
			||||||
        populate_conntected_bluetooth_devices(bluetooth_box.clone());
 | 
					        populate_conntected_bluetooth_devices(bluetooth_box.clone());
 | 
				
			||||||
        start_bluetooth_listener(listeners.clone(), bluetooth_box.clone());
 | 
					        start_bluetooth_listener(listeners.clone(), bluetooth_box.clone());
 | 
				
			||||||
        let bluetooth_frame = wrap_in_frame(SettingBox::new(&*bluetooth_box));
 | 
					        let bluetooth_frame = wrap_in_flow_box_child(SettingBox::new(&*bluetooth_box));
 | 
				
			||||||
        reset_main.remove_all();
 | 
					        reset_main.remove_all();
 | 
				
			||||||
        reset_main.insert(&wifi_frame, -1);
 | 
					        reset_main.insert(&wifi_frame, -1);
 | 
				
			||||||
        reset_main.insert(&bluetooth_frame, -1);
 | 
					        reset_main.insert(&bluetooth_frame, -1);
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,7 @@ pub const HANDLE_WIFI_CLICK: fn(Arc<Listeners>, FlowBox) =
 | 
				
			||||||
        start_event_listener(listeners.clone(), wifi_box.clone());
 | 
					        start_event_listener(listeners.clone(), wifi_box.clone());
 | 
				
			||||||
        show_stored_connections(wifi_box.clone());
 | 
					        show_stored_connections(wifi_box.clone());
 | 
				
			||||||
        scan_for_wifi(wifi_box.clone());
 | 
					        scan_for_wifi(wifi_box.clone());
 | 
				
			||||||
        let wifi_frame = wrap_in_frame(SettingBox::new(&*wifi_box));
 | 
					        let wifi_frame = wrap_in_flow_box_child(SettingBox::new(&*wifi_box));
 | 
				
			||||||
        reset_main.remove_all();
 | 
					        reset_main.remove_all();
 | 
				
			||||||
        reset_main.insert(&wifi_frame, -1);
 | 
					        reset_main.insert(&wifi_frame, -1);
 | 
				
			||||||
        reset_main.set_max_children_per_line(1);
 | 
					        reset_main.set_max_children_per_line(1);
 | 
				
			||||||
| 
						 | 
					@ -54,7 +54,7 @@ pub const HANDLE_BLUETOOTH_CLICK: fn(Arc<Listeners>, FlowBox) =
 | 
				
			||||||
        let bluetooth_box = BluetoothBox::new(listeners.clone());
 | 
					        let bluetooth_box = BluetoothBox::new(listeners.clone());
 | 
				
			||||||
        start_bluetooth_listener(listeners.clone(), bluetooth_box.clone());
 | 
					        start_bluetooth_listener(listeners.clone(), bluetooth_box.clone());
 | 
				
			||||||
        populate_conntected_bluetooth_devices(bluetooth_box.clone());
 | 
					        populate_conntected_bluetooth_devices(bluetooth_box.clone());
 | 
				
			||||||
        let bluetooth_frame = wrap_in_frame(SettingBox::new(&*bluetooth_box));
 | 
					        let bluetooth_frame = wrap_in_flow_box_child(SettingBox::new(&*bluetooth_box));
 | 
				
			||||||
        reset_main.remove_all();
 | 
					        reset_main.remove_all();
 | 
				
			||||||
        reset_main.insert(&bluetooth_frame, -1);
 | 
					        reset_main.insert(&bluetooth_frame, -1);
 | 
				
			||||||
        reset_main.set_max_children_per_line(1);
 | 
					        reset_main.set_max_children_per_line(1);
 | 
				
			||||||
| 
						 | 
					@ -72,9 +72,9 @@ pub const HANDLE_AUDIO_CLICK: fn(Arc<Listeners>, FlowBox) =
 | 
				
			||||||
            Some(audio_input.clone()),
 | 
					            Some(audio_input.clone()),
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
        populate_sinks(audio_output.clone());
 | 
					        populate_sinks(audio_output.clone());
 | 
				
			||||||
        let audio_frame = wrap_in_frame(SettingBox::new(&*audio_output));
 | 
					        let audio_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_output));
 | 
				
			||||||
        populate_sources(audio_input.clone());
 | 
					        populate_sources(audio_input.clone());
 | 
				
			||||||
        let source_frame = wrap_in_frame(SettingBox::new(&*audio_input));
 | 
					        let source_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_input));
 | 
				
			||||||
        reset_main.remove_all();
 | 
					        reset_main.remove_all();
 | 
				
			||||||
        reset_main.insert(&audio_frame, -1);
 | 
					        reset_main.insert(&audio_frame, -1);
 | 
				
			||||||
        reset_main.insert(&source_frame, -1);
 | 
					        reset_main.insert(&source_frame, -1);
 | 
				
			||||||
| 
						 | 
					@ -91,7 +91,7 @@ pub const HANDLE_VOLUME_CLICK: fn(Arc<Listeners>, FlowBox) =
 | 
				
			||||||
            std::hint::spin_loop()
 | 
					            std::hint::spin_loop()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        populate_sinks(audio_output.clone());
 | 
					        populate_sinks(audio_output.clone());
 | 
				
			||||||
        let audio_frame = wrap_in_frame(SettingBox::new(&*audio_output));
 | 
					        let audio_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_output));
 | 
				
			||||||
        reset_main.remove_all();
 | 
					        reset_main.remove_all();
 | 
				
			||||||
        reset_main.insert(&audio_frame, -1);
 | 
					        reset_main.insert(&audio_frame, -1);
 | 
				
			||||||
        reset_main.set_max_children_per_line(1);
 | 
					        reset_main.set_max_children_per_line(1);
 | 
				
			||||||
| 
						 | 
					@ -104,7 +104,7 @@ pub const HANDLE_MICROPHONE_CLICK: fn(Arc<Listeners>, FlowBox) =
 | 
				
			||||||
        let audio_input = Arc::new(SourceBox::new());
 | 
					        let audio_input = Arc::new(SourceBox::new());
 | 
				
			||||||
        start_audio_listener(listeners.clone(), None, Some(audio_input.clone()));
 | 
					        start_audio_listener(listeners.clone(), None, Some(audio_input.clone()));
 | 
				
			||||||
        populate_sources(audio_input.clone());
 | 
					        populate_sources(audio_input.clone());
 | 
				
			||||||
        let source_frame = wrap_in_frame(SettingBox::new(&*audio_input));
 | 
					        let source_frame = wrap_in_flow_box_child(SettingBox::new(&*audio_input));
 | 
				
			||||||
        reset_main.remove_all();
 | 
					        reset_main.remove_all();
 | 
				
			||||||
        reset_main.insert(&source_frame, -1);
 | 
					        reset_main.insert(&source_frame, -1);
 | 
				
			||||||
        reset_main.set_max_children_per_line(1);
 | 
					        reset_main.set_max_children_per_line(1);
 | 
				
			||||||
| 
						 | 
					@ -118,11 +118,15 @@ pub const HANDLE_HOME: fn(Arc<Listeners>, FlowBox) =
 | 
				
			||||||
        reset_main.remove_all();
 | 
					        reset_main.remove_all();
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn wrap_in_frame(widget: SettingBox) -> Frame {
 | 
					fn wrap_in_flow_box_child(widget: SettingBox) -> FlowBoxChild {
 | 
				
			||||||
    let frame = Frame::new(None);
 | 
					    let frame = Frame::new(None);
 | 
				
			||||||
    frame.set_child(Some(&widget));
 | 
					    frame.set_child(Some(&widget));
 | 
				
			||||||
    frame.add_css_class("resetSettingFrame");
 | 
					    frame.add_css_class("resetSettingFrame");
 | 
				
			||||||
    frame
 | 
					    FlowBoxChild::builder()
 | 
				
			||||||
 | 
					        .child(&frame)
 | 
				
			||||||
 | 
					        .halign(Align::Fill)
 | 
				
			||||||
 | 
					        .valign(Align::Start)
 | 
				
			||||||
 | 
					        .build()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// for future implementations
 | 
					// for future implementations
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
use adw::glib::clone;
 | 
					use adw::glib::clone;
 | 
				
			||||||
use adw::subclass::prelude::ObjectSubclassIsExt;
 | 
					use adw::subclass::prelude::ObjectSubclassIsExt;
 | 
				
			||||||
use adw::BreakpointCondition;
 | 
					use adw::{ApplicationWindow, BreakpointCondition};
 | 
				
			||||||
use glib::Object;
 | 
					use glib::{closure_local, Object};
 | 
				
			||||||
use gtk::prelude::*;
 | 
					use gtk::prelude::*;
 | 
				
			||||||
use gtk::{gio, glib, Application, ListBoxRow, Orientation};
 | 
					use gtk::{gio, glib, Application, ListBoxRow, Orientation};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,7 @@ use crate::components::window::sidebar_entry_impl::Categories;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
glib::wrapper! {
 | 
					glib::wrapper! {
 | 
				
			||||||
    pub struct ReSetWindow(ObjectSubclass<reset_window_impl::ReSetWindow>)
 | 
					    pub struct ReSetWindow(ObjectSubclass<reset_window_impl::ReSetWindow>)
 | 
				
			||||||
        @extends gtk::ApplicationWindow, gtk::Window, gtk::Widget,
 | 
					        @extends adw::ApplicationWindow, gtk::Window, gtk::Widget,
 | 
				
			||||||
        @implements gio::ActionGroup, gio::ActionMap, gtk::Accessible, gtk::Buildable,
 | 
					        @implements gio::ActionGroup, gio::ActionMap, gtk::Accessible, gtk::Buildable,
 | 
				
			||||||
                    gtk::ConstraintTarget, gtk::Native, gtk::Root, gtk::ShortcutManager;
 | 
					                    gtk::ConstraintTarget, gtk::Native, gtk::Root, gtk::ShortcutManager;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -54,18 +54,13 @@ impl ReSetWindow {
 | 
				
			||||||
            .connect_clicked(clone!(@ weak self as window => move |_| {
 | 
					            .connect_clicked(clone!(@ weak self as window => move |_| {
 | 
				
			||||||
                window.close();
 | 
					                window.close();
 | 
				
			||||||
            }));
 | 
					            }));
 | 
				
			||||||
 | 
					 | 
				
			||||||
        // selfImp.resetMenu.connect_clicked(|_| {
 | 
					 | 
				
			||||||
        //     WifiBox::donotdisturb();
 | 
					 | 
				
			||||||
        //
 | 
					 | 
				
			||||||
        // });
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pub fn handle_dynamic_sidebar(&self) {
 | 
					    pub fn handle_dynamic_sidebar(&self) {
 | 
				
			||||||
        let self_imp = self.imp();
 | 
					        let self_imp = self.imp();
 | 
				
			||||||
        self_imp
 | 
					        self_imp
 | 
				
			||||||
            .reset_sidebar_breakpoint
 | 
					            .reset_sidebar_breakpoint
 | 
				
			||||||
            .set_condition(BreakpointCondition::parse("max-width: 700sp").as_ref().ok());
 | 
					            .set_condition(BreakpointCondition::parse("max-width: 950sp").as_ref().ok());
 | 
				
			||||||
        self_imp.reset_sidebar_breakpoint.add_setter(
 | 
					        self_imp.reset_sidebar_breakpoint.add_setter(
 | 
				
			||||||
            &Object::from(self_imp.reset_overlay_split_view.get()),
 | 
					            &Object::from(self_imp.reset_overlay_split_view.get()),
 | 
				
			||||||
            "collapsed",
 | 
					            "collapsed",
 | 
				
			||||||
| 
						 | 
					@ -143,6 +138,7 @@ impl ReSetWindow {
 | 
				
			||||||
                true,
 | 
					                true,
 | 
				
			||||||
                HANDLE_BLUETOOTH_CLICK,
 | 
					                HANDLE_BLUETOOTH_CLICK,
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
 | 
					            // uncommented when VPN is implemented
 | 
				
			||||||
            // SidebarEntry::new(
 | 
					            // SidebarEntry::new(
 | 
				
			||||||
            //     "VPN",
 | 
					            //     "VPN",
 | 
				
			||||||
            //     "network-vpn-symbolic",
 | 
					            //     "network-vpn-symbolic",
 | 
				
			||||||
| 
						 | 
					@ -191,6 +187,7 @@ impl ReSetWindow {
 | 
				
			||||||
            audio_list,
 | 
					            audio_list,
 | 
				
			||||||
        ));
 | 
					        ));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // uncommented when implemented
 | 
				
			||||||
        // let peripheralsList = vec![
 | 
					        // let peripheralsList = vec![
 | 
				
			||||||
        //     SidebarEntry::new(
 | 
					        //     SidebarEntry::new(
 | 
				
			||||||
        //         "Displays",
 | 
					        //         "Displays",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ use adw::glib::StaticTypeExt;
 | 
				
			||||||
use adw::subclass::prelude::AdwApplicationWindowImpl;
 | 
					use adw::subclass::prelude::AdwApplicationWindowImpl;
 | 
				
			||||||
use adw::{Breakpoint, OverlaySplitView};
 | 
					use adw::{Breakpoint, OverlaySplitView};
 | 
				
			||||||
use glib::subclass::InitializingObject;
 | 
					use glib::subclass::InitializingObject;
 | 
				
			||||||
 | 
					use gtk::prelude::WidgetExt;
 | 
				
			||||||
use gtk::subclass::prelude::*;
 | 
					use gtk::subclass::prelude::*;
 | 
				
			||||||
use gtk::{glib, Button, CompositeTemplate, FlowBox, ListBox, PopoverMenu, SearchEntry};
 | 
					use gtk::{glib, Button, CompositeTemplate, FlowBox, ListBox, PopoverMenu, SearchEntry};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,7 +75,24 @@ impl ObjectImpl for ReSetWindow {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl WidgetImpl for ReSetWindow {}
 | 
					impl WidgetImpl for ReSetWindow {
 | 
				
			||||||
 | 
					    fn size_allocate(&self, width: i32, height: i32, baseline: i32) {
 | 
				
			||||||
 | 
					        // felixusan, use "the force" for debugging
 | 
				
			||||||
 | 
					        // aka this variable
 | 
				
			||||||
 | 
					        // println!("{width}");
 | 
				
			||||||
 | 
					        self.parent_size_allocate(width, height, baseline);
 | 
				
			||||||
 | 
					        if width > 738 {
 | 
				
			||||||
 | 
					            self.reset_main.set_margin_start(100);
 | 
				
			||||||
 | 
					            self.reset_main.set_margin_end(100);
 | 
				
			||||||
 | 
					        } else if width > 600 {
 | 
				
			||||||
 | 
					            self.reset_main.set_margin_start((width - 600)/2);
 | 
				
			||||||
 | 
					            self.reset_main.set_margin_end((width - 600)/2);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            self.reset_main.set_margin_start(0);
 | 
				
			||||||
 | 
					            self.reset_main.set_margin_end(0);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl WindowImpl for ReSetWindow {}
 | 
					impl WindowImpl for ReSetWindow {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,9 +74,7 @@
 | 
				
			||||||
                        <child>
 | 
					                        <child>
 | 
				
			||||||
                          <object class="GtkViewport">
 | 
					                          <object class="GtkViewport">
 | 
				
			||||||
                            <child>
 | 
					                            <child>
 | 
				
			||||||
                              <object class="GtkBox" id="reset_bluetooth_available_devices">
 | 
					                              <object class="AdwPreferencesGroup" id="reset_bluetooth_available_devices"/>
 | 
				
			||||||
                                <property name="orientation">vertical</property>
 | 
					 | 
				
			||||||
                              </object>
 | 
					 | 
				
			||||||
                            </child>
 | 
					                            </child>
 | 
				
			||||||
                          </object>
 | 
					                          </object>
 | 
				
			||||||
                        </child>
 | 
					                        </child>
 | 
				
			||||||
| 
						 | 
					@ -94,9 +92,7 @@
 | 
				
			||||||
                        <child>
 | 
					                        <child>
 | 
				
			||||||
                          <object class="GtkViewport">
 | 
					                          <object class="GtkViewport">
 | 
				
			||||||
                            <child>
 | 
					                            <child>
 | 
				
			||||||
                              <object class="GtkBox" id="reset_bluetooth_connected_devices">
 | 
					                              <object class="AdwPreferencesGroup" id="reset_bluetooth_connected_devices"/>
 | 
				
			||||||
                                <property name="orientation">vertical</property>
 | 
					 | 
				
			||||||
                              </object>
 | 
					 | 
				
			||||||
                            </child>
 | 
					                            </child>
 | 
				
			||||||
                          </object>
 | 
					                          </object>
 | 
				
			||||||
                        </child>
 | 
					                        </child>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,12 @@
 | 
				
			||||||
<!-- Created with Cambalache 0.17.0 -->
 | 
					<!-- Created with Cambalache 0.17.0 -->
 | 
				
			||||||
<interface>
 | 
					<interface>
 | 
				
			||||||
  <requires lib="gtk" version="4.12"/>
 | 
					  <requires lib="gtk" version="4.12"/>
 | 
				
			||||||
 | 
					  <requires lib="libadwaita" version="1.0"/>
 | 
				
			||||||
  <template class="resetBluetoothEntry" parent="GtkBox">
 | 
					  <template class="resetBluetoothEntry" parent="GtkBox">
 | 
				
			||||||
    <property name="margin-start">5</property>
 | 
					    <property name="margin-start">5</property>
 | 
				
			||||||
 | 
					    <child>
 | 
				
			||||||
 | 
					      <object class="AdwComboRow"/>
 | 
				
			||||||
 | 
					    </child>
 | 
				
			||||||
    <child>
 | 
					    <child>
 | 
				
			||||||
      <object class="GtkImage" id="reset_bluetooth_device_type">
 | 
					      <object class="GtkImage" id="reset_bluetooth_device_type">
 | 
				
			||||||
        <property name="icon-name">input-mouse-symbolic</property>
 | 
					        <property name="icon-name">input-mouse-symbolic</property>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -90,10 +90,8 @@
 | 
				
			||||||
                    <child>
 | 
					                    <child>
 | 
				
			||||||
                      <object class="GtkFlowBox" id="reset_main">
 | 
					                      <object class="GtkFlowBox" id="reset_main">
 | 
				
			||||||
                        <property name="column-spacing">25</property>
 | 
					                        <property name="column-spacing">25</property>
 | 
				
			||||||
                        <property name="halign">center</property>
 | 
					 | 
				
			||||||
                        <property name="hexpand">True</property>
 | 
					                        <property name="hexpand">True</property>
 | 
				
			||||||
                        <property name="hexpand-set">True</property>
 | 
					                        <property name="hexpand-set">True</property>
 | 
				
			||||||
                        <property name="homogeneous">True</property>
 | 
					 | 
				
			||||||
                        <property name="margin-top">5</property>
 | 
					                        <property name="margin-top">5</property>
 | 
				
			||||||
                        <property name="row-spacing">25</property>
 | 
					                        <property name="row-spacing">25</property>
 | 
				
			||||||
                        <property name="selection-mode">none</property>
 | 
					                        <property name="selection-mode">none</property>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,6 @@
 | 
				
			||||||
<interface>
 | 
					<interface>
 | 
				
			||||||
  <requires lib="gtk" version="4.0"/>
 | 
					  <requires lib="gtk" version="4.0"/>
 | 
				
			||||||
  <template class="resetSettingBox" parent="GtkBox">
 | 
					  <template class="resetSettingBox" parent="GtkBox">
 | 
				
			||||||
    <property name="halign">center</property>
 | 
					 | 
				
			||||||
    <property name="orientation">vertical</property>
 | 
					    <property name="orientation">vertical</property>
 | 
				
			||||||
    <property name="width-request">500</property>
 | 
					    <property name="width-request">500</property>
 | 
				
			||||||
  </template>
 | 
					  </template>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -153,23 +153,24 @@
 | 
				
			||||||
	(10,177,"GtkButton","reset_bluetooth_refresh_button",176,None,None,None,None,None),
 | 
						(10,177,"GtkButton","reset_bluetooth_refresh_button",176,None,None,None,None,None),
 | 
				
			||||||
	(10,178,"GtkScrolledWindow",None,176,None,None,None,None,None),
 | 
						(10,178,"GtkScrolledWindow",None,176,None,None,None,None,None),
 | 
				
			||||||
	(10,179,"GtkViewport",None,178,None,None,None,None,None),
 | 
						(10,179,"GtkViewport",None,178,None,None,None,None,None),
 | 
				
			||||||
	(10,180,"GtkBox","reset_bluetooth_available_devices",179,None,None,None,None,None),
 | 
					 | 
				
			||||||
	(10,181,"AdwPreferencesGroup",None,121,None,None,None,2,None),
 | 
						(10,181,"AdwPreferencesGroup",None,121,None,None,None,2,None),
 | 
				
			||||||
	(10,183,"GtkScrolledWindow",None,181,None,None,None,None,None),
 | 
						(10,183,"GtkScrolledWindow",None,181,None,None,None,None,None),
 | 
				
			||||||
	(10,184,"GtkViewport",None,183,None,None,None,None,None),
 | 
						(10,184,"GtkViewport",None,183,None,None,None,None,None),
 | 
				
			||||||
	(10,185,"GtkBox","reset_bluetooth_connected_devices",184,None,None,None,None,None),
 | 
					 | 
				
			||||||
	(10,188,"GtkBox",None,153,None,None,None,4,None),
 | 
						(10,188,"GtkBox",None,153,None,None,None,4,None),
 | 
				
			||||||
	(10,193,"GtkLabel",None,188,None,None,None,None,None),
 | 
						(10,193,"GtkLabel",None,188,None,None,None,None,None),
 | 
				
			||||||
	(10,196,"GtkSwitch","reset_bluetooth_discoverable_switch",188,None,None,None,1,None),
 | 
						(10,196,"GtkSwitch","reset_bluetooth_discoverable_switch",188,None,None,None,1,None),
 | 
				
			||||||
	(10,197,"GtkBox",None,153,None,None,None,3,None),
 | 
						(10,197,"GtkBox",None,153,None,None,None,3,None),
 | 
				
			||||||
	(10,198,"GtkLabel",None,197,None,None,None,None,None),
 | 
						(10,198,"GtkLabel",None,197,None,None,None,None,None),
 | 
				
			||||||
	(10,199,"GtkSwitch","reset_bluetooth_pairable_switch",197,None,None,None,1,None),
 | 
						(10,199,"GtkSwitch","reset_bluetooth_pairable_switch",197,None,None,None,1,None),
 | 
				
			||||||
 | 
						(10,200,"AdwPreferencesGroup","reset_bluetooth_available_devices",179,None,None,None,-1,None),
 | 
				
			||||||
 | 
						(10,201,"AdwPreferencesGroup","reset_bluetooth_connected_devices",184,None,None,None,-1,None),
 | 
				
			||||||
	(11,2,"GtkBox","resetBluetoothEntry",None,None,None,None,None,None),
 | 
						(11,2,"GtkBox","resetBluetoothEntry",None,None,None,None,None,None),
 | 
				
			||||||
	(11,3,"GtkImage","reset_bluetooth_device_type",2,None,None,None,None,None),
 | 
						(11,3,"GtkImage","reset_bluetooth_device_type",2,None,None,None,1,None),
 | 
				
			||||||
	(11,5,"GtkButton","reset_bluetooth_button",2,None,None,None,3,None),
 | 
						(11,5,"GtkButton","reset_bluetooth_button",2,None,None,None,3,None),
 | 
				
			||||||
	(11,6,"GtkBox",None,2,None,None,None,2,None),
 | 
						(11,6,"GtkBox",None,2,None,None,None,2,None),
 | 
				
			||||||
	(11,7,"GtkLabel","reset_bluetooth_label",6,None,None,None,None,None),
 | 
						(11,7,"GtkLabel","reset_bluetooth_label",6,None,None,None,None,None),
 | 
				
			||||||
	(11,8,"GtkLabel","reset_bluetooth_address",6,None,None,None,1,None),
 | 
						(11,8,"GtkLabel","reset_bluetooth_address",6,None,None,None,1,None),
 | 
				
			||||||
 | 
						(11,9,"AdwComboRow",None,2,None,None,None,None,None),
 | 
				
			||||||
	(12,11,"GtkBox","resetAudioInput",None,None,None,None,None,None),
 | 
						(12,11,"GtkBox","resetAudioInput",None,None,None,None,None,None),
 | 
				
			||||||
	(12,12,"GtkLabel",None,11,None,None,None,None,None),
 | 
						(12,12,"GtkLabel",None,11,None,None,None,None,None),
 | 
				
			||||||
	(12,13,"AdwNavigationView",None,11,None,None,None,1,None),
 | 
						(12,13,"AdwNavigationView",None,11,None,None,None,1,None),
 | 
				
			||||||
| 
						 | 
					@ -379,10 +380,8 @@
 | 
				
			||||||
	(3,42,"GtkWidget","width-request","150",None,None,None,None,None,None,None,None,None),
 | 
						(3,42,"GtkWidget","width-request","150",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(3,43,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None),
 | 
						(3,43,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(3,45,"GtkFlowBox","column-spacing","25",None,None,None,None,None,None,None,None,None),
 | 
						(3,45,"GtkFlowBox","column-spacing","25",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(3,45,"GtkFlowBox","homogeneous","True",None,None,None,None,None,None,None,None,None),
 | 
					 | 
				
			||||||
	(3,45,"GtkFlowBox","row-spacing","25",None,None,None,None,None,None,None,None,None),
 | 
						(3,45,"GtkFlowBox","row-spacing","25",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(3,45,"GtkFlowBox","selection-mode","none",None,None,None,None,None,None,None,None,None),
 | 
						(3,45,"GtkFlowBox","selection-mode","none",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(3,45,"GtkWidget","halign","center",None,None,None,None,None,None,None,None,None),
 | 
					 | 
				
			||||||
	(3,45,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
 | 
						(3,45,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(3,45,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
 | 
						(3,45,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(3,45,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
 | 
						(3,45,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
| 
						 | 
					@ -587,11 +586,9 @@
 | 
				
			||||||
	(10,177,"GtkButton","icon-name","view-refresh-symbolic",None,None,None,None,None,None,None,None,None),
 | 
						(10,177,"GtkButton","icon-name","view-refresh-symbolic",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(10,178,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None),
 | 
						(10,178,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(10,178,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None),
 | 
						(10,178,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(10,180,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
 | 
					 | 
				
			||||||
	(10,181,"AdwPreferencesGroup","title","Connected Devices",None,None,None,None,None,None,None,None,None),
 | 
						(10,181,"AdwPreferencesGroup","title","Connected Devices",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(10,183,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None),
 | 
						(10,183,"GtkScrolledWindow","min-content-height","100",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(10,183,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None),
 | 
						(10,183,"GtkScrolledWindow","propagate-natural-height","True",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(10,185,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
 | 
					 | 
				
			||||||
	(10,188,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
 | 
						(10,188,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(10,188,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
 | 
						(10,188,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(10,188,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
 | 
						(10,188,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
| 
						 | 
					@ -717,7 +714,6 @@
 | 
				
			||||||
	(13,41,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
 | 
						(13,41,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(13,42,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None),
 | 
						(13,42,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(14,3,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
 | 
						(14,3,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(14,3,"GtkWidget","halign","center",None,None,None,None,None,None,None,None,None),
 | 
					 | 
				
			||||||
	(14,3,"GtkWidget","width-request","500",None,None,None,None,None,None,None,None,None),
 | 
						(14,3,"GtkWidget","width-request","500",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(15,1,"GtkListBoxRow","selectable","False",None,None,None,None,None,None,None,None,None),
 | 
						(15,1,"GtkListBoxRow","selectable","False",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
	(15,1,"GtkWidget","height-request","40",None,None,None,None,None,None,None,None,None),
 | 
						(15,1,"GtkWidget","height-request","40",None,None,None,None,None,None,None,None,None),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue