mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-04-08 22:52:01 +02:00
chore: Use actionrow
This commit is contained in:
parent
c5c5f6761e
commit
c4af8696a8
|
@ -17,7 +17,6 @@ use gtk::{gio, StringObject, Widget};
|
|||
use re_set_lib::bluetooth::bluetooth_structures::{BluetoothAdapter, BluetoothDevice};
|
||||
use re_set_lib::signals::{BluetoothDeviceAdded, BluetoothDeviceChanged, BluetoothDeviceRemoved};
|
||||
|
||||
use crate::components::base::list_entry::ListEntry;
|
||||
use crate::components::base::utils::Listeners;
|
||||
use crate::components::bluetooth::bluetooth_box_impl;
|
||||
use crate::components::bluetooth::bluetooth_entry::BluetoothEntry;
|
||||
|
@ -178,14 +177,13 @@ pub fn populate_conntected_bluetooth_devices(bluetooth_box: Arc<BluetoothBox>) {
|
|||
let path = device.path.clone();
|
||||
let connected = device.connected;
|
||||
let bluetooth_entry = Arc::new(BluetoothEntry::new(&device));
|
||||
let entry = Arc::new(ListEntry::new(&*bluetooth_entry));
|
||||
imp.available_devices
|
||||
.borrow_mut()
|
||||
.insert(path, (bluetooth_entry.clone(), entry.clone(), device));
|
||||
.insert(path, (bluetooth_entry.clone(), device));
|
||||
if connected {
|
||||
imp.reset_bluetooth_connected_devices.add(&*entry);
|
||||
imp.reset_bluetooth_connected_devices.add(&*bluetooth_entry);
|
||||
} else {
|
||||
imp.reset_bluetooth_available_devices.add(&*entry);
|
||||
imp.reset_bluetooth_available_devices.add(&*bluetooth_entry);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -239,15 +237,13 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
|
|||
let path = ir.bluetooth_device.path.clone();
|
||||
let connected = ir.bluetooth_device.connected;
|
||||
let bluetooth_entry = Arc::new(BluetoothEntry::new(&ir.bluetooth_device));
|
||||
let entry = Arc::new(ListEntry::new(&*bluetooth_entry));
|
||||
imp.available_devices.borrow_mut().insert(
|
||||
path,
|
||||
(bluetooth_entry.clone(), entry.clone(), ir.bluetooth_device),
|
||||
);
|
||||
imp.available_devices
|
||||
.borrow_mut()
|
||||
.insert(path, (bluetooth_entry.clone(), ir.bluetooth_device));
|
||||
if connected {
|
||||
imp.reset_bluetooth_connected_devices.add(&*entry);
|
||||
imp.reset_bluetooth_connected_devices.add(&*bluetooth_entry);
|
||||
} else {
|
||||
imp.reset_bluetooth_available_devices.add(&*entry);
|
||||
imp.reset_bluetooth_available_devices.add(&*bluetooth_entry);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -266,7 +262,7 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
|
|||
let imp = bluetooth_box.imp();
|
||||
let map = imp.available_devices.borrow_mut();
|
||||
if let Some(list_entry) = map.get(&ir.bluetooth_device) {
|
||||
imp.reset_bluetooth_connected_devices.remove(&*list_entry.1);
|
||||
imp.reset_bluetooth_connected_devices.remove(&*list_entry.0);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -285,16 +281,16 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
|
|||
let imp = bluetooth_box.imp();
|
||||
let map = imp.available_devices.borrow_mut();
|
||||
if let Some(list_entry) = map.get(&ir.bluetooth_device.path) {
|
||||
if list_entry.2.connected != ir.bluetooth_device.connected {
|
||||
if list_entry.1.connected != ir.bluetooth_device.connected {
|
||||
if ir.bluetooth_device.connected {
|
||||
imp.reset_bluetooth_connected_devices.add(&*list_entry.1);
|
||||
imp.reset_bluetooth_available_devices.remove(&*list_entry.1);
|
||||
imp.reset_bluetooth_connected_devices.add(&*list_entry.0);
|
||||
imp.reset_bluetooth_available_devices.remove(&*list_entry.0);
|
||||
} else {
|
||||
imp.reset_bluetooth_available_devices.add(&*list_entry.1);
|
||||
imp.reset_bluetooth_connected_devices.remove(&*list_entry.1);
|
||||
imp.reset_bluetooth_available_devices.add(&*list_entry.0);
|
||||
imp.reset_bluetooth_connected_devices.remove(&*list_entry.0);
|
||||
}
|
||||
}
|
||||
if list_entry.2.paired != ir.bluetooth_device.paired {
|
||||
if list_entry.1.paired != ir.bluetooth_device.paired {
|
||||
if ir.bluetooth_device.paired {
|
||||
list_entry
|
||||
.0
|
||||
|
@ -333,7 +329,7 @@ pub fn start_bluetooth_listener(listeners: Arc<Listeners>, bluetooth_box: Arc<Bl
|
|||
let imp = loop_box.imp();
|
||||
let mut entries = imp.available_devices.borrow_mut();
|
||||
for entry in entries.iter() {
|
||||
imp.reset_bluetooth_available_devices.remove(&*entry.1 .1);
|
||||
imp.reset_bluetooth_available_devices.remove(&*entry.1 .0);
|
||||
}
|
||||
entries.clear();
|
||||
imp.reset_bluetooth_refresh_button.set_sensitive(true);
|
||||
|
|
|
@ -13,7 +13,7 @@ use crate::components::bluetooth::bluetooth_box;
|
|||
use crate::components::bluetooth::bluetooth_entry::BluetoothEntry;
|
||||
|
||||
type BluetoothMap =
|
||||
RefCell<HashMap<Path<'static>, (Arc<BluetoothEntry>, Arc<ListEntry>, BluetoothDevice)>>;
|
||||
RefCell<HashMap<Path<'static>, (Arc<BluetoothEntry>, BluetoothDevice)>>;
|
||||
|
||||
#[derive(Default, CompositeTemplate)]
|
||||
#[template(resource = "/org/Xetibo/ReSet/resetBluetooth.ui")]
|
||||
|
|
|
@ -2,9 +2,10 @@ use std::sync::Arc;
|
|||
use std::time::Duration;
|
||||
|
||||
use crate::components::bluetooth::bluetooth_entry_impl;
|
||||
use adw::glib;
|
||||
use adw::glib::Object;
|
||||
use adw::prelude::ActionRowExt;
|
||||
use adw::subclass::prelude::ObjectSubclassIsExt;
|
||||
use adw::{glib, ActionRow};
|
||||
use dbus::blocking::Connection;
|
||||
use dbus::{Error, Path};
|
||||
use gtk::prelude::{ButtonExt, WidgetExt};
|
||||
|
@ -13,7 +14,7 @@ use re_set_lib::bluetooth::bluetooth_structures::BluetoothDevice;
|
|||
|
||||
glib::wrapper! {
|
||||
pub struct BluetoothEntry(ObjectSubclass<bluetooth_entry_impl::BluetoothEntry>)
|
||||
@extends gtk::Box, gtk::Widget,
|
||||
@extends ActionRow, gtk::Widget,
|
||||
@implements gtk::Accessible, gtk::Buildable, gtk::Actionable, gtk::ConstraintTarget;
|
||||
}
|
||||
|
||||
|
@ -23,15 +24,13 @@ unsafe impl Sync for BluetoothEntry {}
|
|||
impl BluetoothEntry {
|
||||
pub fn new(device: &BluetoothDevice) -> Self {
|
||||
let entry: BluetoothEntry = Object::builder().build();
|
||||
entry.set_sensitive(true);
|
||||
let entry_imp = entry.imp();
|
||||
entry_imp
|
||||
.reset_bluetooth_label
|
||||
.get()
|
||||
.set_text(&device.alias);
|
||||
entry_imp
|
||||
.reset_bluetooth_address
|
||||
.get()
|
||||
.set_text(&device.address);
|
||||
entry.set_subtitle(&device.address);
|
||||
if device.icon.is_empty() {
|
||||
entry_imp
|
||||
.reset_bluetooth_device_type
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
use crate::components::bluetooth::bluetooth_entry;
|
||||
use adw::subclass::action_row::ActionRowImpl;
|
||||
use adw::subclass::preferences_row::PreferencesRowImpl;
|
||||
use adw::ActionRow;
|
||||
use gtk::subclass::prelude::*;
|
||||
use gtk::{glib, Button, CompositeTemplate, Image, Label};
|
||||
use std::cell::RefCell;
|
||||
|
@ -11,8 +14,6 @@ pub struct BluetoothEntry {
|
|||
#[template_child]
|
||||
pub reset_bluetooth_label: TemplateChild<Label>,
|
||||
#[template_child]
|
||||
pub reset_bluetooth_address: TemplateChild<Label>,
|
||||
#[template_child]
|
||||
pub reset_bluetooth_button: TemplateChild<Button>,
|
||||
pub device_name: RefCell<String>,
|
||||
}
|
||||
|
@ -22,7 +23,7 @@ impl ObjectSubclass for BluetoothEntry {
|
|||
const ABSTRACT: bool = false;
|
||||
const NAME: &'static str = "resetBluetoothEntry";
|
||||
type Type = bluetooth_entry::BluetoothEntry;
|
||||
type ParentType = gtk::Box;
|
||||
type ParentType = ActionRow;
|
||||
|
||||
fn class_init(klass: &mut Self::Class) {
|
||||
klass.bind_template();
|
||||
|
@ -39,7 +40,11 @@ impl ObjectImpl for BluetoothEntry {
|
|||
}
|
||||
}
|
||||
|
||||
impl BoxImpl for BluetoothEntry {}
|
||||
impl ActionRowImpl for BluetoothEntry {}
|
||||
|
||||
impl PreferencesRowImpl for BluetoothEntry {}
|
||||
|
||||
impl ListBoxRowImpl for BluetoothEntry {}
|
||||
|
||||
impl WidgetImpl for BluetoothEntry {}
|
||||
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
<!-- Created with Cambalache 0.17.0 -->
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.12"/>
|
||||
<template class="resetBluetoothEntry" parent="GtkBox">
|
||||
<property name="margin-start">5</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="reset_bluetooth_device_type">
|
||||
<property name="icon-name">input-mouse-symbolic</property>
|
||||
<property name="margin-end">15</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<requires lib="libadwaita" version="1.3"/>
|
||||
<template class="resetBluetoothEntry" parent="AdwActionRow">
|
||||
<property name="child">
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="reset_bluetooth_device_type">
|
||||
<property name="halign">start</property>
|
||||
<property name="icon-name">input-mouse-symbolic</property>
|
||||
<property name="margin-end">15</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="reset_bluetooth_label">
|
||||
<property name="ellipsize">end</property>
|
||||
|
@ -28,24 +28,19 @@
|
|||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="reset_bluetooth_address">
|
||||
<property name="ellipsize">end</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="label">LoremIpsum Wireless Mouse</property>
|
||||
<property name="margin-end">10</property>
|
||||
<property name="single-line-mode">True</property>
|
||||
<property name="valign">end</property>
|
||||
<property name="width-request">200</property>
|
||||
<property name="xalign">0.0</property>
|
||||
<object class="GtkButton" id="reset_bluetooth_button">
|
||||
<property name="halign">end</property>
|
||||
<property name="has-frame">False</property>
|
||||
<property name="icon-name">user-trash-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reset_bluetooth_button">
|
||||
<property name="has-frame">False</property>
|
||||
<property name="icon-name">emblem-system-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</property>
|
||||
<property name="focusable">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="hexpand-set">True</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="subtitle-lines">1</property>
|
||||
<property name="title-lines">1</property>
|
||||
</template>
|
||||
</interface>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
(7,14,None,"resetInputStreamEntry.ui",None,None,None,None,None,None,None),
|
||||
(8,1,None,"resetAudioOutput.ui",None,None,None,None,None,None,None),
|
||||
(10,1,None,"resetBluetooth.ui",None,None,None,None,None,None,None),
|
||||
(11,2,None,"resetBluetoothEntry.ui",None,None,None,None,None,None,None),
|
||||
(11,32,None,"resetBluetoothEntry.ui",None,None,None,None,None,None,None),
|
||||
(12,11,None,"resetAudioInput.ui",None,None,None,None,None,None,None),
|
||||
(13,22,None,"resetOutputStreamEntry.ui",None,None,None,None,None,None,None),
|
||||
(14,3,None,"resetSettingBox.ui",None,None,None,None,None,None,None),
|
||||
|
@ -164,12 +164,11 @@
|
|||
(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,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,6,"GtkBox",None,2,None,None,None,2,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,32,"AdwActionRow","resetBluetoothEntry",None,None,None,None,-1,None),
|
||||
(11,39,"GtkBox",None,32,None,None,None,-1,None),
|
||||
(11,40,"GtkImage","reset_bluetooth_device_type",39,None,None,None,None,None),
|
||||
(11,44,"GtkButton","reset_bluetooth_button",39,None,None,None,2,None),
|
||||
(11,45,"GtkLabel","reset_bluetooth_label",39,None,None,None,1,None),
|
||||
(12,11,"GtkBox","resetAudioInput",None,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),
|
||||
|
@ -602,30 +601,29 @@
|
|||
(10,198,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
|
||||
(10,198,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
|
||||
(10,198,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,2,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
|
||||
(11,3,"GtkImage","icon-name","input-mouse-symbolic",None,None,None,None,None,None,None,None,None),
|
||||
(11,3,"GtkWidget","margin-end","15",None,None,None,None,None,None,None,None,None),
|
||||
(11,5,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None),
|
||||
(11,5,"GtkButton","icon-name","emblem-system-symbolic",None,None,None,None,None,None,None,None,None),
|
||||
(11,6,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkLabel","label","LoremIpsum Wireless Mouse",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkWidget","vexpand","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkWidget","vexpand-set","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,7,"GtkWidget","width-request","200",None,None,None,None,None,None,None,None,None),
|
||||
(11,8,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None),
|
||||
(11,8,"GtkLabel","label","LoremIpsum Wireless Mouse",None,None,None,None,None,None,None,None,None),
|
||||
(11,8,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,8,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None),
|
||||
(11,8,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
|
||||
(11,8,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None),
|
||||
(11,8,"GtkWidget","valign","end",None,None,None,None,None,None,None,None,None),
|
||||
(11,8,"GtkWidget","width-request","200",None,None,None,None,None,None,None,None,None),
|
||||
(11,32,"AdwActionRow","subtitle-lines","1",None,None,None,None,None,None,None,None,None),
|
||||
(11,32,"AdwActionRow","title-lines","1",None,None,None,None,None,None,None,None,None),
|
||||
(11,32,"GtkListBoxRow","child",None,None,None,None,None,39,None,None,None,None),
|
||||
(11,32,"GtkWidget","focusable","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,32,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,32,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,32,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
|
||||
(11,40,"GtkImage","icon-name","input-mouse-symbolic",None,None,None,None,None,None,None,None,None),
|
||||
(11,40,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
|
||||
(11,40,"GtkWidget","margin-end","15",None,None,None,None,None,None,None,None,None),
|
||||
(11,44,"GtkButton","has-frame","False",None,None,None,None,None,None,None,None,None),
|
||||
(11,44,"GtkButton","icon-name","user-trash-symbolic",None,None,None,None,None,None,None,None,None),
|
||||
(11,44,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkLabel","ellipsize","end",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkLabel","label","LoremIpsum Wireless Mouse",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkLabel","single-line-mode","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkLabel","xalign","0.0",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkWidget","hexpand-set","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkWidget","vexpand","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkWidget","vexpand-set","True",None,None,None,None,None,None,None,None,None),
|
||||
(11,45,"GtkWidget","width-request","200",None,None,None,None,None,None,None,None,None),
|
||||
(12,11,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
|
||||
(12,11,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
|
||||
(12,12,"GtkLabel","label","Input",None,None,None,None,None,None,None,None,None),
|
||||
|
|
Loading…
Reference in a new issue