Ejemplo n.º 1
0
        public StoreDetailViewModel(
            IParameterViewStackService parameterViewStackService,
            IPopupViewStackService popupViewStackService,
            IStoreService storeService,
            IQueueService queueService,
            IDialogs dialogs)
            : base(parameterViewStackService)
        {
            _popupViewStackService = popupViewStackService;
            _storeService          = storeService;
            _queueService          = queueService;
            _dialogs = dialogs;


            var getStore =
                ReactiveCommand.CreateFromObservable <Guid, Unit>(ExecuteGetStore);

            this.WhenAnyValue(x => x.StoreId)
            .Where(x => x != Guid.Empty)
            .DistinctUntilChanged()
            .InvokeCommand(getStore)
            .DisposeWith(Subscriptions);

            InitializeData = ReactiveCommand.CreateFromObservable <Guid, Unit>(ExecuteInitializeData);
            Add            = ReactiveCommand.CreateFromObservable(ExecuteAdd);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="QueuesViewModel"/> class.
        /// </summary>
        /// <param name="popupViewStackService">The popup view stack service.</param>
        /// <param name="queueService">The queue service.</param>
        public QueuesViewModel(IPopupViewStackService popupViewStackService, IQueueService queueService)
            : base(popupViewStackService)
        {
            _queueService = queueService;

            _queueService
            .Queue
            .Connect()
            .RefCount()
            .Transform(x => new QueuedItemViewModel(x))
            .AutoRefresh(x => x.CurrentQueueTime)
            .Sort(SortExpressionComparer <QueuedItemViewModel> .Descending(x => x.CurrentQueueTime))
            .ObserveOn(RxApp.MainThreadScheduler)
            .Bind(out _queue)
            .DisposeMany()
            .Subscribe()
            .DisposeWith(Subscriptions);

            Observable
            .Interval(TimeSpan.FromSeconds(5))
            .Subscribe(_ => _queueService.GetQueue(Guid.Empty))
            .DisposeWith(Subscriptions);

            InitializeData = ReactiveCommand.CreateFromObservable(ExecuteInitialize);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TabViewModel"/> class.
 /// </summary>
 /// <param name="tabTitle">The tab title.</param>
 /// <param name="tabIcon">The tab icon.</param>
 /// <param name="stackService">The stack service.</param>
 /// <param name="pageCreate">The page factory.</param>
 public TabViewModel(string tabTitle, string tabIcon, IPopupViewStackService stackService, Func <ViewModelBase> pageCreate)
     : base(stackService)
 {
     TabIcon   = tabIcon;
     TabTitle  = tabTitle;
     ViewModel = pageCreate();
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UserViewModel"/> class.
        /// </summary>
        /// <param name="popupViewStackService">The popup view stack service.</param>
        /// <param name="settings">The settings.</param>
        public UserViewModel(IPopupViewStackService popupViewStackService, ISettings settings)
            : base(popupViewStackService)
        {
            settings
            .WhenPropertyValueChanges(x => x.UserName)
            .ToProperty(this, nameof(UserName), string.Empty)
            .DisposeWith(Subscriptions);

            SignUp = ReactiveCommand.CreateFromObservable(ExecuteSignUp);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MainViewModel"/> class.
 /// </summary>
 /// <param name="popupViewStackService">The popup view stack service.</param>
 /// <param name="notificationManager">The notification manager.</param>
 /// <param name="blobCache">The blob cache.</param>
 public MainViewModel(
     IPopupViewStackService popupViewStackService,
     INotificationManager notificationManager,
     IBlobCache blobCache)
     : base(popupViewStackService)
 {
     _popupViewStackService = popupViewStackService;
     _notificationManager   = notificationManager;
     _blobCache             = blobCache;
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="StoreSearchViewModel"/> class.
        /// </summary>
        /// <param name="popupViewStackService">The popup view stack service.</param>
        /// <param name="storeService">The store service.</param>
        /// <param name="notificationManager">The notification manager.</param>
        public StoreSearchViewModel(
            IPopupViewStackService popupViewStackService,
            IStoreService storeService,
            INotificationManager notificationManager)
            : base(popupViewStackService)
        {
            _popupViewStackService = popupViewStackService;
            _storeService          = storeService;
            _notificationManager   = notificationManager;

            _filterFunction.DisposeWith(Subscriptions);

            _storeService
            .Stores
            .Connect()
            .RefCount()
            .Filter(_filterFunction.AsObservable())
            .Transform(x => new StoreCardViewModel(x))
            .ObserveOn(RxApp.MainThreadScheduler)
            .Bind(out _stores)
            .DisposeMany()
            .Subscribe()
            .DisposeWith(Subscriptions);

            _storeService
            .Metadata
            .ObserveOn(RxApp.MainThreadScheduler)
            .Bind(out _storeNames)
            .DisposeMany()
            .Subscribe()
            .DisposeWith(Subscriptions);

            var isLoading =
                this.WhenAnyObservable(
                    x => x.Search.IsExecuting,
                    x => x.InitializeData.IsExecuting,
                    x => x.Details.IsExecuting,
                    x => x.Category.IsExecuting,
                    (search, initialize, details, category) =>
                    search || initialize || details || category);

            isLoading
            .ToProperty(this, nameof(IsLoading), out _isLoading, deferSubscription: true)
            .DisposeWith(Subscriptions);

            var canExecute = isLoading.Select(x => !x).StartWith(true);

            Search         = ReactiveCommand.CreateFromObservable(ExecuteSearch, canExecute);
            Details        = ReactiveCommand.CreateFromObservable <StoreCardViewModel, Unit>(ExecuteDetails);
            InitializeData = ReactiveCommand.CreateFromObservable(ExecuteInitializeData);
            Category       = ReactiveCommand.CreateFromObservable <string, Unit>(ExecuteCategory, canExecute);
        }
Ejemplo n.º 7
0
        public DrinkCollectionViewModel()
        {
            _viewStackService = Locator.Current.GetService <IPopupViewStackService>();
            _coffeeService    = Locator.Current.GetService <ICoffeeService>();

            CoffeeDetails = ReactiveCommand.CreateFromObservable <DrinkViewModel, Unit>(ExecuteNavigate).DisposeWith(Garbage);

            _coffeeService
            .ChangeSet
            .SubscribeOn(RxApp.TaskpoolScheduler)
            .Transform(x => new DrinkViewModel(x.Id, x.Name, x.Species, x.Regions, x.Image))
            // .Sort(SortExpressionComparer<DrinkViewModel>.Ascending(p => p.Name))
            .ObserveOn(RxApp.MainThreadScheduler)
            .Bind(out _coffeeList)
            .DisposeMany()
            .Subscribe()
            .DisposeWith(Garbage);
        }
        public NavigationMenuViewModel(IDetailNavigation detailNavigation)
        {
            _detailNavigation = detailNavigation;

            Items = new ReadOnlyObservableCollection <NavigationItemViewModel>(
                new ObservableCollection <NavigationItemViewModel>
            {
                new NavigationItemViewModel
                {
                    Title = "List View", Icon = ListAlt, IViewFor = typeof(ListOptionsViewModel)
                },
                new NavigationItemViewModel
                {
                    Title = "Collection View", Icon = LayerGroup, IViewFor = typeof(CollectionOptionsViewModel)
                }
            });

            Navigate = ReactiveCommand.CreateFromObservable <NavigationItemViewModel, Unit>(ExecuteNavigate);
        }
Ejemplo n.º 9
0
        public CollectionOptionsViewModel()
        {
            _viewStackService = Locator.Current.GetService <IPopupViewStackService>();

            Navigate = ReactiveCommand.CreateFromObservable <CollectionOptionViewModel, Unit>(ExecuteNavigate);

            Items = new ObservableCollection <CollectionOptionViewModel>
            {
                new CollectionOptionViewModel {
                    Option = CollectionOption.DetailNavigation
                },
                new CollectionOptionViewModel {
                    Option = CollectionOption.Search
                },
                new CollectionOptionViewModel {
                    Option = CollectionOption.InfiniteScroll
                }
            };
        }
Ejemplo n.º 10
0
        public CoffeeListViewModel(IPopupViewStackService parameterViewStackService, ICoffeeService coffeeService)
        {
            _viewStackService = parameterViewStackService;
            _coffeeService    = coffeeService;

            CoffeeDetails = ReactiveCommand.CreateFromObservable <CoffeeCellViewModel, Unit>(ExecuteNavigate);

            Refresh = ReactiveCommand.CreateFromTask(ExecuteRefresh);

            _coffeeService
            .ChangeSet
            .Transform(x => new CoffeeCellViewModel(x.Id, x.Name, x.Species, x.Regions, x.Image))
            .Sort(SortExpressionComparer <CoffeeCellViewModel> .Ascending(p => p.Name))
            .Bind(out _coffeeList)
            .DisposeMany()
            .Subscribe()
            .DisposeWith(Garbage);

            CoffeeDetails = ReactiveCommand.CreateFromObservable <CoffeeCellViewModel, Unit>(ExecuteNavigate).DisposeWith(Garbage);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SplashViewModel"/> class.
        /// </summary>
        /// <param name="popupViewStackService">The popup view stack service.</param>
        /// <param name="appStartup">The app startup.</param>
        public SplashViewModel(IPopupViewStackService popupViewStackService, IAppStartup appStartup)
            : base(popupViewStackService)
        {
            _appStartup = appStartup;
            Initialize  = ReactiveCommand.CreateFromObservable(ExecuteInitialize);
            Navigate    = ReactiveCommand.CreateFromObservable(ExecuteNavigate);

            var initializing =
                this.WhenAnyObservable(x => x.Initialize.IsExecuting)
                .StartWith(false);

            initializing
            .Zip(initializing.Skip(1), (first, second) => first && !second)
            .Where(x => x)
            .Select(_ => Unit.Default)
            .InvokeCommand(Navigate);

            _appStartup
            .WhenPropertyValueChanges(x => x.IsCompleted)
            .DistinctUntilChanged()
            .ToProperty(this, nameof(IsLoading), out _loading, scheduler: RxApp.MainThreadScheduler)
            .DisposeWith(Subscriptions);
        }
Ejemplo n.º 12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BottomMenuViewModel"/> class.
 /// </summary>
 /// <param name="popupViewStackService">The popup view stack service.</param>
 public BottomMenuViewModel(IPopupViewStackService popupViewStackService)
     : base(popupViewStackService) => TabViewModels = new List <Func <IPopupViewStackService, TabViewModel> >
Ejemplo n.º 13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ViewModelBase"/> class.
 /// </summary>
 /// <param name="popupViewStackService">The popup view stack service.</param>
 protected ViewModelBase(IPopupViewStackService popupViewStackService) => ViewStackService = popupViewStackService;
Ejemplo n.º 14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SignUpViewModel"/> class.
 /// </summary>
 /// <param name="popupViewStackService">The popup view stack service.</param>
 public SignUpViewModel(IPopupViewStackService popupViewStackService)
     : base(popupViewStackService) => Cancel = ReactiveCommand.CreateFromObservable(ExecuteCancel);