1use anyhow;
2use schemars::JsonSchema;
3use serde_derive::{Deserialize, Serialize};
4use settings::Setting;
5
6#[derive(Clone, Debug, Serialize, Deserialize, JsonSchema)]
7#[serde(rename_all = "snake_case")]
8pub enum ChannelsPanelDockPosition {
9 Left,
10 Right,
11}
12
13#[derive(Deserialize, Debug)]
14pub struct ChannelsPanelSettings {
15 pub dock: ChannelsPanelDockPosition,
16 pub default_width: f32,
17}
18
19#[derive(Clone, Default, Serialize, Deserialize, JsonSchema, Debug)]
20pub struct ChannelsPanelSettingsContent {
21 pub dock: Option<ChannelsPanelDockPosition>,
22 pub default_width: Option<f32>,
23}
24
25impl Setting for ChannelsPanelSettings {
26 const KEY: Option<&'static str> = Some("channels_panel");
27
28 type FileContent = ChannelsPanelSettingsContent;
29
30 fn load(
31 default_value: &Self::FileContent,
32 user_values: &[&Self::FileContent],
33 _: &gpui::AppContext,
34 ) -> anyhow::Result<Self> {
35 Self::load_via_json_merge(default_value, user_values)
36 }
37}