settings menue 4h total

This commit is contained in:
2025-08-25 16:58:47 +02:00
parent 8325267b1e
commit 31e285348e
156 changed files with 1682 additions and 445 deletions

View File

@@ -66,7 +66,7 @@
</StackPanel>
<!-- MAIN CONTENT -->
<Grid Grid.Column="1" Grid.Row="1" KeyboardNavigation.DirectionalNavigation="None">
<Grid Grid.Column="1" Grid.Row="1" KeyboardNavigation.DirectionalNavigation="None" >
<ScrollViewer x:Name="ScrollContentHome" Background="#444" Panel.ZIndex="0"
KeyboardNavigation.DirectionalNavigation="None" Focusable="False">
<StackPanel Margin="10" KeyboardNavigation.DirectionalNavigation="None">
@@ -106,11 +106,45 @@
Focusable="False" KeyboardNavigation.DirectionalNavigation="None">
<StackPanel x:Name="PlaylistContentPanel" KeyboardNavigation.DirectionalNavigation="None"/>
</ScrollViewer>
<ScrollViewer x:Name="scrowlsettings" Background="#444" Panel.ZIndex="0" Visibility="Collapsed">
<GroupBox Header="Scan locations" Foreground="White" Margin="10">
<StackPanel>
<!-- Static RadioButton -->
<RadioButton Content="scan all drives" Foreground="White" GroupName="DirsGroup"
Checked="StaticRadioButton_Checked"/>
<!-- Specific option as Label -->
<Label Content="specific option" Foreground="White" Margin="5,2,0,5"/>
<!-- Dynamic RadioButtons -->
<StackPanel Name="dirsStack" Margin="5"/>
<!-- Static direct path RadioButton -->
<RadioButton Content="direct path" Foreground="White" GroupName="DirsGroup"
Checked="StaticRadioButton_Checked"/>
<!-- Direct path input -->
<StackPanel Orientation="Horizontal" Margin="5">
<TextBox x:Name="DirectPathTextBox" Text="{Binding DirectPath, Mode=TwoWay}" Width="150" Height="25" Margin="0,0,5,0"/>
<Button Content="Select Path" Click="SelectPathButton_Click" Width="90" Height="25"/>
</StackPanel>
<Separator Height="5" Margin="5"/>
<!-- Theme ComboBox -->
<ComboBox Width="100" HorizontalAlignment="Left" SelectedItem="{Binding Theme, Mode=TwoWay}" Margin="5">
<ComboBoxItem Content="dark"/>
<ComboBoxItem Content="light"/>
</ComboBox>
</StackPanel>
</GroupBox>
</ScrollViewer>
</Grid>
<!-- SETTINGS BUTTON -->
<Button Focusable="False" Grid.Column="0" Grid.Row="2" Content="Settings" Margin="10" HorizontalAlignment="Left"
TabIndex="8" Click="PlayListButton_Click"/>
TabIndex="8" Click="OnSettingsBtnClick"/>
<!-- PLAYER PROGRESS -->
<Slider Focusable="False" Name="itemProgress" TabIndex="9" PreviewMouseDown="ItemProgress_OnPreviewMouseDown"

View File

@@ -20,6 +20,8 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Threading;
using Microsoft.Win32;
using YourNamespace;
using Brushes = System.Windows.Media.Brushes;
using Color = System.Windows.Media.Color;
using File = System.IO.File;
@@ -43,6 +45,8 @@ public partial class MainWindow : Window
PlaylistEditor popupWindow;
private ScanSettingsViewModel vm;
ObjListBP _playlists = new ObjListBP();
private Catagory Muvie = new Catagory("Muvie");
@@ -165,6 +169,11 @@ public partial class MainWindow : Window
}
#endregion
vm = new ScanSettingsViewModel();
DataContext = vm;
AddRadioButtons();
}
//Quinn
@@ -267,7 +276,17 @@ public partial class MainWindow : Window
_mediaPlayer.Stop();
VideoView.Visibility = Visibility.Collapsed;
}
private void OnSettingsBtnClick(object sender, RoutedEventArgs e)
{
Close_Player();
ScrollContentPlaylist.Visibility = Visibility.Collapsed;
ScrollContentCat.Visibility = Visibility.Collapsed;
ScrollContentHome.Visibility = Visibility.Collapsed;
scrowlsettings.Visibility = Visibility.Visible;
MenueItems();
SetInitialFocusForCurrentView();
}
private async void scanButton_Click(object sender, RoutedEventArgs e)
{
@@ -571,6 +590,7 @@ public partial class MainWindow : Window
Close_Player();
ScrollContentPlaylist.Visibility = Visibility.Collapsed;
ScrollContentCat.Visibility = Visibility.Collapsed;
scrowlsettings.Visibility = Visibility.Collapsed;
ScrollContentHome.Visibility = Visibility.Visible;
MenueItems();
SetInitialFocusForCurrentView();
@@ -580,7 +600,7 @@ public partial class MainWindow : Window
Close_Player();
Name_of_Catagory_Text1.Visibility = Visibility.Collapsed;
ScrollContentPlaylist.Visibility = Visibility.Collapsed;
scrowlsettings.Visibility = Visibility.Collapsed;
ScrollContentHome.Visibility = Visibility.Collapsed;
ScrollContentCat.Visibility = Visibility.Visible;
Name_of_Catagory1.Visibility = Visibility.Collapsed;
@@ -592,7 +612,7 @@ public partial class MainWindow : Window
Close_Player();
Name_of_Catagory_Text1.Visibility = Visibility.Collapsed;
ScrollContentPlaylist.Visibility = Visibility.Collapsed;
scrowlsettings.Visibility = Visibility.Collapsed;
ScrollContentHome.Visibility = Visibility.Collapsed;
ScrollContentCat.Visibility = Visibility.Visible;
Name_of_Catagory1.Visibility = Visibility.Collapsed;
@@ -605,6 +625,7 @@ public partial class MainWindow : Window
Name_of_Catagory_Text1.Visibility = Visibility.Visible;
ScrollContentPlaylist.Visibility = Visibility.Collapsed;
ScrollContentHome.Visibility = Visibility.Collapsed;
scrowlsettings.Visibility = Visibility.Collapsed;
ScrollContentCat.Visibility = Visibility.Visible;
Name_of_Catagory1.Visibility = Visibility.Visible;
MenueItems(ref Muvie,ref Serie);
@@ -614,7 +635,7 @@ public partial class MainWindow : Window
{
Close_Player();
Name_of_Catagory_Text1.Visibility = Visibility.Collapsed;
scrowlsettings.Visibility = Visibility.Collapsed;
ScrollContentHome.Visibility = Visibility.Collapsed;
ScrollContentCat.Visibility = Visibility.Collapsed;
Name_of_Catagory1.Visibility = Visibility.Collapsed;
@@ -1994,6 +2015,68 @@ public void SetInitialFocusForCurrentView()
}
#endregion
#region settings menue
private void Vm_StateChanged(object sender, EventArgs e)
{
// Update owner variables whenever selection changes
option = vm.Option;
specificOption = vm.SpecificOption;
rootPath = vm.RootPath;
}
private void AddRadioButtons()
{
foreach (string optionName in vm.Dirs)
{
RadioButton rb = new RadioButton
{
Content = optionName,
GroupName = "DirsGroup",
Margin = new Thickness(5),
Foreground = Brushes.White
};
rb.Checked += (s, e) => { vm.SelectedOption = optionName; };
dirsStack.Children.Add(rb);
}
}
private void StaticRadioButton_Checked(object sender, RoutedEventArgs e)
{
if (sender is RadioButton rb)
{
vm.SelectedOption = rb.Content.ToString();
}
}
private void SelectPathButton_Click(object sender, RoutedEventArgs e)
{
// WPF native OpenFileDialog trick to select folder
var dialog = new Microsoft.Win32.OpenFileDialog
{
CheckFileExists = false, // allow selecting folder
CheckPathExists = true,
FileName = "Select folder",
ValidateNames = false
};
if (dialog.ShowDialog() == true)
{
string folderPath = System.IO.Path.GetDirectoryName(dialog.FileName);
// Update ViewModel, which triggers StateChanged to update owner variables
vm.RootPath = folderPath;
// Also update TextBox explicitly if needed
DirectPathTextBox.Text = folderPath;
}
}
#endregion
}