aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2019-08-26 10:03:44 +0000
committerAlex Ning <chineseperson5@gmail.com>2019-08-26 10:03:44 +0000
commit2a356aa12e67954043cf72732719bc2093e1fc6e (patch)
tree6fea9e8bf6e78c3f69970b1f95dd8b70910df017
parent864eb2126983977f9d7d7db12592fff0c8ede1cb (diff)
downloadinfinity-for-reddit-2a356aa12e67954043cf72732719bc2093e1fc6e.tar
infinity-for-reddit-2a356aa12e67954043cf72732719bc2093e1fc6e.tar.gz
infinity-for-reddit-2a356aa12e67954043cf72732719bc2093e1fc6e.tar.bz2
infinity-for-reddit-2a356aa12e67954043cf72732719bc2093e1fc6e.tar.lz
infinity-for-reddit-2a356aa12e67954043cf72732719bc2093e1fc6e.tar.xz
infinity-for-reddit-2a356aa12e67954043cf72732719bc2093e1fc6e.tar.zst
infinity-for-reddit-2a356aa12e67954043cf72732719bc2093e1fc6e.zip
Don't start lazy mode if there is no posts. Stop lazy mode when refreshing.
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/AccountPostsActivity.java11
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java4
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java23
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java22
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java13
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ViewUserDetailActivity.java18
-rw-r--r--app/src/main/res/values/strings.xml1
7 files changed, 59 insertions, 33 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AccountPostsActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AccountPostsActivity.java
index b3d50c2f..786ec3b2 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/AccountPostsActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AccountPostsActivity.java
@@ -240,11 +240,12 @@ public class AccountPostsActivity extends AppCompatActivity implements UserThing
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
collapsingToolbarLayout.setLayoutParams(params);
} else {
- ((FragmentCommunicator) mFragment).startLazyMode();
- isInLazyMode = true;
- lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
- params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
- collapsingToolbarLayout.setLayoutParams(params);
+ if(((FragmentCommunicator) mFragment).startLazyMode()) {
+ isInLazyMode = true;
+ lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
+ params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
+ collapsingToolbarLayout.setLayoutParams(params);
+ }
}
return true;
case android.R.id.home:
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java
index f61d3beb..c50ef12c 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FragmentCommunicator.java
@@ -3,7 +3,9 @@ package ml.docilealligator.infinityforreddit;
interface FragmentCommunicator {
void refresh();
default void changeNSFW(boolean nsfw) {};
- default void startLazyMode() {}
+ default boolean startLazyMode() {
+ return false;
+ }
default void stopLazyMode() {}
default void resumeLazyMode(boolean resumeNow) {}
default void pauseLazyMode(boolean startTimer) {}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java
index 8488adbc..3791b5cd 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java
@@ -719,11 +719,12 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
collapsingToolbarLayout.setLayoutParams(params);
} else {
- sectionsPagerAdapter.startLazyMode();
- isInLazyMode = true;
- lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
- params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
- collapsingToolbarLayout.setLayoutParams(params);
+ if(sectionsPagerAdapter.startLazyMode()) {
+ isInLazyMode = true;
+ lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
+ params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_NO_SCROLL);
+ collapsingToolbarLayout.setLayoutParams(params);
+ }
}
return true;
}
@@ -935,17 +936,17 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
return fragment;
}
- void startLazyMode() {
+ boolean startLazyMode() {
switch (viewPager.getCurrentItem()) {
case 0:
- ((FragmentCommunicator) frontPagePostFragment).startLazyMode();
- break;
+ return ((FragmentCommunicator) frontPagePostFragment).startLazyMode();
case 1:
- ((FragmentCommunicator) popularPostFragment).startLazyMode();
- break;
+ return ((FragmentCommunicator) popularPostFragment).startLazyMode();
case 2:
- ((FragmentCommunicator) allPostFragment).startLazyMode();
+ return ((FragmentCommunicator) allPostFragment).startLazyMode();
}
+
+ return false;
}
void stopLazyMode() {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java
index 493d0a27..b9275e62 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java
@@ -75,6 +75,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
private boolean isInLazyMode = false;
private boolean isLazyModePaused = false;
+ private boolean hasPost = false;
private PostRecyclerViewAdapter mAdapter;
private RecyclerView.SmoothScroller smoothScroller;
@@ -367,16 +368,19 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
});
mPostViewModel.hasPost().observe(this, hasPost -> {
+ this.hasPost = hasPost;
if(hasPost) {
mFetchPostInfoLinearLayout.setVisibility(View.GONE);
} else {
+ if(isInLazyMode) {
+ stopLazyMode();
+ }
+
showErrorView(R.string.no_posts);
}
});
- mPostViewModel.getPaginationNetworkState().observe(this, networkState -> {
- mAdapter.setNetworkState(networkState);
- });
+ mPostViewModel.getPaginationNetworkState().observe(this, networkState -> mAdapter.setNetworkState(networkState));
return rootView;
}
@@ -399,6 +403,9 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
@Override
public void refresh() {
+ if(isInLazyMode) {
+ stopLazyMode();
+ }
mPostViewModel.refresh();
}
@@ -417,7 +424,12 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
}
@Override
- public void startLazyMode() {
+ public boolean startLazyMode() {
+ if(!hasPost) {
+ Toast.makeText(activity, R.string.no_posts_no_lazy_mode, Toast.LENGTH_SHORT).show();
+ return false;
+ }
+
isInLazyMode = true;
isLazyModePaused = false;
@@ -426,6 +438,8 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Toast.makeText(activity, getString(R.string.lazy_mode_start, lazyModeInterval),
Toast.LENGTH_SHORT).show();
+
+ return true;
}
@Override
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java
index bf718932..6527c928 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java
@@ -493,11 +493,14 @@ public class ViewSubredditDetailActivity extends AppCompatActivity implements So
collapsingToolbarLayout.setLayoutParams(params);
} else {
isInLazyMode = true;
- ((FragmentCommunicator) mFragment).startLazyMode();
- lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
- appBarLayout.setExpanded(false);
- params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
- collapsingToolbarLayout.setLayoutParams(params);
+ if(((FragmentCommunicator) mFragment).startLazyMode()) {
+ lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
+ appBarLayout.setExpanded(false);
+ params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
+ collapsingToolbarLayout.setLayoutParams(params);
+ } else {
+ isInLazyMode = false;
+ }
}
}
return false;
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewUserDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewUserDetailActivity.java
index e21789f3..939ca6d9 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewUserDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewUserDetailActivity.java
@@ -546,11 +546,14 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
collapsingToolbarLayout.setLayoutParams(params);
} else {
isInLazyMode = true;
- sectionsPagerAdapter.startLazyMode();
- lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
- appBarLayout.setExpanded(false);
- params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
- collapsingToolbarLayout.setLayoutParams(params);
+ if(sectionsPagerAdapter.startLazyMode()) {
+ lazyModeItem.setTitle(R.string.action_stop_lazy_mode);
+ appBarLayout.setExpanded(false);
+ params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED);
+ collapsingToolbarLayout.setLayoutParams(params);
+ } else {
+ isInLazyMode = false;
+ }
}
return true;
}
@@ -708,10 +711,11 @@ public class ViewUserDetailActivity extends AppCompatActivity implements UserThi
}
}
- void startLazyMode() {
+ boolean startLazyMode() {
if(postFragment != null) {
- ((FragmentCommunicator) postFragment).startLazyMode();
+ return ((FragmentCommunicator) postFragment).startLazyMode();
}
+ return false;
}
void stopLazyMode() {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2d19ae76..762a5bf6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -102,6 +102,7 @@
<string name="app_label">Infinity</string>
<string name="search_hint">Search anything</string>
+ <string name="no_posts_no_lazy_mode">No posts available</string>
<string name="lazy_mode_start">Lazy Mode starts in %1$.1fs</string>
<string name="lazy_mode_stop">Lazy Mode stopped</string>