feat: screen-reader-friendly linear view (L key)
Plain-text appointment list with numbered indicators, no box-drawing characters, and explicit labels. Reuses agenda data and navigation. Binds to uppercase L to preserve vim-style hjkl grid navigation.
This commit is contained in:
@@ -87,6 +87,7 @@ struct ScreenState {
|
||||
bool show_calendar_picker{false};
|
||||
std::size_t calendar_index{0};
|
||||
bool show_agenda{false};
|
||||
bool show_linear_view{false};
|
||||
std::chrono::year_month_day agenda_start_day{
|
||||
std::chrono::year{1970}, std::chrono::month{1}, std::chrono::day{1}};
|
||||
std::vector<AgendaItem> agenda_items;
|
||||
@@ -138,6 +139,7 @@ enum class Action {
|
||||
search,
|
||||
agenda,
|
||||
calendars,
|
||||
linear_view,
|
||||
sync,
|
||||
quit,
|
||||
};
|
||||
|
||||
@@ -121,9 +121,12 @@ private:
|
||||
void toggle_selected_calendar();
|
||||
void begin_agenda();
|
||||
void close_agenda();
|
||||
void begin_linear_view();
|
||||
void close_linear_view();
|
||||
void refresh_agenda();
|
||||
void shift_agenda(int direction);
|
||||
void choose_agenda_item();
|
||||
void choose_linear_item();
|
||||
[[nodiscard]] HistorySnapshot capture_history_snapshot() const;
|
||||
void restore_history_snapshot(HistorySnapshot snapshot);
|
||||
void push_history(std::vector<HistoryEntry>& history, HistoryEntry entry);
|
||||
|
||||
Reference in New Issue
Block a user