1013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav/* 2013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * Copyright (C) 2013 The Android Open Source Project 3013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * 4013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * Licensed under the Apache License, Version 2.0 (the "License"); 5013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * you may not use this file except in compliance with the License. 6013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * You may obtain a copy of the License at 7013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * 8013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * http://www.apache.org/licenses/LICENSE-2.0 9013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * 10013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * Unless required by applicable law or agreed to in writing, software 11013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * distributed under the License is distributed on an "AS IS" BASIS, 12013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * See the License for the specific language governing permissions and 14013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav * limitations under the License. 15013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav */ 16013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav 17013b816ac7d723a0116c039e6266d93d13851fe1Svetoslavpackage com.android.printspooler; 18013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav 19013b816ac7d723a0116c039e6266d93d13851fe1Svetoslavimport android.content.Context; 20013b816ac7d723a0116c039e6266d93d13851fe1Svetoslavimport android.util.AttributeSet; 21013b816ac7d723a0116c039e6266d93d13851fe1Svetoslavimport android.widget.FrameLayout; 22013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav 23013b816ac7d723a0116c039e6266d93d13851fe1Svetoslavpublic class PrintDialogFrame extends FrameLayout { 24013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav 25013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav public final int mMaxWidth; 26013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav 273aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav public int mHeight; 283aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav 29013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav public PrintDialogFrame(Context context, AttributeSet attrs) { 30013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav super(context, attrs); 31013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav mMaxWidth = context.getResources().getDimensionPixelSize( 32013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav R.dimen.print_dialog_frame_max_width_dip); 33013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav } 34013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav 35013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav @Override 36013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 373aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav super.onMeasure(widthMeasureSpec, heightMeasureSpec); 383aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav 393aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav int measuredWidth = getMeasuredWidth(); 40013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav final int widthMode = MeasureSpec.getMode(widthMeasureSpec); 413aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav switch (widthMode) { 423aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav case MeasureSpec.UNSPECIFIED: { 433aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav measuredWidth = mMaxWidth; 443aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav } break; 453aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav 463aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav case MeasureSpec.AT_MOST: { 473aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav final int receivedWidth = MeasureSpec.getSize(widthMeasureSpec); 483aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav measuredWidth = Math.min(mMaxWidth, receivedWidth); 493aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav } break; 50013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav } 513aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav 523aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav mHeight = Math.max(mHeight, getMeasuredHeight()); 533aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav 543aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav int measuredHeight = getMeasuredHeight(); 553aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav final int heightMode = MeasureSpec.getMode(heightMeasureSpec); 563aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav switch (heightMode) { 573aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav case MeasureSpec.UNSPECIFIED: { 583aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav measuredHeight = mHeight; 593aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav } break; 603aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav 613aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav case MeasureSpec.AT_MOST: { 623aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav final int receivedHeight = MeasureSpec.getSize(heightMeasureSpec); 633aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav measuredHeight = Math.min(mHeight, receivedHeight); 643aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav } break; 653aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav } 663aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav 673aa2e2b3ab21fda7045fbe2bb142e7a6830340e5Svetoslav setMeasuredDimension(measuredWidth, measuredHeight); 68013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav } 69013b816ac7d723a0116c039e6266d93d13851fe1Svetoslav} 70