jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/404617 )
Change subject: Dynamically update status of save&share button in Randomizer
page
......................................................................
Dynamically update status of save&share button in Randomizer page
- Default => disable button
- When card has been loaded => enable button
- Add status into SparseBooleanArray for a beter performance
Bug: T184869
Change-Id: I4930582bff28331b5b1a002e1b5a0166e1ce769c
---
M app/src/main/java/org/wikipedia/random/RandomFragment.java
M app/src/main/java/org/wikipedia/random/RandomItemFragment.java
2 files changed, 40 insertions(+), 2 deletions(-)
Approvals:
Dbrant: Looks good to me, approved
jenkins-bot: Verified
diff --git a/app/src/main/java/org/wikipedia/random/RandomFragment.java
b/app/src/main/java/org/wikipedia/random/RandomFragment.java
index 29e2c2e..6bb1356 100644
--- a/app/src/main/java/org/wikipedia/random/RandomFragment.java
+++ b/app/src/main/java/org/wikipedia/random/RandomFragment.java
@@ -11,6 +11,7 @@
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
+import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -44,8 +45,13 @@
private Unbinder unbinder;
private ExclusiveBottomSheetPresenter bottomSheetPresenter = new
ExclusiveBottomSheetPresenter();
private boolean saveButtonState;
+ private SparseBooleanArray loadSatusMap = new SparseBooleanArray();
private ViewPagerListener viewPagerListener = new ViewPagerListener();
@Nullable private RandomizerFunnel funnel;
+
+ interface Callback {
+ void onChildLoaded();
+ }
@NonNull
public static RandomFragment newInstance() {
@@ -65,6 +71,7 @@
randomPager.setPageTransformer(true, new RandomPagerTransformer());
randomPager.addOnPageChangeListener(viewPagerListener);
+ enableSaveShareButton(false);
updateBackButton(0);
if (savedInstanceState != null && randomPager.getCurrentItem() == 0 &&
getTopTitle() != null) {
updateSaveShareButton(getTopTitle());
@@ -161,6 +168,12 @@
});
}
+ @SuppressWarnings("magicnumber")
+ public void enableSaveShareButton(boolean enable) {
+ saveButton.setClickable(enable);
+ saveButton.setAlpha(enable ? 1f : 0.5f);
+ }
+
@Nullable private PageTitle getTopTitle() {
FragmentManager fm = getFragmentManager();
for (Fragment f : fm.getFragments()) {
@@ -172,7 +185,8 @@
return null;
}
- private class RandomItemAdapter extends FragmentPagerAdapter {
+ private class RandomItemAdapter extends FragmentPagerAdapter{
+
RandomItemAdapter(AppCompatActivity activity) {
super(activity.getSupportFragmentManager());
}
@@ -184,8 +198,17 @@
@Override
public Fragment getItem(int position) {
+
+ loadSatusMap.append(position, false);
RandomItemFragment f = RandomItemFragment.newInstance();
f.setPagerPosition(position);
+ f.setCallback(() -> {
+ if (randomPager != null && randomPager.getCurrentItem() ==
position) {
+ enableSaveShareButton(f.isLoadComplete());
+ }
+ loadSatusMap.append(position, f.isLoadComplete());
+ });
+
return f;
}
}
@@ -247,6 +270,8 @@
}
nextPageSelectedAutomatic = false;
prevPosition = position;
+
+ enableSaveShareButton(loadSatusMap.get(position));
}
@Override
diff --git a/app/src/main/java/org/wikipedia/random/RandomItemFragment.java
b/app/src/main/java/org/wikipedia/random/RandomItemFragment.java
index 5aa5360..619fc74 100644
--- a/app/src/main/java/org/wikipedia/random/RandomItemFragment.java
+++ b/app/src/main/java/org/wikipedia/random/RandomItemFragment.java
@@ -39,10 +39,16 @@
@Nullable private RbPageSummary summary;
private int pagerPosition = -1;
private View view;
+ private boolean loadComplete;
+ private RandomFragment.Callback callback;
@NonNull
public static RandomItemFragment newInstance() {
return new RandomItemFragment();
+ }
+
+ public void setCallback(RandomFragment.Callback cb) {
+ callback = cb;
}
public void setPagerPosition(int position) {
@@ -51,6 +57,10 @@
public int getPagerPosition() {
return pagerPosition;
+ }
+
+ public boolean isLoadComplete() {
+ return loadComplete;
}
@Override
@@ -80,10 +90,13 @@
}
private void getRandomPage() {
-
new
RandomSummaryClient().request(WikipediaApp.getInstance().getWikiSite(), new
RandomSummaryClient.Callback() {
@Override
public void onSuccess(@NonNull Call<RbPageSummary> call, @NonNull
RbPageSummary pageSummary) {
+
+ loadComplete = true;
+ callback.onChildLoaded();
+
if (!isAdded()) {
return;
}
--
To view, visit https://gerrit.wikimedia.org/r/404617
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I4930582bff28331b5b1a002e1b5a0166e1ce769c
Gerrit-PatchSet: 4
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Cooltey <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Cooltey <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: Sharvaniharan <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits