mirror of
https://github.com/Hofknecht/SystemTrayMenu.git
synced 2024-10-02 10:07:15 +13:00
Add initial UI elements for Directories tab of Settings window
This commit is contained in:
parent
417d769744
commit
56912e0927
2 changed files with 110 additions and 87 deletions
|
@ -166,7 +166,49 @@
|
||||||
<TabItem Header="{u:Translate 'Directories'}">
|
<TabItem Header="{u:Translate 'Directories'}">
|
||||||
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
|
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<Label Content="fill me 4" Background="Red"/>
|
<GroupBox Header="{u:Translate 'Add content of directory to root directory'}">
|
||||||
|
<StackPanel>
|
||||||
|
<CheckBox x:Name="checkBoxShowOnlyAsSearchResult" Content="{u:Translate 'Show only as search result'}"/>
|
||||||
|
<DockPanel LastChildFill="False">
|
||||||
|
<Button DockPanel.Dock="Left" Content="{u:Translate 'Add directory'}" Margin="3" MinWidth="76" Click="ButtonAddFolderToRootFolder_Click"/>
|
||||||
|
<Button DockPanel.Dock="Right" x:Name="buttonRemoveFolder" Content="{u:Translate 'Remove directory'}" Margin="3" MinWidth="76" Click="ButtonRemoveFolder_Click" IsEnabled="False"/>
|
||||||
|
</DockPanel>
|
||||||
|
<ListView x:Name="dataGridViewFolders" x:FieldModifier="private" MinHeight="90" Margin="6,0" d:ItemsSource="{d:SampleData ItemCount=3}" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" Background="{x:Null}" SelectionChanged="DataGridViewFolders_SelectionChanged">
|
||||||
|
<ListView.View>
|
||||||
|
<GridView>
|
||||||
|
<GridViewColumn DisplayMemberBinding="{Binding ColumnFolder}">
|
||||||
|
<GridViewColumn.Header>
|
||||||
|
<GridViewColumnHeader Content="{u:Translate 'Directory paths'}" />
|
||||||
|
</GridViewColumn.Header>
|
||||||
|
</GridViewColumn>
|
||||||
|
<GridViewColumn>
|
||||||
|
<GridViewColumn.Header>
|
||||||
|
<GridViewColumnHeader Content="{u:Translate 'Recursive'}" />
|
||||||
|
</GridViewColumn.Header>
|
||||||
|
<GridViewColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<CheckBox IsChecked="{Binding ColumnRecursiveLevel}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</GridViewColumn.CellTemplate>
|
||||||
|
</GridViewColumn>
|
||||||
|
<GridViewColumn>
|
||||||
|
<GridViewColumn.Header>
|
||||||
|
<GridViewColumnHeader Content="{u:Translate 'Only Files'}" />
|
||||||
|
</GridViewColumn.Header>
|
||||||
|
<GridViewColumn.CellTemplate>
|
||||||
|
<DataTemplate>
|
||||||
|
<CheckBox IsChecked="{Binding ColumnOnlyFiles}"/>
|
||||||
|
</DataTemplate>
|
||||||
|
</GridViewColumn.CellTemplate>
|
||||||
|
</GridViewColumn>
|
||||||
|
</GridView>
|
||||||
|
</ListView.View>
|
||||||
|
</ListView>
|
||||||
|
<Button x:Name="buttonAddSampleStartMenuFolder" Content="xxx" Margin="3" MinWidth="76" Click="ButtonAddSampleStartMenuFolder_Click" HorizontalAlignment="Left" IsEnabled="False"/>
|
||||||
|
<CheckBox x:Name="checkBoxGenerateShortcutsToDrives" Content="{u:Translate 'Generate drive shortcuts on startup'}"/>
|
||||||
|
</StackPanel>
|
||||||
|
</GroupBox>
|
||||||
|
<Button Content="{u:Translate 'Default'}" Margin="3" MinWidth="76" Click="ButtonClearFolders_Click" HorizontalAlignment="Left"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|
|
@ -11,8 +11,10 @@ namespace SystemTrayMenu.UserInterface
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using SystemTrayMenu.Properties;
|
using SystemTrayMenu.Properties;
|
||||||
|
using SystemTrayMenu.UserInterface.FolderBrowseDialog;
|
||||||
using SystemTrayMenu.Utilities;
|
using SystemTrayMenu.Utilities;
|
||||||
using Windows.ApplicationModel;
|
using Windows.ApplicationModel;
|
||||||
|
|
||||||
|
@ -122,18 +124,9 @@ namespace SystemTrayMenu.UserInterface
|
||||||
groupBoxAutostart.Content = $"{(string)groupBoxAutostart.Content} ({Translator.GetText("Task Manager")})";
|
groupBoxAutostart.Content = $"{(string)groupBoxAutostart.Content} ({Translator.GetText("Task Manager")})";
|
||||||
}
|
}
|
||||||
|
|
||||||
#if TODO
|
buttonAddSampleStartMenuFolder.Content = Translator.GetText("Add sample directory 'Start Menu'"); // TODO: Find a way to escape this in XAML
|
||||||
groupBoxFoldersInRootFolder.Text = Translator.GetText("Add content of directory to root directory");
|
|
||||||
checkBoxShowOnlyAsSearchResult.Text = Translator.GetText("Show only as search result");
|
|
||||||
buttonAddFolderToRootFolder.Text = Translator.GetText("Add directory");
|
|
||||||
buttonRemoveFolder.Text = Translator.GetText("Remove directory");
|
|
||||||
ColumnFolder.HeaderText = Translator.GetText("Directory paths");
|
|
||||||
ColumnRecursiveLevel.HeaderText = Translator.GetText("Recursive");
|
|
||||||
ColumnOnlyFiles.HeaderText = Translator.GetText("Only Files");
|
|
||||||
buttonAddSampleStartMenuFolder.Text = Translator.GetText("Add sample directory 'Start Menu'");
|
|
||||||
buttonDefaultFolders.Text = Translator.GetText("Default");
|
|
||||||
checkBoxGenerateShortcutsToDrives.Text = Translator.GetText("Generate drive shortcuts on startup");
|
|
||||||
|
|
||||||
|
#if TODO
|
||||||
groupBoxStaysOpen.Text = Translator.GetText("Menu stays open");
|
groupBoxStaysOpen.Text = Translator.GetText("Menu stays open");
|
||||||
checkBoxStayOpenWhenItemClicked.Text = Translator.GetText("If an element was clicked");
|
checkBoxStayOpenWhenItemClicked.Text = Translator.GetText("If an element was clicked");
|
||||||
checkBoxStayOpenWhenFocusLost.Text = Translator.GetText("If the focus is lost and the mouse is still on the menu");
|
checkBoxStayOpenWhenFocusLost.Text = Translator.GetText("If the focus is lost and the mouse is still on the menu");
|
||||||
|
@ -406,8 +399,7 @@ namespace SystemTrayMenu.UserInterface
|
||||||
radioButtonSystemSettingsShowHiddenFiles.IsChecked = true;
|
radioButtonSystemSettingsShowHiddenFiles.IsChecked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if TODO
|
checkBoxShowOnlyAsSearchResult.IsChecked = Settings.Default.ShowOnlyAsSearchResult;
|
||||||
checkBoxShowOnlyAsSearchResult.Checked = Settings.Default.ShowOnlyAsSearchResult;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
foreach (string pathAndRecursivString in Settings.Default.PathsAddToMainMenu.Split(@"|"))
|
foreach (string pathAndRecursivString in Settings.Default.PathsAddToMainMenu.Split(@"|"))
|
||||||
|
@ -420,7 +412,7 @@ namespace SystemTrayMenu.UserInterface
|
||||||
string pathAddToMainMenu = pathAndRecursivString.Split("recursiv:")[0].Trim();
|
string pathAddToMainMenu = pathAndRecursivString.Split("recursiv:")[0].Trim();
|
||||||
bool recursive = pathAndRecursivString.Split("recursiv:")[1].StartsWith("True");
|
bool recursive = pathAndRecursivString.Split("recursiv:")[1].StartsWith("True");
|
||||||
bool onlyFiles = pathAndRecursivString.Split("onlyFiles:")[1].StartsWith("True");
|
bool onlyFiles = pathAndRecursivString.Split("onlyFiles:")[1].StartsWith("True");
|
||||||
dataGridViewFolders.Rows.Add(pathAddToMainMenu, recursive, onlyFiles);
|
dataGridViewFolders.Items.Add(new ListViewItemData(pathAddToMainMenu, recursive, onlyFiles));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -428,8 +420,9 @@ namespace SystemTrayMenu.UserInterface
|
||||||
Log.Warn("PathsAddToMainMenu", ex);
|
Log.Warn("PathsAddToMainMenu", ex);
|
||||||
}
|
}
|
||||||
|
|
||||||
checkBoxGenerateShortcutsToDrives.Checked = Settings.Default.GenerateShortcutsToDrives;
|
checkBoxGenerateShortcutsToDrives.IsChecked = Settings.Default.GenerateShortcutsToDrives;
|
||||||
|
|
||||||
|
#if TODO
|
||||||
checkBoxStayOpenWhenItemClicked.Checked = Settings.Default.StaysOpenWhenItemClicked;
|
checkBoxStayOpenWhenItemClicked.Checked = Settings.Default.StaysOpenWhenItemClicked;
|
||||||
checkBoxStayOpenWhenFocusLost.Checked = Settings.Default.StaysOpenWhenFocusLost;
|
checkBoxStayOpenWhenFocusLost.Checked = Settings.Default.StaysOpenWhenFocusLost;
|
||||||
|
|
||||||
|
@ -748,7 +741,6 @@ namespace SystemTrayMenu.UserInterface
|
||||||
private void SettingsForm_Load(object sender, EventArgs e)
|
private void SettingsForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AdjustControlMultilineIfNecessary(checkBoxStayOpenWhenFocusLost);
|
AdjustControlMultilineIfNecessary(checkBoxStayOpenWhenFocusLost);
|
||||||
dataGridViewFolders.ClearSelection();
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -888,19 +880,19 @@ namespace SystemTrayMenu.UserInterface
|
||||||
Settings.Default.AlwaysShowHiddenFiles = radioButtonAlwaysShowHiddenFiles.IsChecked ?? false;
|
Settings.Default.AlwaysShowHiddenFiles = radioButtonAlwaysShowHiddenFiles.IsChecked ?? false;
|
||||||
Settings.Default.NeverShowHiddenFiles = radioButtonNeverShowHiddenFiles.IsChecked ?? false;
|
Settings.Default.NeverShowHiddenFiles = radioButtonNeverShowHiddenFiles.IsChecked ?? false;
|
||||||
|
|
||||||
#if TODO
|
Settings.Default.ShowOnlyAsSearchResult = checkBoxShowOnlyAsSearchResult.IsChecked ?? false;
|
||||||
Settings.Default.ShowOnlyAsSearchResult = checkBoxShowOnlyAsSearchResult.Checked;
|
|
||||||
Settings.Default.PathsAddToMainMenu = string.Empty;
|
string pathsAddToMainMenu = string.Empty;
|
||||||
foreach (DataGridViewRow row in dataGridViewFolders.Rows)
|
foreach (ListViewItemData row in dataGridViewFolders.Items)
|
||||||
{
|
{
|
||||||
string pathAddToMainMenu = row.Cells[0].Value.ToString();
|
pathsAddToMainMenu += $"{row.ColumnFolder} recursiv:{row.ColumnRecursiveLevel} onlyFiles:{row.ColumnOnlyFiles}|";
|
||||||
bool recursiv = (bool)row.Cells[1].Value;
|
|
||||||
bool onlyFiles = (bool)row.Cells[2].Value;
|
|
||||||
Settings.Default.PathsAddToMainMenu += $"{pathAddToMainMenu} recursiv:{recursiv} onlyFiles:{onlyFiles}|";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings.Default.GenerateShortcutsToDrives = checkBoxGenerateShortcutsToDrives.Checked;
|
Settings.Default.PathsAddToMainMenu = pathsAddToMainMenu;
|
||||||
|
|
||||||
|
Settings.Default.GenerateShortcutsToDrives = checkBoxGenerateShortcutsToDrives.IsChecked ?? false;
|
||||||
|
|
||||||
|
#if TODO
|
||||||
Settings.Default.StaysOpenWhenItemClicked = checkBoxStayOpenWhenItemClicked.Checked;
|
Settings.Default.StaysOpenWhenItemClicked = checkBoxStayOpenWhenItemClicked.Checked;
|
||||||
Settings.Default.StaysOpenWhenFocusLost = checkBoxStayOpenWhenFocusLost.Checked;
|
Settings.Default.StaysOpenWhenFocusLost = checkBoxStayOpenWhenFocusLost.Checked;
|
||||||
Settings.Default.TimeUntilCloses = (int)numericUpDownTimeUntilClose.Value;
|
Settings.Default.TimeUntilCloses = (int)numericUpDownTimeUntilClose.Value;
|
||||||
|
@ -1077,105 +1069,75 @@ namespace SystemTrayMenu.UserInterface
|
||||||
textBoxIcoFolder.Text = Settings.Default.PathIcoDirectory;
|
textBoxIcoFolder.Text = Settings.Default.PathIcoDirectory;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if TODO
|
private void ButtonAddSampleStartMenuFolder_Click(object sender, RoutedEventArgs e)
|
||||||
private void ButtonAddSampleStartMenuFolder_Click(object sender, EventArgs e)
|
|
||||||
{
|
{
|
||||||
dataGridViewFolders.Rows.Clear();
|
// dataGridViewFolders.Rows.Clear(); // TODO: This line must be removed in version 1, right?
|
||||||
string folderPathCommonStartMenu = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu);
|
string folderPathCommonStartMenu = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu);
|
||||||
dataGridViewFolders.Rows.Add(folderPathCommonStartMenu, true, true);
|
dataGridViewFolders.Items.Add(new ListViewItemData(folderPathCommonStartMenu, true, true));
|
||||||
dataGridViewFolders.ClearSelection();
|
EnableButtonAddStartMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ButtonClearFolders_Click(object sender, EventArgs e)
|
private void ButtonClearFolders_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
checkBoxShowOnlyAsSearchResult.Checked = false;
|
checkBoxShowOnlyAsSearchResult.IsChecked = false;
|
||||||
dataGridViewFolders.Rows.Clear();
|
dataGridViewFolders.Items.Clear();
|
||||||
checkBoxGenerateShortcutsToDrives.Checked = false;
|
EnableButtonAddStartMenu();
|
||||||
|
checkBoxGenerateShortcutsToDrives.IsChecked = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ButtonAddFolderToRootFolder_Click(object sender, EventArgs e)
|
private void ButtonAddFolderToRootFolder_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
using FolderDialog dialog = new();
|
using FolderDialog dialog = new();
|
||||||
dialog.InitialFolder = Config.Path;
|
dialog.InitialFolder = Config.Path;
|
||||||
|
|
||||||
if (dialog.ShowDialog() == DialogResult.OK)
|
if (dialog.ShowDialog() == FormsExtensions.DialogResult.OK)
|
||||||
{
|
|
||||||
dataGridViewFolders.Rows.Add(dialog.Folder, false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
dataGridViewFolders.ClearSelection();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ButtonRemoveFolder_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
int selectedRowCount = dataGridViewFolders.Rows.GetRowCount(DataGridViewElementStates.Selected);
|
|
||||||
if (selectedRowCount > 0)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < selectedRowCount; i++)
|
|
||||||
{
|
|
||||||
dataGridViewFolders.Rows.RemoveAt(dataGridViewFolders.SelectedRows[0].Index);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dataGridViewFolders.ClearSelection();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DataGridViewFolders_SelectionChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
buttonRemoveFolder.Enabled = dataGridViewFolders.SelectedRows.Count > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DataGridViewFolders_MouseClick(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
if (dataGridViewFolders.HitTest(e.X, e.Y).RowIndex < 0)
|
|
||||||
{
|
|
||||||
dataGridViewFolders.ClearSelection();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DataGridViewFolders_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.ColumnIndex == 0)
|
|
||||||
{
|
|
||||||
dataGridViewFolders.CancelEdit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DataGridViewFolders_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
|
|
||||||
{
|
{
|
||||||
|
dataGridViewFolders.Items.Add(new ListViewItemData(dialog.Folder, false, true));
|
||||||
EnableButtonAddStartMenu();
|
EnableButtonAddStartMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DataGridViewFolders_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
|
dataGridViewFolders.SelectedItem = null;
|
||||||
{
|
|
||||||
EnableButtonAddStartMenu();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DataGridViewFolders_CurrentCellDirtyStateChanged(object sender, EventArgs e)
|
private void ButtonRemoveFolder_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
if (dataGridViewFolders.SelectedItems.Count > 0)
|
||||||
|
{
|
||||||
|
Array items = Array.CreateInstance(typeof(object), dataGridViewFolders.SelectedItems.Count);
|
||||||
|
dataGridViewFolders.SelectedItems.CopyTo(items, 0);
|
||||||
|
|
||||||
|
foreach (object item in items)
|
||||||
|
{
|
||||||
|
dataGridViewFolders.Items.Remove(item);
|
||||||
|
}
|
||||||
|
|
||||||
EnableButtonAddStartMenu();
|
EnableButtonAddStartMenu();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DataGridViewFolders_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
buttonRemoveFolder.IsEnabled = dataGridViewFolders.SelectedItems.Count > 0;
|
||||||
|
}
|
||||||
|
|
||||||
private void EnableButtonAddStartMenu()
|
private void EnableButtonAddStartMenu()
|
||||||
{
|
{
|
||||||
bool doesStartMenuFolderExist = false;
|
bool doesStartMenuFolderExist = false;
|
||||||
foreach (DataGridViewRow row in dataGridViewFolders.Rows)
|
foreach (ListViewItemData row in dataGridViewFolders.Items)
|
||||||
{
|
{
|
||||||
string folderPathCommonStartMenu = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu);
|
string folderPathCommonStartMenu = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu);
|
||||||
string pathAddToMainMenu = row.Cells[0].Value.ToString();
|
|
||||||
bool recursiv = (bool)row.Cells[1].EditedFormattedValue;
|
// TODO: Check: Is RecursiveLevel and OnlyFiles really important to be the StartMenu folder entry? (Remove in version 1?)
|
||||||
bool onlyFiles = (bool)row.Cells[2].EditedFormattedValue;
|
if (row.ColumnFolder == folderPathCommonStartMenu)
|
||||||
if (folderPathCommonStartMenu == pathAddToMainMenu &&
|
|
||||||
recursiv == true &&
|
|
||||||
onlyFiles == true)
|
|
||||||
{
|
{
|
||||||
doesStartMenuFolderExist = true;
|
doesStartMenuFolderExist = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buttonAddSampleStartMenuFolder.Enabled = !doesStartMenuFolderExist;
|
buttonAddSampleStartMenuFolder.IsEnabled = !doesStartMenuFolderExist;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
private void ButtonSizeAndLocationDefault_Click(object sender, RoutedEventArgs e)
|
private void ButtonSizeAndLocationDefault_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
numericUpDownSizeInPercent.Value = 100;
|
numericUpDownSizeInPercent.Value = 100;
|
||||||
|
@ -1426,5 +1388,24 @@ namespace SystemTrayMenu.UserInterface
|
||||||
{
|
{
|
||||||
numericUpDownOverlappingOffsetPixels.IsEnabled = false;
|
numericUpDownOverlappingOffsetPixels.IsEnabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Type for ListView items.
|
||||||
|
/// </summary>
|
||||||
|
private class ListViewItemData
|
||||||
|
{
|
||||||
|
public ListViewItemData(string folder, bool recursiveLevel, bool onlyFiles)
|
||||||
|
{
|
||||||
|
ColumnFolder = folder;
|
||||||
|
ColumnRecursiveLevel = recursiveLevel;
|
||||||
|
ColumnOnlyFiles = onlyFiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ColumnFolder { get; set; }
|
||||||
|
|
||||||
|
public bool ColumnRecursiveLevel { get; set; }
|
||||||
|
|
||||||
|
public bool ColumnOnlyFiles { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue