use std::path::PathBuf;
use unicode_width::UnicodeWidthChar;
use unicode_width::UnicodeWidthStr;
use zellij_tile::prelude::*;
use crate::ui::{PaneUiInfo, SessionUiInfo, TabUiInfo};
use crate::{ActiveScreen, NewSessionInfo};
#[derive(Debug)]
pub struct ListItem {
pub name: String,
pub session_name: Option<Vec<UiSpan>>,
pub tab_name: Option<Vec<UiSpan>>,
pub pane_name: Option<Vec<UiSpan>>,
colors: Colors,
}
impl ListItem {
pub fn from_session_info(session_ui_info: &SessionUiInfo, colors: Colors) -> Self {
let session_ui_line = build_session_ui_line(session_ui_info, colors);
ListItem {
name: session_ui_info.name.clone(),
session_name: Some(session_ui_line),
tab_name: None,
pane_name: None,
colors,
}
}
pub fn from_tab_info(
session_ui_info: &SessionUiInfo,
tab_ui_info: &TabUiInfo,
colors: Colors,
) -> Self {
let session_ui_line = build_session_ui_line(session_ui_info, colors);
let tab_ui_line = build_tab_ui_line(tab_ui_info, colors);
ListItem {
name: tab_ui_info.name.clone(),
session_name: Some(session_ui_line),
tab_name: Some(tab_ui_line),
pane_name: None,
colors,
}
}
pub fn from_pane_info(
session_ui_info: &SessionUiInfo,
tab_ui_info: &TabUiInfo,
pane_ui_info: &PaneUiInfo,
colors: Colors,
) -> Self {
let session_ui_line = build_session_ui_line(session_ui_info, colors);
let tab_ui_line = build_tab_ui_line(tab_ui_info, colors);
let pane_ui_line = build_pane_ui_line(pane_ui_info, colors);
ListItem {