mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-11 02:35:00 +00:00
Interfaces added and some base classes built
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Interfaces.Components;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Room.Components
|
||||
{
|
||||
public class ComponentFactory
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials.Interfaces.Components;
|
||||
using PepperDash.Essentials.Core.Config;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Room
|
||||
{
|
||||
/// <summary>
|
||||
/// The base config class for various component types
|
||||
/// </summary>
|
||||
public abstract class RoomComponentConfig : DeviceConfig
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The config class for an activiry
|
||||
/// </summary>
|
||||
public class RoomActivityConfig : RoomComponentConfig
|
||||
{
|
||||
[JsonProperty("label")]
|
||||
public string Label { get; set; }
|
||||
[JsonProperty("icon")]
|
||||
public string Icon { get; set; }
|
||||
[JsonProperty("componentKey")]
|
||||
public string ComponentKey { get; set; }
|
||||
[JsonProperty("order")]
|
||||
public int Order { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The config class for a room behaviour
|
||||
/// </summary>
|
||||
public class RoomBehaviourConfig : RoomComponentConfig
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The config class for a device behavior
|
||||
/// </summary>
|
||||
public class RoomDeviceBehaviourConfig : RoomComponentConfig
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public class ComponentRoomPropertiesConfig
|
||||
{
|
||||
[JsonProperty("activities")]
|
||||
public List<RoomActivityConfig> Activities { get; set; }
|
||||
[JsonProperty("components")]
|
||||
public List<RoomComponentConfig> Components { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class ComponentRoom : Device, IComponentRoom
|
||||
{
|
||||
public List<IRoomComponent> Components { get; private set; }
|
||||
public List<IRoomActivityComponent> Activities { get; private set; }
|
||||
|
||||
public ComponentRoom(string key, string name)
|
||||
: base(key, name)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public List<IRoomComponent> GetRoomComponentsOfType(Type componentType)
|
||||
{
|
||||
// TODO: Figure this out later
|
||||
return Components;
|
||||
//var results = Components.OfType<componentType>();
|
||||
//return results;
|
||||
//return Components.Where(c => c != null && type.IsAssignableFrom(c.GetType()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns a list of the activies sorted by order
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public List<IRoomActivityComponent> GetOrderedActvities()
|
||||
{
|
||||
return Activities.OrderBy(a => a.Order).ToList<IRoomActivityComponent>();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Interfaces.Components;
|
||||
|
||||
namespace PepperDash.Essentials.Core.Room.Components
|
||||
{
|
||||
/// <summary>
|
||||
/// The base class from which Room Components should be derived
|
||||
/// </summary>
|
||||
public abstract class RoomComponentBase : IRoomComponent
|
||||
{
|
||||
private string _componentKey;
|
||||
|
||||
/// <summary>
|
||||
/// The key of the component, which is composed of the parent room key, plus the specific component key
|
||||
/// </summary>
|
||||
public string Key {
|
||||
get
|
||||
{
|
||||
return Parent.Key + "-" + _componentKey;
|
||||
}
|
||||
}
|
||||
|
||||
public IComponentRoom Parent { get; private set; }
|
||||
|
||||
public RoomComponentBase(string key, IComponentRoom parent)
|
||||
{
|
||||
_componentKey = key;
|
||||
Parent = parent;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user