From 068c2907d5c3730ae2cc3ee7b41ff59fafcf1936 Mon Sep 17 00:00:00 2001
From: M33 <327-m33@git.qoto.org>
Date: Wed, 17 Mar 2021 09:55:30 +0000
Subject: [PATCH] path is hell try again overloading name

---
 src/data.rs | 52 +++++++++++++++++++++++++++++-----------------------
 1 file changed, 29 insertions(+), 23 deletions(-)

diff --git a/src/data.rs b/src/data.rs
index 3cb872de..3f224a89 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -136,7 +136,7 @@ type LayoutSource = (ArrangementKind, DataSource);
 fn list_layout_sources(
     name: &str,
     kind: ArrangementKind,
-    keyboards_path: PathBuf, // Option<PathBuf>,
+    keyboards_path: Option<PathBuf>, // PathBuf,
 ) -> Vec<LayoutSource> {
     // Just a simplification of often called code.
     let add_by_name = |
@@ -237,33 +237,39 @@ fn load_layout_data_with_fallback(
 ) -> (ArrangementKind, ::layout::LayoutData) {
 
     // Build the path to the right keyboard layout subdirectory
-    let mut variant_path = env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap();   
+    //let mut variant_path = env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap();   
+    let mut variant_name=String::new();
 
-    //let mut path = env::var_os("SQUEEKBOARD_KEYBOARDSDIR")
-    //    .map(PathBuf::from)
-    //    .or_else(|| xdg::data_path("squeekboard/keyboards"));
+    let path = env::var_os("SQUEEKBOARD_KEYBOARDSDIR")
+        .map(PathBuf::from)
+        .or_else(|| xdg::data_path("squeekboard/keyboards"));
     
-    match variant {
-        ::data::ContentPurpose::Normal   => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Alpha    => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Digits   => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Number   => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Phone    => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Url      => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Email    => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Name     => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Password => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Pin      => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Date     => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Time     => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Datetime => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
-        ::data::ContentPurpose::Terminal => variant_path.push("/terminal"),  // terminal specific layouts
+    if variant == ::data::ContentPurpose::Terminal {
+        variant_name.push_str("/terminal/");
     }
+    variant_name.push_str(name);
+
+    //match variant {
+    //    ::data::ContentPurpose::Normal   => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Alpha    => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Digits   => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Number   => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Phone    => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Url      => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Email    => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Name     => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Password => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Pin      => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Date     => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Time     => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Datetime => env::var_os("SQUEEKBOARD_KEYBOARDSDIR").unwrap(),
+    //    ::data::ContentPurpose::Terminal => variant_path.push("/terminal"),  // terminal specific layouts
+    //}
     
-    let mut variant_path_buf = PathBuf::new();
-    variant_path_buf.push(variant_path);
+    //let mut variant_path_buf = PathBuf::new();
+    //variant_path_buf.push(variant_path);
     
-    for (kind, source) in list_layout_sources(name, kind, variant_path_buf) {
+    for (kind, source) in list_layout_sources(variant_name, kind, path) {
         let layout = load_layout_data(source.clone());
         match layout {
             Err(e) => match (e, source) {
-- 
GitLab