Ejemplo n.º 1
0
        /// <summary>
        /// メニュー処理
        /// </summary>
        private void Menu_Command(MenuType type)
        {
            switch (type)
            {
            case MenuType.SearchByRanking:
                Current = new SearchVideoByRankingViewModel();
                break;

            case MenuType.SearchByTemporary:
                Current = new SearchVideoByTemporaryViewModel();
                break;

            case MenuType.SearchByHistory:
                Current = new SearchVideoByHistoryViewModel();
                break;

            case MenuType.SearchByMylist:
                Current = new SearchVideoByMylistViewModel();
                break;

            case MenuType.SearchMylist:
                Current = new SearchMylistViewModel();
                break;

            case MenuType.Setting:
                Current = new SettingViewModel();
                break;
            }
        }
Ejemplo n.º 2
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();
                    }
            });
        }
Ejemplo n.º 3
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        public MainWindowViewModel() : base()
        {
            if (!WpfUtil.IsDesignMode() && Instance != null)
            {
                throw new InvalidOperationException("本ViewModelは複数のインスタンスを作成することができません。");
            }
            Instance = this;

            Disposed += (sender, e) =>
            {
                MylistStatusModel.Instance.Dispose();
                SettingModel.Instance.Dispose();
                VideoStatusModel.Instance.Dispose();
            };

            // 初期表示ワークスペースの設定
            if (!string.IsNullOrWhiteSpace(SettingModel.Instance.MailAddress))
            {
                Current = new SearchVideoByRankingViewModel();
            }
            else
            {
                Current = new SettingViewModel();
            }

            // メッセージサービスの変更
            ServiceFactory.MessageService = new WpfMessageService();

            // テンポラリ数の監視イベントを追加
            SearchVideoByTemporaryModel.Instance.Videos.CollectionChanged += SearchVideoByTemporaryModel_OnCollectionChanged;

            // ダウンロード状況の監視イベントを追加
            DownloadModel.Instance.PropertyChanged += Download_OnPropertyChanged;

            // タイマー起動
            Timer          = new DispatcherTimer(DispatcherPriority.Normal, App.Current.Dispatcher);
            Timer.Interval = new TimeSpan(0, 10, 0);
            Timer.Tick    += Timer_Tick;
            Timer.Start();
        }