summaryrefslogtreecommitdiff
path: root/android/src/com/artifex/mupdfdemo/PrintDialogActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'android/src/com/artifex/mupdfdemo/PrintDialogActivity.java')
-rw-r--r--android/src/com/artifex/mupdfdemo/PrintDialogActivity.java256
1 files changed, 128 insertions, 128 deletions
diff --git a/android/src/com/artifex/mupdfdemo/PrintDialogActivity.java b/android/src/com/artifex/mupdfdemo/PrintDialogActivity.java
index bcef1cbd..d96322d5 100644
--- a/android/src/com/artifex/mupdfdemo/PrintDialogActivity.java
+++ b/android/src/com/artifex/mupdfdemo/PrintDialogActivity.java
@@ -14,132 +14,132 @@ import android.webkit.WebView;
import android.webkit.WebViewClient;
public class PrintDialogActivity extends Activity {
- private static final String PRINT_DIALOG_URL = "https://www.google.com/cloudprint/dialog.html";
- private static final String JS_INTERFACE = "AndroidPrintDialog";
- private static final String CONTENT_TRANSFER_ENCODING = "base64";
-
- private static final String ZXING_URL = "http://zxing.appspot.com";
- private static final int ZXING_SCAN_REQUEST = 65743;
-
- /**
- * Post message that is sent by Print Dialog web page when the printing dialog
- * needs to be closed.
- */
- private static final String CLOSE_POST_MESSAGE_NAME = "cp-dialog-on-close";
-
- /**
- * Web view element to show the printing dialog in.
- */
- private WebView dialogWebView;
-
- /**
- * Intent that started the action.
- */
- Intent cloudPrintIntent;
-
- private int resultCode;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- resultCode = RESULT_OK;
- setContentView(R.layout.print_dialog);
- dialogWebView = (WebView) findViewById(R.id.webview);
- cloudPrintIntent = this.getIntent();
-
- WebSettings settings = dialogWebView.getSettings();
- settings.setJavaScriptEnabled(true);
-
- dialogWebView.setWebViewClient(new PrintDialogWebClient());
- dialogWebView.addJavascriptInterface(
- new PrintDialogJavaScriptInterface(), JS_INTERFACE);
-
- dialogWebView.loadUrl(PRINT_DIALOG_URL);
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- if (requestCode == ZXING_SCAN_REQUEST && resultCode == RESULT_OK) {
- dialogWebView.loadUrl(intent.getStringExtra("SCAN_RESULT"));
- }
- }
-
- final class PrintDialogJavaScriptInterface {
- public String getType() {
- return cloudPrintIntent.getType();
- }
-
- public String getTitle() {
- return cloudPrintIntent.getExtras().getString("title");
- }
-
- public String getContent() {
- try {
- ContentResolver contentResolver = getContentResolver();
- InputStream is = contentResolver.openInputStream(cloudPrintIntent.getData());
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
- byte[] buffer = new byte[4096];
- int n = is.read(buffer);
- while (n >= 0) {
- baos.write(buffer, 0, n);
- n = is.read(buffer);
- }
- is.close();
- baos.flush();
-
- return Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
- } catch (Throwable e) {
- resultCode = RESULT_CANCELED;
- setResult(resultCode);
- finish();
- e.printStackTrace();
- }
- return "";
- }
-
- public String getEncoding() {
- return CONTENT_TRANSFER_ENCODING;
- }
-
- public void onPostMessage(String message) {
- if (message.startsWith(CLOSE_POST_MESSAGE_NAME)) {
- setResult(resultCode);
- finish();
- }
- }
- }
-
- private final class PrintDialogWebClient extends WebViewClient {
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- if (url.startsWith(ZXING_URL)) {
- Intent intentScan = new Intent("com.google.zxing.client.android.SCAN");
- intentScan.putExtra("SCAN_MODE", "QR_CODE_MODE");
- try {
- startActivityForResult(intentScan, ZXING_SCAN_REQUEST);
- } catch (ActivityNotFoundException error) {
- view.loadUrl(url);
- }
- } else {
- view.loadUrl(url);
- }
- return false;
- }
-
- @Override
- public void onPageFinished(WebView view, String url) {
- if (PRINT_DIALOG_URL.equals(url)) {
- // Submit print document.
- view.loadUrl("javascript:printDialog.setPrintDocument(printDialog.createPrintDocument("
- + "window." + JS_INTERFACE + ".getType(),window." + JS_INTERFACE + ".getTitle(),"
- + "window." + JS_INTERFACE + ".getContent(),window." + JS_INTERFACE + ".getEncoding()))");
-
- // Add post messages listener.
- view.loadUrl("javascript:window.addEventListener('message',"
- + "function(evt){window." + JS_INTERFACE + ".onPostMessage(evt.data)}, false)");
- }
- }
- }
+ private static final String PRINT_DIALOG_URL = "https://www.google.com/cloudprint/dialog.html";
+ private static final String JS_INTERFACE = "AndroidPrintDialog";
+ private static final String CONTENT_TRANSFER_ENCODING = "base64";
+
+ private static final String ZXING_URL = "http://zxing.appspot.com";
+ private static final int ZXING_SCAN_REQUEST = 65743;
+
+ /**
+ * Post message that is sent by Print Dialog web page when the printing dialog
+ * needs to be closed.
+ */
+ private static final String CLOSE_POST_MESSAGE_NAME = "cp-dialog-on-close";
+
+ /**
+ * Web view element to show the printing dialog in.
+ */
+ private WebView dialogWebView;
+
+ /**
+ * Intent that started the action.
+ */
+ Intent cloudPrintIntent;
+
+ private int resultCode;
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ resultCode = RESULT_OK;
+ setContentView(R.layout.print_dialog);
+ dialogWebView = (WebView) findViewById(R.id.webview);
+ cloudPrintIntent = this.getIntent();
+
+ WebSettings settings = dialogWebView.getSettings();
+ settings.setJavaScriptEnabled(true);
+
+ dialogWebView.setWebViewClient(new PrintDialogWebClient());
+ dialogWebView.addJavascriptInterface(
+ new PrintDialogJavaScriptInterface(), JS_INTERFACE);
+
+ dialogWebView.loadUrl(PRINT_DIALOG_URL);
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent intent) {
+ if (requestCode == ZXING_SCAN_REQUEST && resultCode == RESULT_OK) {
+ dialogWebView.loadUrl(intent.getStringExtra("SCAN_RESULT"));
+ }
+ }
+
+ final class PrintDialogJavaScriptInterface {
+ public String getType() {
+ return cloudPrintIntent.getType();
+ }
+
+ public String getTitle() {
+ return cloudPrintIntent.getExtras().getString("title");
+ }
+
+ public String getContent() {
+ try {
+ ContentResolver contentResolver = getContentResolver();
+ InputStream is = contentResolver.openInputStream(cloudPrintIntent.getData());
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ byte[] buffer = new byte[4096];
+ int n = is.read(buffer);
+ while (n >= 0) {
+ baos.write(buffer, 0, n);
+ n = is.read(buffer);
+ }
+ is.close();
+ baos.flush();
+
+ return Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
+ } catch (Throwable e) {
+ resultCode = RESULT_CANCELED;
+ setResult(resultCode);
+ finish();
+ e.printStackTrace();
+ }
+ return "";
+ }
+
+ public String getEncoding() {
+ return CONTENT_TRANSFER_ENCODING;
+ }
+
+ public void onPostMessage(String message) {
+ if (message.startsWith(CLOSE_POST_MESSAGE_NAME)) {
+ setResult(resultCode);
+ finish();
+ }
+ }
+ }
+
+ private final class PrintDialogWebClient extends WebViewClient {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ if (url.startsWith(ZXING_URL)) {
+ Intent intentScan = new Intent("com.google.zxing.client.android.SCAN");
+ intentScan.putExtra("SCAN_MODE", "QR_CODE_MODE");
+ try {
+ startActivityForResult(intentScan, ZXING_SCAN_REQUEST);
+ } catch (ActivityNotFoundException error) {
+ view.loadUrl(url);
+ }
+ } else {
+ view.loadUrl(url);
+ }
+ return false;
+ }
+
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ if (PRINT_DIALOG_URL.equals(url)) {
+ // Submit print document.
+ view.loadUrl("javascript:printDialog.setPrintDocument(printDialog.createPrintDocument("
+ + "window." + JS_INTERFACE + ".getType(),window." + JS_INTERFACE + ".getTitle(),"
+ + "window." + JS_INTERFACE + ".getContent(),window." + JS_INTERFACE + ".getEncoding()))");
+
+ // Add post messages listener.
+ view.loadUrl("javascript:window.addEventListener('message',"
+ + "function(evt){window." + JS_INTERFACE + ".onPostMessage(evt.data)}, false)");
+ }
+ }
+ }
}