use std::collections::HashMap;
use crate::app::{GroupMenuState, PinPending, PollVotePending};
use crate::keybindings::{KeyAction, KeyCombo};
use crate::settings_profile::SettingsProfile;
use crate::signal::types::{IdentityInfo, PollData};
use crate::theme::Theme;
#[derive(Default)]
pub struct ActionMenuState {
pub index: usize,
}
#[derive(Default)]
pub struct SettingsOverlayState {
pub index: usize,
pub customize_index: usize,
pub mouse_snapshot: bool,
}
#[derive(Default)]
pub struct ContactsOverlayState {
pub index: usize,
pub filter: String,
pub filtered: Vec<(String, String)>,
}
#[derive(Default)]
pub struct ForwardOverlayState {
pub index: usize,
pub filter: String,
pub filtered: Vec<(String, String)>,
pub body: String,
}
#[derive(Default)]
pub struct PinDurationOverlayState {
pub index: usize,
pub pending: Option<PinPending>,
}
#[derive(Default)]
pub struct ThemePickerState {
pub index: usize,
pub available_themes: Vec<Theme>,
}
#[derive(Default)]
pub struct VerifyOverlayState {
pub index: usize,
pub identities: Vec<IdentityInfo>,
pub confirming: bool,
}
#[derive(Default)]
pub struct ProfileOverlayState {
pub index: usize,
pub editing: bool,
pub fields: [String; 4],
pub edit_buffer: String,
}
#[derive(Default)]
pub struct GroupMenuOverlayState {
pub state: Option<GroupMenuState>,
pub index: usize,
pub filter: String,
pub filtered: Vec<(String, String)>,
pub input: String,
}
#[derive(Default)]
pub struct KeybindingsOverlayState {
pub index: usize,
pub capturing: bool,
pub conflict: Option<(KeyAction, KeyCombo)>,
pub profile_picker: bool,
pub profile_index: usize,
pub available_profiles: Vec<String>,
}
#[derive(Default)]
pub struct PollVoteOverlayState {
pub index: usize,
pub selections: Vec<bool>,
pub pending: Option<PollVotePending>,
pub pending_polls: HashMap<(String, i64), PollData>,
}
pub struct SettingsProfileOverlayState {
pub name: String,
pub index: usize,
pub available: Vec<SettingsProfile>,
pub save_as: bool,
pub save_as_input: String,
}
impl Default for SettingsProfileOverlayState {
fn default() -> Self {
Self {
name: "Default".to_string(),
index: 0,
available: Vec::new(),
save_as: false,
save_as_input: String::new(),
}
}
}