From 4959caf149c49f0a58c6a89ec01b909baf3fa579 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Thu, 21 Jan 2016 14:30:56 -0800 Subject: [PATCH] Allow the PDF Printer to "print" non-locale-default paper sizes. The MediaSizeComparator already sorts the media sizes correctly. Bug: 12675943 Change-Id: I6fa4b1a8885a60704bc175ec849ea483ffb4bcd8 --- core/java/android/print/PrintAttributes.java | 18 ++++++++ .../PrintSpooler/res/values-ca/arrays.xml | 33 --------------- .../PrintSpooler/res/values-en-rCA/arrays.xml | 33 --------------- .../PrintSpooler/res/values-en-rUS/arrays.xml | 33 --------------- .../PrintSpooler/res/values-es-rUS/arrays.xml | 33 --------------- .../PrintSpooler/res/values-ja/arrays.xml | 41 ------------------- packages/PrintSpooler/res/values/arrays.xml | 34 --------------- .../printspooler/ui/PrintActivity.java | 10 ++--- 8 files changed, 23 insertions(+), 212 deletions(-) delete mode 100644 packages/PrintSpooler/res/values-ca/arrays.xml delete mode 100644 packages/PrintSpooler/res/values-en-rCA/arrays.xml delete mode 100644 packages/PrintSpooler/res/values-en-rUS/arrays.xml delete mode 100644 packages/PrintSpooler/res/values-es-rUS/arrays.xml delete mode 100644 packages/PrintSpooler/res/values-ja/arrays.xml diff --git a/core/java/android/print/PrintAttributes.java b/core/java/android/print/PrintAttributes.java index 8892e3430fe48..e9c196d0cdad8 100644 --- a/core/java/android/print/PrintAttributes.java +++ b/core/java/android/print/PrintAttributes.java @@ -27,6 +27,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import android.util.ArrayMap; +import android.util.ArraySet; import android.util.Log; import com.android.internal.R; @@ -872,6 +873,23 @@ public final class PrintAttributes implements Parcelable { mPackageName = null; } + /** + * Get the Id of all predefined media sizes beside the {@link #UNKNOWN_PORTRAIT} and + * {@link #UNKNOWN_LANDSCAPE}. + * + * @return List of all predefined media sizes + * + * @hide + */ + public static @NonNull ArraySet getAllPredefinedSizes() { + ArraySet definedMediaSizes = new ArraySet<>(sIdToMediaSizeMap.values()); + + definedMediaSizes.remove(UNKNOWN_PORTRAIT); + definedMediaSizes.remove(UNKNOWN_LANDSCAPE); + + return definedMediaSizes; + } + /** @hide */ public MediaSize(String id, String label, String packageName, int widthMils, int heightMils, int labelResId) { diff --git a/packages/PrintSpooler/res/values-ca/arrays.xml b/packages/PrintSpooler/res/values-ca/arrays.xml deleted file mode 100644 index c1b149c599604..0000000000000 --- a/packages/PrintSpooler/res/values-ca/arrays.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - NA_LETTER - NA_GOVT_LETTER - NA_LEGAL - NA_JUNIOR_LEGAL - NA_LEDGER - NA_TABLOID - NA_INDEX_3X5 - NA_INDEX_4X6 - NA_INDEX_5X8 - NA_MONARCH - NA_QUARTO - NA_FOOLSCAP - - - diff --git a/packages/PrintSpooler/res/values-en-rCA/arrays.xml b/packages/PrintSpooler/res/values-en-rCA/arrays.xml deleted file mode 100644 index d40278c3973da..0000000000000 --- a/packages/PrintSpooler/res/values-en-rCA/arrays.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - NA_LETTER - NA_GOVT_LETTER - NA_LEGAL - NA_JUNIOR_LEGAL - NA_LEDGER - NA_TABLOID - NA_INDEX_3X5 - NA_INDEX_4X6 - NA_INDEX_5X8 - NA_MONARCH - NA_QUARTO - NA_FOOLSCAP - - - diff --git a/packages/PrintSpooler/res/values-en-rUS/arrays.xml b/packages/PrintSpooler/res/values-en-rUS/arrays.xml deleted file mode 100644 index d40278c3973da..0000000000000 --- a/packages/PrintSpooler/res/values-en-rUS/arrays.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - NA_LETTER - NA_GOVT_LETTER - NA_LEGAL - NA_JUNIOR_LEGAL - NA_LEDGER - NA_TABLOID - NA_INDEX_3X5 - NA_INDEX_4X6 - NA_INDEX_5X8 - NA_MONARCH - NA_QUARTO - NA_FOOLSCAP - - - diff --git a/packages/PrintSpooler/res/values-es-rUS/arrays.xml b/packages/PrintSpooler/res/values-es-rUS/arrays.xml deleted file mode 100644 index c1b149c599604..0000000000000 --- a/packages/PrintSpooler/res/values-es-rUS/arrays.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - NA_LETTER - NA_GOVT_LETTER - NA_LEGAL - NA_JUNIOR_LEGAL - NA_LEDGER - NA_TABLOID - NA_INDEX_3X5 - NA_INDEX_4X6 - NA_INDEX_5X8 - NA_MONARCH - NA_QUARTO - NA_FOOLSCAP - - - diff --git a/packages/PrintSpooler/res/values-ja/arrays.xml b/packages/PrintSpooler/res/values-ja/arrays.xml deleted file mode 100644 index 3187cbefaa1eb..0000000000000 --- a/packages/PrintSpooler/res/values-ja/arrays.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - JIS_B10 - JIS_B9 - JIS_B8 - JIS_B7 - JIS_B6 - JIS_B5 - JIS_B4 - JIS_B3 - JIS_B2 - JIS_B1 - JIS_B0 - JIS_EXEC - JPN_CHOU4 - JPN_CHOU3 - JPN_CHOU2 - JPN_HAGAKI - JPN_OUFUKU - JPN_KAHU - JPN_KAKU2 - JPN_YOU4 - - - diff --git a/packages/PrintSpooler/res/values/arrays.xml b/packages/PrintSpooler/res/values/arrays.xml index afe3c7122dd79..8658be46c6eba 100644 --- a/packages/PrintSpooler/res/values/arrays.xml +++ b/packages/PrintSpooler/res/values/arrays.xml @@ -121,38 +121,4 @@ - - ISO_A0 - ISO_A1 - ISO_A2 - ISO_A3 - ISO_A4 - ISO_A5 - ISO_A6 - ISO_A7 - ISO_A8 - ISO_A9 - ISO_A10 - ISO_B1 - ISO_B2 - ISO_B3 - ISO_B4 - ISO_B5 - ISO_B6 - ISO_B7 - ISO_B8 - ISO_B9 - ISO_B10 - ISO_C1 - ISO_C2 - ISO_C3 - ISO_C4 - ISO_C5 - ISO_C6 - ISO_C7 - ISO_C8 - ISO_C9 - ISO_C10 - - diff --git a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java index 811adda743905..e9ac021d062ef 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/ui/PrintActivity.java @@ -61,6 +61,7 @@ import android.text.TextUtils; import android.text.TextUtils.SimpleStringSplitter; import android.text.TextWatcher; import android.util.ArrayMap; +import android.util.ArraySet; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; @@ -2325,6 +2326,7 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat } private PrinterInfo createFakePdfPrinter() { + ArraySet allMediaSizes = MediaSize.getAllPredefinedSizes(); MediaSize defaultMediaSize = MediaSizeUtils.getDefault(PrintActivity.this); PrinterId printerId = new PrinterId(getComponentName(), "PDF printer"); @@ -2332,11 +2334,9 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat PrinterCapabilitiesInfo.Builder builder = new PrinterCapabilitiesInfo.Builder(printerId); - String[] mediaSizeIds = getResources().getStringArray(R.array.pdf_printer_media_sizes); - final int mediaSizeIdCount = mediaSizeIds.length; - for (int i = 0; i < mediaSizeIdCount; i++) { - String id = mediaSizeIds[i]; - MediaSize mediaSize = MediaSize.getStandardMediaSizeById(id); + final int mediaSizeCount = allMediaSizes.size(); + for (int i = 0; i < mediaSizeCount; i++) { + MediaSize mediaSize = allMediaSizes.valueAt(i); builder.addMediaSize(mediaSize, mediaSize.equals(defaultMediaSize)); }