/*
* Copyright 2013 Chris Banes
*
* 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 uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.FrameLayout;
import uk.co.senab.actionbarpulltorefresh.library.EnvironmentDelegate;
import uk.co.senab.actionbarpulltorefresh.library.HeaderTransformer;
import uk.co.senab.actionbarpulltorefresh.library.Options;
class AbcPullToRefreshAttacher extends uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher {
private FrameLayout mHeaderViewWrapper;
protected AbcPullToRefreshAttacher(Activity activity, Options options) {
super(activity, options);
}
@Override
protected void addHeaderViewToActivity(View headerViewLayout, Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
super.addHeaderViewToActivity(headerViewLayout, activity);
} else {
// On older devices we need to wrap the HeaderView in a FrameLayout otherwise
// visibility changes do not take effect
mHeaderViewWrapper = new FrameLayout(activity);
mHeaderViewWrapper.addView(headerViewLayout);
super.addHeaderViewToActivity(mHeaderViewWrapper, activity);
}
}
@Override
protected void removeHeaderViewFromActivity(View headerViewLayout, Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
super.removeHeaderViewFromActivity(headerViewLayout, activity);
} else if (mHeaderViewWrapper != null) {
super.removeHeaderViewFromActivity(mHeaderViewWrapper, activity);
mHeaderViewWrapper = null;
}
}
@Override
protected EnvironmentDelegate createDefaultEnvironmentDelegate() {
return new AbcEnvironmentDelegate();
}
@Override
protected HeaderTransformer createDefaultHeaderTransformer() {
return new AbcDefaultHeaderTransformer();
}
public static class AbcEnvironmentDelegate implements EnvironmentDelegate {
/**
* @return Context which should be used for inflating the header layout
*/
public Context getContextForInflater(Activity activity) {
Context context = null;
ActionBar ab = ((ActionBarActivity) activity).getSupportActionBar();
if (ab != null) {
context = ab.getThemedContext();
}
if (context == null) {
context = activity;
}
return context;
}
}
}