Beispiel #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.ViewModels.LoginPageViewModel"/> class.
        /// </summary>
        /// <param name="signalRClient">Signal RC lient.</param>
        /// <param name="scheduler">Scheduler.</param>
        /// <param name="applicationStateHandler">Application state handler.</param>
        /// <param name="storage">Storage.</param>
        /// <param name="webServiceController">Web service controller.</param>
        /// <param name="log">Log.</param>
        /// <param name="device">Device.</param>
        public LoginPageViewModel(IScheduler scheduler, ApplicationStateHandler applicationStateHandler,
                                  ISQLiteStorage storage, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                                  IPathLocator pathLocator, ILogger log, IDevice device, IScreen hostScreen, ILocationManager locationManager)
            : base(storage, scheduler, log, applicationStateHandler, webServiceController, googleMapsWebServiceController, pathLocator, hostScreen, locationManager)
        {
            Title = "Welcome";

            _webServiceController = webServiceController;
            _device = device;

            scheduler.ScheduleAsync((arg1, arg2) => SetupSQLite());
            scheduler.ScheduleAsync((arg1, arg2) => Load());

            var canLogin = this.WhenAnyValue(
                vm => vm.Username,
                vm => vm.Password,
                vm => vm.IsLoading,
                (username, password, loading) =>
                !string.IsNullOrEmpty(Username) &&
                !string.IsNullOrEmpty(Password) &&
                !IsLoading);

            LoginCommand = ReactiveCommand.CreateFromObservable(LoginAsync,
                                                                canLogin,
                                                                Scheduler);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:FileStorage.Portable.ViewModels.MapPageViewModel"/> class.
        /// </summary>
        /// <param name="navigation">Navigation.</param>
        /// <param name="commandFactory">Command factory.</param>
        public FilesPageViewModel(INavigationService navigation, Func <Action <object>, ICommand> commandFactory,
                                  IMethods methods, ISQLiteStorage storage, Func <FileItemViewModel> fileFactory)
            : base(navigation, methods)
        {
            DataChanges = new Subject <DataChange>();

            // retrieve main thread context
            _context     = SynchronizationContext.Current;
            _storage     = storage;
            _fileFactory = fileFactory;

            Cells = new ObservableCollection <FileItemViewModel>();

            _editFileCommand = commandFactory(async(file) =>
            {
                await Navigation.Navigate(PageNames.EditFilePage, new Dictionary <string, object>()
                {
                    { "filename", (file as FileItemViewModel).FileName },
                    { "contents", (file as FileItemViewModel).Contents }
                });
            });

            _createFileCommand = commandFactory(async(obj) =>
            {
                var fileName = await ShowEntryAlert("Enter file name:");

                if (!string.IsNullOrEmpty(fileName))
                {
                    await Navigation.Navigate(PageNames.EditFilePage, new Dictionary <string, object>()
                    {
                        { "filename", fileName }
                    });
                }
            });
        }
Beispiel #3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:Camera.Portable.ViewModels.ViewModelBase"/> class.
        /// </summary>
        /// <param name="navigation">Navigation.</param>
        public ViewModelBase(INavigationService navigation, ISQLiteStorage storage)
        {
            Navigation = navigation;
            Storage    = storage;

            //Context = new AuthenticationContext("https://login.windows.net/common");
        }
Beispiel #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.Common.ApplicationStateHandler"/> class.
        /// </summary>
        public ApplicationStateHandler(ISQLiteStorage storage)
        {
            _storage = storage;

            StateUpdated       = new Subject <ApplicationUpdatedArgs>();
            ApplicationLoading = new Subject <bool>();
        }
Beispiel #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.ViewModels.ViewModelBase"/> class.
        /// </summary>
        /// <param name="signalRClient">Signal RC lient.</param>
        public ViewModelBase(ISQLiteStorage storage, IScheduler scheduler, Logging.ILogger log,
                             ApplicationStateHandler applicationStateHandler, WebServiceController webServiceController,
                             GoogleMapsWebServiceController googleMapsWebServiceController, IPathLocator pathLocator, IScreen hostScreen,
                             ILocationManager locationManager)
        {
            HostScreen = hostScreen;

            Locations       = new ObservableCollection <Location>();
            CurrentLocation = new Location();

            LocationManager = locationManager;

            ConnectedStatusMessage = Labels.ConnectedTitle.ToUpper();

            Storage = storage;
            scheduler.Schedule((arg1) => Storage.CreateSQLiteConnection());

            WebServiceController           = webServiceController;
            GoogleMapsWebServiceController = googleMapsWebServiceController;
            PathLocator = pathLocator;

            Subscriptions = new CompositeDisposable();

            Scheduler = scheduler;
            ApplicationStateHandler = applicationStateHandler;

            Log = log;
            Tag = $"{GetType()} ";
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.ViewModels.ContactListItemViewModel"/> class.
 /// </summary>
 /// <param name="storage">Storage.</param>
 /// <param name="scheduler">Scheduler.</param>
 /// <param name="signalRClient">Signal RC lient.</param>
 /// <param name="log">Log.</param>
 /// <param name="applicationStateHandler">Application state handler.</param>
 /// <param name="webServiceController">Web service controller.</param>
 /// <param name="googleMapsWebServiceController">Google maps web service controller.</param>
 /// <param name="pathLocator">Path locator.</param>
 /// <param name="hostScreen">Host screen.</param>
 /// <param name="locationManager">Location manager.</param>
 public ContactListItemViewModel(ISQLiteStorage storage, IScheduler scheduler, ILogger log,
                                 ApplicationStateHandler applicationStateHandler, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                                 IPathLocator pathLocator, IScreen hostScreen, ILocationManager locationManager)
     : base(storage, scheduler, log, applicationStateHandler, webServiceController, googleMapsWebServiceController,
            pathLocator, hostScreen, locationManager)
 {
     Height = 40;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:FileStorage.Portable.ViewModels.MainPageViewModel"/> class.
        /// </summary>
        /// <param name="navigation">Navigation.</param>
        /// <param name="commandFactory">Command factory.</param>
        /// <param name="methods">Methods.</param>
        public MainPageViewModel(INavigationService navigation, Func <Action, ICommand> commandFactory,
                                 IMethods methods, ISQLiteStorage storage) : base(navigation, methods)
        {
            _exitCommand     = commandFactory(() => methods.Exit());
            _locationCommand = commandFactory(async() => await Navigation.Navigate(PageNames.FilesPage, null));

            _storage = storage;

            SetupSQLite().ConfigureAwait(false);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.ViewModels.TetrixPageViewModelBase"/> class.
        /// </summary>
        /// <param name="storage">Storage.</param>
        /// <param name="scheduler">Scheduler.</param>
        /// <param name="signalRClient">Signal RC lient.</param>
        /// <param name="log">Log.</param>
        /// <param name="applicationStateHandler">Application state handler.</param>
        protected TetrixPageViewModelBase(ISQLiteStorage storage, IScheduler scheduler, ILogger log,
                                          ApplicationStateHandler applicationStateHandler, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                                          IPathLocator pathLocator, IScreen hostScreen, ILocationManager locationManager)
            : base(storage, scheduler, log, applicationStateHandler, webServiceController, googleMapsWebServiceController,
                   pathLocator, hostScreen, locationManager)
        {
            Cells = new ObservableRangeCollection <TetrixViewModelBase>();

            DataChanges = new Subject <DataChange>();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.WebServices.WebServiceControllerBase"/> class.
        /// </summary>
        /// <param name="storage">Storage.</param>
        /// <param name="log">Log.</param>
        /// <param name="clientHandler">Client handler.</param>
        public WebServiceControllerBase(ISQLiteStorage storage, ILogger log, HttpClientHandler clientHandler, IScheduler scheduler,
                                        IUserDefaults userDefaults)
        {
            Log = log;
            Tag = string.Format("{0} ", GetType());

            Storage   = storage;
            Scheduler = scheduler;

            ClientHandler = clientHandler;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.ViewModels.HomePageViewModel"/> class.
        /// </summary>
        /// <param name="signalRClient">Signal RC lient.</param>
        /// <param name="scheduler">Scheduler.</param>
        /// <param name="applicationStateHandler">Application state handler.</param>
        /// <param name="storage">Storage.</param>
        /// <param name="webServiceController">Web service controller.</param>
        /// <param name="log">Log.</param>
        /// <param name="device">Device.</param>
        public SearchResultsPageViewModel(IScheduler scheduler, ApplicationStateHandler applicationStateHandler,
                                          ISQLiteStorage storage, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                                          IPathLocator pathLocator, ILogger log, IDevice device, IScreen hostScreen, ILocationManager locationManager)
            : base(storage, scheduler, log, applicationStateHandler, webServiceController,
                   googleMapsWebServiceController, pathLocator, hostScreen, locationManager)
        {
            Title = "Results";

            Results = new ReactiveList <EReactiveUIAroundMeListItemViewModel>();

            _webServiceController = webServiceController;
            _device = device;
        }
Beispiel #11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:Camera.Portable.ViewModels.LoginPageViewModel"/> class.
        /// </summary>
        /// <param name="navigation">Navigation.</param>
        /// <param name="commandFactory">Command factory.</param>
        /// <param name="methods">Methods.</param>
        public LoginPageViewModel(INavigationService navigation, Func <Action, ICommand> commandFactory,
                                  IMethods methods, ILogger logger, ISQLiteStorage storage)
            : base(navigation, storage)
        {
            _methods = methods;

            _exitCommand = commandFactory(async() =>
            {
                await NotifyAlert("GoodBye!!");

                _methods.Exit();
            });
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.ViewModels.HomePageViewModel"/> class.
        /// </summary>
        /// <param name="signalRClient">Signal RC lient.</param>
        /// <param name="scheduler">Scheduler.</param>
        /// <param name="applicationStateHandler">Application state handler.</param>
        /// <param name="storage">Storage.</param>
        /// <param name="webServiceController">Web service controller.</param>
        /// <param name="log">Log.</param>
        /// <param name="device">Device.</param>
        public MapPageViewModel(IScheduler scheduler, ApplicationStateHandler applicationStateHandler,
                                ISQLiteStorage storage, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                                IPathLocator pathLocator, ILogger log, IDevice device, IScreen hostScreen, ILocationManager locationManager)
            : base(storage, scheduler, log, applicationStateHandler, webServiceController, googleMapsWebServiceController, pathLocator, hostScreen, locationManager)
        {
            Title = "Results";

            Feedbacks = new ReactiveList <FeedbackListItemViewModel>();
            Infos     = new ReactiveList <TetrixViewModelBase>();
            Infos.Add(new HeaderListItemViewModel(storage, scheduler, log, applicationStateHandler,
                                                  webServiceController, googleMapsWebServiceController,
                                                  pathLocator, hostScreen, locationManager)
            {
                Title = "Contacts"
            });

            foreach (var icon in icons)
            {
                Infos.Add(new ContactListItemViewModel(storage, scheduler,
                                                       log, applicationStateHandler,
                                                       webServiceController,
                                                       googleMapsWebServiceController,
                                                       pathLocator, hostScreen, locationManager)
                {
                    Icon = string.Format("{0}.png", icon)
                });
            }

            var canSelectFeedback = this.WhenAnyValue(
                vm => vm.Feedbacks,
                vm => vm.IsLoading,
                (feedbacks, isLoading) => !feedbacks.IsEmpty && !isLoading);

            FeedbackSelectCommand = ReactiveCommand.CreateFromObservable(SelectFeedbackAsync,
                                                                         canSelectFeedback, Scheduler);

            var canSelectTravelMode = this.WhenAnyValue(vm => vm.IsLoading,
                                                        (isLoading) => !isLoading);

            TransitCommand = ReactiveCommand.CreateFromObservable(() => CreatePathAsync(GoogleMapsTravelModes.Transit),
                                                                  canSelectTravelMode, Scheduler);

            DrivingCommand = ReactiveCommand.CreateFromObservable(() => CreatePathAsync(GoogleMapsTravelModes.Driving),
                                                                  canSelectTravelMode, Scheduler);

            WalkingCommand = ReactiveCommand.CreateFromObservable(() => CreatePathAsync(GoogleMapsTravelModes.Walking),
                                                                  canSelectTravelMode, Scheduler);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.ViewModels.TetrixViewModelBase"/> class.
        /// </summary>
        protected SelectableViewModelBase(ISQLiteStorage storage, IScheduler scheduler, ILogger log,
                                          ApplicationStateHandler applicationStateHandler, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                                          IPathLocator pathLocator, IScreen hostScreen, ILocationManager locationManager)
            : base(storage, scheduler, log, applicationStateHandler, webServiceController, googleMapsWebServiceController, pathLocator, hostScreen, locationManager)
        {
            // todo:  working on this logic
            _selectAsync = Observable.Create((IObserver <bool> observer) =>
            {
                IsSelected = !IsSelected;
                return(Disposable.Empty);
            }).Select(x => Unit.Default);

            var canExecute = this.WhenAnyValue(x => x.IsSelectable,
                                               (selectable) => !selectable);

            _selectCommand = ReactiveCommand.CreateFromObservable(() => _selectAsync, canExecute);
        }
Beispiel #14
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.ViewModels.HomePageViewModel"/> class.
        /// </summary>
        /// <param name="signalRClient">Signal RC lient.</param>
        /// <param name="scheduler">Scheduler.</param>
        /// <param name="applicationStateHandler">Application state handler.</param>
        /// <param name="storage">Storage.</param>
        /// <param name="webServiceController">Web service controller.</param>
        /// <param name="log">Log.</param>
        /// <param name="device">Device.</param>
        public FlyoutMenuPageViewModel(IScheduler scheduler, ApplicationStateHandler applicationStateHandler,
                                       ISQLiteStorage storage, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                                       IPathLocator pathLocator, ILogger log, IDevice device, IScreen hostScreen, ILocationManager locationManager)
            : base(storage, scheduler, log, applicationStateHandler, webServiceController,
                   googleMapsWebServiceController, pathLocator, hostScreen, locationManager)
        {
            Title = "Results";

            Results = new ReactiveList <EReactiveUIAroundMeListItemViewModel>();

            _webServiceController = webServiceController;
            _device = device;

            var canSelect = this.WhenAnyValue(vm => vm.Results,
                                              (results) => !results.IsEmpty && !IsLoading);

            ResultSelectCommand = ReactiveCommand.CreateFromObservable(SelectAsync,
                                                                       canSelect, Scheduler);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.ViewModels.HomePageViewModel"/> class.
        /// </summary>
        /// <param name="signalRClient">Signal RC lient.</param>
        /// <param name="scheduler">Scheduler.</param>
        /// <param name="applicationStateHandler">Application state handler.</param>
        /// <param name="storage">Storage.</param>
        /// <param name="webServiceController">Web service controller.</param>
        /// <param name="log">Log.</param>
        /// <param name="device">Device.</param>
        public HomePageViewModel(IScheduler scheduler, ApplicationStateHandler applicationStateHandler,
                                 ISQLiteStorage storage, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                                 IPathLocator pathLocator, ILogger log, IDevice device, IScreen hostScreen, ILocationManager locationManager)
            : base(storage, scheduler, log, applicationStateHandler, webServiceController, googleMapsWebServiceController, pathLocator, hostScreen,
                   locationManager)
        {
            Title = "Welcome";

            _webServiceController = webServiceController;
            _device = device;

            scheduler.ScheduleAsync((arg1, arg2) => SetupSQLite());
            scheduler.ScheduleAsync((arg1, arg2) => Load());

            var canSearch = this.WhenAnyValue(
                vm => vm.CurrentLocation,
                (location) => location.Timestamp != default(DateTimeOffset));

            SearchCommand = ReactiveCommand.CreateFromObservable(SearchAsync, canSearch, scheduler);
        }
Beispiel #16
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:Camera.Portable.ViewModels.MainPageViewModel"/> class.
        /// </summary>
        /// <param name="navigation">Navigation.</param>
        /// <param name="commandFactory">Command factory.</param>
        /// <param name="methods">Methods.</param>
        public MainPageViewModel(INavigationService navigation, Func <Action, ICommand> commandFactory,
                                 IMethods methods, ILogger logger, ISQLiteStorage storage)
            : base(navigation, storage)
        {
            _storage = storage;
            _methods = methods;

            _exitCommand = commandFactory(async() =>
            {
                await NotifyAlert("GoodBye!!");

                _methods.Exit();
            });

            _loginCommand = commandFactory(async() =>
            {
                await navigation.Navigate(PageNames.CameraPage, new Dictionary <string, object>());
            });

            SetupSQLite().ConfigureAwait(false);
            GetToken().ConfigureAwait(false);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="T:FileStorage.Portable.ViewModels.MapPageViewModel"/> class.
        /// </summary>
        /// <param name="navigation">Navigation.</param>
        /// <param name="commandFactory">Command factory.</param>
        public EditFilePageViewModel(INavigationService navigation, Func <Action, ICommand> commandFactory,
                                     IMethods methods, ISQLiteStorage storage)
            : base(navigation, methods)
        {
            _storage = storage;

            _saveFileCommand = commandFactory(async() =>
            {
                await _storage.InsertObject(new FileStorable()
                {
                    Key      = FileName,
                    Contents = Contents
                });

                NotifyAlert("File saved.");
            });

            _deleteFileCommand = commandFactory(async() =>
            {
                await _storage.DeleteObjectByKey <FileStorable>(FileName);
                await Navigation.Pop();
            });
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.ViewModels.TetrixViewModelBase"/> class.
 /// </summary>
 protected TetrixViewModelBase(ISQLiteStorage storage, IScheduler scheduler, ILogger log,
                               ApplicationStateHandler applicationStateHandler, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                               IPathLocator pathLocator, IScreen hostScreen, ILocationManager locationManager)
     : base(storage, scheduler, log, applicationStateHandler, webServiceController, googleMapsWebServiceController, pathLocator, hostScreen, locationManager)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:Medibio.Portable.WebServices.AuthGeoWebServiceController"/> class.
 /// </summary>
 /// <param name="clientHandler">Client handler.</param>
 public GoogleMapsWebServiceController(ISQLiteStorage storage, ILogger log, HttpClientHandler clientHandler,
                                       IScheduler scheduler, IUserDefaults userDefaults) : base(storage, log, clientHandler, scheduler, userDefaults)
 {
     BaseUrl = Config.GoogleMapsApiUrl;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="T:Medibio.Portable.WebServices.AuthWebServiceController"/> class.
 /// </summary>
 /// <param name="clientHandler">Client handler.</param>
 public WebServiceController(ISQLiteStorage storage, ILogger log, HttpClientHandler clientHandler,
                             IScheduler scheduler, IUserDefaults userDefaults) : base(storage, log, clientHandler, scheduler, userDefaults)
 {
     BaseUrl = userDefaults.Host;
 }
Beispiel #21
0
 /// <summary>
 /// Initializes a new instance of the <see cref="T:Viime.Portable.ViewModels.CameraPageViewModel"/> class.
 /// </summary>
 /// <param name="navigation">Navigation.</param>
 /// <param name="commandFactory">Command factory.</param>
 /// <param name="storage">Storage.</param>
 public CameraPageViewModel(INavigationService navigation, Func <Action,
                                                                 ICommand> commandFactory, ISQLiteStorage storage)
     : base(navigation, storage)
 {
 }
Beispiel #22
0
 public void CreateTables()
 {
     TodoItemsDB = new SQLiteStorage <TodoItem>("");
 }
Beispiel #23
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:ReactiveUIAroundMe.Portable.ViewModels.SuperAdminPageViewModel"/> class.
        /// </summary>
        /// <param name="storage">Storage.</param>
        /// <param name="scheduler">Scheduler.</param>
        /// <param name="signalRClient">Signal RC lient.</param>
        /// <param name="log">Log.</param>
        /// <param name="applicationStateHandler">Application state handler.</param>
        /// <param name="webServiceController">Web service controller.</param>
        public SuperAdminPageViewModel(ISQLiteStorage storage, IScheduler scheduler, ILogger log,
                                       ApplicationStateHandler applicationStateHandler, WebServiceController webServiceController, GoogleMapsWebServiceController googleMapsWebServiceController,
                                       IPathLocator pathLocator, IScreen hostScreen, ILocationManager locationManager)
            : base(storage, scheduler, log, applicationStateHandler, webServiceController, googleMapsWebServiceController, pathLocator,
                   hostScreen, locationManager)
        {
            _pathLocator = pathLocator;

            Title = "Super Admin";

            selection = (obj) =>
            {
                var parameters = (obj as TetrixViewModelBase)?.SelectParameters;

                object selectKey;
                parameters.TryGetValue("ViewModel", out selectKey);
                if (selectKey != null)
                {
                    HostScreen.Router.Navigate.Execute(new SuperAdminPageViewModel(Storage, Scheduler,
                                                                                   Log, ApplicationStateHandler, WebServiceController,
                                                                                   GoogleMapsWebServiceController, PathLocator, HostScreen, LocationManager));

                    var viewModelType = Type.GetType(string.Format("ReactiveUIAroundMe.Portable.ViewModels.{0}", selectKey));
                    var instance      = (ViewModelBase)Activator.CreateInstance(viewModelType,
                                                                                new object[] { Storage, Scheduler,
                                                                                               Log, ApplicationStateHandler, WebServiceController,
                                                                                               PathLocator, HostScreen });

                    HostScreen.Router.Navigate.Execute(instance);
                }
                ;

                return(Unit.Default);
            };

            InitSelectCommand((obj) => selection(obj));

            var tiles = _tileTiles.Select((title, index) =>
            {
                var tileModel = new TileViewModel(Storage, Scheduler, Log,
                                                  ApplicationStateHandler, WebServiceController, GoogleMapsWebServiceController, PathLocator, HostScreen, LocationManager);
                tileModel.Title       = _tileTiles[index];
                tileModel.BannerImage = _pathLocator.GetPath(_bannerImages[index], "jpg");
                tileModel.TileImage   = _pathLocator.GetPath("profile_image", "jpeg");

                // hack: for mac until wet selectable cells working for collection views
                tileModel.InitSelectionCommand((obj) => selection(obj));
                tileModel.SelectParameters = new Dictionary <string, object>()
                {
                    { "ViewModel", _tileNavigationViewModels[index] },
                };

                tileModel.UseXSpacing = true;
                tileModel.UseYSpacing = true;
                tileModel.Layout      = LayoutType.Fifth;
                tileModel.Position    = index;

                return(tileModel);
            });

            Cells.AddRange(tiles);
        }