From 79935d31efd350967a54f10fbacc231ed574973c Mon Sep 17 00:00:00 2001 From: Joe Bowser Date: Wed, 29 Feb 2012 09:34:46 -0800 Subject: [PATCH] Putting back the CordovaInterface work after talking with Simon --- .../com/phonegap/api/PhonegapActivity.java | 2 +- .../org/apache/cordova/CameraLauncher.java | 10 +- framework/src/org/apache/cordova/Capture.java | 4 +- .../org/apache/cordova/ContactManager.java | 102 +-- .../src/org/apache/cordova/DroidGap.java | 12 +- .../src/org/apache/cordova/Notification.java | 612 +++++++++--------- .../apache/cordova/api/CordovaInterface.java | 53 +- 7 files changed, 428 insertions(+), 367 deletions(-) diff --git a/framework/src/com/phonegap/api/PhonegapActivity.java b/framework/src/com/phonegap/api/PhonegapActivity.java index 200ea1c2..c1b7c46e 100755 --- a/framework/src/com/phonegap/api/PhonegapActivity.java +++ b/framework/src/com/phonegap/api/PhonegapActivity.java @@ -24,5 +24,5 @@ import android.app.Activity; * The Cordova activity abstract class that is extended by DroidGap. * It is used to isolate plugin development, and remove dependency on entire Cordova library. */ -public abstract class PhonegapActivity extends org.apache.cordova.api.CordovaInterface { +public abstract class PhonegapActivity extends Activity implements org.apache.cordova.api.CordovaInterface { } diff --git a/framework/src/org/apache/cordova/CameraLauncher.java b/framework/src/org/apache/cordova/CameraLauncher.java index c7eac886..4960f910 100755 --- a/framework/src/org/apache/cordova/CameraLauncher.java +++ b/framework/src/org/apache/cordova/CameraLauncher.java @@ -175,9 +175,9 @@ public class CameraLauncher extends Plugin { private File createCaptureFile(int encodingType) { File photo = null; if (encodingType == JPEG) { - photo = new File(DirectoryManager.getTempDirectoryPath(ctx), "Pic.jpg"); + photo = new File(DirectoryManager.getTempDirectoryPath(ctx.getContext()), "Pic.jpg"); } else if (encodingType == PNG) { - photo = new File(DirectoryManager.getTempDirectoryPath(ctx), "Pic.png"); + photo = new File(DirectoryManager.getTempDirectoryPath(ctx.getContext()), "Pic.png"); } else { throw new IllegalArgumentException("Invalid Encoding Type: " + encodingType); } @@ -281,7 +281,7 @@ public class CameraLauncher extends Plugin { // Create an ExifHelper to save the exif data that is lost during compression ExifHelper exif = new ExifHelper(); if (this.encodingType == JPEG) { - exif.createInFile(DirectoryManager.getTempDirectoryPath(ctx) + "/Pic.jpg"); + exif.createInFile(DirectoryManager.getTempDirectoryPath(ctx.getContext()) + "/Pic.jpg"); exif.readExifData(); } @@ -394,7 +394,7 @@ public class CameraLauncher extends Plugin { Bitmap bitmap = android.graphics.BitmapFactory.decodeStream(resolver.openInputStream(uri)); bitmap = scaleBitmap(bitmap); - String fileName = DirectoryManager.getTempDirectoryPath(ctx) + "/resize.jpg"; + String fileName = DirectoryManager.getTempDirectoryPath(ctx.getContext()) + "/resize.jpg"; OutputStream os = new FileOutputStream(fileName); bitmap.compress(Bitmap.CompressFormat.JPEG, this.mQuality, os); os.close(); @@ -497,4 +497,4 @@ public class CameraLauncher extends Plugin { public void failPicture(String err) { this.error(new PluginResult(PluginResult.Status.ERROR, err), this.callbackId); } -} +} \ No newline at end of file diff --git a/framework/src/org/apache/cordova/Capture.java b/framework/src/org/apache/cordova/Capture.java index 34423d0b..ce7e9de0 100644 --- a/framework/src/org/apache/cordova/Capture.java +++ b/framework/src/org/apache/cordova/Capture.java @@ -196,7 +196,7 @@ public class Capture extends Plugin { Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); // Specify file so that large image is captured and returned - File photo = new File(DirectoryManager.getTempDirectoryPath(ctx), "Capture.jpg"); + File photo = new File(DirectoryManager.getTempDirectoryPath(ctx.getContext()), "Capture.jpg"); intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); this.imageUri = Uri.fromFile(photo); @@ -249,7 +249,7 @@ public class Capture extends Plugin { try { // Create an ExifHelper to save the exif data that is lost during compression ExifHelper exif = new ExifHelper(); - exif.createInFile(DirectoryManager.getTempDirectoryPath(ctx) + "/Capture.jpg"); + exif.createInFile(DirectoryManager.getTempDirectoryPath(ctx.getContext()) + "/Capture.jpg"); exif.readExifData(); // Read in bitmap of captured image diff --git a/framework/src/org/apache/cordova/ContactManager.java b/framework/src/org/apache/cordova/ContactManager.java index 1231ed05..2b124137 100755 --- a/framework/src/org/apache/cordova/ContactManager.java +++ b/framework/src/org/apache/cordova/ContactManager.java @@ -26,34 +26,34 @@ import org.json.JSONObject; import android.util.Log; public class ContactManager extends Plugin { - + private ContactAccessor contactAccessor; - private static final String LOG_TAG = "Contact Query"; + private static final String LOG_TAG = "Contact Query"; - public static final int UNKNOWN_ERROR = 0; - public static final int INVALID_ARGUMENT_ERROR = 1; - public static final int TIMEOUT_ERROR = 2; - public static final int PENDING_OPERATION_ERROR = 3; - public static final int IO_ERROR = 4; - public static final int NOT_SUPPORTED_ERROR = 5; - public static final int PERMISSION_DENIED_ERROR = 20; + public static final int UNKNOWN_ERROR = 0; + public static final int INVALID_ARGUMENT_ERROR = 1; + public static final int TIMEOUT_ERROR = 2; + public static final int PENDING_OPERATION_ERROR = 3; + public static final int IO_ERROR = 4; + public static final int NOT_SUPPORTED_ERROR = 5; + public static final int PERMISSION_DENIED_ERROR = 20; - - /** - * Constructor. - */ - public ContactManager() { - } - - /** - * Executes the request and returns PluginResult. - * - * @param action The action to execute. - * @param args JSONArry of arguments for the plugin. - * @param callbackId The callback id used when calling back into JavaScript. - * @return A PluginResult object with a status and message. - */ - public PluginResult execute(String action, JSONArray args, String callbackId) { + + /** + * Constructor. + */ + public ContactManager() { + } + + /** + * Executes the request and returns PluginResult. + * + * @param action The action to execute. + * @param args JSONArry of arguments for the plugin. + * @param callbackId The callback id used when calling back into JavaScript. + * @return A PluginResult object with a status and message. + */ + public PluginResult execute(String action, JSONArray args, String callbackId) { PluginResult.Status status = PluginResult.Status.OK; String result = ""; @@ -79,35 +79,35 @@ public class ContactManager extends Plugin { * older phones. */ if (this.contactAccessor == null) { - this.contactAccessor = new ContactAccessorSdk5(this.webView, this.ctx); + this.contactAccessor = new ContactAccessorSdk5(this.webView, this.ctx.getContext()); } - try { - if (action.equals("search")) { - JSONArray res = contactAccessor.search(args.getJSONArray(0), args.optJSONObject(1)); - return new PluginResult(status, res); - } - else if (action.equals("save")) { - String id = contactAccessor.save(args.getJSONObject(0)); - if (id != null) { - JSONObject res = contactAccessor.getContactById(id); - if (res != null) { - return new PluginResult(status, res); - } - } - } - else if (action.equals("remove")) { - if (contactAccessor.remove(args.getString(0))) { - return new PluginResult(status, result); - } - } - // If we get to this point an error has occurred + try { + if (action.equals("search")) { + JSONArray res = contactAccessor.search(args.getJSONArray(0), args.optJSONObject(1)); + return new PluginResult(status, res); + } + else if (action.equals("save")) { + String id = contactAccessor.save(args.getJSONObject(0)); + if (id != null) { + JSONObject res = contactAccessor.getContactById(id); + if (res != null) { + return new PluginResult(status, res); + } + } + } + else if (action.equals("remove")) { + if (contactAccessor.remove(args.getString(0))) { + return new PluginResult(status, result); + } + } + // If we get to this point an error has occurred JSONObject r = new JSONObject(); r.put("code", UNKNOWN_ERROR); return new PluginResult(PluginResult.Status.ERROR, r); - } catch (JSONException e) { - Log.e(LOG_TAG, e.getMessage(), e); - return new PluginResult(PluginResult.Status.JSON_EXCEPTION); - } - } + } catch (JSONException e) { + Log.e(LOG_TAG, e.getMessage(), e); + return new PluginResult(PluginResult.Status.JSON_EXCEPTION); + } + } } diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java index e221ed72..283e6551 100755 --- a/framework/src/org/apache/cordova/DroidGap.java +++ b/framework/src/org/apache/cordova/DroidGap.java @@ -145,7 +145,7 @@ import android.widget.LinearLayout; * ... * */ -public class DroidGap extends CordovaInterface { +public class DroidGap extends Activity implements CordovaInterface { public static String TAG = "DroidGap"; // The webview for our app @@ -1404,4 +1404,14 @@ public class DroidGap extends CordovaInterface { return this; } + public void bindBackButton(boolean override) { + // TODO Auto-generated method stub + this.bound = override; + } + + public boolean isBackButtonBound() { + // TODO Auto-generated method stub + return this.bound; + } + } diff --git a/framework/src/org/apache/cordova/Notification.java b/framework/src/org/apache/cordova/Notification.java index 535142b9..9fb423a7 100755 --- a/framework/src/org/apache/cordova/Notification.java +++ b/framework/src/org/apache/cordova/Notification.java @@ -36,331 +36,331 @@ import android.os.Vibrator; * This class provides access to notifications on the device. */ public class Notification extends Plugin { - - public int confirmResult = -1; - public ProgressDialog spinnerDialog = null; - public ProgressDialog progressDialog = null; - - /** - * Constructor. - */ - public Notification() { - } + + public int confirmResult = -1; + public ProgressDialog spinnerDialog = null; + public ProgressDialog progressDialog = null; + + /** + * Constructor. + */ + public Notification() { + } - /** - * Executes the request and returns PluginResult. - * - * @param action The action to execute. - * @param args JSONArry of arguments for the plugin. - * @param callbackId The callback id used when calling back into JavaScript. - * @return A PluginResult object with a status and message. - */ - public PluginResult execute(String action, JSONArray args, String callbackId) { - PluginResult.Status status = PluginResult.Status.OK; - String result = ""; - - try { - if (action.equals("beep")) { - this.beep(args.getLong(0)); - } - else if (action.equals("vibrate")) { - this.vibrate(args.getLong(0)); - } - else if (action.equals("alert")) { - this.alert(args.getString(0),args.getString(1),args.getString(2), callbackId); - PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT); - r.setKeepCallback(true); - return r; - } - else if (action.equals("confirm")) { - this.confirm(args.getString(0),args.getString(1),args.getString(2), callbackId); - PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT); - r.setKeepCallback(true); - return r; - } - else if (action.equals("activityStart")) { - this.activityStart(args.getString(0),args.getString(1)); - } - else if (action.equals("activityStop")) { - this.activityStop(); - } - else if (action.equals("progressStart")) { - this.progressStart(args.getString(0),args.getString(1)); - } - else if (action.equals("progressValue")) { - this.progressValue(args.getInt(0)); - } - else if (action.equals("progressStop")) { - this.progressStop(); - } - return new PluginResult(status, result); - } catch (JSONException e) { - return new PluginResult(PluginResult.Status.JSON_EXCEPTION); - } - } + /** + * Executes the request and returns PluginResult. + * + * @param action The action to execute. + * @param args JSONArry of arguments for the plugin. + * @param callbackId The callback id used when calling back into JavaScript. + * @return A PluginResult object with a status and message. + */ + public PluginResult execute(String action, JSONArray args, String callbackId) { + PluginResult.Status status = PluginResult.Status.OK; + String result = ""; + + try { + if (action.equals("beep")) { + this.beep(args.getLong(0)); + } + else if (action.equals("vibrate")) { + this.vibrate(args.getLong(0)); + } + else if (action.equals("alert")) { + this.alert(args.getString(0),args.getString(1),args.getString(2), callbackId); + PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT); + r.setKeepCallback(true); + return r; + } + else if (action.equals("confirm")) { + this.confirm(args.getString(0),args.getString(1),args.getString(2), callbackId); + PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT); + r.setKeepCallback(true); + return r; + } + else if (action.equals("activityStart")) { + this.activityStart(args.getString(0),args.getString(1)); + } + else if (action.equals("activityStop")) { + this.activityStop(); + } + else if (action.equals("progressStart")) { + this.progressStart(args.getString(0),args.getString(1)); + } + else if (action.equals("progressValue")) { + this.progressValue(args.getInt(0)); + } + else if (action.equals("progressStop")) { + this.progressStop(); + } + return new PluginResult(status, result); + } catch (JSONException e) { + return new PluginResult(PluginResult.Status.JSON_EXCEPTION); + } + } - /** - * Identifies if action to be executed returns a value and should be run synchronously. - * - * @param action The action to execute - * @return T=returns value - */ - public boolean isSynch(String action) { - if (action.equals("alert")) { - return true; - } - else if (action.equals("confirm")) { - return true; - } - else if (action.equals("activityStart")) { - return true; - } - else if (action.equals("activityStop")) { - return true; - } - else if (action.equals("progressStart")) { - return true; - } - else if (action.equals("progressValue")) { - return true; - } - else if (action.equals("progressStop")) { - return true; - } - else { - return false; - } - } + /** + * Identifies if action to be executed returns a value and should be run synchronously. + * + * @param action The action to execute + * @return T=returns value + */ + public boolean isSynch(String action) { + if (action.equals("alert")) { + return true; + } + else if (action.equals("confirm")) { + return true; + } + else if (action.equals("activityStart")) { + return true; + } + else if (action.equals("activityStop")) { + return true; + } + else if (action.equals("progressStart")) { + return true; + } + else if (action.equals("progressValue")) { + return true; + } + else if (action.equals("progressStop")) { + return true; + } + else { + return false; + } + } //-------------------------------------------------------------------------- // LOCAL METHODS //-------------------------------------------------------------------------- - /** - * Beep plays the default notification ringtone. - * - * @param count Number of times to play notification - */ - public void beep(long count) { - Uri ringtone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); - Ringtone notification = RingtoneManager.getRingtone(this.ctx, ringtone); - - // If phone is not set to silent mode - if (notification != null) { - for (long i = 0; i < count; ++i) { - notification.play(); - long timeout = 5000; - while (notification.isPlaying() && (timeout > 0)) { - timeout = timeout - 100; - try { - Thread.sleep(100); - } catch (InterruptedException e) { - } - } - } - } - } - - /** - * Vibrates the device for the specified amount of time. - * - * @param time Time to vibrate in ms. - */ - public void vibrate(long time){ + /** + * Beep plays the default notification ringtone. + * + * @param count Number of times to play notification + */ + public void beep(long count) { + Uri ringtone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); + Ringtone notification = RingtoneManager.getRingtone(this.ctx.getContext(), ringtone); + + // If phone is not set to silent mode + if (notification != null) { + for (long i = 0; i < count; ++i) { + notification.play(); + long timeout = 5000; + while (notification.isPlaying() && (timeout > 0)) { + timeout = timeout - 100; + try { + Thread.sleep(100); + } catch (InterruptedException e) { + } + } + } + } + } + + /** + * Vibrates the device for the specified amount of time. + * + * @param time Time to vibrate in ms. + */ + public void vibrate(long time){ // Start the vibration, 0 defaults to half a second. - if (time == 0) { - time = 500; - } + if (time == 0) { + time = 500; + } Vibrator vibrator = (Vibrator) this.ctx.getSystemService(Context.VIBRATOR_SERVICE); vibrator.vibrate(time); - } - - /** - * Builds and shows a native Android alert with given Strings - * @param message The message the alert should display - * @param title The title of the alert - * @param buttonLabel The label of the button - * @param callbackId The callback id - */ - public synchronized void alert(final String message, final String title, final String buttonLabel, final String callbackId) { + } + + /** + * Builds and shows a native Android alert with given Strings + * @param message The message the alert should display + * @param title The title of the alert + * @param buttonLabel The label of the button + * @param callbackId The callback id + */ + public synchronized void alert(final String message, final String title, final String buttonLabel, final String callbackId) { - final CordovaInterface ctx = this.ctx; - final Notification notification = this; - - Runnable runnable = new Runnable() { - public void run() { - - AlertDialog.Builder dlg = new AlertDialog.Builder(ctx); - dlg.setMessage(message); - dlg.setTitle(title); - dlg.setCancelable(false); - dlg.setPositiveButton(buttonLabel, - new AlertDialog.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - notification.success(new PluginResult(PluginResult.Status.OK, 0), callbackId); - } - }); - dlg.create(); - dlg.show(); - }; - }; - this.ctx.runOnUiThread(runnable); - } + final CordovaInterface ctx = this.ctx; + final Notification notification = this; + + Runnable runnable = new Runnable() { + public void run() { + + AlertDialog.Builder dlg = new AlertDialog.Builder(ctx.getContext()); + dlg.setMessage(message); + dlg.setTitle(title); + dlg.setCancelable(false); + dlg.setPositiveButton(buttonLabel, + new AlertDialog.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + notification.success(new PluginResult(PluginResult.Status.OK, 0), callbackId); + } + }); + dlg.create(); + dlg.show(); + }; + }; + this.ctx.runOnUiThread(runnable); + } - /** - * Builds and shows a native Android confirm dialog with given title, message, buttons. - * This dialog only shows up to 3 buttons. Any labels after that will be ignored. - * The index of the button pressed will be returned to the JavaScript callback identified by callbackId. - * - * @param message The message the dialog should display - * @param title The title of the dialog - * @param buttonLabels A comma separated list of button labels (Up to 3 buttons) - * @param callbackId The callback id - */ - public synchronized void confirm(final String message, final String title, String buttonLabels, final String callbackId) { + /** + * Builds and shows a native Android confirm dialog with given title, message, buttons. + * This dialog only shows up to 3 buttons. Any labels after that will be ignored. + * The index of the button pressed will be returned to the JavaScript callback identified by callbackId. + * + * @param message The message the dialog should display + * @param title The title of the dialog + * @param buttonLabels A comma separated list of button labels (Up to 3 buttons) + * @param callbackId The callback id + */ + public synchronized void confirm(final String message, final String title, String buttonLabels, final String callbackId) { - final CordovaInterface ctx = this.ctx; - final Notification notification = this; - final String[] fButtons = buttonLabels.split(","); + final CordovaInterface ctx = this.ctx; + final Notification notification = this; + final String[] fButtons = buttonLabels.split(","); - Runnable runnable = new Runnable() { - public void run() { - AlertDialog.Builder dlg = new AlertDialog.Builder(ctx); - dlg.setMessage(message); - dlg.setTitle(title); - dlg.setCancelable(false); + Runnable runnable = new Runnable() { + public void run() { + AlertDialog.Builder dlg = new AlertDialog.Builder(ctx.getContext()); + dlg.setMessage(message); + dlg.setTitle(title); + dlg.setCancelable(false); - // First button - if (fButtons.length > 0) { - dlg.setPositiveButton(fButtons[0], - new AlertDialog.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - notification.success(new PluginResult(PluginResult.Status.OK, 1), callbackId); - } - }); - } + // First button + if (fButtons.length > 0) { + dlg.setPositiveButton(fButtons[0], + new AlertDialog.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + notification.success(new PluginResult(PluginResult.Status.OK, 1), callbackId); + } + }); + } - // Second button - if (fButtons.length > 1) { - dlg.setNeutralButton(fButtons[1], - new AlertDialog.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - notification.success(new PluginResult(PluginResult.Status.OK, 2), callbackId); - } - }); - } + // Second button + if (fButtons.length > 1) { + dlg.setNeutralButton(fButtons[1], + new AlertDialog.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + notification.success(new PluginResult(PluginResult.Status.OK, 2), callbackId); + } + }); + } - // Third button - if (fButtons.length > 2) { - dlg.setNegativeButton(fButtons[2], - new AlertDialog.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - dialog.dismiss(); - notification.success(new PluginResult(PluginResult.Status.OK, 3), callbackId); - } - } - ); - } + // Third button + if (fButtons.length > 2) { + dlg.setNegativeButton(fButtons[2], + new AlertDialog.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + notification.success(new PluginResult(PluginResult.Status.OK, 3), callbackId); + } + } + ); + } - dlg.create(); - dlg.show(); - }; - }; - this.ctx.runOnUiThread(runnable); - } + dlg.create(); + dlg.show(); + }; + }; + this.ctx.runOnUiThread(runnable); + } - /** - * Show the spinner. - * - * @param title Title of the dialog - * @param message The message of the dialog - */ - public synchronized void activityStart(final String title, final String message) { - if (this.spinnerDialog != null) { - this.spinnerDialog.dismiss(); - this.spinnerDialog = null; - } - final Notification notification = this; - final CordovaInterface ctx = this.ctx; - Runnable runnable = new Runnable() { - public void run() { - notification.spinnerDialog = ProgressDialog.show(ctx, title , message, true, true, - new DialogInterface.OnCancelListener() { - public void onCancel(DialogInterface dialog) { - notification.spinnerDialog = null; - } - }); - } - }; - this.ctx.runOnUiThread(runnable); - } - - /** - * Stop spinner. - */ - public synchronized void activityStop() { - if (this.spinnerDialog != null) { - this.spinnerDialog.dismiss(); - this.spinnerDialog = null; - } - } + /** + * Show the spinner. + * + * @param title Title of the dialog + * @param message The message of the dialog + */ + public synchronized void activityStart(final String title, final String message) { + if (this.spinnerDialog != null) { + this.spinnerDialog.dismiss(); + this.spinnerDialog = null; + } + final Notification notification = this; + final CordovaInterface ctx = this.ctx; + Runnable runnable = new Runnable() { + public void run() { + notification.spinnerDialog = ProgressDialog.show(ctx.getContext(), title , message, true, true, + new DialogInterface.OnCancelListener() { + public void onCancel(DialogInterface dialog) { + notification.spinnerDialog = null; + } + }); + } + }; + this.ctx.runOnUiThread(runnable); + } + + /** + * Stop spinner. + */ + public synchronized void activityStop() { + if (this.spinnerDialog != null) { + this.spinnerDialog.dismiss(); + this.spinnerDialog = null; + } + } - /** - * Show the progress dialog. - * - * @param title Title of the dialog - * @param message The message of the dialog - */ - public synchronized void progressStart(final String title, final String message) { - if (this.progressDialog != null) { - this.progressDialog.dismiss(); - this.progressDialog = null; - } - final Notification notification = this; - final CordovaInterface ctx = this.ctx; - Runnable runnable = new Runnable() { - public void run() { - notification.progressDialog = new ProgressDialog(ctx); - notification.progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); - notification.progressDialog.setTitle(title); - notification.progressDialog.setMessage(message); - notification.progressDialog.setCancelable(true); - notification.progressDialog.setMax(100); - notification.progressDialog.setProgress(0); - notification.progressDialog.setOnCancelListener( - new DialogInterface.OnCancelListener() { - public void onCancel(DialogInterface dialog) { - notification.progressDialog = null; - } - }); - notification.progressDialog.show(); - } - }; - this.ctx.runOnUiThread(runnable); - } - - /** - * Set value of progress bar. - * - * @param value 0-100 - */ - public synchronized void progressValue(int value) { - if (this.progressDialog != null) { - this.progressDialog.setProgress(value); - } - } - - /** - * Stop progress dialog. - */ - public synchronized void progressStop() { - if (this.progressDialog != null) { - this.progressDialog.dismiss(); - this.progressDialog = null; - } - } + /** + * Show the progress dialog. + * + * @param title Title of the dialog + * @param message The message of the dialog + */ + public synchronized void progressStart(final String title, final String message) { + if (this.progressDialog != null) { + this.progressDialog.dismiss(); + this.progressDialog = null; + } + final Notification notification = this; + final CordovaInterface ctx = this.ctx; + Runnable runnable = new Runnable() { + public void run() { + notification.progressDialog = new ProgressDialog(ctx.getContext()); + notification.progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); + notification.progressDialog.setTitle(title); + notification.progressDialog.setMessage(message); + notification.progressDialog.setCancelable(true); + notification.progressDialog.setMax(100); + notification.progressDialog.setProgress(0); + notification.progressDialog.setOnCancelListener( + new DialogInterface.OnCancelListener() { + public void onCancel(DialogInterface dialog) { + notification.progressDialog = null; + } + }); + notification.progressDialog.show(); + } + }; + this.ctx.runOnUiThread(runnable); + } + + /** + * Set value of progress bar. + * + * @param value 0-100 + */ + public synchronized void progressValue(int value) { + if (this.progressDialog != null) { + this.progressDialog.setProgress(value); + } + } + + /** + * Stop progress dialog. + */ + public synchronized void progressStop() { + if (this.progressDialog != null) { + this.progressDialog.dismiss(); + this.progressDialog = null; + } + } } diff --git a/framework/src/org/apache/cordova/api/CordovaInterface.java b/framework/src/org/apache/cordova/api/CordovaInterface.java index 9435f873..c91a1607 100755 --- a/framework/src/org/apache/cordova/api/CordovaInterface.java +++ b/framework/src/org/apache/cordova/api/CordovaInterface.java @@ -38,7 +38,7 @@ import android.net.Uri; * The Cordova activity abstract class that is extended by DroidGap. * It is used to isolate plugin development, and remove dependency on entire Cordova library. */ -public abstract class CordovaInterface extends Activity{ +public interface CordovaInterface { /** * @deprecated @@ -69,6 +69,13 @@ public abstract class CordovaInterface extends Activity{ */ abstract public void startActivityForResult(IPlugin command, Intent intent, int requestCode); + /** + * Launch an activity for which you would not like a result when it finished. + * + * @param intent The intent to start + */ + abstract public void startActivity(Intent intent); + /** * Set the plugin to be called when a sub-activity exits. * @@ -90,5 +97,49 @@ public abstract class CordovaInterface extends Activity{ * @param data The message data */ abstract public void postMessage(String id, Object data); + + + public abstract Resources getResources(); + + public abstract String getPackageName(); + + public abstract Object getSystemService(String service); + + public abstract Context getContext(); + + public abstract Context getBaseContext(); + + public abstract Intent registerReceiver(BroadcastReceiver receiver, + IntentFilter intentFilter); + + public abstract ContentResolver getContentResolver(); + + public abstract void unregisterReceiver(BroadcastReceiver receiver); + + public abstract Cursor managedQuery(Uri uri, String[] projection, String selection, + String[] selectionArgs, String sortOrder); + + public abstract void runOnUiThread(Runnable runnable); + + public abstract AssetManager getAssets(); + + public abstract void clearCache(); + + public abstract void clearHistory(); + + public abstract boolean backHistory(); + + //public abstract void addWhiteListEntry(String origin, boolean subdomains); + + public abstract void bindBackButton(boolean override); + + public abstract boolean isBackButtonBound(); + + public abstract void cancelLoadUrl(); + + public abstract void showWebPage(String url, boolean openExternal, + boolean clearHistory, HashMap params); + + public abstract Context getApplicationContext(); }