Пример #1
0
        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;
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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));
            }
        }
Пример #6
0
        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 = "";
        }
Пример #7
0
        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;
        }
Пример #8
0
        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)
            });
        }
Пример #9
0
        //マイリストを削除
        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);
            }
        }
Пример #10
0
        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);
            }
        }
Пример #11
0
        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();
        }