/* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.print; import android.os.Parcel; import android.os.Parcelable; /** * This class represents the description of a print job. */ public final class PrintJobInfo implements Parcelable { /** Undefined print job id. */ public static final int PRINT_JOB_ID_UNDEFINED = -1; /** * Constant for matching any print job state. * * @hide */ public static final int STATE_ANY = -1; /** * Print job state: The print job is being created but not yet * ready to be printed. *
* Next valid states: {@link #STATE_QUEUED} *
*/ public static final int STATE_CREATED = 1; /** * Print job status: The print jobs is created, it is ready * to be printed and should be processed. ** Next valid states: {@link #STATE_STARTED}, {@link #STATE_FAILED}, * {@link #STATE_CANCELED} *
*/ public static final int STATE_QUEUED = 2; /** * Print job status: The print job is being printed. ** Next valid states: {@link #STATE_COMPLETED}, {@link #STATE_FAILED}, * {@link #STATE_CANCELED} *
*/ public static final int STATE_STARTED = 3; /** * Print job status: The print job was successfully printed. * This is a terminal state. ** Next valid states: None *
*/ public static final int STATE_COMPLETED = 4; /** * Print job status: The print job was printing but printing failed. * This is a terminal state. ** Next valid states: None *
*/ public static final int STATE_FAILED = 5; /** * Print job status: The print job was canceled. * This is a terminal state. ** Next valid states: None *
*/ public static final int STATE_CANCELED = 6; /** The unique print job id. */ private int mId; /** The human readable print job label. */ private CharSequence mLabel; /** The unique id of the printer. */ private PrinterId mPrinterId; /** The status of the print job. */ private int mState; /** The id of the app that created the job. */ private int mAppId; /** The id of the user that created the job. */ private int mUserId; /** Optional tag assigned by a print service.*/ private String mTag; /** The pages to print */ private PageRange[] mPageRanges; /** The print job attributes size. */ private PrintAttributes mAttributes; /** * Gets the unique print job id. * * @return The id. */ public int getId() { return mId; } /** * Sets the unique print job id. * * @param The job id. * * @hide */ public void setId(int id) { this.mId = id; } /** * Gets the human readable job label. * * @return The label. */ public CharSequence getLabel() { return mLabel; } /** * Sets the human readable job label. * * @param label The label. * * @hide */ public void setLabel(CharSequence label) { mLabel = label; } /** * Gets the unique target printer id. * * @return The target printer id. */ public PrinterId getPrinterId() { return mPrinterId; } /** * Sets the unique target pritner id. * * @param printerId The target printer id. * * @hide */ public void setPrinterId(PrinterId printerId) { mPrinterId = printerId; } /** * Gets the current job state. * * @return The job state. */ public int getState() { return mState; } /** * Sets the current job state. * * @param state The job state. * * @hide */ public void setState(int state) { mState = state; } /** * Sets the owning application id. * * @return The owning app id. * * @hide */ public int getAppId() { return mAppId; } /** * Sets the owning application id. * * @param appId The owning app id. * * @hide */ public void setAppId(int appId) { mAppId = appId; } /** * Gets the owning user id. * * @return The user id. * * @hide */ public int getUserId() { return mUserId; } /** * Sets the owning user id. * * @param userId The user id. * * @hide */ public void setUserId(int userId) { mUserId = userId; } /** * Gets the optional tag assigned by a print service. * * @return The tag. */ public String getTag() { return mTag; } /** * Sets the optional tag assigned by a print service. * * @param tag The tag. * * @hide */ public void setTag(String tag) { mTag = tag; } /** * Gets the included page ranges. * * @return The included page ranges ornull
if not set.
*/
public PageRange[] getPageRanges() {
return mPageRanges;
}
/**
* Sets the included page ranges.
*
* @return The included page ranges.
*
* @hide
*/
public void setPageRanges(PageRange[] pageRanges) {
mPageRanges = pageRanges;
}
/**
* Gets the print job attributes.
*
* @return The attributes.
*/
public PrintAttributes getAttributes() {
return mAttributes;
}
/**
* Sets the print job attributes.
*
* @param attributes The attributes.
*
* @hide
*/
public void setAttributes(PrintAttributes attributes) {
mAttributes = attributes;
}
/** @hide*/
public PrintJobInfo() {
/* do nothing */
}
/** @hide */
public PrintJobInfo(PrintJobInfo other) {
mId = other.mId;
mLabel = other.mLabel;
mPrinterId = other.mPrinterId;
mState = other.mState;
mAppId = other.mAppId;
mUserId = other.mUserId;
mAttributes = other.mAttributes;
}
private PrintJobInfo(Parcel parcel) {
mId = parcel.readInt();
mLabel = parcel.readCharSequence();
mPrinterId = parcel.readParcelable(null);
mState = parcel.readInt();
mAppId = parcel.readInt();
mUserId = parcel.readInt();
if (parcel.readInt() == 1) {
mPageRanges = (PageRange[]) parcel.readParcelableArray(null);
}
if (parcel.readInt() == 1) {
mAttributes = PrintAttributes.CREATOR.createFromParcel(parcel);
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeInt(mId);
parcel.writeCharSequence(mLabel);
parcel.writeParcelable(mPrinterId, flags);
parcel.writeInt(mState);
parcel.writeInt(mAppId);
parcel.writeInt(mUserId);
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);
}
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("PrintJobInfo{");
builder.append("label: ").append(mLabel);
builder.append(", id: ").append(mId);
builder.append(", status: ").append(stateToString(mState));
builder.append(", printer: " + mPrinterId);
builder.append(", attributes: " + (mAttributes != null ? mAttributes.toString() : null));
builder.append("}");
return builder.toString();
}
/** @hide */
public static String stateToString(int state) {
switch (state) {
case STATE_CREATED: {
return "STATUS_CREATED";
}
case STATE_QUEUED: {
return "STATE_QUEUED";
}
case STATE_STARTED: {
return "STATE_STARTED";
}
case STATE_FAILED: {
return "STATUS_FAILED";
}
case STATE_COMPLETED: {
return "STATUS_COMPLETED";
}
case STATE_CANCELED: {
return "STATUS_CANCELED";
}
default: {
return "STATUS_UNKNOWN";
}
}
}
public static final Parcelable.Creator