diff --git a/src/app/mod.rs b/src/app/mod.rs index 3603096..d2de2b1 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -482,68 +482,78 @@ fn view(state: &AppState) -> Element<'_, AppMessage> { .on_input(move |val| AppMessage::CustomSoundPathChanged(sound, val)) .style(t_style) .padding(8) - ].spacing(4).width(iced::Length::Fixed(320.0)) + ].spacing(4).width(iced::Length::Fill) }; let settings_content = scrollable( column![ text("Settings").size(24).color(color_blue), - vertical_space(20.0), + vertical_space(10.0), text("Device Settings").size(14).color(color_subtext), - vertical_space(10.0), - column![ - text("Input Device").size(12).color(Color::from_rgb8(180, 180, 180)), - pick_list( - &state.input_devices[..], - state.selected_input.as_ref(), - AppMessage::InputDeviceSelected, - ).width(iced::Length::Fixed(320.0)), - ].spacing(4).width(iced::Length::Fixed(320.0)), - vertical_space(10.0), - column![ - text("Output Device").size(12).color(Color::from_rgb8(180, 180, 180)), - pick_list( - &state.output_devices[..], - state.selected_output.as_ref(), - AppMessage::OutputDeviceSelected, - ).width(iced::Length::Fixed(320.0)), - ].spacing(4).width(iced::Length::Fixed(320.0)), - vertical_space(20.0), - column![ - text(format!("Mic Sensitivity (Noise Gate): {:.1}%", state.config.noise_gate_threshold * 100.0)).size(14).color(color_subtext), - slider(0.0..=0.1, state.config.noise_gate_threshold, AppMessage::NoiseGateChanged).step(0.001) - ].spacing(10).width(iced::Length::Fixed(320.0)), - vertical_space(20.0), - column![ - text("Network Privacy").size(14).color(color_subtext), - pick_list( - &NetworkMode::ALL[..], - Some(state.config.network_mode), - AppMessage::NetworkModeSelected, - ).width(iced::Length::Fixed(320.0)), - text(network_mode_hint(state.config.network_mode)).size(11).color(color_subtext), - text("Takes effect on your next room join.").size(11).color(color_surface), - ].spacing(6).width(iced::Length::Fixed(320.0)), - vertical_space(20.0), + vertical_space(6.0), + row![ + column![ + text("Input Device").size(12).color(Color::from_rgb8(180, 180, 180)), + pick_list( + &state.input_devices[..], + state.selected_input.as_ref(), + AppMessage::InputDeviceSelected, + ).width(iced::Length::Fill), + ].spacing(4).width(iced::Length::Fill), + column![ + text("Output Device").size(12).color(Color::from_rgb8(180, 180, 180)), + pick_list( + &state.output_devices[..], + state.selected_output.as_ref(), + AppMessage::OutputDeviceSelected, + ).width(iced::Length::Fill), + ].spacing(4).width(iced::Length::Fill), + ].spacing(20).width(iced::Length::Fill), + vertical_space(12.0), + row![ + column![ + text(format!("Mic Sensitivity (Noise Gate): {:.1}%", state.config.noise_gate_threshold * 100.0)).size(14).color(color_subtext), + slider(0.0..=0.1, state.config.noise_gate_threshold, AppMessage::NoiseGateChanged).step(0.001) + ].spacing(8).width(iced::Length::Fill), + column![ + text("Network Privacy").size(14).color(color_subtext), + pick_list( + &NetworkMode::ALL[..], + Some(state.config.network_mode), + AppMessage::NetworkModeSelected, + ).width(iced::Length::Fill), + text(network_mode_hint(state.config.network_mode)).size(11).color(color_subtext), + text("Takes effect on your next room join.").size(11).color(color_surface), + ].spacing(4).width(iced::Length::Fill), + ].spacing(20).align_y(iced::alignment::Vertical::Top).width(iced::Length::Fill), + vertical_space(12.0), column![ text("Notification Chimes").size(14).color(color_subtext), checkbox(state.config.notifications_enabled) .label("Enable sound notifications") .on_toggle(AppMessage::ToggleNotifications), - ].spacing(10).width(iced::Length::Fixed(320.0)), - vertical_space(20.0), + ].spacing(8).width(iced::Length::Fill), + vertical_space(12.0), text("Custom Chime Files (WAV Paths)").size(14).color(color_subtext), - path_field("Self Join", Sound::SelfJoin), - path_field("Self Leave", Sound::SelfLeave), - path_field("Peer Join", Sound::PeerJoin), - path_field("Peer Leave", Sound::PeerLeave), - path_field("Reconnect Attempt", Sound::ReconnectAttempt), - path_field("Reconnected", Sound::Reconnected), - path_field("Mic Toggle", Sound::MicToggle), - path_field("Reconnect Failed", Sound::ReconnectFailed), + row![ + path_field("Self Join", Sound::SelfJoin), + path_field("Peer Join", Sound::PeerJoin), + ].spacing(20).width(iced::Length::Fill), + row![ + path_field("Self Leave", Sound::SelfLeave), + path_field("Peer Leave", Sound::PeerLeave), + ].spacing(20).width(iced::Length::Fill), + row![ + path_field("Reconnect Attempt", Sound::ReconnectAttempt), + path_field("Reconnected", Sound::Reconnected), + ].spacing(20).width(iced::Length::Fill), + row![ + path_field("Mic Toggle", Sound::MicToggle), + path_field("Reconnect Failed", Sound::ReconnectFailed), + ].spacing(20).width(iced::Length::Fill), - vertical_space(30.0), + vertical_space(14.0), button( text("Back") .size(16) @@ -556,21 +566,20 @@ fn view(state: &AppState) -> Element<'_, AppMessage> { ] .align_x(iced::alignment::Horizontal::Center) .spacing(10) + .width(iced::Length::Fill) ); let settings_box = container(settings_content) .style(c_style(color_mantle, color_surface, 12.0)) - .padding(30) - .width(460) - .height(500); + .padding(24) + .width(iced::Length::Fill) + .height(iced::Length::Fill); - let content = column![settings_box].align_x(iced::alignment::Horizontal::Center); - - return container(content) + return container(settings_box) .width(iced::Length::Fill) .height(iced::Length::Fill) + .padding(24) .center_x(iced::Length::Fill) - .center_y(iced::Length::Fill) .style(c_style(color_crust, Color::TRANSPARENT, 0.0)) .into(); }