use crate::Error;
use crate::dispids::search_directory;
use rs_teststand_sys::{Dispatch, Value};
#[derive(Debug)]
pub struct SearchDirectory {
dispatch: Box<dyn Dispatch>,
}
impl SearchDirectory {
pub(crate) fn new(dispatch: Box<dyn Dispatch>) -> Self {
Self { dispatch }
}
pub fn path(&self) -> Result<String, Error> {
Ok(self.dispatch.get(search_directory::PATH)?.into_string()?)
}
pub fn dir_type(&self) -> Result<i32, Error> {
Ok(self.dispatch.get(search_directory::TYPE)?.as_i32()?)
}
pub fn disabled(&self) -> Result<bool, Error> {
Ok(self.dispatch.get(search_directory::DISABLED)?.as_bool()?)
}
pub fn set_disabled(&self, value: bool) -> Result<(), Error> {
self.dispatch
.put(search_directory::DISABLED, Value::Bool(value))?;
Ok(())
}
pub fn search_subdirectories(&self) -> Result<bool, Error> {
Ok(self
.dispatch
.get(search_directory::SEARCH_SUBDIRECTORIES)?
.as_bool()?)
}
pub fn exclude_hidden_subdirectories(&self) -> Result<bool, Error> {
Ok(self
.dispatch
.get(search_directory::EXCLUDE_HIDDEN_SUBDIRECTORIES)?
.as_bool()?)
}
pub fn file_extension_restrictions(&self) -> Result<String, Error> {
Ok(self
.dispatch
.get(search_directory::FILE_EXTENSION_RESTRICTIONS)?
.into_string()?)
}
pub fn exclude_file_extension(&self) -> Result<bool, Error> {
Ok(self
.dispatch
.get(search_directory::EXCLUDE_FILE_EXTENSION)?
.as_bool()?)
}
pub fn set_path(&self, value: &str) -> Result<(), Error> {
self.dispatch
.put(search_directory::PATH, Value::Str(value.to_owned()))?;
Ok(())
}
pub fn set_search_subdirectories(&self, value: bool) -> Result<(), Error> {
self.dispatch
.put(search_directory::SEARCH_SUBDIRECTORIES, Value::Bool(value))?;
Ok(())
}
pub fn set_exclude_hidden_subdirectories(&self, value: bool) -> Result<(), Error> {
self.dispatch.put(
search_directory::EXCLUDE_HIDDEN_SUBDIRECTORIES,
Value::Bool(value),
)?;
Ok(())
}
pub fn set_file_extension_restrictions(&self, value: &str) -> Result<(), Error> {
self.dispatch.put(
search_directory::FILE_EXTENSION_RESTRICTIONS,
Value::Str(value.to_owned()),
)?;
Ok(())
}
pub fn set_exclude_file_extension(&self, value: bool) -> Result<(), Error> {
self.dispatch
.put(search_directory::EXCLUDE_FILE_EXTENSION, Value::Bool(value))?;
Ok(())
}
}