diff options
author | Philip P. Moltmann <moltmann@google.com> | 2017-08-29 14:06:20 -0700 |
---|---|---|
committer | Philip P. Moltmann <moltmann@google.com> | 2017-08-29 14:09:29 -0700 |
commit | 318655973ea7258fac04b572b96b29b685a66eec (patch) | |
tree | 3fe35589c0906c673a3cc4b052ce3bbd149142e9 /packages/PrintSpooler/src | |
parent | 38cdf114751c43e97cc44c48a4356964ad2cbe9d (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.java | 33 |
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); |