private async void Download(object sender, Windows.UI.Xaml.RoutedEventArgs e) { if (string.IsNullOrEmpty(TrackTitle.Text) || string.IsNullOrEmpty(AlbumTitle.Text) || string.IsNullOrEmpty(ArtistTitle.Text) || string.IsNullOrWhiteSpace(TrackTitle.Text) || string.IsNullOrWhiteSpace(AlbumTitle.Text) || string.IsNullOrWhiteSpace(ArtistTitle.Text)) { Core.WinRt.Common.ToastManager.ShowError("Fill in all details."); return; } else { Save(); SheetUtility.CloseEditTrackMetadataPage(); await System.Threading.Tasks.Task.Delay(200); if (PassingValue is WebSong) { await SongSavingHelper.SaveViezTrackLevel1(PassingValue as WebSong); } else if (PassingValue is FullTrack) { await SongSavingHelper.SaveSpotifyTrackLevel1(PassingValue as FullTrack); } else if (PassingValue is LastTrack) { await SongSavingHelper.SaveLastTrackLevel1(PassingValue as LastTrack); } } }
//rematch private async void ManualMatch_Click(object sender, RoutedEventArgs e) { await DispatcherHelper.RunAsync(() => { SheetUtility.OpenManualMatchPage(_song); }); }
public async void VideoClickExecuteAfter() { try { await Task.Factory.StartNew(async() => { string url = await GetOnlineUrl(VideoInfo.VideoId); if (string.IsNullOrEmpty(url)) { await DispatcherHelper.RunAsync(() => { SheetUtility.CloseVideoPage(); MessageHelpers.ShowError("Url not found.", "Error"); }); } else { VideoModel videoModel = new VideoModel(url, true); StartPlaybackVideo?.Invoke(this, videoModel); } }); } catch { SheetUtility.CloseVideoPage(); } }
/// <summary> /// 获取查询条件 /// </summary> /// <param name="Schema"></param> /// <param name="ListMethod"></param> /// <param name="Query"></param> /// <returns></returns> private OThinker.H3.BizBus.Filter.Filter GetFilter(DataModel.BizObjectSchema Schema, string ListMethod, DataModel.BizQuery Query) { // 构造查询条件 OThinker.H3.BizBus.Filter.Filter filter = new OThinker.H3.BizBus.Filter.Filter(); OThinker.H3.BizBus.Filter.And and = new OThinker.H3.BizBus.Filter.And(); filter.Matcher = and; ItemMatcher propertyMatcher = null; if (Query.QueryItems != null) { foreach (DataModel.BizQueryItem queryItem in Query.QueryItems) { // 增加系统参数条件 if (queryItem.FilterType == DataModel.FilterType.SystemParam) { propertyMatcher = new OThinker.H3.BizBus.Filter.ItemMatcher(queryItem.PropertyName, OThinker.Data.ComparisonOperatorType.Equal, SheetUtility.GetSystemParamValue(this.UserValidator, queryItem.SelectedValues)); and.Add(propertyMatcher); } else if (queryItem.Visible == OThinker.Data.BoolMatchValue.False) { and.Add(new ItemMatcher(queryItem.PropertyName, queryItem.FilterType == DataModel.FilterType.Contains ? OThinker.Data.ComparisonOperatorType.Contain : OThinker.Data.ComparisonOperatorType.Equal, queryItem.DefaultValue)); } } } return(filter); }
private async void SongClickExecute(ItemClickEventArgs item) { var track = item.ClickedItem; if (track is Advert || track is ListAdvert) { return; } if (track is WebSong) { if (foundInViez) { SheetUtility.OpenEditTrackMetadataPage(track as WebSong); } else { await SongSavingHelper.SaveViezTrackLevel1(track as WebSong); } } else if (track is FullTrack) { await SongSavingHelper.SaveSpotifyTrackLevel1(track as FullTrack); } }
async void RepairMusicus(object sender, RoutedEventArgs e) { if (BackgroundMediaPlayer.Current.CurrentState == MediaPlayerState.Playing) { ToastManager.ShowError("Stop playback first."); return; } else { await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => { var md = new MessageDialog( "This will delete everything from airstem and import your data again.", "Are you sure you want to refresh?"); md.Commands.Add(new UICommand("Ok")); md.Commands.Add(new UICommand("Cancel")); var result = await md.ShowAsync(); if (result != null && result.Label.ToLower().Equals("ok")) { SheetUtility.OpenImportRefreshPage(3); } }); } }
private void AddToMenuFlyoutItem_OnClick(object sender, RoutedEventArgs e) { AddToPlaylistPage.songs = new List <Song>() { _song }; SheetUtility.OpenAddToPlaylistPage(); }
//private void TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) //{ // //We only want to get results when it was a user typing, // //otherwise we assume the value got filled in by TextMemberPath // //or the handler for SuggestionChosen // if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput) // App.Locator.CollectionSearch.SearchInCollectionPhase1(sender.Text); //} private async void artistClicked(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) { await DispatcherHelper.RunAsync(() => { SheetUtility.CloseSearchCollectionPage(); App.Navigator.GoTo <CollectionArtistPage, ZoomInTransition>(App.Locator.CollectionSearch.Artists.Id); }); }
private async void artistsSearchListClicked(object sender, ItemClickEventArgs e) { await DispatcherHelper.RunAsync(() => { SheetUtility.CloseSearchCollectionPage(); App.Navigator.GoTo <CollectionArtistPage, ZoomInTransition>(((Artist)e.ClickedItem).Id); }); }
private void AddToPlaylistFlyoutClick(object sender, RoutedEventArgs e) { AddToPlaylistPage.songs = new List <Song>() { App.Locator.Player.CurrentSong }; SheetUtility.OpenAddToPlaylistPage(); }
private async void AddAll(object sender, RoutedEventArgs e) { await DispatcherHelper.RunAsync(() => { var tracks = App.Locator.CollectionArtist.Artist.Songs.ToList(); AddToPlaylistPage.songs = tracks; SheetUtility.OpenAddToPlaylistPage(); }); }
void VideoClickExecute(ItemClickEventArgs obj) { if (obj.ClickedItem is Video) { SheetUtility.OpenVideoPage(obj.ClickedItem as Video); } else { App.Locator.VideoPlayer.InvokeOnline(obj.ClickedItem); } }
private async void playlistitemclick(object sender, ItemClickEventArgs e) { var playlist = e.ClickedItem as Playlist; for (var i = 0; i < songs.Count; i++) { var song = songs[i]; // only add if is not there already if (playlist.Songs.FirstOrDefault(p => p.Song.Id == song.Id) == null) { await App.Locator.CollectionService.AddToPlaylistAsync(playlist, song).ConfigureAwait(false); } } SheetUtility.CloseAddToPlaylistPage(); }
private async void songsSearchListClicked(object sender, ItemClickEventArgs e) { await DispatcherHelper.RunAsync(async() => { SheetUtility.CloseSearchCollectionPage(); Song s = e.ClickedItem as Song; var queueSongs = App.Locator.CollectionSearch.Songs.ToList(); int index = queueSongs.IndexOf(s); queueSongs = queueSongs.Skip(index).ToList(); if (queueSongs != null && queueSongs.Count > 0) { await PlayAndQueueHelper.PlaySongsAsync(s, queueSongs, true); } }); }
private async void SongClickExecute(ItemClickEventArgs obj) { var track = obj.ClickedItem; if (track is Advert || track is ListAdvert) { return; } if (Popular.Contains(track as WebSong)) { await SongSavingHelper.SaveViezTrackLevel1(track as WebSong); } else { SheetUtility.OpenEditTrackMetadataPage(track as WebSong); } }
async void ImportVideos() { ScreenTimeoutHelper.PreventTimeout(); Message.Text = "Collecting information about videos."; Bar.IsIndeterminate = true; var failedCount = 0; LocalMusicHelper localMusicHelper = new LocalMusicHelper(); var localVideos = await localMusicHelper.GetFilesInVideoAsync(); App.Locator.CollectionService.Videos.SuppressEvents = true; Bar.IsIndeterminate = false; await Task.Delay(10); Message.Text = "Working on video files."; Bar.Maximum = localVideos.Count; App.Locator.SqlService.BeginTransaction(); for (var i = 0; i < localVideos.Count; i++) { Bar.Value = i + 1; try { await localMusicHelper.SaveVideoAsync(localVideos[i]); } catch { failedCount++; } } App.Locator.SqlService.Commit(); App.Locator.CollectionService.Videos.Reset(); ScreenTimeoutHelper.AllowTimeout(); SheetUtility.CloseImportRefreshPage(); }
private async void Create(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(PlaylistTextBox.Text)) { Core.WinRt.Common.ToastManager.ShowError("Enter a name."); } else { if (App.Locator.CollectionService. Playlists.FirstOrDefault(p => string.Equals(p.Name, PlaylistTextBox.Text, StringComparison.CurrentCultureIgnoreCase)) != null) { PlaylistTextBox.Text = ""; Core.WinRt.Common.ToastManager.ShowError("Already exists."); } else { var playlist = await App.Locator.CollectionService.CreatePlaylistAsync(FirstCharToUpper(PlaylistTextBox.Text)); SheetUtility.CloseAddAPlaylistPage(); } } }
private async void SaveClicked(object sender, Windows.UI.Xaml.RoutedEventArgs e) { var clickedItem = (sender as MenuFlyoutItem).DataContext as WebSong; if (clickedItem == null) { return; } if (clickedItem.IsLinkDeath) { Core.WinRt.Common.ToastManager.ShowError("Link dead."); return; } var song = App.Locator.Manual.CurrentSong; song.AudioUrl = clickedItem.AudioUrl; song.CloudId = clickedItem.AudioUrl; song.RadioId = clickedItem.ProviderNumber; song.SongState = SongState.DownloadListed; await App.Locator.SqlService.UpdateItemAsync(song); SheetUtility.CloseManualMatchPage(); }
public JsonResult StartInstance(string paramString) { ActionResult result = new ActionResult(false, ""); Dictionary <string, string> dicParams = JsonConvert.DeserializeObject <Dictionary <string, string> >(paramString); string WorkflowCode = string.Empty, SchemaCode = string.Empty, InstanceName = string.Empty; int WorkflowVersion = WorkflowTemplate.WorkflowDocument.NullWorkflowVersion; bool IsMobile = false; string SheetCode = string.Empty; string LoginName = string.Empty; string MobileToken = string.Empty; string WechatCode = string.Empty; string EngineCode = string.Empty; Dictionary <string, string> dicOtherParams = new Dictionary <string, string>(); //读取URL参数 foreach (string key in dicParams.Keys) { if (key == Param_WorkflowCode) { WorkflowCode = dicParams[key]; continue; } if (key == Param_SchemaCode) { SchemaCode = dicParams[key]; continue; } if (key == Param_WorkflowVersion) { int.TryParse(dicParams[key], out WorkflowVersion); continue; } if (key == Param_IsMobile) { bool.TryParse(dicParams[key], out IsMobile); continue; } if (key == Param_SheetCode) { SheetCode = dicParams[key]; continue; } if (key == Param_InstanceName) { InstanceName = dicParams[key]; continue; } if (key.ToLower() == "loginname") { LoginName = dicParams[key]; continue; } if (key.ToLower() == "mobiletoken") { MobileToken = dicParams[key]; continue; } if (key.ToLower() == "code") { WechatCode = dicParams[key]; } if (key.ToLower() == "state") { EngineCode = dicParams[key]; } dicOtherParams.Add(key, dicParams[key]); } //TODO:微信不需要做单点登录 ////实现微信单点登录 //if (!string.IsNullOrEmpty(WechatCode) && !string.IsNullOrEmpty(EngineCode) // && System.Web.HttpContext.Current.Session[Sessions.GetUserValidator()] != null) //{ // IsMobile = true; // UserValidatorFactory.LoginAsWeChat(EngineCode, WechatCode); //} //APP打开表单验证 if (!string.IsNullOrEmpty(LoginName) && !string.IsNullOrEmpty(MobileToken) && this.UserValidator == null) { if (!SSOopenSheet(LoginName, MobileToken)) { result = new ActionResult(false, "登录超时!", null, ExceptionCode.NoAuthorize); return(Json(result, JsonRequestBehavior.AllowGet)); } } else if (this.UserValidator == null) { result = new ActionResult(false, "登录超时!", null, ExceptionCode.NoAuthorize); return(Json(result, JsonRequestBehavior.AllowGet)); } //计算 WorkflowCode if (WorkflowCode == string.Empty && !string.IsNullOrEmpty(SchemaCode)) { WorkflowClause[] clauses = this.Engine.WorkflowManager.GetClausesBySchemaCode(SchemaCode); if (clauses != null) { foreach (WorkflowClause clause in clauses) { if (clause.DefaultVersion > 0) { WorkflowCode = clause.WorkflowCode; } } } } //流程版本号 if (WorkflowVersion == WorkflowTemplate.WorkflowDocument.NullWorkflowVersion || WorkflowVersion == 0) { WorkflowVersion = this.Engine.WorkflowManager.GetWorkflowDefaultVersion(WorkflowCode); } //流程优先级 OThinker.H3.Instance.PriorityType Priority = OThinker.H3.Instance.PriorityType.Normal; if (dicParams.ContainsKey(Param_Priority)) { string strPriority = dicParams[Param_Priority]; Priority = (OThinker.H3.Instance.PriorityType)Enum.Parse(typeof(OThinker.H3.Instance.PriorityType), strPriority); } try { if (string.IsNullOrEmpty(WorkflowCode)) { result.Message = "StartInstance.StartInstance_Msg0"; return(Json(result, JsonRequestBehavior.AllowGet)); } // 获得工作流模板 PublishedWorkflowTemplate workflow = this.Engine.WorkflowManager.GetPublishedTemplate(WorkflowCode, WorkflowVersion); if (workflow == null) { result.Message = "StartInstance.StartInstance_Msg1"; return(Json(result, JsonRequestBehavior.AllowGet)); } DataModel.BizObjectSchema schema = this.Engine.BizObjectManager.GetPublishedSchema(workflow.BizObjectSchemaCode); // 开始节点 ClientActivity startActivity = null; // 开始的表单 BizSheet startSheet = null; System.Text.StringBuilder instanceParamBuilder = new System.Text.StringBuilder(); if (dicOtherParams.Count > 0) { foreach (string key in dicOtherParams.Keys) { instanceParamBuilder.Append(string.Format("&{0}={1}", key, dicOtherParams[key])); } } startActivity = workflow.GetActivityByCode(workflow.StartActivityCode) as ClientActivity; if (!string.IsNullOrEmpty(SheetCode)) { startSheet = this.Engine.BizSheetManager.GetBizSheetByCode(SheetCode); } if (startSheet == null) { if (!string.IsNullOrEmpty(startActivity.SheetCode)) { startSheet = this.Engine.BizSheetManager.GetBizSheetByCode(startActivity.SheetCode); } else { BizSheet[] sheets = this.Engine.BizSheetManager.GetBizSheetBySchemaCode(workflow.BizObjectSchemaCode); if (sheets != null && sheets.Length > 0) { startSheet = sheets[0]; } } } if (workflow.StartWithSheet && startActivity != null && startSheet != null) { string url = this.GetSheetBaseUrl( SheetMode.Originate, IsMobile, startSheet); url = url + SheetEnviroment.Param_Mode + "=" + SheetMode.Originate + "&" + Param_WorkflowCode + "=" + System.Web.HttpUtility.UrlEncode(workflow.WorkflowCode) + "&" + Param_WorkflowVersion + "=" + workflow.WorkflowVersion + //(string.IsNullOrEmpty(SheetCode)?"":("&"+Param_SheetCode+"="+SheetCode))+ (instanceParamBuilder.Length == 0 ? string.Empty : ("&" + instanceParamBuilder.ToString())); //URL result.Message = url; } else { // 发起流程 string instanceId = Guid.NewGuid().ToString().ToLower(); string workItemId = null; string error = null; OThinker.H3.DataModel.BizObject bo = new DataModel.BizObject(this.UserValidator.Engine, schema, this.UserValidator.UserID); bo.Create(); if (!SheetUtility.OriginateInstance( this.Engine, bo.ObjectID, workflow, schema, ref instanceId, this.UserValidator.UserID, null, null, OThinker.H3.Instance.PriorityType.Unspecified, null, null, null, ref workItemId, ref error, false)) { result.Message = error; } string startInstanceUrl = this.GetInstanceUrl(instanceId, workItemId); startInstanceUrl += (instanceParamBuilder.Length == 0 ? null : ("&" + instanceParamBuilder.ToString())); result.Message = startInstanceUrl; } } catch (Exception ex) { result.Message = ex.Message; return(Json(result, JsonRequestBehavior.AllowGet)); } result.Success = true; return(Json(result, JsonRequestBehavior.AllowGet)); }
private void OpenSearchCollection(object sender, RoutedEventArgs e) { SheetUtility.OpenSearchCollectionPage(); }
private void Close(object sender, RoutedEventArgs e) { SheetUtility.CloseAddAPlaylistPage(); }
/// <summary> /// 获取联动规则的数据,数据源来自 BizBus /// </summary> protected void GetLinkageData() { string targetId = Request["TargetID"]; string schemaCode = Request["SchemaCode"]; string filterMethod = Request["FilterMethod"]; string queryCode = Request["QueryCode"]; string queryPropertyName = Request["QueryPropertyName"]; string queryPropertyValue = Request["QueryPropertyValue"]; string textDataField = Request["TextDataField"]; string valueDataField = Request["ValueDataField"]; // 获取查询对象 //BizQuery query = OThinker.H3.WorkSheet.AppUtility.Engine.BizBus.GetBizQuery(schemaCode, queryCode); DataModel.BizQuery query = AppUtility.Engine.BizObjectManager.GetBizQuery(queryCode); // 构造查询条件 OThinker.H3.BizBus.Filter.Filter filter = new BizBus.Filter.Filter(); OThinker.H3.BizBus.Filter.And and = new And(); filter.Matcher = and; ItemMatcher propertyMatcher = null; if (query.QueryItems != null) { string[] values = queryPropertyValue.Split(new string[] { "," }, StringSplitOptions.None); int i = 0; foreach (DataModel.BizQueryItem queryItem in query.QueryItems) { // 增加系统参数条件 if (queryItem.FilterType == DataModel.FilterType.SystemParam) { propertyMatcher = new OThinker.H3.BizBus.Filter.ItemMatcher(queryItem.PropertyName, OThinker.Data.ComparisonOperatorType.Equal, SheetUtility.GetSystemParamValue(UserValidatorFactory.CurrentUser, queryItem.SelectedValues)); and.Add(propertyMatcher); continue; } else if (values.Length > 1) { if (values.Length > i) { propertyMatcher = new OThinker.H3.BizBus.Filter.ItemMatcher(queryItem.PropertyName, queryItem.FilterType == DataModel.FilterType.Contains ? OThinker.Data.ComparisonOperatorType.Contain : OThinker.Data.ComparisonOperatorType.Equal, values[i]); and.Add(propertyMatcher); } } else if (queryItem.PropertyName == queryPropertyName) { propertyMatcher = new OThinker.H3.BizBus.Filter.ItemMatcher(queryPropertyName, queryItem.FilterType == DataModel.FilterType.Contains ? OThinker.Data.ComparisonOperatorType.Contain : OThinker.Data.ComparisonOperatorType.Equal, queryPropertyValue); and.Add(propertyMatcher); } i++; } } DataModel.BizObjectSchema schema = AppUtility.Engine.BizObjectManager.GetPublishedSchema(schemaCode); Dictionary <string, string> SelectItems = new Dictionary <string, string>(); if (schema != null) { // 调用查询获取数据源 //OThinker.H3.DataModel.BizObject[] objs = schema.GetList(OThinker.H3.WorkSheet.AppUtility.Engine.BizBus, // this.UserValidator.UserID, // filterMethod, // filter); DataModel.BizObject[] objs = schema.GetList( AppUtility.Engine.Organization, AppUtility.Engine.MetadataRepository, AppUtility.Engine.BizObjectManager, UserValidatorFactory.CurrentUser != null ? UserValidatorFactory.CurrentUser.UserID : string.Empty, filterMethod, filter); DataTable dtSource = DataModel.BizObjectUtility.ToTable(schema, objs); foreach (DataRow row in dtSource.Rows) { SelectItems.Add(row[valueDataField] + string.Empty, row[textDataField] + string.Empty); } } Response.Clear(); Response.Write(JSSerializer.Serialize(SelectItems)); Response.Buffer = true; }
private void OpenQueue(object sender, RoutedEventArgs e) { SheetUtility.OpenNowPlaying(); }
private void AddANewPlaylist_OnClick(object sender, RoutedEventArgs e) { SheetUtility.OpenAddAPlaylistPage(); }
private void ColorListViewClicked(object sender, ItemClickEventArgs e) { _colorPicker.ChangeColor(e.ClickedItem as ColorName); SheetUtility.CloseColorViewPage(); }
void HardwareButtonsOnBackPressedForVideoPage(object sender, BackRequestedEventArgs e) { SheetUtility.CloseVideoPage(); }
async void StartControlForPlayback(VideoModel videoModel) { try { if (videoModel.IsWebVideo) { await DispatcherHelper.RunAsync(() => { Player.Source = new Uri(videoModel.Url); Player.Play(); }); } else if (!videoModel.IsWebVideo) { try { var file = await InitializeFromFilePath(videoModel.Url); IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read); Player.SetSource(stream, file.ContentType); Player.Play(); } catch { await DispatcherHelper.RunAsync(async() => { var file = await InitializeFromFilePath(videoModel.Url); IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read); Player.SetSource(stream, file.ContentType); Player.Play(); }); } } else { try { progressRing.IsActive = false; MessageHelpers.ShowError(Core.StringMessage.SomethinWentWrong, "Error"); SheetUtility.CloseVideoPage(); } catch { await DispatcherHelper.RunAsync(() => { SheetUtility.CloseVideoPage(); }); } } } catch (Exception) { try { progressRing.IsActive = false; MessageHelpers.ShowError(Core.StringMessage.SomethinWentWrong, "Error"); SheetUtility.CloseVideoPage(); } catch { await DispatcherHelper.RunAsync(() => { SheetUtility.CloseVideoPage(); }); } } }
async void ImportMusic(bool importVideo = false) { ScreenTimeoutHelper.PreventTimeout(); Bar.IsIndeterminate = true; Message.Text = "Collecting information about music."; LocalMusicHelper localMusicHelper = new LocalMusicHelper(); var localMusic = await localMusicHelper.GetFilesInMusicAsync(); var failedCount = 0; Bar.IsIndeterminate = false; App.Locator.CollectionService.Songs.SuppressEvents = true; App.Locator.CollectionService.Artists.SuppressEvents = true; App.Locator.CollectionService.Albums.SuppressEvents = true; await Task.Delay(10); Message.Text = "Working on music files."; Bar.Maximum = localMusic.Count; App.Locator.SqlService.BeginTransaction(); for (var i = 0; i < localMusic.Count; i++) { Bar.Value = i + 1; try { await localMusicHelper.SaveTrackAsync(localMusic[i]); } catch { failedCount++; } } App.Locator.SqlService.Commit(); App.Locator.CollectionService.Songs.Reset(); App.Locator.CollectionService.Artists.Reset(); App.Locator.CollectionService.Albums.Reset(); if (importVideo) { if (App.Locator.Setting.SpotifyArtworkSync) { await DownloadArtworks.DownloadArtistsArtworkAsyncFromSpotify(); } else { await DownloadArtworks.DownloadArtistsArtworkAsync(); } await DownloadArtworks.DownloadAlbumsArtworkAsync(); ImportVideos(); } else { if (App.Locator.Setting.SpotifyArtworkSync) { await DownloadArtworks.DownloadArtistsArtworkAsyncFromSpotify(); } else { await DownloadArtworks.DownloadArtistsArtworkAsync(); } await DownloadArtworks.DownloadAlbumsArtworkAsync(); ScreenTimeoutHelper.AllowTimeout(); SheetUtility.CloseImportRefreshPage(); } App.Locator.HomePage.SongColletionChanged(); }
private void Cancel(object sender, Windows.UI.Xaml.RoutedEventArgs e) { SheetUtility.CloseEditTrackMetadataPage(); }
private static void HardwareButtons_BackPressed(object sender, BackRequestedEventArgs e) { UiBlockerUtility.Unblock(); App.SupressBackEvent -= HardwareButtons_BackPressed; SheetUtility.CloseAddToPlaylistPage(); }