diff --git a/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesWorker.java b/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesWorker.java index 04f3bec..f239470 100644 --- a/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesWorker.java +++ b/android/app/src/main/java/com/keyboardcrumbs/hassclient/LocationUpdatesWorker.java @@ -9,7 +9,6 @@ import android.os.Looper; import androidx.annotation.NonNull; import androidx.concurrent.futures.CallbackToFutureAdapter; -import androidx.work.BackoffPolicy; import androidx.work.Constraints; import androidx.work.Data; import androidx.work.ExistingWorkPolicy; diff --git a/lib/cards/card.class.dart b/lib/cards/card.class.dart index b7c6b73..b134673 100644 --- a/lib/cards/card.class.dart +++ b/lib/cards/card.class.dart @@ -644,6 +644,35 @@ class MarkdownCardData extends CardData { } +class MapCardData extends CardData { + + String title; + + @override + Widget buildCardWidget() { + return MapCard(card: this); + } + + MapCardData(rawData) : super(rawData) { + //Parsing card data + title = rawData['title']; + List geoLocationSources = rawData['geo_location_sources'] ?? []; + if (geoLocationSources.isNotEmpty) { + //TODO add entities by source + } + var rawEntities = rawData["entities"] ?? []; + rawEntities.forEach((rawEntity) { + if (rawEntity is String) { + if (HomeAssistant().entities.isExist(rawEntity)) { + entities.add( + EntityWrapper(entity: HomeAssistant().entities.get(rawEntity))); + } + } + }); + } + +} + class MediaControlCardData extends CardData { @override diff --git a/lib/cards/map_card.dart b/lib/cards/map_card.dart new file mode 100644 index 0000000..d376133 --- /dev/null +++ b/lib/cards/map_card.dart @@ -0,0 +1,25 @@ +part of '../main.dart'; + +class MapCard extends StatelessWidget { + final MapCardData card; + + const MapCard({Key key, this.card}) : super(key: key); + + @override + Widget build(BuildContext context) { + return CardWrapper( + child: Padding( + padding: EdgeInsets.fromLTRB(Sizes.leftWidgetPadding, Sizes.rowPadding, Sizes.rightWidgetPadding, Sizes.rowPadding), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + CardHeader(name: card.title) + ], + ), + ) + ); + } + + +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 296c0c3..feae6c2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -58,6 +58,7 @@ part 'entities/entity_model.widget.dart'; part 'entities/default_entity_container.widget.dart'; part 'entities/missed_entity.widget.dart'; part 'cards/entity_button_card.dart'; +part 'cards/map_card.dart'; part 'pages/widgets/entity_attributes_list.dart'; part 'entities/entity_icon.widget.dart'; part 'entities/entity_name.widget.dart'; diff --git a/lib/managers/app_settings.dart b/lib/managers/app_settings.dart index 297822e..f72d6d9 100644 --- a/lib/managers/app_settings.dart +++ b/lib/managers/app_settings.dart @@ -33,7 +33,6 @@ class AppSettings { bool nextAlarmSensorCreated = false; DisplayMode displayMode; AppTheme appTheme; - final int defaultLocationUpdateIntervalSeconds = 900; bool get isAuthenticated => longLivedToken != null; bool get isTempAuthenticated => tempToken != null; diff --git a/lib/pages/settings/integration_settings.part.dart b/lib/pages/settings/integration_settings.part.dart index a83c2cc..cef68bf 100644 --- a/lib/pages/settings/integration_settings.part.dart +++ b/lib/pages/settings/integration_settings.part.dart @@ -12,10 +12,10 @@ class IntegrationSettingsPage extends StatefulWidget { class _IntegrationSettingsPageState extends State { static const platform = const MethodChannel('com.keyboardcrumbs.hassclient/native'); - static final locationAccuracy = { + /*static final locationAccuracy = { 100: "High", 102: "Balanced" - }; + };*/ Duration _locationInterval; bool _locationTrackingEnabled = false; @@ -35,11 +35,11 @@ class _IntegrationSettingsPageState extends State { await prefs.reload(); SharedPreferences.getInstance().then((prefs) { setState(() { - _accuracy = prefs.getInt("location-updates-priority") ?? 100; + _accuracy = /*prefs.getInt("location-updates-priority") ??*/ 100; _locationTrackingEnabled = (prefs.getInt("location-updates-state") ?? 0) > 0; _showNotification = prefs.getBool("location-updates-show-notification") ?? true; _locationInterval = Duration(milliseconds: prefs.getInt("location-updates-interval") ?? - AppSettings().defaultLocationUpdateIntervalSeconds); + 900000); }); }); } @@ -146,9 +146,7 @@ class _IntegrationSettingsPageState extends State { } if ((_locationInterval?.inMinutes ?? 15) < 15) { notes.add(_getNoteWidget('* Notification is mandatory for location updates with interval less than every 15 minutes', false)); - if (_accuracy < 102) { - notes.add(_getNoteWidget('* Battery consumption will be noticeable', true)); - } + notes.add(_getNoteWidget('* Battery consumption will be noticeable', true)); } if (notes.isEmpty) { return Container(width: 0, height: 0); @@ -184,7 +182,7 @@ class _IntegrationSettingsPageState extends State { ], ), Container(height: Sizes.rowPadding), - Text("Accuracy:", style: Theme.of(context).textTheme.body2), + /*Text("Accuracy:", style: Theme.of(context).textTheme.body2), Container(height: Sizes.rowPadding), DropdownButton( value: _accuracy, @@ -203,7 +201,7 @@ class _IntegrationSettingsPageState extends State { }); }, ), - Container(height: Sizes.rowPadding), + Container(height: Sizes.rowPadding),*/ Text("Update interval"), Row( mainAxisAlignment: MainAxisAlignment.center,