상속: TabItemViewModel, IDragSource
예제 #1
0
        //Processを処理
        public void DoProcess(MylistListViewModel list)
        {
            Status = "マイリストを" + Process + "しています";
            Task.Run(() => {
                //各種バックエンド呼び出し
                switch (Process)
                {
                case "削除":
                    MylistViewModel.MylistInstance.DeleteMylist(SelectedMylist);
                    break;

                case "移動":
                    MylistViewModel.MylistInstance.MoveMylist(SelectedMylist, list);
                    break;

                case "コピー":
                    MylistViewModel.MylistInstance.CopyMylist(SelectedMylist, list);
                    break;
                }

                //削除なら削除したマイリストのみ更新 その他はソースとディスティネーションを更新
                if (Process == "削除")
                {
                    List.Refresh();
                }
                else
                {
                    List.Refresh();
                    list.Refresh();
                }

                Status = "マイリストを" + Process + "しました";
                List.CloseDialog();
            });
        }
 public MylistListEntryViewModel(MylistListViewModel vm, NicoNicoMylistData data)
 {
     Owner = vm;
     Entry = data;
 }
예제 #3
0
        //マイリストを移動
        public void MoveMylist(IEnumerable<MylistListEntryViewModel> source, MylistListViewModel dest)
        {
            string token = GetMylistToken(source.First().Owner.Group);

            Dictionary<string, string> pair = new Dictionary<string, string>();
            pair["group_id"] = source.First().Owner.Group.Id;
            pair["target_group_id"] = dest.Group.Id;
            pair["token"] = token;

            //id_list以外のペアを指定
            var encodedContent = new FormUrlEncodedContent(pair);

            //エンコードされたデータを取得
            var text = encodedContent.ReadAsStringAsync().Result;

            //id_listを付け足す
            text += MakeIdList(source);

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, MylistMoveAPI);

            //ソースがとりあえずマイリストだったら
            if(source.First().Owner.Group.Id == "0") {

                request.RequestUri = new Uri(DefListMoveAPI);
            }

            //データw指定
            request.Content = new StringContent(text);

            //コンテンツタイプを設定
            request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");

            //移動先がとりあえずマイリストだったら
            if(dest.Group.Id == "0") {

                foreach(MylistListEntryViewModel vm in source) {

                    AddDefMylist(vm.Entry.Id, token);
                }
            } else {

                var ret = NicoNicoWrapperMain.Session.GetAsync(request).Result;
            }
        }
예제 #4
0
        //マイリストを移動
        public void MoveMylist(MylistListEntryViewModel source, MylistListViewModel dest)
        {
            string token = GetMylistToken(source.Owner.Group);

            Dictionary<string, string> pair = new Dictionary<string, string>();
            pair["group_id"] = source.Owner.Group.Id;
            pair["target_group_id"] = dest.Group.Id;
            pair["id_list[0][]"] = source.Entry.ItemId;
            pair["token"] = token;

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, MylistMoveAPI);

            //とりあえずマイリストだったら
            if(source.Owner.Group.Id == "0") {

                request.RequestUri = new Uri(DefListMoveAPI);
            }

            request.Content = new FormUrlEncodedContent(pair);

            var text = NicoNicoWrapperMain.Session.GetAsync(request).Result;

            //移動先がとりあえずマイリストだったら
            if(dest.Group.Id == "0") {

                AddDefMylist(source.Entry.Id, token);
            }
        }
예제 #5
0
        //マイリストをコピー
        public void CopyMylist(IEnumerable<MylistListEntryViewModel> source, MylistListViewModel dest)
        {
            string token = GetMylistToken(source.First().Owner.Group);

            Dictionary<string, string> pair = new Dictionary<string, string>();
            pair["group_id"] = source.First().Owner.Group.Id;
            pair["target_group_id"] = dest.Group.Id;
            pair["token"] = token;

            //フォームエンコード済み文字列を取得
            var encodedContent = new FormUrlEncodedContent(pair);
            var text = encodedContent.ReadAsStringAsync().Result;

            //IDリスト作成
            text += MakeIdList(source);

            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, MylistCopyAPI);

            if(source.First().Owner.Group.Id == "0") {

                request.RequestUri = new Uri(DefListCopyAPI);
            }

            request.Content = new StringContent(text);
            request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");

            if(dest.Group.Id == "0") {

                foreach(MylistListEntryViewModel vm in source) {

                    AddDefMylist(vm.Entry.Id, token);
                }
            } else {

                var ret = NicoNicoWrapperMain.Session.GetAsync(request).Result;
            }
        }
 public MylistEditModeViewModel(MylistListViewModel vm)
 {
     List = vm;
 }
        //Processを処理
        public void DoProcess(MylistListViewModel list)
        {
            Status = "マイリストを" + Process + "しています";
            Task.Run(() => {

                //各種バックエンド呼び出し
                switch(Process) {
                    case "削除":
                        MylistViewModel.MylistInstance.DeleteMylist(SelectedMylist);
                        break;
                    case "移動":
                        MylistViewModel.MylistInstance.MoveMylist(SelectedMylist, list);
                        break;
                    case "コピー":
                        MylistViewModel.MylistInstance.CopyMylist(SelectedMylist, list);
                        break;
                }

                //削除なら削除したマイリストのみ更新 その他はソースとディスティネーションを更新
                if(Process == "削除") {

                    List.Reflesh();
                } else {

                    List.Reflesh();
                    list.Reflesh();
                }

                Status = "マイリストを" + Process + "しました";
                List.CloseDialog();
            });
        }
예제 #8
0
 public MylistEditModeViewModel(MylistListViewModel vm)
 {
     List = vm;
 }
예제 #9
0
 public MylistListEntryViewModel(MylistListViewModel vm, NicoNicoMylistData data)
 {
     Owner = vm;
     Entry = data;
 }