1e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav/*
2e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * Copyright (C) 2014 The Android Open Source Project
3e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav *
4e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * Licensed under the Apache License, Version 2.0 (the "License");
5e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * you may not use this file except in compliance with the License.
6e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * You may obtain a copy of the License at
7e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav *
8e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav *      http://www.apache.org/licenses/LICENSE-2.0
9e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav *
10e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * Unless required by applicable law or agreed to in writing, software
11e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * distributed under the License is distributed on an "AS IS" BASIS,
12e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * See the License for the specific language governing permissions and
14e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * limitations under the License.
15e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav */
16e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav
17e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslavpackage com.android.printspooler.widget;
18e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav
19e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslavimport android.content.Context;
20e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslavimport android.util.AttributeSet;
21e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslavimport android.view.accessibility.AccessibilityEvent;
22e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslavimport android.view.accessibility.AccessibilityNodeInfo;
23e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslavimport android.widget.CompoundButton;
24e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslavimport android.widget.LinearLayout;
25e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslavimport com.android.printspooler.R;
26e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav
27e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav/**
28e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * This class represents the frame of page in the print preview list
29e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav * that contains the page and a footer.
30e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav */
31e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslavpublic final class PreviewPageFrame extends LinearLayout {
32e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    private final float mSelectedElevation;
33e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    private final float mNotSelectedElevation;
34e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav
35e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    private final float mSelectedPageAlpha;
36e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    private final float mNotSelectedAlpha;
37e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav
38e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    public PreviewPageFrame(Context context, AttributeSet attrs) {
39e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        super(context, attrs);
40e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        mSelectedElevation = mContext.getResources().getDimension(
41e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                R.dimen.selected_page_elevation);
42e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        mNotSelectedElevation = mContext.getResources().getDimension(
43e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                R.dimen.unselected_page_elevation);
44e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        mSelectedPageAlpha = mContext.getResources().getFraction(
45e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                R.fraction.page_selected_alpha, 1, 1);
46e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        mNotSelectedAlpha = mContext.getResources().getFraction(
47e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                R.fraction.page_unselected_alpha, 1, 1);
48e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    }
49e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav
50e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    @Override
51e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    public void onInitializeAccessibilityEvent(AccessibilityEvent event) {
52e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        super.onInitializeAccessibilityEvent(event);
53e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        event.setClassName(CompoundButton.class.getName());
54e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        event.setChecked(isSelected());
55e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    }
56e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav
57e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    @Override
58e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
59e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        super.onInitializeAccessibilityNodeInfo(info);
60e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        info.setClassName(CompoundButton.class.getName());
61e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        info.setSelected(false);
62e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        info.setCheckable(true);
63e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        info.setChecked(isSelected());
64e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    }
65e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav
66e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    public void setSelected(boolean selected, boolean animate) {
67e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        if (isSelected() == selected) {
68e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav            return;
69e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        }
70e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        setSelected(selected);
71e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        if (selected) {
72e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav            if (animate) {
73e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                animate().translationZ(mSelectedElevation)
74e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                        .alpha(mSelectedPageAlpha);
75e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav            } else {
76e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                setTranslationZ(mSelectedElevation);
77e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                setAlpha(mSelectedPageAlpha);
78e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav            }
79e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        } else {
80e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav            if (animate) {
81e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                animate().translationZ(mNotSelectedElevation)
82e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                        .alpha(mNotSelectedAlpha);
83e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav            } else {
84e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                setTranslationZ(mNotSelectedElevation);
85e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav                setAlpha(mNotSelectedAlpha);
86e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav            }
87e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav        }
88e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav    }
89e652b02d45bbda11c9cb8f663fa7f25903b90225Svetoslav}
90