33import android .animation .AnimatorSet ;
44import android .animation .ObjectAnimator ;
55import android .app .Activity ;
6+ import android .content .Context ;
67import android .view .View ;
78import android .view .ViewGroup ;
89import android .view .animation .Animation ;
10+ import android .widget .TextView ;
911
12+ import org .wordpress .android .util .NetworkUtils ;
1013import org .wordpress .android .util .R ;
1114
1215import uk .co .senab .actionbarpulltorefresh .library .DefaultHeaderTransformer ;
1518public class PullToRefreshHeaderTransformer extends DefaultHeaderTransformer {
1619 private View mHeaderView ;
1720 private ViewGroup mContentLayout ;
21+ private TextView mTextView ;
1822 private long mAnimationDuration ;
1923 private boolean mShowProgressBarOnly ;
2024 private Animation mHeaderOutAnimation ;
2125 private OnTopScrollChangedListener mOnTopScrollChangedListener ;
26+ private boolean mIsNetworkRefreshMode ;
27+ private Context mContext ;
2228
2329 public interface OnTopScrollChangedListener {
2430 public void onTopScrollChanged (boolean scrolledOnTop );
@@ -28,11 +34,21 @@ public void setShowProgressBarOnly(boolean progressBarOnly) {
2834 mShowProgressBarOnly = progressBarOnly ;
2935 }
3036
37+ public boolean isNetworkRefreshMode () {
38+ return mIsNetworkRefreshMode ;
39+ }
40+
41+ public void setNetworkRefreshMode (boolean isNetworkRefresh ) {
42+ mIsNetworkRefreshMode = isNetworkRefresh ;
43+ }
44+
3145 @ Override
3246 public void onViewCreated (Activity activity , View headerView ) {
3347 super .onViewCreated (activity , headerView );
48+ mContext = activity .getBaseContext ();
3449 mHeaderView = headerView ;
3550 mContentLayout = (ViewGroup ) headerView .findViewById (R .id .ptr_content );
51+ mTextView = (TextView ) headerView .findViewById (R .id .ptr_text );
3652 mAnimationDuration = activity .getResources ().getInteger (android .R .integer .config_shortAnimTime );
3753 }
3854
@@ -51,6 +67,12 @@ public boolean showHeaderView() {
5167 boolean changeVis = mHeaderView .getVisibility () != View .VISIBLE ;
5268 mContentLayout .setVisibility (View .VISIBLE );
5369 if (changeVis ) {
70+ if (isNetworkAvailableOrNotChecked ()) {
71+ mTextView .setText (mContext .getText (R .string .pull_to_refresh_pull_label ));
72+ } else {
73+ // Network mode enabled and network not available: show a different PTR label
74+ mTextView .setText (mContext .getText (R .string .pull_to_refresh_pull_no_network_label ));
75+ }
5476 mHeaderView .setVisibility (View .VISIBLE );
5577 AnimatorSet animSet = new AnimatorSet ();
5678 ObjectAnimator alphaAnim = ObjectAnimator .ofFloat (mHeaderView , "alpha" , 0f , 1f );
@@ -96,4 +118,8 @@ public void onTopScrollChanged(boolean scrolledOnTop) {
96118 public void setOnTopScrollChangedListener (OnTopScrollChangedListener listener ) {
97119 mOnTopScrollChangedListener = listener ;
98120 }
121+
122+ public boolean isNetworkAvailableOrNotChecked () {
123+ return !mIsNetworkRefreshMode || NetworkUtils .isNetworkAvailable (mContext );
124+ }
99125}
0 commit comments