WIP #183 Custom names and icons

This commit is contained in:
Yegor Vialov
2018-11-15 19:08:47 +02:00
parent 37ad5e81cf
commit c5942d22b3
33 changed files with 153 additions and 97 deletions

View File

@ -7,12 +7,12 @@ class BadgeWidget extends StatelessWidget {
double iconSize = 26.0;
Widget badgeIcon;
String onBadgeTextValue;
Color iconColor = EntityColor.badgeColors[entityModel.entity.domain] ??
Color iconColor = EntityColor.badgeColors[entityModel.entity.entity.domain] ??
EntityColor.badgeColors["default"];
switch (entityModel.entity.domain) {
switch (entityModel.entity.entity.domain) {
case "sun":
{
badgeIcon = entityModel.entity.state == "below_horizon"
badgeIcon = entityModel.entity.entity.state == "below_horizon"
? Icon(
MaterialDesignIcons.createIconDataFromIconCode(0xf0dc),
size: iconSize,
@ -25,10 +25,10 @@ class BadgeWidget extends StatelessWidget {
}
case "sensor":
{
onBadgeTextValue = entityModel.entity.unitOfMeasurement;
onBadgeTextValue = entityModel.entity.entity.unitOfMeasurement;
badgeIcon = Center(
child: Text(
"${entityModel.entity.state}",
"${entityModel.entity.entity.state}",
overflow: TextOverflow.fade,
softWrap: false,
textAlign: TextAlign.center,
@ -41,7 +41,7 @@ class BadgeWidget extends StatelessWidget {
{
badgeIcon = MaterialDesignIcons.createIconWidgetFromEntityData(
entityModel.entity, iconSize, Colors.black);
onBadgeTextValue = entityModel.entity.state;
onBadgeTextValue = entityModel.entity.entity.state;
break;
}
default:
@ -120,6 +120,6 @@ class BadgeWidget extends StatelessWidget {
],
),
onTap: () =>
eventBus.fire(new ShowEntityPageEvent(entityModel.entity)));
eventBus.fire(new ShowEntityPageEvent(entityModel.entity.entity)));
}
}

View File

@ -165,7 +165,7 @@ class _ClimateControlWidgetState extends State<ClimateControlWidget> {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final ClimateEntity entity = entityModel.entity;
final ClimateEntity entity = entityModel.entity.entity;
if (_changedHere) {
_showPending = (_tmpTemperature != entity.temperature);
_changedHere = false;

View File

@ -38,7 +38,7 @@ class _CoverControlWidgetState extends State<CoverControlWidget> {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final CoverEntity entity = entityModel.entity;
final CoverEntity entity = entityModel.entity.entity;
if (_changedHere) {
_changedHere = false;
} else {
@ -152,7 +152,7 @@ class CoverTiltControlsWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final CoverEntity entity = entityModel.entity;
final CoverEntity entity = entityModel.entity.entity;
List<Widget> buttons = [];
if (entity.supportOpenTilt) {
buttons.add(IconButton(

View File

@ -80,7 +80,7 @@ class _LightControlsWidgetState extends State<LightControlsWidget> {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final LightEntity entity = entityModel.entity;
final LightEntity entity = entityModel.entity.entity;
if (!_changedHere) {
_resetState(entity);
} else {

View File

@ -28,7 +28,7 @@ class MediaPlayerWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final EntityModel entityModel = EntityModel.of(context);
final MediaPlayerEntity entity = entityModel.entity;
final MediaPlayerEntity entity = entityModel.entity.entity;
return Column(
children: <Widget>[
Stack(
@ -229,7 +229,7 @@ class _MediaPlayerProgressWidgetState extends State<MediaPlayerProgressWidget> {
@override
Widget build(BuildContext context) {
final EntityModel entityModel = EntityModel.of(context);
final MediaPlayerEntity entity = entityModel.entity;
final MediaPlayerEntity entity = entityModel.entity.entity;
double progress;
try {
DateTime lastUpdated = DateTime.parse(

View File

@ -25,7 +25,7 @@ class _SliderControlsWidgetState extends State<SliderControlsWidget> {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final SliderEntity entity = entityModel.entity;
final SliderEntity entity = entityModel.entity.entity;
if (entity.valueStep < 1) {
_multiplier = 10;
} else if (entity.valueStep < 0.1) {

View File

@ -7,14 +7,14 @@ class EntityAttributesList extends StatelessWidget {
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
List<Widget> attrs = [];
if ((entityModel.entity.attributesToShow == null) ||
(entityModel.entity.attributesToShow.contains("all"))) {
entityModel.entity.attributes.forEach((name, value) {
if ((entityModel.entity.entity.attributesToShow == null) ||
(entityModel.entity.entity.attributesToShow.contains("all"))) {
entityModel.entity.entity.attributes.forEach((name, value) {
attrs.add(_buildSingleAttribute("$name", "$value"));
});
} else {
entityModel.entity.attributesToShow.forEach((String attr) {
String attrValue = entityModel.entity.getAttribute("$attr");
entityModel.entity.entity.attributesToShow.forEach((String attr) {
String attrValue = entityModel.entity.entity.getAttribute("$attr");
if (attrValue != null) {
attrs.add(
_buildSingleAttribute("$attr", "$attrValue"));

View File

@ -17,11 +17,11 @@ class EntityIcon extends StatelessWidget {
child: MaterialDesignIcons.createIconWidgetFromEntityData(
entityModel.entity,
iconSize,
EntityColor.stateColor(entityModel.entity.state)
EntityColor.stateColor(entityModel.entity.entity.state)
),
),
onTap: () => entityModel.handleTap
? eventBus.fire(new ShowEntityPageEvent(entityModel.entity))
? eventBus.fire(new ShowEntityPageEvent(entityModel.entity.entity))
: null,
);
}

View File

@ -26,7 +26,7 @@ class EntityName extends StatelessWidget {
),
onTap: () =>
entityModel.handleTap
? eventBus.fire(new ShowEntityPageEvent(entityModel.entity))
? eventBus.fire(new ShowEntityPageEvent(entityModel.entity.entity))
: null,
);
}

View File

@ -1,34 +1,42 @@
part of '../main.dart';
class GlanceEntityContainer extends StatelessWidget {
final bool showName;
final bool showState;
GlanceEntityContainer({
Key key,
Key key, @required this.showName, @required this.showState,
}) : super(key: key);
@override
Widget build(BuildContext context) {
List<Widget> result = [];
if (showName) {
result.add(EntityName(
padding: EdgeInsets.only(bottom: Sizes.rowPadding),
textOverflow: TextOverflow.ellipsis,
wordsWrap: false,
textAlign: TextAlign.center,
fontSize: Sizes.smallFontSize,
));
}
result.add(EntityIcon(
padding: EdgeInsets.all(0.0),
iconSize: Sizes.largeIconSize,
));
if (showState) {
result.add(SimpleEntityState(
textAlign: TextAlign.center,
expanded: false,
padding: EdgeInsets.only(top: Sizes.rowPadding),
));
}
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
EntityName(
padding: EdgeInsets.only(bottom: Sizes.rowPadding),
textOverflow: TextOverflow.ellipsis,
wordsWrap: false,
textAlign: TextAlign.center,
fontSize: Sizes.smallFontSize,
),
EntityIcon(
padding: EdgeInsets.all(0.0),
iconSize: Sizes.largeIconSize,
),
SimpleEntityState(
textAlign: TextAlign.center,
expanded: false,
padding: EdgeInsets.only(top: Sizes.rowPadding),
)
],
children: result,
);
}
}

View File

@ -65,7 +65,7 @@ class _EntityHistoryWidgetState extends State<EntityHistoryWidget> {
Widget build(BuildContext context) {
final HomeAssistantModel homeAssistantModel = HomeAssistantModel.of(context);
final EntityModel entityModel = EntityModel.of(context);
final Entity entity = entityModel.entity;
final Entity entity = entityModel.entity.entity;
if (!_needToUpdateHistory) {
_needToUpdateHistory = true;
} else {

View File

@ -8,7 +8,7 @@ class LastUpdatedWidget extends StatelessWidget {
padding: EdgeInsets.fromLTRB(
Sizes.leftWidgetPadding, 0.0, 0.0, 0.0),
child: Text(
'${entityModel.entity.lastUpdated}',
'${entityModel.entity.entity.lastUpdated}',
textAlign: TextAlign.left,
style: TextStyle(
fontSize: Sizes.smallFontSize, color: Colors.black26),

View File

@ -8,7 +8,7 @@ class EntityModel extends InheritedWidget {
@required Widget child,
}) : super(key: key, child: child);
final Entity entity;
final EntityWrapper entity;
final bool handleTap;
static EntityModel of(BuildContext context) {

View File

@ -13,7 +13,7 @@ class ButtonStateWidget extends StatelessWidget {
height: 34.0,
child: FlatButton(
onPressed: (() {
_setNewState(entityModel.entity);
_setNewState(entityModel.entity.entity);
}),
child: Text(
"EXECUTE",

View File

@ -4,7 +4,7 @@ class ClimateStateWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final ClimateEntity entity = entityModel.entity;
final ClimateEntity entity = entityModel.entity.entity;
String targetTemp = "-";
if ((entity.supportTargetTemperature) && (entity.temperature != null)) {
targetTemp = "${entity.temperature}";

View File

@ -19,7 +19,7 @@ class CoverStateWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final CoverEntity entity = entityModel.entity;
final CoverEntity entity = entityModel.entity.entity;
List<Widget> buttons = [];
if (entity.supportOpen) {
buttons.add(IconButton(

View File

@ -4,7 +4,7 @@ class DateTimeStateWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final DateTimeEntity entity = entityModel.entity;
final DateTimeEntity entity = entityModel.entity.entity;
return Padding(
padding: EdgeInsets.fromLTRB(0.0, 0.0, Sizes.rightWidgetPadding, 0.0),
child: GestureDetector(

View File

@ -18,7 +18,7 @@ class _SelectStateWidgetState extends State<SelectStateWidget> {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final SelectEntity entity = entityModel.entity;
final SelectEntity entity = entityModel.entity.entity;
Widget ctrl;
if (entity.listOptions.isNotEmpty) {
ctrl = DropdownButton<String>(

View File

@ -15,7 +15,7 @@ class SimpleEntityState extends StatelessWidget {
padding: padding,
child: GestureDetector(
child: Text(
"${entityModel.entity.state}${entityModel.entity.unitOfMeasurement}",
"${entityModel.entity.entity.state}${entityModel.entity.entity.unitOfMeasurement}",
textAlign: textAlign,
maxLines: 4,
overflow: TextOverflow.ellipsis,
@ -24,7 +24,7 @@ class SimpleEntityState extends StatelessWidget {
fontSize: Sizes.stateFontSize,
)),
onTap: () => entityModel.handleTap
? eventBus.fire(new ShowEntityPageEvent(entityModel.entity))
? eventBus.fire(new ShowEntityPageEvent(entityModel.entity.entity))
: null,
)
);

View File

@ -34,7 +34,7 @@ class _SwitchStateWidgetState extends State<SwitchStateWidget> {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final entity = entityModel.entity;
final entity = entityModel.entity.entity;
if (!updatedHere) {
newState = entity.state;
} else {

View File

@ -55,7 +55,7 @@ class _TextInputStateWidgetState extends State<TextInputStateWidget> {
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final TextEntity entity = entityModel.entity;
final TextEntity entity = entityModel.entity.entity;
_entityState = entity.state;
_entityDomain = entity.domain;
_entityId = entity.entityId;