am ac7297bd: Merge "Fixes in the page range selection and verification logic." into klp-dev

* commit 'ac7297bdc04e2097e39b791064e5ed6ee92680ea':
  Fixes in the page range selection and verification logic.
This commit is contained in:
Svetoslav
2013-09-18 19:19:46 -07:00
committed by Android Git Automerger

View File

@@ -139,7 +139,7 @@ public class PrintJobConfigActivity extends Activity {
private static final int MIN_COPIES = 1; private static final int MIN_COPIES = 1;
private static final String MIN_COPIES_STRING = String.valueOf(MIN_COPIES); private static final String MIN_COPIES_STRING = String.valueOf(MIN_COPIES);
private static final Pattern PATTERN_DIGITS = Pattern.compile("\\d"); private static final Pattern PATTERN_DIGITS = Pattern.compile("[\\d]+");
private static final Pattern PATTERN_ESCAPE_SPECIAL_CHARS = Pattern.compile( private static final Pattern PATTERN_ESCAPE_SPECIAL_CHARS = Pattern.compile(
"(?=[]\\[+&|!(){}^\"~*?:\\\\])"); "(?=[]\\[+&|!(){}^\"~*?:\\\\])");
@@ -1484,7 +1484,8 @@ public class PrintJobConfigActivity extends Activity {
fromIndex = toIndex = Integer.parseInt(range) - 1; fromIndex = toIndex = Integer.parseInt(range) - 1;
} }
PageRange pageRange = new PageRange(fromIndex, toIndex); PageRange pageRange = new PageRange(Math.min(fromIndex, toIndex),
Math.max(fromIndex, toIndex));
pageRanges.add(pageRange); pageRanges.add(pageRange);
} }
@@ -2166,6 +2167,11 @@ public class PrintJobConfigActivity extends Activity {
return false; return false;
} }
if (ourPageRanges.length == 1
&& PageRange.ALL_PAGES.equals(ourPageRanges[0])) {
return true;
}
otherPageRanges = normalize(otherPageRanges); otherPageRanges = normalize(otherPageRanges);
int otherPageIdx = 0; int otherPageIdx = 0;
@@ -2197,28 +2203,28 @@ public class PrintJobConfigActivity extends Activity {
if (pageRanges == null) { if (pageRanges == null) {
return null; return null;
} }
final int oldPageCount = pageRanges.length; final int oldRangeCount = pageRanges.length;
if (oldPageCount <= 1) { if (oldRangeCount <= 1) {
return pageRanges; return pageRanges;
} }
Arrays.sort(pageRanges, sComparator); Arrays.sort(pageRanges, sComparator);
int newRangeCount = 0; int newRangeCount = 1;
for (int i = 0; i < oldPageCount - 1; i++) { for (int i = 0; i < oldRangeCount - 1; i++) {
newRangeCount++; newRangeCount++;
PageRange currentRange = pageRanges[i]; PageRange currentRange = pageRanges[i];
PageRange nextRange = pageRanges[i + 1]; PageRange nextRange = pageRanges[i + 1];
if (currentRange.getEnd() >= nextRange.getStart()) { if (currentRange.getEnd() + 1 >= nextRange.getStart()) {
newRangeCount--; newRangeCount--;
pageRanges[i] = null; pageRanges[i] = null;
pageRanges[i + 1] = new PageRange(currentRange.getStart(), pageRanges[i + 1] = new PageRange(currentRange.getStart(),
nextRange.getEnd()); Math.max(currentRange.getEnd(), nextRange.getEnd()));
} }
} }
if (newRangeCount == oldPageCount) { if (newRangeCount == oldRangeCount) {
return pageRanges; return pageRanges;
} }
return Arrays.copyOfRange(pageRanges, oldPageCount - newRangeCount, return Arrays.copyOfRange(pageRanges, oldRangeCount - newRangeCount,
oldPageCount - 1); oldRangeCount);
} }
public static void offsetStart(PageRange[] pageRanges, int offset) { public static void offsetStart(PageRange[] pageRanges, int offset) {