IndicatorControlContainer.java revision adab2bddc93bf4af535cb58e7167bf8690d97d8c
1/* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.camera.ui; 18 19import com.android.camera.CameraPreference.OnPreferenceChangedListener; 20import com.android.camera.PreferenceGroup; 21import com.android.camera.R; 22 23import android.content.Context; 24import android.util.AttributeSet; 25import android.view.View; 26import android.view.animation.Animation; 27import android.view.animation.AnimationUtils; 28 29/** 30 * A view contains indicator control bar, second-level indicator bar and 31 * zoom control. 32 */ 33public class IndicatorControlContainer extends IndicatorControl implements 34 OnIndicatorEventListener { 35 private static final String TAG = "IndicatorControlContainer"; 36 37 private Animation mFadeIn, mFadeOut; 38 private IndicatorBar mIndicatorBar; 39 private ZoomControlBar mZoomControlBar; 40 private SecondLevelIndicatorBar mSecondLevelIndicatorBar; 41 42 public IndicatorControlContainer(Context context, AttributeSet attrs) { 43 super(context, attrs); 44 } 45 46 @Override 47 public void initialize(Context context, PreferenceGroup group, 48 String flashSetting, String[] secondLevelKeys, 49 String[] secondLevelOtherSettingKeys) { 50 mIndicatorBar = (IndicatorBar) 51 findViewById(R.id.indicator_bar); 52 53 mZoomControlBar = (ZoomControlBar) 54 findViewById(R.id.zoom_control); 55 mZoomControlBar.setOnIndicatorEventListener(this); 56 57 // We need to show/hide the zoom slider icon accordingly. 58 // From UI spec, we have camera_flash setting on the first level. 59 mIndicatorBar.initialize(context, group, flashSetting, 60 mZoomControlBar.isZoomSupported()); 61 mIndicatorBar.setOnIndicatorEventListener(this); 62 63 mSecondLevelIndicatorBar = (SecondLevelIndicatorBar) 64 findViewById(R.id.second_level_indicator_bar); 65 mSecondLevelIndicatorBar.initialize(context, group, secondLevelKeys, 66 secondLevelOtherSettingKeys); 67 mSecondLevelIndicatorBar.setOnIndicatorEventListener(this); 68 69 mFadeIn = AnimationUtils.loadAnimation( 70 context, R.anim.grow_fade_in_from_bottom); 71 mFadeOut = AnimationUtils.loadAnimation( 72 context, R.anim.shrink_fade_out_from_top); 73 } 74 75 public void setDegree(int degree) { 76 mIndicatorBar.setDegree(degree); 77 mSecondLevelIndicatorBar.setDegree(degree); 78 mZoomControlBar.setDegree(degree); 79 } 80 81 public void onIndicatorEvent(int event) { 82 switch (event) { 83 case OnIndicatorEventListener.EVENT_ENTER_SECOND_LEVEL_INDICATOR_BAR: 84 mIndicatorBar.setVisibility(View.GONE); 85 mSecondLevelIndicatorBar.startAnimation(mFadeIn); 86 mSecondLevelIndicatorBar.setVisibility(View.VISIBLE); 87 break; 88 89 case OnIndicatorEventListener.EVENT_LEAVE_SECOND_LEVEL_INDICATOR_BAR: 90 mSecondLevelIndicatorBar.startAnimation(mFadeOut); 91 mSecondLevelIndicatorBar.setVisibility(View.GONE); 92 mIndicatorBar.setVisibility(View.VISIBLE); 93 break; 94 95 case OnIndicatorEventListener.EVENT_ENTER_ZOOM_CONTROL_BAR: 96 mIndicatorBar.setVisibility(View.GONE); 97 mZoomControlBar.setVisibility(View.VISIBLE); 98 break; 99 100 case OnIndicatorEventListener.EVENT_LEAVE_ZOOM_CONTROL_BAR: 101 mZoomControlBar.setVisibility(View.GONE); 102 mIndicatorBar.setVisibility(View.VISIBLE); 103 break; 104 } 105 } 106 107 public void reloadPreferences() { 108 mIndicatorBar.reloadPreferences(); 109 mSecondLevelIndicatorBar.reloadPreferences(); 110 } 111 112 public void setListener(OnPreferenceChangedListener listener) { 113 mIndicatorBar.setListener(listener); 114 mSecondLevelIndicatorBar.setListener(listener); 115 } 116 117 @Override 118 public View getActiveSettingPopup() { 119 if (mIndicatorBar.getVisibility() == View.VISIBLE) { 120 return mIndicatorBar.getActiveSettingPopup(); 121 } else if (mSecondLevelIndicatorBar.getVisibility() == View.VISIBLE) { 122 return mSecondLevelIndicatorBar.getActiveSettingPopup(); 123 } 124 return null; 125 } 126 127 public boolean dismissSettingPopup() { 128 if (mIndicatorBar.getVisibility() == View.VISIBLE) { 129 return mIndicatorBar.dismissSettingPopup(); 130 } else if (mSecondLevelIndicatorBar.getVisibility() == View.VISIBLE) { 131 return mSecondLevelIndicatorBar.dismissSettingPopup(); 132 } 133 return false; 134 } 135} 136