From 16a30a7bddfecd59165002057a198cad0178652b Mon Sep 17 00:00:00 2001 From: Fabio Lenherr / DashieTM Date: Mon, 11 Mar 2024 17:19:38 +0100 Subject: [PATCH] feat: Add Error popup --- src/components/base/card_entry.rs | 8 +- src/components/base/error.rs | 41 ++++ src/components/base/error_impl.rs | 77 +++++++ src/components/base/mod.rs | 2 + src/components/bluetooth/bluetooth_entry.rs | 34 +-- src/components/input/mod.rs | 1 + src/components/input/source_box.rs | 204 +++++++++--------- .../input/source_box_event_handlers.rs | 2 +- src/components/input/source_box_impl.rs | 3 + src/components/input/source_entry.rs | 72 +++---- src/components/output/sink_box.rs | 50 +++-- .../output/sink_box_event_handlers.rs | 13 +- src/components/output/sink_box_impl.rs | 3 + src/components/output/sink_entry.rs | 65 +++--- src/components/window/reset_window.rs | 15 +- src/components/window/reset_window_impl.rs | 2 + src/resources/resetAudioInput.ui | 5 +- src/resources/resetAudioOutput.ui | 5 +- src/resources/resetBluetooth.ui | 2 +- src/resources/resetBluetoothEntry.ui | 2 +- src/resources/resetCardEntry.ui | 2 +- src/resources/resetError.ui | 25 +++ src/resources/resetInputStreamEntry.ui | 2 +- src/resources/resetListBoxRow.ui | 2 +- src/resources/resetMainWindow.ui | 2 +- src/resources/resetOutputStreamEntry.ui | 2 +- src/resources/resetPopup.ui | 2 +- src/resources/resetSavedWifiEntry.ui | 2 +- src/resources/resetSettingBox.ui | 2 +- src/resources/resetShortcuts.ui | 2 +- src/resources/resetSidebarEntry.ui | 2 +- src/resources/resetSinkEntry.ui | 2 +- src/resources/resetSourceEntry.ui | 2 +- src/resources/resetUI.cmb | 22 +- src/resources/resetWiFi.ui | 2 +- src/resources/resetWifiAddressEntry.ui | 2 +- src/resources/resetWifiEntry.ui | 2 +- src/resources/resetWifiOptions.ui | 2 +- src/resources/resetWifiRouteEntry.ui | 2 +- src/resources/resources.gresource.xml | 1 + 40 files changed, 422 insertions(+), 266 deletions(-) create mode 100644 src/components/base/error.rs create mode 100644 src/components/base/error_impl.rs create mode 100644 src/resources/resetError.ui diff --git a/src/components/base/card_entry.rs b/src/components/base/card_entry.rs index 17c53ca..e1aab70 100644 --- a/src/components/base/card_entry.rs +++ b/src/components/base/card_entry.rs @@ -13,7 +13,7 @@ use components::utils::create_dropdown_label_factory; use re_set_lib::audio::audio_structures::Card; use crate::components; -use crate::components::utils::{BASE, DBUS_PATH, AUDIO}; +use crate::components::utils::{AUDIO, BASE, DBUS_PATH}; use super::card_entry_impl; @@ -66,11 +66,7 @@ impl CardEntry { fn set_card_profile_of_device(device_index: u32, profile_name: String) -> bool { gio::spawn_blocking(move || { let conn = Connection::new_session().unwrap(); - let proxy = conn.with_proxy( - BASE, - DBUS_PATH, - Duration::from_millis(1000), - ); + let proxy = conn.with_proxy(BASE, DBUS_PATH, Duration::from_millis(1000)); let _: Result<(), Error> = proxy.method_call( AUDIO, "SetCardProfileOfDevice", diff --git a/src/components/base/error.rs b/src/components/base/error.rs new file mode 100644 index 0000000..a0f9c25 --- /dev/null +++ b/src/components/base/error.rs @@ -0,0 +1,41 @@ +use std::{rc::Rc, sync::Arc}; + +use adw::glib; +use adw::glib::Object; +use glib::{clone, subclass::types::ObjectSubclassIsExt}; +use gtk::{ + gdk, + prelude::{ButtonExt, PopoverExt}, + Editable, Popover, +}; + +use super::error_impl; + +glib::wrapper! { + pub struct ReSetError(ObjectSubclass) + @extends Popover, gtk::Widget, + @implements Editable,gdk::Popup, gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable; +} + +unsafe impl Send for ReSetError {} +unsafe impl Sync for ReSetError {} + +impl ReSetError { + pub fn new() -> Self { + let error: ReSetError = Object::builder().build(); + error + .imp() + .reset_error_button + .connect_clicked(clone!(@strong error => move |_| { + println!("pingpangpung"); + error.popdown(); + })); + error + } +} + +impl Default for ReSetError { + fn default() -> Self { + Self::new() + } +} diff --git a/src/components/base/error_impl.rs b/src/components/base/error_impl.rs new file mode 100644 index 0000000..5c84083 --- /dev/null +++ b/src/components/base/error_impl.rs @@ -0,0 +1,77 @@ +use std::cell::RefCell; +use std::sync::Arc; + +use glib::clone; +use gtk::prelude::{ButtonExt, PopoverExt}; +use gtk::subclass::prelude::*; +use gtk::{glib, Button, CompositeTemplate, Label, PasswordEntry, PasswordEntryBuffer, Popover}; + +use crate::components::input::source_box::SourceBox; + +use super::error; + +#[derive(Default, CompositeTemplate)] +#[template(resource = "/org/Xetibo/ReSet/resetError.ui")] +pub struct ReSetError { + #[template_child] + pub reset_error_label: TemplateChild