From 178b2ccf1632c46525b73ae09925feb257d59cb9 Mon Sep 17 00:00:00 2001
From: Sandra Borst <108298114+VerfluchteZocke@users.noreply.github.com>
Date: Sat, 1 Mar 2025 19:33:38 +0100
Subject: [PATCH] improved design of distractions page; improved combobox (now
 listbox + popup)

---
 .../Screens/FirstLaunch/03_0Distractions.xaml | 121 +++++++++---------
 .../FirstLaunch/03_0Distractions.xaml.cs      |  42 +++++-
 .../Styles/Styles.xaml                        |   2 +
 3 files changed, 106 insertions(+), 59 deletions(-)

diff --git a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/FirstLaunch/03_0Distractions.xaml b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/FirstLaunch/03_0Distractions.xaml
index 2935f63..84252f5 100644
--- a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/FirstLaunch/03_0Distractions.xaml
+++ b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/FirstLaunch/03_0Distractions.xaml
@@ -41,7 +41,7 @@
                  Background="Transparent"
                  Foreground="{StaticResource TEXT_PRIMARY_BRUSH}"
                  BorderBrush="{StaticResource TEXT_SECONDARY_BRUSH}"
-                 BorderThickness="1"
+                 BorderThickness="0"
                  TextChanged="SearchBox_TextChanged" />
                         <TextBlock x:Name="SearchPlaceholder"
                    Text="Search..."
@@ -53,6 +53,13 @@
                    IsHitTestVisible="False"
                    Margin="15,0,0,0" />
 
+                        <!-- Untere Linie als Border -->
+                        <Border Height="1"
+                Background="{StaticResource TEXT_PRIMARY_BRUSH}"
+                VerticalAlignment="Bottom"
+                HorizontalAlignment="Stretch"
+                Margin="10,0,40,0" />
+
                         <Border Width="30"
 Height="30"
 Margin="165,0,0,0"
@@ -62,15 +69,14 @@ MouseDown="SearchButton_Click">
                             <TextBlock Text="🔍"
        FontSize="14"
        VerticalAlignment="Center"
-       HorizontalAlignment="Center" />
+       HorizontalAlignment="Center" 
+                                       Style="{StaticResource ButtonTextStyle2}"/>
+
                         </Border>
 
 
 
                     </Grid>
-
-                    <!-- Lupe-Symbol -->
-                   
                 </Border>
              
 
@@ -88,20 +94,17 @@ MouseDown="SearchButton_Click">
             <Border Background="{StaticResource BACKGROUND_SECONDARY_BRUSH}" CornerRadius="10" Padding="10" Margin="0,10,0,0">
                 <Grid>
                     <Grid.ColumnDefinitions>
-                        <ColumnDefinition Width="2*" />
                         <ColumnDefinition Width="3*" />
-                        <ColumnDefinition Width="2*" />
-                        <ColumnDefinition Width="Auto" />
+                        <ColumnDefinition Width="5*" />
+                        <ColumnDefinition Width="3*" />
+                        <ColumnDefinition Width="1*" />
                     </Grid.ColumnDefinitions>
 
                     <!-- Label -->
                     <TextBlock Text="Add a distracting website:" 
                    VerticalAlignment="Center" 
-                   Foreground="White" 
-                   FontSize="14" 
-                   FontWeight="Bold" 
-                   Grid.Column="0" 
-                   Margin="10,0,10,0" />
+                   Margin="10,0,10,0" 
+                               Style="{StaticResource Header3}"/>
 
                     <!-- Input Field with Placeholder -->
                     <Grid Grid.Column="1" VerticalAlignment="Center" Margin="0,0,10,0">
@@ -112,7 +115,7 @@ MouseDown="SearchButton_Click">
              Background="Transparent" 
              Foreground="White" 
              BorderBrush="Gray" 
-             BorderThickness="1" 
+             BorderThickness="0" 
              TextChanged="UrlInputBox_TextChanged" />
                         <TextBlock x:Name="UrlPlaceholder" 
                Text="Url" 
@@ -122,51 +125,55 @@ MouseDown="SearchButton_Click">
                Padding="5" 
                IsHitTestVisible="False" 
                Margin="5,0,0,0" />
+
+                        <!-- Untere Linie als Border -->
+                        <Border Height="1" 
+            Background="{StaticResource TEXT_PRIMARY_BRUSH}" 
+            VerticalAlignment="Bottom" 
+            HorizontalAlignment="Stretch" 
+            Margin="0,0,0,0" />
                     </Grid>
 
 
-                    <!-- Dropdown for Category -->
-                    <StackPanel Grid.Column="2" VerticalAlignment="Center" Margin="0,0,10,0">
-                        <TextBlock Text="Category" 
-                       HorizontalAlignment="Left" 
-                       Foreground="White" 
-                       FontSize="14" 
-                       FontWeight="Bold" 
-                       Margin="0,0,0,5" />
-                        <ComboBox VerticalAlignment="Center" 
-                                  x:Name="CategoryComboBox"
-                      Padding="5" 
-                      FontSize="14" 
-                      Foreground="Black" 
-                      Background="#ADD8E6" 
-                      FontWeight="Bold"
-                      SelectedIndex="4">
-
-                            <ComboBoxItem Content="Social Media" />
-                            <ComboBoxItem Content="Shopping" />
-                            <ComboBoxItem Content="Games" />
-                            <ComboBoxItem Content="Porn" />
-                            <ComboBoxItem Content="Other Websites" />
-                        </ComboBox>
+                    <StackPanel Grid.Column="2" VerticalAlignment="Center" Margin="0,0,10,0" HorizontalAlignment="Center" Width="200">
+                        <TextBlock Text="Category" HorizontalAlignment="Left" Margin="0,0,0,5" Style="{StaticResource Header3}"/>
+
+                        <!-- Button zum Öffnen des Dropdowns -->
+                        <Border Name="DropdownBorder" Background="{StaticResource HIGHLIGHT_PRIMARY_BRUSH}" CornerRadius="5" BorderThickness="1" BorderBrush="Black" 
+            Width="200" MouseDown="TogglePopup">
+                            <Grid>
+                                <TextBlock x:Name="SelectedText" Text="Select Category" Foreground="{StaticResource BACKGROUND_PRIMARY_BRUSH}" FontWeight="Bold" VerticalAlignment="Center" Margin="10,0,30,0"/>
+                                <Path Fill="{StaticResource BACKGROUND_PRIMARY_BRUSH}" Data="M 0 0 L 8 8 L 16 0 Z" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="10"/>
+                            </Grid>
+                        </Border>
+
+                        <!-- Popup für die Dropdown-Liste -->
+                        <Popup Name="PopupMenu" Placement="Bottom" StaysOpen="True" Width="200">
+                            <Border Background="{StaticResource HIGHLIGHT_PRIMARY_BRUSH}" CornerRadius="5" BorderThickness="1" BorderBrush="Black" Width="200">
+                                <ListBox x:Name="CategoryList" SelectionChanged="CategoryList_SelectionChanged" Background="{StaticResource HIGHLIGHT_PRIMARY_BRUSH}">
+                                    <ListBoxItem Content="Social Media"/>
+                                    <ListBoxItem Content="Shopping"/>
+                                    <ListBoxItem Content="Games"/>
+                                    <ListBoxItem Content="Porn"/>
+                                    <ListBoxItem Content="Other Websites" />
+                                </ListBox>
+                            </Border>
+                        </Popup>
                     </StackPanel>
 
-                    <!-- Add Button -->
-                    <Button Width="30" 
-                Height="30" 
-                VerticalAlignment="Center" 
-                HorizontalAlignment="Right" 
-                Grid.Column="3" 
-                Margin="0" 
-                BorderThickness="0" 
-                ToolTip="Add"
-                 Click="AddButton_Click">
-                        <TextBlock Text="+" 
-                       FontSize="20" 
-                       Foreground="#333436" 
-                       VerticalAlignment="Center" 
-                       HorizontalAlignment="Center" 
-                                   />
-                    </Button>
+
+
+
+
+
+                    <!-- Add Button als Border -->
+                    <Border  Width="40" Height="40" CornerRadius="10" Background="{StaticResource TEXT_PRIMARY_BRUSH}" Cursor="Hand"
+                            Grid.Column="3" 
+        VerticalAlignment="Center" HorizontalAlignment="Center" Margin="10,0,0,0"
+        MouseDown="AddButton_Click">
+                        <TextBlock Text="+" FontSize="24" FontWeight="Bold" Foreground="Black"
+               VerticalAlignment="Center" HorizontalAlignment="Center"/>
+                    </Border>
                 </Grid>
             </Border>
 
@@ -273,14 +280,14 @@ MouseDown="SearchButton_Click">
         </StackPanel>
 
         <!-- Pagination -->
-        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,520,0,0" VerticalAlignment="Top">
+        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,550,0,0" VerticalAlignment="Top">
             <Border Style="{StaticResource RoundedButtonBorder}" MouseDown="PreviousPage_Click" Width="100" Margin="10">
                 <TextBlock Text="Previous" Style="{StaticResource ButtonTextStyle}" />
             </Border>
             <StackPanel Orientation="Horizontal">
-                <Ellipse Width="15" Height="15" Fill="Black" Margin="5"/>
+                <Ellipse Width="15" Height="15" Fill="{StaticResource TEXT_PRIMARY_BRUSH}" Margin="5"/>
                 <!-- Aktive Seite -->
-                <Ellipse Width="15" Height="15" Fill="Black" Margin="5"/>
+                <Ellipse Width="15" Height="15" Fill="{StaticResource TEXT_PRIMARY_BRUSH}" Margin="5"/>
                 <!-- Inaktive Seite -->
                 <Ellipse Width="15" Height="15" Fill="Gray" Margin="5"/>
                 <Ellipse Width="15" Height="15" Fill="Gray" Margin="5"/>
diff --git a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/FirstLaunch/03_0Distractions.xaml.cs b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/FirstLaunch/03_0Distractions.xaml.cs
index 93e9850..ac074af 100644
--- a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/FirstLaunch/03_0Distractions.xaml.cs
+++ b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Screens/FirstLaunch/03_0Distractions.xaml.cs
@@ -28,6 +28,7 @@ namespace InnoLabProjektDektopApp
         {
             InitializeComponent();
             LoadJsonData();
+            this.MouseDown += ClosePopupOnClickOutside;
         }
 
 
@@ -147,7 +148,7 @@ namespace InnoLabProjektDektopApp
         private void AddButton_Click(object sender, RoutedEventArgs e)
         {
             string enteredUrl = UrlInputBox.Text.Trim();
-            string selectedCategory = (CategoryComboBox.SelectedItem as ComboBoxItem)?.Content?.ToString();
+            string selectedCategory = (CategoryList.SelectedItem as ListBoxItem)?.Content?.ToString();
 
             // Validate category selection
             if (string.IsNullOrEmpty(selectedCategory))
@@ -174,9 +175,13 @@ namespace InnoLabProjektDektopApp
 
             // Clear input fields
             UrlInputBox.Clear();
-            CategoryComboBox.SelectedIndex = -1;
+            CategoryList.SelectedIndex = -1; // Auswahl zurücksetzen
+            SelectedText.Text = "Select Category"; // Den Text im UI zurücksetzen
         }
 
+
+
+
         private void SaveJsonData()
         {
             try
@@ -216,6 +221,39 @@ namespace InnoLabProjektDektopApp
             }
         }
 
+       private void TogglePopup(object sender, MouseButtonEventArgs e)
+{
+    // Popup umschalten
+    PopupMenu.IsOpen = !PopupMenu.IsOpen;
+
+    // Wenn das Popup geöffnet wird, registriere das globale Klick-Event
+    if (PopupMenu.IsOpen)
+    {
+        this.PreviewMouseDown += ClosePopupOnClickOutside;
+    }
+}
+
+private void CategoryList_SelectionChanged(object sender, SelectionChangedEventArgs e)
+{
+    if (CategoryList.SelectedItem is ListBoxItem selectedItem)
+    {
+        SelectedText.Text = selectedItem.Content.ToString();
+        PopupMenu.IsOpen = false; // Popup schließen nach Auswahl
+        this.PreviewMouseDown -= ClosePopupOnClickOutside; // Event entfernen
+    }
+}
+
+private void ClosePopupOnClickOutside(object sender, MouseButtonEventArgs e)
+{
+    if (!PopupMenu.IsMouseOver && !DropdownBorder.IsMouseOver)
+    {
+        PopupMenu.IsOpen = false;
+        this.PreviewMouseDown -= ClosePopupOnClickOutside; // Event entfernen
+    }
+}
+
+
+
 
         private void NavigateToDistractionList(object sender, RoutedEventArgs e)
         {
diff --git a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Styles/Styles.xaml b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Styles/Styles.xaml
index 42c58ee..3047394 100644
--- a/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Styles/Styles.xaml
+++ b/InnoLabProjektDektopApp/InnoLabProjektDektopApp/Styles/Styles.xaml
@@ -79,9 +79,11 @@
         <Setter Property="HorizontalAlignment" Value="Center"/>
         <Setter Property="VerticalAlignment" Value="Center"/>
         <Setter Property="TextAlignment" Value="Center"/>
+        <Setter Property="Cursor" Value="Arrow"/>
         <Style.Triggers>
             <Trigger Property="IsMouseOver" Value="True">
                 <Setter Property="Foreground" Value="{StaticResource TEXT_SECONDARY_BRUSH}"/>
+                <Setter Property="Cursor" Value="Hand"/>
                 <!-- Slightly darker gray on hover -->
             </Trigger>
         </Style.Triggers>
-- 
GitLab