diff --git a/lib/entity_widgets/default_entity_container.dart b/lib/entity_widgets/default_entity_container.dart index 139016b..f9d29ca 100644 --- a/lib/entity_widgets/default_entity_container.dart +++ b/lib/entity_widgets/default_entity_container.dart @@ -10,18 +10,31 @@ class DefaultEntityContainer extends StatelessWidget { @override Widget build(BuildContext context) { - return Row( - mainAxisSize: MainAxisSize.max, - children: [ - EntityIcon(), + final EntityModel entityModel = EntityModel.of(context); + return InkWell( + onLongPress: () { + if (entityModel.handleTap) { + entityModel.entityWrapper.handleHold(); + } + }, + onTap: () { + if (entityModel.handleTap) { + entityModel.entityWrapper.handleTap(); + } + }, + child: Row( + mainAxisSize: MainAxisSize.max, + children: [ + EntityIcon(), - Flexible( - fit: FlexFit.tight, - flex: 3, - child: EntityName(), - ), - state - ], + Flexible( + fit: FlexFit.tight, + flex: 3, + child: EntityName(), + ), + state + ], + ), ); } } \ No newline at end of file diff --git a/lib/entity_widgets/entity_icon.dart b/lib/entity_widgets/entity_icon.dart index e8ba216..76e69e7 100644 --- a/lib/entity_widgets/entity_icon.dart +++ b/lib/entity_widgets/entity_icon.dart @@ -10,27 +10,14 @@ class EntityIcon extends StatelessWidget { @override Widget build(BuildContext context) { - final entityModel = EntityModel.of(context); - return InkWell( - child: Padding( - padding: padding, - child: MaterialDesignIcons.createIconWidgetFromEntityData( - entityModel.entityWrapper, - iconSize, - EntityColor.stateColor(entityModel.entityWrapper.entity.state) - ), + final EntityWrapper entityWrapper = EntityModel.of(context).entityWrapper; + return Padding( + padding: padding, + child: MaterialDesignIcons.createIconWidgetFromEntityData( + entityWrapper, + iconSize, + EntityColor.stateColor(entityWrapper.entity.state) ), - onLongPress: () { - if (entityModel.handleTap) { - entityModel.entityWrapper.handleHold(); - } - }, - onTap: () { - if (entityModel.handleTap) { - entityModel.entityWrapper.handleTap(); - } - } - ); } } \ No newline at end of file diff --git a/lib/entity_widgets/entity_name.dart b/lib/entity_widgets/entity_name.dart index 6108e51..a2d211f 100644 --- a/lib/entity_widgets/entity_name.dart +++ b/lib/entity_widgets/entity_name.dart @@ -12,28 +12,16 @@ class EntityName extends StatelessWidget { @override Widget build(BuildContext context) { - final entityModel = EntityModel.of(context); - return InkWell( - child: Padding( - padding: padding, - child: Text( - "${entityModel.entityWrapper.displayName}", - overflow: textOverflow, - softWrap: wordsWrap, - style: TextStyle(fontSize: fontSize), - textAlign: textAlign, - ), + final EntityWrapper entityWrapper = EntityModel.of(context).entityWrapper; + return Padding( + padding: padding, + child: Text( + "${entityWrapper.displayName}", + overflow: textOverflow, + softWrap: wordsWrap, + style: TextStyle(fontSize: fontSize), + textAlign: textAlign, ), - onLongPress: () { - if (entityModel.handleTap) { - entityModel.entityWrapper.handleHold(); - } - }, - onTap: () { - if (entityModel.handleTap) { - entityModel.entityWrapper.handleTap(); - } - } ); } } \ No newline at end of file diff --git a/lib/entity_widgets/glance_entity_container.dart b/lib/entity_widgets/glance_entity_container.dart index 89adbef..eddb141 100644 --- a/lib/entity_widgets/glance_entity_container.dart +++ b/lib/entity_widgets/glance_entity_container.dart @@ -11,6 +11,7 @@ class GlanceEntityContainer extends StatelessWidget { @override Widget build(BuildContext context) { + final EntityWrapper entityWrapper = EntityModel.of(context).entityWrapper; List result = []; if (showName) { result.add(EntityName( @@ -21,10 +22,12 @@ class GlanceEntityContainer extends StatelessWidget { fontSize: Sizes.smallFontSize, )); } - result.add(EntityIcon( - padding: EdgeInsets.all(0.0), - iconSize: Sizes.iconSize, - )); + result.add( + EntityIcon( + padding: EdgeInsets.all(0.0), + iconSize: Sizes.iconSize, + ) + ); if (showState) { result.add(SimpleEntityState( textAlign: TextAlign.center, @@ -32,11 +35,20 @@ class GlanceEntityContainer extends StatelessWidget { padding: EdgeInsets.only(top: Sizes.rowPadding), )); } - return Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, - children: result, + return Center( + child: InkWell( + child: ConstrainedBox( + constraints: BoxConstraints(minWidth: Sizes.iconSize*2), + child: Column( + mainAxisSize: MainAxisSize.min, + //mainAxisAlignment: MainAxisAlignment.start, + //crossAxisAlignment: CrossAxisAlignment.center, + children: result, + ), + ), + onTap: () => entityWrapper.handleTap(), + onLongPress: () => entityWrapper.handleHold(), + ), ); } } \ No newline at end of file diff --git a/lib/entity_widgets/state/climate_state.dart b/lib/entity_widgets/state/climate_state.dart index 7513256..4a37134 100644 --- a/lib/entity_widgets/state/climate_state.dart +++ b/lib/entity_widgets/state/climate_state.dart @@ -19,39 +19,34 @@ class ClimateStateWidget extends StatelessWidget { return Padding( padding: EdgeInsets.fromLTRB( 0.0, 0.0, Sizes.rightWidgetPadding, 0.0), - child: GestureDetector( - child: Column( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Row( - children: [ - Text("${entity.state}", - textAlign: TextAlign.right, - style: new TextStyle( - fontWeight: FontWeight.bold, - fontSize: Sizes.stateFontSize, - )), - Text(" $targetTemp", - textAlign: TextAlign.right, - style: new TextStyle( - fontSize: Sizes.stateFontSize, - )) - ], - ), - entity.attributes["current_temperature"] != null ? - Text("Currently: ${entity.attributes["current_temperature"]}", - textAlign: TextAlign.right, - style: new TextStyle( + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + children: [ + Text("${entity.state}", + textAlign: TextAlign.right, + style: new TextStyle( + fontWeight: FontWeight.bold, fontSize: Sizes.stateFontSize, - color: Colors.black45) - ) : - Container(height: 0.0,) - ], - ), - onTap: () => entityModel.handleTap - ? eventBus.fire(new ShowEntityPageEvent(entity)) - : null, + )), + Text(" $targetTemp", + textAlign: TextAlign.right, + style: new TextStyle( + fontSize: Sizes.stateFontSize, + )) + ], + ), + entity.attributes["current_temperature"] != null ? + Text("Currently: ${entity.attributes["current_temperature"]}", + textAlign: TextAlign.right, + style: new TextStyle( + fontSize: Sizes.stateFontSize, + color: Colors.black45) + ) : + Container(height: 0.0,) + ], )); } } \ No newline at end of file diff --git a/lib/entity_widgets/state/simple_state.dart b/lib/entity_widgets/state/simple_state.dart index dbb9b1f..e5ab101 100644 --- a/lib/entity_widgets/state/simple_state.dart +++ b/lib/entity_widgets/state/simple_state.dart @@ -12,28 +12,17 @@ class SimpleEntityState extends StatelessWidget { Widget build(BuildContext context) { final entityModel = EntityModel.of(context); Widget result = Padding( - padding: padding, - child: InkWell( - child: Text( - "${entityModel.entityWrapper.entity.state}${entityModel.entityWrapper.entity.unitOfMeasurement}", - textAlign: textAlign, - maxLines: 10, - overflow: TextOverflow.ellipsis, - softWrap: true, - style: new TextStyle( - fontSize: Sizes.stateFontSize, - )), - onLongPress: () { - if (entityModel.handleTap) { - entityModel.entityWrapper.handleHold(); - } - }, - onTap: () { - if (entityModel.handleTap) { - entityModel.entityWrapper.handleTap(); - } - } + padding: padding, + child: Text( + "${entityModel.entityWrapper.entity.state} ${entityModel.entityWrapper.entity.unitOfMeasurement}", + textAlign: textAlign, + maxLines: 10, + overflow: TextOverflow.ellipsis, + softWrap: true, + style: new TextStyle( + fontSize: Sizes.stateFontSize, ) + ) ); if (expanded) { return Flexible( diff --git a/lib/ui_widgets/glance_card.dart b/lib/ui_widgets/glance_card.dart index b6d7f1f..dc28cd2 100644 --- a/lib/ui_widgets/glance_card.dart +++ b/lib/ui_widgets/glance_card.dart @@ -24,27 +24,25 @@ class GlanceCardWidget extends StatelessWidget { Widget _buildRows(BuildContext context) { List result = []; - double width = MediaQuery.of(context).size.width - Sizes.leftWidgetPadding - (2*Sizes.rightWidgetPadding); List toShow = card.entities.where((entity) {return !entity.entity.isHidden;}).toList(); int columnsCount = toShow.length >= card.columnsCount ? card.columnsCount : toShow.length; - card.entities.forEach((EntityWrapper entity) { - if (!entity.entity.isHidden) { - result.add( - SizedBox( - width: width / columnsCount, - child: EntityModel( - entityWrapper: entity, - child: entity.entity.buildGlanceWidget(context, card.showName, card.showState), - handleTap: true - ), - ) - ); - } + + toShow.forEach((EntityWrapper entity) { + result.add( + FractionallySizedBox( + widthFactor: 1/columnsCount, + child: EntityModel( + entityWrapper: entity, + child: entity.entity.buildGlanceWidget(context, card.showName, card.showState), + handleTap: true + ), + ) + ); }); return Padding( padding: EdgeInsets.fromLTRB(0.0, Sizes.rowPadding, 0.0, 2*Sizes.rowPadding), child: Wrap( - alignment: WrapAlignment.spaceAround, + //alignment: WrapAlignment.spaceAround, runSpacing: Sizes.rowPadding*2, children: result, ),