From 9dd2a62d430580aaea86adcf7c8eb3da78940e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Wed, 2 Jan 2019 00:17:03 +0100 Subject: [PATCH] Add checkbox online/offline users --- .../activity/UsersListFragment.java | 64 ++++++++++++++++++- .../wmi/findmytutor/service/UserService.java | 6 ++ .../uam/wmi/findmytutor/utils/PrefUtils.java | 11 ++++ app/src/main/res/layout/home_layout.xml | 13 ++++ app/src/main/res/layout/users_list.xml | 1 + app/src/main/res/layout/users_list_tabs.xml | 27 ++++++++ app/src/main/res/menu/users_luist_menu.xml | 11 ++++ 7 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/layout/home_layout.xml create mode 100644 app/src/main/res/layout/users_list_tabs.xml create mode 100644 app/src/main/res/menu/users_luist_menu.xml diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java index 0ed27fc..e362f62 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/UsersListFragment.java @@ -9,10 +9,15 @@ import android.support.v7.app.AlertDialog; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.CheckBox; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; @@ -28,8 +33,8 @@ import com.uam.wmi.findmytutor.model.User; import com.uam.wmi.findmytutor.network.ApiClient; import com.uam.wmi.findmytutor.service.TutorTabApi; import com.uam.wmi.findmytutor.service.UserService; -import com.uam.wmi.findmytutor.utils.InfoHelperUtils; import com.uam.wmi.findmytutor.utils.MyDividerItemDecoration; +import com.uam.wmi.findmytutor.utils.PrefUtils; import com.uam.wmi.findmytutor.utils.RecyclerTouchListener; import com.uam.wmi.findmytutor.utils.RestApiHelper; @@ -66,6 +71,7 @@ public class UsersListFragment extends Fragment { private List tutorsList = new ArrayList<>(); private List tutorsFiltered = new ArrayList<>(); private Collator plCollator = Collator.getInstance(Locale.forLanguageTag("pl-PL")); + private Boolean fetchOnlyOnlineUsers = PrefUtils.getShowOnlyOnlineUsers(getApplicationContext()); public UsersListFragment() { } @@ -78,7 +84,7 @@ public class UsersListFragment extends Fragment { mAdapter = new TutorsListAdapter(getActivity().getApplicationContext(), tutorsFiltered); View view = inflater.inflate(R.layout.users_list, container, false); view.setBackgroundColor(getResources().getColor(android.R.color.white)); - + setHasOptionsMenu(true); return view; } @@ -113,6 +119,50 @@ public class UsersListFragment extends Fragment { } + + + @Override + public void onPrepareOptionsMenu(Menu menu) { + super.onPrepareOptionsMenu(menu); + try { + menu.findItem(R.id.showOnlineUsersOnly).setChecked(fetchOnlyOnlineUsers); + } + catch(Exception e) { + Log.e(TAG, "onPrepareOptionsMenu error"); + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + item.setChecked(fetchOnlyOnlineUsers); + switch (item.getItemId()){ + case R.id.showOnlineUsersOnly: + + if(item.isChecked()) { + fetchOnlyOnlineUsers = false; + item.setChecked(false); + }else{ + item.setChecked(true); + fetchOnlyOnlineUsers = true; + } + Log.e(TAG, String.valueOf(fetchOnlyOnlineUsers)); + + PrefUtils.putShowOnlyOnlineUsers(getApplicationContext(), fetchOnlyOnlineUsers); + fetchAllTutors(); + break; + } + + + return false; + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.users_luist_menu, menu); + menu.getItem(0).setChecked(fetchOnlyOnlineUsers); + super.onCreateOptionsMenu(menu,inflater); + } + public void searchUser(String textToSearch) { tutorsFiltered.clear(); @@ -185,7 +235,9 @@ public class UsersListFragment extends Fragment { private void fetchAllTutors() { disposable.add( - userService.getAllTutors() + (fetchOnlyOnlineUsers ? + userService.getAllOnlineTutors() : + userService.getAllOfflineTutors()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .map(tutors -> { @@ -234,6 +286,7 @@ public class UsersListFragment extends Fragment { private void showError(Throwable e) { String message; + Log.e(TAG, String.valueOf(e)); if (e instanceof HttpException) { ResponseBody responseBody = ((HttpException) e).response().errorBody(); @@ -251,6 +304,11 @@ public class UsersListFragment extends Fragment { noNotesView.setVisibility(View.GONE); } else { noNotesView.setVisibility(View.VISIBLE); + if(fetchOnlyOnlineUsers) + noNotesView.setText("Currently, there are no \nonline users."); + else{ + noNotesView.setText("Currently, there are no offline users."); + } } } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/UserService.java b/app/src/main/java/com/uam/wmi/findmytutor/service/UserService.java index 75671ed..8bbd910 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/service/UserService.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/service/UserService.java @@ -30,6 +30,12 @@ public interface UserService { @GET("api/users/tutors") Single > getAllTutors(); + @GET("api/users/tutors/online") + Single > getAllOnlineTutors(); + + @GET("api/users/tutors/offline") + Single > getAllOfflineTutors(); + @POST("api/users") Completable createUser(@Body User user); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java index 5d45d85..a630b83 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/PrefUtils.java @@ -197,4 +197,15 @@ public class PrefUtils { return getSharedPreferences(context).getString("current_manual_location_name", null); } + public static void putShowOnlyOnlineUsers(Context context, Boolean flag) { + SharedPreferences.Editor editor = getSharedPreferences(context).edit(); + editor.putBoolean("show_only_online_users_in_list", flag); + editor.apply(); + } + + public static Boolean getShowOnlyOnlineUsers(Context context) { + return getSharedPreferences(context).getBoolean("show_only_online_users_in_list", true); + } + + } \ No newline at end of file diff --git a/app/src/main/res/layout/home_layout.xml b/app/src/main/res/layout/home_layout.xml new file mode 100644 index 0000000..d26e4eb --- /dev/null +++ b/app/src/main/res/layout/home_layout.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/users_list.xml b/app/src/main/res/layout/users_list.xml index daed3cd..6618359 100644 --- a/app/src/main/res/layout/users_list.xml +++ b/app/src/main/res/layout/users_list.xml @@ -10,6 +10,7 @@ + diff --git a/app/src/main/res/layout/users_list_tabs.xml b/app/src/main/res/layout/users_list_tabs.xml new file mode 100644 index 0000000..2ed642f --- /dev/null +++ b/app/src/main/res/layout/users_list_tabs.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/app/src/main/res/menu/users_luist_menu.xml b/app/src/main/res/menu/users_luist_menu.xml new file mode 100644 index 0000000..d5a0cf8 --- /dev/null +++ b/app/src/main/res/menu/users_luist_menu.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file