| /* |
| * Copyright (C) 2011 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.camera.ui; |
| |
| import com.android.camera.CameraPreference.OnPreferenceChangedListener; |
| import com.android.camera.PreferenceGroup; |
| import com.android.camera.R; |
| |
| import android.content.Context; |
| import android.util.AttributeSet; |
| import android.view.MotionEvent; |
| import android.view.View; |
| import android.view.animation.Animation; |
| import android.view.animation.Animation.AnimationListener; |
| import android.view.animation.AnimationUtils; |
| |
| /** |
| * The IndicatorControlBarContainer is a IndicatorControl containing |
| * IndicatorControlBar, SecondIndicatorControlBar and ZoomControlBar for Phone UI. |
| */ |
| public class IndicatorControlBarContainer extends IndicatorControlContainer { |
| private static final String TAG = "IndicatorControlBarContainer"; |
| |
| private Animation mFadeIn, mFadeOut; |
| private Animation mSecondLevelFadeIn, mSecondLevelFadeOut; |
| private IndicatorControlBar mIndicatorControlBar; |
| private SecondLevelIndicatorControlBar mSecondLevelIndicatorControlBar; |
| |
| public IndicatorControlBarContainer(Context context, AttributeSet attrs) { |
| super(context, attrs); |
| mFadeIn = AnimationUtils.loadAnimation( |
| context, R.anim.first_level_fade_in); |
| mFadeOut = AnimationUtils.loadAnimation( |
| context, R.anim.first_level_fade_out); |
| mFadeOut.setAnimationListener(mAnimationListener); |
| mSecondLevelFadeIn = AnimationUtils.loadAnimation( |
| context, R.anim.second_level_fade_in); |
| mSecondLevelFadeOut = AnimationUtils.loadAnimation( |
| context, R.anim.second_level_fade_out); |
| mSecondLevelFadeOut.setAnimationListener(mAnimationListener); |
| } |
| |
| @Override |
| protected void onFinishInflate() { |
| mIndicatorControlBar = (IndicatorControlBar) |
| findViewById(R.id.indicator_bar); |
| mIndicatorControlBar.setOnIndicatorEventListener(this); |
| mSecondLevelIndicatorControlBar = (SecondLevelIndicatorControlBar) |
| findViewById(R.id.second_level_indicator_bar); |
| mSecondLevelIndicatorControlBar.setOnIndicatorEventListener(this); |
| } |
| |
| @Override |
| public void initialize(Context context, PreferenceGroup group, |
| boolean isZoomSupported, String[] secondLevelKeys, |
| String[] secondLevelOtherSettingKeys) { |
| |
| mIndicatorControlBar.initialize(context, group, isZoomSupported); |
| |
| mSecondLevelIndicatorControlBar.initialize(context, group, |
| secondLevelKeys, secondLevelOtherSettingKeys); |
| } |
| |
| public void setOrientation(int orientation) { |
| mIndicatorControlBar.setOrientation(orientation); |
| mSecondLevelIndicatorControlBar.setOrientation(orientation); |
| } |
| |
| @Override |
| public boolean dispatchTouchEvent(MotionEvent event) { |
| if (mIndicatorControlBar.getVisibility() == View.VISIBLE) { |
| return mIndicatorControlBar.dispatchTouchEvent(event); |
| } else if (mSecondLevelIndicatorControlBar.getVisibility() == View.VISIBLE) { |
| return mSecondLevelIndicatorControlBar.dispatchTouchEvent(event); |
| } |
| return true; |
| } |
| |
| private AnimationListener mAnimationListener = new AnimationListener() { |
| public void onAnimationEnd(Animation animation) { |
| if (animation == mSecondLevelFadeOut) { |
| mSecondLevelIndicatorControlBar.setVisibility(View.GONE); |
| } else if (animation == mFadeOut) { |
| mIndicatorControlBar.setVisibility(View.GONE); |
| } |
| } |
| |
| public void onAnimationRepeat(Animation animation) { |
| } |
| |
| public void onAnimationStart(Animation animation) { |
| } |
| }; |
| |
| private void leaveSecondLevelIndicator() { |
| mIndicatorControlBar.startAnimation(mFadeIn); |
| mIndicatorControlBar.setVisibility(View.VISIBLE); |
| mSecondLevelIndicatorControlBar.startAnimation(mSecondLevelFadeOut); |
| } |
| |
| public void onIndicatorEvent(int event) { |
| switch (event) { |
| case OnIndicatorEventListener.EVENT_ENTER_SECOND_LEVEL_INDICATOR_BAR: |
| mIndicatorControlBar.startAnimation(mFadeOut); |
| mSecondLevelIndicatorControlBar.startAnimation(mSecondLevelFadeIn); |
| mSecondLevelIndicatorControlBar.setVisibility(View.VISIBLE); |
| break; |
| |
| case OnIndicatorEventListener.EVENT_LEAVE_SECOND_LEVEL_INDICATOR_BAR: |
| leaveSecondLevelIndicator(); |
| break; |
| } |
| } |
| |
| public void reloadPreferences() { |
| mIndicatorControlBar.reloadPreferences(); |
| mSecondLevelIndicatorControlBar.reloadPreferences(); |
| } |
| |
| public void setListener(OnPreferenceChangedListener listener) { |
| mIndicatorControlBar.setListener(listener); |
| mSecondLevelIndicatorControlBar.setListener(listener); |
| } |
| |
| @Override |
| public View getActiveSettingPopup() { |
| if (mIndicatorControlBar.getVisibility() == View.VISIBLE) { |
| return mIndicatorControlBar.getActiveSettingPopup(); |
| } else if (mSecondLevelIndicatorControlBar.getVisibility() == View.VISIBLE) { |
| return mSecondLevelIndicatorControlBar.getActiveSettingPopup(); |
| } |
| return null; |
| } |
| |
| public boolean dismissSettingPopup() { |
| if (mIndicatorControlBar.getVisibility() == View.VISIBLE) { |
| return mIndicatorControlBar.dismissSettingPopup(); |
| } else if (mSecondLevelIndicatorControlBar.getVisibility() == View.VISIBLE) { |
| return mSecondLevelIndicatorControlBar.dismissSettingPopup(); |
| } |
| return false; |
| } |
| |
| @Override |
| public void overrideSettings(final String ... keyvalues) { |
| mSecondLevelIndicatorControlBar.overrideSettings(keyvalues); |
| } |
| |
| @Override |
| public void setEnabled(boolean enabled) { |
| mIndicatorControlBar.setEnabled(enabled); |
| mSecondLevelIndicatorControlBar.setEnabled(enabled); |
| } |
| |
| @Override |
| public void enableZoom(boolean enabled) { |
| mIndicatorControlBar.enableZoom(enabled); |
| } |
| |
| @Override |
| public void dismissSecondLevelIndicator() { |
| if (mSecondLevelIndicatorControlBar.getVisibility() == View.VISIBLE) { |
| leaveSecondLevelIndicator(); |
| } |
| } |
| } |