mirror of https://github.com/bobwen-dev/hunter
fix media preview config loading
This commit is contained in:
parent
abc35e0e7d
commit
64391dd98c
|
@ -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()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(())
|
||||
|
|
|
@ -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(())
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue