blob: 3c907a896866d57c5d6c4e3173970c8c53dcd424 [file] [log] [blame]
/*
* 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();
}
}
}