Compare commits

...

10 Commits

Author SHA1 Message Date
5211d1ff46 v. 0.5.4 2019-05-09 14:15:21 +03:00
d1c9fddba6 v. 0.5.4 2019-05-09 13:17:30 +03:00
14cc55a2c7 Resolves #373 2019-05-09 13:16:35 +03:00
277c67fc6f Add padding for links in About dialog 2019-04-04 21:54:41 +03:00
2a01ff8a03 Bump version in UI 2019-04-04 21:51:05 +03:00
b246b7bc1d 0.5.3 and new build numbers 2019-04-04 21:44:16 +03:00
e1868b9a14 Add privacy polici and terms and conditions links 2019-04-04 21:43:23 +03:00
125f3ac16c Resolves #327 Timer duration parsing error 2019-04-04 21:38:23 +03:00
be502b5668 Discord icon fix 2019-04-04 21:38:05 +03:00
6f33fdca9f New app icon 2019-04-04 21:37:41 +03:00
14 changed files with 83 additions and 34 deletions

View File

@ -36,4 +36,4 @@
</intent-filter>
</activity>
</application>
</manifest>
</manifest>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -9,22 +9,31 @@ class TimerEntity extends Entity {
void update(Map rawData) {
super.update(rawData);
String durationSource = "${attributes["duration"]}";
List<String> durationList = durationSource.split(":");
if (durationList.length == 1) {
duration = Duration(seconds: int.tryParse(durationList[0] ?? 0));
} else if (durationList.length == 2) {
duration = Duration(
hours: int.tryParse(durationList[0]) ?? 0,
minutes: int.tryParse(durationList[1]) ?? 0
);
} else if (durationList.length == 3) {
duration = Duration(
hours: int.tryParse(durationList[0]) ?? 0,
minutes: int.tryParse(durationList[1]) ?? 0,
seconds: int.tryParse(durationList[2]) ?? 0
);
if (durationSource != null && durationSource.isNotEmpty) {
try {
List<String> durationList = durationSource.split(":");
if (durationList.length == 1) {
duration = Duration(seconds: int.tryParse(durationList[0] ?? 0));
} else if (durationList.length == 2) {
duration = Duration(
hours: int.tryParse(durationList[0]) ?? 0,
minutes: int.tryParse(durationList[1]) ?? 0
);
} else if (durationList.length == 3) {
duration = Duration(
hours: int.tryParse(durationList[0]) ?? 0,
minutes: int.tryParse(durationList[1]) ?? 0,
seconds: int.tryParse(durationList[2]) ?? 0
);
} else {
Logger.e("Strange $entityId duration format: $durationSource");
duration = Duration(seconds: 0);
}
} catch (e) {
Logger.e("Error parsing duration for $entityId: ${e.toString()}");
duration = Duration(seconds: 0);
}
} else {
Logger.e("Cann't parse $entityId duration: $durationSource");
duration = Duration(seconds: 0);
}
}

View File

@ -262,7 +262,7 @@ class HomeAssistant {
await _sendInitialMessage("get_panels").then((data) {
if (data["success"]) {
data["result"].forEach((k,v) {
String title = v['title'] == null ? "${k[0].toUpperCase()}${k.substring(1)}" : "${v['title'][0].toUpperCase()}${v['title'].substring(1)}";
String title = v['title'] == null ? "${k[0]?.toUpperCase()}${k?.substring(1)}" : "${v['title'][0]?.toUpperCase()}${v['title']?.substring(1)}";
panels.add(Panel(
id: k,
type: v["component_name"],

View File

@ -100,7 +100,7 @@ part 'ui_widgets/config_panel_widget.dart';
EventBus eventBus = new EventBus();
const String appName = "HA Client";
const appVersion = "0.5.0";
const appVersion = "0.5.4";
String homeAssistantWebHost;
@ -392,6 +392,14 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
},
),
Divider(),
new ListTile(
leading: Icon(MaterialDesignIcons.getIconDataFromIconName("mdi:discord")),
title: Text("Join Discord server"),
onTap: () {
Navigator.of(context).pop();
HAUtils.launchURL("https://discord.gg/AUzEvwn");
},
),
new AboutListTile(
aboutBoxChildren: <Widget>[
GestureDetector(
@ -406,6 +414,38 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver, Ticker
decoration: TextDecoration.underline
),
),
),
Container(
height: 10.0,
),
GestureDetector(
onTap: () {
Navigator.of(context).pop();
HAUtils.launchURLInCustomTab(context, "http://ha-client.homemade.systems/terms_and_conditions");
},
child: Text(
"Terms and Conditions",
style: TextStyle(
color: Colors.blue,
decoration: TextDecoration.underline
),
),
),
Container(
height: 10.0,
),
GestureDetector(
onTap: () {
Navigator.of(context).pop();
HAUtils.launchURLInCustomTab(context, "http://ha-client.homemade.systems/privacy_policy");
},
child: Text(
"Privacy Policy",
style: TextStyle(
color: Colors.blue,
decoration: TextDecoration.underline
),
),
)
],
applicationName: appName,

View File

@ -85,7 +85,7 @@ class HAView {
} else {
return
Tab(
text: name.toUpperCase(),
text: "${name?.toUpperCase()}",
);
}
} else {
@ -99,7 +99,7 @@ class HAView {
);
} else {
return Tab(
text: linkedEntity.displayName.toUpperCase(),
text: "${linkedEntity?.displayName?.toUpperCase()}",
);
}

View File

@ -243,7 +243,7 @@ class CardWidget extends StatelessWidget {
Widget _buildEntityButtonCard(BuildContext context) {
card.linkedEntityWrapper.displayName = card.name?.toUpperCase() ??
card.linkedEntityWrapper.displayName.toUpperCase();
card.linkedEntityWrapper.displayName?.toUpperCase();
return Card(
child: EntityModel(
entityWrapper: card.linkedEntityWrapper,

View File

@ -35,7 +35,7 @@ packages:
name: cached_network_image
url: "https://pub.dartlang.org"
source: hosted
version: "0.7.0"
version: "0.8.0"
charcode:
dependency: transitive
description:
@ -100,7 +100,7 @@ packages:
name: event_bus
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
version: "1.1.0"
flutter:
dependency: "direct main"
description: flutter
@ -152,7 +152,7 @@ packages:
name: http
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.0+1"
version: "0.12.0+2"
http_parser:
dependency: transitive
description:
@ -166,14 +166,14 @@ packages:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.7"
version: "2.0.8"
intl:
dependency: transitive
description:
name: intl
url: "https://pub.dartlang.org"
source: hosted
version: "0.15.7"
version: "0.15.8"
logging:
dependency: transitive
description:
@ -187,7 +187,7 @@ packages:
name: markdown
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
version: "2.0.3"
matcher:
dependency: transitive
description:
@ -215,14 +215,14 @@ packages:
name: path_drawing
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.0"
version: "0.4.1"
path_parsing:
dependency: transitive
description:
name: path_parsing
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.3"
version: "0.1.4"
path_provider:
dependency: transitive
description:
@ -264,7 +264,7 @@ packages:
name: shared_preferences
url: "https://pub.dartlang.org"
source: hosted
version: "0.5.1+1"
version: "0.5.2"
sky_engine:
dependency: transitive
description: flutter
@ -283,7 +283,7 @@ packages:
name: sqflite
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.3"
version: "1.1.5"
stack_trace:
dependency: transitive
description:
@ -346,7 +346,7 @@ packages:
name: uuid
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.1"
vector_math:
dependency: transitive
description:
@ -360,7 +360,7 @@ packages:
name: web_socket_channel
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.9"
version: "1.0.12"
xml:
dependency: transitive
description:

View File

@ -1,7 +1,7 @@
name: hass_client
description: Home Assistant Android Client
version: 0.5.0+97
version: 0.5.4+541
environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"