Skip to content

Commit 52d5ec2

Browse files
committed
replace Chris Banes' PullToRefresh by the native SwipeToRefresh view
1 parent 9d2d48b commit 52d5ec2

File tree

4 files changed

+41
-184
lines changed

4 files changed

+41
-184
lines changed

WordPressUtils/build.gradle

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ repositories {
1919
dependencies {
2020
compile 'commons-lang:commons-lang:2.6'
2121
compile 'com.mcxiaoke.volley:library:1.0.+'
22-
compile 'com.github.castorflex.smoothprogressbar:library:0.4.0'
23-
compile 'org.wordpress:pulltorefresh-main:0.9.7@aar' // org.wordpress version includes some fixes
24-
compile 'com.android.support:support-v13:19.1.0'
22+
compile 'com.android.support:support-v13:21.0.+'
2523
}
2624

2725
android {

WordPressUtils/src/main/java/org/wordpress/android/util/ptr/PullToRefreshHeaderTransformer.java

Lines changed: 0 additions & 129 deletions
This file was deleted.

WordPressUtils/src/main/java/org/wordpress/android/util/ptr/PullToRefreshHelper.java

Lines changed: 33 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77
import android.content.IntentFilter;
88
import android.content.SharedPreferences;
99
import android.content.SharedPreferences.Editor;
10+
import android.content.res.TypedArray;
1011
import android.preference.PreferenceManager;
1112
import android.support.v4.content.LocalBroadcastManager;
12-
import android.view.View;
13+
import android.support.v4.widget.SwipeRefreshLayout;
14+
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
15+
import android.util.TypedValue;
1316

1417
import org.wordpress.android.util.R;
1518
import org.wordpress.android.util.ToastUtils;
@@ -20,87 +23,58 @@
2023
import java.util.HashSet;
2124
import java.util.Set;
2225

23-
import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh;
24-
import uk.co.senab.actionbarpulltorefresh.library.ActionBarPullToRefresh.SetupWizard;
25-
import uk.co.senab.actionbarpulltorefresh.library.Options;
26-
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout;
27-
import uk.co.senab.actionbarpulltorefresh.library.listeners.OnRefreshListener;
28-
import uk.co.senab.actionbarpulltorefresh.library.viewdelegates.ViewDelegate;
29-
3026
public class PullToRefreshHelper implements OnRefreshListener {
3127
public static final String BROADCAST_ACTION_REFRESH_MENU_PRESSED = "REFRESH_MENU_PRESSED";
3228
private static final String REFRESH_BUTTON_HIT_COUNT = "REFRESH_BUTTON_HIT_COUNT";
3329
private static final Set<Integer> TOAST_FREQUENCY = new HashSet<Integer>(Arrays.asList(1, 5, 10, 20, 40, 80, 160,
3430
320, 640));
35-
private PullToRefreshHeaderTransformer mHeaderTransformer;
36-
private PullToRefreshLayout mPullToRefreshLayout;
31+
private SwipeRefreshLayout mSwipeRefreshLayout;
3732
private RefreshListener mRefreshListener;
3833
private WeakReference<Activity> mActivityRef;
3934

40-
public PullToRefreshHelper(Activity activity, PullToRefreshLayout pullToRefreshLayout, RefreshListener listener) {
41-
init(activity, pullToRefreshLayout, listener, null);
35+
public PullToRefreshHelper(Activity activity, SwipeRefreshLayout swipeRefreshLayout, RefreshListener listener) {
36+
init(activity, swipeRefreshLayout, listener, null);
4237
}
4338

44-
public PullToRefreshHelper(Activity activity, PullToRefreshLayout pullToRefreshLayout, RefreshListener listener,
39+
public PullToRefreshHelper(Activity activity, SwipeRefreshLayout swipeRefreshLayout, RefreshListener listener,
4540
java.lang.Class<?> viewClass) {
46-
init(activity, pullToRefreshLayout, listener, viewClass);
41+
init(activity, swipeRefreshLayout, listener, viewClass);
4742
}
4843

49-
public void init(Activity activity, PullToRefreshLayout pullToRefreshLayout, RefreshListener listener,
44+
public void init(Activity activity, SwipeRefreshLayout swipeRefreshLayout, RefreshListener listener,
5045
java.lang.Class<?> viewClass) {
5146
mActivityRef = new WeakReference<Activity>(activity);
5247
mRefreshListener = listener;
53-
mPullToRefreshLayout = pullToRefreshLayout;
54-
mHeaderTransformer = new PullToRefreshHeaderTransformer();
55-
SetupWizard setupWizard = ActionBarPullToRefresh.from(activity).options(Options.create().headerTransformer(
56-
mHeaderTransformer).build()).allChildrenArePullable().listener(this);
57-
if (viewClass != null) {
58-
setupWizard.useViewDelegate(viewClass, new ViewDelegate() {
59-
@Override
60-
public boolean isReadyForPull(View view, float v, float v2) {
61-
return true;
62-
}
63-
}
64-
);
65-
}
66-
setupWizard.setup(mPullToRefreshLayout);
67-
// set network refresh mode as default
68-
setNetworkRefreshMode(true);
69-
mHeaderTransformer.setPullToRefreshAttacher(mPullToRefreshLayout.getAttacher());
70-
}
71-
72-
/**
73-
* Once set, each PTR action will check for network connectivity. If there is thes network is not available
74-
* (airplane mode for instance), the message will be changed from "Pull to refresh..." to "Can't refresh..."
75-
*/
76-
public void setNetworkRefreshMode(boolean refreshing) {
77-
mHeaderTransformer.setNetworkRefreshMode(refreshing);
48+
mSwipeRefreshLayout = swipeRefreshLayout;
49+
mSwipeRefreshLayout.setOnRefreshListener(this);
50+
final TypedArray styleAttrs = obtainStyledAttrsFromThemeAttr(activity, R.attr.refreshIndicatorColor,
51+
R.styleable.RefreshIndicator);
52+
int color = styleAttrs.getColor(R.styleable.RefreshIndicator_refreshIndicatorColor,
53+
android.R.color.holo_blue_dark);
54+
mSwipeRefreshLayout.setProgressBackgroundColor(color);
55+
mSwipeRefreshLayout.setColorSchemeResources(android.R.color.white, android.R.color.white, android.R.color.white,
56+
android.R.color.white);
7857
}
7958

8059
public void setRefreshing(boolean refreshing) {
81-
mHeaderTransformer.setShowProgressBarOnly(refreshing);
82-
mPullToRefreshLayout.setRefreshing(refreshing);
60+
mSwipeRefreshLayout.setRefreshing(refreshing);
8361
}
8462

8563
public boolean isRefreshing() {
86-
return mPullToRefreshLayout.isRefreshing();
64+
return mSwipeRefreshLayout.isRefreshing();
8765
}
8866

8967
@Override
90-
public void onRefreshStarted(View view) {
91-
if (mHeaderTransformer.isNetworkAvailableOrNotChecked()) {
92-
mRefreshListener.onRefreshStarted(view);
93-
} else {
94-
setRefreshing(false);
95-
}
68+
public void onRefresh() {
69+
mRefreshListener.onRefreshStarted();
9670
}
9771

9872
public interface RefreshListener {
99-
public void onRefreshStarted(View view);
73+
public void onRefreshStarted();
10074
}
10175

10276
public void setEnabled(boolean enabled) {
103-
mPullToRefreshLayout.setEnabled(enabled);
77+
mSwipeRefreshLayout.setEnabled(enabled);
10478
}
10579

10680
public void refreshAction() {
@@ -109,7 +83,7 @@ public void refreshAction() {
10983
return;
11084
}
11185
setRefreshing(true);
112-
mRefreshListener.onRefreshStarted(mPullToRefreshLayout);
86+
mRefreshListener.onRefreshStarted();
11387
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
11488
int refreshHits = preferences.getInt(REFRESH_BUTTON_HIT_COUNT, 0);
11589
refreshHits += 1;
@@ -143,6 +117,13 @@ public void unregisterReceiver(Context context) {
143117
}
144118
}
145119

120+
public static TypedArray obtainStyledAttrsFromThemeAttr(Context context, int themeAttr, int[] styleAttrs) {
121+
TypedValue outValue = new TypedValue();
122+
context.getTheme().resolveAttribute(themeAttr, outValue, true);
123+
int styleResId = outValue.resourceId;
124+
return context.obtainStyledAttributes(styleResId, styleAttrs);
125+
}
126+
146127
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
147128
@Override
148129
public void onReceive(Context context, Intent intent) {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<attr name="swipeToRefreshStyle" format="reference"/>
4+
<declare-styleable name="RefreshIndicator">
5+
<attr name="refreshIndicatorColor" format="reference|color"/>
6+
</declare-styleable>
7+
</resources>

0 commit comments

Comments
 (0)