Dbrant has uploaded a new change for review. https://gerrit.wikimedia.org/r/309577
Change subject: Fix reading list fragment state when adding items. ...................................................................... Fix reading list fragment state when adding items. - When adding an item to a reading list from the Feed, and then switching directly to the Reading Lists tab, the list was not being updated, since the fragment wasn't getting any sort of event to update itself. This patch introduces an interface that a NavTab fragment can implement if it wants to receive a notification when it's been switched to. - Added Snackbars when adding a page to a reading list. The snackbar shown in PageActivity does not (yet) have an action to go to the selected reading list, since this will require activityResult logic (subsequent patch). Change-Id: Iaa5b0da37873777c4b5f1c91503f390e49aecf0a --- M app/src/main/java/org/wikipedia/MainFragment.java M app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java M app/src/main/java/org/wikipedia/page/PageActivity.java M app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java M app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java 5 files changed, 53 insertions(+), 26 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/77/309577/1 diff --git a/app/src/main/java/org/wikipedia/MainFragment.java b/app/src/main/java/org/wikipedia/MainFragment.java index 88dd198..3c4c4d8 100644 --- a/app/src/main/java/org/wikipedia/MainFragment.java +++ b/app/src/main/java/org/wikipedia/MainFragment.java @@ -69,8 +69,8 @@ public class MainFragment extends Fragment implements BackPressedHandler, FeedFragment.Callback, NearbyFragment.Callback, HistoryFragment.Callback, ReadingListsFragment.Callback, - SearchFragment.Callback, SearchResultsFragment.Callback, - LinkPreviewDialog.Callback { + SearchFragment.Callback, SearchResultsFragment.Callback, LinkPreviewDialog.Callback, + AddToReadingListDialog.Callback { @BindView(R.id.fragment_main_view_pager) ViewPager viewPager; @BindView(R.id.view_nav_view_pager_tab_layout) TabLayout tabLayout; private Unbinder unbinder; @@ -396,6 +396,17 @@ } @Override + public void showReadingListAddedMessage(@NonNull String message) { + FeedbackUtil.makeSnackbar(getActivity(), message, FeedbackUtil.LENGTH_DEFAULT) + .setAction(R.string.reading_list_added_view_button, new View.OnClickListener() { + @Override + public void onClick(View v) { + viewPager.setCurrentItem(NavTab.READING_LISTS.code()); + } + }).show(); + } + + @Override public boolean onBackPressed() { Fragment fragment = ((NavTabFragmentPagerAdapter) viewPager.getAdapter()).getCurrentFragment(); if (searchFragment.onBackPressed()) { @@ -412,6 +423,10 @@ NavTab tab = NavTab.of(position); callback.onTabChanged(tab); } + Fragment fragment = ((NavTabFragmentPagerAdapter) viewPager.getAdapter()).getCurrentFragment(); + if (fragment instanceof NavTabFragmentPagerAdapter.NavTabChangedHandler) { + ((NavTabFragmentPagerAdapter.NavTabChangedHandler) fragment).onTabSelected(); + } } private void showLinkPreview(PageTitle title, int entrySource, @Nullable Location location) { diff --git a/app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java b/app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java index 288e771..36c31ec 100644 --- a/app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java +++ b/app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java @@ -9,6 +9,10 @@ public class NavTabFragmentPagerAdapter extends FragmentPagerAdapter { private Fragment currentFragment; + public interface NavTabChangedHandler { + void onTabSelected(); + } + public NavTabFragmentPagerAdapter(FragmentManager mgr) { super(mgr); } diff --git a/app/src/main/java/org/wikipedia/page/PageActivity.java b/app/src/main/java/org/wikipedia/page/PageActivity.java index 259980e..98a8fb0 100644 --- a/app/src/main/java/org/wikipedia/page/PageActivity.java +++ b/app/src/main/java/org/wikipedia/page/PageActivity.java @@ -18,7 +18,6 @@ import android.support.annotation.VisibleForTesting; import android.support.design.widget.BottomSheetDialog; import android.support.design.widget.BottomSheetDialogFragment; -import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; @@ -86,8 +85,8 @@ import static org.wikipedia.util.UriUtil.visitInExternalBrowser; public class PageActivity extends ThemedActionBarActivity implements PageFragment.Callback, - LinkPreviewDialog.Callback, SearchFragment.Callback, - SearchResultsFragment.Callback, WiktionaryDialog.Callback { + LinkPreviewDialog.Callback, SearchFragment.Callback, SearchResultsFragment.Callback, + WiktionaryDialog.Callback, AddToReadingListDialog.Callback { public static final String ACTION_PAGE_FOR_TITLE = "org.wikipedia.page_for_title"; public static final String ACTION_SHOW_TAB_LIST = "org.wikipedia.show_tab_list"; @@ -216,10 +215,7 @@ public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: - if (shouldRecreateMainActivity()) { - startActivity(getSupportParentActivityIntent()); - } - finish(); + goToParentActivity(); return true; default: return super.onOptionsItemSelected(item); @@ -439,15 +435,9 @@ FeedbackUtil.showAddToListDialog(title, source, bottomSheetPresenter, listDialogDismissListener); } - public void showReadingListAddedSnackbar(String message) { - Snackbar snackbar = FeedbackUtil.makeSnackbar(this, message, FeedbackUtil.LENGTH_DEFAULT); - snackbar.setAction(R.string.reading_list_added_view_button, new View.OnClickListener() { - @Override - public void onClick(View v) { - // TODO: finish this activity with a result that signals MainActivity to show reading lists. - } - }); - snackbar.show(); + @Override + public void showReadingListAddedMessage(@NonNull String message) { + FeedbackUtil.makeSnackbar(this, message, FeedbackUtil.LENGTH_DEFAULT).show(); } // Note: back button first handled in {@link #onOptionsItemSelected()}; @@ -660,6 +650,17 @@ pageFragment.getShareHandler().showWiktionaryDefinition(term); } + private void goToParentActivity(@Nullable String result) { + + } + + private void goToParentActivity() { + if (shouldRecreateMainActivity()) { + startActivity(getSupportParentActivityIntent()); + } + finish(); + } + @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) private void showTabList() { if (isDestroyed()) { diff --git a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java index ec9ad49..527cd06 100644 --- a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java +++ b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java @@ -57,7 +57,7 @@ } public interface Callback { - void showReadingListAddedMessage(@NonNull String message, boolean isOnboarding); + void showReadingListAddedMessage(@NonNull String message); } private PageTitle pageTitle; @@ -66,7 +66,6 @@ private View onboardingContainer; private View onboardingButton; private InvokeSource invokeSource; - private boolean isOnboarding; private CreateButtonClickListener createClickListener = new CreateButtonClickListener(); private List<ReadingList> readingLists = new ArrayList<>(); private DialogInterface.OnDismissListener dismissListener; @@ -131,7 +130,7 @@ } private void checkAndShowOnboarding() { - isOnboarding = WikipediaApp.getInstance().getOnboardingStateMachine().isReadingListTutorialEnabled(); + boolean isOnboarding = WikipediaApp.getInstance().getOnboardingStateMachine().isReadingListTutorialEnabled(); onboardingButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -204,14 +203,14 @@ Callback callback = callback(); if (contains) { if (callback != null) { - callback.showReadingListAddedMessage(getString(R.string.reading_list_already_exists), isOnboarding); + callback.showReadingListAddedMessage(getString(R.string.reading_list_already_exists)); } } else { if (callback != null) { callback.showReadingListAddedMessage(TextUtils.isEmpty(readingList.getTitle()) ? getString(R.string.reading_list_added_to_unnamed) : String.format(getString(R.string.reading_list_added_to_named), - readingList.getTitle()), isOnboarding); + readingList.getTitle())); } new ReadingListsFunnel(pageTitle.getSite()).logAddToList(readingList, readingLists.size(), invokeSource); diff --git a/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java b/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java index 2d27b4f..8a9702f 100644 --- a/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java +++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java @@ -25,6 +25,7 @@ import org.wikipedia.analytics.ReadingListsFunnel; import org.wikipedia.concurrency.CallbackTask; import org.wikipedia.history.HistoryEntry; +import org.wikipedia.navtab.NavTabFragmentPagerAdapter; import org.wikipedia.page.PageTitle; import org.wikipedia.readinglist.page.ReadingListPage; import org.wikipedia.readinglist.page.database.ReadingListDaoProxy; @@ -40,7 +41,8 @@ import butterknife.OnPageChange; import butterknife.Unbinder; -public class ReadingListsFragment extends Fragment implements BackPressedHandler { +public class ReadingListsFragment extends Fragment implements BackPressedHandler, + NavTabFragmentPagerAdapter.NavTabChangedHandler { public interface Callback { void onLoadPage(PageTitle title, HistoryEntry entry); } @@ -125,7 +127,7 @@ @Override public void onResume() { super.onResume(); - pager.setCurrentItem(PAGE_READING_LISTS); + onTabSelected(); } @Override @@ -163,6 +165,12 @@ default: return super.onOptionsItemSelected(item); } + } + + @Override + public void onTabSelected() { + pager.setCurrentItem(PAGE_READING_LISTS); + updateLists(); } @OnPageChange(R.id.pager) void onListChanged() { @@ -208,7 +216,7 @@ } } - class ReadingListPagerAdapter extends PagerAdapter { + private class ReadingListPagerAdapter extends PagerAdapter { @Override public Object instantiateItem(ViewGroup collection, int position) { int resId; -- To view, visit https://gerrit.wikimedia.org/r/309577 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iaa5b0da37873777c4b5f1c91503f390e49aecf0a Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <dbr...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits