bitbucket_cli/tui/views/
mod.rs

1pub mod dashboard;
2pub mod issues;
3pub mod prs;
4pub mod repos;
5
6/// Available views in the TUI
7#[derive(Debug, Clone, Copy, PartialEq, Eq)]
8pub enum View {
9    Dashboard,
10    Repositories,
11    PullRequests,
12    Issues,
13    Pipelines,
14}
15
16/// State for list-based views
17#[derive(Debug, Default)]
18pub struct ViewState {
19    /// Currently selected index
20    pub selected_index: usize,
21    /// Scroll offset
22    pub scroll_offset: usize,
23}
24
25impl ViewState {
26    /// Move selection up
27    pub fn previous(&mut self) {
28        if self.selected_index > 0 {
29            self.selected_index -= 1;
30        }
31    }
32
33    /// Move selection down
34    pub fn next(&mut self, max: usize) {
35        if max > 0 && self.selected_index < max - 1 {
36            self.selected_index += 1;
37        }
38    }
39
40    /// Reset selection
41    pub fn reset(&mut self) {
42        self.selected_index = 0;
43        self.scroll_offset = 0;
44    }
45}