Loading core/java/android/print/PrintJobInfo.java +88 −28 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.print; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -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; Loading @@ -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) { Loading @@ -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); 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(); } /** Loading Loading @@ -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; Loading @@ -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.writeParcelable(mAttributes, flags); parcel.writeParcelable(mDocumentInfo, 0); parcel.writeInt(mCanceling ? 1 : 0); parcel.writeBundle(mAdvancedOptions); } @Override Loading @@ -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(); } Loading Loading @@ -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); } /** Loading @@ -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); } /** Loading core/java/android/printservice/PrintJob.java +3 −3 Original line number Diff line number Diff line Loading @@ -321,7 +321,7 @@ public final class PrintJob { */ public String getAdvancedStringOption(String key) { PrintService.throwIfNotCalledOnMainThread(); return null; return getInfo().getAdvancedStringOption(key); } /** Loading @@ -333,7 +333,7 @@ public final class PrintJob { */ public boolean hasAdvancedOption(String key) { PrintService.throwIfNotCalledOnMainThread(); return false; return getInfo().hasAdvancedOption(key); } /** Loading @@ -344,7 +344,7 @@ public final class PrintJob { */ public int getAdvancedIntOption(String key) { PrintService.throwIfNotCalledOnMainThread(); return 0; return getInfo().getAdvancedIntOption(key); } @Override Loading core/java/android/printservice/PrintService.java +8 −0 Original line number Diff line number Diff line Loading @@ -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"; Loading core/java/android/printservice/PrintServiceInfo.java +28 −2 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public final class PrintServiceInfo implements Parcelable { private final String mAddPrintersActivityName; private final String mAdvancedPrintOptionsActivityName; /** * Creates a new instance. * Loading @@ -70,6 +72,7 @@ public final class PrintServiceInfo implements Parcelable { mResolveInfo = parcel.readParcelable(null); mSettingsActivityName = parcel.readString(); mAddPrintersActivityName = parcel.readString(); mAdvancedPrintOptionsActivityName = parcel.readString(); } /** Loading @@ -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; } /** Loading @@ -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(); Loading Loading @@ -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) { Loading @@ -144,7 +153,8 @@ public final class PrintServiceInfo implements Parcelable { } } return new PrintServiceInfo(resolveInfo, settingsActivityName, addPrintersActivityName); return new PrintServiceInfo(resolveInfo, settingsActivityName, addPrintersActivityName, advancedPrintOptionsActivityName); } /** Loading Loading @@ -194,6 +204,19 @@ public final class PrintServiceInfo implements Parcelable { return mAddPrintersActivityName; } /** * 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} */ Loading @@ -206,6 +229,7 @@ public final class PrintServiceInfo implements Parcelable { parcel.writeParcelable(mResolveInfo, 0); parcel.writeString(mSettingsActivityName); parcel.writeString(mAddPrintersActivityName); parcel.writeString(mAdvancedPrintOptionsActivityName); } @Override Loading Loading @@ -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(); } Loading core/res/res/values/attrs.xml +5 −1 Original line number Diff line number Diff line Loading @@ -2622,7 +2622,11 @@ add printers to this print service. --> <attr name="addPrintersActivity" format="string"/> <!-- Fully qualified class name of an activity with advanced print options specific to this print service. --> specific to this print service. If this activity is specified the system will allow the user a choice to open it given the currently selected printer has advanced options which is specified by the print service via {@link android.print.PrinterInfo.Builder#setHasAdvancedOptions(boolean)}. --> <attr name="advancedPrintOptionsActivity" format="string"/> <!-- The vendor name if this print service is vendor specific. --> <attr name="vendor" format="string"/> Loading Loading
core/java/android/print/PrintJobInfo.java +88 −28 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.print; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; Loading Loading @@ -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; Loading @@ -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) { Loading @@ -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); 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(); } /** Loading Loading @@ -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; Loading @@ -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.writeParcelable(mAttributes, flags); parcel.writeParcelable(mDocumentInfo, 0); parcel.writeInt(mCanceling ? 1 : 0); parcel.writeBundle(mAdvancedOptions); } @Override Loading @@ -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(); } Loading Loading @@ -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); } /** Loading @@ -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); } /** Loading
core/java/android/printservice/PrintJob.java +3 −3 Original line number Diff line number Diff line Loading @@ -321,7 +321,7 @@ public final class PrintJob { */ public String getAdvancedStringOption(String key) { PrintService.throwIfNotCalledOnMainThread(); return null; return getInfo().getAdvancedStringOption(key); } /** Loading @@ -333,7 +333,7 @@ public final class PrintJob { */ public boolean hasAdvancedOption(String key) { PrintService.throwIfNotCalledOnMainThread(); return false; return getInfo().hasAdvancedOption(key); } /** Loading @@ -344,7 +344,7 @@ public final class PrintJob { */ public int getAdvancedIntOption(String key) { PrintService.throwIfNotCalledOnMainThread(); return 0; return getInfo().getAdvancedIntOption(key); } @Override Loading
core/java/android/printservice/PrintService.java +8 −0 Original line number Diff line number Diff line Loading @@ -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"; Loading
core/java/android/printservice/PrintServiceInfo.java +28 −2 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ public final class PrintServiceInfo implements Parcelable { private final String mAddPrintersActivityName; private final String mAdvancedPrintOptionsActivityName; /** * Creates a new instance. * Loading @@ -70,6 +72,7 @@ public final class PrintServiceInfo implements Parcelable { mResolveInfo = parcel.readParcelable(null); mSettingsActivityName = parcel.readString(); mAddPrintersActivityName = parcel.readString(); mAdvancedPrintOptionsActivityName = parcel.readString(); } /** Loading @@ -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; } /** Loading @@ -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(); Loading Loading @@ -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) { Loading @@ -144,7 +153,8 @@ public final class PrintServiceInfo implements Parcelable { } } return new PrintServiceInfo(resolveInfo, settingsActivityName, addPrintersActivityName); return new PrintServiceInfo(resolveInfo, settingsActivityName, addPrintersActivityName, advancedPrintOptionsActivityName); } /** Loading Loading @@ -194,6 +204,19 @@ public final class PrintServiceInfo implements Parcelable { return mAddPrintersActivityName; } /** * 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} */ Loading @@ -206,6 +229,7 @@ public final class PrintServiceInfo implements Parcelable { parcel.writeParcelable(mResolveInfo, 0); parcel.writeString(mSettingsActivityName); parcel.writeString(mAddPrintersActivityName); parcel.writeString(mAdvancedPrintOptionsActivityName); } @Override Loading Loading @@ -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(); } Loading
core/res/res/values/attrs.xml +5 −1 Original line number Diff line number Diff line Loading @@ -2622,7 +2622,11 @@ add printers to this print service. --> <attr name="addPrintersActivity" format="string"/> <!-- Fully qualified class name of an activity with advanced print options specific to this print service. --> specific to this print service. If this activity is specified the system will allow the user a choice to open it given the currently selected printer has advanced options which is specified by the print service via {@link android.print.PrinterInfo.Builder#setHasAdvancedOptions(boolean)}. --> <attr name="advancedPrintOptionsActivity" format="string"/> <!-- The vendor name if this print service is vendor specific. --> <attr name="vendor" format="string"/> Loading