Merge branch 'userListEnchancment' of s416084/find-my-tutor-android into develop

This commit is contained in:
Mieszko Wrzeszczyński 2019-01-09 23:41:41 +00:00 committed by Gogs
commit 393f25b1f9
11 changed files with 169 additions and 69 deletions

View File

@ -10,7 +10,7 @@ android {
applicationId "com.uam.wmi.findmytutor" applicationId "com.uam.wmi.findmytutor"
minSdkVersion 22 minSdkVersion 22
targetSdkVersion 27 targetSdkVersion 27
versionCode 53 versionCode 55
versionName "1.0.0" versionName "1.0.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true

View File

@ -412,7 +412,6 @@ public abstract class BaseActivity
FragmentTransaction ft = getFragmentManager().beginTransaction(); FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.activity_content, sharingFragment); ft.replace(R.id.activity_content, sharingFragment);
ft.commit(); ft.commit();
} }
private void loadUserListFragment() { private void loadUserListFragment() {

View File

@ -74,7 +74,7 @@ import static com.uam.wmi.findmytutor.utils.Const.mapRefreshInterval;
public class MapActivity extends BaseActivity public class MapActivity extends BaseActivity
implements PermissionsListener, OnMapReadyCallback { implements PermissionsListener, OnMapReadyCallback {
public HashMap<Long, String> markerUserHash = new HashMap<>(); private HashMap<Long, String> markerUserHash = new HashMap<>();
private String tag = getClass().getName(); private String tag = getClass().getName();
private PermissionsManager permissionsManager; private PermissionsManager permissionsManager;
private LocationComponent locationComponent; private LocationComponent locationComponent;
@ -90,7 +90,7 @@ public class MapActivity extends BaseActivity
private Button removeLocationButton; private Button removeLocationButton;
private Marker tmpLocalMarker; private Marker tmpLocalMarker;
private Coordinate droppedMarkercoordinate; private Coordinate droppedMarkercoordinate;
private HashMap<String, Coordinate> coordsMap = new HashMap<>(); public HashMap<String, Coordinate> coordsMap = new HashMap<>();
private HashMap<String, MapMarker> markerHash = new HashMap<>(); private HashMap<String, MapMarker> markerHash = new HashMap<>();
private Set<String> previousCoordsIds = new HashSet<>(); private Set<String> previousCoordsIds = new HashSet<>();
private ManualLocationUtils manualLocationUtils; private ManualLocationUtils manualLocationUtils;

View File

@ -14,6 +14,7 @@ import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.text.Spannable; import android.text.Spannable;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.format.DateFormat;
import android.text.style.ImageSpan; import android.text.style.ImageSpan;
import android.util.Log; import android.util.Log;
import android.view.Gravity; import android.view.Gravity;
@ -24,6 +25,7 @@ import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
@ -31,10 +33,12 @@ import com.annimon.stream.Stream;
import com.jakewharton.retrofit2.adapter.rxjava2.HttpException; import com.jakewharton.retrofit2.adapter.rxjava2.HttpException;
import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.R;
import com.uam.wmi.findmytutor.adapters.TutorsListAdapter; 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.DutyHourViewModel;
import com.uam.wmi.findmytutor.model.TutorTabViewModel; import com.uam.wmi.findmytutor.model.TutorTabViewModel;
import com.uam.wmi.findmytutor.model.User; import com.uam.wmi.findmytutor.model.User;
import com.uam.wmi.findmytutor.network.ApiClient; 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.TutorTabApi;
import com.uam.wmi.findmytutor.service.UserService; import com.uam.wmi.findmytutor.service.UserService;
import com.uam.wmi.findmytutor.utils.ActiveFragment; import com.uam.wmi.findmytutor.utils.ActiveFragment;
@ -45,7 +49,9 @@ import com.uam.wmi.findmytutor.utils.RestApiHelper;
import java.text.Collator; import java.text.Collator;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -72,9 +78,12 @@ public class UsersListFragment extends Fragment {
private SearchView searchView; private SearchView searchView;
private UserService userService; private UserService userService;
private TutorTabApi tutorTabService; private TutorTabApi tutorTabService;
private CoordinateService coordinateService;
private CompositeDisposable disposable = new CompositeDisposable(); private CompositeDisposable disposable = new CompositeDisposable();
private TutorsListAdapter mAdapter; private TutorsListAdapter mAdapter;
private List<User> tutorsList = new ArrayList<>(); private List<User> tutorsList = new ArrayList<>();
private HashMap<String, String> tutorsTimeStamps = new HashMap<>();
private Collator plCollator = Collator.getInstance(Locale.forLanguageTag("pl-PL")); private Collator plCollator = Collator.getInstance(Locale.forLanguageTag("pl-PL"));
private Boolean fetchOnlyOnlineUsers = PrefUtils.getShowOnlyOnlineUsers(getApplicationContext()); private Boolean fetchOnlyOnlineUsers = PrefUtils.getShowOnlyOnlineUsers(getApplicationContext());
@ -86,7 +95,8 @@ public class UsersListFragment extends Fragment {
} }
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 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 view = inflater.inflate(R.layout.users_list, container, false);
view.setBackgroundColor(getResources().getColor(android.R.color.white)); view.setBackgroundColor(getResources().getColor(android.R.color.white));
setHasOptionsMenu(true); setHasOptionsMenu(true);
@ -98,9 +108,10 @@ public class UsersListFragment extends Fragment {
userService = ApiClient.getClient(getApplicationContext()) userService = ApiClient.getClient(getApplicationContext())
.create(UserService.class); .create(UserService.class);
tutorTabService = ApiClient.getClient(getActivity().getApplicationContext()) tutorTabService = ApiClient.getClient(getActivity().getApplicationContext())
.create(TutorTabApi.class); .create(TutorTabApi.class);
coordinateService = ApiClient.getClient(getApplicationContext())
.create(CoordinateService.class);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLayoutManager); recyclerView.setLayoutManager(mLayoutManager);
@ -110,6 +121,7 @@ public class UsersListFragment extends Fragment {
recyclerView.setAdapter(mAdapter); recyclerView.setAdapter(mAdapter);
fetchAllTutors(); fetchAllTutors();
fetchTopCords();
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity().getApplicationContext(), recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity().getApplicationContext(),
recyclerView, new RecyclerTouchListener.ClickListener() { recyclerView, new RecyclerTouchListener.ClickListener() {
@ -192,6 +204,9 @@ public class UsersListFragment extends Fragment {
TextView userRoom = view.findViewById(R.id.userRoom); TextView userRoom = view.findViewById(R.id.userRoom);
TextView userEmail = view.findViewById(R.id.userEmail); TextView userEmail = view.findViewById(R.id.userEmail);
TextView department = view.findViewById(R.id.userDepartment); 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())); userName.setText(String.format("%s %s", user.getFirstName(), user.getLastName()));
@ -221,7 +236,8 @@ public class UsersListFragment extends Fragment {
@Override @Override
public void onSuccess(TutorTabViewModel tutorTabViewModel) { public void onSuccess(TutorTabViewModel tutorTabViewModel) {
final AlertDialog alertDialog; 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) -> { alertDialogBuilderUserInput.setPositiveButton(R.string.show_on_map, (dialog, id) -> {
// User cancelled the dialog // User cancelled the dialog
((MapActivity) getActivity()).activeFragment = ActiveFragment.NONE; ((MapActivity) getActivity()).activeFragment = ActiveFragment.NONE;
@ -230,11 +246,6 @@ public class UsersListFragment extends Fragment {
fragmentTransaction.commit(); fragmentTransaction.commit();
((MapActivity) getActivity()).searchUser(user.getFirstName()); ((MapActivity) getActivity()).searchUser(user.getFirstName());
((MapActivity) getActivity()).updateNavigationBarState(); ((MapActivity) getActivity()).updateNavigationBarState();
/* List<User> list = new ArrayList<User>();
list.add(user);
((MapActivity) getActivity()).filterMarkers(list);
((MapActivity) getActivity()).updateNavigationBarState();*/
}); });
} }
alertDialog = alertDialogBuilderUserInput.create(); alertDialog = alertDialogBuilderUserInput.create();
@ -257,6 +268,16 @@ public class UsersListFragment extends Fragment {
department.setText(String.format("%s: %s", getString(R.string.userDepartment), user.getDepartment())); department.setText(String.format("%s: %s", getString(R.string.userDepartment), user.getDepartment()));
userDutyHoursTitle.setText(String.format("%s:", getString(R.string.userDutyHoursHeader))); 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<String> arrayAdapter = new ArrayAdapter<>(getActivity(), final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getActivity(),
R.layout.duty_hours_item, dutyHoursList); R.layout.duty_hours_item, dutyHoursList);
@ -338,6 +359,7 @@ public class UsersListFragment extends Fragment {
public void restoreUsersList() { public void restoreUsersList() {
fetchAllTutors(); fetchAllTutors();
fetchTopCords();
} }
private int sortByUserName(User t1, User t2) { private int sortByUserName(User t1, User t2) {
@ -419,4 +441,35 @@ public class UsersListFragment extends Fragment {
public void onSaveInstanceState(Bundle outState) { public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
} }
private void fetchTopCords(){
disposable.add(
coordinateService.getTopCoordinates()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSingleObserver<List<Coordinate>>() {
@Override
public void onSuccess(List<Coordinate> newCords) {
for (Coordinate crd :
newCords) {
Long ts = crd.getTimeStamp();
if (ts != 0){
tutorsTimeStamps.put(crd.getUserId(), getDate(ts));
}
}
mAdapter.notifyDataSetChanged();
}
@Override
public void onError(Throwable e) {showSearchError(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;
}
} }

View File

@ -12,6 +12,7 @@ import android.widget.TextView;
import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.R;
import com.uam.wmi.findmytutor.model.User; import com.uam.wmi.findmytutor.model.User;
import java.util.HashMap;
import java.util.List; import java.util.List;
import butterknife.BindView; import butterknife.BindView;
@ -22,10 +23,12 @@ public class TutorsListAdapter extends RecyclerView.Adapter<TutorsListAdapter.My
private Context context; private Context context;
private List<User> tutorsList; private List<User> tutorsList;
private HashMap<String, String> tutorsTimeStamps;
public TutorsListAdapter(Context context, List<User> tutors) { public TutorsListAdapter(Context context, List<User> tutors, HashMap<String,String> tutorsTimeStamps) {
this.context = context; this.context = context;
this.tutorsList = tutors; this.tutorsList = tutors;
this.tutorsTimeStamps = tutorsTimeStamps;
} }
@NonNull @NonNull
@Override @Override
@ -41,13 +44,18 @@ public class TutorsListAdapter extends RecyclerView.Adapter<TutorsListAdapter.My
Drawable image = null; Drawable image = null;
User tutor = tutorsList.get(position); User tutor = tutorsList.get(position);
holder.firstName.setText(tutor.getFirstName()); holder.firstName.setText(String.format("%s %s", tutor.getFirstName(), tutor.getLastName()));
holder.lastName.setText(tutor.getLastName());
if (tutor.isIsOnline()) { if (tutor.isIsOnline()) {
image = context.getResources().getDrawable(R.drawable.user_list_online); image = context.getResources().getDrawable(R.drawable.user_list_online);
holder.lastSeen.setText(R.string.available_now);
} else { } else {
image = context.getResources().getDrawable(R.drawable.user_list_offline); image = context.getResources().getDrawable(R.drawable.user_list_offline);
String ts = tutorsTimeStamps.get(tutor.getId());
if (ts != null){
holder.lastSeen.setText(String.format("%s: %s", context.getResources().getString(R.string.last_seen), ts));
}
} }
if (!tutor.isIsActive()) { if (!tutor.isIsActive()) {
@ -68,8 +76,8 @@ public class TutorsListAdapter extends RecyclerView.Adapter<TutorsListAdapter.My
@BindView(R.id.firstName) @BindView(R.id.firstName)
TextView firstName; TextView firstName;
@BindView(R.id.lastName) @BindView(R.id.lastSeen)
TextView lastName; TextView lastSeen;
@BindView(R.id.isOnline) @BindView(R.id.isOnline)
TextView isOnline; TextView isOnline;
@ -79,6 +87,7 @@ public class TutorsListAdapter extends RecyclerView.Adapter<TutorsListAdapter.My
ButterKnife.bind(this, view); ButterKnife.bind(this, view);
} }
} }
}
}

View File

@ -25,7 +25,7 @@ public interface CoordinateService {
Single<List<Coordinate>> getCoordinatesByUserId(@Path("userId") String userId); Single<List<Coordinate>> getCoordinatesByUserId(@Path("userId") String userId);
@GET("api/coordinates/userTop/{userId}") @GET("api/coordinates/userTop/{userId}")
Single<List<Coordinate>> getTopCoordinatesByUserId(@Path("userId") String userId); Single<Coordinate> getTopCoordinatesByUserId(@Path("userId") String userId);
@GET("api/coordinates/top") @GET("api/coordinates/top")
Single<List<Coordinate>> getTopCoordinates(); Single<List<Coordinate>> getTopCoordinates();

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#ffffff"
android:pathData="M22 10l-6-6H4c-1.1 0-2 0.9-2 2v12.01c0 1.1 0.9 1.99 2 1.99l16-0.01c1.1 0 2-0.89 2-1.99v-8zm-7-4.5l5.5 5.5H15V5.5z" />
<path
android:pathData="M0 0h24v24H0V0z" />
</vector>

View File

@ -23,7 +23,7 @@
android:textSize="15sp" /> android:textSize="15sp" />
<TextView <TextView
android:id="@+id/lastName" android:id="@+id/lastSeen"
android:layout_width="270dp" android:layout_width="270dp"
android:layout_height="22dp" android:layout_height="22dp"
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
@ -32,8 +32,8 @@
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginEnd="0dp" android:layout_marginEnd="0dp"
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:textColor="@color/note_list_text" android:textColor="#979797"
android:textSize="15sp" /> android:textSize="13sp" />
<TextView <TextView

View File

@ -27,19 +27,20 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/userName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:drawablePadding="10dp"
android:gravity="center_horizontal"
android:text="Name Surname"
android:textColor="@color/white"
android:textSize="@dimen/lbl_new_note_title"
android:textStyle="normal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/userName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:gravity="center_horizontal"
android:textColor="@color/white"
android:textSize="@dimen/lbl_new_note_title"
android:textStyle="normal"
android:drawablePadding="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>
</RelativeLayout> </RelativeLayout>
@ -50,6 +51,28 @@
android:layout_marginTop="25dp" android:layout_marginTop="25dp"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout
android:id="@+id/user_status_label_linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"
android:paddingLeft="20dp">
<ImageView
android:layout_width="25dp"
android:layout_height="25dp"
android:src="@drawable/user_modal_title" />
<TextView
android:id="@+id/user_status_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="10dp"
android:textColor="@color/mapboxWhite" />
</LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -59,15 +82,15 @@
<ImageView <ImageView
android:layout_width="25dp" android:layout_width="25dp"
android:layout_height="25dp" android:layout_height="25dp"
android:src="@drawable/user_modal_department"/> android:src="@drawable/user_modal_department" />
<TextView <TextView
android:id="@+id/userDepartment" android:id="@+id/userDepartment"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:textColor="@color/mapboxWhite"
android:paddingLeft="10dp" android:paddingLeft="10dp"
/> android:textColor="@color/mapboxWhite" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
@ -80,15 +103,15 @@
<ImageView <ImageView
android:layout_width="25dp" android:layout_width="25dp"
android:layout_height="25dp" android:layout_height="25dp"
android:src="@drawable/user_modal_room"/> android:src="@drawable/user_modal_room" />
<TextView <TextView
android:id="@+id/userRoom" android:id="@+id/userRoom"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:textColor="@color/mapboxWhite"
android:paddingLeft="10dp" android:paddingLeft="10dp"
/> android:textColor="@color/mapboxWhite" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
@ -101,15 +124,15 @@
<ImageView <ImageView
android:layout_width="25dp" android:layout_width="25dp"
android:layout_height="25dp" android:layout_height="25dp"
android:src="@drawable/user_modal_email"/> android:src="@drawable/user_modal_email" />
<TextView <TextView
android:id="@+id/userEmail" android:id="@+id/userEmail"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:textColor="@color/mapboxWhite"
android:paddingLeft="10dp" android:paddingLeft="10dp"
/> android:textColor="@color/mapboxWhite" />
</LinearLayout> </LinearLayout>
@ -123,15 +146,14 @@
<ImageView <ImageView
android:layout_width="25dp" android:layout_width="25dp"
android:layout_height="25dp" android:layout_height="25dp"
android:src="@drawable/user_modal_duty"/> android:src="@drawable/user_modal_duty" />
<TextView <TextView
android:id="@+id/userDutyHoursTitle" android:id="@+id/userDutyHoursTitle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/mapboxWhite"
android:paddingLeft="10dp" android:paddingLeft="10dp"
/> android:textColor="@color/mapboxWhite" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
@ -151,34 +173,33 @@
android:id="@+id/userDutyHours" android:id="@+id/userDutyHours"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingLeft="25dp"
android:paddingTop="-10dp"
android:divider="@color/background_user_modal" android:divider="@color/background_user_modal"
android:dividerHeight="1dp" android:dividerHeight="1dp"
android:textColor="@color/mapboxWhite" android:paddingLeft="25dp"
/> android:paddingTop="-10dp"
android:textColor="@color/mapboxWhite" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:orientation="horizontal"
android:paddingLeft="20dp">
<ImageView
android:layout_width="25dp"
android:layout_height="25dp"
android:src="@drawable/user_modal_note"/>
<TextView
android:id="@+id/userNote"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_marginTop="5dp"
android:textColor="@color/mapboxWhite" android:orientation="horizontal"
android:paddingLeft="10dp" android:paddingLeft="20dp">
/>
</LinearLayout> <ImageView
android:layout_width="25dp"
android:layout_height="25dp"
android:src="@drawable/user_modal_note" />
<TextView
android:id="@+id/userNote"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:paddingLeft="10dp"
android:textColor="@color/mapboxWhite" />
</LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -284,7 +284,9 @@
<string name="exact_mode">dokładny</string> <string name="exact_mode">dokładny</string>
<string name="approx_mode">przybliżony</string> <string name="approx_mode">przybliżony</string>
<string name="other_location">Niezapisana lokalizacja.</string> <string name="other_location">Niezapisana lokalizacja.</string>
<string name="last_seen">Ostatnio</string>
<string name="available_now">Dostępny teraz</string>
<string name="profile_activity_title">Profil</string>
</resources> </resources>

View File

@ -453,4 +453,7 @@
<!--(ENG) Undefined manual --> <!--(ENG) Undefined manual -->
<string name="other_location">Not saved location.</string> <string name="other_location">Not saved location.</string>
<string name="user_status_label" translatable="false">Status</string>
<string name="available_now">Available now</string>
<string name="last_seen">Last seen</string>
</resources> </resources>