summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2018-08-23 09:51:11 -0400
committerPliable Pixels <pliablepixels@gmail.com>2018-08-23 09:51:11 -0400
commit45b515d583994342fa209296a69512b698958000 (patch)
treeb0345cc60d6062e82887b81c8d3432c580d12bb7
parentd6c4c4389df146740efabc18fdb62501ada61bbc (diff)
#682 - various updates to handle multi-window pause state
-rw-r--r--config.xml1
-rw-r--r--package.json4
-rw-r--r--www/js/MonitorModalCtrl.js24
-rw-r--r--www/js/MontageCtrl.js13
-rwxr-xr-xwww/js/app.js60
5 files changed, 55 insertions, 47 deletions
diff --git a/config.xml b/config.xml
index c497bdf2..d47fdea4 100644
--- a/config.xml
+++ b/config.xml
@@ -146,6 +146,7 @@
<plugin name="cordova-plugin-statusbar" spec="^2.4.2" />
<plugin name="cordova-library-helper-pp-fork" spec="^1.0.1" />
<plugin name="cordova-plugin-certificates" spec="^0.6.4" />
+ <plugin name="cordova-plugin-multi-window" spec="0.0.3" />
<engine name="android" spec="^6.3.0" />
<engine name="ios" spec="^4.5.5" />
</widget>
diff --git a/package.json b/package.json
index 8186d54e..457752e0 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,8 @@
"cordova-plugin-email": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-certificates": {},
- "cordova-library-helper-pp-fork": {}
+ "cordova-library-helper-pp-fork": {},
+ "cordova-plugin-multi-window": {}
}
},
"dependencies": {
@@ -71,6 +72,7 @@
"cordova-plugin-inappbrowser": "^1.7.1",
"cordova-plugin-insomnia": "^4.3.0",
"cordova-plugin-media-pp-fork": "^1.0.2-dev",
+ "cordova-plugin-multi-window": "0.0.3",
"cordova-plugin-network-information": "^2.0.1",
"cordova-plugin-photo-library": "^1.2.2",
"cordova-plugin-pin-dialog": "^0.1.3",
diff --git a/www/js/MonitorModalCtrl.js b/www/js/MonitorModalCtrl.js
index 82e43c01..3d765aed 100644
--- a/www/js/MonitorModalCtrl.js
+++ b/www/js/MonitorModalCtrl.js
@@ -1315,6 +1315,14 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.$on('modal.removed', function () {
+ if ($rootScope.platformOS == 'android') {
+ NVRDataModel.debug ("Deregistering handlers for multi-window");
+
+ window.MultiWindowPlugin.deregisterOnStop("monitormodal-pause");
+ window.MultiWindowPlugin.deregisterOnStart("monitormodal-resume");
+
+ }
+
if ($rootScope.platformOS == 'desktop') {
NVRDataModel.debug ("Removing keyboard handler");
window.removeEventListener('keydown', keyboardHandler, true);
@@ -1741,16 +1749,18 @@ angular.module('zmApp.controllers').controller('MonitorModalCtrl', ['$scope', '$
$scope.monStatus = "";
$scope.isToggleListMenu = true;
//console.log (">>>>>>>>>>>>>>>>>>>STOOOP");
- document.addEventListener("pause", onPause, false);
- document.addEventListener("resume", onResume, false);
-
- /*document.addEventListener("mouseup", moveStop, false);
- document.addEventListener("touchend", moveStop, false);
- document.addEventL`istener("mousemove", moveContinue, false);
- document.addEventListener("touchmove", moveContinue, false);*/
+ if ($rootScope.platformOS != 'android') {
+ document.addEventListener("pause", onPause, false);
+ document.addEventListener("resume", onResume, false);
+ }
+ else {
+ NVRDataModel.debug ("MonitorModal: Android detected, using cordova-multiwindow plugin for onStop/onStart instead");
+ window.MultiWindowPlugin.registerOnStop("monitormodal-pause", onPause);
+ window.MultiWindowPlugin.registerOnStart("monitormodal-resume", onResume);
+ }
$scope.showZones = false;
diff --git a/www/js/MontageCtrl.js b/www/js/MontageCtrl.js
index d9eb1409..e3e0eaa9 100644
--- a/www/js/MontageCtrl.js
+++ b/www/js/MontageCtrl.js
@@ -1406,6 +1406,11 @@ angular.module('zmApp.controllers')
$scope.$on('$ionicView.leave', function () {
// console.log("**VIEW ** Montage Ctrl Left, force removing modal");
+ if ($rootScope.platformOS == 'android') {
+ NVRDataModel.debug ("Deregistering handlers for multi-window");
+ window.MultiWindowPlugin.deregisterOnStop("montage-pause");
+
+ }
if ($scope.modal) $scope.modal.remove();
});
@@ -1968,7 +1973,13 @@ angular.module('zmApp.controllers')
//console.log("**VIEW ** Montage Ctrl AFTER ENTER");
window.addEventListener("resize", orientationChanged, false);
- document.addEventListener("pause", onPause, false);
+ if ($rootScope.platformOS != 'android') {
+ document.addEventListener("pause", onPause, false);
+ }
+ else {
+ NVRDataModel.debug ("MontageCtrl: Android detected, using cordova-multiwindow plugin for onStop/onStart instead");
+ window.MultiWindowPlugin.registerOnStop("montage-pause", onPause);
+ }
// document.addEventListener("resume", onResume, false);
});
diff --git a/www/js/app.js b/www/js/app.js
index 0d776437..9d88362d 100755
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -2044,11 +2044,26 @@ angular.module('zmApp', [
function setupPauseAndResume() {
NVRDataModel.log("Setting up pause and resume handler AFTER language is loaded...");
- //---------------------------------------------------------------------------
- // resume handler
- //----------------------------------------------------------------------------
- document.addEventListener("resume", function () {
+
+ if ($rootScope.platformOS != 'android') {
+ document.addEventListener("resume", function () {
+ resumeHandler();
+ }, false);
+
+ document.addEventListener("pause", function () {
+ pauseHandler();
+ }, false);
+ }
+ else {
+ NVRDataModel.debug ("Android detected, using cordova-multiwindow plugin for onStop/onStart instead");
+ window.MultiWindowPlugin.registerOnStop("app-pause", pauseHandler);
+ window.MultiWindowPlugin.registerOnStart("app-resume", resumeHandler);
+
+
+ }
+
+ function resumeHandler() {
NVRDataModel.setBackground(false);
NVRDataModel.setJustResumed(true);
$ionicPlatform.ready(function () {
@@ -2097,12 +2112,9 @@ angular.module('zmApp', [
});
- }, false);
+ }
- //---------------------------------------------------------------------------
- // background handler
- //----------------------------------------------------------------------------
- document.addEventListener("pause", function (mtask) {
+ function pauseHandler() {
NVRDataModel.setBackground(true);
NVRDataModel.setJustResumed(false);
// NVRDataModel.setJustResumed(true); // used for window stop
@@ -2114,13 +2126,6 @@ angular.module('zmApp', [
$interval.cancel($rootScope.intervalHandle);
zmAutoLogin.stop();
-
-
- // NVRDataModel.log("ROOT APP: Stopping network ");
- //NVRDataModel.stopNetwork("called from app.js");
-
- // dont call stopNetwork - we need to stop here
-
var ld = NVRDataModel.getLogin();
@@ -2139,30 +2144,9 @@ angular.module('zmApp', [
}, 5000);
}
-
-
- /* if (ld.exitOnSleep && $rootScope.platformOS == "android") {
- NVRDataModel.log("user exited app");
- navigator.app.exitApp();
-
- // ionic.Platform.exitApp();
- }*/
-
- /* if (NVRDataModel.getCurrentServerMultiPortSupported() && $rootScope.platformOS == "android" && !NVRDataModel.isMultiPortDisabled()) {
- NVRDataModel.log ("Multiport is active, killing app to make sure no streams continue in background...");
- navigator.app.exitApp();
- } else {
- NVRDataModel.debug ("Not exiting app because:");
- NVRDataModel.debug ("getCurrentServerMultiPortSupported:"+NVRDataModel.getCurrentServerMultiPortSupported());
- NVRDataModel.debug ("platform:"+$rootScope.platformOS);
- NVRDataModel.debug ("isMultiPortDisabled:"+NVRDataModel.isMultiPortDisabled());
-
- }*/
-
if ($rootScope.zmPopup)
$rootScope.zmPopup.close();
-
- }, false);
+ }
}