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"> + + + + +