fix media preview config loading

This commit is contained in:
rabite 2020-01-26 15:39:02 +01:00
parent abc35e0e7d
commit 64391dd98c
3 changed files with 34 additions and 19 deletions

View File

@ -159,19 +159,8 @@ impl Config {
Ok(("media_mute", "on")) => config.media_mute = true,
Ok(("media_mute", "off")) => config.media_mute = false,
Ok(("media_previewer", cmd)) => {
use crate::minibuffer::find_bins;
let cmd = cmd.to_string();
config.media_previewer = cmd;
let previewer = std::path::Path::new(&config.media_previewer);
let exists = match previewer.is_absolute() {
true => previewer.exists(),
false => find_bins(&config.media_previewer).is_ok()
};
config.media_previewer_exists = exists;
},
Ok(("ratios", ratios)) => {
let ratios_str = ratios.to_string();
@ -200,6 +189,12 @@ impl Config {
"auto")) => config.graphics = detect_g_mode(),
_ => { HError::config_error::<Config>(line.to_string()).log(); }
}
#[cfg(feature = "img")]
match has_media_previewer(&config.media_previewer) {
t @ _ => config.media_previewer_exists = t
}
config
});
@ -245,3 +240,12 @@ fn detect_g_mode() -> String {
_ => "unicode"
}.to_string()
}
fn has_media_previewer(name: &str) -> bool {
use crate::minibuffer::find_bins;
let previewer = std::path::Path::new(name);
match previewer.is_absolute() {
true => previewer.exists(),
false => find_bins(name).is_ok()
}
}

View File

@ -212,7 +212,6 @@ impl Tabbable for TabView<FileBrowser> {
.map(|mut w| {
w.content.show_hidden = show_hidden;
w.content.dirty_meta.set_dirty();
w.content.sort();
w.refresh().log();
}).ok();
Ok(())

View File

@ -11,7 +11,6 @@ use crate::textview::TextView;
use crate::widget::{Widget, WidgetCore};
use crate::coordinates::Coordinates;
use crate::fail::{HResult, HError, ErrorLog};
use crate::dirty::Dirtyable;
use crate::imgview::ImgView;
use crate::mediaview::MediaView;
@ -354,7 +353,6 @@ impl Previewer {
let core = self.core.clone();
let cache = self.cache.clone();
let animator = self.animator.clone();
let has_media = self.core.config().media_available();
if same_dir {
self.animator.set_fresh().ok();
@ -386,6 +384,7 @@ impl Previewer {
if let Some(mime) = file.get_mime() {
let mime_type = mime.type_().as_str();
let is_gif = mime.subtype() == "gif";
let has_media = core.config().media_available();
match mime_type {
_ if mime_type == "video" || is_gif && has_media => {
@ -436,7 +435,6 @@ impl Previewer {
pub fn reload(&mut self) {
if let Some(file) = self.file.take() {
self.file = None;
self.set_file(&file).log();
}
}
@ -583,11 +581,25 @@ impl Widget for Previewer {
}
fn config_loaded(&mut self) -> HResult<()> {
let show_hidden = self.core.config().show_hidden();
if let PreviewWidget::FileList(filelist) = self.widget.widget_mut()? {
filelist.content.show_hidden = show_hidden;
filelist.content.dirty_meta.set_dirty();
use PreviewWidget::*;
let show_hidden = self.core
.config()
.show_hidden();
match self.widget.widget_mut() {
Ok(FileList(filelist)) => {
let setting = filelist.content.show_hidden;
if setting != show_hidden {
self.reload();
}
}
Ok(_) => {},
Err(_) => self.reload(),
}
Ok(())
}