async Task Activate()
        {
            if (ViewModelUtility.IsDesginMode)
                return;
            try
            {
                await _syncerActivities.WaitAsync();
                if (_manager.Accounts.IndexOf(this) != _manager.SelectedAccountIndex)
                    return;

                IsLoading = true;
                if (await _accountModel.Activate())
                {
                    UserName = _accountModel.MyProfile.Name;
                    UserIconUrl = await DataCacheDictionary.DownloadImage(
                        new Uri(_accountModel.Builder.IconUrl
                            .Replace("$SIZE_SEGMENT", "s38-c-k")
                            .Replace("$SIZE_NUM", "80")));
                    Stream.SelectedIndex = 0;
                }
                else
                {
                    var message = new MetroDialogMessage(
                        "Error", "ストリームの初期化に失敗しました。ネットワークの設定を確認して下さい。", "Account/Dialog",
                        MessageDialogStyle.AffirmativeAndNegative,
                        new MetroDialogSettings() { AffirmativeButtonText = "再接続", NegativeButtonText = "別のアカウントを使う" });
                    message = await Messenger.GetResponseAsync(message);
                    switch (await message.Response)
                    {
                        case MessageDialogResult.Affirmative:
                            var tsk = Activate();
                            break;
                        case MessageDialogResult.Negative:
                            _manager.IsAccountSelectorMode = true;
                            _manager.SelectedAccountIndex = -1;
                            break;
                    }
                }
            }
            finally
            {
                IsLoading = false;
                _syncerActivities.Release();
            }
        }
Exemple #2
0
 public async void Activate()
 {
     if (ViewModelUtility.IsDesginMode)
         return;
     //エラー発生時は確認画面を表示して再試行を促す
     if(await _accountManagerModel.Activate() == false)
     {
         var message = new MetroDialogMessage(
             "Error", "アカウント一覧の読み込みに失敗しました。ネットワークの設定を確認して下さい。",
             "Main/Dialog", setting: new MetroDialogSettings() { AffirmativeButtonText = "再接続" });
         message = await Messenger.GetResponseAsync(message);
         await message.Response;
         Activate();
         return;
     }
     //初期化成功時は継続
     NoSelectableAccount = _accountManagerModel.Accounts.Count == 0;
     //前回起動時の最後に表示されていたアカウントのメールアドレスが
     //読み込まれているアカウントリストにある場合はこれを表示する
     var recentlyUsedAccount = string.IsNullOrEmpty(Properties.Settings.Default.RecentlyUsedAccountEMailAddress)
         ? null : _accountManagerModel.Accounts.FirstOrDefault(account => account.Builder.Email == Properties.Settings.Default.RecentlyUsedAccountEMailAddress);
     if (recentlyUsedAccount != null)
         SelectedAccountIndex = _accountManagerModel.Accounts.IndexOf(recentlyUsedAccount);
     else
     {
         IsAccountSelectorMode = true;
         SelectedAccountIndex = -1;
     }
 }