private NotificationTimeline MapToTimeLine(Notification notification)
        {
            var timeline = new NotificationTimeline
            {
                NotificationId = notification.NotificationId,
                PostId         = notification.PostId,
                Message        = notification.Message,
                Title          = notification.Title,
                ReadStatus     = notification.ReadStatus,
                TimePassed     = (DateTime.UtcNow - notification.NotifacationTime).FormatDuration()
            };

            return(timeline);
        }
        private async void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            bool isInputOK = true;

            if (textTimelineName.Text == string.Empty)
            {
                MessageDialog dialog = new MessageDialog("タイムライン名が入力されていません", "入力エラー");
                await dialog.ShowAsync();

                isInputOK = false;
            }
            foreach (var t in viewModel.NowTimelineList)
            {
                if (t.ListTitle == textTimelineName.Text)
                {
                    MessageDialog dialog = new MessageDialog("タイムライン名が競合しています。固有のタイムライン名を入力してください", "入力エラー");
                    await dialog.ShowAsync();

                    isInputOK = false;
                }
            }
            if (this.comboBoxAccount.SelectedIndex == -1)
            {
                MessageDialog dialog = new MessageDialog("アカウント名が選択されていません", "入力エラー");
                await dialog.ShowAsync();

                isInputOK = false;
            }
            if (this.comboBoxTimelineType.SelectedIndex == -1)
            {
                MessageDialog dialog = new MessageDialog("タイムラインタイプが選択されていません", "入力エラー");
                await dialog.ShowAsync();

                isInputOK = false;
            }

            if (isInputOK == true)
            {
                TimelineBase   resultModel = null;
                TwitterAccount account     = (TwitterAccount)comboBoxAccount.SelectedItem;
                switch (comboBoxTimelineType.SelectedIndex)
                {
                case 0:
                    resultModel = new HomeTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                    break;

                case 1:
                    resultModel = new MentionTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);

                    break;

                case 2:
                    resultModel = new NotificationTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);

                    break;

                case 3:
                    if (textSearchWord.Text == string.Empty)
                    {
                        MessageDialog dialog = new MessageDialog("検索ワードが入力されていません", "入力エラー");
                        await dialog.ShowAsync();

                        return;
                    }
                    resultModel = new SearchTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, textSearchWord.Text, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);

                    break;

                case 4:
                    if (comboList.SelectedIndex == -1)
                    {
                        MessageDialog dialog = new MessageDialog("リストが選択されていません", "入力エラー");
                        await dialog.ShowAsync();

                        return;
                    }
                    resultModel = new ListTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, (TwitterList)comboList.SelectedItem, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);

                    break;

                case 5:
                    resultModel = new DirectMessageTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                    break;

                case 6:
                    if (textUser.Text == string.Empty)
                    {
                        MessageDialog dialog = new MessageDialog("ユーザー名が入力されていません", "入力エラー");
                        await dialog.ShowAsync();

                        return;
                    }
                    resultModel = new UserTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, textUser.Text, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);

                    break;

                case 7:
                    resultModel = new ImageTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                    break;

                case 8:
                    resultModel = new LinkTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);

                    break;
                }
                if (toggleTimelineFiltering.IsOn)
                {
                    resultModel.ExtractionAccountScreenNameStr = textExtractionAccount.Text;
                    resultModel.ExcludeAccountScreenNameStr    = textExcludeAccount.Text;
                    resultModel.ExtractionWordStr   = textExtractionWord.Text;
                    resultModel.ExcludeWordStr      = textExcludeWord.Text;
                    resultModel.IsTimelineFiltering = toggleTimelineFiltering.IsOn;
                    resultModel.IsNewNotification   = toggleNotification.IsOn;
                }

                viewModel.AddTimelineCommand.Execute(resultModel);
                onCreateCallBack(resultModel);
                this.Hide();
            }
        }
        private async void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            bool isInputOK = true;
            if (textTimelineName.Text == string.Empty)
            {
                MessageDialog dialog = new MessageDialog("タイムライン名が入力されていません","入力エラー");
                await dialog.ShowAsync();
                isInputOK = false;
            }
            foreach (var t in viewModel.NowTimelineList)
            {
                if (t.ListTitle == textTimelineName.Text)
                {
                    MessageDialog dialog = new MessageDialog("タイムライン名が競合しています。固有のタイムライン名を入力してください", "入力エラー");
                    await dialog.ShowAsync();
                    isInputOK = false;
                }
            }
            if (this.comboBoxAccount.SelectedIndex == -1)
            {
                MessageDialog dialog = new MessageDialog("アカウント名が選択されていません", "入力エラー");
                await dialog.ShowAsync();
                isInputOK = false;
            }
            if (this.comboBoxTimelineType.SelectedIndex == -1)
            {
                MessageDialog dialog = new MessageDialog("タイムラインタイプが選択されていません", "入力エラー");
                await dialog.ShowAsync();
                isInputOK = false;
            }

            if (isInputOK == true)
            {
                
                
                TimelineBase resultModel=null;
                TwitterAccount account=(TwitterAccount)comboBoxAccount.SelectedItem;
                switch(comboBoxTimelineType.SelectedIndex)
                {
                    case 0:
                        resultModel = new HomeTimeline(account, textTimelineName.Text,viewModel.GetNowTab().TabTitle,viewModel.Setting,viewModel.CallTimelineAction,viewModel.CallRowAction);
                        break;
                    case 1:
                        resultModel = new MentionTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                        
                        break;
                    case 2:
                        resultModel = new NotificationTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                        
                        break;
                    case 3:
                        if (textSearchWord.Text ==string.Empty)
                        {
                            MessageDialog dialog = new MessageDialog("検索ワードが入力されていません","入力エラー");
                            await dialog.ShowAsync();
                            return;
                        }
                        resultModel = new SearchTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, textSearchWord.Text, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                        
                        break;
                    case 4:
                        if (comboList.SelectedIndex==-1)
                        {
                            MessageDialog dialog = new MessageDialog("リストが選択されていません", "入力エラー");
                            await dialog.ShowAsync();
                            return;
                        }
                        resultModel = new ListTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, (TwitterList)comboList.SelectedItem, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                        
                        break;
                    case 5:
                        resultModel = new DirectMessageTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                        break;
                    case 6:
                        if (textUser.Text==string.Empty)
                        {
                            MessageDialog dialog = new MessageDialog("ユーザー名が入力されていません", "入力エラー");
                            await dialog.ShowAsync();
                            return;
                        }
                        resultModel = new UserTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, textUser.Text, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                        
                        break;
                    case 7:
                        resultModel = new ImageTimeline(account, textTimelineName.Text,viewModel.GetNowTab().TabTitle,viewModel.Setting,viewModel.CallTimelineAction,viewModel.CallRowAction);
                        break;
                    case 8:
                        resultModel = new LinkTimeline(account, textTimelineName.Text, viewModel.GetNowTab().TabTitle, viewModel.Setting, viewModel.CallTimelineAction, viewModel.CallRowAction);
                        
                        break;

                }
                if (toggleTimelineFiltering.IsOn)
                {
                    resultModel.ExtractionAccountScreenNameStr = textExtractionAccount.Text;
                    resultModel.ExcludeAccountScreenNameStr = textExcludeAccount.Text;
                    resultModel.ExtractionWordStr = textExtractionWord.Text;
                    resultModel.ExcludeWordStr = textExcludeWord.Text;
                    resultModel.IsTimelineFiltering = toggleTimelineFiltering.IsOn;
                    resultModel.IsNewNotification = toggleNotification.IsOn;
                }
                
                viewModel.AddTimelineCommand.Execute(resultModel);
                onCreateCallBack(resultModel);
                this.Hide();
            }
           
        }