From 4300c33d65ec48f765b8974a41aa18915109726e Mon Sep 17 00:00:00 2001 From: Domagalski Date: Wed, 9 Jan 2019 21:20:48 +0100 Subject: [PATCH 1/4] show on map modal fix, Status added --- .../findmytutor/activity/BaseActivity.java | 1 - .../wmi/findmytutor/activity/MapActivity.java | 4 +- .../activity/UsersListFragment.java | 24 +++- .../main/res/drawable/user_modal_title.xml | 13 ++ app/src/main/res/layout/user_list_modal.xml | 113 +++++++++++------- app/src/main/res/values/strings.xml | 1 + 6 files changed, 101 insertions(+), 55 deletions(-) create mode 100644 app/src/main/res/drawable/user_modal_title.xml diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java index 5c49fb5..df166ef 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/BaseActivity.java @@ -412,7 +412,6 @@ public abstract class BaseActivity FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.activity_content, sharingFragment); ft.commit(); - } private void loadUserListFragment() { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java index 4688914..b5603d3 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/MapActivity.java @@ -74,7 +74,7 @@ import static com.uam.wmi.findmytutor.utils.Const.mapRefreshInterval; public class MapActivity extends BaseActivity implements PermissionsListener, OnMapReadyCallback { - public HashMap markerUserHash = new HashMap<>(); + private HashMap markerUserHash = new HashMap<>(); private String tag = getClass().getName(); private PermissionsManager permissionsManager; private LocationComponent locationComponent; @@ -90,7 +90,7 @@ public class MapActivity extends BaseActivity private Button removeLocationButton; private Marker tmpLocalMarker; private Coordinate droppedMarkercoordinate; - private HashMap coordsMap = new HashMap<>(); + public HashMap coordsMap = new HashMap<>(); private HashMap markerHash = new HashMap<>(); private Set previousCoordsIds = new HashSet<>(); private ManualLocationUtils manualLocationUtils; 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 7837ce8..1d85d80 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 @@ -24,13 +24,16 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; +import android.widget.Toast; import com.annimon.stream.Stream; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.adapters.TutorsListAdapter; +import com.uam.wmi.findmytutor.model.Coordinate; import com.uam.wmi.findmytutor.model.DutyHourViewModel; import com.uam.wmi.findmytutor.model.TutorTabViewModel; import com.uam.wmi.findmytutor.model.User; @@ -192,6 +195,9 @@ public class UsersListFragment extends Fragment { TextView userRoom = view.findViewById(R.id.userRoom); TextView userEmail = view.findViewById(R.id.userEmail); TextView department = view.findViewById(R.id.userDepartment); + TextView userStatusLabel = view.findViewById(R.id.user_status_label); + LinearLayout userStatusLabelLL = view.findViewById(R.id.user_status_label_linearLayout); + userName.setText(String.format("%s %s", user.getFirstName(), user.getLastName())); @@ -221,7 +227,8 @@ public class UsersListFragment extends Fragment { @Override public void onSuccess(TutorTabViewModel tutorTabViewModel) { final AlertDialog alertDialog; - if (((MapActivity) getActivity()).markerUserHash.containsValue(user.getId())) { + if (((MapActivity) getActivity()).coordsMap.containsKey(user.getId())) { + alertDialogBuilderUserInput.setPositiveButton(R.string.show_on_map, (dialog, id) -> { // User cancelled the dialog ((MapActivity) getActivity()).activeFragment = ActiveFragment.NONE; @@ -230,11 +237,6 @@ public class UsersListFragment extends Fragment { fragmentTransaction.commit(); ((MapActivity) getActivity()).searchUser(user.getFirstName()); ((MapActivity) getActivity()).updateNavigationBarState(); - - /* List list = new ArrayList(); - list.add(user); - ((MapActivity) getActivity()).filterMarkers(list); - ((MapActivity) getActivity()).updateNavigationBarState();*/ }); } alertDialog = alertDialogBuilderUserInput.create(); @@ -257,6 +259,16 @@ public class UsersListFragment extends Fragment { department.setText(String.format("%s: %s", getString(R.string.userDepartment), user.getDepartment())); userDutyHoursTitle.setText(String.format("%s:", getString(R.string.userDutyHoursHeader))); + Coordinate coordinate = ((MapActivity) getActivity()).coordsMap.get(user.getId()); + if (coordinate != null){ + String label = coordinate.getLabel(); + if (!label.isEmpty()) { + userStatusLabelLL.setVisibility(View.VISIBLE); + userStatusLabel.setText(String.format("%s: %s", getString(R.string.user_status_label),label)); + } + } + + final ArrayAdapter arrayAdapter = new ArrayAdapter<>(getActivity(), R.layout.duty_hours_item, dutyHoursList); diff --git a/app/src/main/res/drawable/user_modal_title.xml b/app/src/main/res/drawable/user_modal_title.xml new file mode 100644 index 0000000..42e9b61 --- /dev/null +++ b/app/src/main/res/drawable/user_modal_title.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/user_list_modal.xml b/app/src/main/res/layout/user_list_modal.xml index b92f8eb..9f0abcd 100644 --- a/app/src/main/res/layout/user_list_modal.xml +++ b/app/src/main/res/layout/user_list_modal.xml @@ -27,19 +27,20 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + - @@ -50,6 +51,28 @@ android:layout_marginTop="25dp" android:orientation="vertical"> + + + + + + + + android:src="@drawable/user_modal_department" /> + + android:textColor="@color/mapboxWhite" /> + android:src="@drawable/user_modal_room" /> + + android:textColor="@color/mapboxWhite" /> + android:src="@drawable/user_modal_email" /> + + android:textColor="@color/mapboxWhite" /> @@ -123,15 +146,14 @@ + android:src="@drawable/user_modal_duty" /> + android:textColor="@color/mapboxWhite" /> + android:paddingLeft="25dp" + android:paddingTop="-10dp" + android:textColor="@color/mapboxWhite" /> - - - - + android:layout_marginTop="5dp" + android:orientation="horizontal" + android:paddingLeft="20dp"> + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6b9c670..be3d01a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -453,4 +453,5 @@ Not saved location. + Status From f98e4289fb77c97199f5db15692dad3d94561c1d Mon Sep 17 00:00:00 2001 From: Domagalski Date: Wed, 9 Jan 2019 23:44:05 +0100 Subject: [PATCH 2/4] last seen working just fine --- .../activity/UsersListFragment.java | 70 ++++++++++++++++++- .../adapters/TutorsListAdapter.java | 52 ++++++++++++-- .../service/CoordinateService.java | 2 +- app/src/main/res/layout/tutor_list_row.xml | 6 +- 4 files changed, 118 insertions(+), 12 deletions(-) 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 1d85d80..d485536 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 @@ -14,6 +14,7 @@ import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.text.Spannable; import android.text.SpannableString; +import android.text.format.DateFormat; import android.text.style.ImageSpan; import android.util.Log; import android.view.Gravity; @@ -38,6 +39,7 @@ import com.uam.wmi.findmytutor.model.DutyHourViewModel; import com.uam.wmi.findmytutor.model.TutorTabViewModel; import com.uam.wmi.findmytutor.model.User; import com.uam.wmi.findmytutor.network.ApiClient; +import com.uam.wmi.findmytutor.service.CoordinateService; import com.uam.wmi.findmytutor.service.TutorTabApi; import com.uam.wmi.findmytutor.service.UserService; import com.uam.wmi.findmytutor.utils.ActiveFragment; @@ -48,7 +50,9 @@ import com.uam.wmi.findmytutor.utils.RestApiHelper; import java.text.Collator; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Locale; @@ -75,9 +79,12 @@ public class UsersListFragment extends Fragment { private SearchView searchView; private UserService userService; private TutorTabApi tutorTabService; + private CoordinateService coordinateService; private CompositeDisposable disposable = new CompositeDisposable(); private TutorsListAdapter mAdapter; private List tutorsList = new ArrayList<>(); + private HashMap tutorsTimeStamps = new HashMap<>(); + private Collator plCollator = Collator.getInstance(Locale.forLanguageTag("pl-PL")); private Boolean fetchOnlyOnlineUsers = PrefUtils.getShowOnlyOnlineUsers(getApplicationContext()); @@ -89,7 +96,8 @@ public class UsersListFragment extends Fragment { } public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - mAdapter = new TutorsListAdapter(getActivity().getApplicationContext(), tutorsList); + + mAdapter = new TutorsListAdapter(getActivity().getApplicationContext(), tutorsList, tutorsTimeStamps); View view = inflater.inflate(R.layout.users_list, container, false); view.setBackgroundColor(getResources().getColor(android.R.color.white)); setHasOptionsMenu(true); @@ -101,9 +109,10 @@ public class UsersListFragment extends Fragment { userService = ApiClient.getClient(getApplicationContext()) .create(UserService.class); - tutorTabService = ApiClient.getClient(getActivity().getApplicationContext()) .create(TutorTabApi.class); + coordinateService = ApiClient.getClient(getApplicationContext()) + .create(CoordinateService.class); RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(mLayoutManager); @@ -113,6 +122,7 @@ public class UsersListFragment extends Fragment { recyclerView.setAdapter(mAdapter); fetchAllTutors(); + fetchTopCords(); recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity().getApplicationContext(), recyclerView, new RecyclerTouchListener.ClickListener() { @@ -431,4 +441,60 @@ public class UsersListFragment extends Fragment { public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } + + private void fetchTopCords(){ + disposable.add( + coordinateService.getTopCoordinates() +// coordinateService.getOnlineCoordinates() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableSingleObserver>() { + @Override + public void onSuccess(List newCords) { + for (Coordinate crd : + newCords) { + Long ts = crd.getTimeStamp(); + if (ts != 0){ + tutorsTimeStamps.put(crd.getUserId(), getDate(ts)); + } + } + mAdapter.notifyDataSetChanged(); + Log.e("PATRZ", tutorsTimeStamps.toString()); + Log.e("length", tutorsTimeStamps.size() +""); + + } + + @Override + public void onError(Throwable e) { + Log.e("adapter",e +""); + } + })); + } + + private void fetchTopCords(String id){ + Log.e("MORDO2", id); + + disposable.add( + coordinateService.getTopCoordinatesByUserId(id) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableSingleObserver() { + @Override + public void onSuccess(Coordinate newCords) { + Log.e("MORDO", newCords.toString()); + } + + @Override + public void onError(Throwable e) { + Log.e("adapter",e +""); + } + })); + } + + private String getDate(long time) { + Calendar cal = Calendar.getInstance(Locale.ENGLISH); + cal.setTimeInMillis(time); + String date = DateFormat.format("HH:mm dd/MM", cal).toString(); + return date; + } } \ No newline at end of file diff --git a/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java b/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java index ed2f50a..39d233c 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java @@ -3,29 +3,56 @@ package com.uam.wmi.findmytutor.adapters; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; +import android.support.design.widget.CoordinatorLayout; +import android.support.design.widget.Snackbar; import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import android.widget.Toast; +import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.uam.wmi.findmytutor.R; +import com.uam.wmi.findmytutor.model.Coordinate; import com.uam.wmi.findmytutor.model.User; +import com.uam.wmi.findmytutor.network.ApiClient; +import com.uam.wmi.findmytutor.service.CoordinateService; +import com.uam.wmi.findmytutor.service.UserService; +import com.uam.wmi.findmytutor.utils.RestApiHelper; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.observers.DisposableSingleObserver; +import io.reactivex.schedulers.Schedulers; +import okhttp3.ResponseBody; + +import static android.support.constraint.Constraints.TAG; +import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; public class TutorsListAdapter extends RecyclerView.Adapter { private Context context; private List tutorsList; + private HashMap tutorsTimeStamps; + private CoordinateService coordinateService; + private CompositeDisposable disposable = new CompositeDisposable(); - public TutorsListAdapter(Context context, List tutors) { + + + public TutorsListAdapter(Context context, List tutors, HashMap tutorsTimeStamps) { this.context = context; this.tutorsList = tutors; + this.tutorsTimeStamps = tutorsTimeStamps; } @NonNull @Override @@ -33,6 +60,7 @@ public class TutorsListAdapter extends RecyclerView.Adapter> getCoordinatesByUserId(@Path("userId") String userId); @GET("api/coordinates/userTop/{userId}") - Single> getTopCoordinatesByUserId(@Path("userId") String userId); + Single getTopCoordinatesByUserId(@Path("userId") String userId); @GET("api/coordinates/top") Single> getTopCoordinates(); diff --git a/app/src/main/res/layout/tutor_list_row.xml b/app/src/main/res/layout/tutor_list_row.xml index b93a6ad..74715f2 100644 --- a/app/src/main/res/layout/tutor_list_row.xml +++ b/app/src/main/res/layout/tutor_list_row.xml @@ -23,7 +23,7 @@ android:textSize="15sp" /> + android:textColor="#979797" + android:textSize="11sp" /> Date: Thu, 10 Jan 2019 00:11:37 +0100 Subject: [PATCH 3/4] code clean up and string translations for last seen --- .../activity/UsersListFragment.java | 29 +------------ .../adapters/TutorsListAdapter.java | 43 +++---------------- app/src/main/res/layout/tutor_list_row.xml | 2 +- app/src/main/res/values-pl/strings.xml | 4 +- app/src/main/res/values/strings.xml | 4 +- 5 files changed, 15 insertions(+), 67 deletions(-) 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 d485536..5bef676 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 @@ -28,7 +28,6 @@ import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; import com.annimon.stream.Stream; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; @@ -360,6 +359,7 @@ public class UsersListFragment extends Fragment { public void restoreUsersList() { fetchAllTutors(); + fetchTopCords(); } private int sortByUserName(User t1, User t2) { @@ -445,7 +445,6 @@ public class UsersListFragment extends Fragment { private void fetchTopCords(){ disposable.add( coordinateService.getTopCoordinates() -// coordinateService.getOnlineCoordinates() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSingleObserver>() { @@ -459,35 +458,11 @@ public class UsersListFragment extends Fragment { } } mAdapter.notifyDataSetChanged(); - Log.e("PATRZ", tutorsTimeStamps.toString()); - Log.e("length", tutorsTimeStamps.size() +""); } @Override - public void onError(Throwable e) { - Log.e("adapter",e +""); - } - })); - } - - private void fetchTopCords(String id){ - Log.e("MORDO2", id); - - disposable.add( - coordinateService.getTopCoordinatesByUserId(id) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeWith(new DisposableSingleObserver() { - @Override - public void onSuccess(Coordinate newCords) { - Log.e("MORDO", newCords.toString()); - } - - @Override - public void onError(Throwable e) { - Log.e("adapter",e +""); - } + public void onError(Throwable e) {showSearchError(e);} })); } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java b/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java index 39d233c..ae445b5 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/adapters/TutorsListAdapter.java @@ -3,40 +3,20 @@ package com.uam.wmi.findmytutor.adapters; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; -import android.support.design.widget.CoordinatorLayout; -import android.support.design.widget.Snackbar; import android.support.v7.widget.RecyclerView; -import android.util.Log; -import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; -import android.widget.Toast; -import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.uam.wmi.findmytutor.R; -import com.uam.wmi.findmytutor.model.Coordinate; import com.uam.wmi.findmytutor.model.User; -import com.uam.wmi.findmytutor.network.ApiClient; -import com.uam.wmi.findmytutor.service.CoordinateService; -import com.uam.wmi.findmytutor.service.UserService; -import com.uam.wmi.findmytutor.utils.RestApiHelper; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.disposables.CompositeDisposable; -import io.reactivex.observers.DisposableSingleObserver; -import io.reactivex.schedulers.Schedulers; -import okhttp3.ResponseBody; - -import static android.support.constraint.Constraints.TAG; -import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; public class TutorsListAdapter extends RecyclerView.Adapter { @@ -44,10 +24,6 @@ public class TutorsListAdapter extends RecyclerView.Adapter tutorsList; private HashMap tutorsTimeStamps; - private CoordinateService coordinateService; - private CompositeDisposable disposable = new CompositeDisposable(); - - public TutorsListAdapter(Context context, List tutors, HashMap tutorsTimeStamps) { this.context = context; @@ -60,7 +36,6 @@ public class TutorsListAdapter extends RecyclerView.Adapter + android:textSize="13sp" /> dokładny przybliżony Niezapisana lokalizacja. - + Ostatnio + Dostępny teraz + Profil diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index be3d01a..a281e48 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -453,5 +453,7 @@ Not saved location. - Status + Status + Available now + Last seen From 3379faf59b9541e26f5c8a39dc2cc123e092444f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Thu, 10 Jan 2019 00:40:00 +0100 Subject: [PATCH 4/4] Update gradle version --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 19bb14d..ab9bf30 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ android { applicationId "com.uam.wmi.findmytutor" minSdkVersion 22 targetSdkVersion 27 - versionCode 53 + versionCode 55 versionName "1.0.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true