public async void Initialize() { IsActive = true; MylistList.Clear(); List <NicoNicoMylistEntry> list; if (IsDefList) { list = await MylistInstance.Item.GetDefListAsync(); } else { list = await MylistInstance.Item.GetMylistAsync(Group); } if (list != null) { foreach (var entry in list) { MylistList.Add(new MylistResultEntryViewModel(this, entry)); } } if (MylistList.Count == 0) { IsEmpty = true; } Sort(SortIndex); IsActive = false; }
public async void Initialize() { IsActive = true; MylistList.Clear(); var mylist = await PublicMylistInstance.GetMylistAsync(); if (mylist == null) { Status = "存在しないか、非公開のマイリストです。"; IsActive = false; return; } MylistInfo = mylist; Name += "\n" + mylist.Name; if (mylist.Data != null) { foreach (var entry in mylist.Data) { MylistList.Add(new PublicMylistEntryViewModel(this, entry)); } } if (MylistList.Count == 0) { IsEmpty = true; } IsActive = false; Sort(SortIndex); }
public override void OnNavigatingFrom(NavigatingFromEventArgs e, Dictionary <string, object> viewModelState, bool suspending) { MylistList.Clear(); UserId = null; IsLoginUserMylist.Value = false; UserName = ""; base.OnNavigatingFrom(e, viewModelState, suspending); }
public void MakePlayList() { var filteredList = MylistList.Where(e => e.Item is NicoNicoMylistVideoEntry).Select(e => e.Item); if (filteredList.Count() == 0) { Owner.Status = "連続再生できるマイリストがありません"; return; } var vm = new PlayListViewModel(Group == null ? "とりあえずマイリスト" : Group.Name, filteredList); App.ViewModelRoot.MainContent.AddUserTab(vm); }
public async void OpenMylistView() { MylistList.Clear(); //Viewを出す前に最新のマイリスト一覧を取得する var list = await MylistInstance.Group.GetMylistGroupAsync(); if (list != null) { foreach (var group in list) { MylistList.Add(group); } App.ViewModelRoot.Messenger.Raise(new TransitionMessage(typeof(Views.AddMylistView), this, TransitionMode.Modal)); } }
public async void GetPage() { Owner.Status = "フォローマイリストを取得中"; var list = await FollowInstance.GetFollowedMylistAsync(CurrentPage); if (list == null) { return; } MylistList.Clear(); foreach (var entry in list) { MylistList.Add(new FollowMylistEntryViewModel(entry)); } IsActive = false; Owner.Status = ""; }
public async void Initialize() { IsActive = true; Status = "マイリストグループを取得中"; MylistList.Clear(); MylistList.Add(new MylistResultViewModel(this, MylistInstance)); var groups = await MylistInstance.Group.GetMylistGroupAsync(); if (groups == null) { return; } foreach (var group in groups) { MylistList.Add(new MylistResultViewModel(this, group, MylistInstance)); } Status = ""; IsActive = false; }
private async Task UpdateUserMylist() { if (!HohoemaApp.MylistManagerUpdater.IsOneOrMoreUpdateCompleted) { HohoemaApp.MylistManagerUpdater.ScheduleUpdate(); await HohoemaApp.MylistManagerUpdater.WaitUpdate(); } var listItems = HohoemaApp.UserMylistManager.UserMylists; MylistList.Add(new MylistItemsWithTitle() { Title = "マイリスト", Origin = PlaylistOrigin.LoginUser, Items = listItems.ToReadOnlyReactiveCollection(x => x as IPlayableList) }); MylistList.Add(new MylistItemsWithTitle() { Title = "ローカル", Origin = PlaylistOrigin.Local, Items = HohoemaApp.Playlist.Playlists.ToReadOnlyReactiveCollection(x => x as IPlayableList) }); }
//マイリストを削除 public async void ShowDeleteView(ICollection targetRaw) { var target = targetRaw.Cast <MylistResultEntryViewModel>(); var operation = new MylistOperationViewModel(Owner, this, target); App.ViewModelRoot.Messenger.Raise(new TransitionMessage(typeof(Views.MylistDeleteView), operation, TransitionMode.Modal)); if (operation.IsCanceled || operation.Operation != MylistOperation.Delete) { return; } //削除が出来たらリストから消す if (await MylistInstance.Item.DeleteMylistAsync(operation.SelectedMylist, await MylistInstance.GetMylistTokenAsync())) { foreach (var entry in operation.SelectedMylist) { //元のリストから削除 MylistList.Remove(entry); } Sort(SortIndex); } }
public void Sort(int index) { IOrderedEnumerable <MylistResultEntryViewModel> sorted = null; var tmp = MylistList.ToArray(); //並び替え switch (index) { case 0: sorted = tmp.OrderByDescending(r => r.Item.CreateTime); break; case 1: sorted = tmp.OrderBy(r => r.Item.CreateTime); break; case 2: sorted = tmp.OrderBy(r => r.Item.Title); break; case 3: sorted = tmp.OrderByDescending(r => r.Item.Title); break; case 4: sorted = tmp.OrderBy(r => r.Item.Description); break; case 5: sorted = tmp.OrderByDescending(r => r.Item.Description); break; case 6: sorted = tmp.OrderByDescending(r => r.Item.FirstRetrieve); break; case 7: sorted = tmp.OrderBy(r => r.Item.FirstRetrieve); break; case 8: sorted = tmp.OrderByDescending(r => r.Item.ViewCount); break; case 9: sorted = tmp.OrderBy(r => r.Item.ViewCount); break; case 10: sorted = tmp.OrderByDescending(r => r.Item.UpdateTime); break; case 11: sorted = tmp.OrderBy(r => r.Item.UpdateTime); break; case 12: sorted = tmp.OrderByDescending(r => r.Item.CommentCount); break; case 13: sorted = tmp.OrderBy(r => r.Item.CommentCount); break; case 14: sorted = tmp.OrderByDescending(r => r.Item.MylistCount); break; case 15: sorted = tmp.OrderBy(r => r.Item.MylistCount); break; } //一度空にする MylistList.Clear(); //ソートしたマイリストを再度追加 foreach (var entry in sorted) { MylistList.Add(entry); } }
protected override async Task NavigatedToAsync(CancellationToken cancelToken, NavigatedToEventArgs e, Dictionary <string, object> viewModelState) { List <IPlayableList> mylists = null; if (e.Parameter is string) { UserId = e.Parameter as string; } MylistList.Clear(); IsLoginUserMylist.Value = UserId == null || UserId == HohoemaApp.LoginUserId.ToString(); if (!IsLoginUserMylist.Value && UserId != null) { try { var userInfo = await HohoemaApp.ContentFinder.GetUserInfo(UserId); UserName = userInfo.Nickname; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } try { var items = await OtherOwneredMylistManager.GetByUserId(UserId); mylists = items.Cast <IPlayableList>().ToList(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } MylistList.Add(new MylistItemsWithTitle() { Title = "マイリスト", Origin = PlaylistOrigin.OtherUser, Items = mylists.ToList(), }); OnPropertyChanged(nameof(MylistList)); } else if (IsLoginUserMylist.Value) { // ログインユーザーのマイリスト一覧を表示 UserName = HohoemaApp.LoginUserName; await UpdateUserMylist(); } else { throw new Exception("UserMylistPage が不明なパラメータと共に開かれました : " + e.Parameter); } UpdateTitle($"{UserName} さんのマイリスト一覧"); AddMylistGroupCommand.RaiseCanExecuteChanged(); }