コード例 #1
0
        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();
        }
コード例 #2
0
        internal void AddBubble(BubbleViewModel bubble)
        {
            if (bubble == null)
            {
                throw new ArgumentNullException("bubble");
            }

            _bubblesInternal.Add(bubble);
        }
コード例 #3
0
ファイル: AppState.cs プロジェクト: xgenvn/d-term
        public void AddProcessInstance(IProcessInstanceViewModel instance)
        {
            var subscription = instance.ProcessTerminated.ObserveOnDispatcher().Subscribe(@event =>
            {
                _processInstances.Remove(instance);
            });

            _processInstances.Add(instance);
        }
コード例 #4
0
        private ListItemModel AddAndSelectToControl(ListItemModel item, IReactiveList <ListItemModel> lstItem)
        {
            if (item == null)
            {
                return(null);
            }

            lstItem.Add(item);
            return(item);
        }
コード例 #5
0
        public Playlist(Episode source)
            : this()
        {
            var item = new PlaylistItem(source)
            {
                Playlist = this
            };

            items.Add(item);
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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;
                }
            }
        }
コード例 #8
0
        private void AddIfNotExists(ListItemModel item, IReactiveList <ListItemModel> lstItems)
        {
            if (item == null)
            {
                return;
            }

            if (lstItems.Any(e => e.IdKey == item.IdKey))
            {
                return;
            }

            lstItems.Add(item);
        }
コード例 #9
0
        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);
            }
        }