diff --git a/lib/entity_class/light_entity.class.dart b/lib/entity_class/light_entity.class.dart index aaf0936..c0b6cdc 100644 --- a/lib/entity_class/light_entity.class.dart +++ b/lib/entity_class/light_entity.class.dart @@ -33,6 +33,7 @@ class LightEntity extends Entity { LightEntity.SUPPORT_WHITE_VALUE); int get brightness => _getIntAttributeValue("brightness"); + int get whiteValue => _getIntAttributeValue("white_value"); String get effect => attributes["effect"]; int get colorTemp => _getIntAttributeValue("color_temp"); double get maxMireds => _getDoubleAttributeValue("max_mireds"); diff --git a/lib/entity_widgets/common/badge.dart b/lib/entity_widgets/common/badge.dart index 38567ec..0298539 100644 --- a/lib/entity_widgets/common/badge.dart +++ b/lib/entity_widgets/common/badge.dart @@ -14,11 +14,11 @@ class BadgeWidget extends StatelessWidget { { badgeIcon = entityModel.entityWrapper.entity.state == "below_horizon" ? Icon( - MaterialDesignIcons.createIconDataFromIconCode(0xf0dc), + MaterialDesignIcons.getIconDataFromIconCode(0xf0dc), size: iconSize, ) : Icon( - MaterialDesignIcons.createIconDataFromIconCode(0xf5a8), + MaterialDesignIcons.getIconDataFromIconCode(0xf5a8), size: iconSize, ); break; diff --git a/lib/entity_widgets/controls/climate_controls.dart b/lib/entity_widgets/controls/climate_controls.dart index 79778a4..ca1984d 100644 --- a/lib/entity_widgets/controls/climate_controls.dart +++ b/lib/entity_widgets/controls/climate_controls.dart @@ -440,13 +440,13 @@ class TemperatureControlWidget extends StatelessWidget { Column( children: [ IconButton( - icon: Icon(MaterialDesignIcons.createIconDataFromIconName( + icon: Icon(MaterialDesignIcons.getIconDataFromIconName( 'mdi:chevron-up')), iconSize: 30.0, onPressed: () => onInc(), ), IconButton( - icon: Icon(MaterialDesignIcons.createIconDataFromIconName( + icon: Icon(MaterialDesignIcons.getIconDataFromIconName( 'mdi:chevron-down')), iconSize: 30.0, onPressed: () => onDec(), diff --git a/lib/entity_widgets/controls/cover_controls.dart b/lib/entity_widgets/controls/cover_controls.dart index 7235a66..3132d1f 100644 --- a/lib/entity_widgets/controls/cover_controls.dart +++ b/lib/entity_widgets/controls/cover_controls.dart @@ -157,7 +157,7 @@ class CoverTiltControlsWidget extends StatelessWidget { if (entity.supportOpenTilt) { buttons.add(IconButton( icon: Icon( - MaterialDesignIcons.createIconDataFromIconName( + MaterialDesignIcons.getIconDataFromIconName( "mdi:arrow-top-right"), size: Sizes.iconSize, ), @@ -170,7 +170,7 @@ class CoverTiltControlsWidget extends StatelessWidget { if (entity.supportStopTilt) { buttons.add(IconButton( icon: Icon( - MaterialDesignIcons.createIconDataFromIconName("mdi:stop"), + MaterialDesignIcons.getIconDataFromIconName("mdi:stop"), size: Sizes.iconSize, ), onPressed: () => _stop(entity))); @@ -182,7 +182,7 @@ class CoverTiltControlsWidget extends StatelessWidget { if (entity.supportCloseTilt) { buttons.add(IconButton( icon: Icon( - MaterialDesignIcons.createIconDataFromIconName( + MaterialDesignIcons.getIconDataFromIconName( "mdi:arrow-bottom-left"), size: Sizes.iconSize, ), diff --git a/lib/entity_widgets/controls/light_controls.dart b/lib/entity_widgets/controls/light_controls.dart index 7956a63..e74a383 100644 --- a/lib/entity_widgets/controls/light_controls.dart +++ b/lib/entity_widgets/controls/light_controls.dart @@ -10,6 +10,7 @@ class LightControlsWidget extends StatefulWidget { class _LightControlsWidgetState extends State { int _tmpBrightness; + int _tmpWhiteValue; int _tmpColorTemp = 0; HSVColor _tmpColor = HSVColor.fromAHSV(1.0, 30.0, 0.0, 1.0); bool _changedHere = false; @@ -17,6 +18,7 @@ class _LightControlsWidgetState extends State { void _resetState(LightEntity entity) { _tmpBrightness = entity.brightness ?? 0; + _tmpWhiteValue = entity.whiteValue ?? 0; _tmpColorTemp = entity.colorTemp ?? entity.minMireds?.toInt(); _tmpColor = entity.color ?? _tmpColor; _tmpEffect = entity.effect; @@ -38,6 +40,17 @@ class _LightControlsWidgetState extends State { }); } + void _setWhiteValue(LightEntity entity, double value) { + setState(() { + _tmpWhiteValue = value.round(); + _changedHere = true; + eventBus.fire(new ServiceCallEvent( + entity.domain, "turn_on", entity.entityId, + {"white_value": _tmpWhiteValue})); + + }); + } + void _setColorTemp(LightEntity entity, double value) { setState(() { _tmpColorTemp = value.round(); @@ -84,6 +97,7 @@ class _LightControlsWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ _buildBrightnessControl(entity), + _buildWhiteValueControl(entity), _buildColorTempControl(entity), _buildColorControl(entity), _buildEffectControl(entity) @@ -112,6 +126,27 @@ class _LightControlsWidgetState extends State { } } + Widget _buildWhiteValueControl(LightEntity entity) { + if ((entity.supportWhiteValue) && (_tmpWhiteValue != null)) { + return UniversalSlider( + onChanged: (value) { + setState(() { + _changedHere = true; + _tmpWhiteValue = value.round(); + }); + }, + min: 0.0, + max: 255.0, + onChangeEnd: (value) => _setWhiteValue(entity, value), + value: _tmpWhiteValue == null ? 0.0 : _tmpWhiteValue.toDouble(), + leading: Icon(MaterialDesignIcons.getIconDataFromIconName("mdi:file-word-box")), + title: "White", + ); + } else { + return Container(width: 0.0, height: 0.0); + } + } + Widget _buildColorTempControl(LightEntity entity) { if (entity.supportColorTemp) { return UniversalSlider( diff --git a/lib/entity_widgets/controls/media_player_widgets.dart b/lib/entity_widgets/controls/media_player_widgets.dart index d71bd3a..25261df 100644 --- a/lib/entity_widgets/controls/media_player_widgets.dart +++ b/lib/entity_widgets/controls/media_player_widgets.dart @@ -95,7 +95,7 @@ class MediaPlayerWidget extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( - MaterialDesignIcons.createIconDataFromIconName("mdi:movie"), + MaterialDesignIcons.getIconDataFromIconName("mdi:movie"), size: 150.0, color: EntityColor.stateColor("$state"), ) @@ -227,7 +227,7 @@ class MediaPlayerPlaybackControls extends StatelessWidget { if (showMenu) { result.add( IconButton( - icon: Icon(MaterialDesignIcons.createIconDataFromIconName( + icon: Icon(MaterialDesignIcons.getIconDataFromIconName( "mdi:dots-vertical")), onPressed: () => eventBus.fire(new ShowEntityPageEvent(entity)) ) @@ -322,11 +322,11 @@ class _MediaPlayerControlsState extends State { mainAxisSize: MainAxisSize.min, children: [ IconButton( - icon: Icon(MaterialDesignIcons.createIconDataFromIconName("mdi:plus")), + icon: Icon(MaterialDesignIcons.getIconDataFromIconName("mdi:plus")), onPressed: () => _setVolumeUp(entity.entityId) ), IconButton( - icon: Icon(MaterialDesignIcons.createIconDataFromIconName("mdi:minus")), + icon: Icon(MaterialDesignIcons.getIconDataFromIconName("mdi:minus")), onPressed: () => _setVolumeDown(entity.entityId) ) ], diff --git a/lib/entity_widgets/state/cover_state.dart b/lib/entity_widgets/state/cover_state.dart index 241eca7..48a8c32 100644 --- a/lib/entity_widgets/state/cover_state.dart +++ b/lib/entity_widgets/state/cover_state.dart @@ -24,7 +24,7 @@ class CoverStateWidget extends StatelessWidget { if (entity.supportOpen) { buttons.add(IconButton( icon: Icon( - MaterialDesignIcons.createIconDataFromIconName("mdi:arrow-up"), + MaterialDesignIcons.getIconDataFromIconName("mdi:arrow-up"), size: Sizes.iconSize, ), onPressed: entity.canBeOpened ? () => _open(entity) : null)); @@ -36,7 +36,7 @@ class CoverStateWidget extends StatelessWidget { if (entity.supportStop) { buttons.add(IconButton( icon: Icon( - MaterialDesignIcons.createIconDataFromIconName("mdi:stop"), + MaterialDesignIcons.getIconDataFromIconName("mdi:stop"), size: Sizes.iconSize, ), onPressed: () => _stop(entity))); @@ -48,7 +48,7 @@ class CoverStateWidget extends StatelessWidget { if (entity.supportClose) { buttons.add(IconButton( icon: Icon( - MaterialDesignIcons.createIconDataFromIconName("mdi:arrow-down"), + MaterialDesignIcons.getIconDataFromIconName("mdi:arrow-down"), size: Sizes.iconSize, ), onPressed: entity.canBeClosed ? () => _close(entity) : null)); diff --git a/lib/entity_widgets/state/switch_state.dart b/lib/entity_widgets/state/switch_state.dart index db18948..70db6bc 100644 --- a/lib/entity_widgets/state/switch_state.dart +++ b/lib/entity_widgets/state/switch_state.dart @@ -71,13 +71,13 @@ class _SwitchStateWidgetState extends State { children: [ IconButton( onPressed: () => _setNewState(false, entity), - icon: Icon(MaterialDesignIcons.createIconDataFromIconName("mdi:flash-off")), + icon: Icon(MaterialDesignIcons.getIconDataFromIconName("mdi:flash-off")), color: newState == EntityState.on ? Colors.black : Colors.blue, iconSize: Sizes.iconSize, ), IconButton( onPressed: () => _setNewState(true, entity), - icon: Icon(MaterialDesignIcons.createIconDataFromIconName("mdi:flash")), + icon: Icon(MaterialDesignIcons.getIconDataFromIconName("mdi:flash")), color: newState == EntityState.on ? Colors.blue : Colors.black, iconSize: Sizes.iconSize ) diff --git a/lib/main.dart b/lib/main.dart index 21092a3..68d2607 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -359,7 +359,7 @@ class _MainPageState extends State with WidgetsBindingObserver, Ticker }, ), new ListTile( - leading: Icon(MaterialDesignIcons.createIconDataFromIconName("mdi:github-circle")), + leading: Icon(MaterialDesignIcons.getIconDataFromIconName("mdi:github-circle")), title: Text("Report an issue"), onTap: () { Navigator.of(context).pop(); @@ -530,7 +530,7 @@ class _MainPageState extends State with WidgetsBindingObserver, Ticker title: Text(_homeAssistant != null ? _homeAssistant.locationName : ""), actions: [ IconButton( - icon: Icon(MaterialDesignIcons.createIconDataFromIconName( + icon: Icon(MaterialDesignIcons.getIconDataFromIconName( "mdi:dots-vertical"), color: Colors.white,), onPressed: () { showMenu( @@ -572,7 +572,7 @@ class _MainPageState extends State with WidgetsBindingObserver, Ticker mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( - MaterialDesignIcons.createIconDataFromIconName("mdi:home-assistant"), + MaterialDesignIcons.getIconDataFromIconName("mdi:home-assistant"), size: 100.0, color: Colors.blue, ), diff --git a/lib/mdi.class.dart b/lib/mdi.class.dart index dabb10d..0098667 100644 --- a/lib/mdi.class.dart +++ b/lib/mdi.class.dart @@ -2923,11 +2923,11 @@ class MaterialDesignIcons { } }*/ - static IconData createIconDataFromIconCode(int code) { + static IconData getIconDataFromIconCode(int code) { return IconData(code, fontFamily: 'Material Design Icons'); } - static IconData createIconDataFromIconName(String name) { + static IconData getIconDataFromIconName(String name) { return IconData(getIconCodeByIconName(name), fontFamily: 'Material Design Icons'); } diff --git a/lib/ui_class/view.class.dart b/lib/ui_class/view.class.dart index 0281a58..5adb2e1 100644 --- a/lib/ui_class/view.class.dart +++ b/lib/ui_class/view.class.dart @@ -77,7 +77,7 @@ class HAView { Tab( icon: Icon( - MaterialDesignIcons.createIconDataFromIconName( + MaterialDesignIcons.getIconDataFromIconName( iconName ?? "mdi:home-assistant"), size: 24.0, ) @@ -92,7 +92,7 @@ class HAView { if (linkedEntity.icon != null && linkedEntity.icon.length > 0) { return Tab( icon: Icon( - MaterialDesignIcons.createIconDataFromIconName( + MaterialDesignIcons.getIconDataFromIconName( linkedEntity.icon), size: 24.0, ) diff --git a/lib/ui_widgets/card_widget.dart b/lib/ui_widgets/card_widget.dart index 238322f..6b248ae 100644 --- a/lib/ui_widgets/card_widget.dart +++ b/lib/ui_widgets/card_widget.dart @@ -156,7 +156,7 @@ class CardWidget extends StatelessWidget { child: IconButton( padding: EdgeInsets.all(0.0), alignment: Alignment.centerRight, - icon: Icon(MaterialDesignIcons.createIconDataFromIconName( + icon: Icon(MaterialDesignIcons.getIconDataFromIconName( "mdi:dots-vertical")), onPressed: () => eventBus.fire(new ShowEntityPageEvent(card.linkedEntityWrapper.entity)) )