Implementing the Shuffle and Repeat functionality. #23, #34, #35.

This commit is contained in:
amazing-username
2019-06-06 17:37:25 -07:00
parent d1d3894732
commit 09c3cffde0
5 changed files with 170 additions and 77 deletions
+5 -2
View File
@@ -18,7 +18,8 @@ namespace Mear.Playback
{ {
public class MearPlayer public class MearPlayer
{ {
#region Fields #region Fields
private static Song _song;
#endregion #endregion
@@ -100,7 +101,9 @@ namespace Mear.Playback
return StreamSong(song); return StreamSong(song);
break; break;
case PlayControls.REPEAT: case PlayControls.REPEAT:
// TODO: Implement repeat // TODO: Not fully implemented
CrossMediaManager.Current.ToggleRepeat();
var i = CrossMediaManager.Current.RepeatMode;
break; break;
case PlayControls.SHUFFLE: case PlayControls.SHUFFLE:
// TODO: Implement shuffling // TODO: Implement shuffling
@@ -1,73 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using Mear.Models;
namespace Mear.Repositories.Database
{
// TODO: Implement the database functionality #35
public class DBMusicControls : DBRepository
{
#region Fields
#endregion
#region Properties
#endregion
#region Constructors
public DBMusicControls()
{
Initialize();
}
#endregion
#region Methods
public bool IsShuffleOn()
{
try
{
if (DoesTableExist("MusicControls"))
{
bool? shuffle = _Db.Table<MusicControls>().First().ShuffleOn;
if (shuffle != null)
{
return shuffle.Value; ;
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
}
return false;
}
public bool IsRepeatOn()
{
try
{
if (DoesTableExist("MusicControls"))
{
bool? repeat = _Db.Table<MusicControls>().First().RepeatOn;
if (repeat != null)
{
return repeat.Value;
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
}
return false;
}
#endregion
}
}
@@ -0,0 +1,146 @@
using System;
using System.Collections.Generic;
using System.Text;
using Mear.Models;
namespace Mear.Repositories.Database
{
// TODO: Implement the database functionality #35
public class DBMusicControlsRepository : DBRepository
{
#region Fields
#endregion
#region Properties
#endregion
#region Constructors
public DBMusicControlsRepository()
{
Initialize();
InitializeTable();
}
#endregion
#region Methods
public bool IsShuffleOn()
{
try
{
if (DoesTableExist("MusicControls"))
{
bool? shuffle = _Db.Table<MusicControls>().First().ShuffleOn;
if (shuffle != null)
{
return shuffle.Value; ;
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
}
return false;
}
public bool IsRepeatOn()
{
try
{
if (DoesTableExist("MusicControls"))
{
bool? repeat = _Db.Table<MusicControls>().First().RepeatOn;
if (repeat != null)
{
return repeat.Value;
}
}
}
catch (Exception ex)
{
var msg = ex.Message;
}
return false;
}
public void UpdateRepeat()
{
try
{
if (DoesTableExist("MusicControls"))
{
var control = RetrieveMusicControls();
control.RepeatOn = !control.RepeatOn;
_Db.Update(control);
}
}
catch (Exception ex)
{
var msg = ex.Message;
}
}
public void UpdateShuffle()
{
try
{
if (DoesTableExist("MusicControls"))
{
var control = RetrieveMusicControls();
control.ShuffleOn = (!control.ShuffleOn);
_Db.Update(control);
}
}
catch (Exception ex)
{
var msg = ex.Message;
}
}
private MusicControls RetrieveMusicControls()
{
try
{
var controls = _Db.Table<MusicControls>().First();
return controls;
}
catch (Exception ex)
{
var msg = ex.Message;
}
return null;
}
private void InitializeTable()
{
try
{
if (!DoesTableExist("MusicControls"))
{
_Db.CreateTable<MusicControls>();
}
var controls = RetrieveMusicControls();
if (controls == null)
{
var initControl = new MusicControls();
_Db.Insert(initControl);
}
}
catch (Exception ex)
{
var msg = ex.Message;
}
}
#endregion
}
}
+2 -2
View File
@@ -33,10 +33,10 @@
<StackLayout Orientation="Horizontal" <StackLayout Orientation="Horizontal"
Grid.Row="3"> Grid.Row="3">
<Button x:Name="Repeat" <Button x:Name="Repeat"
Text="Rep" Text="RepOff"
Clicked="Repeat_Clicked" /> Clicked="Repeat_Clicked" />
<Button x:Name="Shuffle" <Button x:Name="Shuffle"
Text="Shf" Text="ShfOff"
Clicked="Shuffle_Clicked" /> Clicked="Shuffle_Clicked" />
</StackLayout> </StackLayout>
<StackLayout Orientation="Horizontal"> <StackLayout Orientation="Horizontal">
+17
View File
@@ -96,6 +96,13 @@ namespace Mear.Views
var dur = _song.Duration; var dur = _song.Duration;
var endTime = songCnvrt.ConvertToSongTime(dur.Value); var endTime = songCnvrt.ConvertToSongTime(dur.Value);
var controlRepo = new DBMusicControlsRepository();
var shuffleOn = controlRepo.IsShuffleOn();
var repeatOn = controlRepo.IsRepeatOn();
Shuffle.Text = (shuffleOn) ? "ShfOn" : "ShfOff";
Repeat.Text = (repeatOn) ? "RepOn" : "RepOff";
EndTime.Text = endTime; EndTime.Text = endTime;
} }
@@ -178,11 +185,21 @@ namespace Mear.Views
} }
private void Repeat_Clicked(object sender, EventArgs e) private void Repeat_Clicked(object sender, EventArgs e)
{ {
var musicCtrl = new DBMusicControlsRepository();
var control = musicCtrl.IsRepeatOn();
Repeat.Text = (!control) ? "RepOn" : "RepOff";
musicCtrl.UpdateRepeat();
MearPlayer.ControlMusic(_song, PlayControls.REPEAT);
} }
private void Shuffle_Clicked(object sender, EventArgs e) private void Shuffle_Clicked(object sender, EventArgs e)
{ {
var musicCtrl = new DBMusicControlsRepository();
var control = musicCtrl.IsShuffleOn();
Shuffle.Text = (!control) ? "ShfOn" : "ShfOff";
musicCtrl.UpdateShuffle();
} }