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'}">
|
||||
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
|
||||
<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>
|
||||
</ScrollViewer>
|
||||
</TabItem>
|
||||
|
|
|
@ -11,8 +11,10 @@ namespace SystemTrayMenu.UserInterface
|
|||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media.Imaging;
|
||||
using SystemTrayMenu.Properties;
|
||||
using SystemTrayMenu.UserInterface.FolderBrowseDialog;
|
||||
using SystemTrayMenu.Utilities;
|
||||
using Windows.ApplicationModel;
|
||||
|
||||
|
@ -122,18 +124,9 @@ namespace SystemTrayMenu.UserInterface
|
|||
groupBoxAutostart.Content = $"{(string)groupBoxAutostart.Content} ({Translator.GetText("Task Manager")})";
|
||||
}
|
||||
|
||||
#if TODO
|
||||
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");
|
||||
buttonAddSampleStartMenuFolder.Content = Translator.GetText("Add sample directory 'Start Menu'"); // TODO: Find a way to escape this in XAML
|
||||
|
||||
#if TODO
|
||||
groupBoxStaysOpen.Text = Translator.GetText("Menu stays open");
|
||||
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");
|
||||
|
@ -406,8 +399,7 @@ namespace SystemTrayMenu.UserInterface
|
|||
radioButtonSystemSettingsShowHiddenFiles.IsChecked = true;
|
||||
}
|
||||
|
||||
#if TODO
|
||||
checkBoxShowOnlyAsSearchResult.Checked = Settings.Default.ShowOnlyAsSearchResult;
|
||||
checkBoxShowOnlyAsSearchResult.IsChecked = Settings.Default.ShowOnlyAsSearchResult;
|
||||
try
|
||||
{
|
||||
foreach (string pathAndRecursivString in Settings.Default.PathsAddToMainMenu.Split(@"|"))
|
||||
|
@ -420,7 +412,7 @@ namespace SystemTrayMenu.UserInterface
|
|||
string pathAddToMainMenu = pathAndRecursivString.Split("recursiv:")[0].Trim();
|
||||
bool recursive = pathAndRecursivString.Split("recursiv:")[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)
|
||||
|
@ -428,8 +420,9 @@ namespace SystemTrayMenu.UserInterface
|
|||
Log.Warn("PathsAddToMainMenu", ex);
|
||||
}
|
||||
|
||||
checkBoxGenerateShortcutsToDrives.Checked = Settings.Default.GenerateShortcutsToDrives;
|
||||
checkBoxGenerateShortcutsToDrives.IsChecked = Settings.Default.GenerateShortcutsToDrives;
|
||||
|
||||
#if TODO
|
||||
checkBoxStayOpenWhenItemClicked.Checked = Settings.Default.StaysOpenWhenItemClicked;
|
||||
checkBoxStayOpenWhenFocusLost.Checked = Settings.Default.StaysOpenWhenFocusLost;
|
||||
|
||||
|
@ -748,7 +741,6 @@ namespace SystemTrayMenu.UserInterface
|
|||
private void SettingsForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
AdjustControlMultilineIfNecessary(checkBoxStayOpenWhenFocusLost);
|
||||
dataGridViewFolders.ClearSelection();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -888,19 +880,19 @@ namespace SystemTrayMenu.UserInterface
|
|||
Settings.Default.AlwaysShowHiddenFiles = radioButtonAlwaysShowHiddenFiles.IsChecked ?? false;
|
||||
Settings.Default.NeverShowHiddenFiles = radioButtonNeverShowHiddenFiles.IsChecked ?? false;
|
||||
|
||||
#if TODO
|
||||
Settings.Default.ShowOnlyAsSearchResult = checkBoxShowOnlyAsSearchResult.Checked;
|
||||
Settings.Default.PathsAddToMainMenu = string.Empty;
|
||||
foreach (DataGridViewRow row in dataGridViewFolders.Rows)
|
||||
Settings.Default.ShowOnlyAsSearchResult = checkBoxShowOnlyAsSearchResult.IsChecked ?? false;
|
||||
|
||||
string pathsAddToMainMenu = string.Empty;
|
||||
foreach (ListViewItemData row in dataGridViewFolders.Items)
|
||||
{
|
||||
string pathAddToMainMenu = row.Cells[0].Value.ToString();
|
||||
bool recursiv = (bool)row.Cells[1].Value;
|
||||
bool onlyFiles = (bool)row.Cells[2].Value;
|
||||
Settings.Default.PathsAddToMainMenu += $"{pathAddToMainMenu} recursiv:{recursiv} onlyFiles:{onlyFiles}|";
|
||||
pathsAddToMainMenu += $"{row.ColumnFolder} recursiv:{row.ColumnRecursiveLevel} onlyFiles:{row.ColumnOnlyFiles}|";
|
||||
}
|
||||
|
||||
Settings.Default.GenerateShortcutsToDrives = checkBoxGenerateShortcutsToDrives.Checked;
|
||||
Settings.Default.PathsAddToMainMenu = pathsAddToMainMenu;
|
||||
|
||||
Settings.Default.GenerateShortcutsToDrives = checkBoxGenerateShortcutsToDrives.IsChecked ?? false;
|
||||
|
||||
#if TODO
|
||||
Settings.Default.StaysOpenWhenItemClicked = checkBoxStayOpenWhenItemClicked.Checked;
|
||||
Settings.Default.StaysOpenWhenFocusLost = checkBoxStayOpenWhenFocusLost.Checked;
|
||||
Settings.Default.TimeUntilCloses = (int)numericUpDownTimeUntilClose.Value;
|
||||
|
@ -1077,105 +1069,75 @@ namespace SystemTrayMenu.UserInterface
|
|||
textBoxIcoFolder.Text = Settings.Default.PathIcoDirectory;
|
||||
}
|
||||
|
||||
#if TODO
|
||||
private void ButtonAddSampleStartMenuFolder_Click(object sender, EventArgs e)
|
||||
private void ButtonAddSampleStartMenuFolder_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
dataGridViewFolders.Rows.Clear();
|
||||
// dataGridViewFolders.Rows.Clear(); // TODO: This line must be removed in version 1, right?
|
||||
string folderPathCommonStartMenu = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu);
|
||||
dataGridViewFolders.Rows.Add(folderPathCommonStartMenu, true, true);
|
||||
dataGridViewFolders.ClearSelection();
|
||||
dataGridViewFolders.Items.Add(new ListViewItemData(folderPathCommonStartMenu, true, true));
|
||||
EnableButtonAddStartMenu();
|
||||
}
|
||||
|
||||
private void ButtonClearFolders_Click(object sender, EventArgs e)
|
||||
private void ButtonClearFolders_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
checkBoxShowOnlyAsSearchResult.Checked = false;
|
||||
dataGridViewFolders.Rows.Clear();
|
||||
checkBoxGenerateShortcutsToDrives.Checked = false;
|
||||
checkBoxShowOnlyAsSearchResult.IsChecked = false;
|
||||
dataGridViewFolders.Items.Clear();
|
||||
EnableButtonAddStartMenu();
|
||||
checkBoxGenerateShortcutsToDrives.IsChecked = false;
|
||||
}
|
||||
|
||||
private void ButtonAddFolderToRootFolder_Click(object sender, EventArgs e)
|
||||
private void ButtonAddFolderToRootFolder_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
using FolderDialog dialog = new();
|
||||
dialog.InitialFolder = Config.Path;
|
||||
|
||||
if (dialog.ShowDialog() == 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)
|
||||
if (dialog.ShowDialog() == FormsExtensions.DialogResult.OK)
|
||||
{
|
||||
dataGridViewFolders.Items.Add(new ListViewItemData(dialog.Folder, false, true));
|
||||
EnableButtonAddStartMenu();
|
||||
}
|
||||
|
||||
private void DataGridViewFolders_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
|
||||
{
|
||||
EnableButtonAddStartMenu();
|
||||
dataGridViewFolders.SelectedItem = null;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
private void DataGridViewFolders_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
buttonRemoveFolder.IsEnabled = dataGridViewFolders.SelectedItems.Count > 0;
|
||||
}
|
||||
|
||||
private void EnableButtonAddStartMenu()
|
||||
{
|
||||
bool doesStartMenuFolderExist = false;
|
||||
foreach (DataGridViewRow row in dataGridViewFolders.Rows)
|
||||
foreach (ListViewItemData row in dataGridViewFolders.Items)
|
||||
{
|
||||
string folderPathCommonStartMenu = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu);
|
||||
string pathAddToMainMenu = row.Cells[0].Value.ToString();
|
||||
bool recursiv = (bool)row.Cells[1].EditedFormattedValue;
|
||||
bool onlyFiles = (bool)row.Cells[2].EditedFormattedValue;
|
||||
if (folderPathCommonStartMenu == pathAddToMainMenu &&
|
||||
recursiv == true &&
|
||||
onlyFiles == true)
|
||||
|
||||
// TODO: Check: Is RecursiveLevel and OnlyFiles really important to be the StartMenu folder entry? (Remove in version 1?)
|
||||
if (row.ColumnFolder == folderPathCommonStartMenu)
|
||||
{
|
||||
doesStartMenuFolderExist = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
buttonAddSampleStartMenuFolder.Enabled = !doesStartMenuFolderExist;
|
||||
buttonAddSampleStartMenuFolder.IsEnabled = !doesStartMenuFolderExist;
|
||||
}
|
||||
#endif
|
||||
|
||||
private void ButtonSizeAndLocationDefault_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
numericUpDownSizeInPercent.Value = 100;
|
||||
|
@ -1426,5 +1388,24 @@ namespace SystemTrayMenu.UserInterface
|
|||
{
|
||||
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