diff --git a/docs-android/app/src/main/java/com/sismics/docs/MainApplication.java b/docs-android/app/src/main/java/com/sismics/docs/MainApplication.java
index 306f2a92..14af4c09 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/MainApplication.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/MainApplication.java
@@ -20,7 +20,6 @@ public class MainApplication extends Application {
JSONObject json = PreferenceUtil.getCachedJson(getApplicationContext(), PreferenceUtil.PREF_CACHED_USER_INFO_JSON);
ApplicationContext.getInstance().setUserInfo(getApplicationContext(), json);
- // TODO Documents list page loading feedback
// TODO Fullscreen preview
// TODO Caching preferences
// TODO Edit sharing
diff --git a/docs-android/app/src/main/java/com/sismics/docs/fragment/DocListFragment.java b/docs-android/app/src/main/java/com/sismics/docs/fragment/DocListFragment.java
index 0f7693e6..b43256c8 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/fragment/DocListFragment.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/fragment/DocListFragment.java
@@ -3,6 +3,7 @@ package com.sismics.docs.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
+import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
@@ -30,11 +31,6 @@ import de.greenrobot.event.EventBus;
* @author bgamard.
*/
public class DocListFragment extends Fragment {
- /**
- * Recycler view.
- */
- private EmptyRecyclerView recyclerView;
-
/**
* Documents adapter.
*/
@@ -45,13 +41,17 @@ public class DocListFragment extends Fragment {
*/
private String query;
+ // View cache
+ private EmptyRecyclerView recyclerView;
+ private SwipeRefreshLayout swipeRefreshLayout;
+
// Infinite scrolling things
private boolean loading = true;
private int previousTotal = 0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.doc_list_fragment, container, false);
+ final View view = inflater.inflate(R.layout.doc_list_fragment, container, false);
// Configure the RecyclerView
recyclerView = (EmptyRecyclerView) view.findViewById(R.id.docList);
@@ -65,6 +65,19 @@ public class DocListFragment extends Fragment {
final LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
+ // Configure the swipe refresh layout
+ swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipeRefreshLayout);
+ swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
+ android.R.color.holo_green_light,
+ android.R.color.holo_orange_light,
+ android.R.color.holo_red_light);
+ swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ loadDocuments(view, true);
+ }
+ });
+
// Document opening
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() {
@Override
@@ -139,7 +152,10 @@ public class DocListFragment extends Fragment {
loading = true;
previousTotal = 0;
adapter.clearDocuments();
+ } else {
+ swipeRefreshLayout.setRefreshing(true);
}
+
recyclerView.setEmptyView(progressBar);
DocumentResource.list(getActivity(), reset ? 0 : adapter.getItemCount(), query, new JsonHttpResponseHandler() {
@@ -160,6 +176,11 @@ public class DocListFragment extends Fragment {
Toast.makeText(getActivity(), R.string.error_loading_documents, Toast.LENGTH_SHORT).show();
}
}
+
+ @Override
+ public void onFinish() {
+ swipeRefreshLayout.setRefreshing(false);
+ }
});
}
}
diff --git a/docs-android/app/src/main/res/layout/doc_list_fragment.xml b/docs-android/app/src/main/res/layout/doc_list_fragment.xml
index 316b2f15..23553a8f 100644
--- a/docs-android/app/src/main/res/layout/doc_list_fragment.xml
+++ b/docs-android/app/src/main/res/layout/doc_list_fragment.xml
@@ -4,12 +4,19 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+ android:layout_height="match_parent">
+
+
+
+
+