aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java129
1 files changed, 129 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java
new file mode 100644
index 000000000..32a3742fa
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/ui/stats/StatsTopPostsAndPagesFragment.java
@@ -0,0 +1,129 @@
+package org.wordpress.android.ui.stats;
+
+import android.os.Bundle;
+import android.widget.ArrayAdapter;
+
+import org.wordpress.android.R;
+import org.wordpress.android.ui.stats.adapters.PostsAndPagesAdapter;
+import org.wordpress.android.ui.stats.models.PostModel;
+import org.wordpress.android.ui.stats.models.TopPostsAndPagesModel;
+import org.wordpress.android.ui.stats.service.StatsService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class StatsTopPostsAndPagesFragment extends StatsAbstractListFragment {
+ public static final String TAG = StatsTopPostsAndPagesFragment.class.getSimpleName();
+
+ private TopPostsAndPagesModel mTopPostsAndPagesModel = null;
+
+ @Override
+ protected boolean hasDataAvailable() {
+ return mTopPostsAndPagesModel != null;
+ }
+ @Override
+ protected void saveStatsData(Bundle outState) {
+ if (hasDataAvailable()) {
+ outState.putSerializable(ARG_REST_RESPONSE, mTopPostsAndPagesModel);
+ }
+ }
+ @Override
+ protected void restoreStatsData(Bundle savedInstanceState) {
+ if (savedInstanceState.containsKey(ARG_REST_RESPONSE)) {
+ mTopPostsAndPagesModel = (TopPostsAndPagesModel) savedInstanceState.getSerializable(ARG_REST_RESPONSE);
+ }
+ }
+
+ @SuppressWarnings("unused")
+ public void onEventMainThread(StatsEvents.TopPostsUpdated event) {
+ if (!shouldUpdateFragmentOnUpdateEvent(event)) {
+ return;
+ }
+
+ mGroupIdToExpandedMap.clear();
+ mTopPostsAndPagesModel = event.mTopPostsAndPagesModel;
+
+ updateUI();
+ }
+
+ @SuppressWarnings("unused")
+ public void onEventMainThread(StatsEvents.SectionUpdateError event) {
+ if (!shouldUpdateFragmentOnErrorEvent(event)) {
+ return;
+ }
+
+ mTopPostsAndPagesModel = null;
+ mGroupIdToExpandedMap.clear();
+ showErrorUI(event.mError);
+ }
+
+ @Override
+ protected void updateUI() {
+ if (!isAdded()) {
+ return;
+ }
+
+ if (hasTopPostsAndPages()) {
+ List<PostModel> postViews = mTopPostsAndPagesModel.getTopPostsAndPages();
+ ArrayAdapter adapter = new PostsAndPagesAdapter(getActivity(), postViews);
+ StatsUIHelper.reloadLinearLayout(getActivity(), adapter, mList, getMaxNumberOfItemsToShowInList());
+ showHideNoResultsUI(false);
+ } else {
+ showHideNoResultsUI(true);
+ }
+ }
+
+ private boolean hasTopPostsAndPages() {
+ return mTopPostsAndPagesModel != null && mTopPostsAndPagesModel.hasTopPostsAndPages();
+ }
+
+ private List<PostModel> getTopPostsAndPages() {
+ if (!hasTopPostsAndPages()) {
+ return new ArrayList<PostModel>(0);
+ }
+ return mTopPostsAndPagesModel.getTopPostsAndPages();
+ }
+
+ @Override
+ protected boolean isViewAllOptionAvailable() {
+ return hasTopPostsAndPages() && getTopPostsAndPages().size() > MAX_NUM_OF_ITEMS_DISPLAYED_IN_LIST;
+ }
+
+ @Override
+ protected boolean isExpandableList() {
+ return false;
+ }
+
+ @Override
+ protected int getEntryLabelResId() {
+ return R.string.stats_entry_posts_and_pages;
+ }
+
+ @Override
+ protected int getTotalsLabelResId() {
+ return R.string.stats_totals_views;
+ }
+
+ @Override
+ protected int getEmptyLabelTitleResId() {
+ return R.string.stats_empty_top_posts_title;
+ }
+
+ @Override
+ protected int getEmptyLabelDescResId() {
+ return R.string.stats_empty_top_posts_desc;
+ }
+
+ @Override
+ protected StatsService.StatsEndpointsEnum[] sectionsToUpdate() {
+ return new StatsService.StatsEndpointsEnum[]{
+ StatsService.StatsEndpointsEnum.TOP_POSTS
+ };
+ }
+
+ @Override
+ public String getTitle() {
+ return getString(R.string.stats_view_top_posts_and_pages);
+ }
+}