summaryrefslogtreecommitdiffstats
path: root/core/java/android/print
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/print')
-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);
}