From b69a26463ce71462d680e240ac4eda32048227e7 Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Thu, 28 Sep 2017 00:44:24 +1000 Subject: [PATCH] Allow swipe-to-refresh on categories and updates tab. The swipe-to-refresh from the latest tab is now also implemented for the categories and updates tab. It was a bit weird before how you could swipe to refresh on the first tab, which would show "Updating repos" at the top. It would then also show the same message on the categories tab, but you couldn't swipe-to-refresh that tab. Additionally, several people have requested this on the updates tab, the tab where it probably makes the most sense. Fix #1079. --- .../views/main/CategoriesViewBinder.java | 12 +++ .../views/updates/UpdatesViewBinder.java | 14 ++- .../main/res/layout/main_tab_categories.xml | 90 +++++++++-------- app/src/main/res/layout/main_tab_updates.xml | 98 +++++++++++-------- 4 files changed, 134 insertions(+), 80 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/CategoriesViewBinder.java b/app/src/main/java/org/fdroid/fdroid/views/main/CategoriesViewBinder.java index 2a0a629f3..bcc0bbdff 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/CategoriesViewBinder.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/CategoriesViewBinder.java @@ -7,6 +7,7 @@ import android.support.design.widget.FloatingActionButton; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; +import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -15,6 +16,7 @@ import android.widget.FrameLayout; import android.widget.TextView; import org.fdroid.fdroid.R; +import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.data.CategoryProvider; import org.fdroid.fdroid.data.Schema; import org.fdroid.fdroid.views.apps.AppListActivity; @@ -54,6 +56,16 @@ class CategoriesViewBinder implements LoaderManager.LoaderCallbacks { categoriesList.setLayoutManager(new LinearLayoutManager(activity)); categoriesList.setAdapter(categoryAdapter); + final SwipeRefreshLayout swipeToRefresh = + (SwipeRefreshLayout) categoriesView.findViewById(R.id.swipe_to_refresh); + swipeToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + swipeToRefresh.setRefreshing(false); + UpdateService.updateNow(activity); + } + }); + FloatingActionButton searchFab = (FloatingActionButton) categoriesView.findViewById(R.id.btn_search); searchFab.setOnClickListener(new View.OnClickListener() { @Override diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java index 84602df5b..784210e59 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java +++ b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java @@ -1,5 +1,6 @@ package org.fdroid.fdroid.views.updates; +import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -9,6 +10,7 @@ import android.widget.ImageView; import android.widget.TextView; import org.fdroid.fdroid.R; +import org.fdroid.fdroid.UpdateService; public class UpdatesViewBinder { @@ -17,7 +19,7 @@ public class UpdatesViewBinder { private final TextView emptyState; private final ImageView emptyImage; - public UpdatesViewBinder(AppCompatActivity activity, FrameLayout parent) { + public UpdatesViewBinder(final AppCompatActivity activity, FrameLayout parent) { View view = activity.getLayoutInflater().inflate(R.layout.main_tab_updates, parent, true); adapter = new UpdatesAdapter(activity); @@ -30,6 +32,16 @@ public class UpdatesViewBinder { emptyState = (TextView) view.findViewById(R.id.empty_state); emptyImage = (ImageView) view.findViewById(R.id.image); + + final SwipeRefreshLayout swipeToRefresh = (SwipeRefreshLayout) view.findViewById(R.id.swipe_to_refresh); + swipeToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + swipeToRefresh.setRefreshing(false); + UpdateService.updateNow(activity); + } + }); + } public void bind() { diff --git a/app/src/main/res/layout/main_tab_categories.xml b/app/src/main/res/layout/main_tab_categories.xml index 27ca6f052..c83c1ea6f 100644 --- a/app/src/main/res/layout/main_tab_categories.xml +++ b/app/src/main/res/layout/main_tab_categories.xml @@ -1,5 +1,5 @@ - - + - + - + - + - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main_tab_updates.xml b/app/src/main/res/layout/main_tab_updates.xml index 4dffe045f..e201a42c1 100644 --- a/app/src/main/res/layout/main_tab_updates.xml +++ b/app/src/main/res/layout/main_tab_updates.xml @@ -1,46 +1,66 @@ - + + + android:id="@+id/swipe_to_refresh"> - + - + - + - + + + + + + + \ No newline at end of file