mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-07-01 15:57:46 +02:00
Improve UI
This commit is contained in:
parent
02e63f5984
commit
c6efced326
28 changed files with 609 additions and 1035 deletions
|
@ -3,7 +3,7 @@ use std::time::{Duration, SystemTime};
|
|||
|
||||
use adw::glib;
|
||||
use adw::glib::Object;
|
||||
use adw::prelude::{ButtonExt, RangeExt};
|
||||
use adw::prelude::{ButtonExt, ComboRowExt, PreferencesRowExt, RangeExt};
|
||||
use dbus::blocking::Connection;
|
||||
use dbus::Error;
|
||||
use glib::subclass::types::ObjectSubclassIsExt;
|
||||
|
@ -16,7 +16,7 @@ use super::sinkBox::SinkBox;
|
|||
|
||||
glib::wrapper! {
|
||||
pub struct InputStreamEntry(ObjectSubclass<inputStreamEntryImpl::InputStreamEntry>)
|
||||
@extends gtk::Box, gtk::Widget,
|
||||
@extends adw::PreferencesGroup, gtk::Widget,
|
||||
@implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable;
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ impl InputStreamEntry {
|
|||
.set_icon_name("audio-volume-high-symbolic");
|
||||
}
|
||||
let name = stream.application_name.clone() + ": " + stream.name.as_str();
|
||||
imp.resetSinkName.set_text(name.as_str());
|
||||
imp.resetSinkSelection.set_title(name.as_str());
|
||||
let volume = stream.volume.first().unwrap_or(&0_u32);
|
||||
let fraction = (*volume as f64 / 655.36).round();
|
||||
let percentage = (fraction).to_string() + "%";
|
||||
|
@ -76,7 +76,7 @@ impl InputStreamEntry {
|
|||
// list = box_imp.resetModelList.try_borrow();
|
||||
// }
|
||||
// let list = list.unwrap();
|
||||
imp.resetSelectedSink.set_model(Some(&*list));
|
||||
imp.resetSinkSelection.set_model(Some(&*list));
|
||||
let map = box_imp.resetSinkMap.read().unwrap();
|
||||
let sink_list = box_imp.resetSinkList.read().unwrap();
|
||||
let name = sink_list.get(&index);
|
||||
|
@ -84,7 +84,7 @@ impl InputStreamEntry {
|
|||
let name = &name.unwrap().2;
|
||||
let index = map.get(name);
|
||||
if index.is_some() {
|
||||
imp.resetSelectedSink.set_selected(index.unwrap().1);
|
||||
imp.resetSinkSelection.set_selected(index.unwrap().1);
|
||||
}
|
||||
} else {
|
||||
let mut name = box_imp.resetDefaultSink.try_borrow();
|
||||
|
@ -94,11 +94,11 @@ impl InputStreamEntry {
|
|||
let name = &name.unwrap().alias;
|
||||
let index = map.get(name);
|
||||
if index.is_some() {
|
||||
imp.resetSelectedSink.set_selected(index.unwrap().1);
|
||||
imp.resetSinkSelection.set_selected(index.unwrap().1);
|
||||
}
|
||||
}
|
||||
}
|
||||
imp.resetSelectedSink.connect_selected_notify(
|
||||
imp.resetSinkSelection.connect_selected_notify(
|
||||
clone!(@weak imp, @weak box_imp => move |dropdown| {
|
||||
let selected = dropdown.selected_item();
|
||||
if selected.is_none() {
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
use std::cell::RefCell;
|
||||
use std::sync::Arc;
|
||||
use std::time::SystemTime;
|
||||
use adw::{ComboRow, PreferencesGroup};
|
||||
use adw::subclass::prelude::PreferencesGroupImpl;
|
||||
|
||||
use gtk::subclass::prelude::*;
|
||||
use gtk::{glib, Button, CompositeTemplate, DropDown, Label, ProgressBar, Scale};
|
||||
use gtk::{glib, Button, CompositeTemplate, Label, ProgressBar, Scale};
|
||||
use ReSet_Lib::audio::audio::InputStream;
|
||||
|
||||
use super::inputStreamEntry;
|
||||
|
@ -13,9 +15,7 @@ use super::inputStreamEntry;
|
|||
#[template(resource = "/org/Xetibo/ReSet/resetInputStreamEntry.ui")]
|
||||
pub struct InputStreamEntry {
|
||||
#[template_child]
|
||||
pub resetSinkName: TemplateChild<Label>,
|
||||
#[template_child]
|
||||
pub resetSelectedSink: TemplateChild<DropDown>,
|
||||
pub resetSinkSelection: TemplateChild<ComboRow>,
|
||||
#[template_child]
|
||||
pub resetSinkMute: TemplateChild<Button>,
|
||||
#[template_child]
|
||||
|
@ -34,7 +34,7 @@ impl ObjectSubclass for InputStreamEntry {
|
|||
const ABSTRACT: bool = false;
|
||||
const NAME: &'static str = "resetInputStreamEntry";
|
||||
type Type = inputStreamEntry::InputStreamEntry;
|
||||
type ParentType = gtk::Box;
|
||||
type ParentType = PreferencesGroup;
|
||||
|
||||
fn class_init(klass: &mut Self::Class) {
|
||||
klass.bind_template();
|
||||
|
@ -45,7 +45,7 @@ impl ObjectSubclass for InputStreamEntry {
|
|||
}
|
||||
}
|
||||
|
||||
impl BoxImpl for InputStreamEntry {}
|
||||
impl PreferencesGroupImpl for InputStreamEntry {}
|
||||
|
||||
impl ObjectImpl for InputStreamEntry {}
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
use adw::prelude::PreferencesRowExt;
|
||||
use adw::prelude::PreferencesGroupExt;
|
||||
use std::sync::Arc;
|
||||
use std::time::{Duration, SystemTime};
|
||||
|
@ -64,12 +65,11 @@ impl SinkBox {
|
|||
.set_action_target_value(Some(&Variant::from("profileConfiguration")));
|
||||
selfImp.resetCardsRow.connect_action_name_notify(|_| {});
|
||||
|
||||
selfImp
|
||||
.resetInputStreamButton
|
||||
.set_action_name(Some("navigation.pop"));
|
||||
selfImp
|
||||
.resetInputCardsBackButton
|
||||
.set_action_name(Some("navigation.pop"));
|
||||
selfImp.resetInputStreamButton.set_activatable(true);
|
||||
selfImp.resetInputStreamButton.set_action_name(Some("navigation.pop"));
|
||||
|
||||
selfImp.resetInputCardsBackButton.set_activatable(true);
|
||||
selfImp.resetInputCardsBackButton.set_action_name(Some("navigation.pop"));
|
||||
|
||||
let factory = &SignalListItemFactory::new();
|
||||
factory.connect_setup(|_, item| {
|
||||
|
@ -462,7 +462,7 @@ pub fn start_output_box_listener(conn: Connection, sink_box: Arc<SinkBox>) -> Co
|
|||
} else {
|
||||
imp.resetSelectedSink.set_active(false);
|
||||
}
|
||||
imp.resetSinkName.set_text(ir.sink.alias.clone().as_str());
|
||||
imp.resetSinkName.set_title(ir.sink.alias.clone().as_str());
|
||||
imp.resetVolumePercentage.set_text(&percentage);
|
||||
imp.resetVolumeSlider.set_value(*volume as f64);
|
||||
});
|
||||
|
@ -531,7 +531,7 @@ pub fn start_output_box_listener(conn: Connection, sink_box: Arc<SinkBox>) -> Co
|
|||
.set_icon_name("audio-volume-high-symbolic");
|
||||
}
|
||||
let name = ir.stream.application_name.clone() + ": " + ir.stream.name.as_str();
|
||||
imp.resetSinkName.set_text(name.as_str());
|
||||
imp.resetSinkSelection.set_title(name.as_str());
|
||||
let volume = ir.stream.volume.first().unwrap_or(&0_u32);
|
||||
let fraction = (*volume as f64 / 655.36).round();
|
||||
let percentage = (fraction).to_string() + "%";
|
||||
|
@ -540,7 +540,7 @@ pub fn start_output_box_listener(conn: Connection, sink_box: Arc<SinkBox>) -> Co
|
|||
let map = output_box_imp.resetSinkMap.read().unwrap();
|
||||
let index = map.get(&alias);
|
||||
if index.is_some() {
|
||||
imp.resetSelectedSink.set_selected(index.unwrap().1);
|
||||
imp.resetSinkSelection.set_selected(index.unwrap().1);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -37,11 +37,11 @@ pub struct SinkBox {
|
|||
#[template_child]
|
||||
pub resetSinks: TemplateChild<Box>,
|
||||
#[template_child]
|
||||
pub resetInputStreamButton: TemplateChild<ListEntry>,
|
||||
pub resetInputStreamButton: TemplateChild<ActionRow>,
|
||||
#[template_child]
|
||||
pub resetInputStreams: TemplateChild<Box>,
|
||||
#[template_child]
|
||||
pub resetInputCardsBackButton: TemplateChild<ListEntry>,
|
||||
pub resetInputCardsBackButton: TemplateChild<ActionRow>,
|
||||
#[template_child]
|
||||
pub resetCards: TemplateChild<PreferencesGroup>,
|
||||
pub resetDefaultCheckButton: Arc<CheckButton>,
|
||||
|
|
|
@ -3,7 +3,7 @@ use std::time::{Duration, SystemTime};
|
|||
|
||||
use adw::glib;
|
||||
use adw::glib::Object;
|
||||
use adw::prelude::{ButtonExt, CheckButtonExt, RangeExt};
|
||||
use adw::prelude::{ButtonExt, CheckButtonExt, PreferencesRowExt, RangeExt};
|
||||
use dbus::blocking::Connection;
|
||||
use dbus::Error;
|
||||
use glib::subclass::types::ObjectSubclassIsExt;
|
||||
|
@ -15,7 +15,7 @@ use super::sinkEntryImpl;
|
|||
|
||||
glib::wrapper! {
|
||||
pub struct SinkEntry(ObjectSubclass<sinkEntryImpl::SinkEntry>)
|
||||
@extends gtk::Box, gtk::Widget,
|
||||
@extends adw::PreferencesGroup, gtk::Widget,
|
||||
@implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable;
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ impl SinkEntry {
|
|||
// TODO handle events
|
||||
{
|
||||
let imp = obj.imp();
|
||||
imp.resetSinkName.set_text(stream.alias.clone().as_str());
|
||||
imp.resetSinkName.set_title(stream.alias.clone().as_str());
|
||||
let name = Arc::new(stream.name.clone());
|
||||
let volume = stream.volume.first().unwrap_or(&0_u32);
|
||||
let fraction = (*volume as f64 / 655.36).round();
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
use std::cell::RefCell;
|
||||
use std::sync::Arc;
|
||||
use std::time::SystemTime;
|
||||
use adw::{ActionRow, PreferencesGroup};
|
||||
use adw::subclass::prelude::PreferencesGroupImpl;
|
||||
|
||||
use crate::components::output::sinkEntry;
|
||||
use gtk::subclass::prelude::*;
|
||||
|
@ -12,7 +14,7 @@ use ReSet_Lib::audio::audio::Sink;
|
|||
#[template(resource = "/org/Xetibo/ReSet/resetSinkEntry.ui")]
|
||||
pub struct SinkEntry {
|
||||
#[template_child]
|
||||
pub resetSinkName: TemplateChild<Label>,
|
||||
pub resetSinkName: TemplateChild<ActionRow>,
|
||||
#[template_child]
|
||||
pub resetSelectedSink: TemplateChild<CheckButton>,
|
||||
#[template_child]
|
||||
|
@ -32,7 +34,7 @@ impl ObjectSubclass for SinkEntry {
|
|||
const ABSTRACT: bool = false;
|
||||
const NAME: &'static str = "resetSinkEntry";
|
||||
type Type = sinkEntry::SinkEntry;
|
||||
type ParentType = gtk::Box;
|
||||
type ParentType = PreferencesGroup;
|
||||
|
||||
fn class_init(klass: &mut Self::Class) {
|
||||
klass.bind_template();
|
||||
|
@ -43,7 +45,7 @@ impl ObjectSubclass for SinkEntry {
|
|||
}
|
||||
}
|
||||
|
||||
impl BoxImpl for SinkEntry {}
|
||||
impl PreferencesGroupImpl for SinkEntry {}
|
||||
|
||||
impl ObjectImpl for SinkEntry {}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue