Ui imporovemnts
This commit is contained in:
		
							parent
							
								
									9bcfcb9209
								
							
						
					
					
						commit
						a384f45796
					
				| 
						 | 
					@ -1,6 +1,56 @@
 | 
				
			||||||
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
 | 
					<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
				
			||||||
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
 | 
					<!-- Created with Inkscape (http://www.inkscape.org/) -->
 | 
				
			||||||
<path d="M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z" stroke="#FFFFFF" stroke-width="2"/>
 | 
					
 | 
				
			||||||
<path d="M14 9L14 15" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
 | 
					<svg
 | 
				
			||||||
<path d="M10 9L10 15" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
 | 
					   width="32"
 | 
				
			||||||
 | 
					   height="32"
 | 
				
			||||||
 | 
					   viewBox="0 0 32 32"
 | 
				
			||||||
 | 
					   version="1.1"
 | 
				
			||||||
 | 
					   id="svg1"
 | 
				
			||||||
 | 
					   sodipodi:docname="pause2.svg"
 | 
				
			||||||
 | 
					   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
 | 
				
			||||||
 | 
					   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
 | 
				
			||||||
 | 
					   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
 | 
				
			||||||
 | 
					   xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
 | 
					   xmlns:svg="http://www.w3.org/2000/svg">
 | 
				
			||||||
 | 
					  <sodipodi:namedview
 | 
				
			||||||
 | 
					     id="namedview1"
 | 
				
			||||||
 | 
					     pagecolor="#ffffff"
 | 
				
			||||||
 | 
					     bordercolor="#ffffff"
 | 
				
			||||||
 | 
					     borderopacity="0.25"
 | 
				
			||||||
 | 
					     inkscape:showpageshadow="2"
 | 
				
			||||||
 | 
					     inkscape:pageopacity="0.0"
 | 
				
			||||||
 | 
					     inkscape:pagecheckerboard="0"
 | 
				
			||||||
 | 
					     inkscape:deskcolor="#d1d1d1"
 | 
				
			||||||
 | 
					     inkscape:document-units="px"
 | 
				
			||||||
 | 
					     inkscape:zoom="18.296388"
 | 
				
			||||||
 | 
					     inkscape:cx="20.222571"
 | 
				
			||||||
 | 
					     inkscape:cy="14.046488"
 | 
				
			||||||
 | 
					     inkscape:window-width="1898"
 | 
				
			||||||
 | 
					     inkscape:window-height="1037"
 | 
				
			||||||
 | 
					     inkscape:window-x="10"
 | 
				
			||||||
 | 
					     inkscape:window-y="10"
 | 
				
			||||||
 | 
					     inkscape:window-maximized="1"
 | 
				
			||||||
 | 
					     inkscape:current-layer="layer1" />
 | 
				
			||||||
 | 
					  <defs
 | 
				
			||||||
 | 
					     id="defs1" />
 | 
				
			||||||
 | 
					  <g
 | 
				
			||||||
 | 
					     inkscape:label="Layer 1"
 | 
				
			||||||
 | 
					     inkscape:groupmode="layer"
 | 
				
			||||||
 | 
					     id="layer1">
 | 
				
			||||||
 | 
					    <rect
 | 
				
			||||||
 | 
					       style="fill:#ffffff;stroke-width:1.35128"
 | 
				
			||||||
 | 
					       id="rect1"
 | 
				
			||||||
 | 
					       width="9.1821404"
 | 
				
			||||||
 | 
					       height="31.973524"
 | 
				
			||||||
 | 
					       x="0.054655612"
 | 
				
			||||||
 | 
					       y="0.1093111" />
 | 
				
			||||||
 | 
					    <rect
 | 
				
			||||||
 | 
					       style="fill:#ffffff;stroke-width:1.35128"
 | 
				
			||||||
 | 
					       id="rect1-5"
 | 
				
			||||||
 | 
					       width="9.1821404"
 | 
				
			||||||
 | 
					       height="31.973524"
 | 
				
			||||||
 | 
					       x="22.809692"
 | 
				
			||||||
 | 
					       y="0.091137752" />
 | 
				
			||||||
 | 
					  </g>
 | 
				
			||||||
</svg>
 | 
					</svg>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 604 B After Width: | Height: | Size: 1.5 KiB  | 
| 
						 | 
					@ -1,12 +1,59 @@
 | 
				
			||||||
<?xml version="1.0" encoding="iso-8859-1"?>
 | 
					<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
				
			||||||
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
 | 
					<!-- Created with Inkscape (http://www.inkscape.org/) -->
 | 
				
			||||||
<svg fill="#FFFFFF" height="800px" width="800px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
 | 
					
 | 
				
			||||||
	 viewBox="0 0 60 60" xml:space="preserve">
 | 
					<svg
 | 
				
			||||||
<g>
 | 
					   width="32"
 | 
				
			||||||
	<path d="M45.563,29.174l-22-15c-0.307-0.208-0.703-0.231-1.031-0.058C22.205,14.289,22,14.629,22,15v30
 | 
					   height="32"
 | 
				
			||||||
		c0,0.371,0.205,0.711,0.533,0.884C22.679,45.962,22.84,46,23,46c0.197,0,0.394-0.059,0.563-0.174l22-15
 | 
					   viewBox="0 0 32 32"
 | 
				
			||||||
		C45.836,30.64,46,30.331,46,30S45.836,29.36,45.563,29.174z M24,43.107V16.893L43.225,30L24,43.107z"/>
 | 
					   version="1.1"
 | 
				
			||||||
	<path d="M30,0C13.458,0,0,13.458,0,30s13.458,30,30,30s30-13.458,30-30S46.542,0,30,0z M30,58C14.561,58,2,45.439,2,30
 | 
					   id="svg1"
 | 
				
			||||||
		S14.561,2,30,2s28,12.561,28,28S45.439,58,30,58z"/>
 | 
					   sodipodi:docname="play2.svg"
 | 
				
			||||||
</g>
 | 
					   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
 | 
				
			||||||
 | 
					   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
 | 
				
			||||||
 | 
					   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
 | 
				
			||||||
 | 
					   xmlns="http://www.w3.org/2000/svg"
 | 
				
			||||||
 | 
					   xmlns:svg="http://www.w3.org/2000/svg">
 | 
				
			||||||
 | 
					  <sodipodi:namedview
 | 
				
			||||||
 | 
					     id="namedview1"
 | 
				
			||||||
 | 
					     pagecolor="#ffffff"
 | 
				
			||||||
 | 
					     bordercolor="#ffffff"
 | 
				
			||||||
 | 
					     borderopacity="0.25"
 | 
				
			||||||
 | 
					     inkscape:showpageshadow="2"
 | 
				
			||||||
 | 
					     inkscape:pageopacity="0.0"
 | 
				
			||||||
 | 
					     inkscape:pagecheckerboard="0"
 | 
				
			||||||
 | 
					     inkscape:deskcolor="#FFFFFF"
 | 
				
			||||||
 | 
					     inkscape:document-units="px"
 | 
				
			||||||
 | 
					     inkscape:zoom="18.296388"
 | 
				
			||||||
 | 
					     inkscape:cx="20.222571"
 | 
				
			||||||
 | 
					     inkscape:cy="14.046488"
 | 
				
			||||||
 | 
					     inkscape:window-width="1898"
 | 
				
			||||||
 | 
					     inkscape:window-height="1037"
 | 
				
			||||||
 | 
					     inkscape:window-x="10"
 | 
				
			||||||
 | 
					     inkscape:window-y="10"
 | 
				
			||||||
 | 
					     inkscape:window-maximized="1"
 | 
				
			||||||
 | 
					     inkscape:current-layer="layer1" />
 | 
				
			||||||
 | 
					  <defs
 | 
				
			||||||
 | 
					     id="defs1" />
 | 
				
			||||||
 | 
					  <g
 | 
				
			||||||
 | 
					     inkscape:label="Layer 1"
 | 
				
			||||||
 | 
					     inkscape:groupmode="layer"
 | 
				
			||||||
 | 
					     id="layer1">
 | 
				
			||||||
 | 
					    <path
 | 
				
			||||||
 | 
					       sodipodi:type="star"
 | 
				
			||||||
 | 
					       style="fill:#ffffff"
 | 
				
			||||||
 | 
					       id="path1"
 | 
				
			||||||
 | 
					       inkscape:flatsided="false"
 | 
				
			||||||
 | 
					       sodipodi:sides="3"
 | 
				
			||||||
 | 
					       sodipodi:cx="1.004831"
 | 
				
			||||||
 | 
					       sodipodi:cy="6.8019323"
 | 
				
			||||||
 | 
					       sodipodi:r1="22.598255"
 | 
				
			||||||
 | 
					       sodipodi:r2="11.299128"
 | 
				
			||||||
 | 
					       sodipodi:arg1="1.0471976"
 | 
				
			||||||
 | 
					       sodipodi:arg2="2.0943951"
 | 
				
			||||||
 | 
					       inkscape:rounded="0"
 | 
				
			||||||
 | 
					       inkscape:randomized="0"
 | 
				
			||||||
 | 
					       d="M 12.303958,26.372596 -4.6447328,16.587264 -21.593424,6.8019312 -4.6447329,-2.9833992 12.303959,-12.76873 l 0,19.5706623 z"
 | 
				
			||||||
 | 
					       inkscape:transform-center-x="-5.3338952"
 | 
				
			||||||
 | 
					       transform="matrix(-0.94412506,0,0,0.81752476,11.623548,10.454857)" />
 | 
				
			||||||
 | 
					  </g>
 | 
				
			||||||
</svg>
 | 
					</svg>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 827 B After Width: | Height: | Size: 1.8 KiB  | 
							
								
								
									
										1
									
								
								assets/stop.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								assets/stop.svg
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="M320-320h320v-320H320v320ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg>
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 436 B  | 
| 
						 | 
					@ -1,11 +1,12 @@
 | 
				
			||||||
use egui::{Stroke, Vec2};
 | 
					use egui::{Sense, Stroke, Vec2};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use super::{CompGetter, CompUi};
 | 
					use super::{CompGetter, CompUi};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[derive(Debug, Default)]
 | 
					#[derive(Debug, Default)]
 | 
				
			||||||
pub struct Player {
 | 
					pub struct Player {
 | 
				
			||||||
    slider_progress: usize
 | 
					    slider_progress: usize,
 | 
				
			||||||
 | 
					    is_playing: bool,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
component_register!(Player);
 | 
					component_register!(Player);
 | 
				
			||||||
| 
						 | 
					@ -29,23 +30,37 @@ impl CompUi for Player {
 | 
				
			||||||
                    };
 | 
					                    };
 | 
				
			||||||
                    ui.style_mut().visuals.widgets.inactive.fg_stroke = s;
 | 
					                    ui.style_mut().visuals.widgets.inactive.fg_stroke = s;
 | 
				
			||||||
                    ui.style_mut().visuals.widgets.active.fg_stroke = s;
 | 
					                    ui.style_mut().visuals.widgets.active.fg_stroke = s;
 | 
				
			||||||
 | 
					                    ui.style_mut().visuals.widgets.hovered.fg_stroke = s;
 | 
				
			||||||
                    ui.add(slider);
 | 
					                    ui.add(slider);
 | 
				
			||||||
                    ui.label("00:00");
 | 
					                    ui.label("00:00");
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            ui.horizontal(|ui| {
 | 
					            ui.horizontal(|ui| {
 | 
				
			||||||
                ui.add_space((avail.x / 2.0) - 16.0 - 8.0 - ui.spacing().item_spacing.x);
 | 
					                ui.add_space((avail.x / 2.0) - 16.0 - 8.0 - ui.spacing().item_spacing.x);
 | 
				
			||||||
 | 
					                let pp = if handle_error_ui!(Player::get()).is_playing {
 | 
				
			||||||
 | 
					                    crate::data::PAUSE_ICON
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    crate::data::PLAY_ICON
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                let prev = egui::Image::new(crate::data::PREV_ICON)
 | 
					                let prev = egui::Image::new(crate::data::PREV_ICON)
 | 
				
			||||||
                    .tint(crate::data::C_ACCENT)
 | 
					                    .tint(crate::data::C_ACCENT)
 | 
				
			||||||
 | 
					                    .sense(Sense::click())
 | 
				
			||||||
                    .max_size(Vec2::new(16.0, 16.0));
 | 
					                    .max_size(Vec2::new(16.0, 16.0));
 | 
				
			||||||
                let play = egui::Image::new(crate::data::PLAY_ICON)
 | 
					                let pp = egui::Image::new(pp)
 | 
				
			||||||
                    .tint(crate::data::C_ACCENT)
 | 
					                    .tint(crate::data::C_ACCENT)
 | 
				
			||||||
 | 
					                    .sense(Sense::click())
 | 
				
			||||||
                    .max_size(Vec2::new(16.0, 16.0));
 | 
					                    .max_size(Vec2::new(16.0, 16.0));
 | 
				
			||||||
                let next = egui::Image::new(crate::data::NEXT_ICON)
 | 
					                let next = egui::Image::new(crate::data::NEXT_ICON)
 | 
				
			||||||
                    .tint(crate::data::C_ACCENT)
 | 
					                    .tint(crate::data::C_ACCENT)
 | 
				
			||||||
 | 
					                    .sense(Sense::click())
 | 
				
			||||||
                    .max_size(Vec2::new(16.0, 16.0));
 | 
					                    .max_size(Vec2::new(16.0, 16.0));
 | 
				
			||||||
                if ui.add(prev).clicked() {}
 | 
					                if ui.add(prev).clicked() {}
 | 
				
			||||||
                if ui.add(play).clicked() {}
 | 
					                if ui.add(pp).clicked() {
 | 
				
			||||||
 | 
					                    let mut slf = handle_error_ui!(Player::get());
 | 
				
			||||||
 | 
					                    slf.is_playing = !slf.is_playing;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
                if ui.add(next).clicked() {}
 | 
					                if ui.add(next).clicked() {}
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            ui.add_space(3.0);
 | 
					            ui.add_space(3.0);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
use egui::{Color32, Vec2};
 | 
					use egui::{Color32, RichText, Vec2};
 | 
				
			||||||
use xmpd_manifest::store::BaseStore;
 | 
					use xmpd_manifest::store::BaseStore;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use super::CompUi;
 | 
					use super::CompUi;
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@ impl CompUi for SongList {
 | 
				
			||||||
    fn draw(ui: &mut egui::Ui, state: &mut crate::GuiState) -> crate::Result<()> {
 | 
					    fn draw(ui: &mut egui::Ui, state: &mut crate::GuiState) -> crate::Result<()> {
 | 
				
			||||||
        egui::ScrollArea::vertical().id_source("song_list").show(ui, |ui| {
 | 
					        egui::ScrollArea::vertical().id_source("song_list").show(ui, |ui| {
 | 
				
			||||||
            ui.vertical(|ui| {
 | 
					            ui.vertical(|ui| {
 | 
				
			||||||
 | 
					                ui.add_space(3.0);
 | 
				
			||||||
                let songs = state.manifest.store().get_songs();
 | 
					                let songs = state.manifest.store().get_songs();
 | 
				
			||||||
                for (sid, song) in songs.iter() {
 | 
					                for (sid, song) in songs.iter() {
 | 
				
			||||||
                    ui.horizontal(|ui| {
 | 
					                    ui.horizontal(|ui| {
 | 
				
			||||||
| 
						 | 
					@ -21,9 +22,14 @@ impl CompUi for SongList {
 | 
				
			||||||
                                .tint(crate::data::C_ACCENT)
 | 
					                                .tint(crate::data::C_ACCENT)
 | 
				
			||||||
                                .fit_to_exact_size(Vec2::new(32.0, 32.0))
 | 
					                                .fit_to_exact_size(Vec2::new(32.0, 32.0))
 | 
				
			||||||
                        );
 | 
					                        );
 | 
				
			||||||
                        ui.label(song.author());
 | 
					                        ui.vertical(|ui| {
 | 
				
			||||||
                        ui.strong(" - ");
 | 
					 | 
				
			||||||
                            ui.label(song.name());
 | 
					                            ui.label(song.name());
 | 
				
			||||||
 | 
					                            ui.monospace(
 | 
				
			||||||
 | 
					                                RichText::new(song.author())
 | 
				
			||||||
 | 
					                                    .color(crate::data::C_TEXT_DIM)
 | 
				
			||||||
 | 
					                                    .size(10.0)
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
                    });
 | 
					                    });
 | 
				
			||||||
                    ui.separator();
 | 
					                    ui.separator();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,5 +14,5 @@ pub const C_ACCENT: egui::Color32 = egui::Color32::from_rgb(5, 102, 146); // #05
 | 
				
			||||||
pub const C_PRIM_BG: egui::Color32 = egui::Color32::from_rgb(31, 34, 40); // #1F2228
 | 
					pub const C_PRIM_BG: egui::Color32 = egui::Color32::from_rgb(31, 34, 40); // #1F2228
 | 
				
			||||||
pub const C_SEC_BG: egui::Color32 = egui::Color32::from_rgb(47, 53, 61);  // #2f353d
 | 
					pub const C_SEC_BG: egui::Color32 = egui::Color32::from_rgb(47, 53, 61);  // #2f353d
 | 
				
			||||||
pub const C_TEXT: egui::Color32 = egui::Color32::from_rgb(223, 223, 223);  //  #dfdfdf
 | 
					pub const C_TEXT: egui::Color32 = egui::Color32::from_rgb(223, 223, 223);  //  #dfdfdf
 | 
				
			||||||
 | 
					pub const C_TEXT_DIM: egui::Color32 = egui::Color32::from_rgb(175, 175, 175 );  //  #afafaf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,16 +13,19 @@ pub fn draw(ui: &mut egui::Ui, state: &mut GuiState) -> crate::Result<()> {
 | 
				
			||||||
        handle_error_ui!(crate::components::top_nav::TopNav::draw(ui, state));
 | 
					        handle_error_ui!(crate::components::top_nav::TopNav::draw(ui, state));
 | 
				
			||||||
        crate::utils::super_separator(ui, crate::data::C_ACCENT, avail.x, 2.0);
 | 
					        crate::utils::super_separator(ui, crate::data::C_ACCENT, avail.x, 2.0);
 | 
				
			||||||
        let avail = ui.available_size();
 | 
					        let avail = ui.available_size();
 | 
				
			||||||
 | 
					        let main_height = avail.y * 0.91;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ui.horizontal(|ui| {
 | 
					        ui.horizontal(|ui| {
 | 
				
			||||||
            ui.set_height(avail.y);  
 | 
					            ui.set_height(main_height);  
 | 
				
			||||||
            ui.group(|ui| {
 | 
					            ui.group(|ui| {
 | 
				
			||||||
                ui.set_height(avail.y);
 | 
					                ui.set_height(main_height);
 | 
				
			||||||
                ui.set_width(avail.x * 0.25);
 | 
					                ui.set_width(avail.x * 0.25);
 | 
				
			||||||
                handle_error_ui!(crate::components::left_nav::LeftNav::draw(ui, state));
 | 
					                handle_error_ui!(crate::components::left_nav::LeftNav::draw(ui, state));
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					            ui.group(|ui| {
 | 
				
			||||||
                handle_error_ui!(crate::components::song_list::SongList::draw(ui, state));
 | 
					                handle_error_ui!(crate::components::song_list::SongList::draw(ui, state));
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
        egui::TopBottomPanel::new(egui::panel::TopBottomSide::Bottom, "player")
 | 
					        egui::TopBottomPanel::new(egui::panel::TopBottomSide::Bottom, "player")
 | 
				
			||||||
            .frame(
 | 
					            .frame(
 | 
				
			||||||
                egui::Frame::none()
 | 
					                egui::Frame::none()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user