Example #1
0
        public TweetsViewModel(ListProvider ListIdProvider, ITabFactory tabFactory)
        {
            Disposable = new CompositeDisposable();

            TabFactory        = tabFactory;
            this.ListProvider = ListIdProvider;
            ListId            = this.ListProvider.Id.ToReadOnlyReactivePropertySlim();
            Tabs = new ObservableCollection <TabBase>();

            // TODO 前回起動時のタブを呼び出す処理を追加

            OnLoaded = new ReactiveCommand <RoutedEventArgs>()
                       .AddTo(Disposable);
            OnCurrentTabChanged = new ReactiveCommand <SelectionChangedEventArgs>()
                                  .AddTo(Disposable);
            ReloadPast = new ReactiveCommand()
                         .AddTo(Disposable);
            TabCloseCommand = new ReactiveCommand <RoutedEventArgs>()
                              .AddTo(Disposable);
            CurrentTabChangedCommandByButtonCommand = new ReactiveCommand <RoutedEventArgs>()
                                                      .AddTo(Disposable);

            ListId.Subscribe(async e => await OpenListTabAction(e))
            .AddTo(Disposable);
            OnLoaded.Subscribe(e => OnLoadedAction(e))
            .AddTo(Disposable);
            OnCurrentTabChanged.Subscribe(e => OnCurrentTabChangedAction())
            .AddTo(Disposable);
            ReloadPast.Subscribe(_ => ReloadPastAction())
            .AddTo(Disposable);
            TabCloseCommand.Subscribe(e => OnTabClose(e))
            .AddTo(Disposable);
            CurrentTabChangedCommandByButtonCommand.Subscribe(e => CurrentTabChangedCommandByButton(e))
            .AddTo(Disposable);
        }