#![allow(dead_code)]
#![cfg(feature = "std")]
use crate::{
common::common::QRC_SYSTEM_MAX_PATH,
tools::{
intutils::qrc_intutils_clear_string,
stringutils::{qrc_stringutils_clear_string, qrc_stringutils_string_size},
},
};
use directories::{BaseDirs, UserDirs};
use std::fs::{create_dir, metadata};
#[derive(PartialEq)]
pub enum QrcFolderutilsDirectories {
QrcFolderutilsDirectoriesUserAppData,
QrcFolderutilsDirectoriesUserDesktop,
QrcFolderutilsDirectoriesUserDocuments,
QrcFolderutilsDirectoriesUserDownloads,
QrcFolderutilsDirectoriesUserFavourites,
QrcFolderutilsDirectoriesUserMusic,
QrcFolderutilsDirectoriesUserPictures,
QrcFolderutilsDirectoriesUserPrograms,
QrcFolderutilsDirectoriesUserShortcuts,
QrcFolderutilsDirectoriesUserVideos,
}
pub fn qrc_folderutils_create_directory(path: &str) -> bool {
let _ = create_dir(path);
return qrc_folderutils_directory_exists(path);
}
pub fn qrc_folderutils_directory_exists(path: &str) -> bool {
if let Ok(metadata) = metadata(path) {
metadata.is_dir()
} else {
false }
}
pub fn qrc_folderutils_get_directory(directory: QrcFolderutilsDirectories, output: &mut String) {
qrc_intutils_clear_string(output);
let base_dirs = BaseDirs::new().expect("Could not determine base directories");
let user_dirs = UserDirs::new().expect("Could not determine user directories");
let id;
if directory == QrcFolderutilsDirectories::QrcFolderutilsDirectoriesUserAppData {
id = base_dirs.data_local_dir().to_path_buf();
} else if directory == QrcFolderutilsDirectories::QrcFolderutilsDirectoriesUserDesktop {
id = user_dirs.desktop_dir().unwrap().to_path_buf();
} else if directory == QrcFolderutilsDirectories::QrcFolderutilsDirectoriesUserDocuments {
id = user_dirs.document_dir().unwrap().to_path_buf();
} else if directory == QrcFolderutilsDirectories::QrcFolderutilsDirectoriesUserDownloads {
id = user_dirs.download_dir().unwrap().to_path_buf();
} else if directory == QrcFolderutilsDirectories::QrcFolderutilsDirectoriesUserMusic {
id = user_dirs.audio_dir().unwrap().to_path_buf();
} else if directory == QrcFolderutilsDirectories::QrcFolderutilsDirectoriesUserPictures {
id = user_dirs.picture_dir().unwrap().to_path_buf();
} else if directory == QrcFolderutilsDirectories::QrcFolderutilsDirectoriesUserVideos {
id = user_dirs.video_dir().unwrap().to_path_buf();
} else {
id = user_dirs.document_dir().unwrap().to_path_buf();
}
let path: String = id.into_os_string().into_string().unwrap();
qrc_stringutils_clear_string(output);
output.push_str(&path[..QRC_SYSTEM_MAX_PATH.min(qrc_stringutils_string_size(&path))]);
}