summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java23
1 files changed, 20 insertions, 3 deletions
diff --git a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java
index 14f60f1..f57bceb 100644
--- a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java
+++ b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java
@@ -413,12 +413,25 @@ public class PrintJobConfigActivity extends Activity {
// write anything and wait for the user to fix the range which will
// trigger an update.
mRequestedPages = mEditor.getRequestedPages();
- if (mRequestedPages == null) {
+ if (mRequestedPages == null || mRequestedPages.length == 0) {
mEditor.updateUi();
if (mEditor.isDone()) {
PrintJobConfigActivity.this.finish();
}
return;
+ } else {
+ // If print is not confirmed we just ask for the first of the
+ // selected pages to emulate a behavior that shows preview
+ // increasing the chances that apps will implement the APIs
+ // correctly.
+ if (!mEditor.isPrintConfirmed()) {
+ if (ALL_PAGES_ARRAY.equals(mRequestedPages)) {
+ mRequestedPages = new PageRange[] {new PageRange(0, 0)};
+ } else {
+ final int firstPage = mRequestedPages[0].getStart();
+ mRequestedPages = new PageRange[] {new PageRange(firstPage, firstPage)};
+ }
+ }
}
// If the info and the layout did not change and we already have
@@ -1460,8 +1473,12 @@ public class PrintJobConfigActivity extends Activity {
if (dashIndex > 0) {
fromIndex = Integer.parseInt(range.substring(0, dashIndex)) - 1;
- toIndex = Integer.parseInt(range.substring(
- dashIndex + 1, range.length())) - 1;
+ // It is possible that the dash is at the end since the input
+ // verification can has to allow the user to keep entering if
+ // this would lead to a valid input. So we handle this.
+ toIndex = (dashIndex < range.length() - 1)
+ ? Integer.parseInt(range.substring(dashIndex + 1,
+ range.length())) - 1 : fromIndex;
} else {
fromIndex = toIndex = Integer.parseInt(range) - 1;
}