Skip to content
This repository was archived by the owner on Sep 14, 2024. It is now read-only.

Commit 363179a

Browse files
committed
Added settings panel with theme selector
1 parent fb7f63b commit 363179a

File tree

5 files changed

+68
-13
lines changed

5 files changed

+68
-13
lines changed

App.xaml.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ protected override void OnStartup(StartupEventArgs e) {
2424

2525
AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
2626

27-
ThemeManager.ChangeAppStyle(Current,
28-
ThemeManager.GetAccent("Orange"),
29-
ThemeManager.GetAppTheme("BaseLight"));
30-
3127
base.OnStartup(e);
3228
}
3329

MainWindow.xaml

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
66
xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
77
mc:Ignorable="d"
8-
Title="iTunesRichPresence" Height="500" Width="450" ResizeMode="CanMinimize" ShowTitleBar="True" StateChanged="MetroWindow_StateChanged" Closing="MetroWindow_Closing">
8+
Title="iTunesRichPresence" Height="500" Width="450" ResizeMode="CanMinimize" ShowTitleBar="True" StateChanged="MetroWindow_StateChanged" Closing="MetroWindow_Closing" RightWindowCommandsOverlayBehavior="HiddenTitleBar">
99
<Grid>
10-
<CheckBox x:Name="RunOnStartupCheckBox" Content="Run on startup" HorizontalAlignment="Left" Margin="10,443,0,0" VerticalAlignment="Top" Click="RunOnStartupCheckBox_OnClick"/>
1110
<Label Content="Playing status" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
1211
<TextBox x:Name="PlayingTopLineFormatTextBox" HorizontalAlignment="Left" Height="23" Margin="10,35,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="424" TextChanged="PlayingTopLineFormatTextBox_TextChanged" GotFocus="TextBox_GotFocus"/>
1312
<TextBox x:Name="PlayingBottomLineFormatTextBox" HorizontalAlignment="Left" Height="23" Margin="10,66,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="424" TextChanged="PlayingBottomLineFormatTextBox_TextChanged" GotFocus="TextBox_GotFocus"/>
@@ -33,21 +32,44 @@
3332
<Setter Property="Margin" Value="5,5,5,5" />
3433
</Style>
3534
</Grid.Resources>
36-
<Button x:Name="TrackButton" Content="Track" Click="TrackButton_Click" FontWeight="Normal" Grid.Column="0" Grid.Row="0"/>
37-
<Button x:Name="ArtistButton" Content="Artist" Click="ArtistButton_Click" FontWeight="Normal" Grid.Column="1" Grid.Row="0"/>
38-
<Button x:Name="PlaylistTypeButton" Content="Playlist type" Click="PlaylistTypeButton_Click" FontWeight="Normal" Grid.Column="0" Grid.Row="1"/>
39-
<Button x:Name="PlaylistNameButton" Content="Playlist name" Click="PlaylistNameButton_Click" FontWeight="Normal" Grid.Column="1" Grid.Row="1"/>
40-
<Button x:Name="AlbumButton" Content="Album" Click="AlbumButton_OnClick" FontWeight="Normal" Grid.Column="0" Grid.Row="2"/>
35+
<Button x:Name="TrackButton" Content="Track" Click="TrackButton_Click" Grid.Column="0" Grid.Row="0"/>
36+
<Button x:Name="ArtistButton" Content="Artist" Click="ArtistButton_Click" Grid.Column="1" Grid.Row="0"/>
37+
<Button x:Name="PlaylistTypeButton" Content="Playlist type" Click="PlaylistTypeButton_Click" Grid.Column="0" Grid.Row="1"/>
38+
<Button x:Name="PlaylistNameButton" Content="Playlist name" Click="PlaylistNameButton_Click" Grid.Column="1" Grid.Row="1"/>
39+
<Button x:Name="AlbumButton" Content="Album" Click="AlbumButton_OnClick" Grid.Column="0" Grid.Row="2"/>
4140
</Grid>
4241
</GroupBox>
43-
<CheckBox x:Name="PlaybackDurationCheckBox" Content="Display playback duration" HorizontalAlignment="Left" Margin="117,443,0,0" VerticalAlignment="Top" Click="PlaybackDurationCheckBox_Click"/>
42+
<CheckBox x:Name="PlaybackDurationCheckBox" Content="Display playback duration" HorizontalAlignment="Left" Margin="12,443,0,0" VerticalAlignment="Top" Click="PlaybackDurationCheckBox_Click"/>
4443
</Grid>
4544
<controls:MetroWindow.RightWindowCommands>
4645
<controls:WindowCommands>
4746
<Button Name="UpdateButton" Content="new version available!" Click="UpdateButton_OnClick" Visibility="Hidden"/>
47+
<Button Name="SettingsButton" Content="settings" Click="SettingsButton_OnClick"/>
4848
<Button Name="AboutButton" Content="about" Click="AboutButton_OnClick"/>
4949
</controls:WindowCommands>
5050
</controls:MetroWindow.RightWindowCommands>
51+
<controls:MetroWindow.Flyouts>
52+
<controls:FlyoutsControl>
53+
<controls:Flyout Name="SettingsFlyout" Header="Settings" Position="Right" Width="450" Theme="Light">
54+
<Grid Margin="20,20,20,20" VerticalAlignment="Top">
55+
<Grid.RowDefinitions>
56+
<RowDefinition/>
57+
<RowDefinition/>
58+
</Grid.RowDefinitions>
59+
<CheckBox x:Name="RunOnStartupCheckBox" Content="Run on startup" HorizontalAlignment="Left" Click="RunOnStartupCheckBox_OnClick" Grid.Row="0" Margin="0,0,0,15"/>
60+
<Grid Grid.Row="1" Margin="0,0,0,15">
61+
<Grid.ColumnDefinitions>
62+
<ColumnDefinition Width="1*"/>
63+
<ColumnDefinition Width="3*"/>
64+
</Grid.ColumnDefinitions>
65+
<Label Content="Accent colour:" Grid.Column="0"/>
66+
<ComboBox Name="ThemeComboBox" SelectionChanged="ThemeComboBox_OnSelectionChanged" Grid.Column="1"/>
67+
</Grid>
68+
69+
</Grid>
70+
</controls:Flyout>
71+
</controls:FlyoutsControl>
72+
</controls:MetroWindow.Flyouts>
5173

5274
</controls:MetroWindow>
5375

MainWindow.xaml.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
using System;
22
using System.Diagnostics;
3+
using System.Linq;
34
using System.Reflection;
45
using System.Windows;
6+
using System.Windows.Controls;
57
using System.Windows.Forms;
68
using iTunesRichPresence_Rewrite.Properties;
9+
using MahApps.Metro;
710
using MahApps.Metro.Controls.Dialogs;
811
using Microsoft.Win32;
912
using TextBox = System.Windows.Controls.TextBox;
1013
using Octokit;
14+
using Application = System.Windows.Application;
1115

1216
namespace iTunesRichPresence_Rewrite {
1317
/// <summary>
@@ -33,6 +37,13 @@ public MainWindow() {
3337
_notifyIcon = new NotifyIcon {Text = "iTunesRichPresence", Visible = false, Icon = System.Drawing.Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location)};
3438
_notifyIcon.MouseDoubleClick += (sender, args) => { WindowState = WindowState.Normal; };
3539

40+
ThemeComboBox.ItemsSource = ThemeManager.Accents.Select(accent => accent.Name);
41+
ThemeComboBox.SelectedItem = Settings.Default.Accent;
42+
43+
ThemeManager.ChangeAppStyle(Application.Current,
44+
ThemeManager.GetAccent(Settings.Default.Accent),
45+
ThemeManager.GetAppTheme("BaseLight"));
46+
3647
RunOnStartupCheckBox.IsChecked = Settings.Default.RunOnStartup;
3748
PlayingTopLineFormatTextBox.Text = Settings.Default.PlayingTopLine;
3849
PlayingBottomLineFormatTextBox.Text = Settings.Default.PlayingBottomLine;
@@ -140,5 +151,16 @@ private async void UpdateButton_OnClick(object sender, RoutedEventArgs e) {
140151
}
141152
}
142153

154+
private void SettingsButton_OnClick(object sender, RoutedEventArgs e) {
155+
SettingsFlyout.IsOpen = true;
156+
}
157+
158+
private void ThemeComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) {
159+
Settings.Default.Accent = (string) ThemeComboBox.SelectedItem;
160+
Settings.Default.Save();
161+
ThemeManager.ChangeAppStyle(Application.Current,
162+
ThemeManager.GetAccent(Settings.Default.Accent),
163+
ThemeManager.GetAppTheme("BaseLight"));
164+
}
143165
}
144166
}

Properties/Settings.Designer.cs

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Properties/Settings.settings

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version='1.0' encoding='utf-8'?>
2-
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="iTunesRichPresence_Rewrite.Properties" GeneratedClassName="Settings">
2+
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="" GeneratedClassName="Settings">
33
<Profiles />
44
<Settings>
55
<Setting Name="RunOnStartup" Type="System.Boolean" Scope="User">
@@ -20,5 +20,8 @@
2020
<Setting Name="DisplayPlaybackDuration" Type="System.Boolean" Scope="User">
2121
<Value Profile="(Default)">True</Value>
2222
</Setting>
23+
<Setting Name="Accent" Type="System.String" Scope="User">
24+
<Value Profile="(Default)">Orange</Value>
25+
</Setting>
2326
</Settings>
2427
</SettingsFile>

0 commit comments

Comments
 (0)