Add audio template

This commit is contained in:
takotori 2023-10-28 11:10:01 +02:00
parent 4c3209deae
commit 600efad2ef
8 changed files with 163 additions and 27 deletions

45
src/audio/audioSource.rs Normal file
View file

@ -0,0 +1,45 @@
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")]
pub struct AudioSourceEntry {
#[template_child]
pub resetSourceIcon: TemplateChild<Image>,
#[template_child]
pub resetSourceName: TemplateChild<Label>,
#[template_child]
pub resetSourceMute: TemplateChild<Button>,
#[template_child]
pub resetVolumeSlider: TemplateChild<Scale>,
#[template_child]
pub resetVolumeMeter: TemplateChild<ProgressBar>,
}
#[glib::object_subclass]
impl ObjectSubclass for AudioSourceEntry {
const NAME: &'static str = "resetWifiEntry";
type Type = super::AudioSourceEntry;
// 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 ObjectImpl for AudioSourceEntry {}
impl ListBoxRowImpl for AudioSourceEntry {}
impl WidgetImpl for AudioSourceEntry {}
impl WindowImpl for AudioSourceEntry {}
impl ApplicationWindowImpl for AudioSourceEntry {}

19
src/audio/mod.rs Normal file
View file

@ -0,0 +1,19 @@
#![allow(non_snake_case)]
mod audioSource;
use adw::glib::Object;
use gtk::{glib};
glib::wrapper! {
pub struct AudioSourceEntry(ObjectSubclass<audioSource::AudioSourceEntry>)
@extends gtk::Box, gtk::Widget,
@implements gtk::Accessible, gtk::Buildable, gtk::ConstraintTarget, gtk::Orientable;
}
impl AudioSourceEntry {
pub fn new() -> Self {
Object::builder().build()
}
}

View file

@ -1,4 +1,6 @@
mod window;
mod audio;
mod wifi;
use gtk::prelude::*;

View file

@ -0,0 +1,45 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.17.0 -->
<interface>
<requires lib="gtk" version="4.12"/>
<template class="resetAudioSource" parent="GtkBox">
<property name="margin-end">5</property>
<property name="margin-start">5</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<child>
<object class="GtkImage" id="resetSourceIcon"/>
</child>
<child>
<object class="GtkLabel" id="resetSourceName"/>
</child>
</object>
</child>
<child>
<object class="GtkBox">
<property name="margin-bottom">5</property>
<property name="margin-top">5</property>
<child>
<object class="GtkButton" id="resetSourceMute">
<property name="icon-name">audio-volume-high-symbolic</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>
</object>
</property>
<property name="hexpand">True</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkProgressBar" id="resetLevel"/>
</child>
</template>
</interface>

View file

@ -4,6 +4,9 @@
<requires lib="gtk" version="4.12"/>
<requires lib="libadwaita" version="1.4"/>
<template class="resetUI" parent="AdwApplicationWindow">
<child>
<object class="GtkWindowHandle"/>
</child>
<child>
<object class="AdwOverlaySplitView" id="resetOverlaySplitView">
<property name="content">
@ -12,6 +15,7 @@
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="valign">start</property>
<child>
<object class="GtkButton" id="resetSideBarToggle">
<property name="icon-name">sidebar-show-symbolic</property>
@ -21,27 +25,32 @@
<child>
<object class="GtkButton" id="resetBack">
<property name="icon-name">go-previous-symbolic</property>
<property name="valign">start</property>
</object>
</child>
<child>
<object class="GtkButton" id="resetForward">
<property name="icon-name">go-previous-symbolic-rtl</property>
<property name="valign">start</property>
</object>
</child>
<child>
<object class="GtkBox" id="resetPath"/>
<object class="GtkBox" id="resetPath">
<property name="valign">start</property>
</object>
</child>
<child>
<object class="GtkButton" id="resetMenu">
<property name="halign">end</property>
<property name="hexpand">True</property>
<property name="icon-name">open-menu-symbolic</property>
<property name="valign">center</property>
<property name="valign">start</property>
</object>
</child>
<child>
<object class="GtkButton" id="resetClose">
<property name="icon-name">window-close-symbolic</property>
<property name="valign">start</property>
</object>
</child>
</object>

View file

@ -5,24 +5,26 @@
(3,1,None,"resetMainWindow",None,None,None,None,None,None,None),
(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)
(6,1,None,"resetSidebarEntry",None,None,None,None,None,None,None),
(7,1,None,"resetAudioSourceEntry",None,None,None,None,None,None,None)
</ui>
<object>
(3,1,"AdwApplicationWindow","resetUI",None,None,None,None,-1," &lt;child&gt;\n &lt;object id=\"resetSidebarBreakpoint\" class=\"AdwBreakpoint\"&gt;\n &lt;/object&gt;\n &lt;/child&gt;"),
(3,2,"AdwOverlaySplitView","resetOverlaySplitView",1,None,None,None,None,""),
(3,2,"AdwOverlaySplitView","resetOverlaySplitView",1,None,None,None,2,""),
(3,3,"GtkBox",None,2,None,None,None,None,None),
(3,4,"GtkBox",None,3,None,None,None,None,None),
(3,5,"GtkButton","resetSideBarToggle",4,None,None,None,None,None),
(3,6,"GtkButton",None,4,None,None,None,1,None),
(3,7,"GtkButton",None,4,None,None,None,2,None),
(3,8,"GtkLabel",None,4,None,None,None,3,None),
(3,9,"GtkButton",None,4,None,None,None,4,None),
(3,10,"GtkButton",None,4,None,None,None,5,None),
(3,6,"GtkButton","resetBack",4,None,None,None,1,None),
(3,7,"GtkButton","resetForward",4,None,None,None,2,None),
(3,9,"GtkButton","resetMenu",4,None,None,None,4,None),
(3,10,"GtkButton","resetClose",4,None,None,None,5,None),
(3,11,"GtkFlowBox","resetMain",3,None,None,None,1,None),
(3,12,"GtkViewport",None,2,None,None,None,None,None),
(3,13,"GtkBox",None,12,None,None,None,None,None),
(3,14,"GtkSearchEntry","resetSearchEntry",13,None,None,None,None,None),
(3,15,"GtkListBox","resetSidebarList",13,None,None,None,1,None),
(3,16,"GtkBox","resetPath",4,None,None,None,3,None),
(3,17,"GtkWindowHandle",None,1,None,None,None,1,None),
(4,7,"GtkBox","resetWifi",None,None,None,None,None,None),
(4,8,"AdwClampScrollable",None,7,None,None,None,None,None),
(4,9,"GtkBox",None,8,None,None,None,None,None),
@ -44,7 +46,16 @@
(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,7,"GtkLabel","resetSidebarLabel",2,None,None,None,2,None),
(7,1,"GtkBox","resetAudioSourceEntry",None,None,None,None,-1,None),
(7,4,"GtkProgressBar","resetLevel",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)
</object>
<object_property>
(3,2,"AdwOverlaySplitView","content",None,None,None,None,None,3,None,None,None,None),
@ -55,16 +66,19 @@
(3,2,"GtkWidget","margin-top","5",None,None,None,None,None,None,None,None,None),
(3,3,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
(3,3,"GtkWidget","margin-start","5",None,None,None,None,None,None,None,None,None),
(3,4,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
(3,5,"GtkButton","icon-name","sidebar-show-symbolic",None,None,None,None,None,None,None,None,None),
(3,5,"GtkWidget","visible","False",None,None,None,None,None,None,None,None,None),
(3,6,"GtkButton","icon-name","go-previous-symbolic",None,None,None,None,None,None,None,None,None),
(3,6,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
(3,7,"GtkButton","icon-name","go-previous-symbolic-rtl",None,None,None,None,None,None,None,None,None),
(3,8,"GtkLabel","label","breadcrum path",None,None,None,None,None,None,None,None,None),
(3,7,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
(3,9,"GtkButton","icon-name","open-menu-symbolic",None,None,None,None,None,None,None,None,None),
(3,9,"GtkWidget","halign","end",None,None,None,None,None,None,None,None,None),
(3,9,"GtkWidget","hexpand","True",None,None,None,None,None,None,None,None,None),
(3,9,"GtkWidget","valign","center",None,None,None,None,None,None,None,None,None),
(3,9,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
(3,10,"GtkButton","icon-name","window-close-symbolic",None,None,None,None,None,None,None,None,None),
(3,10,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
(3,11,"GtkFlowBox","column-spacing","25",None,None,None,None,None,None,None,None,None),
(3,11,"GtkFlowBox","homogeneous","True",None,None,None,None,None,None,None,None,None),
(3,11,"GtkFlowBox","row-spacing","25",None,None,None,None,None,None,None,None,None),
@ -76,6 +90,7 @@
(3,14,"GtkWidget","margin-end","5",None,None,None,None,None,None,None,None,None),
(3,15,"GtkWidget","css-name","resetList",None,None,None,None,None,None,None,None,None),
(3,15,"GtkWidget","width-request","150",None,None,None,None,None,None,None,None,None),
(3,16,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
(4,7,"GtkOrientable","orientation","vertical",None,None,None,None,None,None,None,None,None),
(4,7,"GtkWidget","halign","start",None,None,None,None,None,None,None,None,None),
(4,7,"GtkWidget","valign","start",None,None,None,None,None,None,None,None,None),
@ -106,7 +121,17 @@
(6,2,"GtkWidget","margin-bottom","10",None,None,None,None,None,None,None,None,None),
(6,2,"GtkWidget","margin-start","10",None,None,None,None,None,None,None,None,None),
(6,2,"GtkWidget","margin-top","10",None,None,None,None,None,None,None,None,None),
(6,6,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None)
(6,6,"GtkWidget","margin-end","10",None,None,None,None,None,None,None,None,None),
(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,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,"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)
</object_property>
<object_data>
(3,15,"GtkWidget",2,2,None,1,None,None,None,None),

View file

@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/xetibo/reset/">
<file compressed="true" preprocess="xml-stripblanks">resetSidebarEntry.ui</file>
<file compressed="true" preprocess="xml-stripblanks">resetWifiEntry.ui</file>
<file compressed="true" preprocess="xml-stripblanks">resetWiFi.ui</file>
<file compressed="true" preprocess="xml-stripblanks">resetMainWindow.ui</file>
<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">resetAudioSourceEntry.ui</file>
</gresource>
</gresources>

View file

@ -1,6 +1,7 @@
use gtk::{CompositeTemplate, glib, ListBox};
use gtk::prelude::*;
use gtk::subclass::prelude::*;
use crate::wifi::WifiEntry;
#[allow(non_snake_case)]
@ -9,7 +10,6 @@ use crate::wifi::WifiEntry;
pub struct WifiBox {
#[template_child]
pub resetWifiList: TemplateChild<ListBox>,
// pub resetWifiList2: Vec<ListBox>,
}
#[glib::object_subclass]
@ -31,16 +31,6 @@ impl ObjectSubclass for WifiBox {
impl ObjectImpl for WifiBox {
fn constructed(&self) {
self.parent_constructed();
// for i in 0.. {
// let listEntryOption = self.resetWifiList.row_at_index(i);
// match listEntryOption {
// None => break,
// Some(row) => {
//
// }
// }
// }
}
}