77import android .content .IntentFilter ;
88import android .content .SharedPreferences ;
99import android .content .SharedPreferences .Editor ;
10+ import android .content .res .TypedArray ;
1011import android .preference .PreferenceManager ;
1112import 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
1417import org .wordpress .android .util .R ;
1518import org .wordpress .android .util .ToastUtils ;
2023import java .util .HashSet ;
2124import 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-
3026public 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 ) {
0 commit comments