30 lines
735 B
Rust
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,
|
|
}
|
|
}
|
|
}
|