Skip to content

Commit

Permalink
Big bug fix update
Browse files Browse the repository at this point in the history
* Scrubbing to a mouse click position is now less janky
* Whale mode is a bit easier to navigate
* No more cfg/ini! All settings are saved in your user properties
* Other misc bugs
  • Loading branch information
FishPhd committed Oct 21, 2016
1 parent 7bbf333 commit 5cde88f
Show file tree
Hide file tree
Showing 10 changed files with 201 additions and 211 deletions.
15 changes: 15 additions & 0 deletions MusicPlayer/App.config
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>

<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Audioquarium.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
Expand All @@ -12,4 +17,14 @@
</dependentAssembly>
</assemblyBinding>
</runtime>
<userSettings>
<Audioquarium.Properties.Settings>
<setting name="MusicDirectory" serializeAs="String">
<value />
</setting>
<setting name="PlayerColor" serializeAs="String">
<value>blue</value>
</setting>
</Audioquarium.Properties.Settings>
</userSettings>
</configuration>
2 changes: 0 additions & 2 deletions MusicPlayer/Audioquarium.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
Expand Down Expand Up @@ -95,7 +94,6 @@
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Cfg.cs" />
<Compile Include="Dictionaries.cs" />
<Compile Include="Itemsource.cs" />
<Compile Include="MainWindow.xaml.cs">
Expand Down
80 changes: 0 additions & 80 deletions MusicPlayer/Cfg.cs

This file was deleted.

89 changes: 30 additions & 59 deletions MusicPlayer/Itemsource.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,87 +2,50 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using File = TagLib.File;

namespace Audioquarium
{
internal class Itemsource
{
public static readonly List<Songs> SongLibrary = new List<Songs>();
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<string>();

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
Expand All @@ -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<string> GetFiles(string path, string pattern)
{
var files = new List<string>();

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;
}
Expand Down
28 changes: 14 additions & 14 deletions MusicPlayer/MainWindow.xaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<controls:MetroWindow x:Class="Audioquarium.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:local="clr-namespace:Audioquarium" ResizeMode="CanMinimize"
Title="Audioquarium" Height="549" MinHeight="80" MinWidth="185" Width="900">
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">
<controls:MetroWindow.Resources>
<ObjectDataProvider x:Key="Color" ObjectType="{x:Type local:Dictionaries}" MethodName="GetColor" />
</controls:MetroWindow.Resources>
Expand Down Expand Up @@ -97,7 +97,7 @@
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="LeftMainColumn" Width="1*" />
<ColumnDefinition Width="2*" />
<ColumnDefinition x:Name="RightMainColumn" Width="2*" />
</Grid.ColumnDefinitions>

<Grid x:Name="AlbumGrid">
Expand All @@ -106,7 +106,7 @@
<RowDefinition Height="298*" />
</Grid.RowDefinitions>

<Grid Grid.Row="0" Height="Auto">
<Grid Grid.Row="0" x:Name="SortGrid" Height="Auto">
<StackPanel Orientation="Vertical">
<Button x:Name="AlbumSorting" Foreground="LightGray" Height="57"
controls:ButtonHelper.PreserveTextCase="True" HorizontalContentAlignment="Left"
Expand Down Expand Up @@ -302,7 +302,7 @@
</Rectangle>
</StackPanel>
<Grid Width="Auto" Margin="130,0,0,12" VerticalAlignment="Bottom">
<Slider x:Name="VolumeSlider" IsMoveToPointEnabled="True"
<Slider x:Name="VolumeSlider" Focusable="False" IsMoveToPointEnabled="True"
ValueChanged="VolumeSlider_OnValueChanged" Style="{DynamicResource FlatSlider}" Value="0.7"
Margin="0,0,10,0" Width="Auto" Foreground="#CCFFFFFF" Maximum="1" LargeChange="0.1"
TickFrequency="0.1" />
Expand Down Expand Up @@ -362,10 +362,10 @@
</Rectangle>
</StackPanel>
<StackPanel x:Name="ScrubPanel" Margin="175,0,20,0" Width="Auto" Orientation="Vertical">
<Label x:Name="NowPlayingSong" Margin="0,0,0,0">Song - Artist</Label>
<Slider x:Name="ScrubBar" IsMoveToPointEnabled="True" PreviewMouseUp="scrubBar_OnValueChanged"
Thumb.DragStarted="Slider_DragStarted" Style="{DynamicResource FlatSlider}" MouseMove="ScrubBar_OnMouseMove"
Foreground="{DynamicResource AccentColorBrush}" Width="Auto" Height="10.3" MouseLeave="ScrubBar_OnMouseLeave"
<Label x:Name="NowPlayingSong" Margin="0,0,79,0">Song - Artist</Label>
<Slider x:Name="ScrubBar" IsMoveToPointEnabled="False" PreviewMouseDown="ScrubBar_OnMouseDown" PreviewMouseUp="scrubBar_OnValueChanged"
Thumb.DragStarted="Slider_DragStarted" Style="{DynamicResource FlatSlider}" MouseMove="ScrubBar_OnMouseMove" Focusable="False"
Foreground="{DynamicResource AccentColorBrush}" Width="Auto" Height="10.3" MouseLeave="ScrubBar_OnMouseLeave"
TickFrequency="0.5" />
</StackPanel>
<StackPanel x:Name="ScrubText" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,20,25">
Expand All @@ -375,12 +375,12 @@
</Grid>
<Grid Grid.Column="1" Grid.Row="0">
<Label x:Name="NoLoadLabel" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="{DynamicResource AccentColorBrush}" FontSize="16">Open settings to load songs</Label>
<DataGrid x:Name="SongGrid" CanUserResizeColumns="True" CanUserReorderColumns="False"
CanUserResizeRows="False" MouseLeftButtonDown="SongGrid_OnLeftButtonDown"
<DataGrid HorizontalScrollBarVisibility="Disabled" x:Name="SongGrid" CanUserResizeColumns="False" CanUserReorderColumns="False" Focusable="False"
CanUserResizeRows="False" MouseLeftButtonDown="SongGrid_OnLeftButtonDown" PreviewKeyDown="SongGrid_OnPreviewKeyDown"
IsReadOnly="True" AutoGenerateColumns="False" HeadersVisibility="None"
Style="{StaticResource AzureDataGrid}" VerticalAlignment="Top">
Style="{StaticResource AzureDataGrid}" VerticalAlignment="Top">
<DataGrid.Columns>
<DataGridTextColumn MinWidth="120" Width="175" Header="Song" Binding="{Binding Name}" />
<DataGridTextColumn MinWidth="120" Width="175" Header="Song" Binding="{Binding Name}" />
<DataGridTextColumn MinWidth="100" Width="150" Header="Artist" Binding="{Binding Artist}" />
<DataGridTextColumn Width="175" Header="Album" Binding="{Binding Album}" />
<DataGridTextColumn Width="30" Header="Track" Binding="{Binding Track}" />
Expand Down
Loading

0 comments on commit 5cde88f

Please sign in to comment.