diff --git a/bluecherry_appcast.xml b/bluecherry_appcast.xml index 36df1106..375d6ed4 100644 --- a/bluecherry_appcast.xml +++ b/bluecherry_appcast.xml @@ -2,6 +2,11 @@ Bluecherry - Appcast + + Version 3.0.0-beta12 + Possibility to filter events by time. Correctly show video when there is any special characters on the password. + Thu, 28 Sep 2023 + Version 3.0.0-beta11 Reworked the Timeline of Events and improved overall look and feel. A lot of bug fixes and UX improvements diff --git a/installer/windows-installer.iss b/installer/windows-installer.iss index 9614aaed..9441bdc8 100644 --- a/installer/windows-installer.iss +++ b/installer/windows-installer.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Bluecherry DVR" -#define MyAppVersion "3.0.0-beta11" +#define MyAppVersion "3.0.0-beta12" #define MyAppPublisher "Bluecherry DVR" #define MyAppURL "https://www.bluecherrydvr.com/" #define MyAppExeName "bluecherry_client.exe" diff --git a/lib/widgets/device_grid/video_status_label.dart b/lib/widgets/device_grid/video_status_label.dart index 524c0f0d..96de7404 100644 --- a/lib/widgets/device_grid/video_status_label.dart +++ b/lib/widgets/device_grid/video_status_label.dart @@ -57,10 +57,10 @@ class _VideoStatusLabelState extends State { String get _source => widget.video.player.dataSource!; bool get isLive => widget.video.player.dataSource != null && - // It is only LIVE if it starts with rtsp and isn't hsl + // It is only LIVE if it starts with rtsp or is hsl (_source.startsWith('rtsp') || _source.contains('media/mjpeg.php') || - _source.endsWith('index.m3u8')); + _source.endsWith('index.m3u8') /* hsl */); _VideoLabel get status => widget.video.error != null ? _VideoLabel.error @@ -213,14 +213,17 @@ class _DeviceVideoInfo extends StatelessWidget { List buildTextSpans(BuildContext context) { final loc = AppLocalizations.of(context); + + final name = _buildTextSpan(context, title: loc.device, data: device.name); + final server = _buildTextSpan( + context, + title: loc.server, + data: '${device.server.name} (${device.id})', + ); if (isLive) { return [ - _buildTextSpan(context, title: loc.device, data: device.name), - _buildTextSpan( - context, - title: loc.server, - data: '${device.server.name} (${device.id})', - ), + name, + server, _buildTextSpan( context, title: loc.ptzSupported, @@ -241,16 +244,11 @@ class _DeviceVideoInfo extends StatelessWidget { last: true, ), ]; - } else { + } else if (event != null) { // If not live, it is a recorded footage - assert(event != null); return [ - _buildTextSpan(context, title: loc.device, data: device.name), - _buildTextSpan( - context, - title: loc.server, - data: '${device.server.name} (${device.id})', - ), + name, + server, _buildTextSpan( context, title: loc.duration, @@ -268,6 +266,8 @@ class _DeviceVideoInfo extends StatelessWidget { last: true, ), ]; + } else { + return [name, server]; } } diff --git a/lib/widgets/error_warning.dart b/lib/widgets/error_warning.dart index d4fae764..3618edcd 100644 --- a/lib/widgets/error_warning.dart +++ b/lib/widgets/error_warning.dart @@ -40,6 +40,7 @@ class ErrorWarning extends StatelessWidget { const SizedBox(height: 8.0), Text( message.toUpperCase(), + textAlign: TextAlign.center, style: const TextStyle( color: Colors.white70, fontSize: 12.0, diff --git a/linux/debian/DEBIAN/control b/linux/debian/DEBIAN/control index c19dc667..d3bc35b4 100644 --- a/linux/debian/DEBIAN/control +++ b/linux/debian/DEBIAN/control @@ -1,5 +1,5 @@ Package: bluecherrydvr -Version: 3.0.0-beta11 +Version: 3.0.0-beta12 Section: base Priority: optional Homepage: https://www.bluecherrydvr.com/ diff --git a/linux/debian/usr/share/metainfo/bluecherry.appdata.xml b/linux/debian/usr/share/metainfo/bluecherry.appdata.xml index 84104b28..b7e6c569 100644 --- a/linux/debian/usr/share/metainfo/bluecherry.appdata.xml +++ b/linux/debian/usr/share/metainfo/bluecherry.appdata.xml @@ -35,7 +35,8 @@ --> bluecherrydvr.desktop - + | + | diff --git a/linux/rpm/bluecherry.spec b/linux/rpm/bluecherry.spec index 9e31d1e7..7b459f7c 100644 --- a/linux/rpm/bluecherry.spec +++ b/linux/rpm/bluecherry.spec @@ -1,5 +1,5 @@ Name: bluecherrydvr -Version: 3.0.0_beta11 +Version: 3.0.0_beta12 Release: 1 Summary: Bluecherry client written in Flutter. License: EULA diff --git a/packages/unity_multi_window/example/pubspec.lock b/packages/unity_multi_window/example/pubspec.lock index a1b587e8..ec963e1c 100644 --- a/packages/unity_multi_window/example/pubspec.lock +++ b/packages/unity_multi_window/example/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.2" + version: "1.18.0" fake_async: dependency: transitive description: @@ -124,18 +124,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" string_scanner: dependency: transitive description: @@ -156,10 +156,10 @@ packages: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" url: "https://pub.dev" source: hosted - version: "0.6.0" + version: "0.6.1" unity_multi_window: dependency: "direct main" description: diff --git a/packages/unity_video_player/unity_video_player_main/pubspec.yaml b/packages/unity_video_player/unity_video_player_main/pubspec.yaml index 32dae2f8..8b11c454 100644 --- a/packages/unity_video_player/unity_video_player_main/pubspec.yaml +++ b/packages/unity_video_player/unity_video_player_main/pubspec.yaml @@ -12,9 +12,9 @@ environment: dependencies: flutter: sdk: flutter - media_kit: ^1.1.6 # Primary package. - media_kit_video: ^1.1.7 # For video rendering. - media_kit_libs_video: ^1.0.0 # Native video dependencies. + media_kit: ^1.1.8 # Primary package. + media_kit_video: ^1.2.1 # For video rendering. + media_kit_libs_video: ^1.0.3 # Native video dependencies. unity_video_player_platform_interface: path: ../unity_video_player_platform_interface/ path_provider: diff --git a/packages/unity_video_player/unity_video_player_platform_interface/lib/unity_video_player_platform_interface.dart b/packages/unity_video_player/unity_video_player_platform_interface/lib/unity_video_player_platform_interface.dart index ba784475..04eaee6b 100644 --- a/packages/unity_video_player/unity_video_player_platform_interface/lib/unity_video_player_platform_interface.dart +++ b/packages/unity_video_player/unity_video_player_platform_interface/lib/unity_video_player_platform_interface.dart @@ -348,15 +348,17 @@ abstract class UnityVideoPlayer { } void _onDurationUpdate(Duration duration) { - _lastImageTime = DateTime.now(); - _isImageOld = false; - _oldImageTimer?.cancel(); - _oldImageTimer = Timer(timerInterval, () { - // If the image is still the same after the interval, then it's old. - if (duration <= duration) { - _isImageOld = true; - } - }); + if (duration > Duration.zero) { + _lastImageTime = DateTime.now(); + _isImageOld = false; + _oldImageTimer?.cancel(); + _oldImageTimer = Timer(timerInterval, () { + // If the image is still the same after the interval, then it's old. + if (duration <= duration) { + _isImageOld = true; + } + }); + } } /// The current data source url diff --git a/pubspec.lock b/pubspec.lock index 2e7d0c8e..849b50dc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -417,74 +417,74 @@ packages: dependency: transitive description: name: media_kit - sha256: "92c7f59e075d74471b31e703f81ccc1d7102739ebcce945b30a6417fa2f751d5" + sha256: "1283b500341d41f033478706204a2b4ae2612e9b331c934bc4fad8c4bb869f6d" url: "https://pub.dev" source: hosted - version: "1.1.7" + version: "1.1.8+2" media_kit_libs_android_video: dependency: transitive description: name: media_kit_libs_android_video - sha256: "498a5062bc5f000bd23ada3be788ea886ab32c52f7a8252dde1264ca019b819b" + sha256: a7ef60926ac528e2fabe9ee7084e648e385422a881ba914c978a7a81e6595dee url: "https://pub.dev" source: hosted - version: "1.3.3" + version: "1.3.5" media_kit_libs_ios_video: dependency: transitive description: name: media_kit_libs_ios_video - sha256: fed403dc9d54462e51ee80e0cb23c12a53fadea9a8fa18aca2de9054176d1159 + sha256: b5382994eb37a4564c368386c154ad70ba0cc78dacdd3fb0cd9f30db6d837991 url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" media_kit_libs_linux: dependency: transitive description: name: media_kit_libs_linux - sha256: "3b7c272179639a914dc8a50bf8a3f2df0e9a503bd727c88fab499dbdf6cb1eb8" + sha256: e186891c31daa6bedab4d74dcdb4e8adfccc7d786bfed6ad81fe24a3b3010310 url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.1.3" media_kit_libs_macos_video: dependency: transitive description: name: media_kit_libs_macos_video - sha256: c06e831f3c22a45296d375788d9bc07871b448f8e9ec98d77b11e5e118a83fb2 + sha256: f26aa1452b665df288e360393758f84b911f70ffb3878032e1aabba23aa1032d url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" media_kit_libs_video: dependency: transitive description: name: media_kit_libs_video - sha256: d961c49bc0d454524014b76fd66db1aa06e673f03b616f5fdbc59c405178a878 + sha256: f130964bd4c0907d0af645ba03c8080a914776bfd2e23761a5e22ac3c0c0906a url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.0.3" media_kit_libs_windows_video: dependency: transitive description: name: media_kit_libs_windows_video - sha256: "923f068344d7d200184e0aaa2597f3de6c05982a3b1f18035d842ab53f2a1350" + sha256: "7bace5f35d9afcc7f9b5cdadb7541d2191a66bb3fc71bfa11c1395b3360f6122" url: "https://pub.dev" source: hosted - version: "1.0.8" + version: "1.0.9" media_kit_native_event_loop: dependency: transitive description: name: media_kit_native_event_loop - sha256: e37ce6fb5fa71b8cf513c6a6cd591367743a342a385e7da621a047dd8ef6f4a4 + sha256: a605cf185499d14d58935b8784955a92a4bf0ff4e19a23de3d17a9106303930e url: "https://pub.dev" source: hosted - version: "1.0.7" + version: "1.0.8" media_kit_video: dependency: transitive description: name: media_kit_video - sha256: cd3ab78e7626146f115134b82c4029ac5987ba6351719c9067d86789723e0c12 + sha256: b1a427f0540c5f052dfab73e4b76a5eb8efa7ebb5d83179cb23fc3932afc315a url: "https://pub.dev" source: hosted - version: "1.1.8" + version: "1.2.1" meta: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d2b0ee45..11c0d037 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: Bluecherry client written in Flutter. publish_to: "none" -version: 3.0.0-beta11 +version: 3.0.0-beta12 environment: sdk: ">=3.0.0 <4.0.0" diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 0039e4f6..02bdb271 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,5 +1,5 @@ name: bluecherry-client -version: 3.0.0-beta11 +version: 3.0.0-beta12 summary: Bluecherry DVR Client description: Bluecherry DVR client