示例#1
0
        public ConfigureActionViewModel(IDeviceRepository deviceRepository,
                                        IActionTypeRepository actionTypeRepository, IActionRepository actionRepository, IActionUpdater actionUpdater)
        {
            if (deviceRepository == null)
            {
                throw new ArgumentNullException(nameof(deviceRepository));
            }
            if (actionTypeRepository == null)
            {
                throw new ArgumentNullException(nameof(actionTypeRepository));
            }
            if (actionRepository == null)
            {
                throw new ArgumentNullException(nameof(actionRepository));
            }
            if (actionUpdater == null)
            {
                throw new ArgumentNullException(nameof(actionUpdater));
            }

            _deviceRepository     = deviceRepository;
            _actionTypeRepository = actionTypeRepository;
            _actionRepository     = actionRepository;
            _actionUpdater        = actionUpdater;

            ActionTriggers  = new ObservableCollection <ActionTrigger>();
            Devices         = new ObservableCollection <Device>();
            ActionTypes     = new ObservableCollection <ActionType>();
            ActionArguments = new ObservableCollection <ActionArgument>();
            SaveCommand     = new TransactionalCommandTask(Save, CanSave);

            MessengerInstance.Register <TasksUpdated>(this, t => ActionIdentifier = null);
        }
        public ActionDescriptionViewModel(ActionDescription actionDescription, IActionRepository actionRepository,
                                          IMessenger messenger)
        {
            if (actionDescription == null)
            {
                throw new ArgumentNullException(nameof(actionDescription));
            }
            if (messenger == null)
            {
                throw new ArgumentNullException(nameof(messenger));
            }

            _actionRepository = actionRepository;
            _messenger        = messenger;

            ActionArgumentIdentifier = actionDescription.ActionArgumentIdentifier;
            ActionIdentifier         = actionDescription.ActionIdentifier;
            ActionTrigger            = actionDescription.ActionTrigger;
            ActionTypeIdentifier     = actionDescription.ActionTypeIdentifier;
            DeviceIdentifier         = actionDescription.DeviceIdentifier;
            DeviceName = actionDescription.DeviceName;
            Result     = actionDescription.Result;

            DeleteTaskCommand = new TransactionalCommandTask(DeleteTask);
        }
        public SetHomeLocationViewModel(ILocationRepository locationRepository)
        {
            if (locationRepository == null) throw new ArgumentNullException(nameof(locationRepository));

            _locationRepository = locationRepository;

            SaveCommand = new TransactionalCommandTask(Save, CanSave);

            PropertyChanged += SetHomeLocationViewModel_PropertyChanged;
        }
        public ConnectIftttViewModel(ICredentialsRepository credentialsRepository, IIftttConnector iftttConnector)
        {
            if (credentialsRepository == null) throw new ArgumentNullException(nameof(credentialsRepository));
            if (iftttConnector == null) throw new ArgumentNullException(nameof(iftttConnector));

            _credentialsRepository = credentialsRepository;
            _iftttConnector = iftttConnector;

            ConnectCommand = new TransactionalCommandTask(Connect, CanConnect);
        }
        public ConnectFifthplayViewModel(ICredentialsRepository credentialsRepository, IDeviceConnector deviceConnector)
        {
            if (credentialsRepository == null) throw new ArgumentNullException(nameof(credentialsRepository));
            if (deviceConnector == null) throw new ArgumentNullException(nameof(deviceConnector));

            _credentialsRepository = credentialsRepository;
            _deviceConnector = deviceConnector;

            ConnectCommand = new TransactionalCommandTask(ConnectDevices, CanConnectDevices);
        }
示例#6
0
        public SetHomeLocationViewModel(ILocationRepository locationRepository)
        {
            if (locationRepository == null)
            {
                throw new ArgumentNullException(nameof(locationRepository));
            }

            _locationRepository = locationRepository;

            SaveCommand = new TransactionalCommandTask(Save, CanSave);

            PropertyChanged += SetHomeLocationViewModel_PropertyChanged;
        }
        public ConnectFifthplayViewModel(ICredentialsRepository credentialsRepository, IDeviceConnector deviceConnector)
        {
            if (credentialsRepository == null)
            {
                throw new ArgumentNullException(nameof(credentialsRepository));
            }
            if (deviceConnector == null)
            {
                throw new ArgumentNullException(nameof(deviceConnector));
            }

            _credentialsRepository = credentialsRepository;
            _deviceConnector       = deviceConnector;

            ConnectCommand = new TransactionalCommandTask(ConnectDevices, CanConnectDevices);
        }
示例#8
0
        public ConnectIftttViewModel(ICredentialsRepository credentialsRepository, IIftttConnector iftttConnector)
        {
            if (credentialsRepository == null)
            {
                throw new ArgumentNullException(nameof(credentialsRepository));
            }
            if (iftttConnector == null)
            {
                throw new ArgumentNullException(nameof(iftttConnector));
            }

            _credentialsRepository = credentialsRepository;
            _iftttConnector        = iftttConnector;

            ConnectCommand = new TransactionalCommandTask(Connect, CanConnect);
        }
        public ActionDescriptionViewModel(ActionDescription actionDescription, IActionRepository actionRepository,
            IMessenger messenger)
        {
            if (actionDescription == null) throw new ArgumentNullException(nameof(actionDescription));
            if (messenger == null) throw new ArgumentNullException(nameof(messenger));

            _actionRepository = actionRepository;
            _messenger = messenger;

            ActionArgumentIdentifier = actionDescription.ActionArgumentIdentifier;
            ActionIdentifier = actionDescription.ActionIdentifier;
            ActionTrigger = actionDescription.ActionTrigger;
            ActionTypeIdentifier = actionDescription.ActionTypeIdentifier;
            DeviceIdentifier = actionDescription.DeviceIdentifier;
            DeviceName = actionDescription.DeviceName;
            Result = actionDescription.Result;

            DeleteTaskCommand = new TransactionalCommandTask(DeleteTask);
        }
        public ConfigureActionViewModel(IDeviceRepository deviceRepository, 
            IActionTypeRepository actionTypeRepository, IActionRepository actionRepository, IActionUpdater actionUpdater)
        {
            if (deviceRepository == null) throw new ArgumentNullException(nameof(deviceRepository));
            if (actionTypeRepository == null) throw new ArgumentNullException(nameof(actionTypeRepository));
            if (actionRepository == null) throw new ArgumentNullException(nameof(actionRepository));
            if (actionUpdater == null) throw new ArgumentNullException(nameof(actionUpdater));

            _deviceRepository = deviceRepository;
            _actionTypeRepository = actionTypeRepository;
            _actionRepository = actionRepository;
            _actionUpdater = actionUpdater;

            ActionTriggers = new ObservableCollection<ActionTrigger>();
            Devices = new ObservableCollection<Device>();
            ActionTypes = new ObservableCollection<ActionType>();
            ActionArguments = new ObservableCollection<ActionArgument>();
            SaveCommand = new TransactionalCommandTask(Save, CanSave);

            MessengerInstance.Register<TasksUpdated>(this, t => ActionIdentifier = null);
        }
示例#11
0
        public SettingsViewModel(IFunctionalityToggler functionalityToggler,
            IApplicationRepository applicationRepository, ILocationRepository locationRepository, IDeviceRepository deviceRepository)
        {
            if (functionalityToggler == null) throw new ArgumentNullException(nameof(functionalityToggler));
            if (applicationRepository == null) throw new ArgumentNullException(nameof(applicationRepository));
            if (locationRepository == null) throw new ArgumentNullException(nameof(locationRepository));
            if (deviceRepository == null) throw new ArgumentNullException(nameof(deviceRepository));

            _functionalityToggler = functionalityToggler;
            _applicationRepository = applicationRepository;
            _locationRepository = locationRepository;
            _deviceRepository = deviceRepository;

            EnableCommand = new TransactionalCommandTask(Enable, () => CanExecute);
            EnableCommand.CanExecuteChanged += (s, e) => CanExecute = !EnableCommand.IsExecuting;

            CanExecute = true;
            
            if (IsInDesignMode)
                IsEnabled = true;

            MessengerInstance.Register<HomeLocationChanged>(this, async t => await DispatcherHelper.RunAsync(() => IsHomeLocationSet = true));
        }
示例#12
0
        public SettingsViewModel(IFunctionalityToggler functionalityToggler,
                                 IApplicationRepository applicationRepository, ILocationRepository locationRepository, IDeviceRepository deviceRepository)
        {
            if (functionalityToggler == null)
            {
                throw new ArgumentNullException(nameof(functionalityToggler));
            }
            if (applicationRepository == null)
            {
                throw new ArgumentNullException(nameof(applicationRepository));
            }
            if (locationRepository == null)
            {
                throw new ArgumentNullException(nameof(locationRepository));
            }
            if (deviceRepository == null)
            {
                throw new ArgumentNullException(nameof(deviceRepository));
            }

            _functionalityToggler  = functionalityToggler;
            _applicationRepository = applicationRepository;
            _locationRepository    = locationRepository;
            _deviceRepository      = deviceRepository;

            EnableCommand = new TransactionalCommandTask(Enable, () => CanExecute);
            EnableCommand.CanExecuteChanged += (s, e) => CanExecute = !EnableCommand.IsExecuting;

            CanExecute = true;

            if (IsInDesignMode)
            {
                IsEnabled = true;
            }

            MessengerInstance.Register <HomeLocationChanged>(this, async t => await DispatcherHelper.RunAsync(() => IsHomeLocationSet = true));
        }
示例#13
0
        public MainViewModel(IApplicationRepository applicationRepository, IFunctionalityToggler functionalityToggler, ILogRepository logRepository,
            ILocationRepository locationRepository, IDeviceRepository deviceRepository, ICredentialsRepository credentialsRepository,
            IFirstTimeUserExperienceTracker firstTimeUserExperienceTracker, IActionRepository actionRepository)
        {
            if (applicationRepository == null) throw new ArgumentNullException(nameof(applicationRepository));
            if (functionalityToggler == null) throw new ArgumentNullException(nameof(functionalityToggler));
            if (logRepository == null) throw new ArgumentNullException(nameof(logRepository));
            if (locationRepository == null) throw new ArgumentNullException(nameof(locationRepository));
            if (deviceRepository == null) throw new ArgumentNullException(nameof(deviceRepository));
            if (actionRepository == null) throw new ArgumentNullException(nameof(actionRepository));
            if (credentialsRepository == null) throw new ArgumentNullException(nameof(credentialsRepository));
            if (firstTimeUserExperienceTracker == null) throw new ArgumentNullException(nameof(firstTimeUserExperienceTracker));

            _applicationRepository = applicationRepository;
            _functionalityToggler = functionalityToggler;
            _logRepository = logRepository;
            _locationRepository = locationRepository;
            _deviceRepository = deviceRepository;
            _actionRepository = actionRepository;
            _credentialsRepository = credentialsRepository;
            _firstTimeUserExperienceTracker = firstTimeUserExperienceTracker;

            if (IsInDesignMode)
            {
                IsFirstTimeUserExperience = false;

                Activities = new ObservableCollection<ActivityViewModel>
                {
                    new ActivityViewModel(DateTimeOffset.UtcNow, "Home")
                    {
                        Actions = new List<string> { "switch on Desk lamp", $"Failed to control IFTTT{Environment.NewLine}This is what happened: (NotFound Not Found..." }
                    },
                    new ActivityViewModel(DateTimeOffset.UtcNow.AddDays(-1), "Away")
                    {
                        Actions = new List<string> { "switch off TV", "set to 16°C heating" }
                    },
                    new ActivityViewModel(DateTimeOffset.UtcNow.AddDays(-10), "Home")
                    {
                        Actions = new List<string> { "switch on TV", "set to 16°C heating" }
                    }
                };

                IsFirstTimeUserExperienceHomeStep = true;
            }
            else
            {
                Activities = new ObservableCollection<ActivityViewModel>();
            }

            UpdateFirstTimeUserExperienceCommand = new TransactionalCommandTask(UpdateFirstTimeUserExperience);
            NavigateToSettingsCommand = new RelayCommand(NavigateToSettings);
        }
示例#14
0
        public MainViewModel(IApplicationRepository applicationRepository, IFunctionalityToggler functionalityToggler, ILogRepository logRepository,
                             ILocationRepository locationRepository, IDeviceRepository deviceRepository, ICredentialsRepository credentialsRepository,
                             IFirstTimeUserExperienceTracker firstTimeUserExperienceTracker, IActionRepository actionRepository)
        {
            if (applicationRepository == null)
            {
                throw new ArgumentNullException(nameof(applicationRepository));
            }
            if (functionalityToggler == null)
            {
                throw new ArgumentNullException(nameof(functionalityToggler));
            }
            if (logRepository == null)
            {
                throw new ArgumentNullException(nameof(logRepository));
            }
            if (locationRepository == null)
            {
                throw new ArgumentNullException(nameof(locationRepository));
            }
            if (deviceRepository == null)
            {
                throw new ArgumentNullException(nameof(deviceRepository));
            }
            if (actionRepository == null)
            {
                throw new ArgumentNullException(nameof(actionRepository));
            }
            if (credentialsRepository == null)
            {
                throw new ArgumentNullException(nameof(credentialsRepository));
            }
            if (firstTimeUserExperienceTracker == null)
            {
                throw new ArgumentNullException(nameof(firstTimeUserExperienceTracker));
            }

            _applicationRepository          = applicationRepository;
            _functionalityToggler           = functionalityToggler;
            _logRepository                  = logRepository;
            _locationRepository             = locationRepository;
            _deviceRepository               = deviceRepository;
            _actionRepository               = actionRepository;
            _credentialsRepository          = credentialsRepository;
            _firstTimeUserExperienceTracker = firstTimeUserExperienceTracker;

            if (IsInDesignMode)
            {
                IsFirstTimeUserExperience = false;

                Activities = new ObservableCollection <ActivityViewModel>
                {
                    new ActivityViewModel(DateTimeOffset.UtcNow, "Home")
                    {
                        Actions = new List <string> {
                            "switch on Desk lamp", $"Failed to control IFTTT{Environment.NewLine}This is what happened: (NotFound Not Found..."
                        }
                    },
                    new ActivityViewModel(DateTimeOffset.UtcNow.AddDays(-1), "Away")
                    {
                        Actions = new List <string> {
                            "switch off TV", "set to 16°C heating"
                        }
                    },
                    new ActivityViewModel(DateTimeOffset.UtcNow.AddDays(-10), "Home")
                    {
                        Actions = new List <string> {
                            "switch on TV", "set to 16°C heating"
                        }
                    }
                };

                IsFirstTimeUserExperienceHomeStep = true;
            }
            else
            {
                Activities = new ObservableCollection <ActivityViewModel>();
            }

            UpdateFirstTimeUserExperienceCommand = new TransactionalCommandTask(UpdateFirstTimeUserExperience);
            NavigateToSettingsCommand            = new RelayCommand(NavigateToSettings);
        }