summaryrefslogtreecommitdiffstats
path: root/src/config/general/tab_crude.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/general/tab_crude.rs')
-rw-r--r--src/config/general/tab_crude.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/config/general/tab_crude.rs b/src/config/general/tab_crude.rs
new file mode 100644
index 0000000..2a8f8f3
--- /dev/null
+++ b/src/config/general/tab_crude.rs
@@ -0,0 +1,37 @@
+use std::convert::From;
+
+use serde_derive::Deserialize;
+
+use crate::config::option::TabOption;
+use crate::tab::TabHomePage;
+
+fn default_home_page() -> String {
+ "home".to_string()
+}
+
+#[derive(Clone, Debug, Deserialize)]
+pub struct TabOptionCrude {
+ #[serde(default = "default_home_page")]
+ pub home_page: String,
+}
+
+impl std::default::Default for TabOptionCrude {
+ fn default() -> Self {
+ Self {
+ home_page: default_home_page(),
+ }
+ }
+}
+
+impl From<TabOptionCrude> for TabOption {
+ fn from(crude: TabOptionCrude) -> Self {
+ let home_page = match crude.home_page.as_str() {
+ "inherit" => TabHomePage::Inherit,
+ "home" => TabHomePage::Home,
+ "root" => TabHomePage::Root,
+ _ => TabHomePage::Home,
+ };
+
+ Self::new(home_page)
+ }
+}