From 41288f000b5614349445fcf61c36d1d4b55995ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Sat, 15 Dec 2018 21:49:08 +0100 Subject: [PATCH] Add modal to ask for BG --- .../wmi/findmytutor/activity/MapActivity.java | 6 ++ .../findmytutor/activity/SharingFragment.java | 89 ++++++++++--------- .../wmi/findmytutor/network/ApiClient.java | 1 - .../com/uam/wmi/findmytutor/utils/Const.java | 2 +- .../utils/EnableSharingDialog.java | 71 +++++++++++++++ .../uam/wmi/findmytutor/utils/PrefUtils.java | 2 +- app/src/main/res/values-pl/strings.xml | 5 ++ app/src/main/res/values/strings.xml | 4 + 8 files changed, 135 insertions(+), 45 deletions(-) create mode 100644 app/src/main/java/com/uam/wmi/findmytutor/utils/EnableSharingDialog.java 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 d355d2e..ce0ba3f 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 @@ -52,6 +52,7 @@ import com.uam.wmi.findmytutor.service.CoordinateService; import com.uam.wmi.findmytutor.service.PredefinedStatusesService; import com.uam.wmi.findmytutor.service.UserService; import com.uam.wmi.findmytutor.utils.ApproximatedLocalization; +import com.uam.wmi.findmytutor.utils.EnableSharingDialog; import com.uam.wmi.findmytutor.utils.InfoHelperUtils; import com.uam.wmi.findmytutor.utils.ManualLocationUtils; import com.uam.wmi.findmytutor.utils.MapMarker; @@ -291,6 +292,11 @@ public class MapActivity extends BaseActivity PrefUtils.getLocationLevel(getApplicationContext()) ); + if (!PrefUtils.isEnableSharingLocalization(getApplicationContext())) { + EnableSharingDialog sharingDialog = new EnableSharingDialog(); + sharingDialog.show(getFragmentManager(), "Sharing"); + } + PrefUtils.putManualLocation(this, latLng, approximatedLocation); handleBackgroundTaskLifeCycle(); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java index 6bf9a04..db03aca 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/SharingFragment.java @@ -20,6 +20,7 @@ import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.model.PredefinedCoordViewModel; import com.uam.wmi.findmytutor.network.ApiClient; import com.uam.wmi.findmytutor.service.PredefinedStatusesService; +import com.uam.wmi.findmytutor.utils.EnableSharingDialog; import com.uam.wmi.findmytutor.utils.PrefUtils; import com.uam.wmi.findmytutor.utils.RestApiHelper; import com.uam.wmi.findmytutor.utils.RightButtonPreference; @@ -66,7 +67,7 @@ public class SharingFragment extends PreferenceFragment { @Override public void onSuccess(List strings) { String[] statusesArray = strings.toArray(new String[strings.size()]); - setListPreferenceData(statusList, statusesArray,null); + setListPreferenceData(statusList, statusesArray, null); } @Override @@ -93,10 +94,10 @@ public class SharingFragment extends PreferenceFragment { List activeId = Stream.of(coords).indexed() .filter(v -> v.getSecond().getPredefinedCoordinateId().equals(currentCoordId)).map(IntPair::getFirst).toList(); - if(activeId.size() > 0) + if (activeId.size() > 0) setListPreferenceData(manualLocationList, stringnames, activeId.get(0)); - else{ - setListPreferenceData(manualLocationList, stringnames,null); + else { + setListPreferenceData(manualLocationList, stringnames, null); } } @@ -116,7 +117,7 @@ public class SharingFragment extends PreferenceFragment { locationSharing = findPreference("key_sharing_enabled"); locationMode = findPreference("key_location_level"); preferenceCategory = (PreferenceCategory) findPreference("category_sharing"); - manualLocationList = (ListPreference) findPreference("key_manual_location_value"); + manualLocationList = (ListPreference) findPreference("key_manual_location_value"); manualLocationButton = (RightButtonPreference) findPreference("manual_location_button"); manualStatus = findPreference("key_manual_status"); statusList = (ListPreference) findPreference("key_status_value"); @@ -149,10 +150,11 @@ public class SharingFragment extends PreferenceFragment { locationMode.setOnPreferenceChangeListener((preference, newValue) -> { PrefUtils.storeLocationMode(getApplicationContext(), locationLevelMapping.get(Integer.parseInt((String) newValue))); - if (PrefUtils.getLocationLevel(getApplicationContext()).equals("manual")) { - if(!predefinedCoordsList.isEmpty()){ - preferenceCategory.addPreference(manualLocationList); - } + + if (PrefUtils.getLocationLevel(getApplicationContext()).equals(SharingLevel.MANUAL.toString())) { + if (!predefinedCoordsList.isEmpty()) { + preferenceCategory.addPreference(manualLocationList); + } preferenceCategory.addPreference(manualLocationButton); @@ -167,24 +169,29 @@ public class SharingFragment extends PreferenceFragment { if (!PrefUtils.getLocationLevel(getApplicationContext()).equals("manual")) { preferenceCategory.removePreference(manualLocationList); preferenceCategory.removePreference(manualLocationButton); - }else{ -// if(predefinedCoordsList.isEmpty()){ -//// preferenceCategory.removePreference(manualLocationList); -// -// -// } } /** Custom manual location list change listener **/ manualLocationList.setOnPreferenceChangeListener((preference, newValue) -> { + Log.e("Change on manualList", (String) newValue); + ListPreference lp = (ListPreference) preference; CharSequence[] entries = lp.getEntries(); PredefinedCoordViewModel temp = Stream.of(predefinedCoordsList).filter(p -> p.getName().equals(lp.getEntries()[Integer.parseInt((String) newValue)].toString())).toList().get(0); - PrefUtils.putManualLocation(getApplicationContext(), temp.getGeoData(), temp.getApproximatedLocation() ); - PrefUtils.putCurrentManualLocation(getApplicationContext(),temp.getPredefinedCoordinateId()); - PrefUtils.putCurrentManualLocationName(getApplicationContext(), (String )lp.getEntries()[Integer.parseInt((String) newValue)]); - lp.setSummary(lp.getEntries()[Integer.parseInt((String) newValue)]); + if (!PrefUtils.isEnableSharingLocalization(getApplicationContext())) { + EnableSharingDialog sharingDialog = new EnableSharingDialog(); + sharingDialog.show(getFragmentManager(), "Sharing"); + //refresh view -> get new values from xml + + } + + PrefUtils.putManualLocation(getApplicationContext(), temp.getGeoData(), temp.getApproximatedLocation()); + PrefUtils.putCurrentManualLocation(getApplicationContext(), temp.getPredefinedCoordinateId()); + PrefUtils.putCurrentManualLocationName(getApplicationContext(), (String) lp.getEntries()[Integer.parseInt((String) newValue)]); + lp.setSummary(lp.getEntries()[Integer.parseInt((String) newValue)]); + getPreferenceScreen().removeAll(); + addPreferencesFromResource(R.layout.pref_sharing); return true; }); @@ -204,6 +211,7 @@ public class SharingFragment extends PreferenceFragment { lp.setSummary(entries[Integer.parseInt((String) newValue)]); return true; }); + /** Custom status list change listener **/ manualStatus.setOnPreferenceChangeListener((preference, newValue) -> { @@ -212,53 +220,50 @@ public class SharingFragment extends PreferenceFragment { .observeOn(AndroidSchedulers.mainThread()) .subscribe(this::handleResponse, this::handleError)); - return true; }); - - } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = super.onCreateView(inflater, container, savedInstanceState); Objects.requireNonNull(view).setBackgroundColor(getResources().getColor(android.R.color.white)); - + ; return view; } protected void setListPreferenceData(ListPreference lp, String[] entries, Integer activeId) { - Log.d("setlistpref",lp.getKey()); - try { - lp.setEntries(entries); - CharSequence[] entryValues = new CharSequence[entries.length]; + Log.d("setlistpref", lp.getKey()); + try { + lp.setEntries(entries); + CharSequence[] entryValues = new CharSequence[entries.length]; - for (int i = 0; i < entries.length; i++) { - entryValues[i] = Integer.toString(i); - } + for (int i = 0; i < entries.length; i++) { + entryValues[i] = Integer.toString(i); + } - lp.setDefaultValue(0); - lp.setEntryValues(entryValues); + lp.setDefaultValue(0); + lp.setEntryValues(entryValues); - if(entries.length > 0 && activeId != null) - lp.setValueIndex(activeId); + if (entries.length > 0 && activeId != null) + lp.setValueIndex(activeId); - }catch (Exception e){ - Log.e("Failed to set listPref",e.getMessage()); - } + } catch (Exception e) { + Log.e("Failed to set listPref", e.getMessage()); + } - }; + } + + ; private void handleResponse(List resp) { String[] statusesArray = resp.toArray(new String[resp.size()]); - setListPreferenceData(statusList, statusesArray,resp.size() - 1); + setListPreferenceData(statusList, statusesArray, resp.size() - 1); statusList.setValueIndex(resp.size() - 1); PrefUtils.storeStatus(getApplicationContext(), resp.get(resp.size() - 1)); - statusList.setSummary(PrefUtils.getUserStatus(getApplicationContext())); - - + statusList.setSummary(PrefUtils.getUserStatus(getApplicationContext())); } private void handleError(Throwable error) { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java b/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java index 6897226..71c1e1b 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/network/ApiClient.java @@ -27,7 +27,6 @@ public class ApiClient { private static Retrofit retrofit = null; private static int REQUEST_TIMEOUT = 60; private static OkHttpClient okHttpClient; -// private static final String BASE_URL = "https://s416084.projektstudencki.pl/master/"; public static Retrofit getClient(Context context) { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java index 4d78589..48fd35f 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/Const.java @@ -7,7 +7,7 @@ import java.util.List; public class Const { public final static String BASE_URL = "https://s416084.projektstudencki.pl/master/"; - public final static Integer onlineBackgroundLocationInterval = 15000; + public final static Integer onlineBackgroundLocationInterval = 7000; public final static Integer offlineBackgroundLocationInterval = 36000; public final static Integer defaultMapZoom = 17; public final static Integer searchMapZoom = 13; diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/EnableSharingDialog.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/EnableSharingDialog.java new file mode 100644 index 0000000..8bba46d --- /dev/null +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/EnableSharingDialog.java @@ -0,0 +1,71 @@ +package com.uam.wmi.findmytutor.utils; + + +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.Context; +import android.os.Bundle; +import android.support.v7.app.AlertDialog; +import android.widget.Toast; + +import com.uam.wmi.findmytutor.R; +import com.uam.wmi.findmytutor.activity.MapActivity; + +/*public class EnableSharingDialog extends DialogFragment { + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_sample_dialog, container, false); + getDialog().setTitle("Simple Dialog"); + return rootView; + } + public void createSharingDialog(Context context) { + LayoutInflater layoutInflaterAndroid = LayoutInflater.from(getActivity().getApplicationContext()); + View view = layoutInflaterAndroid.inflate(R.layout.user_list_modal, null); + + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity()); + dialogBuilder.setView(view); + + dialogBuilder.setMessage(R.string.enable_sharing_question); + dialogBuilder.setCancelable(true); + + dialogBuilder.setPositiveButton(R.string.possitive_dialog_button, + (dialog, id) -> { + dialogPositiveAnswer(context); + dialog.cancel(); + } + ); + + dialogBuilder.setNegativeButton( + R.string.negative_dialog_button, + (dialog, id) -> + dialog.cancel()); + + AlertDialog alert11 = dialogBuilder.create(); + alert11.show(); + } + + private void dialogPositiveAnswer(Context context) { + PrefUtils.storeBackgroundLocationStatus(context, true); + } +} +*/ +public class EnableSharingDialog extends DialogFragment { + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + return new AlertDialog.Builder(getActivity()) + .setTitle(R.string.sharing_modal_title) + .setMessage(R.string.enable_sharing_question) + .setPositiveButton(R.string.possitive_dialog_button, (dialog, which) -> + dialogPositiveAnswer(getActivity()) + ) + .setNegativeButton(R.string.negative_dialog_button, (dialog, which) -> dialog.cancel()).create(); + } + + private void dialogPositiveAnswer(Context context) { + PrefUtils.storeEnableSharingLocalization(context, true); + ((MapActivity) getActivity()).handleBackgroundTaskLifeCycle(); + + } +} 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 3a12597..27367f4 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 @@ -162,7 +162,7 @@ public class PrefUtils { editor.putString("key_location_level","3"); editor.putString("location_mode", "manual"); editor.putString("approx_manual_loc", approximatedLocation); - editor.putBoolean("key_sharing_enabled", true); + /*editor.putBoolean("key_sharing_enabled", true);*/ editor.putLong("longitude_manual_location", Double.doubleToRawLongBits(latLng.getLongitude())); editor.putLong("latitude_manual_location", Double.doubleToRawLongBits(latLng.getLatitude())); editor.apply(); diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index bac8b17..00f6e11 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -213,6 +213,11 @@ - użytkownik jest nieaktywny (nie udostępnił żadnych danych o lokalizacji od conajmniej tygodnia) + Tak + Nie + Aby skorzystać z tej funkcji musisz pozwolić na udostępnianie lokalizacji. Zgadzasz sie? + Udostępnianie + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4788c32..9eb00be 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -293,5 +293,9 @@ - user is currently offline - user is inactive (didn’t share any localization data since 7 days) + yes + No + In order to use this function, you have to enable localization sharing. May I do it for you? + Sharing