Bladeren bron

dont look at this this is garbage

UMTS at Teleco 3 weken geleden
bovenliggende
commit
1e04ddd02b
2 gewijzigde bestanden met toevoegingen van 55 en 46 verwijderingen
  1. 11 5
      src/kioskui/dashboard.rs
  2. 44 41
      src/kioskui/login.rs

+ 11 - 5
src/kioskui/dashboard.rs

@@ -37,9 +37,15 @@ impl KioskDashboard {
         let header_height = unit_height * 0.5;
         let row_height = unit_height;
 
-    // Kiosk-only header/button text should respect kiosk font_size
-    let btn_font_size = config.font_size.max(12.0);
-    let label_font_size = (config.font_size * 0.8).max(12.0);
+        // Kiosk-only header/button text and height should respect kiosk settings
+        let mut btn_font_size = config.font_size.max(12.0);
+        let label_font_size = (config.font_size * 0.8).max(12.0);
+        // Clamp header button height to the header row but prefer configured height when there's room
+        let header_btn_h = config.button_height
+            .min((header_height - 10.0).max(36.0))
+            .max(36.0);
+        // Keep button text reasonably sized relative to the button height
+        btn_font_size = btn_font_size.min(header_btn_h * 0.6);
 
         // --- Row 1: Header (Logout, OSK) ---
         ui.allocate_ui_at_rect(
@@ -47,7 +53,7 @@ impl KioskDashboard {
             |ui| {
                 ui.horizontal(|ui| {
                     ui.with_layout(egui::Layout::left_to_right(egui::Align::Center), |ui| {
-                        if ui.add_sized(egui::vec2(120.0, header_height - 20.0), egui::Button::new(egui::RichText::new("Logout").size(btn_font_size))).clicked() {
+                        if ui.add_sized(egui::vec2(120.0, header_btn_h), egui::Button::new(egui::RichText::new("Logout").size(btn_font_size))).clicked() {
                             *logout_requested = true;
                         }
                         
@@ -57,7 +63,7 @@ impl KioskDashboard {
                     ui.with_layout(egui::Layout::right_to_left(egui::Align::Center), |ui| {
                         if config.enable_osk {
                             let btn_text = if *show_osk { "Hide Keyboard" } else { "Show Keyboard" };
-                            if ui.add_sized(egui::vec2(150.0, header_height - 20.0), egui::Button::new(egui::RichText::new(btn_text).size(btn_font_size))).clicked() {
+                            if ui.add_sized(egui::vec2(150.0, header_btn_h), egui::Button::new(egui::RichText::new(btn_text).size(btn_font_size))).clicked() {
                                 *show_osk = !*show_osk;
                             }
                         }

+ 44 - 41
src/kioskui/login.rs

@@ -78,7 +78,7 @@ impl KioskLoginView {
                 offset: None,
                 joins: None,
             };
-            
+
             if let Ok(response) = client.query(&role_req) {
                 if response.success {
                     if let Some(data) = response.data {
@@ -90,17 +90,20 @@ impl KioskLoginView {
             }
         }
 
+        // Build users request
         let request = QueryRequest {
             action: "select".to_string(),
             table: "users".to_string(),
-            columns: Some(vec!["id".to_string(), "username".to_string(), "name".to_string(), "role_id".to_string()]),
+            columns: Some(vec![
+                "id".to_string(),
+                "username".to_string(),
+                "name".to_string(),
+                "role_id".to_string(),
+            ]),
             data: None,
             r#where: None,
             filter: None,
-            order_by: Some(vec![OrderBy {
-                column: "name".to_string(),
-                direction: "ASC".to_string(),
-            }]),
+            order_by: Some(vec![OrderBy { column: "name".to_string(), direction: "ASC".to_string() }]),
             limit: Some(100),
             offset: None,
             joins: None,
@@ -297,44 +300,45 @@ impl KioskLoginView {
                 return self.attempt_login(client);
             }
             
-            ui.add_space(20.0);
+            ui.add_space(10.0);
 
             // OSK
             if self.ui_settings.enable_osk {
                 self.show_osk(ui);
-                ui.add_space(20.0);
+                ui.add_space(10.0);
             }
             
-            let result = ui.horizontal(|ui| {
-                // Align buttons to bottom/center; shrink if needed to keep on-screen
-                let mut btn_h = self.ui_settings.button_height;
-                let avail_h = ui.available_height();
-                if avail_h < btn_h + 12.0 {
-                    btn_h = (avail_h - 12.0).max(36.0);
-                }
-                let btn_size = egui::vec2(150.0, btn_h);
-                let total_width = btn_size.x * 2.0 + 20.0; // 2 buttons + spacing
-                let available_width = ui.available_width();
-                let margin = (available_width - total_width) / 2.0;
-                
-                if margin > 0.0 {
-                    ui.add_space(margin);
-                }
-                
-                if ui.add_sized(btn_size, egui::Button::new(egui::RichText::new("Back").size((self.ui_settings.font_size * 0.8).min(btn_h * 0.6)))).clicked() {
-                    self.selected_user = None;
-                    self.pin_input.clear();
-                    self.error_message = None;
-                }
-                
-                ui.add_space(20.0);
+            // Reserve a bottom strip and place action buttons centered, respecting button_height
+            let result = ui.allocate_ui_with_layout(
+                egui::vec2(ui.available_width(), self.ui_settings.button_height),
+                egui::Layout::bottom_up(egui::Align::Center),
+                |ui| {
+                    ui.horizontal(|ui| {
+                        let btn_h = self.ui_settings.button_height;
+                        let btn_size = egui::vec2(150.0, btn_h);
+                        let label_size = (self.ui_settings.font_size * 0.8).min(btn_h * 0.6);
+
+                        let total_width = btn_size.x * 2.0 + 30.0; // 2 buttons + spacing
+                        let available_width = ui.available_width();
+                        let margin = (available_width - total_width) / 2.0;
+                        if margin > 0.0 { ui.add_space(margin); }
+
+                        if ui.add_sized(btn_size, egui::Button::new(egui::RichText::new("Back").size(label_size))).clicked() {
+                            self.selected_user = None;
+                            self.pin_input.clear();
+                            self.error_message = None;
+                        }
+
+                        ui.add_space(20.0);
 
-                if ui.add_sized(btn_size, egui::Button::new(egui::RichText::new("Login").size((self.ui_settings.font_size * 0.8).min(btn_h * 0.6)))).clicked() {
-                    return self.attempt_login(client);
+                        if ui.add_sized(btn_size, egui::Button::new(egui::RichText::new("Login").size(label_size))).clicked() {
+                            return self.attempt_login(client);
+                        }
+
+                        LoginResult::None
+                    }).inner
                 }
-                
-                LoginResult::None
-            }).inner;
+            ).inner;
 
             if let Some(error) = &self.error_message {
                 ui.add_space(10.0);
@@ -351,7 +355,7 @@ impl KioskLoginView {
             ["1", "2", "3"],
             ["4", "5", "6"],
             ["7", "8", "9"],
-            ["CLR", "0", "DEL"],
+            ["C", "0", "D"],
         ];
 
         // Adaptive key size to ensure keypad never goes off-screen
@@ -364,7 +368,7 @@ impl KioskLoginView {
         let reserved_bottom = self.ui_settings.button_height + 120.0;
         let max_h_per_key = ((avail_h - reserved_bottom) - spacing.y * (rows - 1.0)) / rows;
         let max_w_per_key = (avail_w - spacing.x * (cols - 1.0)) / cols;
-        let key_edge = max_h_per_key.min(max_w_per_key).clamp(48.0, 80.0);
+        let key_edge = max_h_per_key.min(max_w_per_key).clamp(12.0, 80.0);
         let btn_size = egui::vec2(key_edge, key_edge);
 
         ui.vertical_centered(|ui| {
@@ -382,14 +386,13 @@ impl KioskLoginView {
                         let key_font = (self.ui_settings.font_size * 0.8).min(btn_size.y * 0.6).max(16.0);
                         if ui.add_sized(btn_size, egui::Button::new(egui::RichText::new(key).size(key_font))).clicked() {
                             match key {
-                                "CLR" => self.pin_input.clear(),
-                                "DEL" => { self.pin_input.pop(); },
+                                "C" => self.pin_input.clear(),
+                                "D" => { self.pin_input.pop(); },
                                 _ => self.pin_input.push_str(key),
                             }
                         }
                     }
                 });
-                ui.add_space(10.0);
             }
         });
     }