mirror of
https://github.com/Xetibo/ReSet.git
synced 2025-04-08 22:52:01 +02:00
Add audio box
Set size for flowbox children Rework AudioEntry Cleanup
This commit is contained in:
parent
9a6ef65e58
commit
01835f0018
40
src/audio/audioBox.rs
Normal file
40
src/audio/audioBox.rs
Normal file
|
@ -0,0 +1,40 @@
|
|||
use gtk::{Button, CompositeTemplate, DropDown, TemplateChild, glib};
|
||||
use gtk::subclass::prelude::*;
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[derive(Default, CompositeTemplate)]
|
||||
#[template(resource = "/org/xetibo/reset/resetAudio.ui")]
|
||||
pub struct AudioBox {
|
||||
#[template_child]
|
||||
pub resetOutputDevice: TemplateChild<DropDown>,
|
||||
#[template_child]
|
||||
pub resetAllOutputDevices: TemplateChild<Button>,
|
||||
}
|
||||
|
||||
|
||||
#[glib::object_subclass]
|
||||
impl ObjectSubclass for AudioBox {
|
||||
const NAME: &'static str = "resetAudio";
|
||||
type Type = super::AudioBox;
|
||||
type ParentType = gtk::Box;
|
||||
|
||||
fn class_init(klass: &mut Self::Class) {
|
||||
klass.bind_template();
|
||||
}
|
||||
|
||||
fn instance_init(obj: &glib::subclass::InitializingObject<Self>) {
|
||||
obj.init_template();
|
||||
}
|
||||
}
|
||||
|
||||
impl BoxImpl for AudioBox {}
|
||||
|
||||
impl ObjectImpl for AudioBox {}
|
||||
|
||||
impl ListBoxRowImpl for AudioBox {}
|
||||
|
||||
impl WidgetImpl for AudioBox {}
|
||||
|
||||
impl WindowImpl for AudioBox {}
|
||||
|
||||
impl ApplicationWindowImpl for AudioBox {}
|
|
@ -1,8 +1,6 @@
|
|||
use gtk::{Button, CompositeTemplate, glib, Image, Label, ProgressBar, Scale};
|
||||
use gtk::prelude::*;
|
||||
use gtk::subclass::prelude::*;
|
||||
|
||||
|
||||
#[allow(non_snake_case)]
|
||||
#[derive(Default, CompositeTemplate)]
|
||||
#[template(resource = "/org/xetibo/reset/resetAudioSourceEntry.ui")]
|
||||
|
@ -21,19 +19,21 @@ pub struct AudioSourceEntry {
|
|||
|
||||
#[glib::object_subclass]
|
||||
impl ObjectSubclass for AudioSourceEntry {
|
||||
const NAME: &'static str = "resetWifiEntry";
|
||||
const NAME: &'static str = "resetAudioSourceEntry";
|
||||
type Type = super::AudioSourceEntry;
|
||||
// type ParentType = gtk::Box;
|
||||
type ParentType = gtk::Box;
|
||||
|
||||
fn class_init(klass: &mut Self::Class) {
|
||||
klass.bind_template();
|
||||
}
|
||||
|
||||
|
||||
fn instance_init(obj: &glib::subclass::InitializingObject<Self>) {
|
||||
obj.init_template();
|
||||
}
|
||||
}
|
||||
|
||||
impl BoxImpl for AudioSourceEntry {}
|
||||
|
||||
impl ObjectImpl for AudioSourceEntry {}
|
||||
|
||||
impl ListBoxRowImpl for AudioSourceEntry {}
|
||||
|
|
|
@ -1,16 +1,28 @@
|
|||
#![allow(non_snake_case)]
|
||||
|
||||
mod audioSource;
|
||||
mod audioBox;
|
||||
|
||||
use adw::glib::Object;
|
||||
use gtk::{glib};
|
||||
|
||||
glib::wrapper! {
|
||||
pub struct AudioBox(ObjectSubclass<audioBox::AudioBox>)
|
||||
@extends gtk::Box, gtk::Widget,
|
||||
@implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable;
|
||||
}
|
||||
|
||||
glib::wrapper! {
|
||||
pub struct AudioSourceEntry(ObjectSubclass<audioSource::AudioSourceEntry>)
|
||||
@extends gtk::Box, gtk::Widget,
|
||||
@implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable;
|
||||
}
|
||||
|
||||
impl AudioBox {
|
||||
pub fn new() -> Self {
|
||||
Object::builder().build()
|
||||
}
|
||||
}
|
||||
|
||||
impl AudioSourceEntry {
|
||||
pub fn new() -> Self {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
mod window;
|
||||
|
||||
mod audio;
|
||||
mod wifi;
|
||||
|
||||
|
|
42
src/resources/resetAudio.ui
Normal file
42
src/resources/resetAudio.ui
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<!-- Created with Cambalache 0.17.0 -->
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.12"/>
|
||||
<template class="resetAudio" parent="GtkBox">
|
||||
<property name="halign">start</property>
|
||||
<property name="margin-end">5</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="width-request">300</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-bottom">10</property>
|
||||
<child>
|
||||
<object class="GtkLabel">
|
||||
<property name="label">Output Device</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkDropDown" id="resetOutputDevice">
|
||||
<property name="halign">end</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="valign">end</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSeparator"/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="resetAllOutputDevices">
|
||||
<property name="halign">start</property>
|
||||
<property name="label">All Output Devices</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="margin-top">5</property>
|
||||
<property name="valign">start</property>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
|
@ -2,17 +2,23 @@
|
|||
<!-- Created with Cambalache 0.17.0 -->
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.12"/>
|
||||
<template class="resetAudioSource" parent="GtkBox">
|
||||
<template class="resetAudioSourceEntry" parent="GtkBox">
|
||||
<property name="margin-end">5</property>
|
||||
<property name="margin-start">5</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-bottom">5</property>
|
||||
<child>
|
||||
<object class="GtkImage" id="resetSourceIcon"/>
|
||||
<object class="GtkImage" id="resetSourceIcon">
|
||||
<property name="icon-name">audio-volume-high-symbolic</property>
|
||||
<property name="margin-end">5</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="resetSourceName"/>
|
||||
<object class="GtkLabel" id="resetSourceName">
|
||||
<property name="label">System Volume</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
@ -23,23 +29,34 @@
|
|||
<child>
|
||||
<object class="GtkButton" id="resetSourceMute">
|
||||
<property name="icon-name">audio-volume-high-symbolic</property>
|
||||
<property name="margin-end">5</property>
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkScale" id="resetVolumeSlider">
|
||||
<property name="adjustment">
|
||||
<object class="GtkAdjustment">
|
||||
<property name="page-increment">0.2</property>
|
||||
<property name="upper">10.0</property>
|
||||
<property name="page-increment">5.0</property>
|
||||
<property name="upper">100.0</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="value-pos">bottom</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="resetVolumePercentage">
|
||||
<property name="label">100%</property>
|
||||
<property name="lines">1</property>
|
||||
<property name="width-request">40</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkProgressBar" id="resetLevel"/>
|
||||
<object class="GtkProgressBar" id="resetVolumeMeter"/>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
(4,7,None,"resetWiFi",None,None,None,None,None,None,None),
|
||||
(5,1,None,"resetWifiEntry",None,None,None,None,None,None,None),
|
||||
(6,1,None,"resetSidebarEntry",None,None,None,None,None,None,None),
|
||||
(7,1,None,"resetAudioSourceEntry",None,None,None,None,None,None,None)
|
||||
(7,1,None,"resetAudioSourceEntry",None,None,None,None,None,None,None),
|
||||
(8,1,None,"resetAudio",None,None,None,None,None,None,None)
|
||||
</ui>
|
||||
<object>
|
||||
(3,1,"AdwApplicationWindow","resetUI",None,None,None,None,-1," <child>\n <object id=\"resetSidebarBreakpoint\" class=\"AdwBreakpoint\">\n </object>\n </child>"),
|
||||
|
@ -48,17 +49,24 @@
|
|||
(5,5,"GtkButton","resetWifiButton",2,None,None,None,2,None),
|
||||
(6,1,"GtkListBoxRow","resetSidebarEntry",None,None,None,None,None,None),
|
||||
(6,2,"GtkBox",None,1,None,None,None,-1,None),
|
||||
(6,6,"GtkImage","resetSidebarImage",2,None,None,None,1,None),
|
||||
(6,7,"GtkLabel","resetSidebarLabel",2,None,None,None,2,None),
|
||||
(6,6,"GtkImage","resetSidebarImage",2,None,None,None,None,None),
|
||||
(6,7,"GtkLabel","resetSidebarLabel",2,None,None,None,1,None),
|
||||
(7,1,"GtkBox","resetAudioSourceEntry",None,None,None,None,-1,None),
|
||||
(7,4,"GtkProgressBar","resetLevel",1,None,None,None,2,None),
|
||||
(7,4,"GtkProgressBar","resetVolumeMeter",1,None,None,None,2,None),
|
||||
(7,5,"GtkBox",None,1,None,None,None,None,None),
|
||||
(7,6,"GtkLabel","resetSourceName",5,None,None,None,1,None),
|
||||
(7,7,"GtkImage","resetSourceIcon",5,None,None,None,None,None),
|
||||
(7,8,"GtkBox",None,1,None,None,None,1,None),
|
||||
(7,9,"GtkScale","resetVolumeSlider",8,None,None,None,1,None),
|
||||
(7,10,"GtkAdjustment",None,9,None,None,None,None,None),
|
||||
(7,11,"GtkButton","resetSourceMute",8,None,None,None,None,None)
|
||||
(7,11,"GtkButton","resetSourceMute",8,None,None,None,None,None),
|
||||
(7,12,"GtkLabel","resetVolumePercentage",8,None,None,None,2,None),
|
||||
(8,1,"GtkBox","resetAudio",None,None,None,None,None,None),
|
||||
(8,13,"GtkButton","resetAllOutputDevices",1,None,None,None,2,None),
|
||||
(8,14,"GtkBox",None,1,None,None,None,None,None),
|
||||
(8,15,"GtkLabel",None,14,None,None,None,None,None),
|
||||
(8,16,"GtkDropDown","resetOutputDevice",14,None,None,None,1,None),
|
||||
(8,18,"GtkSeparator",None,1,None,None,None,1,None)
|
||||
</object>
|
||||
<object_property>
|
||||
(3,1,"GtkWindow","default-height","500",None,None,None,None,None,None,None,None,None),
|
||||
|
@ -133,19 +141,47 @@
|
|||
(7,1,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
|
||||
(7,1,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
|
||||
(7,1,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
|
||||
(7,5,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
|
||||
(7,6,"GtkLabel","label","System Volume",None,None,None,None,None,None,None,None,None),
|
||||
(7,7,"GtkImage","icon-name","audio-volume-high-symbolic",None,None,None,None,None,None,None,None,None),
|
||||
(7,7,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
|
||||
(7,8,"GtkWidget","margin-bottom","5",None,None,None,None,None,None,None,None,None),
|
||||
(7,8,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
|
||||
(7,9,"GtkRange","adjustment",None,None,None,None,None,10,None,None,None,None),
|
||||
(7,9,"GtkScale","value-pos","bottom",None,None,None,None,None,None,None,None,None),
|
||||
(7,9,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
|
||||
(7,10,"GtkAdjustment","page-increment","0.2",None,None,None,None,None,None,None,None,None),
|
||||
(7,10,"GtkAdjustment","upper","10.0",None,None,None,None,None,None,None,None,None),
|
||||
(7,11,"GtkButton","icon-name","audio-volume-high-symbolic",None,None,None,None,None,None,None,None,None)
|
||||
(7,9,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
|
||||
(7,10,"GtkAdjustment","page-increment","5.0",None,None,None,None,None,None,None,None,None),
|
||||
(7,10,"GtkAdjustment","upper","100.0",None,None,None,None,None,None,None,None,None),
|
||||
(7,11,"GtkButton","icon-name","audio-volume-high-symbolic",None,None,None,None,None,None,None,None,None),
|
||||
(7,11,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
|
||||
(7,11,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
|
||||
(7,12,"GtkLabel","label","100%",None,None,None,None,None,None,None,None,None),
|
||||
(7,12,"GtkLabel","lines","1",None,None,None,None,None,None,None,None,None),
|
||||
(7,12,"GtkWidget","width-request","40",None,None,None,None,None,None,None,None,None),
|
||||
(8,1,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
|
||||
(8,1,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
|
||||
(8,1,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
|
||||
(8,1,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
|
||||
(8,1,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
|
||||
(8,1,"GtkWidget","width-request","300",None,None,None,None,None,None,None,None,None),
|
||||
(8,13,"GtkButton","label","All Output Devices",None,None,None,None,None,None,None,None,None),
|
||||
(8,13,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
|
||||
(8,13,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
|
||||
(8,13,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
|
||||
(8,13,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
|
||||
(8,14,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None),
|
||||
(8,15,"GtkLabel","label","Output Device",None,None,None,None,None,None,None,None,None),
|
||||
(8,16,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
|
||||
(8,16,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
|
||||
(8,16,"GtkWidget","valign","end",None,None,None,None,None,None,None,None,None)
|
||||
</object_property>
|
||||
<object_data>
|
||||
(3,23,"GtkWidget",1,1,None,None,None,None,None,None),
|
||||
(3,23,"GtkWidget",2,2,None,1,None,None,None,None)
|
||||
</object_data>
|
||||
<object_data_arg>
|
||||
(3,23,"GtkWidget",2,2,"name","b")
|
||||
(3,23,"GtkWidget",2,2,"name","b"),
|
||||
(7,9,"GtkScale",2,2,"value","50.0")
|
||||
</object_data_arg>
|
||||
</cambalache-project>
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<property name="halign">start</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="valign">start</property>
|
||||
<property name="width-request">300</property>
|
||||
<child>
|
||||
<object class="AdwClampScrollable">
|
||||
<property name="maximum-size">0</property>
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
<file compressed="true" preprocess="xml-stripblanks">resetSidebarEntry.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">resetWiFi.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">resetWifiEntry.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">resetAudio.ui</file>
|
||||
<file compressed="true" preprocess="xml-stripblanks">resetAudioSourceEntry.ui</file>
|
||||
</gresource>
|
||||
</gresources>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
use gtk::FlowBox;
|
||||
use crate::audio::AudioBox;
|
||||
use crate::wifi::WifiBox;
|
||||
|
||||
|
||||
pub const HANDLE_CONNECTIVITY_CLICK: fn(FlowBox) = |resetMain: FlowBox| {
|
||||
let wifibox = WifiBox::new();
|
||||
resetMain.remove_all();
|
||||
|
@ -27,9 +27,9 @@ pub const HANDLE_VPN_CLICK: fn(FlowBox) = |resetMain: FlowBox| {
|
|||
};
|
||||
|
||||
pub const HANDLE_AUDIO_CLICK: fn(FlowBox) = |resetMain: FlowBox| {
|
||||
let wifibox = WifiBox::new();
|
||||
let audioBox = AudioBox::new();
|
||||
resetMain.remove_all();
|
||||
resetMain.insert(&wifibox, -1);
|
||||
resetMain.insert(&audioBox, -1);
|
||||
};
|
||||
|
||||
pub const HANDLE_VOLUME_CLICK: fn(FlowBox) = |resetMain: FlowBox| {
|
||||
|
|
|
@ -45,7 +45,7 @@ impl Window {
|
|||
}));
|
||||
|
||||
selfImp.resetSidebarList.connect_row_activated(clone!(@ weak selfImp as flowbox => move |x, y| {
|
||||
let mut result = y.downcast_ref::<SidebarEntry>().unwrap();
|
||||
let result = y.downcast_ref::<SidebarEntry>().unwrap();
|
||||
let clickEvent = result.imp().onClickEvent.borrow().onClickEvent;
|
||||
(clickEvent)(flowbox.resetMain.get());
|
||||
}));
|
||||
|
@ -100,7 +100,7 @@ impl Window {
|
|||
let selfImp = self.imp();
|
||||
let mut sidebarEntries = selfImp.sidebarEntries.borrow_mut();
|
||||
|
||||
let mut connectivityList = vec![SidebarEntry::new("WiFi",
|
||||
let connectivityList = vec![SidebarEntry::new("WiFi",
|
||||
"network-wireless-symbolic",
|
||||
Categories::Connectivity,
|
||||
true,
|
||||
|
@ -122,7 +122,7 @@ impl Window {
|
|||
false,
|
||||
HANDLE_CONNECTIVITY_CLICK), connectivityList));
|
||||
|
||||
let mut audioList = vec![SidebarEntry::new("Volume",
|
||||
let audioList = vec![SidebarEntry::new("Volume",
|
||||
"audio-volume-high-symbolic",
|
||||
Categories::Audio,
|
||||
true,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use std::cell::{Cell, RefCell};
|
||||
use std::cell::RefCell;
|
||||
use adw::{Breakpoint, OverlaySplitView};
|
||||
use adw::glib::StaticTypeExt;
|
||||
use adw::subclass::prelude::AdwApplicationWindowImpl;
|
||||
|
|
Loading…
Reference in a new issue