Add preference section navigation
This commit is contained in:
@@ -8,7 +8,8 @@ use model_manager::{download_status_bar, format_bytes, format_duration};
|
||||
|
||||
use super::{
|
||||
ActiveDownload, App, DetailTab, MAX_SIDEBAR_WIDTH, MIN_SIDEBAR_WIDTH, Message, MetricsPoint,
|
||||
ModelDownload, ModelOperation, chat_scroll_id, composer_id, models_path, preferences_scroll_id,
|
||||
ModelDownload, ModelOperation, PreferenceSection, chat_scroll_id, composer_id, models_path,
|
||||
preferences_scroll_id,
|
||||
};
|
||||
use crate::database::{ProjectWithSessions, Session, SessionState};
|
||||
use crate::model::{
|
||||
@@ -53,7 +54,9 @@ const TRAFFIC_LIGHT_WIDTH: f32 = 78.0;
|
||||
|
||||
impl App {
|
||||
pub(crate) fn view(&self, id: window::Id) -> Element<'_, Message> {
|
||||
let content = if self.model_manager_window == Some(id) {
|
||||
let content = if self.preferences_window == Some(id) {
|
||||
self.preferences_panel()
|
||||
} else if self.model_manager_window == Some(id) {
|
||||
self.model_manager()
|
||||
} else if self.help_window == Some(id) {
|
||||
self.help_view()
|
||||
@@ -98,8 +101,7 @@ impl App {
|
||||
/// Whether a dialog covers the window. Focus moves through the whole widget
|
||||
/// tree, so the layers below have to stay out of the dialog's field order.
|
||||
pub(super) fn modal_open(&self) -> bool {
|
||||
self.preferences_open
|
||||
|| self.pending_project_path.is_some()
|
||||
self.pending_project_path.is_some()
|
||||
|| self.pending_session_delete.is_some()
|
||||
|| self.session_rename.is_some()
|
||||
|| self.menu_session().is_some()
|
||||
@@ -161,8 +163,6 @@ impl App {
|
||||
#[cfg(target_os = "macos")]
|
||||
if let Some((prompt, _)) = &self.pending_tool_approval {
|
||||
layers.push(self.tool_approval_panel(prompt));
|
||||
} else if self.preferences_open {
|
||||
layers.push(self.preferences_panel());
|
||||
} else if let Some(path) = &self.pending_project_path {
|
||||
layers.push(self.project_dialog(path));
|
||||
} else if let Some((_, title)) = &self.session_rename {
|
||||
@@ -177,9 +177,7 @@ impl App {
|
||||
layers.push(panel);
|
||||
}
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
if self.preferences_open {
|
||||
layers.push(self.preferences_panel());
|
||||
} else if let Some(path) = &self.pending_project_path {
|
||||
if let Some(path) = &self.pending_project_path {
|
||||
layers.push(self.project_dialog(path));
|
||||
} else if let Some((_, title)) = &self.session_rename {
|
||||
layers.push(self.rename_dialog(title));
|
||||
@@ -780,10 +778,12 @@ fn hint<'a>(title: impl Into<Element<'a, Message>>, description: &'a str) -> Too
|
||||
}
|
||||
|
||||
fn preference_group<'a>(
|
||||
section: PreferenceSection,
|
||||
title: &'a str,
|
||||
content: impl Into<Element<'a, Message>>,
|
||||
) -> Element<'a, Message> {
|
||||
container(column![text(title).size(11).color(muted_text()), content.into(),].spacing(10))
|
||||
.id(iced::widget::Id::new(section.anchor()))
|
||||
.width(Length::Fill)
|
||||
.padding(14)
|
||||
.style(preference_group_style)
|
||||
|
||||
Reference in New Issue
Block a user