diff options
author | Danilo Ercoli <ercoli@gmail.com> | 2015-02-10 17:55:39 +0100 |
---|---|---|
committer | Danilo Ercoli <ercoli@gmail.com> | 2015-02-10 17:55:39 +0100 |
commit | a2cfe638830e983fe231d4408e10adda12ef1582 (patch) | |
tree | e92dfb28e187e497c38ee235845e289570db5c71 /WordPress/src/main/java/org/wordpress/android/ui/stats | |
parent | 4ae9dba5ed1e3b752ed5493d3e66edc64d99bc2f (diff) | |
download | gradle-perf-android-medium-a2cfe638830e983fe231d4408e10adda12ef1582.tar.gz |
Duplicate the pagination item to the top of screen. Pagination is currently used in "Followers" module only.
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/stats')
3 files changed, 92 insertions, 41 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbstractListFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbstractListFragment.java index 371e034f2..22343962d 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbstractListFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsAbstractListFragment.java @@ -54,10 +54,16 @@ public abstract class StatsAbstractListFragment extends StatsAbstractFragment { protected LinearLayout mTopPagerContainer; protected int mTopPagerSelectedButtonIndex = 0; - protected LinearLayout mPaginationContainer; - protected Button mPaginationGoBackButton; - protected Button mPaginationGoForwardButton; - protected TextView mPaginationText; + // Bottom and Top Pagination for modules that has pagination enabled. + protected LinearLayout mBottomPaginationContainer; + protected Button mBottomPaginationGoBackButton; + protected Button mBottomPaginationGoForwardButton; + protected TextView mBottomPaginationText; + protected LinearLayout mTopPaginationContainer; + protected Button mTopPaginationGoBackButton; + protected Button mTopPaginationGoForwardButton; + protected TextView mTopPaginationText; + protected LinearLayout mEmptyModulePlaceholder; protected Serializable[] mDatamodels; @@ -106,10 +112,17 @@ public abstract class StatsAbstractListFragment extends StatsAbstractFragment { mListContainer = (LinearLayout) view.findViewById(R.id.stats_list_container); mViewAll = (Button) view.findViewById(R.id.btnViewAll); mTopPagerContainer = (LinearLayout) view.findViewById(R.id.stats_pager_tabs); - mPaginationContainer = (LinearLayout) view.findViewById(R.id.stats_pagination_container); - mPaginationGoBackButton = (Button) view.findViewById(R.id.stats_pagination_go_back); - mPaginationGoForwardButton = (Button) view.findViewById(R.id.stats_pagination_go_forward); - mPaginationText = (TextView) view.findViewById(R.id.stats_pagination_text); + + // Load pagination items + mBottomPaginationContainer = (LinearLayout) view.findViewById(R.id.stats_bottom_pagination_container); + mBottomPaginationGoBackButton = (Button) mBottomPaginationContainer.findViewById(R.id.stats_pagination_go_back); + mBottomPaginationGoForwardButton = (Button) mBottomPaginationContainer.findViewById(R.id.stats_pagination_go_forward); + mBottomPaginationText = (TextView) mBottomPaginationContainer.findViewById(R.id.stats_pagination_text); + mTopPaginationContainer = (LinearLayout) view.findViewById(R.id.stats_top_pagination_container); + mTopPaginationContainer.setBackgroundResource(R.drawable.stats_pagination_item_background); + mTopPaginationGoBackButton = (Button) mTopPaginationContainer.findViewById(R.id.stats_pagination_go_back); + mTopPaginationGoForwardButton = (Button) mTopPaginationContainer.findViewById(R.id.stats_pagination_go_forward); + mTopPaginationText = (TextView) mTopPaginationContainer.findViewById(R.id.stats_pagination_text); return view; } @@ -182,7 +195,8 @@ public abstract class StatsAbstractListFragment extends StatsAbstractFragment { mListContainer.setVisibility(View.GONE); mList.setVisibility(View.GONE); mViewAll.setVisibility(View.GONE); - mPaginationContainer.setVisibility(View.GONE); + mBottomPaginationContainer.setVisibility(View.GONE); + mTopPaginationContainer.setVisibility(View.GONE); mEmptyModulePlaceholder.setVisibility(View.VISIBLE); } @@ -207,7 +221,8 @@ public abstract class StatsAbstractListFragment extends StatsAbstractFragment { mListContainer.setVisibility(View.GONE); mList.setVisibility(View.GONE); mViewAll.setVisibility(View.GONE); - mPaginationContainer.setVisibility(View.GONE); + mBottomPaginationContainer.setVisibility(View.GONE); + mTopPaginationContainer.setVisibility(View.GONE); } else { mEmptyLabel.setVisibility(View.GONE); mListContainer.setVisibility(View.VISIBLE); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsFollowersFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsFollowersFragment.java index 3c6de9aeb..e915fca4e 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsFollowersFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsFollowersFragment.java @@ -125,69 +125,106 @@ public class StatsFollowersFragment extends StatsAbstractListFragment { ArrayAdapter adapter = new DotComFollowerAdapter(getActivity(), followersModel.getFollowers()); StatsUIHelper.reloadLinearLayout(getActivity(), adapter, mList, getMaxNumberOfItemsToShowInList()); showHideNoResultsUI(false); + + if (mTopPagerSelectedButtonIndex == 0) { + mTotalsLabel.setText(getTotalFollowersLabel(followersModel.getTotalWPCom())); + } else { + mTotalsLabel.setText(getTotalFollowersLabel(followersModel.getTotalEmail())); + } + if (isSingleView()) { if (followersModel.getPages() > 1) { - mPaginationContainer.setVisibility(View.VISIBLE); - mPaginationText.setText( - String.format( - getString(R.string.stats_pagination_label), - followersModel.getPage(), - followersModel.getPages() - ) + mBottomPaginationContainer.setVisibility(View.VISIBLE); + mTopPaginationContainer.setVisibility(View.VISIBLE); + String paginationLabel = String.format( + getString(R.string.stats_pagination_label), + followersModel.getPage(), + followersModel.getPages() ); - mPaginationGoBackButton.setEnabled(true); - mPaginationGoForwardButton.setEnabled(true); + mBottomPaginationText.setText(paginationLabel); + mTopPaginationText.setText(paginationLabel); + setNavigationButtonsEnabled(true); + // Setting up back buttons if (followersModel.getPage() == 1) { - mPaginationGoBackButton.setVisibility(View.INVISIBLE); + // first page. No go back buttons + setNavigationBackButtonsVisibility(false); } else { - mPaginationGoBackButton.setVisibility(View.VISIBLE); - mPaginationGoBackButton.setOnClickListener(new View.OnClickListener() { + setNavigationBackButtonsVisibility(true); + View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View v) { - mPaginationGoBackButton.setEnabled(false); - mPaginationGoForwardButton.setEnabled(false); + setNavigationButtonsEnabled(false); mMoreDataListener.onMoreDataRequested( getSectionsToUpdate()[mTopPagerSelectedButtonIndex], followersModel.getPage() - 1 ); } - }); + }; + mBottomPaginationGoBackButton.setOnClickListener(clickListener); + mTopPaginationGoBackButton.setOnClickListener(clickListener); } + // Setting up forward buttons if (followersModel.getPage() == followersModel.getPages()) { - mPaginationGoForwardButton.setVisibility(View.INVISIBLE); + // last page. No go forward buttons + setNavigationForwardButtonsVisibility(false); } else { - mPaginationGoForwardButton.setVisibility(View.VISIBLE); - mPaginationGoForwardButton.setOnClickListener(new View.OnClickListener() { + setNavigationForwardButtonsVisibility(true); + View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View v) { - mPaginationGoBackButton.setEnabled(false); - mPaginationGoForwardButton.setEnabled(false); + setNavigationButtonsEnabled(false); mMoreDataListener.onMoreDataRequested( getSectionsToUpdate()[mTopPagerSelectedButtonIndex], followersModel.getPage() + 1 ); } - }); + }; + mBottomPaginationGoForwardButton.setOnClickListener(clickListener); + mTopPaginationGoForwardButton.setOnClickListener(clickListener); } + + // Change the total number of followers label by adding the current paging info + int startIndex = followersModel.getPage() * StatsViewAllActivity.MAX_RESULTS_PER_PAGE - StatsViewAllActivity.MAX_RESULTS_PER_PAGE + 1; + int endIndex = startIndex + followersModel.getFollowers().size() - 1; + String pagedLabel = getString( + mTopPagerSelectedButtonIndex == 0 ? R.string.stats_followers_total_wpcom_paged : R.string.stats_followers_total_email_paged, + startIndex, + endIndex, + FormatUtils.formatDecimal(mTopPagerSelectedButtonIndex == 0 ? followersModel.getTotalWPCom() : followersModel.getTotalEmail()) + ); + mTotalsLabel.setText(pagedLabel); } else { - mPaginationContainer.setVisibility(View.INVISIBLE); + // No paging required. Hide the controls. + mBottomPaginationContainer.setVisibility(View.GONE); + mTopPaginationContainer.setVisibility(View.GONE); } } - - if (mTopPagerSelectedButtonIndex == 0) { - mTotalsLabel.setText(getTotalFollowersLabel(followersModel.getTotalWPCom())); - } else { - mTotalsLabel.setText(getTotalFollowersLabel(followersModel.getTotalEmail())); - } } else { showHideNoResultsUI(true); - mPaginationContainer.setVisibility(View.GONE); + mBottomPaginationContainer.setVisibility(View.GONE); mTotalsLabel.setText(getTotalFollowersLabel(0)); } } + private void setNavigationBackButtonsVisibility(boolean visible) { + mBottomPaginationGoBackButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); + mTopPaginationGoBackButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); + } + + private void setNavigationForwardButtonsVisibility(boolean visible) { + mBottomPaginationGoForwardButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); + mTopPaginationGoForwardButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE); + } + + private void setNavigationButtonsEnabled(boolean enable) { + mBottomPaginationGoBackButton.setEnabled(enable); + mBottomPaginationGoForwardButton.setEnabled(enable); + mTopPaginationGoBackButton.setEnabled(enable); + mTopPaginationGoForwardButton.setEnabled(enable); + } + @Override protected boolean isViewAllOptionAvailable() { if (isDataEmpty()) { @@ -207,7 +244,6 @@ public class StatsFollowersFragment extends StatsAbstractListFragment { return getString(R.string.stats_followers_total_email, FormatUtils.formatDecimal(total)); } - @Override protected boolean isExpandableList() { return false; diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsViewAllActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsViewAllActivity.java index ba47b46b4..acb36113f 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsViewAllActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsViewAllActivity.java @@ -63,7 +63,7 @@ public class StatsViewAllActivity extends ActionBarActivity private int mOuterPagerSelectedButtonIndex = 0; // The number of results to return per page for Paged REST endpoints. Numbers larger than 20 will default to 20 on the server. - private static final int MAX_RESULTS_PER_PAGE = 20; + public static final int MAX_RESULTS_PER_PAGE = 20; // The number of results to return for NON Paged REST endpoints. private static final int MAX_RESULTS_REQUESTED = 100; |