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