diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2019-10-06 06:36:54 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2019-10-06 08:24:54 +0900 |
commit | d45bf8688920cde63ec75ecf8539b1688141c5ce (patch) | |
tree | 6bcbf99df6cb694e081eb3f35e8d0b5af2e7cbd7 | |
parent | ab2984d79d11faded71b2c69d947714743a1e18c (diff) | |
download | wf-clock-d45bf8688920cde63ec75ecf8539b1688141c5ce.tar.gz |
split settings into a separate window
-rw-r--r-- | WarframeClock/OverlayWindow.xaml | 53 | ||||
-rw-r--r-- | WarframeClock/OverlayWindow.xaml.cs | 32 | ||||
-rw-r--r-- | WarframeClock/SettingsWindow.xaml | 47 | ||||
-rw-r--r-- | WarframeClock/SettingsWindow.xaml.cs | 59 | ||||
-rw-r--r-- | WarframeClock/WarframeClock.csproj | 7 |
5 files changed, 114 insertions, 84 deletions
diff --git a/WarframeClock/OverlayWindow.xaml b/WarframeClock/OverlayWindow.xaml index 7530085..23977ce 100644 --- a/WarframeClock/OverlayWindow.xaml +++ b/WarframeClock/OverlayWindow.xaml @@ -37,58 +37,5 @@ <local:KuvaFloodOverlayItem DataContext="{Binding KuvaFloodOverlayItemViewModel}" Margin="10,0,0,0"/> </StackPanel> - - <Grid> - <Grid.Style> - <Style TargetType="{x:Type Grid}"> - <Setter Property="Visibility" Value="Collapsed"/> - <Style.Triggers> - <DataTrigger Binding="{Binding SettingsMode}" Value="True"> - <Setter Property="Visibility" Value="Visible"/> - </DataTrigger> - </Style.Triggers> - </Style> - </Grid.Style> - <StackPanel Background="White" - HorizontalAlignment="Center" VerticalAlignment="Center"> - <GroupBox Header="Settings"> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition Width="5" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition MinHeight="20" /> - <RowDefinition MinHeight="20" /> - <RowDefinition MinHeight="20" /> - <RowDefinition MinHeight="20" /> - </Grid.RowDefinitions> - <TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Center">Font Settings:</TextBlock> - <Button Grid.Row="0" Grid.Column="2" VerticalAlignment="Center" Click="FontSettingsButton_Click">...</Button> - <TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center">Arbitration:</TextBlock> - <CheckBox Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" IsChecked="{Binding ShowArbitration}"/> - <TextBlock Grid.Row="2" Grid.Column="0" VerticalAlignment="Center">Kuva Flood:</TextBlock> - <CheckBox Grid.Row="2" Grid.Column="2" VerticalAlignment="Center" IsChecked="{Binding ShowKuvaFlood}"/> - <TextBlock Grid.Row="3" Grid.Column="0" VerticalAlignment="Center">Position:</TextBlock> - <TextBlock Grid.Row="3" Grid.Column="2" VerticalAlignment="Center">Drag the clock overlay to reposition it.</TextBlock> - </Grid> - </GroupBox> - <GroupBox Header="About"> - <StackPanel> - <TextBlock> - <TextBlock Text="{x:Static local:App.VersionString}" /> - </TextBlock> - <TextBlock> - <Hyperlink NavigateUri="{x:Static local:App.WebsiteUri}" - RequestNavigate="Hyperlink_RequestNavigate"> - <TextBlock Text="{x:Static local:App.WebsiteUriString}" /> - </Hyperlink> - </TextBlock> - </StackPanel> - </GroupBox> - <Button Click="DoneSettingsButton_Click">Close</Button> - </StackPanel> - </Grid> </Grid> </local:OverlayWindowBase> diff --git a/WarframeClock/OverlayWindow.xaml.cs b/WarframeClock/OverlayWindow.xaml.cs index b36e50e..dbfe7cf 100644 --- a/WarframeClock/OverlayWindow.xaml.cs +++ b/WarframeClock/OverlayWindow.xaml.cs @@ -1,8 +1,6 @@ using System; -using System.Diagnostics; using System.Windows; using System.Windows.Input; -using System.Windows.Navigation; using System.Windows.Threading; namespace WarframeClock @@ -24,7 +22,7 @@ namespace WarframeClock var iconMenu = new System.Windows.Forms.ContextMenu(); iconMenu.MenuItems.Add(new System.Windows.Forms.MenuItem(App.VersionString) { Enabled = false }); iconMenu.MenuItems.Add(new System.Windows.Forms.MenuItem("Configure", - (_, __) => _vm.SettingsMode = true)); + (_, __) => new SettingsWindow(_vm).Show())); iconMenu.MenuItems.Add(new System.Windows.Forms.MenuItem("Quit", (_, __) => ((App)Application.Current).Terminate())); @@ -60,17 +58,6 @@ namespace WarframeClock AdjustOverlay(); } - private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) - { - Process.Start(e.Uri.AbsoluteUri); - } - - private void DoneSettingsButton_Click(object sender, RoutedEventArgs e) - { - Settings.Save(); - _vm.SettingsMode = false; - } - private Point _dragOriginalPosition; private bool _dragStarted; private Point _dragOffset; @@ -129,22 +116,5 @@ namespace WarframeClock _vm.RefreshPosition(); } } - - private void FontSettingsButton_Click(object sender, RoutedEventArgs e) - { - var dialog = new System.Windows.Forms.FontDialog - { - Font = new System.Drawing.Font( - new System.Drawing.FontFamily(Settings.FontFamilyName), - (float)(Settings.FontSize * 72.0 / 96.0)) - }; - if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) - { - Settings.FontFamilyName = dialog.Font.FontFamily.Name; - Settings.FontSize = dialog.Font.SizeInPoints / 72.0 * 96.0; - _vm.RefreshFont(); - } - dialog.Dispose(); - } } } diff --git a/WarframeClock/SettingsWindow.xaml b/WarframeClock/SettingsWindow.xaml new file mode 100644 index 0000000..6f32432 --- /dev/null +++ b/WarframeClock/SettingsWindow.xaml @@ -0,0 +1,47 @@ +<Window x:Class="WarframeClock.SettingsWindow" + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:local="clr-namespace:WarframeClock" + mc:Ignorable="d" + Title="WarframeClock SettingsWindow" Height="300" Width="400" WindowStyle="ToolWindow"> + <StackPanel> + <GroupBox Header="Settings"> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="Auto" /> + <ColumnDefinition Width="5" /> + <ColumnDefinition Width="*" /> + </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition MinHeight="20" /> + <RowDefinition MinHeight="20" /> + <RowDefinition MinHeight="20" /> + <RowDefinition MinHeight="20" /> + </Grid.RowDefinitions> + <TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Center">Font Settings:</TextBlock> + <Button Grid.Row="0" Grid.Column="2" VerticalAlignment="Center" Click="FontSettingsButton_Click">...</Button> + <TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center">Arbitration:</TextBlock> + <CheckBox Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" IsChecked="{Binding ShowArbitration}"/> + <TextBlock Grid.Row="2" Grid.Column="0" VerticalAlignment="Center">Kuva Flood:</TextBlock> + <CheckBox Grid.Row="2" Grid.Column="2" VerticalAlignment="Center" IsChecked="{Binding ShowKuvaFlood}"/> + <TextBlock Grid.Row="3" Grid.Column="0" VerticalAlignment="Center">Position:</TextBlock> + <TextBlock Grid.Row="3" Grid.Column="2" VerticalAlignment="Center">Drag the clock overlay to reposition it.</TextBlock> + </Grid> + </GroupBox> + <GroupBox Header="About"> + <StackPanel> + <TextBlock> + <TextBlock Text="{x:Static local:App.VersionString}" /> + </TextBlock> + <TextBlock> + <Hyperlink NavigateUri="{x:Static local:App.WebsiteUri}" + RequestNavigate="Hyperlink_RequestNavigate"> + <TextBlock Text="{x:Static local:App.WebsiteUriString}" /> + </Hyperlink> + </TextBlock> + </StackPanel> + </GroupBox> + </StackPanel> +</Window> diff --git a/WarframeClock/SettingsWindow.xaml.cs b/WarframeClock/SettingsWindow.xaml.cs new file mode 100644 index 0000000..10778c1 --- /dev/null +++ b/WarframeClock/SettingsWindow.xaml.cs @@ -0,0 +1,59 @@ +using System; +using System.ComponentModel; +using System.Diagnostics; +using System.Windows; +using System.Windows.Navigation; + +namespace WarframeClock +{ + /// <summary> + /// Interaction logic for SettingsWindow.xaml + /// </summary> + public partial class SettingsWindow : Window + { + private readonly OverlayWindowViewModel _vm; + + public SettingsWindow(OverlayWindowViewModel vm) + { + DataContext = _vm = vm; + InitializeComponent(); + } + + protected override void OnContentRendered(EventArgs e) + { + base.OnContentRendered(e); + + _vm.SettingsMode = true; + } + + protected override void OnClosing(CancelEventArgs e) + { + base.OnClosing(e); + + Settings.Save(); + _vm.SettingsMode = false; + } + + private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) + { + Process.Start(e.Uri.AbsoluteUri); + } + + private void FontSettingsButton_Click(object sender, RoutedEventArgs e) + { + var dialog = new System.Windows.Forms.FontDialog + { + Font = new System.Drawing.Font( + new System.Drawing.FontFamily(Settings.FontFamilyName), + (float)(Settings.FontSize * 72.0 / 96.0)) + }; + if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + Settings.FontFamilyName = dialog.Font.FontFamily.Name; + Settings.FontSize = dialog.Font.SizeInPoints / 72.0 * 96.0; + _vm.RefreshFont(); + } + dialog.Dispose(); + } + } +} diff --git a/WarframeClock/WarframeClock.csproj b/WarframeClock/WarframeClock.csproj index 3a390ed..7e08100 100644 --- a/WarframeClock/WarframeClock.csproj +++ b/WarframeClock/WarframeClock.csproj @@ -94,6 +94,9 @@ <DependentUpon>PlainsTimeOverlayItem.xaml</DependentUpon> </Compile> <Compile Include="Settings.cs" /> + <Compile Include="SettingsWindow.xaml.cs"> + <DependentUpon>SettingsWindow.xaml</DependentUpon> + </Compile> <Compile Include="WorldState.cs" /> <Compile Include="WfcdWorldStateData.cs" /> <Page Include="OverlayWindow.xaml"> @@ -121,6 +124,10 @@ <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> + <Page Include="SettingsWindow.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> </ItemGroup> <ItemGroup> <Compile Include="Properties\AssemblyInfo.cs"> |