summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorSvetoslav <svetoslavganov@google.com>2013-06-24 18:29:33 -0700
committerSvetoslav <svetoslavganov@google.com>2013-07-16 14:39:32 -0700
commit17b7f6e6d4ec9f5e9597bfd283f1c017b6c66275 (patch)
tree2cd220ff7f122c9aeb0648089ec2b98f289b6cde /core/java
parent29b173ae072cd486ca91940eef7a6ed2298e55d0 (diff)
downloadframeworks_base-17b7f6e6d4ec9f5e9597bfd283f1c017b6c66275.zip
frameworks_base-17b7f6e6d4ec9f5e9597bfd283f1c017b6c66275.tar.gz
frameworks_base-17b7f6e6d4ec9f5e9597bfd283f1c017b6c66275.tar.bz2
Clean up of the print APIs.
1. Fixed a case in which the onPrintCompleted callback may not be invoked. 2. Added string resulrces for the different error messages for failed printing in OnPrintCompletedCallback 3. Fixed the string comments for the MediaSize constants. 4. Added APIs to create certain print attributes by passing in a string label instead of resource and package name since in some cases a print service may be getting already internationalized lables or it may not know all possible values. 5. Fixed a crash in PrintJobConfigActivity if there is no input or output tray. Change-Id: Ie877b7dc669051606394aa290e6d2b979a42db4c
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/print/FileDocumentAdapter.java50
-rw-r--r--core/java/android/print/PrintAttributes.java894
-rw-r--r--core/java/android/print/PrintManager.java2
3 files changed, 611 insertions, 335 deletions
diff --git a/core/java/android/print/FileDocumentAdapter.java b/core/java/android/print/FileDocumentAdapter.java
index d162c19..2871d45 100644
--- a/core/java/android/print/FileDocumentAdapter.java
+++ b/core/java/android/print/FileDocumentAdapter.java
@@ -16,11 +16,14 @@
package android.print;
+import android.content.Context;
import android.os.AsyncTask;
import android.os.CancellationSignal;
import android.os.CancellationSignal.OnCancelListener;
import android.util.Log;
+import com.android.internal.R;
+
import libcore.io.IoUtils;
import java.io.File;
@@ -40,14 +43,17 @@ final class FileDocumentAdapter extends PrintDocumentAdapter {
private static final String LOG_TAG = "FileDocumentAdapter";
+ private final Context mContext;
+
private final File mFile;
private WriteFileAsyncTask mWriteFileAsyncTask;
- public FileDocumentAdapter(File file) {
+ public FileDocumentAdapter(Context context, File file) {
if (file == null) {
throw new IllegalArgumentException("File cannot be null!");
}
+ mContext = context;
mFile = file;
}
@@ -63,16 +69,12 @@ final class FileDocumentAdapter extends PrintDocumentAdapter {
@Override
public void onWrite(List<PageRange> pages, FileDescriptor destination,
CancellationSignal cancellationSignal, WriteResultCallback callback) {
- mWriteFileAsyncTask = new WriteFileAsyncTask(mFile, destination, cancellationSignal,
- callback);
+ mWriteFileAsyncTask = new WriteFileAsyncTask(destination, cancellationSignal, callback);
mWriteFileAsyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
(Void[]) null);
-
}
- private static final class WriteFileAsyncTask extends AsyncTask<Void, Void, Void> {
-
- private final File mSource;
+ private final class WriteFileAsyncTask extends AsyncTask<Void, Void, Void> {
private final FileDescriptor mDestination;
@@ -80,12 +82,11 @@ final class FileDocumentAdapter extends PrintDocumentAdapter {
private final CancellationSignal mCancellationSignal;
- public WriteFileAsyncTask(File source, FileDescriptor destination,
+ public WriteFileAsyncTask(FileDescriptor destination,
CancellationSignal cancellationSignal, WriteResultCallback callback) {
- mSource = source;
mDestination = destination;
mResultCallback = callback;
- mCancellationSignal = cancellationSignal;
+ mCancellationSignal = cancellationSignal;
mCancellationSignal.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel() {
@@ -100,8 +101,11 @@ final class FileDocumentAdapter extends PrintDocumentAdapter {
OutputStream out = new FileOutputStream(mDestination);
final byte[] buffer = new byte[8192];
try {
- in = new FileInputStream(mSource);
+ in = new FileInputStream(mFile);
while (true) {
+ if (isCancelled()) {
+ break;
+ }
final int readByteCount = in.read(buffer);
if (readByteCount < 0) {
break;
@@ -109,20 +113,28 @@ final class FileDocumentAdapter extends PrintDocumentAdapter {
out.write(buffer, 0, readByteCount);
}
} catch (IOException ioe) {
- Log.e(LOG_TAG, "Error writing data!", ioe);
+ Log.e(LOG_TAG, "Error writing data!", ioe);
+ mResultCallback.onWriteFailed(mContext.getString(
+ R.string.write_fail_reason_cannot_write));
} finally {
IoUtils.closeQuietly(in);
IoUtils.closeQuietly(out);
- if (!isCancelled()) {
- List<PageRange> pages = new ArrayList<PageRange>();
- pages.add(PageRange.ALL_PAGES);
- mResultCallback.onWriteFinished(pages);
- } else {
- mResultCallback.onWriteFailed("Cancelled");
- }
}
return null;
}
+
+ @Override
+ protected void onPostExecute(Void result) {
+ List<PageRange> pages = new ArrayList<PageRange>();
+ pages.add(PageRange.ALL_PAGES);
+ mResultCallback.onWriteFinished(pages);
+ }
+
+ @Override
+ protected void onCancelled(Void result) {
+ mResultCallback.onWriteFailed(mContext.getString(
+ R.string.write_fail_reason_cancelled));
+ }
}
}
diff --git a/core/java/android/print/PrintAttributes.java b/core/java/android/print/PrintAttributes.java
index 8511d0b..2a27a32 100644
--- a/core/java/android/print/PrintAttributes.java
+++ b/core/java/android/print/PrintAttributes.java
@@ -18,11 +18,10 @@ package android.print;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources.NotFoundException;
+import android.content.res.Resources;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
-import android.util.Log;
import com.android.internal.R;
@@ -388,196 +387,476 @@ public final class PrintAttributes implements Parcelable {
* This class specifies a supported media size.
*/
public static final class MediaSize {
- private static final String LOG_TAG = "MediaSize";
// TODO: Verify media sizes and add more standard ones.
// ISO sizes
- /** ISO A0 media size: 841mm x 1189mm (33.11" x 46.81") */
- public static final MediaSize ISO_A0 =
- new MediaSize("ISO_A0", "android", R.string.mediaSize_iso_a0, 33110, 46810);
- /** ISO A1 media size: 594mm x 841mm (23.39" x 33.11") */
- public static final MediaSize ISO_A1 =
- new MediaSize("ISO_A1", "android", R.string.mediaSize_iso_a1, 23390, 33110);
- /** ISO A2 media size: 420mm x 594mm (16.54" x 23.39") */
- public static final MediaSize ISO_A2 =
- new MediaSize("ISO_A2", "android", R.string.mediaSize_iso_a2, 16540, 23390);
- /** ISO A3 media size: 297mm x 420mm (11.69" x 16.54") */
- public static final MediaSize ISO_A3 =
- new MediaSize("ISO_A3", "android", R.string.mediaSize_iso_a3, 11690, 16540);
- /** ISO A4 media size: 210mm x 297mm (8.27" x 11.69") */
- public static final MediaSize ISO_A4 =
- new MediaSize("ISO_A4", "android", R.string.mediaSize_iso_a4, 8270, 11690);
- /** ISO A5 media size: 148mm x 210mm (5.83" x 8.27") */
- public static final MediaSize ISO_A5 =
- new MediaSize("ISO_A5", "android", R.string.mediaSize_iso_a5, 5830, 8270);
- /** ISO A6 media size: 105mm x 148mm (4.13" x 5.83") */
- public static final MediaSize ISO_A6 =
- new MediaSize("ISO_A6", "android", R.string.mediaSize_iso_a6, 4130, 5830);
- /** ISO A7 media size: 74mm x 105mm (2.91" x 4.13") */
- public static final MediaSize ISO_A7 =
- new MediaSize("ISO_A7", "android", R.string.mediaSize_iso_a7, 2910, 4130);
- /** ISO A8 media size: 52mm x 74mm (2.05" x 2.91") */
- public static final MediaSize ISO_A8 =
- new MediaSize("ISO_A8", "android", R.string.mediaSize_iso_a8, 2050, 2910);
- /** ISO A9 media size: 37mm x 52mm (1.46" x 2.05") */
- public static final MediaSize ISO_A9 =
- new MediaSize("ISO_A9", "android", R.string.mediaSize_iso_a9, 1460, 2050);
- /** ISO A10 media size: 26mm x 37mm (1.02" x 1.46") */
- public static final MediaSize ISO_A10 =
- new MediaSize("ISO_A10", "android", R.string.mediaSize_iso_a10, 1020, 1460);
-
- /** ISO B0 media size: 1000mm x 1414mm (39.37" x 55.67") */
- public static final MediaSize ISO_B0 =
- new MediaSize("ISO_B0", "android", R.string.mediaSize_iso_b0, 39370, 55670);
- /** ISO B1 media size: 707mm x 1000mm (27.83" x 39.37") */
- public static final MediaSize ISO_B1 =
- new MediaSize("ISO_B1", "android", R.string.mediaSize_iso_b1, 27830, 39370);
- /** ISO B2 media size: 500mm x 707mm (19.69" x 27.83") */
- public static final MediaSize ISO_B2 =
- new MediaSize("ISO_B2", "android", R.string.mediaSize_iso_b2, 19690, 27830);
- /** ISO B3 media size: 353mm x 500mm (13.90" x 19.69") */
- public static final MediaSize ISO_B3 =
- new MediaSize("ISO_B3", "android", R.string.mediaSize_iso_b3, 13900, 19690);
- /** ISO B4 media size: 250mm x 353mm (9.84" x 13.90") */
- public static final MediaSize ISO_B4 =
- new MediaSize("ISO_B4", "android", R.string.mediaSize_iso_b4, 9840, 13900);
- /** ISO B5 media size: 176mm x 250mm (6.93" x 9.84") */
- public static final MediaSize ISO_B5 =
- new MediaSize("ISO_B5", "android", R.string.mediaSize_iso_b5, 6930, 9840);
- /** ISO B6 media size: 125mm x 176mm (4.92" x 6.93") */
- public static final MediaSize ISO_B6 =
- new MediaSize("ISO_B6", "android", R.string.mediaSize_iso_b6, 4920, 6930);
- /** ISO B7 media size: 88mm x 125mm (3.46" x 4.92") */
- public static final MediaSize ISO_B7 =
- new MediaSize("ISO_B7", "android", R.string.mediaSize_iso_b7, 3460, 4920);
- /** ISO B8 media size: 62mm x 88mm (2.44" x 3.46") */
- public static final MediaSize ISO_B8 =
- new MediaSize("ISO_B8", "android", R.string.mediaSize_iso_b8, 2440, 3460);
- /** ISO B9 media size: 44mm x 62mm (1.73" x 2.44") */
- public static final MediaSize ISO_B9 =
- new MediaSize("ISO_B9", "android", R.string.mediaSize_iso_b9, 1730, 2440);
- /** ISO B10 media size: 31mm x 44mm (1.22" x 1.73") */
- public static final MediaSize ISO_B10 =
- new MediaSize("ISO_B10", "android", R.string.mediaSize_iso_b10, 1220, 1730);
-
- /** ISO C0 media size: 917mm x 1297mm (36.10" x 51.06") */
- public static final MediaSize ISO_C0 =
- new MediaSize("ISO_C0", "android", R.string.mediaSize_iso_c0, 36100, 51060);
- /** ISO C1 media size: 648mm x 917mm (25.51" x 36.10") */
- public static final MediaSize ISO_C1 =
- new MediaSize("ISO_C1", "android", R.string.mediaSize_iso_c1, 25510, 36100);
- /** ISO C2 media size: 458mm x 648mm (18.03" x 25.51") */
- public static final MediaSize ISO_C2 =
- new MediaSize("ISO_C2", "android", R.string.mediaSize_iso_c2, 18030, 25510);
- /** ISO C3 media size: 324mm x 458mm (12.76" x 18.03") */
- public static final MediaSize ISO_C3 =
- new MediaSize("ISO_C3", "android", R.string.mediaSize_iso_c3, 12760, 18030);
- /** ISO C4 media size: 229mm x 324mm (9.02" x 12.76") */
- public static final MediaSize ISO_C4 =
- new MediaSize("ISO_C4", "android", R.string.mediaSize_iso_c4, 9020, 12760);
- /** ISO C5 media size: 162mm x 229mm (6.38" x 9.02") */
- public static final MediaSize ISO_C5 =
- new MediaSize("ISO_C5", "android", R.string.mediaSize_iso_c5, 6380, 9020);
- /** ISO C6 media size: 114mm x 162mm (4.49" x 6.38") */
- public static final MediaSize ISO_C6 =
- new MediaSize("ISO_C6", "android", R.string.mediaSize_iso_c6, 4490, 6380);
- /** ISO C7 media size: 81mm x 114mm (3.19" x 4.49") */
- public static final MediaSize ISO_C7 =
- new MediaSize("ISO_C7", "android", R.string.mediaSize_iso_c7, 3190, 4490);
- /** ISO C8 media size: 57mm x 81mm (2.24" x 3.19") */
- public static final MediaSize ISO_C8 =
- new MediaSize("ISO_C8", "android", R.string.mediaSize_iso_c8, 2240, 3190);
- /** ISO C9 media size: 40mm x 57mm (1.57" x 2.24") */
- public static final MediaSize ISO_C9 =
- new MediaSize("ISO_C9", "android", R.string.mediaSize_iso_c9, 1570, 2240);
- /** ISO C10 media size: 28mm x 40mm (1.10" x 1.57") */
- public static final MediaSize ISO_C10 =
- new MediaSize("ISO_C10", "android", R.string.mediaSize_iso_c10, 1100, 1570);
+ /**
+ * ISO A0 media size: 841mm x 1189mm (33.11" x 46.81")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A0 = 1;
+
+ /**
+ * ISO A1 media size: 594mm x 841mm (23.39" x 33.11")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A1 = 2;
+
+ /**
+ *
+ *ISO A2 media size: 420mm x 594mm (16.54" x 23.39")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A2 = 3;
+
+ /**
+ * ISO A3 media size: 297mm x 420mm (11.69" x 16.54")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A3 = 4;
+
+ /**
+ * ISO A4 media size: 210mm x 297mm (8.27" x 11.69")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A4 = 5;
+
+ /**
+ * ISO A5 media size: 148mm x 210mm (5.83" x 8.27")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A5 = 6;
+
+ /**
+ * ISO A6 media size: 105mm x 148mm (4.13" x 5.83")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A6 = 7;
+
+ /**
+ * ISO A7 media size: 74mm x 105mm (2.91" x 4.13")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A7 = 8;
+
+ /**
+ * ISO A8 media size: 52mm x 74mm (2.05" x 2.91")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A8 = 9;
+
+ /**
+ * ISO A9 media size: 37mm x 52mm (1.46" x 2.05")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A9 = 10;
+
+ /**
+ * ISO A10 media size: 26mm x 37mm (1.02" x 1.46")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_A10 = 11;
+
+
+ /**
+ * ISO B0 media size: 1000mm x 1414mm (39.37" x 55.67")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B0 = 100;
+
+ /**
+ * ISO B1 media size: 707mm x 1000mm (27.83" x 39.37")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B1 = 101;
+
+ /**
+ * ISO B2 media size: 500mm x 707mm (19.69" x 27.83")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B2 = 102;
+
+ /**
+ * ISO B3 media size: 353mm x 500mm (13.90" x 19.69")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B3 = 103;
+
+ /**
+ * ISO B4 media size: 250mm x 353mm (9.84" x 13.90")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B4 = 104;
+
+ /**
+ * ISO B5 media size: 176mm x 250mm (6.93" x 9.84")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B5 = 105;
+
+ /**
+ * ISO B6 media size: 125mm x 176mm (4.92" x 6.93")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B6 = 106;
+
+ /**
+ * ISO B7 media size: 88mm x 125mm (3.46" x 4.92")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B7 = 107;
+
+ /** ISO B8 media size: 62mm x 88mm (2.44" x 3.46")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B8 = 108;
+
+ /**
+ * ISO B9 media size: 44mm x 62mm (1.73" x 2.44")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B9 = 109;
+
+ /**
+ * ISO B10 media size: 31mm x 44mm (1.22" x 1.73")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_B10 = 110;
+
+
+ /**
+ * ISO C0 media size: 917mm x 1297mm (36.10" x 51.06")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C0 = 200;
+
+ /**
+ * ISO C1 media size: 648mm x 917mm (25.51" x 36.10")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+
+ public static final int ISO_C1 = 201;
+ /**
+ * ISO C2 media size: 458mm x 648mm (18.03" x 25.51")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C2 = 202;
+
+ /**
+ * ISO C3 media size: 324mm x 458mm (12.76" x 18.03")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C3 = 203;
+
+ /**
+ * ISO C4 media size: 229mm x 324mm (9.02" x 12.76")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C4 = 204;
+
+ /**
+ * ISO C5 media size: 162mm x 229mm (6.38" x 9.02")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C5 = 205;
+
+ /**
+ * ISO C6 media size: 114mm x 162mm (4.49" x 6.38")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C6 = 206;
+
+ /**
+ * ISO C7 media size: 81mm x 114mm (3.19" x 4.49")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C7 = 207;
+
+ /**
+ * ISO C8 media size: 57mm x 81mm (2.24" x 3.19")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C8 = 208;
+
+ /**
+ * ISO C9 media size: 40mm x 57mm (1.57" x 2.24")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C9 = 209;
+
+ /**
+ * ISO C10 media size: 28mm x 40mm (1.10" x 1.57")
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int ISO_C10 = 210;
+
// North America
- /** North America Letter media size: 8.5" x 11" */
- public static final MediaSize NA_LETTER =
- new MediaSize("NA_LETTER", "android", R.string.mediaSize_na_letter, 8500, 11000);
- /** North America Government-Letter media size: 8.0" x 10.5" */
- public static final MediaSize NA_GOVT_LETTER =
- new MediaSize("NA_GOVT_LETTER", "android",
- R.string.mediaSize_na_gvrnmt_letter, 8000, 10500);
- /** North America Legal media size: 8.5" x 14" */
- public static final MediaSize NA_LEGAL =
- new MediaSize("NA_LEGAL", "android", R.string.mediaSize_na_legal, 8500, 14000);
- /** North America Junior Legal media size: 8.0" x 5.0" */
- public static final MediaSize NA_JUNIOR_LEGAL =
- new MediaSize("NA_JUNIOR_LEGAL", "android",
- R.string.mediaSize_na_junior_legal, 8000, 5000);
- /** North America Ledger media size: 17" x 11" */
- public static final MediaSize NA_LEDGER =
- new MediaSize("NA_LEDGER", "android", R.string.mediaSize_na_ledger, 17000, 11000);
- /** North America Tabloid media size: 11" x 17" */
- public static final MediaSize NA_TBLOID =
- new MediaSize("NA_TABLOID", "android",
- R.string.mediaSize_na_tabloid, 11000, 17000);
+ /**
+ * North America Letter media size: 8.5" x 11"
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int NA_LETTER = 300;
- private final String mId;
- private final String mPackageName;
- private final int mLabelResId;
- private final int mWidthMils;
- private final int mHeightMils;
+ /**
+ * North America Government-Letter media size: 8.0" x 10.5"
+ *
+ * @see #createMediaSize(PackageManager, int)
+ */
+ public static final int NA_GOVT_LETTER = 301;
/**
- * Gets the unique media size id.
+ * North America Legal media size: 8.5" x 14"
*
- * @return The unique media size id.
+ * @see #createMediaSize(PackageManager, int)
*/
- public String getId() {
- return mId;
- }
+ public static final int NA_LEGAL = 302;
/**
- * Gets the human readable media size label.
+ * North America Junior Legal media size: 8.0" x 5.0"
*
- * @return The human readable label.
+ * @see #createMediaSize(PackageManager, int)
*/
- public CharSequence getLabel(PackageManager packageManager) {
- try {
- return packageManager.getResourcesForApplication(
- mPackageName).getString(mLabelResId);
- } catch (NotFoundException nfe) {
- Log.w(LOG_TAG, "Could not load resouce" + mLabelResId
- + " from package " + mPackageName);
- } catch (NameNotFoundException nnfee) {
- Log.w(LOG_TAG, "Could not load resouce" + mLabelResId
- + " from package " + mPackageName);
- }
- return null;
- }
+ public static final int NA_JUNIOR_LEGAL = 303;
/**
- * Gets the media width in mils (thousands of an inch).
+ * North America Ledger media size: 17" x 11"
*
- * @return The media width.
+ * @see #createMediaSize(PackageManager, int)
*/
- public int getWidthMils() {
- return mWidthMils;
- }
+ public static final int NA_LEDGER = 304;
/**
- * Gets the media height in mils (thousands of an inch).
+ * North America Tabloid media size: 11" x 17"
*
- * @return The media height.
+ * @see #createMediaSize(PackageManager, int)
*/
- public int getHeightMils() {
- return mHeightMils;
+ public static final int NA_TBLOID = 305;
+
+ /**
+ * Creates a standard media size with a localized label.
+ *
+ * @param pm Package manager used to load the label.
+ * @param mediaSize Media size constant.
+ * @return A {@link MediaSize} instance with a localized label.
+ */
+ public static MediaSize createMediaSize(PackageManager pm, int mediaSize) {
+ final Resources resources;
+ try {
+ resources = pm.getResourcesForApplication("android");
+ } catch (NameNotFoundException nnfe) {
+ return null;
+ }
+ switch (mediaSize) {
+ case ISO_A0: {
+ return new MediaSize("ISO_A0", resources
+ .getString(R.string.mediaSize_iso_a0), 33110, 46810);
+ }
+ case ISO_A1: {
+ return new MediaSize("ISO_A1", resources
+ .getString(R.string.mediaSize_iso_a1), 23390, 33110);
+ }
+ case ISO_A2: {
+ return new MediaSize("ISO_A2", resources
+ .getString(R.string.mediaSize_iso_a2), 16540, 23390);
+ }
+ case ISO_A3: {
+ return new MediaSize("ISO_A3", resources
+ .getString(R.string.mediaSize_iso_a3), 11690, 16540);
+ }
+ case ISO_A4: {
+ return new MediaSize("ISO_A4", resources
+ .getString(R.string.mediaSize_iso_a4), 8270, 11690);
+ }
+ case ISO_A5: {
+ return new MediaSize("ISO_A5", resources
+ .getString(R.string.mediaSize_iso_a5), 5830, 8270);
+ }
+ case ISO_A6: {
+ return new MediaSize("ISO_A6", resources
+ .getString(R.string.mediaSize_iso_a6), 4130, 5830);
+ }
+ case ISO_A7: {
+ return new MediaSize("ISO_A7", resources
+ .getString(R.string.mediaSize_iso_a7), 2910, 4130);
+ }
+ case ISO_A8: {
+ return new MediaSize("ISO_A8", resources
+ .getString(R.string.mediaSize_iso_a8), 2050, 2910);
+ }
+ case ISO_A9: {
+ return new MediaSize("ISO_A9", resources
+ .getString(R.string.mediaSize_iso_a9), 1460, 2050);
+ }
+ case ISO_A10: {
+ return new MediaSize("ISO_A10", resources
+ .getString(R.string.mediaSize_iso_a10), 1020, 1460);
+ }
+ case ISO_B0: {
+ return new MediaSize("ISO_B0", resources
+ .getString(R.string.mediaSize_iso_b0), 39370, 55670);
+ }
+ case ISO_B1: {
+ return new MediaSize("ISO_B1", resources
+ .getString(R.string.mediaSize_iso_b1), 27830, 39370);
+ }
+ case ISO_B2: {
+ return new MediaSize("ISO_B2", resources
+ .getString(R.string.mediaSize_iso_b2), 19690, 27830);
+ }
+ case ISO_B3: {
+ return new MediaSize("ISO_B3", resources
+ .getString(R.string.mediaSize_iso_b3), 13900, 19690);
+ }
+ case ISO_B4: {
+ return new MediaSize("ISO_B4", resources
+ .getString(R.string.mediaSize_iso_b4), 9840, 13900);
+ }
+ case ISO_B5: {
+ return new MediaSize("ISO_B5", resources
+ .getString(R.string.mediaSize_iso_b5), 6930, 9840);
+ }
+ case ISO_B6: {
+ return new MediaSize("ISO_B6", resources
+ .getString(R.string.mediaSize_iso_b6), 4920, 6930);
+ }
+ case ISO_B7: {
+ return new MediaSize("ISO_B7", resources
+ .getString(R.string.mediaSize_iso_b7), 3460, 4920);
+ }
+ case ISO_B8: {
+ return new MediaSize("ISO_B8", resources
+ .getString(R.string.mediaSize_iso_b8), 2440, 3460);
+ }
+ case ISO_B9: {
+ return new MediaSize("ISO_B9", resources
+ .getString(R.string.mediaSize_iso_b9), 1730, 2440);
+ }
+ case ISO_B10: {
+ return new MediaSize("ISO_B10", resources
+ .getString(R.string.mediaSize_iso_b10), 1220, 1730);
+ }
+ case ISO_C0: {
+ return new MediaSize("ISO_C0", resources
+ .getString(R.string.mediaSize_iso_c0), 36100, 51060);
+ }
+ case ISO_C1: {
+ return new MediaSize("ISO_C1", resources
+ .getString(R.string.mediaSize_iso_c1), 25510, 36100);
+ }
+ case ISO_C2: {
+ return new MediaSize("ISO_C2", resources
+ .getString(R.string.mediaSize_iso_c2), 18030, 25510);
+ }
+ case ISO_C3: {
+ return new MediaSize("ISO_C3", resources
+ .getString(R.string.mediaSize_iso_c3), 12760, 18030);
+ }
+ case ISO_C4: {
+ return new MediaSize("ISO_C4", resources
+ .getString(R.string.mediaSize_iso_c4), 9020, 12760);
+ }
+ case ISO_C5: {
+ return new MediaSize("ISO_C5", resources
+ .getString(R.string.mediaSize_iso_c5), 6380, 9020);
+ }
+ case ISO_C6: {
+ return new MediaSize("ISO_C6", resources
+ .getString(R.string.mediaSize_iso_c6), 4490, 6380);
+ }
+ case ISO_C7: {
+ return new MediaSize("ISO_C7", resources
+ .getString(R.string.mediaSize_iso_c7), 3190, 4490);
+ }
+ case ISO_C8: {
+ return new MediaSize("ISO_C8", resources
+ .getString(R.string.mediaSize_iso_c8), 2240, 3190);
+ }
+ case ISO_C9: {
+ return new MediaSize("ISO_C9", resources
+ .getString(R.string.mediaSize_iso_c9), 1570, 2240);
+ }
+ case ISO_C10: {
+ return new MediaSize("ISO_C10", resources
+ .getString(R.string.mediaSize_iso_c10), 1100, 1570);
+ }
+ case NA_LETTER: {
+ return new MediaSize("NA_LETTER", resources
+ .getString(R.string.mediaSize_na_letter), 8500, 11000);
+ }
+ case NA_GOVT_LETTER: {
+ return new MediaSize("NA_GOVT_LETTER", resources
+ .getString(R.string.mediaSize_na_gvrnmt_letter), 8000, 10500);
+ }
+ case NA_LEGAL: {
+ return new MediaSize("NA_LEGAL", resources
+ .getString(R.string.mediaSize_na_legal), 8500, 14000);
+ }
+ case NA_JUNIOR_LEGAL: {
+ return new MediaSize("NA_JUNIOR_LEGAL", resources
+ .getString(R.string.mediaSize_na_junior_legal), 8000, 5000);
+ }
+ case NA_LEDGER: {
+ return new MediaSize("NA_LEDGER", resources
+ .getString(R.string.mediaSize_na_ledger), 17000, 11000);
+ }
+ case NA_TBLOID: {
+ return new MediaSize("NA_TABLOID", resources
+ .getString(R.string.mediaSize_na_tabloid), 11000, 17000);
+ }
+ default: {
+ throw new IllegalArgumentException("Unknown media size.");
+ }
+ }
}
+ private final String mId;
+ private final CharSequence mLabel;
+ private final int mWidthMils;
+ private final int mHeightMils;
+
/**
* Creates a new instance.
*
* @param id The unique media size id.
- * @param packageName The name of the creating package.
- * @param labelResId The resource if of a human readable label.
+ * @param label The <strong>internationalized</strong> human readable label.
* @param widthMils The width in mils (thousands of an inch).
* @param heightMils The height in mils (thousands of an inch).
*
@@ -586,16 +865,12 @@ public final class PrintAttributes implements Parcelable {
* @throws IllegalArgumentException If the widthMils is less than or equal to zero.
* @throws IllegalArgumentException If the heightMils is less than or equal to zero.
*/
- public MediaSize(String id, String packageName, int labelResId,
- int widthMils, int heightMils) {
+ public MediaSize(String id, CharSequence label, int widthMils, int heightMils) {
if (TextUtils.isEmpty(id)) {
throw new IllegalArgumentException("id cannot be empty.");
}
- if (TextUtils.isEmpty(packageName)) {
- throw new IllegalArgumentException("packageName cannot be empty.");
- }
- if (labelResId <= 0) {
- throw new IllegalArgumentException("labelResId must be greater than zero.");
+ if (TextUtils.isEmpty(label)) {
+ throw new IllegalArgumentException("label cannot be empty.");
}
if (widthMils <= 0) {
throw new IllegalArgumentException("widthMils "
@@ -605,17 +880,51 @@ public final class PrintAttributes implements Parcelable {
throw new IllegalArgumentException("heightMils "
+ "cannot be less than or euqual to zero.");
}
- mPackageName = packageName;
mId = id;
- mLabelResId = labelResId;
+ mLabel = label;
mWidthMils = widthMils;
mHeightMils = heightMils;
}
+ /**
+ * Gets the unique media size id.
+ *
+ * @return The unique media size id.
+ */
+ public String getId() {
+ return mId;
+ }
+
+ /**
+ * Gets the human readable media size label.
+ *
+ * @return The human readable label.
+ */
+ public CharSequence getLabel() {
+ return mLabel;
+ }
+
+ /**
+ * Gets the media width in mils (thousands of an inch).
+ *
+ * @return The media width.
+ */
+ public int getWidthMils() {
+ return mWidthMils;
+ }
+
+ /**
+ * Gets the media height in mils (thousands of an inch).
+ *
+ * @return The media height.
+ */
+ public int getHeightMils() {
+ return mHeightMils;
+ }
+
void writeToParcel(Parcel parcel) {
parcel.writeString(mId);
- parcel.writeString(mPackageName);
- parcel.writeInt(mLabelResId);
+ parcel.writeCharSequence(mLabel);
parcel.writeInt(mWidthMils);
parcel.writeInt(mHeightMils);
}
@@ -623,8 +932,7 @@ public final class PrintAttributes implements Parcelable {
static MediaSize createFromParcel(Parcel parcel) {
return new MediaSize(
parcel.readString(),
- parcel.readString(),
- parcel.readInt(),
+ parcel.readCharSequence(),
parcel.readInt(),
parcel.readInt());
}
@@ -634,8 +942,7 @@ public final class PrintAttributes implements Parcelable {
StringBuilder builder = new StringBuilder();
builder.append("MediaSize{");
builder.append("id: ").append(mId);
- builder.append(", packageName: ").append(mPackageName);
- builder.append(", labelResId: ").append(mLabelResId);
+ builder.append(", label: ").append(mLabel);
builder.append(", heightMils: ").append(mHeightMils);
builder.append(", widthMils: ").append(mWidthMils);
builder.append("}");
@@ -647,15 +954,46 @@ public final class PrintAttributes implements Parcelable {
* This class specifies a supported resolution in dpi (dots per inch).
*/
public static final class Resolution {
- private static final String LOG_TAG = "Resolution";
-
private final String mId;
- private final String mPackageName;
- private final int mLabelResId;
+ private final CharSequence mLabel;
private final int mHorizontalDpi;
private final int mVerticalDpi;
/**
+ * Creates a new instance.
+ *
+ * @param id The unique resolution id.
+ * @param label The <strong>internationalized</strong> human readable label.
+ * @param horizontalDpi The horizontal resolution in dpi.
+ * @param verticalDpi The vertical resolution in dpi.
+ *
+ * @throws IllegalArgumentException If the id is empty.
+ * @throws IllegalArgumentException If the label is empty.
+ * @throws IllegalArgumentException If the horizontalDpi is less than or equal to zero.
+ * @throws IllegalArgumentException If the verticalDpi is less than or equal to zero.
+ */
+ public Resolution(String id, CharSequence label, int horizontalDpi, int verticalDpi) {
+ if (TextUtils.isEmpty(id)) {
+ throw new IllegalArgumentException("id cannot be empty.");
+ }
+ if (TextUtils.isEmpty(label)) {
+ throw new IllegalArgumentException("label cannot be empty.");
+ }
+ if (horizontalDpi <= 0) {
+ throw new IllegalArgumentException("horizontalDpi "
+ + "cannot be less than or equal to zero.");
+ }
+ if (verticalDpi <= 0) {
+ throw new IllegalArgumentException("verticalDpi"
+ + " cannot be less than or equal to zero.");
+ }
+ mId = id;
+ mLabel = label;
+ mHorizontalDpi = horizontalDpi;
+ mVerticalDpi = verticalDpi;
+ }
+
+ /**
* Gets the unique resolution id.
*
* @return The unique resolution id.
@@ -670,17 +1008,7 @@ public final class PrintAttributes implements Parcelable {
* @return The human readable label.
*/
public CharSequence getLabel(PackageManager packageManager) {
- try {
- return packageManager.getResourcesForApplication(
- mPackageName).getString(mLabelResId);
- } catch (NotFoundException nfe) {
- Log.w(LOG_TAG, "Could not load resouce" + mLabelResId
- + " from package " + mPackageName);
- } catch (NameNotFoundException nnfee) {
- Log.w(LOG_TAG, "Could not load resouce" + mLabelResId
- + " from package " + mPackageName);
- }
- return null;
+ return mLabel;
}
/**
@@ -701,50 +1029,9 @@ public final class PrintAttributes implements Parcelable {
return mVerticalDpi;
}
- /**
- * Creates a new instance.
- *
- * @param id The unique resolution id.
- * @param packageName The name of the creating package.
- * @param labelResId The resource id of a human readable label.
- * @param horizontalDpi The horizontal resolution in dpi.
- * @param verticalDpi The vertical resolution in dpi.
- *
- * @throws IllegalArgumentException If the id is empty.
- * @throws IllegalArgumentException If the label is empty.
- * @throws IllegalArgumentException If the horizontalDpi is less than or equal to zero.
- * @throws IllegalArgumentException If the verticalDpi is less than or equal to zero.
- */
- public Resolution(String id, String packageName, int labelResId,
- int horizontalDpi, int verticalDpi) {
- if (TextUtils.isEmpty(id)) {
- throw new IllegalArgumentException("id cannot be empty.");
- }
- if (TextUtils.isEmpty(packageName)) {
- throw new IllegalArgumentException("packageName cannot be empty.");
- }
- if (labelResId <= 0) {
- throw new IllegalArgumentException("labelResId must be greater than zero.");
- }
- if (horizontalDpi <= 0) {
- throw new IllegalArgumentException("horizontalDpi "
- + "cannot be less than or equal to zero.");
- }
- if (verticalDpi <= 0) {
- throw new IllegalArgumentException("verticalDpi"
- + " cannot be less than or equal to zero.");
- }
- mId = id;
- mPackageName = packageName;
- mLabelResId = labelResId;
- mHorizontalDpi = horizontalDpi;
- mVerticalDpi = verticalDpi;
- }
-
void writeToParcel(Parcel parcel) {
parcel.writeString(mId);
- parcel.writeString(mPackageName);
- parcel.writeInt(mLabelResId);
+ parcel.writeCharSequence(mLabel);
parcel.writeInt(mHorizontalDpi);
parcel.writeInt(mVerticalDpi);
}
@@ -752,8 +1039,7 @@ public final class PrintAttributes implements Parcelable {
static Resolution createFromParcel(Parcel parcel) {
return new Resolution(
parcel.readString(),
- parcel.readString(),
- parcel.readInt(),
+ parcel.readCharSequence(),
parcel.readInt(),
parcel.readInt());
}
@@ -763,8 +1049,7 @@ public final class PrintAttributes implements Parcelable {
StringBuilder builder = new StringBuilder();
builder.append("Resolution{");
builder.append("id: ").append(mId);
- builder.append(", packageName: ").append(mPackageName);
- builder.append(", labelResId: ").append(mLabelResId);
+ builder.append(", label: ").append(mLabel);
builder.append(", horizontalDpi: ").append(mHorizontalDpi);
builder.append(", verticalDpi: ").append(mVerticalDpi);
builder.append("}");
@@ -782,6 +1067,38 @@ public final class PrintAttributes implements Parcelable {
private final int mBottomMils;
/**
+ * Creates a new instance.
+ *
+ * @param leftMils The left margin in mils (thousands of an inch).
+ * @param topMils The top margin in mils (thousands of an inch).
+ * @param rightMils The right margin in mils (thousands of an inch).
+ * @param bottomMils The bottom margin in mils (thousands of an inch).
+ *
+ * @throws IllegalArgumentException If the leftMils is less than zero.
+ * @throws IllegalArgumentException If the topMils is less than zero.
+ * @throws IllegalArgumentException If the rightMils is less than zero.
+ * @throws IllegalArgumentException If the bottomMils is less than zero.
+ */
+ public Margins(int leftMils, int topMils, int rightMils, int bottomMils) {
+ if (leftMils < 0) {
+ throw new IllegalArgumentException("leftMils cannot be less than zero.");
+ }
+ if (topMils < 0) {
+ throw new IllegalArgumentException("topMils cannot be less than zero.");
+ }
+ if (rightMils < 0) {
+ throw new IllegalArgumentException("rightMils cannot be less than zero.");
+ }
+ if (bottomMils < 0) {
+ throw new IllegalArgumentException("bottomMils cannot be less than zero.");
+ }
+ mTopMils = topMils;
+ mLeftMils = leftMils;
+ mRightMils = rightMils;
+ mBottomMils = bottomMils;
+ }
+
+ /**
* Gets the left margin in mils (thousands of an inch).
*
* @return The left margin.
@@ -817,38 +1134,6 @@ public final class PrintAttributes implements Parcelable {
return mBottomMils;
}
- /**
- * Creates a new instance.
- *
- * @param leftMils The left margin in mils (thousands of an inch).
- * @param topMils The top margin in mils (thousands of an inch).
- * @param rightMils The right margin in mils (thousands of an inch).
- * @param bottomMils The bottom margin in mils (thousands of an inch).
- *
- * @throws IllegalArgumentException If the leftMils is less than zero.
- * @throws IllegalArgumentException If the topMils is less than zero.
- * @throws IllegalArgumentException If the rightMils is less than zero.
- * @throws IllegalArgumentException If the bottomMils is less than zero.
- */
- public Margins(int leftMils, int topMils, int rightMils, int bottomMils) {
- if (leftMils < 0) {
- throw new IllegalArgumentException("leftMils cannot be less than zero.");
- }
- if (topMils < 0) {
- throw new IllegalArgumentException("topMils cannot be less than zero.");
- }
- if (rightMils < 0) {
- throw new IllegalArgumentException("rightMils cannot be less than zero.");
- }
- if (bottomMils < 0) {
- throw new IllegalArgumentException("bottomMils cannot be less than zero.");
- }
- mTopMils = topMils;
- mLeftMils = leftMils;
- mRightMils = rightMils;
- mBottomMils = bottomMils;
- }
-
void writeToParcel(Parcel parcel) {
parcel.writeInt(mLeftMils);
parcel.writeInt(mTopMils);
@@ -881,11 +1166,28 @@ public final class PrintAttributes implements Parcelable {
* Represents a printer tray.
*/
public static final class Tray {
- private static final String LOG_TAG = "Tray";
-
private final String mId;
- private final String mPackageName;
- private final int mLabelResId;
+ private final CharSequence mLabel;
+
+ /**
+ * Creates a new instance.
+ *
+ * @param id The unique tray id.
+ * @param label The <strong>internationalized</strong> human readable label.
+ *
+ * @throws IllegalArgumentException If the id is empty.
+ * @throws IllegalArgumentException If the label is empty.
+ */
+ public Tray(String id, CharSequence label) {
+ if (TextUtils.isEmpty(id)) {
+ throw new IllegalArgumentException("id cannot be empty.");
+ }
+ if (TextUtils.isEmpty(label)) {
+ throw new IllegalArgumentException("label cannot be empty.");
+ }
+ mId = id;
+ mLabel = label;
+ }
/**
* Gets the unique tray id.
@@ -902,55 +1204,18 @@ public final class PrintAttributes implements Parcelable {
* @return The human readable label.
*/
public CharSequence getLabel(PackageManager packageManager) {
- try {
- return packageManager.getResourcesForApplication(
- mPackageName).getString(mLabelResId);
- } catch (NotFoundException nfe) {
- Log.w(LOG_TAG, "Could not load resouce" + mLabelResId
- + " from package " + mPackageName);
- } catch (NameNotFoundException nnfee) {
- Log.w(LOG_TAG, "Could not load resouce" + mLabelResId
- + " from package " + mPackageName);
- }
- return null;
- }
-
- /**
- * Creates a new instance.
- *
- * @param id The unique tray id.
- * @param packageName The name of the creating package.
- * @param labelResId The resource id of a human readable label.
- *
- * @throws IllegalArgumentException If the id is empty.
- * @throws IllegalArgumentException If the label is empty.
- */
- public Tray(String id, String packageName, int labelResId) {
- if (TextUtils.isEmpty(id)) {
- throw new IllegalArgumentException("id cannot be empty.");
- }
- if (TextUtils.isEmpty(packageName)) {
- throw new IllegalArgumentException("packageName cannot be empty.");
- }
- if (labelResId <= 0) {
- throw new IllegalArgumentException("label must be greater than zero.");
- }
- mId = id;
- mPackageName = packageName;
- mLabelResId = labelResId;
+ return mLabel;
}
void writeToParcel(Parcel parcel) {
parcel.writeString(mId);
- parcel.writeString(mPackageName);
- parcel.writeInt(mLabelResId);
+ parcel.writeCharSequence(mLabel);
}
static Tray createFromParcel(Parcel parcel) {
return new Tray(
parcel.readString(),
- parcel.readString(),
- parcel.readInt());
+ parcel.readCharSequence());
}
@Override
@@ -959,8 +1224,7 @@ public final class PrintAttributes implements Parcelable {
builder.append("Tray{");
builder.append("id: ").append(mId);
builder.append("id: ").append(mId);
- builder.append(", packageName: ").append(mPackageName);
- builder.append(", labelResId: ").append(mLabelResId);
+ builder.append(", label: ").append(mLabel);
builder.append("}");
return builder.toString();
}
diff --git a/core/java/android/print/PrintManager.java b/core/java/android/print/PrintManager.java
index 8913daa..5ca19d4 100644
--- a/core/java/android/print/PrintManager.java
+++ b/core/java/android/print/PrintManager.java
@@ -166,7 +166,7 @@ public final class PrintManager {
* @see PrintJob
*/
public PrintJob print(String printJobName, File pdfFile, PrintAttributes attributes) {
- FileDocumentAdapter documentAdapter = new FileDocumentAdapter(pdfFile);
+ FileDocumentAdapter documentAdapter = new FileDocumentAdapter(mContext, pdfFile);
return print(printJobName, documentAdapter, attributes);
}