From 34e176539b350916f4b99235a20c697c493ee58b Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Tue, 21 Feb 2017 11:37:06 +1100 Subject: [PATCH] Add swipe-down-to-refresh-repos on main overview screen. Happy to discuss whether this is a good idea or not, but right now there is no way to update repositories so often you are left with an empty first screen. This doesn't worry about state management (e.g. remembering whether we are refreshing or not and showing this when we resume the activity). Instead, it listens for the refresh listener, and when triggered it will set the refreshing state to not refreshing. For now the notification can act as the feedback that something is happening. --- .../fdroid/views/main/WhatsNewViewBinder.java | 13 +++++++++++- .../main/res/layout/main_tab_whats_new.xml | 21 ++++++++++++------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java b/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java index b1860c112..0270e8047 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java @@ -5,6 +5,7 @@ import android.os.Bundle; 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.GridLayoutManager; import android.support.v7.widget.RecyclerView; @@ -12,6 +13,7 @@ import android.view.View; import android.widget.FrameLayout; import org.fdroid.fdroid.R; +import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.Schema; import org.fdroid.fdroid.views.whatsnew.WhatsNewAdapter; @@ -28,7 +30,7 @@ class WhatsNewViewBinder implements LoaderManager.LoaderCallbacks { private static RecyclerView.ItemDecoration appListDecorator; - WhatsNewViewBinder(AppCompatActivity activity, FrameLayout parent) { + WhatsNewViewBinder(final AppCompatActivity activity, FrameLayout parent) { this.activity = activity; View whatsNewView = activity.getLayoutInflater().inflate(R.layout.main_tab_whats_new, parent, true); @@ -57,6 +59,15 @@ class WhatsNewViewBinder implements LoaderManager.LoaderCallbacks { appList.addItemDecoration(appListDecorator); + final SwipeRefreshLayout swipeToRefresh = (SwipeRefreshLayout) whatsNewView.findViewById(R.id.swipe_to_refresh); + swipeToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + swipeToRefresh.setRefreshing(false); + UpdateService.updateNow(activity); + } + }); + activity.getSupportLoaderManager().initLoader(LOADER_ID, null, this); } diff --git a/app/src/main/res/layout/main_tab_whats_new.xml b/app/src/main/res/layout/main_tab_whats_new.xml index 77a1d4fe7..d10730522 100644 --- a/app/src/main/res/layout/main_tab_whats_new.xml +++ b/app/src/main/res/layout/main_tab_whats_new.xml @@ -6,14 +6,21 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - + android:id="@+id/swipe_to_refresh"> + + + + \ No newline at end of file