diff --git a/Mear/Mear.Android/Mear.Android.csproj b/Mear/Mear.Android/Mear.Android.csproj
index 50f594f..256ecb1 100644
--- a/Mear/Mear.Android/Mear.Android.csproj
+++ b/Mear/Mear.Android/Mear.Android.csproj
@@ -56,7 +56,7 @@
- 0.6.1
+ 0.6.7
106.6.9
@@ -64,7 +64,7 @@
1.5.231
-
+
diff --git a/Mear/Mear.Android/Resources/values/colors.xml b/Mear/Mear.Android/Resources/values/colors.xml
index d9f6e0b..4471e04 100644
--- a/Mear/Mear.Android/Resources/values/colors.xml
+++ b/Mear/Mear.Android/Resources/values/colors.xml
@@ -1,7 +1,7 @@
- #FFFFFF
- #3F51B5
- #303F9F
- #FF4081
+ #000000
+ #555555
+ #000000
+ #bbaa11
diff --git a/Mear/Mear.iOS/Mear.iOS.csproj b/Mear/Mear.iOS/Mear.iOS.csproj
index 28002df..050047e 100644
--- a/Mear/Mear.iOS/Mear.iOS.csproj
+++ b/Mear/Mear.iOS/Mear.iOS.csproj
@@ -130,7 +130,7 @@
1.5.231
-
+
diff --git a/Mear/Mear/App.xaml b/Mear/Mear/App.xaml
index 9b7cb1b..61c53ec 100644
--- a/Mear/Mear/App.xaml
+++ b/Mear/Mear/App.xaml
@@ -3,6 +3,52 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Mear.App">
+ #000010
+ #ffffff
+ #000000
+
+ #ffffff
+ #000000
+ #333333
+
+ #660066
+ #ffccff
+ #ffe6ff
+
+ #ffffee
+ #aaaaaa
+
+ #ffffee
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Mear/Mear/App.xaml.cs b/Mear/Mear/App.xaml.cs
index 46ee60b..44e29fa 100644
--- a/Mear/Mear/App.xaml.cs
+++ b/Mear/Mear/App.xaml.cs
@@ -13,7 +13,8 @@ namespace Mear
InitializeComponent();
MainPage = new Landing();
- //MainPage = new MusicLibrary();
+ MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);
+ MainPage.SetValue(NavigationPage.BarTextColorProperty, Color.White);
}
protected override void OnStart()
diff --git a/Mear/Mear/Mear.csproj b/Mear/Mear/Mear.csproj
index 29bbc79..aa062d5 100644
--- a/Mear/Mear/Mear.csproj
+++ b/Mear/Mear/Mear.csproj
@@ -12,11 +12,10 @@
-
+
-
-
+
diff --git a/Mear/Mear/Models/Settings.cs b/Mear/Mear/Models/Settings.cs
new file mode 100644
index 0000000..b9c046c
--- /dev/null
+++ b/Mear/Mear/Models/Settings.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+using System.Text;
+
+using SQLite;
+
+namespace Mear.Models
+{
+ [DataContract]
+ [Table("Settings")]
+ public class Settings
+ {
+ [PrimaryKey, Column("Id"), AutoIncrement]
+ public int Id { get; set; }
+ public bool DarkTheme { get; set; } = true;
+ }
+}
diff --git a/Mear/Mear/Playback/MearPlayer.cs b/Mear/Mear/Playback/MearPlayer.cs
index f719d2e..be59961 100644
--- a/Mear/Mear/Playback/MearPlayer.cs
+++ b/Mear/Mear/Playback/MearPlayer.cs
@@ -15,6 +15,7 @@ using Mear.Models;
using Mear.Models.Authentication;
using Mear.Models.PlayerControls;
using Mear.Repositories.Database;
+using Mear.Repositories.Remote;
using Mear.Utilities;
namespace Mear.Playback
@@ -87,10 +88,10 @@ namespace Mear.Playback
InitializeRepeatMode();
break;
case PlayControls.PAUSE:
- await CrossMediaManager.Current.Pause();
+ PauseSong();
break;
case PlayControls.RESUME:
- await CrossMediaManager.Current.Play();
+ ResumeSong();
break;
case PlayControls.STREAM:
song = StreamSong(song);
@@ -148,6 +149,13 @@ namespace Mear.Playback
return null;
}
+ public static async Task DownloadSongToFS()
+ {
+ var songRepo = new RemoteSongRepository();
+ songRepo.DownloadSong(_song);
+
+ _song.Downloaded = true;
+ }
public static async Task PlaySong(Song song)
{
try
@@ -161,6 +169,17 @@ namespace Mear.Playback
var msg = ex.Message;
}
}
+ public static async Task RemoveSongFromFS()
+ {
+ var dbSongRepo = new DBSongRepository();
+ var plyCount = new DBPlayCountRepository();
+ dbSongRepo.DeleteSong(_song);
+ plyCount.DeletePlayCount(_song);
+
+ File.Delete(_song.SongPath);
+
+ _song.Downloaded = false;
+ }
public static async Task SeekTo(double songProress)
{
double newPosition = (songProress / 100) * ((double)_song.Duration);
@@ -184,6 +203,21 @@ namespace Mear.Playback
return string.Empty;
}
+ public static string RetrieveShuffleString()
+ {
+ var controlRepo = new DBMusicControlsRepository();
+ var shuffleOn = controlRepo.IsShuffleOn();
+ try
+ {
+ return shuffleOn ? "ShfOn" : "ShfOff";
+ }
+ catch (Exception ex)
+ {
+ var msg = ex.Message;
+ }
+
+ return string.Empty;
+ }
public static bool IsPlaying()
{
@@ -258,6 +292,10 @@ namespace Mear.Playback
CrossMediaManager.Current.RepeatMode = mode;
}
+ private static async Task PauseSong()
+ {
+ await CrossMediaManager.Current.Pause();
+ }
private static async Task PlaySong(string songPath)
{
await CrossMediaManager.Current.Play(songPath);
@@ -268,6 +306,10 @@ namespace Mear.Playback
_initialized = true;
}
}
+ private static async Task ResumeSong()
+ {
+ await CrossMediaManager.Current.Play();
+ }
private static void ToggleRepeat()
{
diff --git a/Mear/Mear/Repositories/Database/DBRepository.cs b/Mear/Mear/Repositories/Database/DBRepository.cs
index 8f48343..401b15e 100644
--- a/Mear/Mear/Repositories/Database/DBRepository.cs
+++ b/Mear/Mear/Repositories/Database/DBRepository.cs
@@ -14,6 +14,7 @@ namespace Mear.Repositories.Database
#region Fields
protected SQLiteConnection _Db;
protected string _dbPath;
+ protected string _tableName;
#endregion
diff --git a/Mear/Mear/Repositories/Database/DBSettingsRepository.cs b/Mear/Mear/Repositories/Database/DBSettingsRepository.cs
new file mode 100644
index 0000000..ace75a4
--- /dev/null
+++ b/Mear/Mear/Repositories/Database/DBSettingsRepository.cs
@@ -0,0 +1,110 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+using Mear.Models;
+
+namespace Mear.Repositories.Database
+{
+ public class DBSettingsRepository : DBRepository
+ {
+ #region Fields
+ #endregion
+
+
+ #region Properties
+ #endregion
+
+
+ #region Constructors
+ public DBSettingsRepository()
+ {
+ _tableName = "Settings";
+ Initialize();
+ InitializeTable();
+ }
+ #endregion
+
+
+ #region Methods
+ public bool IsDarkThemeOn()
+ {
+ try
+ {
+ if (DoesTableExist(_tableName))
+ {
+ bool? darkTheme = RetrieveSettings().DarkTheme;
+
+ if (darkTheme != null)
+ {
+ return darkTheme.Value;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ var msg = ex.Message;
+ }
+
+ return true;
+ }
+
+ public void UpdateDarkTheme()
+ {
+ try
+ {
+ if (DoesTableExist(_tableName))
+ {
+ var settings = RetrieveSettings();
+ settings.DarkTheme = !settings.DarkTheme;
+
+ _Db.Update(settings);
+ }
+ }
+ catch (Exception ex)
+ {
+ var msg = ex.Message;
+ }
+ }
+
+ private Settings RetrieveSettings()
+ {
+ try
+ {
+ var settings = _Db.Table().First();
+
+ return settings;
+ }
+ catch (Exception ex)
+ {
+ var msg = ex.Message;
+ }
+
+ return null;
+ }
+
+ private void InitializeTable()
+ {
+ try
+ {
+ if (!DoesTableExist(_tableName))
+ {
+ _Db.CreateTable();
+ }
+
+ var settings = RetrieveSettings();
+
+ if (settings == null)
+ {
+ var initSettings = new Settings();
+ _Db.Insert(initSettings);
+ }
+ }
+ catch (Exception ex)
+ {
+ var msg = ex.Message;
+ }
+ }
+ #endregion
+ }
+}
diff --git a/Mear/Mear/Utilities/SongMetadataRetriever.cs b/Mear/Mear/Utilities/SongMetadataRetriever.cs
index b437330..45f912a 100644
--- a/Mear/Mear/Utilities/SongMetadataRetriever.cs
+++ b/Mear/Mear/Utilities/SongMetadataRetriever.cs
@@ -3,8 +3,6 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
-using TagLib;
-
using Mear.Models;
using IOFile = System.IO.File;
diff --git a/Mear/Mear/ViewModels/AlbumViewModel.cs b/Mear/Mear/ViewModels/AlbumViewModel.cs
index f1926b9..61bfc66 100644
--- a/Mear/Mear/ViewModels/AlbumViewModel.cs
+++ b/Mear/Mear/ViewModels/AlbumViewModel.cs
@@ -63,6 +63,8 @@ namespace Mear.ViewModels
{
var msg = ex.Message;
}
+
+ IsRefreshing = false;
}
#endregion
}
diff --git a/Mear/Mear/ViewModels/ArtistViewModel.cs b/Mear/Mear/ViewModels/ArtistViewModel.cs
index 8d0c656..b1507c4 100644
--- a/Mear/Mear/ViewModels/ArtistViewModel.cs
+++ b/Mear/Mear/ViewModels/ArtistViewModel.cs
@@ -63,6 +63,8 @@ namespace Mear.ViewModels
{
var msg = ex.Message;
}
+
+ IsRefreshing = false;
}
#endregion
}
diff --git a/Mear/Mear/ViewModels/SettingsViewModel.cs b/Mear/Mear/ViewModels/SettingsViewModel.cs
index bc9ba7e..d42ddb5 100644
--- a/Mear/Mear/ViewModels/SettingsViewModel.cs
+++ b/Mear/Mear/ViewModels/SettingsViewModel.cs
@@ -5,6 +5,8 @@ using System.Text;
using Xamarin.Forms;
+using Mear.Repositories.Database;
+
namespace Mear.ViewModels
{
public class SettingsViewModel : BaseViewModel
@@ -36,10 +38,13 @@ namespace Mear.ViewModels
#region Methods
private SwitchItem RetrieveColorSchemeSwitch()
{
+ var settingsRepo = new DBSettingsRepository();
+ var darkTheme = settingsRepo.IsDarkThemeOn();
+
var colorScheme = new SwitchItem
{
Title = "Dark Theme",
- IsOn = true
+ IsOn = darkTheme
};
return colorScheme;
diff --git a/Mear/Mear/Views/AlbumView.xaml b/Mear/Mear/Views/AlbumView.xaml
index a0187b3..07e3528 100644
--- a/Mear/Mear/Views/AlbumView.xaml
+++ b/Mear/Mear/Views/AlbumView.xaml
@@ -19,6 +19,7 @@
IsPullToRefreshEnabled="True"
RowHeight="80"
RefreshCommand="{Binding RefreshAlbums}"
+ IsRefreshing="{Binding IsRefreshing}"
ItemSelected="AlbumListView_ItemSelected" >
diff --git a/Mear/Mear/Views/AlbumView.xaml.cs b/Mear/Mear/Views/AlbumView.xaml.cs
index 5b55712..a994271 100644
--- a/Mear/Mear/Views/AlbumView.xaml.cs
+++ b/Mear/Mear/Views/AlbumView.xaml.cs
@@ -32,6 +32,7 @@ namespace Mear.Views
}
#endregion
+
#region Methods
#region Events
private void AlbumListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
diff --git a/Mear/Mear/Views/ArtistView.xaml b/Mear/Mear/Views/ArtistView.xaml
index 39f8cac..c48ca69 100644
--- a/Mear/Mear/Views/ArtistView.xaml
+++ b/Mear/Mear/Views/ArtistView.xaml
@@ -20,6 +20,7 @@
IsPullToRefreshEnabled="True"
RowHeight="80"
RefreshCommand="{Binding RefreshArtists}"
+ IsRefreshing="{Binding IsRefreshing}"
ItemSelected="ArtistListView_ItemSelected" >
diff --git a/Mear/Mear/Views/MearPlayerView.xaml.cs b/Mear/Mear/Views/MearPlayerView.xaml.cs
index e5c38d1..5821a0f 100644
--- a/Mear/Mear/Views/MearPlayerView.xaml.cs
+++ b/Mear/Mear/Views/MearPlayerView.xaml.cs
@@ -100,14 +100,16 @@ namespace Mear.Views
var dur = _song.Duration;
var endTime = songCnvrt.ConvertToSongTime(dur.Value);
- var controlRepo = new DBMusicControlsRepository();
- var shuffleOn = controlRepo.IsShuffleOn();
-
- Shuffle.Text = (shuffleOn) ? "ShfOn" : "ShfOff";
+ Shuffle.Text = MearPlayer.RetrieveShuffleString();
Repeat.Text = MearPlayer.RetrieveRepeatString();
EndTime.Text = endTime;
}
+ private void RemoveSyncToolbar()
+ {
+ var act = ToolbarItems.Where(tl => tl.Priority == 1).First();
+ ToolbarItems.Remove(act);
+ }
#region Background
private async Task BackgroundSongElasping()
@@ -212,10 +214,8 @@ namespace Mear.Views
private void Shuffle_Clicked(object sender, EventArgs e)
{
var musicCtrl = new DBMusicControlsRepository();
- var control = musicCtrl.IsShuffleOn();
- Shuffle.Text = (!control) ? "ShfOn" : "ShfOff";
-
musicCtrl.UpdateShuffle();
+ Shuffle.Text = MearPlayer.RetrieveShuffleString();
}
@@ -227,24 +227,20 @@ namespace Mear.Views
private void Download_Clicked(object sender, EventArgs e)
{
- var act = ToolbarItems.Where(tl => tl.Priority == 1).First();
- ToolbarItems.Remove(act);
- var songRepo = new RemoteSongRepository();
- songRepo.DownloadSong(_song);
+ RemoveSyncToolbar();
+ MearPlayer.DownloadSongToFS();
+
ToolbarItems.Add(RemoveOption());
+
+ _song.Downloaded = true;
}
private async void Remove_Clicked(object sender, EventArgs e)
{
- var act = ToolbarItems.Where(tl => tl.Priority == 1).First();
+ RemoveSyncToolbar();
+ MearPlayer.RemoveSongFromFS();
- ToolbarItems.Remove(act);
- var dbSongRepo = new DBSongRepository();
- var plyCount = new DBPlayCountRepository();
- dbSongRepo.DeleteSong(_song);
- plyCount.DeletePlayCount(_song);
_song.Downloaded = false;
- File.Delete(_song.SongPath);
ToolbarItems.Add(DownloadOption());
}
diff --git a/Mear/Mear/Views/SettingsPage.xaml b/Mear/Mear/Views/SettingsPage.xaml
index 0046896..d4b8911 100644
--- a/Mear/Mear/Views/SettingsPage.xaml
+++ b/Mear/Mear/Views/SettingsPage.xaml
@@ -31,8 +31,7 @@
d:Text="{Binding .}"
LineBreakMode="NoWrap"
FontSize="14" />
-
diff --git a/Mear/Mear/Views/SettingsPage.xaml.cs b/Mear/Mear/Views/SettingsPage.xaml.cs
index f1c69a5..286afce 100644
--- a/Mear/Mear/Views/SettingsPage.xaml.cs
+++ b/Mear/Mear/Views/SettingsPage.xaml.cs
@@ -33,6 +33,9 @@ namespace Mear.Views
#region Events
private void Switch_Toggled(object sender, ToggledEventArgs e)
{
+ var val = e;
+ var valOne = sender;
+ var yp = "";
}
#endregion
#endregion