logviewer/src/tui/log_viewer/view.rs

30 lines
735 B
Rust

use dumpster::sync::Gc;
use crate::tui::{log_viewer::filters::Filters, model::LogEntry, processing::Cursor};
pub struct LogView {
pub cursor: Cursor,
pub selection_offset: usize,
}
impl LogView {
pub fn selected(&self, filters: &Filters) -> Option<(Gc<LogEntry>, usize)> {
let mut temp_iter = self.cursor.clone();
for _ in 0..(self.selection_offset + 1) {
if !temp_iter.next(filters) {
return None;
}
}
Some((temp_iter.curr(), self.cursor.inline_depth()))
}
}
impl Clone for LogView {
fn clone(&self) -> Self {
Self {
cursor: self.cursor.clone(),
selection_offset: self.selection_offset,
}
}
}