14b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov/* 24b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Copyright (C) 2013 The Android Open Source Project 34b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 44b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 54b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * you may not use this file except in compliance with the License. 64b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * You may obtain a copy of the License at 74b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 84b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * http://www.apache.org/licenses/LICENSE-2.0 94b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Unless required by applicable law or agreed to in writing, software 114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS, 124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * See the License for the specific language governing permissions and 144b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * limitations under the License. 154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovpackage android.print; 184b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 19b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmannimport android.annotation.FloatRange; 20c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmannimport android.annotation.IntDef; 21c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmannimport android.annotation.IntRange; 22c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmannimport android.annotation.NonNull; 23b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmannimport android.annotation.Nullable; 24d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmannimport android.annotation.StringRes; 25b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmannimport android.annotation.TestApi; 26d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmannimport android.content.pm.PackageManager; 27d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmannimport android.content.res.Resources; 28b4fda134761c9521a7e127db3806a07a18763b77Svetoslavimport android.os.Bundle; 294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.os.Parcel; 304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovimport android.os.Parcelable; 314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 32b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmannimport com.android.internal.util.Preconditions; 33b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 34c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmannimport java.lang.annotation.Retention; 35c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmannimport java.lang.annotation.RetentionPolicy; 3685b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganovimport java.util.Arrays; 3785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov 384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov/** 394d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * This class represents the description of a print job. The print job 404d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * state includes properties such as its id, print attributes used for 414d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * generating the content, and so on. Note that the print jobs state may 424d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * change over time and this class represents a snapshot of this state. 434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganovpublic final class PrintJobInfo implements Parcelable { 454b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 46c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann /** @hide */ 47c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann @IntDef({ 48c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann STATE_CREATED, STATE_QUEUED, STATE_STARTED, STATE_BLOCKED, STATE_COMPLETED, 49c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann STATE_FAILED, STATE_CANCELED 50c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann }) 51c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann @Retention(RetentionPolicy.SOURCE) 52c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @interface State { 53c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann } 54c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann 554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 564b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Constant for matching any print job state. 574b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 584b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static final int STATE_ANY = -1; 614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 6388d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov * Constant for matching any print job state. 6488d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov * 6588d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov * @hide 6688d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov */ 6788d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov public static final int STATE_ANY_VISIBLE_TO_CLIENTS = -2; 6888d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov 6988d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov /** 70d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * Constant for matching any active print job state. 71d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * 72d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * @hide 73d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov */ 74d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov public static final int STATE_ANY_ACTIVE = -3; 75d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov 76d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov /** 779b6d3a153f44010a75907c6a9742c89a57d4e5eeSvetoslav Ganov * Constant for matching any scheduled, i.e. delivered to a print 789b6d3a153f44010a75907c6a9742c89a57d4e5eeSvetoslav Ganov * service, print job state. 799b6d3a153f44010a75907c6a9742c89a57d4e5eeSvetoslav Ganov * 809b6d3a153f44010a75907c6a9742c89a57d4e5eeSvetoslav Ganov * @hide 819b6d3a153f44010a75907c6a9742c89a57d4e5eeSvetoslav Ganov */ 829b6d3a153f44010a75907c6a9742c89a57d4e5eeSvetoslav Ganov public static final int STATE_ANY_SCHEDULED = -4; 839b6d3a153f44010a75907c6a9742c89a57d4e5eeSvetoslav Ganov 849b6d3a153f44010a75907c6a9742c89a57d4e5eeSvetoslav Ganov /** 854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Print job state: The print job is being created but not yet 864b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * ready to be printed. 874b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 884b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Next valid states: {@link #STATE_QUEUED} 894b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 904b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 914b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static final int STATE_CREATED = 1; 924b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 934b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 94d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * Print job state: The print jobs is created, it is ready 954b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * to be printed and should be processed. 964b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 974b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Next valid states: {@link #STATE_STARTED}, {@link #STATE_FAILED}, 984b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * {@link #STATE_CANCELED} 994b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 1004b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 1014b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static final int STATE_QUEUED = 2; 1024b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1034b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 104d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * Print job state: The print job is being printed. 1054b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 1064b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Next valid states: {@link #STATE_COMPLETED}, {@link #STATE_FAILED}, 107d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * {@link #STATE_CANCELED}, {@link #STATE_BLOCKED} 1084b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 1094b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 1104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static final int STATE_STARTED = 3; 1114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 113d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * Print job state: The print job is blocked. 114d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * <p> 115d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * Next valid states: {@link #STATE_FAILED}, {@link #STATE_CANCELED}, 116d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * {@link #STATE_STARTED} 117d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * </p> 118d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov */ 119d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov public static final int STATE_BLOCKED = 4; 120d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov 121d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov /** 1224d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * Print job state: The print job is successfully printed. 1234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * This is a terminal state. 1244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 1254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Next valid states: None 1264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 1274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 128d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov public static final int STATE_COMPLETED = 5; 1294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 131d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov * Print job state: The print job was printing but printing failed. 1324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 1334d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * Next valid states: {@link #STATE_CANCELED}, {@link #STATE_STARTED} 1344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 1354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 136d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov public static final int STATE_FAILED = 6; 1374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 1394d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * Print job state: The print job is canceled. 1404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * This is a terminal state. 1414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * <p> 1424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Next valid states: None 1434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * </p> 1444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 145d26d4898fcc9b78f4b66118895c375384098205eSvetoslav Ganov public static final int STATE_CANCELED = 7; 1464b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1474b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** The unique print job id. */ 1482fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav private PrintJobId mId; 1494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1504b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** The human readable print job label. */ 151269403b032f965ff3847eb982c2f697229dc5a92Svetoslav private String mLabel; 1524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** The unique id of the printer. */ 1544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private PrinterId mPrinterId; 1554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 156798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov /** The name of the printer - internally used */ 157798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov private String mPrinterName; 158798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov 159d91cb3ea61ea5096637c5d2b5e3e6147d0d2cce3Svetoslav Ganov /** The state of the print job. */ 1604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private int mState; 1614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** The id of the app that created the job. */ 1634b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private int mAppId; 1644b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** Optional tag assigned by a print service.*/ 1664b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private String mTag; 1674b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 168704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov /** The wall time when the print job was created. */ 169704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov private long mCreationTime; 170704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov 17185b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov /** How many copies to print. */ 17285b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov private int mCopies; 17385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov 1744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** The pages to print */ 1754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private PageRange[] mPageRanges; 1764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 1774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** The print job attributes size. */ 1784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov private PrintAttributes mAttributes; 1794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 180a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** Information about the printed document. */ 181a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo mDocumentInfo; 182a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 183b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann /** The progress made on printing this job or -1 if not set. */ 184b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann private float mProgress; 185b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 186b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann /** A short string describing the status of this job. */ 187d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann private @Nullable CharSequence mStatus; 188d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann 189d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann /** A string resource describing the status of this job. */ 190d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann private @StringRes int mStatusRes; 191d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann private @Nullable CharSequence mStatusResAppPackageName; 192b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 193b4fda134761c9521a7e127db3806a07a18763b77Svetoslav /** Advanced printer specific options. */ 194b4fda134761c9521a7e127db3806a07a18763b77Svetoslav private Bundle mAdvancedOptions; 195b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 196a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov /** Whether we are trying to cancel this print job. */ 197a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov private boolean mCanceling; 198a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov 199a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** @hide*/ 200a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintJobInfo() { 201b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann mProgress = -1; 202a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 203a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 204a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** @hide */ 205a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintJobInfo(PrintJobInfo other) { 206a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mId = other.mId; 207a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mLabel = other.mLabel; 208a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPrinterId = other.mPrinterId; 209798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mPrinterName = other.mPrinterName; 210a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mState = other.mState; 211a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mAppId = other.mAppId; 21288d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov mTag = other.mTag; 213704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov mCreationTime = other.mCreationTime; 21485b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov mCopies = other.mCopies; 21585b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov mPageRanges = other.mPageRanges; 216a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mAttributes = other.mAttributes; 217a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mDocumentInfo = other.mDocumentInfo; 218b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann mProgress = other.mProgress; 219b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann mStatus = other.mStatus; 220d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann mStatusRes = other.mStatusRes; 221d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann mStatusResAppPackageName = other.mStatusResAppPackageName; 222a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov mCanceling = other.mCanceling; 223b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mAdvancedOptions = other.mAdvancedOptions; 224a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 225a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 226c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann private PrintJobInfo(@NonNull Parcel parcel) { 2272fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav mId = parcel.readParcelable(null); 228269403b032f965ff3847eb982c2f697229dc5a92Svetoslav mLabel = parcel.readString(); 229a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPrinterId = parcel.readParcelable(null); 230798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mPrinterName = parcel.readString(); 231a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mState = parcel.readInt(); 232a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mAppId = parcel.readInt(); 23388d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov mTag = parcel.readString(); 234704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov mCreationTime = parcel.readLong(); 23585b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov mCopies = parcel.readInt(); 236b4fda134761c9521a7e127db3806a07a18763b77Svetoslav Parcelable[] parcelables = parcel.readParcelableArray(null); 237b4fda134761c9521a7e127db3806a07a18763b77Svetoslav if (parcelables != null) { 23885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov mPageRanges = new PageRange[parcelables.length]; 23985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov for (int i = 0; i < parcelables.length; i++) { 24085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov mPageRanges[i] = (PageRange) parcelables[i]; 24185b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 242a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 243b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mAttributes = (PrintAttributes) parcel.readParcelable(null); 244b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mDocumentInfo = (PrintDocumentInfo) parcel.readParcelable(null); 245b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann mProgress = parcel.readFloat(); 246b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann mStatus = parcel.readCharSequence(); 247d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann mStatusRes = parcel.readInt(); 248d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann mStatusResAppPackageName = parcel.readCharSequence(); 249a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov mCanceling = (parcel.readInt() == 1); 250b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mAdvancedOptions = parcel.readBundle(); 251d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann 252d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann if (mAdvancedOptions != null) { 253d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann Preconditions.checkArgument(!mAdvancedOptions.containsKey(null)); 254d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann } 255a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 256a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 2574b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 2584b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Gets the unique print job id. 2594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 2604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The id. 2614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 26222f86b4e77c77312e8b3f08fc598be00c323f750Philip P. Moltmann public @Nullable PrintJobId getId() { 2634b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mId; 2644b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2664b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 2674b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Sets the unique print job id. 2684b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 269b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @param id The job id. 2704b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 2714b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 2724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 273c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public void setId(@NonNull PrintJobId id) { 2744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov this.mId = id; 2754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 2784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Gets the human readable job label. 2794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 2804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The label. 2814b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 282c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @NonNull String getLabel() { 2834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mLabel; 2844b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2854b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2864b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 2874b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Sets the human readable job label. 2884b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 2894b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param label The label. 2904b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 2914b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 2924b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 293c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public void setLabel(@NonNull String label) { 2944b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mLabel = label; 2954b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 2964b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 2974b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 2984b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Gets the unique target printer id. 2994b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 3004b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The target printer id. 3014b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 302c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @Nullable PrinterId getPrinterId() { 3034b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mPrinterId; 3044b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3054b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 3064b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 307b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * Sets the unique target printer id. 3084b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 3094b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param printerId The target printer id. 3104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 3114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 3124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 313c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public void setPrinterId(@NonNull PrinterId printerId) { 3144b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mPrinterId = printerId; 3154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 3174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 318798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * Gets the name of the target printer. 319798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 320798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @return The printer name. 321798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 322798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @hide 323798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov */ 324c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @Nullable String getPrinterName() { 325798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov return mPrinterName; 326798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 327798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov 328798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov /** 329798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * Sets the name of the target printer. 330798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 331798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @param printerName The printer name. 332798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * 333798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov * @hide 334798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov */ 335c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public void setPrinterName(@NonNull String printerName) { 336798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov mPrinterName = printerName; 337798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov } 338798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov 339798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov /** 3404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Gets the current job state. 3414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 3424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The job state. 3434d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * 3444d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * @see #STATE_CREATED 3454d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * @see #STATE_QUEUED 3464d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * @see #STATE_STARTED 3474d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * @see #STATE_COMPLETED 3484d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * @see #STATE_BLOCKED 3494d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * @see #STATE_FAILED 3504d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * @see #STATE_CANCELED 3514b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 352c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @State int getState() { 3534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mState; 3544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3554b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 3564b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 3574b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Sets the current job state. 3584b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 3594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param state The job state. 3604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 3614b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 3624b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 3634b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public void setState(int state) { 3644b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mState = state; 3654b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 3664b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 3674b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 368b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * Sets the progress of the print job. 369b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * 370b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @param progress the progress of the job 371b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * 372b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @hide 373b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann */ 374b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann public void setProgress(@FloatRange(from=0.0, to=1.0) float progress) { 375b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann Preconditions.checkArgumentInRange(progress, 0, 1, "progress"); 376b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 377b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann mProgress = progress; 378b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann } 379b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 380b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann /** 381b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * Sets the status of the print job. 382b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * 383b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @param status the status of the job, can be null 384b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * 385b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @hide 386b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann */ 387b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann public void setStatus(@Nullable CharSequence status) { 388d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann mStatusRes = 0; 389d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann mStatusResAppPackageName = null; 390d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann 391b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann mStatus = status; 392b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann } 393b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 394b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann /** 395d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann * Sets the status of the print job. 396d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann * 397d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann * @param status The new status as a string resource 398d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann * @param appPackageName App package name the resource belongs to 399d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann * 400d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann * @hide 401d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann */ 402d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann public void setStatus(@StringRes int status, @NonNull CharSequence appPackageName) { 403d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann mStatus = null; 404d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann 405d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann mStatusRes = status; 406d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann mStatusResAppPackageName = appPackageName; 407d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann } 408d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann 409d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann /** 4104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Sets the owning application id. 4114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 4124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The owning app id. 4134b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 4144b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 4154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 4164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public int getAppId() { 4174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mAppId; 4184b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 4194b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 4204b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 4214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Sets the owning application id. 4224b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 4234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param appId The owning app id. 4244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 4254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 4264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 4274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public void setAppId(int appId) { 4284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mAppId = appId; 4294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 4304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 4314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 4324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Gets the optional tag assigned by a print service. 4334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 4344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The tag. 435b450d0d4d7fca16674fea02f15e21dc737352c40Svetoslav * 436b450d0d4d7fca16674fea02f15e21dc737352c40Svetoslav * @hide 4374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 4384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String getTag() { 4394b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mTag; 4404b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 4414b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 4424b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 4434b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Sets the optional tag assigned by a print service. 4444b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 4454b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param tag The tag. 4464b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 4474b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 4484b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 4494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public void setTag(String tag) { 4504b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mTag = tag; 4514b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 4524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 4534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 454704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov * Gets the wall time in millisecond when this print job was created. 455704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov * 456704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov * @return The creation time in milliseconds. 457704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov */ 458704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov public long getCreationTime() { 459704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov return mCreationTime; 460704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov } 461704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov 462704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov /** 463704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov * Sets the wall time in milliseconds when this print job was created. 464704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov * 465704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov * @param creationTime The creation time in milliseconds. 466704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov * 467704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov * @hide 468704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov */ 469704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov public void setCreationTime(long creationTime) { 470704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov if (creationTime < 0) { 471704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov throw new IllegalArgumentException("creationTime must be non-negative."); 472704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov } 473704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov mCreationTime = creationTime; 474704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov } 475704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov 476704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov /** 47785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov * Gets the number of copies. 47885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov * 47985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov * @return The number of copies or zero if not set. 48085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov */ 481c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @IntRange(from = 0) int getCopies() { 48285b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov return mCopies; 48385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 48485b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov 48585b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov /** 48685b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov * Sets the number of copies. 48785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov * 48885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov * @param copyCount The number of copies. 48985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov * 49085b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov * @hide 49185b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov */ 49285b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov public void setCopies(int copyCount) { 49385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov if (copyCount < 1) { 49485b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov throw new IllegalArgumentException("Copies must be more than one."); 49585b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 49685b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov mCopies = copyCount; 49785b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov } 49885b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov 49985b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov /** 50053f57d162b0553102fbd5c4ccdda87dbfce5b763Svetoslav * Gets the included pages. 5014b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 50253f57d162b0553102fbd5c4ccdda87dbfce5b763Svetoslav * @return The included pages or <code>null</code> if not set. 5034b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 504c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @Nullable PageRange[] getPages() { 5054b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mPageRanges; 5064b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 5074b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 5084b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 50953f57d162b0553102fbd5c4ccdda87dbfce5b763Svetoslav * Sets the included pages. 5104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 5111c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @param pageRanges The included pages. 5124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 5134b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 5144b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 51553f57d162b0553102fbd5c4ccdda87dbfce5b763Svetoslav public void setPages(PageRange[] pageRanges) { 5164b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mPageRanges = pageRanges; 5174b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 5184b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 5194b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 5204b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Gets the print job attributes. 5214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 5224b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @return The attributes. 5234b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 524c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @NonNull PrintAttributes getAttributes() { 5254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return mAttributes; 5264b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 5274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 5284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** 5294b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * Sets the print job attributes. 5304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 5314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @param attributes The attributes. 5324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * 5334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov * @hide 5344b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov */ 5354b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public void setAttributes(PrintAttributes attributes) { 5364b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov mAttributes = attributes; 5374b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 5384b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 539a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 540a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Gets the info describing the printed document. 541a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 542a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The document info. 543a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 544a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @hide 545a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 546a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo getDocumentInfo() { 547a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return mDocumentInfo; 5484b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 5494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 550a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 551a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Sets the info describing the printed document. 552a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 553a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param info The document info. 554a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 555a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @hide 556a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 557a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public void setDocumentInfo(PrintDocumentInfo info) { 558a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mDocumentInfo = info; 5594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 5604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 561a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov /** 562a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * Gets whether this print is being cancelled. 563a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * 564a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * @return True if the print job is being cancelled. 565a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * 566a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * @hide 567a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov */ 568a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov public boolean isCancelling() { 569a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov return mCanceling; 570a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov } 571a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov 572a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov /** 573a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * Sets whether this print is being cancelled. 574a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * 575a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * @param cancelling True if the print job is being cancelled. 576a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * 577a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov * @hide 578a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov */ 579a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov public void setCancelling(boolean cancelling) { 580a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov mCanceling = cancelling; 581a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov } 582a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov 583b4fda134761c9521a7e127db3806a07a18763b77Svetoslav /** 584b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * Gets whether this job has a given advanced (printer specific) print 585b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * option. 586b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 587b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @param key The option key. 588b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @return Whether the option is present. 589b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 590b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @hide 591b4fda134761c9521a7e127db3806a07a18763b77Svetoslav */ 592b4fda134761c9521a7e127db3806a07a18763b77Svetoslav public boolean hasAdvancedOption(String key) { 593b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return mAdvancedOptions != null && mAdvancedOptions.containsKey(key); 594b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 595b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 596b4fda134761c9521a7e127db3806a07a18763b77Svetoslav /** 597b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * Gets the value of an advanced (printer specific) print option. 598b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 599b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @param key The option key. 600b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @return The option value. 601b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 602b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @hide 603b4fda134761c9521a7e127db3806a07a18763b77Svetoslav */ 604b4fda134761c9521a7e127db3806a07a18763b77Svetoslav public String getAdvancedStringOption(String key) { 605b4fda134761c9521a7e127db3806a07a18763b77Svetoslav if (mAdvancedOptions != null) { 606b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return mAdvancedOptions.getString(key); 607b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 608b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return null; 609b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 610b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 611b4fda134761c9521a7e127db3806a07a18763b77Svetoslav /** 612b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * Gets the value of an advanced (printer specific) print option. 613b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 614b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @param key The option key. 615b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @return The option value. 616b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 617b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @hide 618b4fda134761c9521a7e127db3806a07a18763b77Svetoslav */ 619b4fda134761c9521a7e127db3806a07a18763b77Svetoslav public int getAdvancedIntOption(String key) { 620b4fda134761c9521a7e127db3806a07a18763b77Svetoslav if (mAdvancedOptions != null) { 621b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return mAdvancedOptions.getInt(key); 622b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 623b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return 0; 624b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 625b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 626b4fda134761c9521a7e127db3806a07a18763b77Svetoslav /** 627b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * Gets the advanced options. 628b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 629b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @return The advanced options. 630b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 631b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @hide 632b4fda134761c9521a7e127db3806a07a18763b77Svetoslav */ 633b4fda134761c9521a7e127db3806a07a18763b77Svetoslav public Bundle getAdvancedOptions() { 634b4fda134761c9521a7e127db3806a07a18763b77Svetoslav return mAdvancedOptions; 635b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 636b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 637b4fda134761c9521a7e127db3806a07a18763b77Svetoslav /** 638b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * Sets the advanced options. 639b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 640b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @param options The advanced options. 641b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * 642b4fda134761c9521a7e127db3806a07a18763b77Svetoslav * @hide 643b4fda134761c9521a7e127db3806a07a18763b77Svetoslav */ 644b4fda134761c9521a7e127db3806a07a18763b77Svetoslav public void setAdvancedOptions(Bundle options) { 645b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mAdvancedOptions = options; 646b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 647b4fda134761c9521a7e127db3806a07a18763b77Svetoslav 6484b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 6494b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public int describeContents() { 6504b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return 0; 6514b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 6524b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 6534b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 6544b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public void writeToParcel(Parcel parcel, int flags) { 6552fbd2a7f070f246ddafd9de94efa9a98861e9136Svetoslav parcel.writeParcelable(mId, flags); 656269403b032f965ff3847eb982c2f697229dc5a92Svetoslav parcel.writeString(mLabel); 6574b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeParcelable(mPrinterId, flags); 658798bed6cc7d273e72b0253288605db9cd2b57740Svetoslav Ganov parcel.writeString(mPrinterName); 6594b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeInt(mState); 6604b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov parcel.writeInt(mAppId); 66188d199130d44c6bacb383a7757e782cf97483c68Svetoslav Ganov parcel.writeString(mTag); 662704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov parcel.writeLong(mCreationTime); 66385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov parcel.writeInt(mCopies); 664b4fda134761c9521a7e127db3806a07a18763b77Svetoslav parcel.writeParcelableArray(mPageRanges, flags); 665b4fda134761c9521a7e127db3806a07a18763b77Svetoslav parcel.writeParcelable(mAttributes, flags); 666b4fda134761c9521a7e127db3806a07a18763b77Svetoslav parcel.writeParcelable(mDocumentInfo, 0); 667b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann parcel.writeFloat(mProgress); 668b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann parcel.writeCharSequence(mStatus); 669d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann parcel.writeInt(mStatusRes); 670d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann parcel.writeCharSequence(mStatusResAppPackageName); 671a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov parcel.writeInt(mCanceling ? 1 : 0); 672b4fda134761c9521a7e127db3806a07a18763b77Svetoslav parcel.writeBundle(mAdvancedOptions); 6734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 6744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 6754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 6764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public String toString() { 6774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov StringBuilder builder = new StringBuilder(); 6784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append("PrintJobInfo{"); 6794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append("label: ").append(mLabel); 6804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append(", id: ").append(mId); 681d91cb3ea61ea5096637c5d2b5e3e6147d0d2cce3Svetoslav Ganov builder.append(", state: ").append(stateToString(mState)); 6824b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append(", printer: " + mPrinterId); 68385b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov builder.append(", tag: ").append(mTag); 684704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov builder.append(", creationTime: " + mCreationTime); 68585b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov builder.append(", copies: ").append(mCopies); 686a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov builder.append(", attributes: " + (mAttributes != null 687a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov ? mAttributes.toString() : null)); 688a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov builder.append(", documentInfo: " + (mDocumentInfo != null 689a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov ? mDocumentInfo.toString() : null)); 690a18661d5922e5ae24ccce8e815aeba437a2fba82Svetoslav Ganov builder.append(", cancelling: " + mCanceling); 69185b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov builder.append(", pages: " + (mPageRanges != null 69285b1f883056a1d74473fd9ce774948878f389ab6Svetoslav Ganov ? Arrays.toString(mPageRanges) : null)); 693b4fda134761c9521a7e127db3806a07a18763b77Svetoslav builder.append(", hasAdvancedOptions: " + (mAdvancedOptions != null)); 694b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann builder.append(", progress: " + mProgress); 695b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann builder.append(", status: " + (mStatus != null 696b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann ? mStatus.toString() : null)); 697d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann builder.append(", statusRes: " + mStatusRes); 698d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann builder.append(", statusResAppPackageName: " + (mStatusResAppPackageName != null 699d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann ? mStatusResAppPackageName.toString() : null)); 7004b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov builder.append("}"); 7014b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return builder.toString(); 7024b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 7034b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 7044b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov /** @hide */ 7054b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static String stateToString(int state) { 7064b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov switch (state) { 7074b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov case STATE_CREATED: { 708704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov return "STATE_CREATED"; 7094b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 7104b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov case STATE_QUEUED: { 7114b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return "STATE_QUEUED"; 7124b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 7134b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov case STATE_STARTED: { 7144b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return "STATE_STARTED"; 7154b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 716d91cb3ea61ea5096637c5d2b5e3e6147d0d2cce3Svetoslav Ganov case STATE_BLOCKED: { 717d91cb3ea61ea5096637c5d2b5e3e6147d0d2cce3Svetoslav Ganov return "STATE_BLOCKED"; 718d91cb3ea61ea5096637c5d2b5e3e6147d0d2cce3Svetoslav Ganov } 7194b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov case STATE_FAILED: { 720704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov return "STATE_FAILED"; 7214b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 7224b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov case STATE_COMPLETED: { 723704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov return "STATE_COMPLETED"; 7244b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 7254b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov case STATE_CANCELED: { 726704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov return "STATE_CANCELED"; 7274b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 7284b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov default: { 729704697b6197262678e930daa831a1916ddee4dcfSvetoslav Ganov return "STATE_UNKNOWN"; 7304b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 7314b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 7324b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 7334b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 7341c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav /** 735b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * Get the progress that has been made printing this job. 736b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * 737b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @return the print progress or -1 if not set 738b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @hide 739b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann */ 740b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann @TestApi 741b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann public float getProgress() { 742b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann return mProgress; 743b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann } 744b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 745b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann /** 746b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * Get the status of this job. 747b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * 748d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann * @param pm Package manager used to resolve the string 749d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann * 750b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @return the status of this job or null if not set 751b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @hide 752b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann */ 753b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann @TestApi 754d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann public @Nullable CharSequence getStatus(@NonNull PackageManager pm) { 755d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann if (mStatusRes == 0) { 756d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann return mStatus; 757d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann } else { 758d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann try { 759d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann return pm.getResourcesForApplication(mStatusResAppPackageName.toString()) 760d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann .getString(mStatusRes); 761d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) { 762d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann return null; 763d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann } 764d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann } 765b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann } 766b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 767b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann /** 7681c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * Builder for creating a {@link PrintJobInfo}. 7691c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav */ 7701c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav public static final class Builder { 7711c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav private final PrintJobInfo mPrototype; 7721c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav 7731c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav /** 7741c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * Constructor. 7751c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * 7761c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @param prototype Prototype to use as a starting point. 7774d4c66dd38e940082e385b49a33f4022ab04c738Svetoslav Ganov * Can be <code>null</code>. 7781c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav */ 779c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public Builder(@Nullable PrintJobInfo prototype) { 7801c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav mPrototype = (prototype != null) 7811c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav ? new PrintJobInfo(prototype) 7821c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav : new PrintJobInfo(); 7831c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav } 7841c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav 7851c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav /** 7861c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * Sets the number of copies. 7871c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * 7881c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @param copies The number of copies. 7891c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav */ 790c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public void setCopies(@IntRange(from = 1) int copies) { 7911c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav mPrototype.mCopies = copies; 7921c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav } 7931c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav 7941c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav /** 7951c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * Sets the print job attributes. 7961c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * 7971c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @param attributes The attributes. 7981c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav */ 799c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public void setAttributes(@NonNull PrintAttributes attributes) { 8001c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav mPrototype.mAttributes = attributes; 8011c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav } 8021c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav 8031c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav /** 8041c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * Sets the included pages. 8051c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * 8061c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @param pages The included pages. 8071c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav */ 808c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public void setPages(@NonNull PageRange[] pages) { 8091c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav mPrototype.mPageRanges = pages; 8101c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav } 8111c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav 8121c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav /** 813b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * Sets the progress of the print job. 814b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * 815b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @param progress the progress of the job 816b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @hide 817b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann */ 818b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann public void setProgress(@FloatRange(from=0.0, to=1.0) float progress) { 819b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann Preconditions.checkArgumentInRange(progress, 0, 1, "progress"); 820b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 821b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann mPrototype.mProgress = progress; 822b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann } 823b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 824b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann /** 825b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * Sets the status of the print job. 826b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * 827b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @param status the status of the job, can be null 828b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann * @hide 829b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann */ 830b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann public void setStatus(@Nullable CharSequence status) { 831b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann mPrototype.mStatus = status; 832b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann } 833b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann 834b3078c235e7674fd61be75fb469105ba6174aba5Philip P. Moltmann /** 8351c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * Puts an advanced (printer specific) option. 8361c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * 8371c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @param key The option key. 8381c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @param value The option value. 8391c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav */ 840c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public void putAdvancedOption(@NonNull String key, @Nullable String value) { 841d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann Preconditions.checkNotNull(key, "key cannot be null"); 842d74d1e549168ba521e8009961b76e8718be37aa1Philip P. Moltmann 843b4fda134761c9521a7e127db3806a07a18763b77Svetoslav if (mPrototype.mAdvancedOptions == null) { 844b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mPrototype.mAdvancedOptions = new Bundle(); 845b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 846b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mPrototype.mAdvancedOptions.putString(key, value); 8471c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav } 8481c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav 8491c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav /** 8501c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * Puts an advanced (printer specific) option. 8511c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * 8521c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @param key The option key. 8531c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @param value The option value. 8541c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav */ 855c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public void putAdvancedOption(@NonNull String key, int value) { 856b4fda134761c9521a7e127db3806a07a18763b77Svetoslav if (mPrototype.mAdvancedOptions == null) { 857b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mPrototype.mAdvancedOptions = new Bundle(); 858b4fda134761c9521a7e127db3806a07a18763b77Svetoslav } 859b4fda134761c9521a7e127db3806a07a18763b77Svetoslav mPrototype.mAdvancedOptions.putInt(key, value); 8601c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav } 8611c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav 8621c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav /** 8631c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * Creates a new {@link PrintJobInfo} instance. 8641c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * 8651c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav * @return The new instance. 8661c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav */ 867c43639c3067dda5df189fb3cbf14f256c17e677dPhilip P. Moltmann public @NonNull PrintJobInfo build() { 8681c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav return mPrototype; 8691c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav } 8701c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav } 8711c43fceaaa5f9aa6e29e2670f44f312632241007Svetoslav 8724b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public static final Parcelable.Creator<PrintJobInfo> CREATOR = 8734b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov new Creator<PrintJobInfo>() { 8744b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 8754b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintJobInfo createFromParcel(Parcel parcel) { 8764b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return new PrintJobInfo(parcel); 8774b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 8784b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov 8794b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov @Override 8804b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov public PrintJobInfo[] newArray(int size) { 8814b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov return new PrintJobInfo[size]; 8824b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov } 8834b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov }; 8844b9a4d16872bbb50712e007b419ac0b35ff1582dSvetoslav Ganov} 885