summaryrefslogtreecommitdiffstats
path: root/src/foldview.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-03-20 13:58:59 +0100
committerrabite <rabite@posteo.de>2019-03-20 13:58:59 +0100
commit9a711bbe96d753d0dbf70007adc0ff89823aa9ad (patch)
treef8c0fc8cf12967a5c1a5409b37f6800a050a5c27 /src/foldview.rs
parentc2297ab4945d010d4106d35a34ec83314891c34f (diff)
handle long lines in status/footer
Diffstat (limited to 'src/foldview.rs')
-rw-r--r--src/foldview.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/foldview.rs b/src/foldview.rs
index 74c8f9e..d45eff6 100644
--- a/src/foldview.rs
+++ b/src/foldview.rs
@@ -44,15 +44,21 @@ impl Foldable for LogEntry {
impl From<&HError> for LogEntry {
fn from(from: &HError) -> LogEntry {
let time: DateTime<Local> = Local::now();
+
+ let logcolor = match from {
+ HError::Log(_) => term::normal_color(),
+ _ => term::color_red()
+ };
+
let description = format!("{}{}{}: {}",
term::color_green(),
time.format("%F %R"),
- term::color_red(),
+ logcolor,
from).lines().take(1).collect();
let mut content = format!("{}{}{}: {}\n",
term::color_green(),
time.format("%F %R"),
- term::color_red(),
+ logcolor,
from);
@@ -93,7 +99,7 @@ impl FoldableWidgetExt for ListView<Vec<LogEntry>> {
fn render_header(&self) -> HResult<String> {
let (xsize, _) = self.core.coordinates.size_u();
- let current = self.current_fold().unwrap_or(0);
+ let current = self.current_fold().map(|n| n+1).unwrap_or(0);
let num = self.content.len();
let hint = format!("{} / {}", current, num);
let hint_xpos = xsize - hint.len();
@@ -118,12 +124,17 @@ impl FoldableWidgetExt for ListView<Vec<LogEntry>> {
let hint_xpos = xsize - line_hint.len();
let hint_ypos = ysize + ypos + 1;
- let footer = format!("LogEntry: {}{}{}{}{}",
- description,
+ let sized_description = term::sized_string_u(&description,
+ xsize
+ - (line_hint.len()+2));
+
+ let footer = format!("{}{}{}{}{}",
+ sized_description,
term::reset(),
term::status_bg(),
term::goto_xy_u(hint_xpos, hint_ypos),
line_hint);
+
Ok(footer)
} else { Ok("No log entries".to_string()) }
}