diff options
author | Svetoslav <svetoslavganov@google.com> | 2013-10-28 15:15:45 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-10-28 15:15:45 -0700 |
commit | cdc2280a6e1837d3813cb5eab9a11c4f4efe8dc9 (patch) | |
tree | d9e125703ce9dffdf29049b57c8ec96698a27b97 /core/java/android | |
parent | 128537f600e14c941656e648205987083f4096c3 (diff) | |
parent | 0298ebb2db5b7c24d68fd3817b11e2f887471d0c (diff) | |
download | frameworks_base-cdc2280a6e1837d3813cb5eab9a11c4f4efe8dc9.zip frameworks_base-cdc2280a6e1837d3813cb5eab9a11c4f4efe8dc9.tar.gz frameworks_base-cdc2280a6e1837d3813cb5eab9a11c4f4efe8dc9.tar.bz2 |
am 0298ebb2: am 60fb1e28: am 714ba345: Merge "Complete implementation of the advanced print options." into klp-dev
* commit '0298ebb2db5b7c24d68fd3817b11e2f887471d0c':
Complete implementation of the advanced print options.
Diffstat (limited to 'core/java/android')
-rw-r--r-- | core/java/android/print/PrintJobInfo.java | 116 | ||||
-rw-r--r-- | core/java/android/printservice/PrintJob.java | 6 | ||||
-rw-r--r-- | core/java/android/printservice/PrintService.java | 8 | ||||
-rw-r--r-- | core/java/android/printservice/PrintServiceInfo.java | 30 |
4 files changed, 127 insertions, 33 deletions
diff --git a/core/java/android/print/PrintJobInfo.java b/core/java/android/print/PrintJobInfo.java index c2f190d..63f94fe 100644 --- a/core/java/android/print/PrintJobInfo.java +++ b/core/java/android/print/PrintJobInfo.java @@ -16,6 +16,7 @@ package android.print; +import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; @@ -160,6 +161,9 @@ public final class PrintJobInfo implements Parcelable { /** Information about the printed document. */ private PrintDocumentInfo mDocumentInfo; + /** Advanced printer specific options. */ + private Bundle mAdvancedOptions; + /** Whether we are trying to cancel this print job. */ private boolean mCanceling; @@ -184,6 +188,7 @@ public final class PrintJobInfo implements Parcelable { mAttributes = other.mAttributes; mDocumentInfo = other.mDocumentInfo; mCanceling = other.mCanceling; + mAdvancedOptions = other.mAdvancedOptions; } private PrintJobInfo(Parcel parcel) { @@ -197,20 +202,17 @@ public final class PrintJobInfo implements Parcelable { mCreationTime = parcel.readLong(); mCopies = parcel.readInt(); mStateReason = parcel.readString(); - if (parcel.readInt() == 1) { - Parcelable[] parcelables = parcel.readParcelableArray(null); + Parcelable[] parcelables = parcel.readParcelableArray(null); + if (parcelables != null) { mPageRanges = new PageRange[parcelables.length]; for (int i = 0; i < parcelables.length; i++) { mPageRanges[i] = (PageRange) parcelables[i]; } } - if (parcel.readInt() == 1) { - mAttributes = PrintAttributes.CREATOR.createFromParcel(parcel); - } - if (parcel.readInt() == 1) { - mDocumentInfo = PrintDocumentInfo.CREATOR.createFromParcel(parcel); - } + mAttributes = (PrintAttributes) parcel.readParcelable(null); + mDocumentInfo = (PrintDocumentInfo) parcel.readParcelable(null); mCanceling = (parcel.readInt() == 1); + mAdvancedOptions = parcel.readBundle(); } /** @@ -521,6 +523,71 @@ public final class PrintJobInfo implements Parcelable { mCanceling = cancelling; } + /** + * Gets whether this job has a given advanced (printer specific) print + * option. + * + * @param key The option key. + * @return Whether the option is present. + * + * @hide + */ + public boolean hasAdvancedOption(String key) { + return mAdvancedOptions != null && mAdvancedOptions.containsKey(key); + } + + /** + * Gets the value of an advanced (printer specific) print option. + * + * @param key The option key. + * @return The option value. + * + * @hide + */ + public String getAdvancedStringOption(String key) { + if (mAdvancedOptions != null) { + return mAdvancedOptions.getString(key); + } + return null; + } + + /** + * Gets the value of an advanced (printer specific) print option. + * + * @param key The option key. + * @return The option value. + * + * @hide + */ + public int getAdvancedIntOption(String key) { + if (mAdvancedOptions != null) { + return mAdvancedOptions.getInt(key); + } + return 0; + } + + /** + * Gets the advanced options. + * + * @return The advanced options. + * + * @hide + */ + public Bundle getAdvancedOptions() { + return mAdvancedOptions; + } + + /** + * Sets the advanced options. + * + * @param options The advanced options. + * + * @hide + */ + public void setAdvancedOptions(Bundle options) { + mAdvancedOptions = options; + } + @Override public int describeContents() { return 0; @@ -538,25 +605,11 @@ public final class PrintJobInfo implements Parcelable { parcel.writeLong(mCreationTime); parcel.writeInt(mCopies); parcel.writeString(mStateReason); - if (mPageRanges != null) { - parcel.writeInt(1); - parcel.writeParcelableArray(mPageRanges, flags); - } else { - parcel.writeInt(0); - } - if (mAttributes != null) { - parcel.writeInt(1); - mAttributes.writeToParcel(parcel, flags); - } else { - parcel.writeInt(0); - } - if (mDocumentInfo != null) { - parcel.writeInt(1); - mDocumentInfo.writeToParcel(parcel, flags); - } else { - parcel.writeInt(0); - } + parcel.writeParcelableArray(mPageRanges, flags); + parcel.writeParcelable(mAttributes, flags); + parcel.writeParcelable(mDocumentInfo, 0); parcel.writeInt(mCanceling ? 1 : 0); + parcel.writeBundle(mAdvancedOptions); } @Override @@ -577,6 +630,7 @@ public final class PrintJobInfo implements Parcelable { builder.append(", cancelling: " + mCanceling); builder.append(", pages: " + (mPageRanges != null ? Arrays.toString(mPageRanges) : null)); + builder.append(", hasAdvancedOptions: " + (mAdvancedOptions != null)); builder.append("}"); return builder.toString(); } @@ -663,7 +717,10 @@ public final class PrintJobInfo implements Parcelable { * @param value The option value. */ public void putAdvancedOption(String key, String value) { - + if (mPrototype.mAdvancedOptions == null) { + mPrototype.mAdvancedOptions = new Bundle(); + } + mPrototype.mAdvancedOptions.putString(key, value); } /** @@ -673,7 +730,10 @@ public final class PrintJobInfo implements Parcelable { * @param value The option value. */ public void putAdvancedOption(String key, int value) { - + if (mPrototype.mAdvancedOptions == null) { + mPrototype.mAdvancedOptions = new Bundle(); + } + mPrototype.mAdvancedOptions.putInt(key, value); } /** diff --git a/core/java/android/printservice/PrintJob.java b/core/java/android/printservice/PrintJob.java index fdeb373..6fa0bdd 100644 --- a/core/java/android/printservice/PrintJob.java +++ b/core/java/android/printservice/PrintJob.java @@ -321,7 +321,7 @@ public final class PrintJob { */ public String getAdvancedStringOption(String key) { PrintService.throwIfNotCalledOnMainThread(); - return null; + return getInfo().getAdvancedStringOption(key); } /** @@ -333,7 +333,7 @@ public final class PrintJob { */ public boolean hasAdvancedOption(String key) { PrintService.throwIfNotCalledOnMainThread(); - return false; + return getInfo().hasAdvancedOption(key); } /** @@ -344,7 +344,7 @@ public final class PrintJob { */ public int getAdvancedIntOption(String key) { PrintService.throwIfNotCalledOnMainThread(); - return 0; + return getInfo().getAdvancedIntOption(key); } @Override diff --git a/core/java/android/printservice/PrintService.java b/core/java/android/printservice/PrintService.java index 0fc5f7f..eb0ac2e 100644 --- a/core/java/android/printservice/PrintService.java +++ b/core/java/android/printservice/PrintService.java @@ -209,6 +209,14 @@ public abstract class PrintService extends Service { * PrintJob#getAdvancedStringOption(String) PrintJob.getAdvancedStringOption(String)} * and {@link PrintJob#getAdvancedIntOption(String) PrintJob.getAdvancedIntOption(String)}. * </p> + * <p> + * If the advanced print options activity offers changes to the standard print + * options, you can get the current {@link android.print.PrinterInfo} using the + * "android.intent.extra.print.EXTRA_PRINTER_INFO" extra which will allow you to + * present the user with UI options supported by the current printer. For example, + * if the current printer does not support a give media size, you should not + * offer it in the advanced print options dialog. + * </p> */ public static final String EXTRA_PRINT_JOB_INFO = "android.intent.extra.print.PRINT_JOB_INFO"; diff --git a/core/java/android/printservice/PrintServiceInfo.java b/core/java/android/printservice/PrintServiceInfo.java index 8e9636c..a2c6c09 100644 --- a/core/java/android/printservice/PrintServiceInfo.java +++ b/core/java/android/printservice/PrintServiceInfo.java @@ -60,6 +60,8 @@ public final class PrintServiceInfo implements Parcelable { private final String mAddPrintersActivityName; + private final String mAdvancedPrintOptionsActivityName; + /** * Creates a new instance. * @@ -70,6 +72,7 @@ public final class PrintServiceInfo implements Parcelable { mResolveInfo = parcel.readParcelable(null); mSettingsActivityName = parcel.readString(); mAddPrintersActivityName = parcel.readString(); + mAdvancedPrintOptionsActivityName = parcel.readString(); } /** @@ -78,14 +81,16 @@ public final class PrintServiceInfo implements Parcelable { * @param resolveInfo The service resolve info. * @param settingsActivityName Optional settings activity name. * @param addPrintersActivityName Optional add printers activity name. + * @param advancedPrintOptionsActivityName Optional advanced print options activity. */ public PrintServiceInfo(ResolveInfo resolveInfo, String settingsActivityName, - String addPrintersActivityName) { + String addPrintersActivityName, String advancedPrintOptionsActivityName) { mId = new ComponentName(resolveInfo.serviceInfo.packageName, resolveInfo.serviceInfo.name).flattenToString(); mResolveInfo = resolveInfo; mSettingsActivityName = settingsActivityName; mAddPrintersActivityName = addPrintersActivityName; + mAdvancedPrintOptionsActivityName = advancedPrintOptionsActivityName; } /** @@ -99,6 +104,7 @@ public final class PrintServiceInfo implements Parcelable { public static PrintServiceInfo create(ResolveInfo resolveInfo, Context context) { String settingsActivityName = null; String addPrintersActivityName = null; + String advancedPrintOptionsActivityName = null; XmlResourceParser parser = null; PackageManager packageManager = context.getPackageManager(); @@ -128,6 +134,9 @@ public final class PrintServiceInfo implements Parcelable { addPrintersActivityName = attributes.getString( com.android.internal.R.styleable.PrintService_addPrintersActivity); + advancedPrintOptionsActivityName = attributes.getString(com.android.internal + .R.styleable.PrintService_advancedPrintOptionsActivity); + attributes.recycle(); } } catch (IOException ioe) { @@ -144,7 +153,8 @@ public final class PrintServiceInfo implements Parcelable { } } - return new PrintServiceInfo(resolveInfo, settingsActivityName, addPrintersActivityName); + return new PrintServiceInfo(resolveInfo, settingsActivityName, + addPrintersActivityName, advancedPrintOptionsActivityName); } /** @@ -195,6 +205,19 @@ public final class PrintServiceInfo implements Parcelable { } /** + * The advanced print options activity name. + * <p> + * <strong>Statically set from + * {@link PrintService#SERVICE_META_DATA meta-data}.</strong> + * </p> + * + * @return The advanced print options activity name. + */ + public String getAdvancedOptionsActivityName() { + return mAdvancedPrintOptionsActivityName; + } + + /** * {@inheritDoc} */ public int describeContents() { @@ -206,6 +229,7 @@ public final class PrintServiceInfo implements Parcelable { parcel.writeParcelable(mResolveInfo, 0); parcel.writeString(mSettingsActivityName); parcel.writeString(mAddPrintersActivityName); + parcel.writeString(mAdvancedPrintOptionsActivityName); } @Override @@ -243,6 +267,8 @@ public final class PrintServiceInfo implements Parcelable { builder.append(", resolveInfo=").append(mResolveInfo); builder.append(", settingsActivityName=").append(mSettingsActivityName); builder.append(", addPrintersActivityName=").append(mAddPrintersActivityName); + builder.append(", advancedPrintOptionsActivityName=") + .append(mAdvancedPrintOptionsActivityName); builder.append("}"); return builder.toString(); } |