public QuestionBlockListViewModel(Api api, OptionsViewModel options) { _api = api; QuestionBlocks = new ReactiveList <QuestionBlockViewModel>(); var selectedSiteList = options.SelectedSites; selectedSiteList.Changed .Where(args => args.Action == NotifyCollectionChangedAction.Add) .SelectMany(args => args.NewItems .OfType <StackExchangeSite>() .Select(site => CreateQuestionBlock(site, options.QuestionsPerBlock))) .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(block => QuestionBlocks.Add(block)); selectedSiteList.Changed .Where(args => args.Action == NotifyCollectionChangedAction.Remove) .SelectMany(args => args.OldItems .OfType <StackExchangeSite>() .Select(site => QuestionBlocks.FirstOrDefault(qb => qb.Site.api_site_parameter == site.api_site_parameter))) .Where(qb => qb != null) .ObserveOn(RxApp.MainThreadScheduler) .Subscribe(qb => QuestionBlocks.Remove(qb)); options.WhenAnyValue(o => o.UpdateInterval) .CombineLatest(options.WhenAnyValue(o => o.QuestionsPerBlock), (interval, questionCount) => new { interval, questionCount }) .Select(a => Observable.Interval(TimeSpan.FromMinutes(a.interval)) .Select(_ => a.questionCount) .StartWith(a.questionCount)) .Switch() .SelectMany(questionCount => ReloadAllQuestions(questionCount)) .Subscribe(); }
internal void AddBubble(BubbleViewModel bubble) { if (bubble == null) { throw new ArgumentNullException("bubble"); } _bubblesInternal.Add(bubble); }
public void AddProcessInstance(IProcessInstanceViewModel instance) { var subscription = instance.ProcessTerminated.ObserveOnDispatcher().Subscribe(@event => { _processInstances.Remove(instance); }); _processInstances.Add(instance); }
private ListItemModel AddAndSelectToControl(ListItemModel item, IReactiveList <ListItemModel> lstItem) { if (item == null) { return(null); } lstItem.Add(item); return(item); }
public Playlist(Episode source) : this() { var item = new PlaylistItem(source) { Playlist = this }; items.Add(item); }
public static void ClearAndAddRange <T>(this IReactiveList <T> lstSource, IEnumerable <T> lstAdditional) { if (lstAdditional == null) { return; } lstSource.Clear(); foreach (var item in lstAdditional) { lstSource.Add(item); } }
private void DoUpdate(IChangeSet <TObject, TKey> changes) { foreach (var change in changes) { switch (change.Reason) { case ChangeReason.Add: _target.Add(change.Current); break; case ChangeReason.Remove: _target.Remove(change.Current); break; case ChangeReason.Update: { _target.Remove(change.Previous.Value); _target.Add(change.Current); } break; } } }
private void AddIfNotExists(ListItemModel item, IReactiveList <ListItemModel> lstItems) { if (item == null) { return; } if (lstItems.Any(e => e.IdKey == item.IdKey)) { return; } lstItems.Add(item); }
private void Start() { // Setting View here is not a best practice. This should be improved. SetView(); var unitsContainer = CreateUnitsContainer(); for (var i = 0; i < _unitCount; i++) { var unit = Instantiate(_unitPrefab, unitsContainer); unit.Init(i + 1); _units.Add(unit); } }