diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/print/FileDocumentAdapter.java | 50 | ||||
| -rw-r--r-- | core/java/android/print/PrintAttributes.java | 894 | ||||
| -rw-r--r-- | core/java/android/print/PrintManager.java | 2 |
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); } |
