summaryrefslogtreecommitdiff
path: root/packages/PrintSpooler/src
diff options
context:
space:
mode:
authorPhilip P. Moltmann <moltmann@google.com>2017-08-29 14:06:20 -0700
committerPhilip P. Moltmann <moltmann@google.com>2017-08-29 14:09:29 -0700
commit318655973ea7258fac04b572b96b29b685a66eec (patch)
tree3fe35589c0906c673a3cc4b052ce3bbd149142e9 /packages/PrintSpooler/src
parent38cdf114751c43e97cc44c48a4356964ad2cbe9d (diff)
Disable more options while in progress
Otherwise tapping the button quickly enough can cause the activity to open twice. Change-Id: I007d7ee7d8d271111dc919f195a487a9c65d2bdf Fixes: 63647922 Test: cts-tradefed run cts-dev -m Print
Diffstat (limited to 'packages/PrintSpooler/src')
-rw-r--r--packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java33
1 files changed, 32 insertions, 1 deletions
diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
index 1b7a1b8b9567..5a3bdf34ce64 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java
@@ -137,6 +137,9 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
private static final String FRAGMENT_TAG = "FRAGMENT_TAG";
+ private static final String MORE_OPTIONS_ACTIVITY_IN_PROGRESS_KEY =
+ PrintActivity.class.getName() + ".MORE_OPTIONS_ACTIVITY_IN_PROGRESS";
+
private static final String HAS_PRINTED_PREF = "has_printed";
private static final int LOADER_ID_ENABLED_PRINT_SERVICES = 1;
@@ -226,6 +229,12 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
private Button mMoreOptionsButton;
+ /**
+ * The {@link #mMoreOptionsButton} was pressed and we started the
+ * @link #mAdvancedPrintOptionsActivity} and it has not yet {@link #onActivityResult returned}.
+ */
+ private boolean mIsMoreOptionsActivityInProgress;
+
private ImageView mPrintButton;
private ProgressMessageController mProgressMessageController;
@@ -268,6 +277,11 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
Bundle extras = getIntent().getExtras();
+ if (savedInstanceState != null) {
+ mIsMoreOptionsActivityInProgress =
+ savedInstanceState.getBoolean(MORE_OPTIONS_ACTIVITY_IN_PROGRESS_KEY);
+ }
+
mPrintJob = extras.getParcelable(PrintManager.EXTRA_PRINT_JOB);
if (mPrintJob == null) {
throw new IllegalArgumentException(PrintManager.EXTRA_PRINT_JOB
@@ -424,6 +438,14 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
}
@Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ outState.putBoolean(MORE_OPTIONS_ACTIVITY_IN_PROGRESS_KEY,
+ mIsMoreOptionsActivityInProgress);
+ }
+
+ @Override
protected void onStop() {
mPrinterAvailabilityDetector.cancel();
@@ -797,16 +819,24 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
intent.putExtra(PrintService.EXTRA_PRINT_DOCUMENT_INFO,
mPrintedDocument.getDocumentInfo().info);
+ mIsMoreOptionsActivityInProgress = true;
+
// This is external activity and may not be there.
try {
startActivityForResult(intent, ACTIVITY_REQUEST_POPULATE_ADVANCED_PRINT_OPTIONS);
} catch (ActivityNotFoundException anfe) {
+ mIsMoreOptionsActivityInProgress = false;
Log.e(LOG_TAG, "Error starting activity for intent: " + intent, anfe);
}
+
+ mMoreOptionsButton.setEnabled(!mIsMoreOptionsActivityInProgress);
}
}
private void onAdvancedPrintOptionsActivityResult(int resultCode, Intent data) {
+ mIsMoreOptionsActivityInProgress = false;
+ mMoreOptionsButton.setEnabled(true);
+
if (resultCode != RESULT_OK || data == null) {
return;
}
@@ -1901,7 +1931,8 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
// Advanced print options
if (mAdvancedPrintOptionsActivity != null) {
mMoreOptionsButton.setVisibility(View.VISIBLE);
- mMoreOptionsButton.setEnabled(true);
+
+ mMoreOptionsButton.setEnabled(!mIsMoreOptionsActivityInProgress);
} else {
mMoreOptionsButton.setVisibility(View.GONE);
mMoreOptionsButton.setEnabled(false);