diff --git a/lib/ui_class/view.class.dart b/lib/ui_class/view.class.dart index 9be0339..185e497 100644 --- a/lib/ui_class/view.class.dart +++ b/lib/ui_class/view.class.dart @@ -23,33 +23,48 @@ class HAView { void _fillView(List childEntities) { List autoGeneratedCards = []; - childEntities.forEach((entity) { - if (entity.isBadge) { - badges.add(entity); - } else { - if (!entity.isGroup) { - String groupIdToAdd = "${entity.domain}.${entity.domain}$count"; - if (autoGeneratedCards.every((HACard card) => card.id != groupIdToAdd )) { - HACard card = HACard( - id: groupIdToAdd, - name: entity.domain, - type: "entities" - ); - card.entities.add(entity); - autoGeneratedCards.add(card); - } else { - autoGeneratedCards.firstWhere((card) => card.id == groupIdToAdd).entities.add(entity); - } - } else { + badges.addAll(childEntities.where((entity){ return entity.isBadge;})); + childEntities.where((entity){ return entity.domain == "media_player";}).forEach((e){ + HACard card = HACard( + name: e.displayName, + id: e.entityId, + linkedEntity: e, + type: "media-control" + ); + cards.add(card); + }); + childEntities.where((e){return (!e.isBadge && e.domain != "media_player");}).forEach((entity) { + if (!entity.isGroup) { + String groupIdToAdd = "${entity.domain}.${entity.domain}$count"; + if (autoGeneratedCards.every((HACard card) => card.id != groupIdToAdd )) { HACard card = HACard( + id: groupIdToAdd, + name: entity.domain, + type: "entities" + ); + card.entities.add(entity); + autoGeneratedCards.add(card); + } else { + autoGeneratedCards.firstWhere((card) => card.id == groupIdToAdd).entities.add(entity); + } + } else { + HACard card = HACard( + name: entity.displayName, + id: entity.entityId, + linkedEntity: entity, + type: "entities" + ); + card.entities.addAll(entity.childEntities.where((entity) {return entity.domain != "media_player";})); + entity.childEntities.where((entity) {return entity.domain == "media_player";}).forEach((entity){ + HACard mediaCard = HACard( name: entity.displayName, id: entity.entityId, linkedEntity: entity, - type: "entities" + type: "media-control" ); - card.entities.addAll(entity.childEntities); - cards.add(card); - } + cards.add(mediaCard); + }); + cards.add(card); } }); cards.addAll(autoGeneratedCards); diff --git a/lib/ui_widgets/media_control_card.dart b/lib/ui_widgets/media_control_card.dart index 783b656..e751f6d 100644 --- a/lib/ui_widgets/media_control_card.dart +++ b/lib/ui_widgets/media_control_card.dart @@ -25,15 +25,10 @@ class MediaControlCardWidget extends StatelessWidget { left: 0.0, right: 0.0, child: Container( - height: 80.0, color: Colors.black45, + child: _buildState(), ), ), - Positioned( - bottom: 0.0, - left: 0.0, - child: _buildState(), - ), ], )); } @@ -59,7 +54,7 @@ class MediaControlCardWidget extends StatelessWidget { states.add(Text("${card.linkedEntity.state}", style: style.apply(fontSizeDelta: 4.0),)); } else { states.add(Text("${card.linkedEntity.attributes['media_title'] ?? '-'}", style: style.apply(fontSizeDelta: 6.0, fontWeightDelta: 50),)); - states.add(Text("${card.linkedEntity.attributes['media_artist'] ?? '-'}", style: style.apply(fontSizeDelta: 4.0),)); + states.add(Text("${card.linkedEntity.attributes['media_artist'] ?? card.linkedEntity.attributes['app_name']}", style: style.apply(fontSizeDelta: 4.0),)); } return Padding( padding: EdgeInsets.only(left: Entity.leftWidgetPadding, right: Entity.rightWidgetPadding),