PrintDocumentInfo.java revision a00271533f639c8ed36429c663889ac9f654bc72
1a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov/* 2a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Copyright (C) 2013 The Android Open Source Project 3a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 4a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 5a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * you may not use this file except in compliance with the License. 6a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * You may obtain a copy of the License at 7a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 8a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * http://www.apache.org/licenses/LICENSE-2.0 9a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 10a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Unless required by applicable law or agreed to in writing, software 11a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS, 12a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * See the License for the specific language governing permissions and 14a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * limitations under the License. 15a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 16a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 17a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganovpackage android.print; 18a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 19a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganovimport android.os.Parcel; 20a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganovimport android.os.Parcelable; 21a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 22a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov/** 23a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * This class encapsulates information about a printed document. 24a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 25a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganovpublic final class PrintDocumentInfo implements Parcelable { 26a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 27a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 28a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Constant for unknown page count (default). 29a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 30a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final int PAGE_COUNT_UNKNOWN = -1; 31a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 32a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 33a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Content type: unknown (default). 34a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 35a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final int CONTENT_TYPE_UNKNOWN = -1; 36a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 37a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 38a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Content type: document. 39a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 40a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final int CONTENT_TYPE_DOCUMENT = 0; 41a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 42a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 43a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Content type: photo. 44a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 45a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final int CONTENT_TYPE_PHOTO = 1; 46a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 47a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private int mPageCount; 48a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private int mContentType; 49a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 50a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 51a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new instance. 52a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 53a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo() { 54a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPageCount = PAGE_COUNT_UNKNOWN; 55a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mContentType = CONTENT_TYPE_UNKNOWN; 56a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 57a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 58a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 59a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new instance. 60a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 61a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param Prototype from which to clone. 62a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 63a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo(PrintDocumentInfo prototype) { 64a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPageCount = prototype.mPageCount; 65a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mContentType = prototype.mContentType; 66a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 67a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 68a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 69a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new instance. 70a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 71a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param parcel Data from which to initialize. 72a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 73a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private PrintDocumentInfo(Parcel parcel) { 74a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPageCount = parcel.readInt(); 75a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mContentType = parcel.readInt(); 76a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 77a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 78a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 79a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Gets the total number of pages. 80a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 81a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The number of pages. 82a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 83a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #PAGE_COUNT_UNKNOWN 84a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 85a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public int getPageCount() { 86a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return mPageCount; 87a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 88a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 89a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 90a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Gets the content type. 91a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 92a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The content type. 93a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 94a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_UNKNOWN 95a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_DOCUMENT 96a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_PHOTO 97a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 98a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public int getContentType() { 99a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return mContentType; 100a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 101a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 102a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 103a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public int describeContents() { 104a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return 0; 105a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 106a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 107a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 108a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public void writeToParcel(Parcel parcel, int flags) { 109a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov parcel.writeInt(mPageCount); 110a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov parcel.writeInt(mContentType); 111a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 112a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 113a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 114a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Builder for creating an {@link PrintDocumentInfo}. 115a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 116a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final class Builder { 117a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov private final PrintDocumentInfo mPrototype = new PrintDocumentInfo(); 118a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 119a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 120a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Sets the total number of pages. 121a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 122a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param pageCount The number of pages. Must be greater than 123a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * or equal to zero or {@link PrintDocumentInfo#PAGE_COUNT_UNKNOWN}. 124a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 125a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public Builder setPageCount(int pageCount) { 126a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov if (pageCount < 0 && pageCount != PAGE_COUNT_UNKNOWN) { 127a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov throw new IllegalArgumentException("pageCount" 128a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov + " must be greater than or euqal to zero or" 129a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov + " DocumentInfo#PAGE_COUNT_UNKNOWN"); 130a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 131a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPrototype.mPageCount = pageCount; 132a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return this; 133a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 134a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 135a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 136a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Sets the content type. 137a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 138a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @param type The content type. 139a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 140a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_UNKNOWN 141a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_DOCUMENT 142a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @see #CONTENT_TYPE_PHOTO 143a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 144a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public Builder setContentType(int type) { 145a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov mPrototype.mContentType = type; 146a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return this; 147a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 148a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 149a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov /** 150a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * Creates a new {@link PrintDocumentInfo} instance. 151a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * 152a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov * @return The new instance. 153a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov */ 154a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo create() { 155a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return new PrintDocumentInfo(mPrototype); 156a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 157a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 158a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 159a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public static final Parcelable.Creator<PrintDocumentInfo> CREATOR = 160a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov new Creator<PrintDocumentInfo>() { 161a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 162a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo createFromParcel(Parcel parcel) { 163a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return new PrintDocumentInfo(parcel); 164a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 165a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov 166a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov @Override 167a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov public PrintDocumentInfo[] newArray(int size) { 168a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov return new PrintDocumentInfo[size]; 169a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov } 170a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov }; 171a00271533f639c8ed36429c663889ac9f654bc72Svetoslav Ganov} 172