Esempio n. 1
0
        private async Task AddHistory(string id)
        {
            using (var accessor = DbAccessor.GetAccessor())
                using (var control = accessor.GetCommand())
                {
                    var history = new TTemporaryHistory(id, DateTime.Now);

                    await control.InsertOrReplaceTemporaryHistory(history);

                    Histories.Add(history);
                }
        }
Esempio n. 2
0
 /// <summary>
 /// 再表示処理
 /// </summary>
 private async void Reload(object sender, EventArgs e)
 {
     Videos.Clear();
     using (var accessor = DbAccessor.GetAccessor())
         using (var control = accessor.GetCommand())
         {
             foreach (var vvh in await control.GetVideoHistoryView(int.Parse(Sort.SelectedItem.Value)))
             {
                 Videos.Add(new VideoHistoryViewModel(await VideoModel.CreateInstance(vvh), vvh.Count));
             }
         }
 }
        /// <summary>
        /// Viewを追加します。
        /// </summary>
        /// <param name="view">view</param>
        public async Task AddHistory(TVideoHistory view)
        {
            Histories.Add(view);

            using (var accessor = DbAccessor.GetAccessor())
                using (var control = accessor.GetCommand())
                {
                    await control.BeginTransaction();

                    await control.InsertOrReplaceVideoHistory(view);

                    await control.Commit();
                }
        }
Esempio n. 4
0
        public async Task AddFavorite(TFavorite favorite)
        {
            if (!Favorites.Any(f => f.Mylist == favorite.Mylist))
            {
                using (var accessor = DbAccessor.GetAccessor())
                    using (var control = accessor.GetCommand())
                    {
                        Favorites.Add(favorite);
                        await control.BeginTransaction();

                        await control.InsertOrReplaceFavorite(favorite);

                        await control.Commit();
                    }
            }
        }
Esempio n. 5
0
        public async Task RemoveFavorite(TFavorite favorite)
        {
            if (!Favorites.Any(f => f.Mylist == favorite.Mylist))
            {
                using (var accessor = DbAccessor.GetAccessor())
                    using (var control = accessor.GetCommand())
                    {
                        Favorites.Remove(Favorites.First(f => f.Mylist == favorite.Mylist));
                        await control.BeginTransaction();

                        await control.DeleteFavorite(favorite);

                        await control.Commit();
                    }
            }
        }
Esempio n. 6
0
        /// <summary>
        /// 画面表示時の処理
        /// </summary>
        private async void Loaded_Command(object dummy)
        {
            await ShowProgressAsync(async (pdc) =>
            {
                pdc.SetIndeterminate();
                pdc.SetTitle("初期化中");

                using (var accessor = DbAccessor.GetAccessor())
                    using (var control = accessor.GetCommand())
                    {
                        pdc.SetMessage("データベースの初期化中");

                        // 全体の初期化
                        await control.BeginTransaction();
                        await control.Initialize();
                        await control.Commit();

                        pdc.SetMessage("設定情報の初期化中");

                        // SettingModelの初期化
                        SettingModel.Initialize(await control.GetSetting());

                        pdc.SetMessage("履歴情報の初期化");

                        // ViewModelの初期化
                        await SearchVideoByHistoryModel.Initialize(await control.GetVideoHistory());

                        pdc.SetMessage("テンポラリの初期化");

                        // Temporaryの初期化
                        await SearchVideoByTemporaryModel.Initialize(await control.GetTemporaryHistory());

                        pdc.SetMessage("お気に入りの初期化");

                        // SearchMylistModelの初期化
                        SearchMylistModel.Initialize(await control.GetFavorite());

                        pdc.SetMessage("カレント設定");

                        // カレント設定
                        Current = new SearchVideoByRankingViewModel();
                    }
            });
        }
Esempio n. 7
0
        private async void Change_SelectedItem()
        {
            var index = Items.IndexOf(SelectedItem).ToString();

            if (SettingModel.Instance.GetSetting(Key) == index)
            {
                return;
            }

            using (var accessor = DbAccessor.GetAccessor())
                using (var control = accessor.GetCommand())
                {
                    await control.BeginTransaction();

                    await control.InsertOrReplaceSetting(new TSetting(Key, index));

                    await control.Commit();
                }
        }
Esempio n. 8
0
        public async Task Reload()
        {
            using (var accessor = DbAccessor.GetAccessor())
                using (var control = accessor.GetCommand())
                {
                    foreach (var favorite in Favorites)
                    {
                        try
                        {
                            var mylist = Mylists.First(m => m.MylistId == favorite.Mylist);

                            var videos = await mylist.GetVideos();

                            var targets = videos
                                          .Where(video => favorite.Date < video.StartTime)
                                          .Where(video => !SearchVideoByTemporaryModel.Instance.Videos.Any(v => v.VideoId == video.VideoId))
                                          .ToArray();

                            if (!targets.Any())
                            {
                                continue;
                            }

                            foreach (var video in targets)
                            {
                                await SearchVideoByTemporaryModel.Instance.AddVideo(video);
                            }

                            favorite.Date = targets.Max(video => video.StartTime);
                        }
                        catch
                        {
                            Console.WriteLine();
                        }
                    }
                    await control.BeginTransaction();

                    await control.InsertOrReplaceFavorite(Favorites.ToArray());

                    await control.Commit();
                }
        }
        private async Task RefreshAsync()
        {
            var results = new List <string>();

            // 履歴に残っている動画のリスト(ID重複削除)
            var targets = Histories
                          .Select(history => history.VideoId)
                          .Distinct()
                          .ToArray();

            foreach (var id in targets)
            {
                var v = await VideoModel.CreateInstance(id);

                if (v.Status == VideoStatus.Delete)
                {
                    // 削除済の履歴はDBからも削除
                    results.Add(id);
                }
            }

            if (!results.Any())
            {
                return;
            }

            using (var accessor = DbAccessor.GetAccessor())
                using (var control = accessor.GetCommand())
                {
                    await control.BeginTransaction();

                    await control.DeleteVideoHistory(results.ToArray());

                    await control.Commit();
                }
        }