diff --git a/MusicPlayer/App.config b/MusicPlayer/App.config
index 8ca71ad..0cacbc4 100644
--- a/MusicPlayer/App.config
+++ b/MusicPlayer/App.config
@@ -1,6 +1,11 @@
+
+
+
+
+
@@ -12,4 +17,14 @@
+
+
+
+
+
+
+ blue
+
+
+
\ No newline at end of file
diff --git a/MusicPlayer/Audioquarium.csproj b/MusicPlayer/Audioquarium.csproj
index 05feafc..921b239 100644
--- a/MusicPlayer/Audioquarium.csproj
+++ b/MusicPlayer/Audioquarium.csproj
@@ -64,7 +64,6 @@
-
@@ -95,7 +94,6 @@
App.xaml
Code
-
diff --git a/MusicPlayer/Cfg.cs b/MusicPlayer/Cfg.cs
deleted file mode 100644
index 4380e12..0000000
--- a/MusicPlayer/Cfg.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-
-namespace Audioquarium
-{
- internal class Cfg
- {
- public static Dictionary ConfigFile;
-
- #region cfg Loading and Saving
-
- public static void SetVariable(string varName, string varValue, ref Dictionary configDict)
- {
- if (configDict.ContainsKey(varName))
- configDict[varName] = varValue;
- else
- configDict.Add(varName, varValue);
- }
-
- public static bool SaveConfigFile(string cfgFileName, Dictionary configDict)
- {
- try
- {
- if (File.Exists(cfgFileName))
- File.Delete(cfgFileName);
-
- File.WriteAllLines(cfgFileName, configDict.Select(kvp => kvp.Key + " \"" + kvp.Value + "\"").ToArray());
- return true;
- }
- catch
- {
- return false;
- }
- }
-
- private static bool LoadConfigFile(string cfgFileName, ref Dictionary returnDict)
- {
- if (returnDict == null)
- returnDict = new Dictionary();
- if (!File.Exists(cfgFileName))
- return false;
-
- var lines = File.ReadAllLines(cfgFileName);
- foreach (var line in lines)
- {
- var splitIdx = line.IndexOf(" ", StringComparison.Ordinal);
- if (splitIdx < 0 || splitIdx + 1 >= line.Length)
- continue; // line isn't valid?
- var varName = line.Substring(0, splitIdx);
- var varValue = line.Substring(splitIdx + 1);
-
- // remove quotes
- if (varValue.StartsWith("\""))
- varValue = varValue.Substring(1);
- if (varValue.EndsWith("\""))
- varValue = varValue.Substring(0, varValue.Length - 1);
-
- SetVariable(varName, varValue, ref returnDict);
- }
- return true;
- }
-
- public static void Initial(bool error)
- {
- var cfgFileExists = LoadConfigFile("music_prefs.cfg", ref ConfigFile);
-
- if (!cfgFileExists)
- {
- SetVariable("Player.Color", "blue", ref ConfigFile);
- SetVariable("Music.Directory1", "", ref ConfigFile);
- Console.WriteLine(@"New CFG Created");
- }
- SaveConfigFile("music_prefs.cfg", ConfigFile);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/MusicPlayer/Itemsource.cs b/MusicPlayer/Itemsource.cs
index 9bf9d5a..6de233f 100644
--- a/MusicPlayer/Itemsource.cs
+++ b/MusicPlayer/Itemsource.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
+using System.Linq;
using File = TagLib.File;
namespace Audioquarium
@@ -9,80 +10,42 @@ namespace Audioquarium
internal class Itemsource
{
public static readonly List SongLibrary = new List();
+ private static readonly string[] Filetypes = { "*.mp3", "*.wav", "*.aac", "*.flac", "*.wma" };
+ private static string _songName;
+ private static string _songArtist;
- public static void LoadSongs(string path)
+ public static int LoadSongs(string path)
{
var watch = new Stopwatch();
watch.Start();
SongLibrary?.Clear();
- var filetypes = new[] {"*.mp3", "*.wav", "*.aac", "*.flac", "*.wma"};
var songCount = 0;
-
var files = new List();
- foreach (var t in filetypes)
+ foreach (var t in Filetypes)
files.AddRange(GetFiles(path, t));
foreach (var file in files)
{
try
{
- var tagFile = File.Create(file);
+ File tagFile = File.Create(file);
- if (tagFile.Tag.Title == null)
- {
- SongLibrary?.Add(new Songs
- {
- Name = Path.GetFileNameWithoutExtension(file),
- Artist = tagFile.Tag.FirstAlbumArtist,
- Album = tagFile.Tag.Album,
- Length = tagFile.Properties.Duration.ToString(@"mm\:ss"),
- Track = tagFile.Tag.Track.ToString(),
- FileName = tagFile.Name,
- AltName = Path.GetFileNameWithoutExtension(file)
- });
- }
- else if (tagFile.Tag.FirstAlbumArtist == null)
- {
- SongLibrary?.Add(new Songs
- {
- Name = Path.GetFileNameWithoutExtension(file),
- Artist = tagFile.Tag.Performers[0],
- Album = tagFile.Tag.Album,
- Length = tagFile.Properties.Duration.ToString(@"mm\:ss"),
- Track = tagFile.Tag.Track.ToString(),
- FileName = tagFile.Name,
- AltName = Path.GetFileNameWithoutExtension(file)
- });
- }
- else if (tagFile.Tag.FirstAlbumArtist == null && tagFile.Tag.Title == null)
- {
- SongLibrary?.Add(new Songs
- {
- Name = Path.GetFileNameWithoutExtension(file),
- Artist = tagFile.Tag.Performers[0],
- Album = tagFile.Tag.Album,
- Length = tagFile.Properties.Duration.ToString(@"mm\:ss"),
- Track = tagFile.Tag.Track.ToString(),
- FileName = tagFile.Name,
- AltName = Path.GetFileNameWithoutExtension(file)
- });
- }
- else
+ _songName = tagFile.Tag.Title ?? Path.GetFileNameWithoutExtension(file);
+ _songArtist = tagFile.Tag.FirstAlbumArtist ?? tagFile.Tag.Performers[0];
+
+ SongLibrary?.Add(new Songs
{
- SongLibrary?.Add(new Songs
- {
- Name = tagFile.Tag.Title,
- Artist = tagFile.Tag.FirstAlbumArtist,
- Album = tagFile.Tag.Album,
- Length = tagFile.Properties.Duration.ToString(@"mm\:ss"),
- Track = tagFile.Tag.Track.ToString(),
- FileName = tagFile.Name,
- AltName = Path.GetFileNameWithoutExtension(file)
- });
- }
+ Name = _songName,
+ Artist = _songArtist,
+ Album = tagFile.Tag.Album,
+ Length = tagFile.Properties.Duration.ToString(@"mm\:ss"),
+ Track = tagFile.Tag.Track.ToString(),
+ FileName = tagFile.Name,
+ AltName = Path.GetFileNameWithoutExtension(file)
+ });
songCount++;
}
catch
@@ -93,15 +56,23 @@ public static void LoadSongs(string path)
watch.Stop();
Console.WriteLine(songCount + @" songs loaded in " + watch.ElapsedMilliseconds + @" milliseconds");
+ return songCount;
}
private static List GetFiles(string path, string pattern)
{
var files = new List();
- files.AddRange(Directory.GetFiles(path, pattern, SearchOption.TopDirectoryOnly));
- foreach (var directory in Directory.GetDirectories(path))
- files.AddRange(GetFiles(directory, pattern));
+ try
+ {
+ files.AddRange(Directory.GetFiles(path, pattern, SearchOption.TopDirectoryOnly));
+ foreach (var directory in Directory.GetDirectories(path))
+ files.AddRange(GetFiles(directory, pattern));
+ }
+ catch
+ {
+ Console.WriteLine(@"Music directory is unable to be read. File access issue?");
+ }
return files;
}
diff --git a/MusicPlayer/MainWindow.xaml b/MusicPlayer/MainWindow.xaml
index 424ab03..eeef448 100644
--- a/MusicPlayer/MainWindow.xaml
+++ b/MusicPlayer/MainWindow.xaml
@@ -1,9 +1,9 @@
+ xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" AllowsTransparency="True"
+ xmlns:local="clr-namespace:Audioquarium" ResizeMode="CanMinimize" Closed="MainWindow_OnClosed"
+ Title="Audioquarium" Height="549" MinHeight="80" MinWidth="185" Width="900">
@@ -97,7 +97,7 @@
-
+
@@ -106,7 +106,7 @@
-
+
-
@@ -362,10 +362,10 @@
-
- Song - Artist
+
@@ -375,12 +375,12 @@
-
+ Style="{StaticResource AzureDataGrid}" VerticalAlignment="Top">
-
+
diff --git a/MusicPlayer/MainWindow.xaml.cs b/MusicPlayer/MainWindow.xaml.cs
index c4606b4..1ad302b 100644
--- a/MusicPlayer/MainWindow.xaml.cs
+++ b/MusicPlayer/MainWindow.xaml.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
@@ -7,6 +8,7 @@
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
+using System.Windows.Forms.VisualStyles;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
@@ -15,6 +17,7 @@
using MahApps.Metro;
using MahApps.Metro.Controls;
using Microsoft.WindowsAPICodePack.Dialogs;
+using Microsoft.WindowsAPICodePack.Shell.Interop;
using MouseKeyboardActivityMonitor;
using MouseKeyboardActivityMonitor.WinApi;
using Application = System.Windows.Application;
@@ -22,6 +25,7 @@
using DataGrid = System.Windows.Controls.DataGrid;
using File = TagLib.File;
using KeyEventArgs = System.Windows.Forms.KeyEventArgs;
+using VerticalAlignment = System.Windows.VerticalAlignment;
namespace Audioquarium
{
@@ -36,16 +40,18 @@ public partial class MainWindow
private bool _dragStarted;
private int _playerSize = 2; // Guppy(0) Minnow(1) Shark(2) Whale(3)
private bool _repeatSong;
- private readonly DispatcherTimer _timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(0.1) };
+ private readonly DispatcherTimer _timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(0.5) };
private Itemsource.Songs _selectedSong;
private bool _shuffleSongs;
private bool _isWindowActive = true;
private string _keydata;
+ private int _albumCount;
+ private int _artistCount;
+ private int _songCount;
public MainWindow()
{
InitializeComponent();
- Cfg.Initial(false);
Load();
_mKeyboardListener = new KeyboardHookListener(new GlobalHooker()) {Enabled = true};
@@ -72,7 +78,7 @@ private void timer_Tick(object sender, EventArgs e)
ScrubTime.Content = TimeSpan.FromSeconds(ScrubBar.Value).ToString(@"mm\:ss") + " - " + _selectedSong.Length;
}
}
- else if (_dragStarted)
+ else
{
ScrubTime.Content = TimeSpan.FromSeconds(ScrubBar.Value).ToString(@"mm\:ss") + " - " + _selectedSong.Length;
}
@@ -123,10 +129,12 @@ private void HookManager_KeyDown(object sender, KeyEventArgs e)
public void Load()
{
- if (Cfg.ConfigFile["Music.Directory1"] != "") // Check if music directory is empty
+ var song = Itemsource.SongLibrary;
+ if (Properties.Settings.Default.MusicDirectory != "") // Check if music directory is empty
{
- Itemsource.LoadSongs(Cfg.ConfigFile["Music.Directory1"]);
+ _songCount = Itemsource.LoadSongs(Properties.Settings.Default.MusicDirectory);
SongGrid.ItemsSource = Itemsource.SongLibrary;
+ SongGrid.Items.Refresh();
NoLoadLabel.Visibility = Visibility.Hidden;
}
else // Empty setting load nothing (saves a load error)
@@ -135,10 +143,19 @@ public void Load()
SongGrid.ItemsSource = null;
}
// Get the color they had
- ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent(Cfg.ConfigFile["Player.Color"]),
+ ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent(Properties.Settings.Default.PlayerColor),
ThemeManager.GetAppTheme("BaseDark"));
- Colors.SelectedValue = Cfg.ConfigFile["Player.Color"]; // Color setting set to color (dictionaries.s)
- Directory1Text.Text = Cfg.ConfigFile["Music.Directory1"]; // Music directory set to music directory (or empty string)
+ Colors.SelectedValue = Properties.Settings.Default.PlayerColor; // Color setting set to color (dictionaries.s)
+ Directory1Text.Text = Properties.Settings.Default.MusicDirectory; // Music directory set to music directory (or empty string)
+
+ var albums = song.GroupBy(x => x.Album).Select(x => x.First()).ToList();
+ var artists = Itemsource.SongLibrary.GroupBy(x => x.Artist).Select(x => x.First()).ToList();
+
+ foreach (var item in albums)
+ _albumCount++;
+ foreach (var item in artists)
+ _artistCount++;
+ Console.WriteLine(_albumCount + " albums from " + _artistCount + " artists");
}
private void SongGrid_OnLeftButtonDown(object sender, MouseButtonEventArgs e)
@@ -197,9 +214,9 @@ private void GetAlbumart()
}
}
- private void FlyoutHandler(Grid sender, string header)
+ private void FlyoutHandler(Grid sender, string header, bool closeFlyout = false)
{
- Flyout.IsOpen = true;
+ Flyout.IsOpen = !closeFlyout;
sender.Visibility = Visibility.Visible;
Flyout.Header = header;
}
@@ -215,7 +232,15 @@ private void ShrinkButton_Click(object sender, RoutedEventArgs e)
Application.Current.MainWindow.Width = 900;
Application.Current.MainWindow.WindowState = WindowState.Normal;
ExpandButton.Visibility = Visibility.Visible;
+ SongGrid.HeadersVisibility = DataGridHeadersVisibility.None;
LeftMainColumn.Width = new GridLength(1, GridUnitType.Star);
+ RightMainColumn.Width = new GridLength(2, GridUnitType.Star);
+ SongGrid.Columns[0].Width = 175;
+ SongGrid.Columns[1].Width = 150;
+ SongGrid.Columns[2].Width = 175;
+ SongGrid.Columns[3].Width = 30;
+ SongGrid.Columns[4].Width = new DataGridLength(1, DataGridLengthUnitType.Auto);
+
PlayerSizeRect.Fill = new VisualBrush
{
Visual = (Visual) FindResource("appbar_shark"),
@@ -227,7 +252,7 @@ private void ShrinkButton_Click(object sender, RoutedEventArgs e)
Application.Current.MainWindow.Height = 80;
Application.Current.MainWindow.Width = 400;
Application.Current.MainWindow.Topmost = true;
- ScrubText.Visibility = Visibility.Hidden;
+ GhostTime.Visibility = Visibility.Hidden;
ScrubPanel.Margin = new Thickness(160, 0, 20, 0);
PlayerSizeRect.Fill = new VisualBrush
{
@@ -241,6 +266,7 @@ private void ShrinkButton_Click(object sender, RoutedEventArgs e)
Application.Current.MainWindow.Width = 190;
ShrinkButton.Visibility = Visibility.Hidden;
ScrubPanel.Visibility = Visibility.Hidden;
+ ScrubText.Visibility = Visibility.Hidden;
PreviousButton.Margin = new Thickness(42, 18, 0, 0);
PlayerSizeRect.Fill = new VisualBrush
{
@@ -259,7 +285,15 @@ private void ExpandButton_Click(object sender, RoutedEventArgs e)
{
Application.Current.MainWindow.WindowState = WindowState.Maximized;
ExpandButton.Visibility = Visibility.Hidden;
- LeftMainColumn.Width = new GridLength(2, GridUnitType.Star);
+ LeftMainColumn.Width = new GridLength(1.5, GridUnitType.Star);
+ RightMainColumn.Width = new GridLength(2, GridUnitType.Star);
+ SongGrid.HeadersVisibility = DataGridHeadersVisibility.All;
+
+ for (int i = 0; i < SongGrid.Columns.Count - 1; i++)
+ {
+ SongGrid.Columns[i].Width = new DataGridLength(1, DataGridLengthUnitType.Star);
+ }
+
PlayerSizeRect.Fill = new VisualBrush
{
Visual = (Visual) FindResource("appbar_whale"),
@@ -285,6 +319,7 @@ private void ExpandButton_Click(object sender, RoutedEventArgs e)
Application.Current.MainWindow.Width = 400;
ShrinkButton.Visibility = Visibility.Visible;
ScrubPanel.Visibility = Visibility.Visible;
+ ScrubText.Visibility = Visibility.Visible;
PreviousButton.Margin = new Thickness(30, 18, 0, 0);
PlayerSizeRect.Fill = new VisualBrush
{
@@ -312,7 +347,10 @@ private void Directory1_OnTextChanged(object sender, TextChangedEventArgs e)
private void PlayerSettings_OnClick(object sender, RoutedEventArgs e)
{
- FlyoutHandler(SettingsGrid, "Settings");
+ if(Flyout.IsOpen)
+ FlyoutHandler(SettingsGrid, "Settings", true);
+ else
+ FlyoutHandler(SettingsGrid, "Settings");
}
private void btnClear1_OnClick(object sender, RoutedEventArgs e)
@@ -328,8 +366,8 @@ private void btnClear1_OnClick(object sender, RoutedEventArgs e)
NowPlayingAlbum.Text = "Album";
NowPlayingTrack.Text = "Track";
NowPlayingSong.Content = "Song - Artist";
- Cfg.SetVariable("Music.Directory1", "", ref Cfg.ConfigFile);
- Cfg.SaveConfigFile("music_prefs.cfg", Cfg.ConfigFile);
+ Properties.Settings.Default.MusicDirectory = "";
+ Properties.Settings.Default.Save();
Load();
}
@@ -356,8 +394,8 @@ private void Color_OnSelectionChanged(object sender, SelectionChangedEventArgs e
ArtistSortingLabel.Foreground = (Brush) FindResource("AccentColorBrush");
}
- Cfg.ConfigFile["Player.Color"] = Colors.SelectedValue.ToString();
- Cfg.SaveConfigFile("music_prefs.cfg", Cfg.ConfigFile);
+ Properties.Settings.Default.PlayerColor = Colors.SelectedValue.ToString();
+ Properties.Settings.Default.Save();
}
#endregion
@@ -392,9 +430,9 @@ private void btnChange_OnClick(object sender, RoutedEventArgs e)
if (result == CommonFileDialogResult.Ok)
{
- Cfg.SetVariable("Music." + objname, Convert.ToString(dialog.FileName), ref Cfg.ConfigFile);
- Cfg.SaveConfigFile("music_prefs.cfg", Cfg.ConfigFile);
- Directory1Text.Text = Cfg.ConfigFile["Music.Directory1"];
+ Properties.Settings.Default.MusicDirectory = Convert.ToString(dialog.FileName);
+ Properties.Settings.Default.Save();
+ Directory1Text.Text = Properties.Settings.Default.MusicDirectory;
Load();
}
}
@@ -439,8 +477,8 @@ private void AlbumSorting_OnClick(object sender, RoutedEventArgs e)
{
var watch = new Stopwatch();
watch.Start();
- var albumCount = GrabAlbums();
+ GrabAlbums();
Sort("Album", SongGrid);
_currentView = 1; // Set our view to album grid
@@ -462,7 +500,7 @@ private void AlbumSorting_OnClick(object sender, RoutedEventArgs e)
SongGrid.Visibility = Visibility.Hidden;
ScrollViewer.Visibility = Visibility.Visible;
watch.Stop();
- Console.WriteLine(albumCount + @" albums and art loaded in " + watch.ElapsedMilliseconds + @" milliseconds");
+ Console.WriteLine(_albumCount + @" albums and art loaded in " + watch.ElapsedMilliseconds + @" milliseconds");
}
}
@@ -472,9 +510,10 @@ private void ArtistSorting_OnClick(object sender, RoutedEventArgs e)
{
var watch = new Stopwatch();
watch.Start();
+
+ GrabArtists();
_currentView = 2; // Set our view to artist grid
Sort("Artist", SongGrid);
- var artistcount = GrabArtists();
//albumSorting.Background = Brushes.LightGray;
ArtistSortingIcon.Fill = (Brush) FindResource("AccentColorBrush");
@@ -494,7 +533,7 @@ private void ArtistSorting_OnClick(object sender, RoutedEventArgs e)
SongGrid.Visibility = Visibility.Hidden;
ScrollViewer.Visibility = Visibility.Visible;
watch.Stop();
- Console.WriteLine(artistcount + @" artists loaded in " + watch.ElapsedMilliseconds + @" milliseconds");
+ Console.WriteLine(_artistCount + @" artists loaded in " + watch.ElapsedMilliseconds + @" milliseconds");
}
}
@@ -509,14 +548,12 @@ private void Sort(string col, DataGrid grid)
}
}
- private int GrabAlbums()
+ private void GrabAlbums()
{
WrapPanel.Children.Clear();
- var song = Itemsource.SongLibrary;
- var noduplicates = song.GroupBy(x => x.Album).Select(x => x.First()).ToList();
- var albumCount = 0;
+ var albums = Itemsource.SongLibrary.GroupBy(x => x.Album).Select(x => x.First()).ToList();
- foreach (var item in noduplicates)
+ foreach (var item in albums)
{
var tagFile = File.Create(item.FileName);
@@ -553,19 +590,17 @@ private int GrabAlbums()
newTile.Foreground = Brushes.White;
newTile.Background = (Brush) FindResource("AccentColorBrush2");
}
- albumCount++;
WrapPanel.Children.Add(newTile);
}
- return albumCount;
}
- private int GrabArtists()
+ private void GrabArtists()
{
var isGray = false;
WrapPanel.Children.Clear();
- var songs = Itemsource.SongLibrary.GroupBy(x => x.Artist).Select(x => x.First()).ToList();
- var artistCount = 0;
- foreach (var song in songs)
+ var artists = Itemsource.SongLibrary.GroupBy(x => x.Artist).Select(x => x.First()).ToList();
+
+ foreach (var song in artists)
{
var newTile = new Tile
{
@@ -591,10 +626,8 @@ private int GrabArtists()
newTile.Background = (Brush) FindResource("AccentColorBrush3");
isGray = false;
}
- artistCount++;
WrapPanel.Children.Add(newTile);
}
- return artistCount;
}
private void Album_OnClick(object sender, RoutedEventArgs e)
@@ -822,6 +855,7 @@ private void Mute()
MuteButton.OpacityMask = new VisualBrush {Visual = (Visual) FindResource("appbar_sound_2")};
MuteButton.Width = 20;
Mplayer.IsMuted = false;
+ VolumeSlider.IsEnabled = true;
_audioMuted = false;
}
else
@@ -829,6 +863,7 @@ private void Mute()
MuteButton.OpacityMask = new VisualBrush {Visual = (Visual) FindResource("appbar_sound_0")};
MuteButton.Width = 10;
Mplayer.IsMuted = true;
+ VolumeSlider.IsEnabled = false;
_audioMuted = true;
}
}
@@ -863,15 +898,22 @@ private void Repeat_OnClick(object sender, MouseButtonEventArgs e)
private void scrubBar_OnValueChanged(object sender, MouseButtonEventArgs e)
{
- if (Mplayer.HasAudio)
+ if (Mplayer.HasAudio && _dragStarted)
{
- _dragStarted = true;
Mplayer.Position = TimeSpan.FromSeconds(ScrubBar.Value);
Mplayer.IsMuted = false;
}
_dragStarted = false;
}
+ private void ScrubBar_OnMouseDown(object sender, MouseButtonEventArgs e)
+ {
+ var track = ScrubBar.Template.FindName("PART_Track", ScrubBar) as Track;
+ var timeSpan = TimeSpan.FromSeconds(track.ValueFromPoint(e.GetPosition(ScrubBar)));
+ Mplayer.Position = timeSpan;
+ }
+
+
private void Slider_DragStarted(object sender, DragStartedEventArgs e)
{
Mplayer.IsMuted = true;
@@ -898,16 +940,17 @@ private void VolumeSlider_OnValueChanged(object sender, RoutedPropertyChangedEve
}
}
- #endregion
-
private void ScrubBar_OnMouseMove(object sender, MouseEventArgs e)
{
- Track track = ScrubBar.Template.FindName("PART_Track", ScrubBar) as Track;
-
- if (track != null)
+ if (_playerSize > 1)
{
- GhostTime.Visibility = Visibility.Visible;
- GhostTime.Content = TimeSpan.FromSeconds(track.ValueFromPoint(e.GetPosition(ScrubBar))).ToString(@"mm\:ss");
+ Track track = ScrubBar.Template.FindName("PART_Track", ScrubBar) as Track;
+
+ if (track != null)
+ {
+ GhostTime.Visibility = Visibility.Visible;
+ GhostTime.Content = TimeSpan.FromSeconds(track.ValueFromPoint(e.GetPosition(ScrubBar))).ToString(@"mm\:ss");
+ }
}
}
@@ -915,5 +958,20 @@ private void ScrubBar_OnMouseLeave(object sender, MouseEventArgs e)
{
GhostTime.Visibility = Visibility.Hidden;
}
+
+ private void SongGrid_OnPreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
+ {
+ // Just here to avoid user scrolling datagrid with keyboard
+ e.Handled = true;
+ }
+
+ private void MainWindow_OnClosed(object sender, EventArgs e)
+ {
+ Properties.Settings.Default.Save();
+ }
+
+ #endregion
+
+
}
}
\ No newline at end of file
diff --git a/MusicPlayer/Properties/AssemblyInfo.cs b/MusicPlayer/Properties/AssemblyInfo.cs
index aa2fa6f..f7ff96c 100644
--- a/MusicPlayer/Properties/AssemblyInfo.cs
+++ b/MusicPlayer/Properties/AssemblyInfo.cs
@@ -52,5 +52,5 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.0.3.1")]
-[assembly: AssemblyFileVersion("0.0.3.1")]
\ No newline at end of file
+[assembly: AssemblyVersion("0.0.3.2")]
+[assembly: AssemblyFileVersion("0.0.3.2")]
\ No newline at end of file
diff --git a/MusicPlayer/Properties/Settings.Designer.cs b/MusicPlayer/Properties/Settings.Designer.cs
index 937329c..0ecbbc0 100644
--- a/MusicPlayer/Properties/Settings.Designer.cs
+++ b/MusicPlayer/Properties/Settings.Designer.cs
@@ -22,5 +22,29 @@ public static Settings Default {
return defaultInstance;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("")]
+ public string MusicDirectory {
+ get {
+ return ((string)(this["MusicDirectory"]));
+ }
+ set {
+ this["MusicDirectory"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("blue")]
+ public string PlayerColor {
+ get {
+ return ((string)(this["PlayerColor"]));
+ }
+ set {
+ this["PlayerColor"] = value;
+ }
+ }
}
}
diff --git a/MusicPlayer/Properties/Settings.settings b/MusicPlayer/Properties/Settings.settings
index c14891b..38ea433 100644
--- a/MusicPlayer/Properties/Settings.settings
+++ b/MusicPlayer/Properties/Settings.settings
@@ -1,8 +1,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
+
+ blue
+
+
\ No newline at end of file
diff --git a/MusicPlayer/Resources/Icons.xaml b/MusicPlayer/Resources/Icons.xaml
index 8756a06..bc91481 100644
--- a/MusicPlayer/Resources/Icons.xaml
+++ b/MusicPlayer/Resources/Icons.xaml
@@ -58,8 +58,8 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
-