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