From 2332823ba8b4408359394e65035e92da7628b643 Mon Sep 17 00:00:00 2001 From: Adam Domagalski Date: Tue, 11 Dec 2018 19:24:45 +0100 Subject: [PATCH 01/16] removed duplicated acra --- app/src/main/res/values/strings.xml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ad51adb..7f493bb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -233,12 +233,8 @@ Network Error! Error handling status fetch Error handling status fetch - Error handling status fetch + Error handling status fetch - Auto reporting on issue is OFF - Auto reporting on issue is ON - ACRA reporting tool - Sorry, the application crashed. A report will be sent to the developers Sorry, the application crashed. A report will be sent to the developers FMT Issue FMT @@ -251,6 +247,7 @@ Allow to send raport to developers is ON Allow to send raport to developers is OFF App issues reporting + Sorry, the application crashed. A report will be sent to the developers On the map there are markers which represents tutors sharing their location right now. From 0c1bfb46c2bf3902d5901aebeea863488214e70d Mon Sep 17 00:00:00 2001 From: Adam Domagalski Date: Tue, 11 Dec 2018 19:28:35 +0100 Subject: [PATCH 02/16] no opacity --- app/src/main/res/drawable/layout_bg.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/drawable/layout_bg.xml b/app/src/main/res/drawable/layout_bg.xml index 574781c..051dd17 100644 --- a/app/src/main/res/drawable/layout_bg.xml +++ b/app/src/main/res/drawable/layout_bg.xml @@ -1,7 +1,7 @@ - - + + \ No newline at end of file From f568cea71170a0dcde4884db6a5366e529d426fd Mon Sep 17 00:00:00 2001 From: Adam Domagalski Date: Wed, 12 Dec 2018 11:23:45 +0100 Subject: [PATCH 03/16] popups text color half black --- app/src/main/res/layout/info_popup_map.xml | 58 ++++++++++--------- .../res/layout/info_popup_sharing_tab.xml | 34 +++++++---- .../main/res/layout/info_popup_tutor_tab.xml | 12 ++-- .../main/res/layout/info_popup_userlist.xml | 19 ++++-- 4 files changed, 74 insertions(+), 49 deletions(-) diff --git a/app/src/main/res/layout/info_popup_map.xml b/app/src/main/res/layout/info_popup_map.xml index 10f4bde..0df5cb7 100644 --- a/app/src/main/res/layout/info_popup_map.xml +++ b/app/src/main/res/layout/info_popup_map.xml @@ -1,74 +1,78 @@ - + android:textColor="@color/half_black"> + android:layout_weight="1" + android:text="@string/map_info_text_p1" + android:textColor="@color/half_black" /> + android:text="@string/map_info_text_p2" + android:textColor="@color/half_black" /> - + android:text="@string/map_info_text_p3" + android:textColor="@color/half_black" /> - + android:drawableLeft="@drawable/exact_localization_marker" + android:drawablePadding="5dp" + android:gravity="center" + android:text="@string/map_info_text_marker_exact" + android:textColor="@color/half_black" /> + android:drawableLeft="@drawable/approximate_localization_marker" + android:drawablePadding="5dp" + android:gravity="center" + android:text="@string/map_info_text_marker_approximated" + android:textColor="@color/half_black" /> + android:drawableLeft="@drawable/manual_localization_marker" + android:drawablePadding="5dp" + android:gravity="center" + android:text="@string/map_info_text_marker_manual" + android:textColor="@color/half_black" /> \ No newline at end of file diff --git a/app/src/main/res/layout/info_popup_sharing_tab.xml b/app/src/main/res/layout/info_popup_sharing_tab.xml index 9022593..98b617a 100644 --- a/app/src/main/res/layout/info_popup_sharing_tab.xml +++ b/app/src/main/res/layout/info_popup_sharing_tab.xml @@ -11,7 +11,8 @@ android:layout_height="wrap_content" android:layout_marginTop="5dp" android:layout_weight="1" - android:text="@string/info_icon_sharing_tab_p1" /> + android:text="@string/info_icon_sharing_tab_p1" + android:textColor="@color/half_black" /> + android:text="@string/info_icon_sharing_tab_p2" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_sharing_tab_p3" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_sharing_tab_p3_level_exact" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_sharing_tab_p3_level_approximate" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_sharing_tab_p3_level_manual" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_sharing_tab_p3_level_presence" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_sharing_tab_p4" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_sharing_tab_p5" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_sharing_tab_p6" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_sharing_tab_p7" + android:textColor="@color/half_black"/> \ No newline at end of file diff --git a/app/src/main/res/layout/info_popup_tutor_tab.xml b/app/src/main/res/layout/info_popup_tutor_tab.xml index 7f5feb8..6179c56 100644 --- a/app/src/main/res/layout/info_popup_tutor_tab.xml +++ b/app/src/main/res/layout/info_popup_tutor_tab.xml @@ -12,7 +12,8 @@ android:layout_marginLeft="5dp" android:layout_marginTop="15dp" android:layout_weight="1" - android:text="@string/info_icon_tutor_tab_p1" /> + android:text="@string/info_icon_tutor_tab_p1" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_tutor_tab_p2" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_tutor_tab_p3" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_tutor_tab_p4" + android:textColor="@color/half_black"/> \ No newline at end of file diff --git a/app/src/main/res/layout/info_popup_userlist.xml b/app/src/main/res/layout/info_popup_userlist.xml index b06a52c..74e06df 100644 --- a/app/src/main/res/layout/info_popup_userlist.xml +++ b/app/src/main/res/layout/info_popup_userlist.xml @@ -11,13 +11,16 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" - android:text="@string/info_icon_userlist_tab_p1" /> + android:text="@string/info_icon_userlist_tab_p1" + android:textColor="@color/half_black"/> + + android:text="@string/info_icon_userlist_tab_p2" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_userlist_tab_level_status_online" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_userlist_tab_level_status_offline" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_userlist_tab_level_status_inactive" + android:textColor="@color/half_black"/> + android:text="@string/info_icon_userlist_tab_level_status_inactive_tip" + android:textColor="@color/half_black"/> \ No newline at end of file From 3139d41ba4deeddef9602c9fd39a7961c94e5518 Mon Sep 17 00:00:00 2001 From: Domagalski Date: Sat, 15 Dec 2018 15:29:29 +0100 Subject: [PATCH 04/16] strings fixed, base url server moved to Const class --- app/src/main/AndroidManifest.xml | 20 ++++++++++++++----- .../com/uam/wmi/findmytutor/FindMyTutor.java | 4 +++- .../wmi/findmytutor/network/ApiClient.java | 5 +++-- .../com/uam/wmi/findmytutor/utils/Const.java | 1 + app/src/main/res/layout/pref_main.xml | 6 +++--- app/src/main/res/values/strings.xml | 2 +- 6 files changed, 26 insertions(+), 12 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 80031db..5ccbfb9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,7 +28,9 @@ + android:theme="@style/AppTheme.NoActionBar" + android:screenOrientation="portrait" + android:configChanges="keyboardHidden|orientation|screenSize"> @@ -37,14 +39,20 @@ + android:launchMode="singleTop" + android:screenOrientation="portrait" + android:configChanges="keyboardHidden|orientation|screenSize"/> + android:noHistory="true" + android:screenOrientation="portrait" + android:configChanges="keyboardHidden|orientation|screenSize"/> + android:name=".activity.SettingsActivity" + android:screenOrientation="portrait" + android:configChanges="keyboardHidden|orientation|screenSize"/> + android:theme="@style/AppTheme" + android:screenOrientation="portrait" + android:configChanges="keyboardHidden|orientation|screenSize"/> \ No newline at end of file diff --git a/app/src/main/java/com/uam/wmi/findmytutor/FindMyTutor.java b/app/src/main/java/com/uam/wmi/findmytutor/FindMyTutor.java index 0c2298f..3c2eabf 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/FindMyTutor.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/FindMyTutor.java @@ -5,6 +5,8 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; +import com.uam.wmi.findmytutor.utils.Const; + import static org.acra.ReportField.*; import org.acra.ACRA; import org.acra.annotation.AcraLimiter; @@ -50,7 +52,7 @@ public class FindMyTutor extends Application { builder.getPluginConfigurationBuilder( HttpSenderConfigurationBuilder.class // ).setUri("http://192.168.0.15:3000/api/acra") - ).setUri("https://s416084.projektstudencki.pl/develop/api/Feedback/autoFeedback") + ).setUri(Const.BASE_URL +"api/Feedback/autoFeedback") .setHttpMethod(HttpSender.Method.POST) .setHttpHeaders(header) .setEnabled(true); 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 1835496..6897226 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 @@ -4,6 +4,7 @@ import android.content.Context; import android.text.TextUtils; import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +import com.uam.wmi.findmytutor.utils.Const; import com.uam.wmi.findmytutor.utils.PrefUtils; import java.io.IOException; @@ -26,7 +27,7 @@ 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/"; +// private static final String BASE_URL = "https://s416084.projektstudencki.pl/master/"; public static Retrofit getClient(Context context) { @@ -35,7 +36,7 @@ public class ApiClient { if (retrofit == null) { retrofit = new Retrofit.Builder() - .baseUrl(BASE_URL) + .baseUrl(Const.BASE_URL) .client(okHttpClient) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) 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 6a4282a..4d78589 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 @@ -6,6 +6,7 @@ import java.util.Arrays; 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 offlineBackgroundLocationInterval = 36000; public final static Integer defaultMapZoom = 17; diff --git a/app/src/main/res/layout/pref_main.xml b/app/src/main/res/layout/pref_main.xml index 2977f17..eedf7e1 100644 --- a/app/src/main/res/layout/pref_main.xml +++ b/app/src/main/res/layout/pref_main.xml @@ -16,11 +16,11 @@ android:title="@string/title_language" /> + android:defaultValue="true"/> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7f493bb..4788c32 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -246,7 +246,7 @@ Allow to send raport to developers is ON Allow to send raport to developers is OFF - App issues reporting + App issues reporting Sorry, the application crashed. A report will be sent to the developers From 90aa21be1d3113406206cc8261639e388c6870b6 Mon Sep 17 00:00:00 2001 From: Domagalski Date: Sat, 15 Dec 2018 21:35:00 +0100 Subject: [PATCH 05/16] Info button on toolbar --- .idea/misc.xml | 2 +- .../findmytutor/activity/BaseActivity.java | 43 +++++++++++++++++++ .../wmi/findmytutor/activity/MapActivity.java | 1 + app/src/main/res/menu/menu_main.xml | 7 +++ 4 files changed, 52 insertions(+), 1 deletion(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index b0c7b20..dc44dda 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -29,7 +29,7 @@ - + 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 5be8ec4..257a4a0 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 @@ -7,6 +7,7 @@ import android.app.FragmentTransaction; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Configuration; +import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; @@ -20,16 +21,20 @@ import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; +import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.PopupWindow; import android.widget.Toast; import com.uam.wmi.findmytutor.R; import com.uam.wmi.findmytutor.service.BackgroundLocalizationService; import com.uam.wmi.findmytutor.utils.ActiveFragment; import com.uam.wmi.findmytutor.utils.FeedbackUtils; +import com.uam.wmi.findmytutor.utils.InfoHelperUtils; import com.uam.wmi.findmytutor.utils.PrefUtils; import com.uam.wmi.findmytutor.utils.RxSearchObservable; @@ -76,6 +81,7 @@ public abstract class BaseActivity private ActiveFragment activeFragment = ActiveFragment.NONE; private Fragment activeBottomMenu = null; private SearchView searchView; + public MenuItem infoMenuItem; @SuppressLint("CheckResult") @Override @@ -266,6 +272,8 @@ public abstract class BaseActivity @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); + infoMenuItem = menu.findItem(R.id.action_info); + MenuItem myActionMenuItem = menu.findItem(R.id.action_search); searchView = (SearchView) myActionMenuItem.getActionView(); @@ -313,6 +321,41 @@ public abstract class BaseActivity if (actionBarDrawerToggle.onOptionsItemSelected(item)) { return true; } + + if (item.getItemId()==R.id.action_info){ + + int layoutID; + switch (activeFragment){ + case SHARED_PREFERENCES: + layoutID = R.layout.info_popup_sharing_tab; + break; + case USER_LIST: + layoutID = R.layout.info_popup_userlist; + break; + default: + layoutID = R.layout.info_popup_map; + } + + View popupView = getLayoutInflater().inflate(layoutID,null); + + PopupWindow popupWindow = new PopupWindow(popupView, + LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + // If the PopupWindow should be focusable + popupWindow.setFocusable(true); + // If you need the PopupWindow to dismiss when when touched outside + popupWindow.setBackgroundDrawable(new ColorDrawable()); + int location[] = new int[2]; + // Get the View's(the one that was clicked in the Fragment) location + View anchorView= getWindow().getDecorView().findViewById(android.R.id.content); + + anchorView.getLocationOnScreen(location); + // Using location, the PopupWindow will be displayed right under anchorView + popupWindow.showAsDropDown(anchorView,0,170,Gravity.RIGHT); +// popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, +// location[0] + anchorView.getWidth() / 2, location[1] + anchorView.getHeight()); + } + + return super.onOptionsItemSelected(item); } 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..6157e81 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 @@ -131,6 +131,7 @@ public class MapActivity extends BaseActivity }; + findViewById(R.id.mapInfoImageButton).setOnClickListener(v-> InfoHelperUtils.infoPopUp(v, R.layout.info_popup_map)); selectLocationButton = findViewById(R.id.select_location_button); removeLocationButton = findViewById(R.id.remove_location_button); diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 9d9f483..96cd955 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -8,4 +8,11 @@ app:showAsAction="always" app:actionViewClass="android.support.v7.widget.SearchView" android:title="@string/search"/> + \ No newline at end of file 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 06/16] 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 From 672a6bee06a8090debbf4aaac8c8d1b4732c3213 Mon Sep 17 00:00:00 2001 From: Domagalski Date: Sat, 15 Dec 2018 22:47:23 +0100 Subject: [PATCH 07/16] teraz --- .../java/com/uam/wmi/findmytutor/activity/BaseActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 257a4a0..e008288 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 @@ -350,7 +350,8 @@ public abstract class BaseActivity anchorView.getLocationOnScreen(location); // Using location, the PopupWindow will be displayed right under anchorView - popupWindow.showAsDropDown(anchorView,0,170,Gravity.RIGHT); +// popupWindow.showAsDropDown(anchorView,6,170,Gravity.RIGHT|Gravity.CENTER); + popupWindow.showAtLocation(anchorView,Gravity.TOP|Gravity.RIGHT, 0, 0); // popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, // location[0] + anchorView.getWidth() / 2, location[1] + anchorView.getHeight()); } From c8145323c56c00884eeb787cfb5f1d9ebffdda2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Sat, 15 Dec 2018 23:45:02 +0100 Subject: [PATCH 08/16] refresh sharing tab --- .../findmytutor/activity/BaseActivity.java | 2 ++ .../wmi/findmytutor/activity/MapActivity.java | 2 +- .../findmytutor/activity/SharingFragment.java | 36 +++++++++++++++---- 3 files changed, 32 insertions(+), 8 deletions(-) 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 5be8ec4..e20912f 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 @@ -82,9 +82,11 @@ public abstract class BaseActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getContentViewId()); + drawerNavigationView = findViewById(R.id.nav_view); sideDrawer = findViewById(R.id.activity_container); feedbackUtils = new FeedbackUtils(BaseActivity.this); + drawerNavigationView.setNavigationItemSelectedListener( item -> { String itemName = (String) item.getTitle(); 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 ce0ba3f..6eb799e 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 @@ -112,6 +112,7 @@ public class MapActivity extends BaseActivity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + isTutor = PrefUtils.getIsTutor(this); myId = PrefUtils.getUserId(getApplicationContext()); @@ -143,7 +144,6 @@ public class MapActivity extends BaseActivity handleBackgroundTaskLifeCycle(); manualLocationUtils = new ManualLocationUtils(MapActivity.this); approximatedLocalization = new ApproximatedLocalization(MapUtils.loadJsonFromAsset(getApplicationContext(), "building.geojson")); - } @Override 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 db03aca..6f00fbc 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 @@ -2,11 +2,13 @@ package com.uam.wmi.findmytutor.activity; import android.annotation.SuppressLint; import android.app.FragmentTransaction; +import android.content.SharedPreferences; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; +import android.preference.SwitchPreference; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -40,8 +42,8 @@ import okhttp3.ResponseBody; import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; -public class SharingFragment extends PreferenceFragment { - protected Preference locationSharing; +public class SharingFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { + protected SwitchPreference locationSharing; protected Preference locationMode; protected ListPreference manualLocationList; protected PreferenceCategory preferenceCategory; @@ -114,7 +116,7 @@ public class SharingFragment extends PreferenceFragment { public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.layout.pref_sharing); - locationSharing = findPreference("key_sharing_enabled"); + locationSharing = (SwitchPreference) findPreference("key_sharing_enabled"); locationMode = findPreference("key_location_level"); preferenceCategory = (PreferenceCategory) findPreference("category_sharing"); manualLocationList = (ListPreference) findPreference("key_manual_location_value"); @@ -183,18 +185,20 @@ public class SharingFragment extends PreferenceFragment { 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; }); + + /** Button 'choose from map' button listener **/ manualLocationButton.setOnPreferenceChangeListener((preference, o) -> { FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); @@ -228,7 +232,7 @@ public class SharingFragment extends PreferenceFragment { 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; } @@ -278,4 +282,22 @@ public class SharingFragment extends PreferenceFragment { } } + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + locationSharing.setChecked(PrefUtils.isEnableSharingLocalization(getApplicationContext())); + + } + + @Override + public void onResume() { + super.onResume(); + getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); + + } + + @Override + public void onPause() { + getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); + super.onPause(); + } } From dee33a2ec3c45c71f030e831aa8b212386897dc4 Mon Sep 17 00:00:00 2001 From: Domagalski Date: Sun, 16 Dec 2018 00:13:49 +0100 Subject: [PATCH 09/16] info icon at toolbar + clean up --- .../uam/wmi/findmytutor/activity/BaseActivity.java | 11 +---------- .../com/uam/wmi/findmytutor/activity/MapActivity.java | 2 -- .../wmi/findmytutor/activity/UsersListFragment.java | 1 - app/src/main/res/layout/activity_map.xml | 6 ------ app/src/main/res/layout/pref_sharing.xml | 2 -- app/src/main/res/layout/users_list.xml | 7 ------- 6 files changed, 1 insertion(+), 28 deletions(-) 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 e008288..f616148 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 @@ -323,7 +323,6 @@ public abstract class BaseActivity } if (item.getItemId()==R.id.action_info){ - int layoutID; switch (activeFragment){ case SHARED_PREFERENCES: @@ -344,19 +343,11 @@ public abstract class BaseActivity popupWindow.setFocusable(true); // If you need the PopupWindow to dismiss when when touched outside popupWindow.setBackgroundDrawable(new ColorDrawable()); - int location[] = new int[2]; // Get the View's(the one that was clicked in the Fragment) location View anchorView= getWindow().getDecorView().findViewById(android.R.id.content); - - anchorView.getLocationOnScreen(location); - // Using location, the PopupWindow will be displayed right under anchorView -// popupWindow.showAsDropDown(anchorView,6,170,Gravity.RIGHT|Gravity.CENTER); - popupWindow.showAtLocation(anchorView,Gravity.TOP|Gravity.RIGHT, 0, 0); -// popupWindow.showAtLocation(anchorView, Gravity.NO_GRAVITY, -// location[0] + anchorView.getWidth() / 2, location[1] + anchorView.getHeight()); + popupWindow.showAtLocation(anchorView,Gravity.TOP|Gravity.END, 0, 0); } - return super.onOptionsItemSelected(item); } 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 6157e81..d2e2229 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 @@ -131,8 +131,6 @@ public class MapActivity extends BaseActivity }; - - findViewById(R.id.mapInfoImageButton).setOnClickListener(v-> InfoHelperUtils.infoPopUp(v, R.layout.info_popup_map)); selectLocationButton = findViewById(R.id.select_location_button); removeLocationButton = findViewById(R.id.remove_location_button); mapView = findViewById(R.id.mapView); 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 f034f44..0ed27fc 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 @@ -84,7 +84,6 @@ public class UsersListFragment extends Fragment { public void onViewCreated(View view, Bundle savedInstanceState) { ButterKnife.bind(this, view); - view.findViewById(R.id.userListInfoImageButton).setOnClickListener(v -> InfoHelperUtils.infoPopUp(v,R.layout.info_popup_userlist)); userService = ApiClient.getClient(getApplicationContext()) .create(UserService.class); diff --git a/app/src/main/res/layout/activity_map.xml b/app/src/main/res/layout/activity_map.xml index 20477f0..fa650bb 100644 --- a/app/src/main/res/layout/activity_map.xml +++ b/app/src/main/res/layout/activity_map.xml @@ -20,12 +20,6 @@ - - - - diff --git a/app/src/main/res/layout/users_list.xml b/app/src/main/res/layout/users_list.xml index e87d8be..daed3cd 100644 --- a/app/src/main/res/layout/users_list.xml +++ b/app/src/main/res/layout/users_list.xml @@ -10,13 +10,6 @@ - - From f7edee0c56f5c4732e7e0a8c272ce40c1b227a39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Sun, 16 Dec 2018 14:47:14 +0100 Subject: [PATCH 10/16] Fix handle BG --- .../findmytutor/activity/BaseActivity.java | 12 +++++- .../wmi/findmytutor/activity/MapActivity.java | 21 ++++------ .../findmytutor/activity/SharingFragment.java | 29 +++++++------- .../utils/EnableSharingDialog.java | 40 ------------------- 4 files changed, 33 insertions(+), 69 deletions(-) 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 e20912f..61725fa 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 @@ -20,6 +20,7 @@ import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -46,6 +47,7 @@ import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; +import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; import static com.uam.wmi.findmytutor.utils.Const.defaultMapZoom; import static com.uam.wmi.findmytutor.utils.Const.searchMapZoom; import static com.uam.wmi.findmytutor.utils.PrefUtils.storeBackgroundLocationStatus; @@ -193,7 +195,10 @@ public abstract class BaseActivity public void stopBackgroundLocalizationTask() { Intent stopIntent = new Intent(getApplicationContext(), BackgroundLocalizationService.class); stopIntent.putExtra("request_stop", true); - startService(stopIntent); + Log.e("Localization", "JEstem w stop BG"); + + stopService(stopIntent); + } public void startBackgroundLocalizationTask() { @@ -209,12 +214,17 @@ public abstract class BaseActivity } public void handleBackgroundTaskLifeCycle() { + Log.e("Localization", String.valueOf(PrefUtils.isEnableSharingLocalization(getApplicationContext()))); Boolean shouldServiceRun = PrefUtils.isEnableSharingLocalization(getApplicationContext()) && isTutor; + Log.e("Localization", String.valueOf(shouldServiceRun)); if (shouldServiceRun) { startBackgroundLocalizationTask(); + Log.e("Localization", "JEstem i odpalam"); + } else { stopBackgroundLocalizationTask(); + Log.e("Localization", "JEstem i nie odpalam"); } } 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 6eb799e..ffdcc8b 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 @@ -4,8 +4,6 @@ import android.Manifest; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.annotation.SuppressLint; -import android.app.Dialog; -import android.graphics.drawable.ColorDrawable; import android.location.Location; import android.os.Bundle; import android.os.Handler; @@ -13,14 +11,11 @@ import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.util.Log; -import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.animation.LinearInterpolator; import android.widget.Button; import android.widget.EditText; -import android.widget.LinearLayout; -import android.widget.PopupWindow; import android.widget.TextView; import android.widget.Toast; @@ -74,8 +69,6 @@ import io.reactivex.schedulers.Schedulers; import okhttp3.ResponseBody; import timber.log.Timber; -import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; - public class MapActivity extends BaseActivity implements PermissionsListener, OnMapReadyCallback { @@ -133,7 +126,7 @@ public class MapActivity extends BaseActivity }; - findViewById(R.id.mapInfoImageButton).setOnClickListener(v-> InfoHelperUtils.infoPopUp(v, R.layout.info_popup_map)); + findViewById(R.id.mapInfoImageButton).setOnClickListener(v -> InfoHelperUtils.infoPopUp(v, R.layout.info_popup_map)); selectLocationButton = findViewById(R.id.select_location_button); removeLocationButton = findViewById(R.id.remove_location_button); mapView = findViewById(R.id.mapView); @@ -236,8 +229,6 @@ public class MapActivity extends BaseActivity private void showError(Throwable e) { String message; - Log.e("ERR", e.toString()); - if (e instanceof HttpException) { ResponseBody responseBody = ((HttpException) e).response().errorBody(); message = RestApiHelper.getErrorMessage(responseBody); @@ -340,10 +331,14 @@ public class MapActivity extends BaseActivity alertDialog.setOnShowListener(dialogInterface -> { Button sendButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); - Button dismissButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE); - dismissButton.setOnClickListener(view1 -> alertDialog.dismiss()); + dismissButton.setOnClickListener(view1 -> { + PrefUtils.putCurrentManualLocationName(getApplicationContext(), "Inne"); + PrefUtils.putCurrentManualLocation(getApplicationContext(), "-1"); + + alertDialog.dismiss(); + }); sendButton.setOnClickListener(view1 -> { String body = modalUserInput.getText().toString(); @@ -353,7 +348,7 @@ public class MapActivity extends BaseActivity modalUserInput.requestFocus(); } else { sendLocation(body, latLng); - PrefUtils.putCurrentManualLocationName(getApplicationContext(),body); + PrefUtils.putCurrentManualLocationName(getApplicationContext(), body); alertDialog.dismiss(); } }); 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 6f00fbc..24052cb 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 @@ -22,6 +22,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.Const; import com.uam.wmi.findmytutor.utils.EnableSharingDialog; import com.uam.wmi.findmytutor.utils.PrefUtils; import com.uam.wmi.findmytutor.utils.RestApiHelper; @@ -88,25 +89,27 @@ public class SharingFragment extends PreferenceFragment implements SharedPrefere @Override public void onSuccess(List coords) { - List names = Stream.of(coords).map(PredefinedCoordViewModel::getName).collect(com.annimon.stream.Collectors.toList()); - predefinedCoordsList.addAll(coords); - String[] stringnames = names.toArray(new String[0]); String currentCoordId = PrefUtils.getCurrentManualLocation(getApplicationContext()); - List activeId = Stream.of(coords).indexed() + List predefinedLocationsNames = Stream.of(coords).map(PredefinedCoordViewModel::getName).toList(); + predefinedCoordsList.addAll(coords); + + String[] stringnames = predefinedLocationsNames.toArray(new String[0]); + + List activesId = Stream.of(coords).indexed() .filter(v -> v.getSecond().getPredefinedCoordinateId().equals(currentCoordId)).map(IntPair::getFirst).toList(); - if (activeId.size() > 0) - setListPreferenceData(manualLocationList, stringnames, activeId.get(0)); - else { + if( activesId.size() == 0){ setListPreferenceData(manualLocationList, stringnames, null); } + else { + setListPreferenceData(manualLocationList, stringnames, activesId.get(0)); + } } @Override public void onError(Throwable e) { Toast.makeText(getApplicationContext(), R.string.error_location_fetch, Toast.LENGTH_SHORT).show(); - } })); } @@ -140,7 +143,7 @@ public class SharingFragment extends PreferenceFragment implements SharedPrefere statusList.setSummary(PrefUtils.getUserStatus(getApplicationContext())); manualLocationList.setSummary(PrefUtils.getCurrentManualLocationName(getApplicationContext())); -// manualLocationList.setSummary(PrefUtils.getManualLocation(getApplicationContext())); + /** Main sharing switch**/ locationSharing.setOnPreferenceChangeListener((buttonView, newValue) -> { PrefUtils.storeEnableSharingLocalization(getApplicationContext(), (Boolean) newValue); @@ -175,16 +178,14 @@ public class SharingFragment extends PreferenceFragment implements SharedPrefere /** 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); + //sharing dialog -> ask for start BG 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()); @@ -192,8 +193,6 @@ public class SharingFragment extends PreferenceFragment implements SharedPrefere PrefUtils.putCurrentManualLocationName(getApplicationContext(), (String) lp.getEntries()[Integer.parseInt((String) newValue)]); lp.setSummary(lp.getEntries()[Integer.parseInt((String) newValue)]); - - return true; }); @@ -237,7 +236,7 @@ public class SharingFragment extends PreferenceFragment implements SharedPrefere } protected void setListPreferenceData(ListPreference lp, String[] entries, Integer activeId) { - Log.d("setlistpref", lp.getKey()); + try { lp.setEntries(entries); CharSequence[] entryValues = new CharSequence[entries.length]; 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 index 8bba46d..eafb29e 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/EnableSharingDialog.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/EnableSharingDialog.java @@ -1,6 +1,5 @@ package com.uam.wmi.findmytutor.utils; - import android.app.Dialog; import android.app.DialogFragment; import android.content.Context; @@ -11,45 +10,6 @@ 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 From 9f0ef0590d13b046b83b29f5dd4030ad0fcb8c94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Sun, 16 Dec 2018 17:42:05 +0100 Subject: [PATCH 11/16] Fix strings --- .../wmi/findmytutor/activity/MapActivity.java | 18 ++++++++++++------ .../wmi/findmytutor/utils/InfoHelperUtils.java | 11 ++--------- .../uam/wmi/findmytutor/utils/LocaleUtils.java | 7 ++++++- app/src/main/res/layout/info_popup_map.xml | 9 ++++----- app/src/main/res/layout/users_list_main.xml | 3 --- app/src/main/res/values-pl/strings.xml | 16 +++++++++++++--- app/src/main/res/values/strings.xml | 14 +++++++++----- 7 files changed, 46 insertions(+), 32 deletions(-) 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 4378b7a..b1e9a32 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 @@ -47,8 +47,9 @@ 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; import com.uam.wmi.findmytutor.utils.MapUtils; @@ -149,7 +150,7 @@ public class MapActivity extends BaseActivity String id = markerUserHash.get(marker.getId()); String locationLevel = PrefUtils.getLocationLevel(getApplicationContext()); - if (id.equals(myId) && (locationLevel.equals(SharingLevel.MANUAL.toString()) || locationLevel.equals(SharingLevel.PREDEFINED.toString()))) { + /* if (id.equals(myId) && (locationLevel.equals(SharingLevel.MANUAL.toString()) || locationLevel.equals(SharingLevel.PREDEFINED.toString()))) { selectLocationButton.setVisibility(View.GONE); removeLocationButton.setVisibility(View.VISIBLE); @@ -160,9 +161,9 @@ public class MapActivity extends BaseActivity Toast.makeText(MapActivity.this, R.string.manual_marker_info, Toast.LENGTH_SHORT).show(); }); - } else { + } else {*/ createMarkerModal(id); - } + /* }*/ return true; }); @@ -214,14 +215,19 @@ public class MapActivity extends BaseActivity TextView sharingLevelView = view.findViewById(R.id.sharing_level); userName.setText(String.format("%s %s", user.getFirstName(), user.getLastName())); - status.setText(String.format("%s: %s", getResources().getString(R.string.status_switch_title), cordStatus)); + + if(cordStatus.equals("")){ + status.setText(String.format("%s: %s", getResources().getString(R.string.status_switch_title), getString(R.string.lack_of_status))); + }else{ + status.setText(String.format("%s: %s", getResources().getString(R.string.status_switch_title), cordStatus)); + } + sharingLevelView.setText(String.format("%s: %s", getResources().getString(R.string.settings_location_level), sharingLevel)); final AlertDialog alertDialog = alertDialogBuilderUserInput.create(); alertDialog.show(); } - private void handleError(Throwable error) { showError(error); } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/InfoHelperUtils.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/InfoHelperUtils.java index 232e3ae..1bde7f4 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/InfoHelperUtils.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/InfoHelperUtils.java @@ -1,30 +1,23 @@ package com.uam.wmi.findmytutor.utils; -import android.app.Activity; import android.content.Context; import android.graphics.drawable.ColorDrawable; -import android.support.v7.app.AlertDialog; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; -import android.view.WindowManager; -import android.widget.Button; import android.widget.LinearLayout; import android.widget.PopupWindow; -import android.widget.Toast; -import com.uam.wmi.findmytutor.R; +import java.util.Objects; import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; public class InfoHelperUtils { - - public static void infoPopUp(View anchorView, int layoutId) { LayoutInflater layoutInflater = (LayoutInflater)getApplicationContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE ); - View popupView = layoutInflater.inflate(layoutId, null); + View popupView = Objects.requireNonNull(layoutInflater).inflate(layoutId, null); PopupWindow popupWindow = new PopupWindow(popupView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/utils/LocaleUtils.java b/app/src/main/java/com/uam/wmi/findmytutor/utils/LocaleUtils.java index f4c15fb..9e9f0da 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/utils/LocaleUtils.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/utils/LocaleUtils.java @@ -1,15 +1,20 @@ package com.uam.wmi.findmytutor.utils; import android.content.Context; +import android.content.res.Resources; import android.os.Build; +import android.support.v4.os.ConfigurationCompat; + +import java.util.Locale; public class LocaleUtils { public static String getCurrentLocale(Context context){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ - return String.valueOf(context.getResources().getConfiguration().getLocales().get(0)); + return String.valueOf(ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration())); } else{ //noinspection deprecation return String.valueOf(context.getResources().getConfiguration().locale); + } } } diff --git a/app/src/main/res/layout/info_popup_map.xml b/app/src/main/res/layout/info_popup_map.xml index 0df5cb7..e09d682 100644 --- a/app/src/main/res/layout/info_popup_map.xml +++ b/app/src/main/res/layout/info_popup_map.xml @@ -42,10 +42,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" - android:layout_marginTop="20dp" - android:layout_weight="1" android:drawableLeft="@drawable/exact_localization_marker" android:drawablePadding="5dp" + android:layout_marginBottom="5dp" android:gravity="center" android:text="@string/map_info_text_marker_exact" android:textColor="@color/half_black" /> @@ -56,9 +55,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" - android:layout_weight="1" android:drawableLeft="@drawable/approximate_localization_marker" android:drawablePadding="5dp" + android:layout_marginBottom="5dp" android:gravity="center" android:text="@string/map_info_text_marker_approximated" android:textColor="@color/half_black" /> @@ -68,9 +67,9 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" - android:layout_weight="1" + android:layout_marginBottom="5dp" android:drawableLeft="@drawable/manual_localization_marker" - android:drawablePadding="5dp" + android:drawablePadding="0dp" android:gravity="center" android:text="@string/map_info_text_marker_manual" android:textColor="@color/half_black" /> diff --git a/app/src/main/res/layout/users_list_main.xml b/app/src/main/res/layout/users_list_main.xml index 58a94c5..7e767f0 100644 --- a/app/src/main/res/layout/users_list_main.xml +++ b/app/src/main/res/layout/users_list_main.xml @@ -1,6 +1,4 @@ - - - Na mapie wyświetlane są markery reprezentujące profesorów udostępniających w tej chwili swoją lokalizację. Po kliknięciu w marker możemy sprawdzić kto udostępnia lokalizację, oraz status opisowy (jeśli profesor go ustawił). W aplikacji dostępne są 3 rodzaje lokalizacji, które reprezentowane są przez markery różnego koloru. - lokalizacja dokładna (udostępniana z GPS telefonu) - lokalizacja przybliżona - lokalizacja manualna (wybrana ręcznie) + - lokalizacja dokładna (udostępniana z GPS telefonu) + - lokalizacja przybliżona + - lokalizacja manualna (wybrana ręcznie) W tym panelu możesz dodać użytkowników do swojej czarnej listy. Użytkownicy z czarnej listy nie będą widzieć żadnych danych które udostępniasz - lokalizacji, twojego statusu online, czy informacji o obecności. @@ -212,12 +212,22 @@ - użytkownik jest obecnie offline - użytkownik jest nieaktywny (nie udostępnił żadnych danych o lokalizacji od conajmniej tygodnia) + Użytkownik nie zdefiniował statusu. + Tak Nie Aby skorzystać z tej funkcji musisz pozwolić na udostępnianie lokalizacji. Zgadzasz sie? Udostępnianie + + + + Pozwól na wysyłanie raportów o błędach. + Pozwól na wysyłanie raportów o błędach. + Raportowanie błędów. + Błąd aplikacji. Informacje o błędzie zostanie wysłana do twórców. + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9eb00be..ca5da17 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -244,8 +244,8 @@ mock location string - Allow to send raport to developers is ON - Allow to send raport to developers is OFF + Allow to send report to developers is ON + Allow to send report to developers is OFF App issues reporting Sorry, the application crashed. A report will be sent to the developers @@ -253,9 +253,9 @@ On the map there are markers which represents tutors sharing their location right now. After clicking on a marker, you can check who is sharing it and the descriptive status (if the tutor have set one). In the app there are 3 possible types of localization, represented by various colors. - exact localization (from mobile GPS) - approximated localization - manual localization (manually picked) + - exact localization (from mobile GPS) + - approximated localization + - manual localization (manually picked) In this panel you can add users to your blacklist. Users from the blacklist can’t see any data that you share - localization, online status, or information about presence. @@ -293,9 +293,13 @@ - 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 + The user hasn\'t defined a status. + + From a0f78aef2d385f5ffb06d41a5f024329e80b2dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Sun, 16 Dec 2018 18:31:04 +0100 Subject: [PATCH 12/16] Revert "Merge branch 'extendTutorTab' of s416084/find-my-tutor-android into develop" This reverts commit 264f752b201f0097f82ec95cc5388afe3e0d63dc, reversing changes made to 6498f2e58d1b731553181e8d49a207d71204874c. --- .idea/codeStyles/Project.xml | 56 +++--- .../findmytutor/activity/SharingFragment.java | 5 +- .../wmi/findmytutor/activity/TutorTab.java | 120 +++--------- .../adapters/DutyHoursAdapter.java | 163 ---------------- .../uam/wmi/findmytutor/model/DutyHour.java | 3 - .../findmytutor/model/DutyHourViewModel.java | 14 -- .../findmytutor/model/TutorTabViewModel.java | 7 +- .../wmi/findmytutor/service/TutorTabApi.java | 7 +- app/src/main/res/layout/content_tutor_tab.xml | 183 +++++------------- app/src/main/res/layout/duty_hour_row.xml | 61 ------ app/src/main/res/values-pl/strings.xml | 10 - app/src/main/res/values/strings.xml | 20 -- 12 files changed, 114 insertions(+), 535 deletions(-) delete mode 100644 app/src/main/java/com/uam/wmi/findmytutor/adapters/DutyHoursAdapter.java delete mode 100644 app/src/main/res/layout/duty_hour_row.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 2715a34..30aa626 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,29 +1,29 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + \ No newline at end of file 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 1ede65f..6bf9a04 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 @@ -7,7 +7,6 @@ import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceCategory; import android.preference.PreferenceFragment; -import android.preference.SwitchPreference; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -41,7 +40,7 @@ import static com.mapbox.mapboxsdk.Mapbox.getApplicationContext; public class SharingFragment extends PreferenceFragment { - protected SwitchPreference locationSharing; + protected Preference locationSharing; protected Preference locationMode; protected ListPreference manualLocationList; protected PreferenceCategory preferenceCategory; @@ -114,7 +113,7 @@ public class SharingFragment extends PreferenceFragment { public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.layout.pref_sharing); - locationSharing = (SwitchPreference) findPreference("key_sharing_enabled"); + locationSharing = findPreference("key_sharing_enabled"); locationMode = findPreference("key_location_level"); preferenceCategory = (PreferenceCategory) findPreference("category_sharing"); manualLocationList = (ListPreference) findPreference("key_manual_location_value"); diff --git a/app/src/main/java/com/uam/wmi/findmytutor/activity/TutorTab.java b/app/src/main/java/com/uam/wmi/findmytutor/activity/TutorTab.java index 31ac9e6..f96a2b0 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/activity/TutorTab.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/activity/TutorTab.java @@ -2,22 +2,16 @@ package com.uam.wmi.findmytutor.activity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; -import android.widget.Adapter; import android.widget.Button; import android.widget.EditText; -import android.widget.LinearLayout; 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.DutyHoursAdapter; -import com.uam.wmi.findmytutor.model.DutyHour; import com.uam.wmi.findmytutor.model.DutyHourViewModel; import com.uam.wmi.findmytutor.model.TutorTabViewModel; import com.uam.wmi.findmytutor.model.User; @@ -28,7 +22,6 @@ import com.uam.wmi.findmytutor.utils.InfoHelperUtils; import com.uam.wmi.findmytutor.utils.PrefUtils; import com.uam.wmi.findmytutor.utils.RestApiHelper; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -49,38 +42,28 @@ public class TutorTab extends AppCompatActivity { private TextView userRoom; private TextView userEmail; private TextView department; - private Button addDutyButton; private Button saveButon; - private Boolean ifTutorTabExists = true; - private List dutyHourList; - private RecyclerView dutyHoursRecycller; - private DutyHoursAdapter dutyHoursAdapter; - private RecyclerView.LayoutManager dutyHoursLayoutManager; private TutorTabViewModel newTab; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.content_tutor_tab); - - userName = findViewById(R.id.userName); -// TextView userDutyHours = findViewById(R.id.userDutyHours); - userNote = findViewById(R.id.userNote); - userRoom = findViewById(R.id.userRoom); - userEmail = findViewById(R.id.userEmail); - department = findViewById(R.id.userDepartment); - saveButon = findViewById(R.id.saveButon); - addDutyButton = findViewById(R.id.addDuty); - dutyHoursRecycller = (RecyclerView) findViewById(R.id.dutyHourView); - dutyHoursLayoutManager = new LinearLayoutManager(this); - dutyHoursRecycller.setLayoutManager(dutyHoursLayoutManager); - - tutorTabService = ApiClient.getClient(getApplicationContext()) .create(TutorTabApi.class); userService = ApiClient.getClient(getApplicationContext()) .create(UserService.class); + setContentView(R.layout.content_tutor_tab); + TextView userName = findViewById(R.id.userName); + TextView userDutyHours = findViewById(R.id.userDutyHours); + EditText userNote = findViewById(R.id.userNote); + TextView userRoom = findViewById(R.id.userRoom); + TextView userEmail = findViewById(R.id.userEmail); + TextView department = findViewById(R.id.userDepartment); + Button saveButon = findViewById(R.id.saveButon); + findViewById(R.id.contentTutorTabInfoImageButton).setOnClickListener(v-> InfoHelperUtils.infoPopUp(v,R.layout.info_popup_tutor_tab)); + + userName.setText(String.format("%s %s", PrefUtils.getUserFirstName(getApplicationContext()), PrefUtils.getUserLastName(getApplicationContext()))); disposable.add( tutorTabService.apiUsersTutorTabByTutorIdGet(PrefUtils.getUserId(getApplicationContext())) .subscribeOn(Schedulers.io()) @@ -89,49 +72,23 @@ public class TutorTab extends AppCompatActivity { @Override public void onSuccess(TutorTabViewModel tutorTabViewModel) { - dutyHourList = tutorTabViewModel.getDutyHours(); - if(dutyHourList == null){ - }else{ - dutyHoursAdapter = new DutyHoursAdapter(getApplicationContext(),dutyHourList); - dutyHoursRecycller.setAdapter(dutyHoursAdapter); - addDutyButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - addEmptyDuty(dutyHoursAdapter); - } - }); - } - userRoom.setText(String.format("%s", tutorTabViewModel.getRoom())); - userEmail.setText(String.format("%s", tutorTabViewModel.getEmailTutorTab())); + List dutyHoursList = Stream.of(tutorTabViewModel.getDutyHours()) + .map(DutyHourViewModel::getSummary).toList(); + + userRoom.setText(String.format("%s: %s", getString(R.string.userRoom), tutorTabViewModel.getRoom())); + userEmail.setText(String.format("%s: %s", getString(R.string.userEmail), tutorTabViewModel.getEmailTutorTab())); if (!tutorTabViewModel.getNote().equals("")) { userNote.setText(String.format("%s", tutorTabViewModel.getNote())); } + userDutyHours.setText(String.format("%s: %s", getString(R.string.userDutyHoursHeader), Arrays.toString(dutyHoursList.toArray()))); + } @Override public void onError(Throwable e) { - int code = ((HttpException) e).response().code(); - if( code == 404){ - ifTutorTabExists = false; - dutyHoursAdapter = new DutyHoursAdapter(getApplicationContext(),new ArrayList()); - dutyHoursRecycller.setAdapter(dutyHoursAdapter); - addDutyButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - addEmptyDuty(dutyHoursAdapter); - } - }); - } showError(e); } })); - - - - findViewById(R.id.contentTutorTabInfoImageButton).setOnClickListener(v-> InfoHelperUtils.infoPopUp(v,R.layout.info_popup_tutor_tab)); - - userName.setText(String.format("%s %s", PrefUtils.getUserFirstName(getApplicationContext()), PrefUtils.getUserLastName(getApplicationContext()))); - disposable.add( userService.getUserById(PrefUtils.getUserId(getApplicationContext())) @@ -147,32 +104,18 @@ public class TutorTab extends AppCompatActivity { @Override public void onError(Throwable e) { - showError(e); } })); - setUpSaveListener(saveButon); - } - private void addEmptyDuty(DutyHoursAdapter adapter){ - adapter.addDuty(new DutyHourViewModel()); - adapter.notifyItemInserted(adapter.getItemCount()); - dutyHoursRecycller.scrollToPosition(adapter.getItemCount()-1); + setUpSaveListener(saveButon, userNote); } - private void setUpSaveListener(Button button) { + private void setUpSaveListener(Button button, EditText note) { button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - newTab = new TutorTabViewModel(PrefUtils.getUserId(getApplicationContext()), - userRoom.getText().toString(), - userEmail.getText().toString(), - userNote.getText().toString(), - dutyHoursAdapter.getDutyList()); - if(ifTutorTabExists){ - putUserTab(newTab); - }else{ - postUserTab(newTab); - } + newTab = new TutorTabViewModel(PrefUtils.getUserId(getApplicationContext()),note.getText().toString()); + putUserTab(newTab); } }); } @@ -181,21 +124,11 @@ public class TutorTab extends AppCompatActivity { disposable.add(tutorTabService.apiUsersTutorTabByTutorIdPut(PrefUtils.getUserId(getApplicationContext()), tutorTabViewModel) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(this::handleResponsePut, this::handleError)); - } - private void postUserTab(TutorTabViewModel tutorTabViewModel) { - disposable.add(tutorTabService.apiUsersTutorTabByTutorIdPost(PrefUtils.getUserId(getApplicationContext()), tutorTabViewModel) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(this::handleResponsePost, this::handleError)); + .subscribe(this::handleResponse, this::handleError)); } - private void handleResponsePut(Response resp) { - Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.updateToast), Toast.LENGTH_SHORT).show(); - - } - private void handleResponsePost(TutorTabViewModel tutorTabViewModel ) { - Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.updateToast), Toast.LENGTH_SHORT).show(); + private void handleResponse(TutorTabViewModel tutorTabViewModel) { + Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.modal_feedback_thankyou), Toast.LENGTH_SHORT).show(); } @@ -222,6 +155,9 @@ public class TutorTab extends AppCompatActivity { } else { message = "Network Error!"; } + +// Snackbar.make(coordinatorLayout, message, Snackbar.LENGTH_LONG) +// .show(); Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/com/uam/wmi/findmytutor/adapters/DutyHoursAdapter.java b/app/src/main/java/com/uam/wmi/findmytutor/adapters/DutyHoursAdapter.java deleted file mode 100644 index 2de243f..0000000 --- a/app/src/main/java/com/uam/wmi/findmytutor/adapters/DutyHoursAdapter.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.uam.wmi.findmytutor.adapters; - -import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; -import android.text.Editable; -import android.text.TextWatcher; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageButton; -import android.widget.TextView; - -import com.annimon.stream.Collectors; -import com.annimon.stream.Stream; -import com.uam.wmi.findmytutor.R; -import com.uam.wmi.findmytutor.model.DutyHourViewModel; - -import java.util.ArrayList; -import java.util.List; -import butterknife.BindView; -import butterknife.ButterKnife; - - -public class DutyHoursAdapter extends RecyclerView.Adapter { - private Context context; - private List hours; - -public DutyHoursAdapter(Context context, List hours) { - this.context = context; - this.hours = new ArrayList(hours); -} - - -public List getDutyList(){ - ArrayList notEmpty = Stream.of(hours).filter(DutyHourViewModel::isValid).collect(Collectors.toCollection(ArrayList::new)); - return notEmpty; -} -public void addDuty(DutyHourViewModel duty){ - hours.add(duty); -} -private void removeDuty(int pos){ - hours.remove(pos); - this.notifyItemRemoved(pos); - Log.d("DutyIndex af rm size",Integer.toString(getItemCount())); - -} - -@NonNull -@Override -public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View itemView = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.duty_hour_row, parent, false); - - return new MyViewHolder(itemView); - } - -@Override -public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { - DutyHourViewModel duty = hours.get(position); - holder.dutyDay.setText(duty.getDay()); - holder.dutyDay.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - duty.setDay(holder.dutyDay.getText().toString()); - } - }); - holder.dutyStart.setText(duty.getStart()); - holder.dutyStart.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - duty.setStart(holder.dutyStart.getText().toString()); - } - }); - holder.dutyStop.setText(duty.getEnd()); - holder.dutyStop.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - duty.setEnd(holder.dutyStop.getText().toString()); - } - }); - holder.deleteRow.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - try{ - Log.d("DutyIndex bf rm size",Integer.toString(getItemCount())); - Log.d("DutyIndex bf rm pos",Integer.toString(holder.getLayoutPosition())); - removeDuty(holder.getLayoutPosition()); - Log.d("DutyIndex af rm pos",Integer.toString(holder.getLayoutPosition())); - - - }catch(Error e){ - Log.e("DutyIndex error",e.getMessage()); - Log.e("DutyIndex size",Integer.toString(getItemCount())); - Log.e("DutyIndex pos",Integer.toString(holder.getAdapterPosition())); - - - } - - } - }); - - } - -@Override -public int getItemCount() { - return hours.size(); - } - -class MyViewHolder extends RecyclerView.ViewHolder { - - @BindView(R.id.duty_day_value) - TextView dutyDay; - - @BindView(R.id.duty_start_value) - TextView dutyStart; - - @BindView(R.id.duty_stop_value) - TextView dutyStop; - - @BindView(R.id.deleteRow) - ImageButton deleteRow; - - MyViewHolder(View view) { - super(view); - ButterKnife.bind(this, view); - } -} - - - -} \ No newline at end of file diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHour.java b/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHour.java index 3c17824..46cbdb3 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHour.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHour.java @@ -33,9 +33,6 @@ public class DutyHour extends BaseResponse { public DutyHour dutyHourId(UUID dutyHourId) { this.dutyHourId = dutyHourId; return this; - } - public DutyHour(){ - } /** diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHourViewModel.java b/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHourViewModel.java index 241d998..d3bcbe2 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHourViewModel.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/model/DutyHourViewModel.java @@ -24,20 +24,6 @@ public class DutyHourViewModel { this.day = day; return this; } - public Boolean isValid(){ - if(this.day.isEmpty()){ - return false; - }else if( !this.start.isEmpty() && this.end.isEmpty() ){ - return false; - }else{ - return true; - } - } - public DutyHourViewModel(){ - day=""; - start=""; - end=""; - } /** * Get day diff --git a/app/src/main/java/com/uam/wmi/findmytutor/model/TutorTabViewModel.java b/app/src/main/java/com/uam/wmi/findmytutor/model/TutorTabViewModel.java index 73ed9d8..e726ce9 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/model/TutorTabViewModel.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/model/TutorTabViewModel.java @@ -33,12 +33,11 @@ public class TutorTabViewModel { @SerializedName("dutyHours") private List dutyHours = null; - public TutorTabViewModel(String userId, String room, String email, String note, List dutyHours){ + public TutorTabViewModel(String userId, String note){ this.userId=userId; - this.room=room; - this.emailTutorTab=email; +// this.room=room; +// this.emailTutorTab=emailTutorTab; this.note=note; - this.dutyHours = new ArrayList(dutyHours); } public TutorTabViewModel tutorTabId(UUID tutorTabId) { diff --git a/app/src/main/java/com/uam/wmi/findmytutor/service/TutorTabApi.java b/app/src/main/java/com/uam/wmi/findmytutor/service/TutorTabApi.java index 837e356..e5ba6b1 100644 --- a/app/src/main/java/com/uam/wmi/findmytutor/service/TutorTabApi.java +++ b/app/src/main/java/com/uam/wmi/findmytutor/service/TutorTabApi.java @@ -5,7 +5,6 @@ import com.uam.wmi.findmytutor.model.TutorTabViewModel; import io.reactivex.Observable; import io.reactivex.Single; -import retrofit2.Response; import retrofit2.http.*; @@ -41,10 +40,6 @@ public interface TutorTabApi { @retrofit2.http.Path("tutorId") String tutorId ); - @POST("api/users/tutorTab/{tutorId}") - Single apiUsersTutorTabByTutorIdPost( - @retrofit2.http.Path("tutorId") String tutorId, @retrofit2.http.Body TutorTabViewModel tutorTab - ); /** * * @@ -56,7 +51,7 @@ public interface TutorTabApi { "Content-Type:application/json" }) @PUT("api/users/tutorTab/{tutorId}") - Observable> apiUsersTutorTabByTutorIdPut( + Observable apiUsersTutorTabByTutorIdPut( @retrofit2.http.Path("tutorId") String tutorId, @retrofit2.http.Body TutorTabViewModel tutorTab ); diff --git a/app/src/main/res/layout/content_tutor_tab.xml b/app/src/main/res/layout/content_tutor_tab.xml index 178d4ac..dae766a 100644 --- a/app/src/main/res/layout/content_tutor_tab.xml +++ b/app/src/main/res/layout/content_tutor_tab.xml @@ -1,21 +1,15 @@ - - - + android:layout_height="match_parent" + android:orientation="vertical" + android:fontFamily="@font/lato_regular" + android:paddingLeft="@dimen/activity_margin" + android:paddingRight="@dimen/activity_margin" + android:paddingTop="@dimen/activity_margin"> - - - - - - - - - - - - - - - - - - - - + android:lineSpacingExtra="8sp" + android:paddingTop="5dp" + android:textColor="@color/note_list_text" + /> - - - - - -