Resolves #223, Resolves #197

This commit is contained in:
Yegor Vialov
2018-11-23 16:03:38 +02:00
parent a0235ee385
commit 12088d9516
6 changed files with 46 additions and 21 deletions

View File

@ -35,4 +35,23 @@ class EntityTapAction {
static const toggle = 'toggle';
static const callService = 'call-service';
static const none = 'none';
}
class CardType {
static const entities = "entities";
static const glance = "glance";
static const mediaControl = "media-control";
static const weatherForecast = "weather-forecast";
static const thermostat = "thermostat";
static const sensor = "sensor";
static const plantStatus = "plant-status";
static const pictureEntity = "picture-entity";
static const pictureElements = "picture-elements";
static const picture = "picture";
static const map = "map";
static const iframe = "iframe";
static const gauge = "gauge";
static const entityButton = "entity-button";
static const conditional = "conditional";
static const alarmPanel = "alarm-panel";
}

View File

@ -11,7 +11,7 @@ class EntityIcon extends StatelessWidget {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
return GestureDetector(
return InkWell(
child: Padding(
padding: padding,
child: MaterialDesignIcons.createIconWidgetFromEntityData(

View File

@ -13,7 +13,7 @@ class EntityName extends StatelessWidget {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
return GestureDetector(
return InkWell(
child: Padding(
padding: padding,
child: Text(

View File

@ -13,7 +13,7 @@ class SimpleEntityState extends StatelessWidget {
final entityModel = EntityModel.of(context);
Widget result = Padding(
padding: padding,
child: GestureDetector(
child: InkWell(
child: Text(
"${entityModel.entityWrapper.entity.state}${entityModel.entityWrapper.entity.unitOfMeasurement}",
textAlign: textAlign,

View File

@ -447,13 +447,19 @@ class HomeAssistant {
} else {
if (entities.isExist(rawEntity["entity"])) {
Entity e = entities.get(rawEntity["entity"]);
String tapAction = EntityTapAction.moreInfo;
String holdAction = EntityTapAction.none;
if (card.type == CardType.glance) {
tapAction = rawEntity["tap_action"] ?? EntityTapAction.moreInfo;
holdAction = rawEntity["hold_action"] ?? EntityTapAction.none;
}
card.entities.add(
EntityWrapper(
entity: e,
displayName: rawEntity["name"],
icon: rawEntity["icon"],
tapAction: rawEntity["tap_action"] ?? EntityTapAction.moreInfo,
holdAction: rawEntity["hold_action"] ?? EntityTapAction.none,
tapAction: tapAction,
holdAction: holdAction,
tapActionService: rawEntity["service"],
tapActionServiceData: rawEntity["service_data"] ?? {"entity_id": e.entityId}
)

View File

@ -23,37 +23,37 @@ class HACard {
Widget build(BuildContext context) {
switch (type) {
case "entities": {
case CardType.entities: {
return EntitiesCardWidget(
card: this,
);
}
case "glance": {
case CardType.glance: {
return GlanceCardWidget(
card: this,
);
}
case "media-control": {
case CardType.mediaControl: {
return MediaControlCardWidget(
card: this,
);
}
case "weather-forecast":
case "thermostat":
case "sensor":
case "plant-status":
case "picture-entity":
case "picture-elements":
case "picture":
case "map":
case "iframe":
case "gauge":
case "entity-button":
case "conditional":
case "alarm-panel": {
case CardType.weatherForecast:
case CardType.thermostat:
case CardType.sensor:
case CardType.plantStatus:
case CardType.pictureEntity:
case CardType.pictureElements:
case CardType.picture:
case CardType.map:
case CardType.iframe:
case CardType.gauge:
case CardType.entityButton:
case CardType.conditional:
case CardType.alarmPanel: {
return UnsupportedCardWidget(
card: this,
);