Example #1
0
        // returns:  A dictionary mapping localized service types to an array of all services of that type.
        public static Dictionary <string, List <HMService> > GetServiceTable(this HMHome self)
        {
            var serviceDictionary = new Dictionary <string, List <HMService> > ();

            foreach (var service in self.GetAllServices())
            {
                if (!service.IsControllType())
                {
                    continue;
                }

                var serviceType = service.LocalizedDescription;
                List <HMService> list;
                if (serviceDictionary.TryGetValue(serviceType, out list))
                {
                    list.Add(service);
                }
                else
                {
                    serviceDictionary [serviceType] = new List <HMService> {
                        service
                    }
                };
            }

            foreach (var list in serviceDictionary.Values)
            {
                list.Sort((x, y) => x.Name.CompareTo(y.Name));
            }

            return(serviceDictionary);
        }
Example #2
0
 public void DidRemoveAccessory(HMHome home, HMAccessory accessory)
 {
     if (accessory == Service.Accessory)
     {
         NavigationController.PopToRootViewController(true);
     }
 }
Example #3
0
        // returns:  A list of services that exist in the home and have not yet been added to this service group.
        public static IEnumerable <HMService> ServicesNotAlreadyInServiceGroup(this HMHome self, HMServiceGroup serviceGroup)
        {
            var servicesInGroup           = new HashSet <HMService> (serviceGroup.Services);
            Func <HMService, bool> filter = s => !servicesInGroup.Contains(s) && s.ServiceType != HMServiceType.AccessoryInformation;

            return(self.GetAllServices().Where(filter));
        }
 public void DidRemoveTrigger(HMHome home, HMTrigger trigger)
 {
     if (Trigger == trigger)
     {
         DismissViewController(true, null);
     }
 }
 public void DidRemoveActionSet(HMHome home, HMActionSet actionSet)
 {
     if (actionSet == ActionSet)
     {
         DismissViewController(true, null);
     }
 }
        public void ResetWithHome(HMHome home)
        {
            Accessories.Clear();
            Accessories.AddRange(home.Accessories);
            Accessories.SortByLocalizedName(a => a.Name);

            Rooms.Clear();
            Rooms.AddRange(home.GetAllRooms());
            Rooms.SortByLocalizedName(r => r.Name);

            Zones.Clear();
            Zones.AddRange(home.Zones);
            Zones.SortByLocalizedName(z => z.Name);

            ActionSets.Clear();
            ActionSets.AddRange(home.ActionSets);
            ActionSets.SortByTypeAndLocalizedName();

            Triggers.Clear();
            Triggers.AddRange(home.Triggers);
            Triggers.SortByLocalizedName(t => t.Name);

            ServiceGroups.Clear();
            ServiceGroups.AddRange(home.ServiceGroups);
            ServiceGroups.SortByLocalizedName(sg => sg.Name);
        }
 public void DidRemoveZone(HMHome home, HMZone zone)
 {
     if (zone == HomeZone)
     {
         DismissViewController(true, null);
     }
 }
 public void DidUpdateTrigger(HMHome home, HMTrigger trigger)
 {
     if (Trigger == trigger)
     {
         TableView.ReloadData();
     }
 }
Example #9
0
 public void DidUpdateNameForRoom(HMHome home, HMRoom room)
 {
     if (room == Room)
     {
         NavigationItem.Title = room.Name;
     }
 }
 public void DidRemoveService(HMHome home, HMService service, HMServiceGroup group)
 {
     if (ServiceGroup == group)
     {
         ReloadData();
     }
 }
Example #11
0
 public void DidRemoveRoom(HMHome home, HMRoom room)
 {
     if (room == Room)
     {
         NavigationController.PopViewController(true);
     }
 }
 public void DidRemoveServiceGroup(HMHome home, HMServiceGroup group)
 {
     if (ServiceGroup == group)
     {
         DismissViewController(true, null);
     }
 }
Example #13
0
 public void DidAddRoomToZone(HMHome home, HMRoom room, HMZone zone)
 {
     if (zone == HomeZone)
     {
         DidAddRoom(room);
     }
 }
Example #14
0
 public void DidRemoveRoomFromZone(HMHome home, HMRoom room, HMZone zone)
 {
     if (zone == HomeZone)
     {
         DidRemoveRoom(room);
     }
 }
Example #15
0
 public void DidRemoveZone(HMHome home, HMZone zone)
 {
     if (zone == HomeZone)
     {
         NavigationController.PopViewController(true);
     }
 }
Example #16
0
 public void DidUpdateNameForZone(HMHome home, HMZone zone)
 {
     if (zone == HomeZone)
     {
         Title = zone.Name;
     }
 }
        // Removes a home from the List and updates the view.
        protected override void DidRemoveHome(HMHome home)
        {
            var index = Homes.IndexOf(home);

            if (index < 0)
            {
                return;
            }

            var indexPath = NSIndexPath.FromRowSection(index, (int)HomeListSection.Homes);

            Homes.RemoveAt(index);
            var primaryIndexPath = NSIndexPath.FromRowSection(index, (int)HomeListSection.PrimaryHome);

            // If there aren't any homes, we still want one cell to display 'No Homes'.
            // Just reload.

            TableView.BeginUpdates();
            if (Homes.Count == 0)
            {
                TableView.ReloadRows(new [] { primaryIndexPath }, UITableViewRowAnimation.Fade);
            }
            else
            {
                TableView.DeleteRows(new [] { primaryIndexPath }, UITableViewRowAnimation.Automatic);
            }

            TableView.DeleteRows(new [] { indexPath }, UITableViewRowAnimation.Automatic);
            TableView.EndUpdates();
        }
        protected override void DidAddHome(HMHome home)
        {
            Homes.Add(home);
            SortHomes();

            var newHomeIndex = Homes.IndexOf(home);

            if (newHomeIndex < 0)
            {
                return;
            }

            var indexPath = NSIndexPath.FromRowSection(newHomeIndex, (int)HomeListSection.Homes);

            var primaryIndexPath = NSIndexPath.FromRowSection(newHomeIndex, (int)HomeListSection.PrimaryHome);

            TableView.BeginUpdates();

            if (Homes.Count == 1)
            {
                TableView.ReloadRows(new [] { primaryIndexPath }, UITableViewRowAnimation.Fade);
            }
            else
            {
                TableView.InsertRows(new [] { primaryIndexPath }, UITableViewRowAnimation.Automatic);
            }

            TableView.InsertRows(new [] { indexPath }, UITableViewRowAnimation.Automatic);
            TableView.EndUpdates();
        }
 public void DidRemoveServiceGroup(HMHome home, HMServiceGroup group)
 {
     if (group == ServiceGroup)
     {
         NavigationController.PopViewController(true);
     }
 }
Example #20
0
 public void DidAddAccessory(HMHome home, HMAccessory accessory)
 {
     if (accessory.Room == room)
     {
         accessory.Delegate = this;
         DidAssignAccessory(accessory);
     }
 }
Example #21
0
        // returns:  All accessories which are 'control accessories'.
        public static IEnumerable <HMAccessory> SortedControlAccessories(this HMHome self)
        {
            Func <HMAccessory, bool> predicate = accessory => accessory.Services.Any(s => s.IsControllType());
            var filteredAccessories            = self.Accessories.Where(predicate).ToArray();

            filteredAccessories.SortByLocalizedName(a => a.Name);
            return(filteredAccessories);
        }
 int CompareHomes(HMHome x, HMHome y)
 {
     if (x.IsAdmin() == y.IsAdmin())
     {
         return(x.Name.CompareTo(y.Name));
     }
     return(x.IsAdmin() ? 1 : 0);
 }
Example #23
0
        // returns:  All rooms in the home, including `roomForEntireHome`.
        public static HMRoom[] GetAllRooms(this HMHome self)
        {
            var rooms    = self.Rooms;
            var allRooms = new HMRoom[rooms.Length + 1];

            Array.Copy(rooms, allRooms, rooms.Length);
            allRooms [rooms.Length] = self.GetRoomForEntireHome();
            return(allRooms);
        }
        public void DidRemoveAccessory(HMHome home, HMAccessory accessory)
        {
            if (home.Accessories.Length == 0)
            {
                NavigationController.DismissViewController(true, null);
            }

            ReloadTable();
        }
Example #25
0
 public void DidRemoveRoom(HMHome home, HMRoom room)
 {
     // Reset the selected room if ours was deleted.
     if (selectedRoom == room)
     {
         selectedRoom = HomeStore.Home.GetRoomForEntireHome();
     }
     TableView.ReloadData();
 }
        protected virtual void HomeDidUpdateName(HMHome home)
        {
            var homeIndex = Homes.IndexOf(home);

            if (homeIndex >= 0)
            {
                var indexPath = NSIndexPath.FromRowSection(homeIndex, 0);
                TableView.ReloadRows(new [] { indexPath }, UITableViewRowAnimation.Automatic);
            }
        }
Example #27
0
        // returns:  A list of rooms that exist in the home and have not yet been added to this zone.
        public static IEnumerable <HMRoom> RoomsNotAlreadyInZone(this HMHome home, HMZone zone, IEnumerable <HMRoom> includingRooms = null)
        {
            var rooms = home.Rooms.Where(room => !zone.Rooms.Contains(room));

            if (includingRooms != null)
            {
                rooms = rooms.Concat(includingRooms);
            }
            return(rooms);
        }
Example #28
0
 public void DidAddAccessory(HMHome home, HMAccessory accessory)
 {
     // Bridged accessories don't call the original completion handler if their
     // bridges are added to the home. We must respond to `HMHomeDelegate`'s
     // `home:didAddAccessory:` and assign bridged accessories properly.
     if (selectedRoom != null)
     {
         AssignAccessory(home, accessory, selectedRoom);
     }
 }
        protected virtual void DidAddHome(HMHome home)
        {
            Homes.Add(home);

            SortHomes();

            var newHomeIndex       = Homes.IndexOf(home);
            var indexPathOfNewHome = NSIndexPath.FromRowSection(newHomeIndex, 0);

            TableView.InsertRows(new [] { indexPathOfNewHome }, UITableViewRowAnimation.Automatic);
        }
Example #30
0
 public void DidUpdateRoom(HMHome home, HMRoom room, HMAccessory accessory)
 {
     if (room == Room)
     {
         DidAssignAccessory(accessory);
     }
     else if (Accessories.Contains(accessory))
     {
         DidUnassignAccessory(accessory);
     }
 }
		public TimerTriggerCreator (HMTrigger trigger, HMHome home)
			: base (trigger, home)
		{
			SelectedRecurrenceIndex = -1;
			RawFireDate = new NSDate ();

			var timerTrigger = TimerTrigger;
			if (timerTrigger != null) {
				RawFireDate = timerTrigger.FireDate;
				SelectedRecurrenceIndex = RecurrenceIndexFromDateComponents (timerTrigger.Recurrence);
			}
		}
		public LocationTriggerCreator (HMTrigger trigger, HMHome home)
			: base (trigger, home)
		{
			var eventTrigger = EventTrigger;
			if (eventTrigger != null) {
				LocationEvent = eventTrigger.LocationEvent ();
				if (LocationEvent != null) {
					TargetRegion = LocationEvent.Region as CLCircularRegion;
					TargetRegionStateIndex = TargetRegion.NotifyOnEntry ? 0 : 1;
				}
			}
		}
        public void DidRemoveHome(HMHomeManager manager, HMHome home)
        {
            DidRemoveHome (home);
            var selectedHome = HomeStore.Home;
            if (selectedHome != null && selectedHome == home) {
                HomeStore.Home = null;

                // Close all modal and detail views.
                DismissViewController(true, null);
                if (NavigationController != null)
                    NavigationController.PopToRootViewController (true);
            }
        }
		public void DidRemoveZone (HMHome home, HMZone zone)
		{
			if (zone == HomeZone)
				NavigationController.PopViewController (true);
		}
		public void DidRemoveAccessory (HMHome home, HMAccessory accessory)
		{
			ReloadData ();
		}
        protected virtual void DidRemoveHome(HMHome home)
        {
            var removedHomeIndex = Homes.IndexOf (home);
            if (removedHomeIndex < 0)
                return;

            Homes.RemoveAt (removedHomeIndex);
            var indexPath = NSIndexPath.FromRowSection (removedHomeIndex, 0);
            TableView.DeleteRows (new []{ indexPath }, UITableViewRowAnimation.Automatic);
        }
		// Initializes a trigger creator from an existing trigger (if it exists), and the current home.
		public TriggerCreator (HMTrigger trigger, HMHome home)
		{
			Home = home;
			Trigger = trigger;
		}
		public void DidUpdateRoom (HMHome home, HMRoom room, HMAccessory accessory)
		{
			if (room == Room)
				DidAssignAccessory (accessory);
			else if (Accessories.Contains (accessory))
				DidUnassignAccessory (accessory);
		}
		public void DidAddRoomToZone (HMHome home, HMRoom room, HMZone zone)
		{
			if (zone == HomeZone)
				DidAddRoom (room);
		}
		public void DidAddRoom (HMHome home, HMRoom room)
		{
			ReloadAddIndexPath ();
		}
		public void DidRemoveAccessory (HMHome home, HMAccessory accessory)
		{
			DidUnassignAccessory (accessory);
		}
		public void DidUpdateTrigger (HMHome home, HMTrigger trigger)
		{
			if (Trigger == trigger)
				TableView.ReloadData ();
		}
		public void DidRemoveTrigger (HMHome home, HMTrigger trigger)
		{
			if (Trigger == trigger)
				DismissViewController (true, null);
		}
 public void DidAddHome(HMHomeManager manager, HMHome home)
 {
     home.Delegate = this;
     DidAddHome (home);
 }
 int CompareHomes(HMHome x, HMHome y)
 {
     if (x.IsAdmin () == y.IsAdmin ())
         return x.Name.CompareTo (y.Name);
     return x.IsAdmin () ? 1 : 0;
 }
 protected virtual void HomeDidUpdateName(HMHome home)
 {
     var homeIndex = Homes.IndexOf (home);
     if (homeIndex >= 0) {
         var indexPath = NSIndexPath.FromRowSection (homeIndex, 0);
         TableView.ReloadRows (new []{ indexPath }, UITableViewRowAnimation.Automatic);
     }
 }
		public void DidUpdateNameForZone (HMHome home, HMZone zone)
		{
			if (zone == HomeZone)
				Title = zone.Name;
		}
 protected static string SharedTextForHome(HMHome home)
 {
     return home.IsAdmin () ? "My Home" : "Shared with me";
 }
		public void DidUpdateNameForRoom (HMHome home, HMRoom room)
		{
			DidUpdateRoom (room);
		}
		public void DidAddAccessory (HMHome home, HMAccessory accessory)
		{
			TableView.ReloadData ();
		}
		public void DidRemoveRoom (HMHome home, HMRoom room)
		{
			DidRemoveRoom (room);
		}
		public void ResetWithHome (HMHome home)
		{
			Accessories.Clear ();
			Accessories.AddRange (home.Accessories);
			Accessories.SortByLocalizedName (a => a.Name);

			Rooms.Clear ();
			Rooms.AddRange (home.GetAllRooms());
			Rooms.SortByLocalizedName (r => r.Name);

			Zones.Clear ();
			Zones.AddRange (home.Zones);
			Zones.SortByLocalizedName(z => z.Name);

			ActionSets.Clear ();
			ActionSets.AddRange (home.ActionSets);
			ActionSets.SortByTypeAndLocalizedName ();

			Triggers.Clear ();
			Triggers.AddRange (home.Triggers);
			Triggers.SortByLocalizedName (t => t.Name);

			ServiceGroups.Clear ();
			ServiceGroups.AddRange (home.ServiceGroups);
			ServiceGroups.SortByLocalizedName (sg => sg.Name);
		}
		public void DidRemoveRoomFromZone (HMHome home, HMRoom room, HMZone zone)
		{
			if (zone == HomeZone)
				DidRemoveRoom (room);
		}
		public void DidRemoveServiceGroup (HMHome home, HMServiceGroup group)
		{
			if (group == ServiceGroup)
				NavigationController.PopViewController (true);
		}
		public void DidRemoveRoom (HMHome home, HMRoom room)
		{
			if (room == Room)
				NavigationController.PopViewController (true);
		}
		public void DidRemoveService (HMHome home, HMService service, HMServiceGroup group)
		{
			if (ServiceGroup == group)
				ReloadData ();
		}
		public void DidRemoveAccessory (HMHome home, HMAccessory accessory)
		{
			if (ShouldPopViewController ())
				DismissViewController (true, null);
			else
				TableView.ReloadData ();
		}
        protected virtual void DidAddHome(HMHome home)
        {
            Homes.Add (home);

            SortHomes ();

            var newHomeIndex = Homes.IndexOf (home);
            var indexPathOfNewHome = NSIndexPath.FromRowSection (newHomeIndex, 0);
            TableView.InsertRows (new []{ indexPathOfNewHome }, UITableViewRowAnimation.Automatic);
        }
		public void DidRemoveActionSet (HMHome home, HMActionSet actionSet)
		{
			if (actionSet == ActionSet)
				DismissViewController (true, null);
		}
		public void DidUpdateNameForRoom (HMHome home, HMRoom room)
		{
			if (room == Room)
				NavigationItem.Title = room.Name;
		}