use crate::{CellStyle, CellText, Column, Palette};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum SortOrder {
Ascending,
Descending,
}
impl SortOrder {
#[must_use]
pub fn flipped(self) -> Self {
match self {
Self::Ascending => Self::Descending,
Self::Descending => Self::Ascending,
}
}
}
pub trait GridModel {
fn columns(&self) -> &[Column];
fn rows(&self) -> usize;
fn cell(&self, row: usize, column: usize, text: &mut CellText, palette: &Palette) -> CellStyle;
fn prepare(&mut self) {}
fn sort(&mut self, column: usize, order: SortOrder) -> bool {
let _ = (column, order);
false
}
fn sort_state(&self) -> Option<(usize, SortOrder)> {
None
}
fn row_key(&self, row: usize) -> Option<u64> {
let _ = row;
None
}
fn row_of_key(&self, key: u64) -> Option<usize> {
let _ = key;
None
}
fn columns_revision(&self) -> u64 {
0
}
fn generation(&self) -> u64 {
0
}
}