You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bo...@apache.org on 2012/06/18 20:32:44 UTC
android commit: Starting the Buttons Branch
Updated Branches:
refs/heads/buttons [created] 40b9810a6
Starting the Buttons Branch
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/40b9810a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/40b9810a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/40b9810a
Branch: refs/heads/buttons
Commit: 40b9810a63c9fc456a8e44331d7b0eae9222227f
Parents: 451afab
Author: Joe Bowser <bo...@apache.org>
Authored: Mon Jun 18 11:31:53 2012 -0700
Committer: Joe Bowser <bo...@apache.org>
Committed: Mon Jun 18 11:31:53 2012 -0700
----------------------------------------------------------------------
framework/src/org/apache/cordova/App.java | 4 +-
.../src/org/apache/cordova/CordovaWebView.java | 94 +++++++++++++++
framework/src/org/apache/cordova/DroidGap.java | 82 +-------------
3 files changed, 97 insertions(+), 83 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/40b9810a/framework/src/org/apache/cordova/App.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/App.java b/framework/src/org/apache/cordova/App.java
index ed9ec77..629d422 100755
--- a/framework/src/org/apache/cordova/App.java
+++ b/framework/src/org/apache/cordova/App.java
@@ -188,7 +188,7 @@ public class App extends Plugin {
*/
public void overrideBackbutton(boolean override) {
LOG.i("App", "WARNING: Back Button Default Behaviour will be overridden. The backbutton event will be fired!");
- this.ctx.bindBackButton(override);
+ webView.bindButton(override);
}
/**
@@ -200,7 +200,7 @@ public class App extends Plugin {
*/
public void overrideButton(String button, boolean override) {
LOG.i("DroidGap", "WARNING: Volume Button Default Behaviour will be overridden. The volume event will be fired!");
- ((DroidGap)this.ctx).bindButton(button, override);
+ webView.bindButton(button, override);
}
/**
* Return whether the Android back button is overridden by the user.
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/40b9810a/framework/src/org/apache/cordova/CordovaWebView.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaWebView.java b/framework/src/org/apache/cordova/CordovaWebView.java
index 308d222..9f80112 100755
--- a/framework/src/org/apache/cordova/CordovaWebView.java
+++ b/framework/src/org/apache/cordova/CordovaWebView.java
@@ -39,6 +39,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
+import android.view.KeyEvent;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
@@ -70,6 +71,12 @@ public class CordovaWebView extends WebView {
// Flag to track that a loadUrl timeout occurred
int loadUrlTimeout = 0;
+ private boolean bound;
+
+ private boolean volumedownBound;
+
+ private boolean volumeupBound;
+
/**
* Constructor.
*
@@ -660,4 +667,91 @@ public class CordovaWebView extends WebView {
}
return p.toString();
}
+
+ /*
+ * onKeyDown
+ */
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event)
+ {
+ // If volumedown key
+ if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
+ if (this.volumedownBound==true) {
+ // only override default behaviour is event bound
+ LOG.d(TAG, "Down Key Hit");
+ this.loadUrl("javascript:cordova.fireDocumentEvent('volumedownbutton');");
+ return true;
+ }
+ }
+
+ // If volumeup key
+ else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
+ if (this.volumeupBound==true) {
+ // only override default behaviour is event bound
+ LOG.d(TAG, "Up Key Hit");
+ this.loadUrl("javascript:cordova.fireDocumentEvent('volumeupbutton');");
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean onKeyUp(int keyCode, KeyEvent event)
+ {
+
+ Log.d(TAG, "KeyDown has been triggered on the view");
+
+ // If back key
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ // If back key is bound, then send event to JavaScript
+ if (this.bound) {
+ this.loadUrl("javascript:cordova.fireDocumentEvent('backbutton');");
+ return true;
+ } else {
+ // If not bound
+ // Go to previous page in webview if it is possible to go back
+ if (this.backHistory()) {
+ return true;
+ }
+ // If not, then invoke default behaviour
+ else {
+ //this.activityState = ACTIVITY_EXITING;
+ return false;
+ }
+ }
+ }
+
+ // If menu key
+ else if (keyCode == KeyEvent.KEYCODE_MENU) {
+ this.loadUrl("javascript:cordova.fireDocumentEvent('menubutton');");
+ return super.onKeyUp(keyCode, event);
+ }
+
+ // If search key
+ else if (keyCode == KeyEvent.KEYCODE_SEARCH) {
+ this.loadUrl("javascript:cordova.fireDocumentEvent('searchbutton');");
+ return true;
+ }
+
+ Log.d(TAG, "KeyUp has been triggered on the view");
+ return false;
+ }
+
+ public void bindButton(boolean override)
+ {
+ this.bound = override;
+ }
+
+ public void bindButton(String button, boolean override) {
+ // TODO Auto-generated method stub
+ if (button.compareTo("volumeup")==0) {
+ this.volumeupBound = override;
+ }
+ else if (button.compareTo("volumedown")==0) {
+ this.volumedownBound = override;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/40b9810a/framework/src/org/apache/cordova/DroidGap.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java
index d4c142d..f0f31f1 100755
--- a/framework/src/org/apache/cordova/DroidGap.java
+++ b/framework/src/org/apache/cordova/DroidGap.java
@@ -784,87 +784,7 @@ public class DroidGap extends Activity implements CordovaInterface {
super.finish();
}
- /**
- * Called when a key is released. (Key UP)
- *
- * @param keyCode
- * @param event
- */
- @Override
- public boolean onKeyUp(int keyCode, KeyEvent event) {
- if (this.appView == null) {
- return super.onKeyUp(keyCode, event);
- }
-
- // If back key
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- // If back key is bound, then send event to JavaScript
- if (this.bound) {
- this.appView.loadUrl("javascript:cordova.fireDocumentEvent('backbutton');");
- return true;
- } else {
- // If not bound
- // Go to previous page in webview if it is possible to go back
- if (this.backHistory()) {
- return true;
- }
- // If not, then invoke behavior of super class
- else {
- this.activityState = ACTIVITY_EXITING;
- return super.onKeyUp(keyCode, event);
- }
- }
- }
-
- // If menu key
- else if (keyCode == KeyEvent.KEYCODE_MENU) {
- this.appView.loadUrl("javascript:cordova.fireDocumentEvent('menubutton');");
- return super.onKeyUp(keyCode, event);
- }
-
- // If search key
- else if (keyCode == KeyEvent.KEYCODE_SEARCH) {
- this.appView.loadUrl("javascript:cordova.fireDocumentEvent('searchbutton');");
- return true;
- }
-
- return false;
- }
-
- /**
- * Called when a key is pressed. (Key DOWN)
- *
- * @param keyCode
- * @param event
- */
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (this.appView == null) {
- return super.onKeyDown(keyCode, event);
- }
-
- // If volumedown key
- if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
- if (this.volumedownBound==true) {
- // only override default behaviour is event bound
- LOG.d(TAG, "Down Key Hit");
- this.appView.loadUrl("javascript:cordova.fireDocumentEvent('volumedownbutton');");
- return true;
- }
- }
-
- // If volumeup key
- else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
- if (this.volumeupBound==true) {
- // only override default behaviour is event bound
- LOG.d(TAG, "Up Key Hit");
- this.appView.loadUrl("javascript:cordova.fireDocumentEvent('volumeupbutton');");
- return true;
- }
- }
- return super.onKeyDown(keyCode, event);
- }
-
+
/**
* Launch an activity for which you would like a result when it finished. When this activity exits,
* your onActivityResult() method will be called.