diff --git a/Cargo.toml b/Cargo.toml index d7f177e..5e0aaa3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ description = "A wip universal Linux settings application." [dependencies] ReSet-Lib = "*" adw = { version = "*", package = "libadwaita", features = ["v1_4"]} +dbus = "0.9.7" gtk = { version = "*", package = "gtk4", features = ["v4_12"]} [build-dependencies] diff --git a/src/audio/audioBox.rs b/src/components/audio/audioBox.rs similarity index 95% rename from src/audio/audioBox.rs rename to src/components/audio/audioBox.rs index ba081b7..36db69d 100644 --- a/src/audio/audioBox.rs +++ b/src/components/audio/audioBox.rs @@ -1,7 +1,7 @@ use gtk::{Button, CompositeTemplate, DropDown, TemplateChild, glib}; use gtk::prelude::*; use gtk::subclass::prelude::*; -use crate::audio::AudioSourceEntry; +use crate::components::audio::AudioSourceEntry; #[allow(non_snake_case)] #[derive(Default, CompositeTemplate)] diff --git a/src/audio/audioSource.rs b/src/components/audio/audioSource.rs similarity index 100% rename from src/audio/audioSource.rs rename to src/components/audio/audioSource.rs diff --git a/src/audio/mod.rs b/src/components/audio/mod.rs similarity index 100% rename from src/audio/mod.rs rename to src/components/audio/mod.rs diff --git a/src/bluetooth/bluetoothBox.rs b/src/components/bluetooth/bluetoothBox.rs similarity index 95% rename from src/bluetooth/bluetoothBox.rs rename to src/components/bluetooth/bluetoothBox.rs index fee523b..2268381 100644 --- a/src/bluetooth/bluetoothBox.rs +++ b/src/components/bluetooth/bluetoothBox.rs @@ -1,7 +1,7 @@ use gtk::{CompositeTemplate, glib, ListBox, Switch}; use gtk::prelude::*; use gtk::subclass::prelude::*; -use crate::bluetooth::BluetoothEntry; +use crate::components::bluetooth::BluetoothEntry; #[allow(non_snake_case)] #[derive(Default, CompositeTemplate)] diff --git a/src/bluetooth/bluetoothEntry.rs b/src/components/bluetooth/bluetoothEntry.rs similarity index 100% rename from src/bluetooth/bluetoothEntry.rs rename to src/components/bluetooth/bluetoothEntry.rs diff --git a/src/bluetooth/mod.rs b/src/components/bluetooth/mod.rs similarity index 100% rename from src/bluetooth/mod.rs rename to src/components/bluetooth/mod.rs diff --git a/src/components/mod.rs b/src/components/mod.rs new file mode 100644 index 0000000..65dbb8f --- /dev/null +++ b/src/components/mod.rs @@ -0,0 +1,4 @@ +pub mod window; +pub mod wifi; +pub mod bluetooth; +pub mod audio; \ No newline at end of file diff --git a/src/wifi/mod.rs b/src/components/wifi/mod.rs similarity index 54% rename from src/wifi/mod.rs rename to src/components/wifi/mod.rs index a172e0d..665286d 100644 --- a/src/wifi/mod.rs +++ b/src/components/wifi/mod.rs @@ -1,9 +1,15 @@ #![allow(non_snake_case)] -mod wifiBox; -mod wifiEntry; + +use std::thread; +use std::time::Duration; use adw::glib::Object; -use gtk::{glib}; +use dbus::blocking::Connection; +use dbus::Error; +use gtk::glib; + +mod wifiBox; +mod wifiEntry; glib::wrapper! { pub struct WifiBox(ObjectSubclass) @@ -21,6 +27,18 @@ impl WifiBox { pub fn new() -> Self { Object::builder().build() } + + pub fn donotdisturb() { + thread::spawn(|| { + let conn = Connection::new_session().unwrap(); + let proxy = conn.with_proxy( + "org.freedesktop.Notifications", + "/org/freedesktop/Notifications", + Duration::from_millis(1000), + ); + let _ : Result<(), Error> = proxy.method_call("org.freedesktop.Notifications", "DoNotDisturb", ()); + }); + } } impl WifiEntry { diff --git a/src/wifi/wifiBox.rs b/src/components/wifi/wifiBox.rs similarity index 95% rename from src/wifi/wifiBox.rs rename to src/components/wifi/wifiBox.rs index 518be11..6c33181 100644 --- a/src/wifi/wifiBox.rs +++ b/src/components/wifi/wifiBox.rs @@ -2,7 +2,7 @@ use gtk::{CompositeTemplate, glib, ListBox}; use gtk::prelude::*; use gtk::subclass::prelude::*; -use crate::wifi::WifiEntry; +use crate::components::wifi::WifiEntry; #[allow(non_snake_case)] #[derive(Default, CompositeTemplate)] diff --git a/src/wifi/wifiEntry.rs b/src/components/wifi/wifiEntry.rs similarity index 100% rename from src/wifi/wifiEntry.rs rename to src/components/wifi/wifiEntry.rs diff --git a/src/window/handleSidebarClick.rs b/src/components/window/handleSidebarClick.rs similarity index 91% rename from src/window/handleSidebarClick.rs rename to src/components/window/handleSidebarClick.rs index bcdd159..9a06acc 100644 --- a/src/window/handleSidebarClick.rs +++ b/src/components/window/handleSidebarClick.rs @@ -1,7 +1,7 @@ use gtk::FlowBox; -use crate::audio::AudioBox; -use crate::bluetooth::BluetoothBox; -use crate::wifi::WifiBox; +use crate::components::audio::AudioBox; +use crate::components::bluetooth::BluetoothBox; +use crate::components::wifi::WifiBox; pub const HANDLE_CONNECTIVITY_CLICK: fn(FlowBox) = |resetMain: FlowBox| { let wifibox = WifiBox::new(); diff --git a/src/window/mod.rs b/src/components/window/mod.rs similarity index 93% rename from src/window/mod.rs rename to src/components/window/mod.rs index f67745b..18b8e5a 100644 --- a/src/window/mod.rs +++ b/src/components/window/mod.rs @@ -1,17 +1,18 @@ #![allow(non_snake_case)] +use adw::BreakpointCondition; use adw::glib::clone; use adw::subclass::prelude::ObjectSubclassIsExt; -use adw::BreakpointCondition; use glib::Object; +use gtk::{Application, FlowBox, gio, glib}; use gtk::prelude::*; -use gtk::{gio, glib, Application, FlowBox}; -use crate::window::handleSidebarClick::{ +use crate::components::wifi::WifiBox; +use crate::components::window::handleSidebarClick::{ HANDLE_AUDIO_CLICK, HANDLE_BLUETOOTH_CLICK, HANDLE_CONNECTIVITY_CLICK, HANDLE_MICROPHONE_CLICK, HANDLE_VOLUME_CLICK, HANDLE_VPN_CLICK, HANDLE_WIFI_CLICK, }; -use crate::window::sidebarEntry::{Categories, SidebarAction}; +use crate::components::window::sidebarEntry::{Categories, SidebarAction}; mod handleSidebarClick; mod sidebarEntry; @@ -39,14 +40,12 @@ impl Window { fn setupCallback(&self) { let selfImp = self.imp(); - selfImp - .resetSearchEntry + selfImp.resetSearchEntry .connect_search_changed(clone!(@ weak self as window => move |_| { window.filterList(); })); - selfImp - .resetSideBarToggle + selfImp.resetSideBarToggle .connect_clicked(clone!(@ weak self as window => move |_| { window.toggleSidebar(); })); @@ -59,11 +58,13 @@ impl Window { }), ); - selfImp - .resetClose - .connect_clicked(clone!(@ weak self as window => move |_| { - window.close(); - })); + selfImp.resetClose.connect_clicked(clone!(@ weak self as window => move |_| { + window.close(); + })); + + selfImp.resetMenu.connect_clicked(|_| { + WifiBox::donotdisturb(); + }); } fn handleDynamicSidebar(&self) { diff --git a/src/window/sidebarEntry.rs b/src/components/window/sidebarEntry.rs similarity index 95% rename from src/window/sidebarEntry.rs rename to src/components/window/sidebarEntry.rs index 5465396..3877cf4 100644 --- a/src/window/sidebarEntry.rs +++ b/src/components/window/sidebarEntry.rs @@ -4,7 +4,7 @@ use glib::subclass::InitializingObject; use gtk::{CompositeTemplate, FlowBox, glib, Image, Label, ListBoxRow}; use gtk::subclass::prelude::*; -use crate::window::handleSidebarClick::HANDLE_HOME; +use crate::components::window::handleSidebarClick::HANDLE_HOME; #[derive(Default)] pub enum Categories { diff --git a/src/window/window.rs b/src/components/window/window.rs similarity index 92% rename from src/window/window.rs rename to src/components/window/window.rs index 0460773..13b8dc2 100644 --- a/src/window/window.rs +++ b/src/components/window/window.rs @@ -6,8 +6,8 @@ use gtk::subclass::prelude::*; use gtk::{glib, Box, Button, CompositeTemplate, FlowBox, ListBox, SearchEntry}; use std::cell::RefCell; -use crate::wifi::WifiBox; -use crate::window::SidebarEntry; +use crate::components::wifi::WifiBox; +use crate::components::window::SidebarEntry; #[allow(non_snake_case)] #[derive(CompositeTemplate, Default)] @@ -28,6 +28,8 @@ pub struct Window { #[template_child] pub resetPath: TemplateChild, #[template_child] + pub resetMenu: TemplateChild