diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d7649381..e1bc35a6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -85,7 +85,7 @@ jobs: # draft: true # prerelease: false # body: "" - # tag_name: "vnext" + # tag_name: "bleeding_edge" # files: | # bluecherry-dvr-setup.exe # token: ${{ secrets.GITHUB_TOKEN }} @@ -123,7 +123,7 @@ jobs: draft: true prerelease: false body: "" - tag_name: "vnext" + tag_name: "bleeding_edge" files: | bluecherry-dvr-setup.exe token: ${{ secrets.GITHUB_TOKEN }} @@ -138,21 +138,52 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} submodules: recursive - - run: sudo apt-get update -y - - run: sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev mpv libmpv-dev dpkg-dev p7zip-full p7zip-rar - - uses: subosito/flutter-action@v2.8.0 + - name: Install dependencies + run: | + sudo apt-get update -y + sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev mpv libmpv-dev dpkg-dev p7zip-full p7zip-rar + + - name: Install Flutter + uses: subosito/flutter-action@v2.8.0 with: # Stable channel is necessary because playback is broken on master channel: "stable" # cache: true - - run: flutter gen-l10n - - run: flutter pub get - - run: flutter build linux --verbose + - name: Build Flutter + run: | + flutter gen-l10n + flutter pub get + flutter build linux --verbose - - run: sudo pip3 install git+https://github.com/AppImageCrafters/appimage-builder.git - - run: appimage-builder --skip-tests + - name: Build AppImage + run: | + sudo pip3 install git+https://github.com/AppImageCrafters/appimage-builder.git + appimage-builder --skip-tests + cp Bluecherry-latest-x86_64.AppImage bluecherry-linux-x86_64.AppImage + + - name: Build RPM Package + run: | + mkdir -p linux/debian/usr/bin + cp -fr build/linux/x64/release/bundle linux/debian/usr/share/bluecherry_client + ln -sr linux/debian/usr/share/bluecherry_client/bluecherry_client linux/debian/usr/bin/bluecherry_client + sed -i "s:cp -rf :cp -rf $(pwd)/:" linux/rpm/bluecherry.spec + cd linux/debian + sed -i "s:FILES_HERE:$(find usr \( -type l -o -type f \) -follow -print | awk '{printf "/%s\\n", $0}'):" ../rpm/bluecherry.spec + cd ../../ + rpmbuild -bb linux/rpm/bluecherry.spec -D "_topdir $(pwd)/rpmbuild" + cp rpmbuild/RPMS/x86_64/*.rpm bluecherry-linux-x86_64.rpm - - run: cp Bluecherry-latest-x86_64.AppImage Bluecherry-latest.AppImage + - name: Build DEB Package + run: | + dpkg-deb --build --root-owner-group linux/debian + cp linux/*.deb bluecherry-linux-x86_64.deb + + - name: Build Tarball + run: | + mkdir -p AppDir/ + cp -r linux/debian/usr AppDir/ + ln -sr AppDir/usr/bin/bluecherry_client AppDir/bluecherry_client + tar czf bluecherry-linux-x86_64.tar.gz -C AppDir/ . - name: Release # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-contexts @@ -164,5 +195,8 @@ jobs: body: "" tag_name: "bleeding_edge" files: | - Bluecherry-latest.AppImage + bluecherry-linux-x86_64.AppImage + bluecherry-linux-x86_64.deb + bluecherry-linux-x86_64.tar.gz + bluecherry-linux-x86_64.rpm token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 5594524f..92150d30 100644 --- a/.gitignore +++ b/.gitignore @@ -56,4 +56,11 @@ appimage-build/ Bluecherry-latest-x86_64.AppImage Bluecherry-latest-x86_64.AppImage.zsync AppDirversion.txt -AppDirassets/ \ No newline at end of file +AppDirassets/ + +*.deb +/linux/debian/usr/bin +/linux/debian/usr/share/bluecherry +/linux/debian/usr/share/bluecherry_client +*.tar.gz +rpmbuild/ \ No newline at end of file diff --git a/README.md b/README.md index a24642e4..d7e5af80 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,20 @@ - +
+ +

Bluecherry Client

+ + + -

Bluecherry Client

+
+ Bluecherry DVR client to run across range of devices. +
-[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/bluecherrydvr/unity/graphs/commit-activity) -[![Github all releases](https://img.shields.io/github/downloads/bluecherrydvr/unity/total.svg)](https://GitHub.com/bluecherrydvr/unity/releases/) -![Build status](https://github.com/bluecherrydvr/unity/actions/workflows/main.yml/badge.svg) + Website โ€ข + Purchase โ€ข + Chat +
- -**Bluecherry DVR client to run across range of devices.** - -Website โ€ข -Purchase โ€ข -Chat - ## License [![](https://camo.githubusercontent.com/317e8956b95d7cd7ebdc2a75b836f19dee3c1ae5fa0fce5b277338e648880d4f/68747470733a2f2f7777772e676e752e6f72672f67726170686963732f67706c76332d3132377835312e706e67)](https://www.gnu.org/licenses/gpl-3.0.en.html) @@ -25,34 +26,51 @@ This project & work under this repository is licensed under [GNU General Public ## Download -- [iOS](https://apps.apple.com/us/app/bluecherry-mobile/id1555805139) -- [Android](https://github.com/bluecherrydvr/unity/releases/tag/vnext) -- [Windows](https://github.com/bluecherrydvr/unity/releases/) -- [Linux](https://snapcraft.io/bluecherry-client) +| Android | iOS | Windows | GNU/Linux | MacOS | +| ------- | --- | ------- | ----- | ----- | +| [arm64 `.apk`](https://github.com/bluecherrydvr/unity/releases/download/bleeding_edge/bluecherry-android-arm64-v8a-release.apk) | [App Store](https://apps.apple.com/us/app/bluecherry-mobile/id1555805139) | [Windows Setup](https://github.com/bluecherrydvr/unity/releases/download/v3.0.0-beta8/bluecherry-dvr-setup.exe) | [AppImage](https://github.com/bluecherrydvr/unity/releases/download/bleeding_edge/Bluecherry-latest.AppImage) | ๐Ÿšง **SOON** ~~[App Store](https://github.com/bluecherrydvr/unity/issues/112)~~ | +| [armabi `.apk`](https://github.com/bluecherrydvr/unity/releases/download/bleeding_edge/bluecherry-android-armeabi-v7a-release.apk) | | ๐Ÿšง **SOON** ~~`winget install bluecherry`~~ | [Ubuntu/Debian `.deb`](https://github.com/bluecherrydvr/unity/releases/download/bleeding_edge/bluecherry-linux-x86_64.deb) | | +| [x86_64 `.apk`](https://github.com/bluecherrydvr/unity/releases/download/bleeding_edge/bluecherry-android-x86_64-release.apk) | | ๐Ÿšง **SOON** ~~Microsoft Store~~ | [Raw Executable `.tar.gz`](https://github.com/bluecherrydvr/unity/releases/download/bleeding_edge/bluecherry-linux-x86_64.tar.gz) | | +| ๐Ÿšง **SOON** ~~Play Store~~ | | | [Fedora/Red Hat Linux `.rpm`](https://github.com/bluecherrydvr/unity/releases/download/bleeding_edge/bluecherry-linux-x86_64.rpm) | | + +### Installation + +Most platforms will not require any extra steps to install the app. + +#### Linux + +You need mpv & libmpv-dev installed: +```bash +sudo apt install mpv libmpv-dev +``` + +To install the `.deb` file, run: +```bash +sudo dpkg -i bluecherry-linux-x86_64.deb +``` + ## Features -- Ability to add multiple [Bluecherry DVR servers](https://www.bluecherrydvr.com/downloads/). -- Interactive camera grid viewer, with support for multiple layouts: - - For larger screens, compact and multiple layout views are available. - - For smaller screens, see multiple cameras in 4x4, 2x1 or 1x1 view - - Re-orgderable drag-and-drop camera viewer - - Cycle through different layout views -- Pinch-to-zoom fullscreen camera viewer. -- Events viewer. -- Direct camera viewer. -- Consistent & configurable system-aware, light & dark app theme. -- Configurable in-app date & time format. -- System camera event notifications with screenshot thumbnails. -- Ability to snooze notifications directly from notification or within the app. -- Adaptive and responsive design for larger screens -- Directionality support for right-to-left languages -- Cross-platform - - [x] Android - - [x] iOS ([_App store link_](https://apps.apple.com/us/app/bluecherry-mobile/id1555805139)) - - [x] Windows - - [x] Linux ([_Snap store link_](https://snapcraft.io/bluecherry-client)) - - [ ] macOS +* ๐Ÿ–ฒ๏ธ Ability to add multiple [Bluecherry DVR servers](https://www.bluecherrydvr.com/downloads/). +- ๐ŸŽ›๏ธ Interactive camera grid viewer, with support for multiple layouts: +
$~~~~$ +๐Ÿ’ป For larger screens, compact and multiple layout views are available. +
$~~~~~$๐Ÿ“ฑ For smaller screens, see multiple cameras in 2x3, 2x2, 2x1 or 1x1 view +
$~~~~~$๐Ÿ‘† Re-orgderable drag-and-drop camera viewer +
$~~~~~$๐Ÿ›ž Cycle through different layout views automatically +* ๐Ÿ”Ž Pinch-to-zoom fullscreen camera viewer. +* ๐Ÿƒ Events List Viewer +* ๐Ÿšก Events Timeline Viewer +* ๐Ÿ“ธ Direct camera viewer. +* ๐ŸŽฎ Pan-Tilt-Zoom controls for supported cameras. +* ๐ŸŒ“ Consistent & configurable system-aware, light & dark app theme. +* โฒ๏ธ Configurable in-app date & time format. +* ๐Ÿ“ฐ System camera event notifications with screenshot thumbnails. +* โฐ Ability to snooze notifications directly from notification or within the app. +* ๐Ÿ“บ Adaptive and responsive design for larger screens +* ๐Ÿ•ธ๏ธ Directionality support for right-to-left languages +* ๐Ÿ“ฑ Cross-platform ## Translate @@ -84,6 +102,9 @@ lib โ”‚ โ”œโ”€โ”€โ”€api [API wrapper around Bluecherry DVR server.] โ”‚ โ””โ”€โ”€api.dart +โ”‚ โ””โ”€โ”€ptz.dart [API related to Pan-Tilt-Zoom controls] +โ”‚ +โ”œโ”€โ”€โ”€l10n [Tranlations] โ”‚ โ”œโ”€โ”€โ”€models [model classes to serve & bind type-safe data together in various entities.] โ”‚ โ”œโ”€โ”€โ”€device.dart @@ -106,6 +127,7 @@ lib โ”‚ โ”œโ”€โ”€โ”€methods.dart โ”‚ โ”œโ”€โ”€โ”€storage.dart โ”‚ โ”œโ”€โ”€โ”€theme.dart +โ”‚ โ”œโ”€โ”€โ”€video_player.dart โ”‚ โ””โ”€โ”€โ”€window.dart โ”‚ โ”œโ”€โ”€โ”€widgets [UI/UX & widgets used to display content.] diff --git a/lib/api/ptz.dart b/lib/api/ptz.dart index b3c8b6ff..43dbcb4f 100644 --- a/lib/api/ptz.dart +++ b/lib/api/ptz.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'package:flutter/widgets.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 98f2b765..412bd4b8 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'package:bluecherry_client/utils/constants.dart'; import 'package:flutter/foundation.dart'; import 'package:hive_flutter/hive_flutter.dart'; diff --git a/lib/utils/video_player.dart b/lib/utils/video_player.dart index a45b9155..488c625e 100644 --- a/lib/utils/video_player.dart +++ b/lib/utils/video_player.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'package:bluecherry_client/models/device.dart'; import 'package:flutter/foundation.dart'; import 'package:unity_video_player/unity_video_player.dart'; diff --git a/lib/widgets/collapsable_sidebar.dart b/lib/widgets/collapsable_sidebar.dart index f56a93e5..5d3dba9e 100644 --- a/lib/widgets/collapsable_sidebar.dart +++ b/lib/widgets/collapsable_sidebar.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; diff --git a/lib/widgets/desktop_buttons.dart b/lib/widgets/desktop_buttons.dart index 7530fc50..eca473f1 100644 --- a/lib/widgets/desktop_buttons.dart +++ b/lib/widgets/desktop_buttons.dart @@ -265,10 +265,11 @@ class _WindowButtonsState extends State with WindowListener { // We ensure all the players are disposed in order to not keep the app alive // in background, wasting unecessary resources! if (isPreventClose) { - await Future.microtask(() { + windowManager.hide(); + await Future.microtask(() async { for (final player in UnityVideoPlayerInterface.players.toList()) { debugPrint('Disposing player ${player.hashCode}'); - player.dispose(); + await player.dispose(); } }); windowManager.destroy(); diff --git a/lib/widgets/events/events_screen.dart b/lib/widgets/events/events_screen.dart index b071ad28..086ddb1b 100644 --- a/lib/widgets/events/events_screen.dart +++ b/lib/widgets/events/events_screen.dart @@ -1,5 +1,3 @@ -// ignore_for_file: overridden_fields - /* * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). * diff --git a/lib/widgets/events_timeline/desktop/timeline.dart b/lib/widgets/events_timeline/desktop/timeline.dart index 4cef88bc..c5694d22 100644 --- a/lib/widgets/events_timeline/desktop/timeline.dart +++ b/lib/widgets/events_timeline/desktop/timeline.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'dart:async'; import 'dart:math'; diff --git a/lib/widgets/events_timeline/desktop/timeline_card.dart b/lib/widgets/events_timeline/desktop/timeline_card.dart index d9e625a0..f3f7b9d2 100644 --- a/lib/widgets/events_timeline/desktop/timeline_card.dart +++ b/lib/widgets/events_timeline/desktop/timeline_card.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'package:bluecherry_client/utils/extensions.dart'; import 'package:bluecherry_client/widgets/events_timeline/desktop/timeline.dart'; import 'package:bluecherry_client/widgets/hover_button.dart'; diff --git a/lib/widgets/events_timeline/desktop/timeline_sidebar.dart b/lib/widgets/events_timeline/desktop/timeline_sidebar.dart index fcad79ba..3f8baeb3 100644 --- a/lib/widgets/events_timeline/desktop/timeline_sidebar.dart +++ b/lib/widgets/events_timeline/desktop/timeline_sidebar.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'package:auto_size_text/auto_size_text.dart'; import 'package:bluecherry_client/providers/settings_provider.dart'; import 'package:bluecherry_client/utils/extensions.dart'; diff --git a/lib/widgets/events_timeline/events_playback.dart b/lib/widgets/events_timeline/events_playback.dart index d8a3aad7..d2addd49 100644 --- a/lib/widgets/events_timeline/events_playback.dart +++ b/lib/widgets/events_timeline/events_playback.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'package:bluecherry_client/api/api.dart'; import 'package:bluecherry_client/models/device.dart'; import 'package:bluecherry_client/models/event.dart'; diff --git a/lib/widgets/events_timeline/mobile/timeline_device_view.dart b/lib/widgets/events_timeline/mobile/timeline_device_view.dart index 680b575e..1a157018 100644 --- a/lib/widgets/events_timeline/mobile/timeline_device_view.dart +++ b/lib/widgets/events_timeline/mobile/timeline_device_view.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'dart:async'; import 'package:bluecherry_client/models/device.dart'; diff --git a/lib/widgets/multi_window/single_camera_window.dart b/lib/widgets/multi_window/single_camera_window.dart index 05b0d08e..96f9e6fa 100644 --- a/lib/widgets/multi_window/single_camera_window.dart +++ b/lib/widgets/multi_window/single_camera_window.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'dart:async'; import 'package:bluecherry_client/models/device.dart'; diff --git a/lib/widgets/multi_window/single_layout_window.dart b/lib/widgets/multi_window/single_layout_window.dart index 139f5cd5..407a6085 100644 --- a/lib/widgets/multi_window/single_layout_window.dart +++ b/lib/widgets/multi_window/single_layout_window.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'package:bluecherry_client/models/layout.dart'; import 'package:bluecherry_client/widgets/desktop_buttons.dart'; import 'package:bluecherry_client/widgets/device_grid/device_grid.dart'; diff --git a/lib/widgets/multi_window/window.dart b/lib/widgets/multi_window/window.dart index 257e473f..58c51cee 100644 --- a/lib/widgets/multi_window/window.dart +++ b/lib/widgets/multi_window/window.dart @@ -1,3 +1,22 @@ +/* + * This file is a part of Bluecherry Client (https://github.com/bluecherrydvr/unity). + * + * Copyright 2022 Bluecherry, LLC + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + import 'package:bluecherry_client/main.dart'; import 'package:bluecherry_client/providers/desktop_view_provider.dart'; import 'package:bluecherry_client/providers/home_provider.dart'; diff --git a/linux/debian/DEBIAN/control b/linux/debian/DEBIAN/control new file mode 100644 index 00000000..6b658e22 --- /dev/null +++ b/linux/debian/DEBIAN/control @@ -0,0 +1,9 @@ +Package: bluecherrydvr +Version: 3.0.0-beta8 +Section: base +Priority: optional +Homepage: https://www.bluecherrydvr.com/ +Architecture: amd64 +Depends: mpv, libmpv-dev +Maintainer: Bluecherry DVR +Description: Bluecherry client written in Flutter. diff --git a/linux/debian/usr/share/applications/bluecherry.desktop b/linux/debian/usr/share/applications/bluecherry.desktop new file mode 100644 index 00000000..241b8105 --- /dev/null +++ b/linux/debian/usr/share/applications/bluecherry.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Bluecherry +Comment=Bluecherry client written in Flutter. +Icon=bluecherry +Exec=bluecherry_client %f +StartupWMClass=bluecherry_client +Terminal=false +Categories=Player; +GenericName=Bluecherry +Keywords=surveillance; diff --git a/linux/debian/usr/share/icons/hicolor/128x128/apps/bluecherry.png b/linux/debian/usr/share/icons/hicolor/128x128/apps/bluecherry.png new file mode 100644 index 00000000..1832090e Binary files /dev/null and b/linux/debian/usr/share/icons/hicolor/128x128/apps/bluecherry.png differ diff --git a/linux/debian/usr/share/icons/hicolor/256x256/apps/bluecherry.png b/linux/debian/usr/share/icons/hicolor/256x256/apps/bluecherry.png new file mode 100644 index 00000000..8e88eb3c Binary files /dev/null and b/linux/debian/usr/share/icons/hicolor/256x256/apps/bluecherry.png differ diff --git a/linux/debian/usr/share/metainfo/bluecherry.appdata.xml b/linux/debian/usr/share/metainfo/bluecherry.appdata.xml new file mode 100644 index 00000000..a7f14a90 --- /dev/null +++ b/linux/debian/usr/share/metainfo/bluecherry.appdata.xml @@ -0,0 +1,42 @@ + + + bluecherrydvr + Bluecherry + + CC0-1.0 + + LicenseRef-proprietary=https://github.com/blueckerrydvr/unity/blob/master/LICENSE + + pointing + keyboard + touch + + Bluecherry DVR + + bluecherrydvr.desktop + + + + + support@bluecherrydvr.com + \ No newline at end of file diff --git a/linux/rpm/bluecherry.spec b/linux/rpm/bluecherry.spec new file mode 100644 index 00000000..9a2c99ba --- /dev/null +++ b/linux/rpm/bluecherry.spec @@ -0,0 +1,29 @@ +Name: bluecherrydvr +Version: 3.0.0_beta8 +Release: 1 +Summary: Bluecherry client written in Flutter. +License: EULA +Requires: mpv, mpv-libs-devel +AutoReqProv: no + +%define __os_install_post %{nil} + +%description +Bluecherry client written in Flutter. + +%prep +# no source + +%build +# no source + +%install +export DONT_STRIP=1 +mkdir -p %{buildroot} +cp -rf linux/debian/usr/ %{buildroot} + +%files +FILES_HERE + +%changelog +# no changelog \ No newline at end of file diff --git a/packages/unity_video_player/unity_video_player_media_kit/lib/unity_video_player_media_kit.dart b/packages/unity_video_player/unity_video_player_media_kit/lib/unity_video_player_media_kit.dart index 4268f1cb..2a63a0b6 100644 --- a/packages/unity_video_player/unity_video_player_media_kit/lib/unity_video_player_media_kit.dart +++ b/packages/unity_video_player/unity_video_player_media_kit/lib/unity_video_player_media_kit.dart @@ -269,9 +269,9 @@ class UnityVideoPlayerMediaKit extends UnityVideoPlayer { } @override - void dispose() async { - errorStream.cancel(); - mkPlayer.dispose(); + Future dispose() async { + await errorStream.cancel(); + await mkPlayer.dispose(); UnityVideoPlayerInterface.unregisterPlayer(this); } } 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 7a3e57a7..49c4f7b5 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 @@ -312,5 +312,5 @@ abstract class UnityVideoPlayer { Future release(); Future reset(); - void dispose(); + Future dispose(); }