async void chimneyMpdServer_OnSeekCur(object sender, ResponseEventArgs e)
{
bool suc = false;
bool canseek = false;
#if WINDOWS_PHONE_APP
canseek = BackgroundMediaPlayer.Current.CanSeek;
#else
try
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
canseek = ChimneyMPDMediaElement.CanSeek;
});
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
canseek = false;
}
#endif
if (canseek)
{
if (e.arguments.Count > 0)
{
int newpos = 0;
if (e.arguments[0].StartsWith("+"))
{
suc = int.TryParse(e.arguments[0].Remove(0, 1), out newpos);
if (suc)
{
#if WINDOWS_PHONE_APP
BackgroundMediaPlayer.Current.Position = BackgroundMediaPlayer.Current.Position + new TimeSpan(0, 0, newpos);
#else
try
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
ChimneyMPDMediaElement.Position = ChimneyMPDMediaElement.Position + new TimeSpan(0, 0, newpos);
});
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
#endif
}
}
else if (e.arguments[0].StartsWith("-"))
{
suc = int.TryParse(e.arguments[0].Remove(0,1), out newpos);
if (suc)
{
#if WINDOWS_PHONE_APP
BackgroundMediaPlayer.Current.Position = BackgroundMediaPlayer.Current.Position - new TimeSpan(0, 0, newpos);
#else
try
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
ChimneyMPDMediaElement.Position = ChimneyMPDMediaElement.Position - new TimeSpan(0, 0, newpos);
});
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
#endif
}
}
else
{
suc = int.TryParse(e.arguments[0], out newpos);
if(suc)
{
#if WINDOWS_PHONE_APP
BackgroundMediaPlayer.Current.Position = new TimeSpan(0, 0, newpos);
#else
try
{
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
ChimneyMPDMediaElement.Position = new TimeSpan(0, 0, newpos);
});
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
#endif
}
}
}
}
chimneyMpdServer.AppendResponse(string.Empty, e.id, e.position);
if(suc) if (OnIdleEvent != null) OnIdleEvent(this, new IdleEventArgs("player"));
}