package org.holoeverywhere.addon;
import org.holoeverywhere.LayoutInflater;
import org.holoeverywhere.app.Activity;
import org.holoeverywhere.slider.ISlider;
import com.actionbarsherlock.R;
import org.holoeverywhere.slider.SliderView;
import org.holoeverywhere.slider.SliderView.OnSlideListener;
import org.holoeverywhere.slider.SliderView.SavedState;
import org.holoeverywhere.slider.SliderView.SliderDrawer;
import org.holoeverywhere.slider.SliderView.TouchMode;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
public class AddonSlider extends IAddon {
public static class AddonSliderA extends IAddonActivity implements ISlider {
private static final String KEY_SLIDER_STATE = "holo:slider:state";
private boolean mAddonEnabled = true;
private boolean mDragWithActionBar = false;
private boolean mForceNotRestoreInstance = false;
private boolean mRejectContentView = true;
private SliderView mSliderView;
private View mView;
@Override
public void disableShadow() {
mSliderView.disableShadow();
}
@Override
public View findViewById(int id) {
if (mView != null) {
View view = mView.findViewById(id);
if (view != null) {
return view;
}
}
return mSliderView != null ? mSliderView.findViewById(id) : null;
}
public void forceNotRestoreInstance() {
mForceNotRestoreInstance = true;
}
@Override
public View getContentView() {
return mSliderView.getContentView();
}
@Override
public SliderDrawer getDrawer() {
return mSliderView.getDrawer();
}
@Override
public int getLeftDragBound() {
return mSliderView.getLeftDragBound();
}
@Override
public float getLeftTranslateFactor() {
return mSliderView.getLeftTranslateFactor();
}
@Override
public View getLeftView() {
return mSliderView.getLeftView();
}
@Override
public int getLeftViewWidth() {
return mSliderView.getLeftViewWidth();
}
@Override
public OnSlideListener getOnSlideListener() {
return mSliderView.getOnSlideListener();
}
@Override
public int getProgress() {
return mSliderView.getProgress();
}
@Override
public int getRightDragBound() {
return mSliderView.getRightDragBound();
}
@Override
public float getRightTranslateFactor() {
return mSliderView.getRightTranslateFactor();
}
@Override
public View getRightView() {
return mSliderView.getRightView();
}
@Override
public int getRightViewWidth() {
return mSliderView.getRightViewWidth();
}
public SliderView getSliderView() {
return mSliderView;
}
@Override
public TouchMode getTouchMode() {
return mSliderView.getTouchMode();
}
@Override
public int getTouchModeLeftMargin() {
return mSliderView.getTouchModeLeftMargin();
}
@Override
public int getTouchModeRightMargin() {
return mSliderView.getTouchModeRightMargin();
}
public boolean isAddonEnabled() {
return mAddonEnabled;
}
@Override
public boolean isBlockLongMove() {
return mSliderView.isBlockLongMove();
}
@Override
public boolean isContentShowed() {
return mSliderView.isContentShowed();
}
public boolean isDragWithActionBar() {
return mDragWithActionBar;
}
public boolean isForceNotRestoreInstance() {
return mForceNotRestoreInstance;
}
@Override
public boolean isLeftShowed() {
return mSliderView.isLeftShowed();
}
@Override
public boolean isOverlayActionBar() {
return mSliderView.isOverlayActionBar();
}
@Override
public boolean isRightShowed() {
return mSliderView.isRightShowed();
}
@Override
public void onPostCreate(Bundle savedInstanceState) {
mRejectContentView = false;
if (!mAddonEnabled) {
get().setContentView(mView);
mSliderView = null;
return;
}
if (savedInstanceState != null && savedInstanceState.containsKey(KEY_SLIDER_STATE)
&& !mForceNotRestoreInstance) {
SavedState state = savedInstanceState.getParcelable(KEY_SLIDER_STATE);
mSliderView.dispatchRestoreInstanceState(state);
}
View view = mView.findViewById(R.id.contentView);
if (view != null) {
mSliderView.setContentView(view);
}
view = mView.findViewById(R.id.leftView);
if (view != null) {
mSliderView.setLeftView(view);
}
view = mView.findViewById(R.id.rightView);
if (view != null) {
mSliderView.setRightView(view);
}
if (mSliderView.getContentView() == null && mSliderView.getLeftView() == null
&& mSliderView.getRightView() == null) {
mSliderView.setContentView(mView);
}
TypedArray a = get().obtainStyledAttributes(new int[] {
android.R.attr.windowBackground
});
final int windowBackground = a.getResourceId(0, 0);
a.recycle();
if (mDragWithActionBar) {
get().setContentView(mSliderView.getContentView());
ViewGroup decorView = (ViewGroup) get().getWindow().getDecorView();
view = decorView.getChildAt(0);
view.setBackgroundResource(windowBackground);
decorView.removeView(view);
mSliderView.setContentView(view);
decorView.addView(mSliderView, 0);
} else {
if (windowBackground > 0 && mSliderView.getContentView() != null) {
mSliderView.getContentView().setBackgroundResource(windowBackground);
}
get().setContentView(mSliderView);
}
}
@Override
public void onPreCreate(Bundle savedInstanceState) {
mSliderView = new SliderView(get());
mSliderView.setId(R.id.slider);
}
@Override
public void onSaveInstanceState(Bundle outState) {
if (mSliderView != null) {
outState.putParcelable(KEY_SLIDER_STATE, mSliderView.dispatchSaveInstanceState());
}
}
@Override
public boolean requestWindowFeature(int featureId) {
if (featureId == Window.FEATURE_ACTION_BAR_OVERLAY) {
setOverlayActionBar(true);
}
return super.requestWindowFeature(featureId);
}
public void setAddonEnabled(boolean addonEnabled) {
mAddonEnabled = addonEnabled;
}
@Override
public void setBlockLongMove(boolean blockLongMove) {
mSliderView.setBlockLongMove(blockLongMove);
}
public void setContentView(int layout) {
setContentView(LayoutInflater.inflate(get(), layout));
}
@Override
public void setContentView(View view) {
mSliderView.setContentView(view);
}
/**
* Doesn't call this manually!
*/
@Override
@Deprecated
public boolean setContentView(View view, LayoutParams params) {
if (mRejectContentView) {
mView = view;
return true;
} else {
return false;
}
}
@Override
public void setDragBound(int dragBound) {
mSliderView.setDragBound(dragBound);
}
public void setDragWithActionBar(boolean dragWithActionBar) {
mDragWithActionBar = dragWithActionBar;
}
@Override
public void setDrawer(SliderDrawer drawer) {
mSliderView.setDrawer(drawer);
}
@Override
public void setLeftDragBound(int leftDragBound) {
mSliderView.setLeftDragBound(leftDragBound);
}
@Override
public void setLeftTranslateFactor(float leftTranslateFactor) {
mSliderView.setLeftTranslateFactor(leftTranslateFactor);
}
public void setLeftView(int layout) {
setLeftView(LayoutInflater.inflate(get(), layout));
}
@Override
public void setLeftView(View view) {
mSliderView.setLeftView(view);
}
@Override
public void setLeftViewWidth(int leftViewWidth) {
mSliderView.setLeftViewWidth(leftViewWidth);
}
@Override
public void setOnSlideListener(OnSlideListener onSlideListener) {
mSliderView.setOnSlideListener(onSlideListener);
}
@Override
public void setOverlayActionBar(boolean overlayActionBar) {
mSliderView.setOverlayActionBar(overlayActionBar);
}
@Override
public void setProgress(int progress) {
mSliderView.setProgress(progress);
}
@Override
public void setRightDragBound(int rightDragBound) {
mSliderView.setRightDragBound(rightDragBound);
}
@Override
public void setRightTranslateFactor(float rightTranslateFactor) {
mSliderView.setRightTranslateFactor(rightTranslateFactor);
}
public void setRightView(int layout) {
setRightView(LayoutInflater.inflate(get(), layout));
}
@Override
public void setRightView(View view) {
mSliderView.setRightView(view);
}
@Override
public void setRightViewWidth(int rightViewWidth) {
mSliderView.setRightViewWidth(rightViewWidth);
}
@Override
public void setTouchMode(TouchMode touchMode) {
mSliderView.setTouchMode(touchMode);
}
@Override
public void setTouchModeLeftMargin(int touchModeLeftMargin) {
mSliderView.setTouchModeLeftMargin(touchModeLeftMargin);
}
@Override
public void setTouchModeMargin(int touchModeMargin) {
mSliderView.setTouchModeMargin(touchModeMargin);
}
@Override
public void setTouchModeRightMargin(int touchModeRightMargin) {
mSliderView.setTouchModeRightMargin(touchModeRightMargin);
}
@Override
public void setTranslateFactor(float translateFactor) {
mSliderView.setTranslateFactor(translateFactor);
}
@Override
public void showContentDelayed() {
mSliderView.showContentDelayed();
}
@Override
public void showContentView(boolean smooth) {
mSliderView.showContentView(smooth);
}
@Override
public void showLeftView(boolean smooth) {
mSliderView.showLeftView(smooth);
}
@Override
public void showRightView(boolean smooth) {
mSliderView.showRightView(smooth);
}
@Override
public void toggle() {
mSliderView.toggle();
}
}
public AddonSlider() {
register(Activity.class, AddonSliderA.class);
}
}