From 53316e4bada29f1392df2528d8616afde17f570b Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 31 Oct 2022 22:54:59 +0100 Subject: Add ctrl+shift+s to download files without a dialog --- src/Config.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src/Config.cpp') diff --git a/src/Config.cpp b/src/Config.cpp index 540286f..3f2d68c 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -256,6 +256,45 @@ namespace QuickMedia { if(!has_known_peertube_homeservers_config) peertube_known_instances_fallback(); + const std::string home_dir = get_home_dir().data; + + struct DownloadPaths { + const char *json_field; + std::string fallback_dir; + const char *xdg_var_name; + std::string *config_var; + }; + + const int num_download_paths = 4; + DownloadPaths download_paths_list[num_download_paths] = { + { "video_directory", home_dir + "/Videos", "XDG_VIDEOS_DIR", &config->download.video_directory }, + { "image_directory", home_dir + "/Pictures", "XDG_PICTURES_DIR", &config->download.image_directory }, + { "music_directory", home_dir + "/Music", "XDG_MUSIC_DIR", &config->download.music_directory }, + { "file_directory", home_dir + "/Downloads", "XDG_DOWNLOAD_DIR", &config->download.file_directory }, + }; + + const Json::Value &download_json = json_root["download"]; + if(download_json.isObject()) { + for(const DownloadPaths &download_paths : download_paths_list) { + const Json::Value &directory_json = download_json[download_paths.json_field]; + if(!directory_json.isString()) { + fprintf(stderr, "Warning: config variable config.download.%s is not a string, using path \"%s\" instead\n", download_paths.json_field, download_paths.fallback_dir.c_str()); + continue; + } + *download_paths.config_var = path_expanduser(directory_json.asString()); + } + } + + for(const DownloadPaths &download_paths : download_paths_list) { + if(download_paths.config_var->empty()) { + std::string dir = download_paths.fallback_dir; + const char *xdg_var = getenv(download_paths.xdg_var_name); + if(xdg_var) + dir = xdg_var; + *download_paths.config_var = std::move(dir); + } + } + get_json_value(json_root, "use_system_fonts", config->use_system_fonts); get_json_value(json_root, "use_system_mpv_config", config->use_system_mpv_config); get_json_value(json_root, "enable_shaders", config->enable_shaders); -- cgit v1.2.3