From 020ec1d41eae7220515176cf63453acd092f5f3d Mon Sep 17 00:00:00 2001 From: Maciej Wanat Date: Mon, 17 Dec 2018 16:36:57 +0100 Subject: [PATCH 1/5] Fix some of the messages content --- app/src/main/res/values-pl/strings.xml | 20 ++++++++++---------- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 9b3bbec..0d7c6d7 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -29,7 +29,7 @@ \"\" O aplikacji - Jesteśmy grupą studentów, która chce pomoć w rozwoju naszego wydziału.\nDziękujemy za używanie naszej aplikacji.\nZespół FMT.! + Jesteśmy grupą studentów, która chce pomoć w rozwoju naszego wydziału.\nDziękujemy za używanie naszej aplikacji.\nZespół FMT 0.1.0 Masz jakieś pytania? Uwagi? Chętnie odpiszemy! Skontaktuj się z nami @@ -92,7 +92,7 @@ Dodaj ręczną lokalizacje Skrzydło A Skrzydło C - ŁącznikD + Łącznik D key_language Ustawienia @@ -118,7 +118,7 @@ Zakład Ładowanie … Logo find my tutor - Login (Ldap) + Login (LDAP WMI) Zaloguj! Niepoprawny format loginu. Kadra @@ -138,8 +138,8 @@ Wybierz z mapy Odmowa dostępu Uprawnienia powinny zostać przyznane. - Powiedz nam co myślisz!(max 1000 znaków) - Powiedz nam co zauważyłeś!(max 1000 znaków) + Powiedz nam co myślisz! (max 1000 znaków) + Powiedz nam co zauważyłeś! (max 1000 znaków) ZGŁOŚ BUG FEEDBACK WYŚLIJ @@ -159,7 +159,7 @@ Błąd sieci! Błąd podczas pobierania danych. Błąd podczas pobierania statusów. - Upss. Coś poszło nie tak. Pracujemy nad tym! + Upss. Coś poszło nie tak! Brak informacji o dyżurze. Brak notatki. Wyszukiwarka @@ -194,16 +194,16 @@ W tej zakładce możesz włączyć/wyłączyć udostępnianie swojej lokalizacji oraz ją skonfigurować. - Niektóre zmiany mogą nie być widoczne od razu! Odświeżanie informacji zajmuje do 2 minut. + Niektóre zmiany mogą nie być widoczne od razu! Wyłączenie wysyłania ma skutek natychmiastowy, lecz odświeżanie informacji zajmuje serwerowi do 2 minut. Udostępniać możesz na jednym z 4 poziomów: dokładny - lokalizacja wyświetlana na mapie na podstawie GPS przybliżony - przybliżona lokalizacja wyświetlana na podstawie GPS manualny - udostępnianie z ręcznie wybranego punktu na mapie tylko obecność - udostępnianie jedynie informacji o pojawieniu się na wydziale (aktywny na liście), bez udostępniania lokalizacji - Każdy poziom z wyjątkiem manualnie wybranej lokalizacji automatycznie zaczyna udostępniać po wejściu na wydział i przestaje udostępniać po jego opuszczeniu. Wystarczy włączyć udostępnianie, a lokalizacja nie będzie udostępniana tylko przy obecności na wydziale. + Każdy poziom z wyjątkiem manualnie wybranej lokalizacji automatycznie zaczyna udostępniać po wejściu na wydział i przestaje udostępniać po jego opuszczeniu. Wystarczy włączyć udostępnianie, a lokalizacja będzie udostępniana tylko przy obecności na wydziale. Udostępnianie w dowolnym momencie można wyłączyć za pomocą przełącznika. Dodatkowo, do Twojej lokalizacji możesz dodać status opisowy (będzie on widoczny dla użytkowników po kliknięciu w marker). - Zarówno manualne lokalizacje jak i statusy możesz dodać do listy, które potem możesz wybrać w wygodny sposób. + Zarówno manualne lokalizacje jak i statusy możesz dodać do listy, z której możesz potem je wybrać w wygodny sposób. W tym panelu znajduje się listę profesorów. Ich status symbolizowany jest przez kolorowe kropki: @@ -219,7 +219,7 @@ 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. + Błąd aplikacji. Informacje o błędzie zostaną wysłane do twórców. Dzień diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5574b00..1c6e6db 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -279,7 +279,7 @@ In this tab you can turn on/off sharing your localization and configure it. - Some of the changes may not happen immediately! Refreshing information takes up to 2 minutes. + Some of the changes may not be visible immediately! Turning sharing off is stopping the sharing immediately, but refreshing information by server takes up to 2 minutes. You can share your localization on one of the 4 levels: exact - localization displayed on a map, based on GPS approximated - approximated localization based on GPS From 41c5dcebfd45dcd5e47f4eab44d73ab9558d13ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mieszko=20Wrzeszczy=C5=84ski?= Date: Tue, 18 Dec 2018 00:01:35 +0100 Subject: [PATCH 2/5] Add scrap button --- .../wmi/findmytutor/activity/TutorTab.java | 145 +++++++++--------- .../wmi/findmytutor/service/TutorTabApi.java | 5 +- app/src/main/res/layout/content_tutor_tab.xml | 27 +++- app/src/main/res/values-pl/strings.xml | 3 + app/src/main/res/values/strings.xml | 3 + 5 files changed, 106 insertions(+), 77 deletions(-) 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 288f269..278f73f 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 @@ -8,18 +8,13 @@ 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; @@ -36,11 +31,14 @@ import java.util.List; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.observers.DisposableCompletableObserver; import io.reactivex.observers.DisposableSingleObserver; import io.reactivex.schedulers.Schedulers; import okhttp3.ResponseBody; import retrofit2.Response; +import static java.lang.String.valueOf; + public class TutorTab extends AppCompatActivity { private TutorTabApi tutorTabService; private UserService userService; @@ -53,6 +51,7 @@ public class TutorTab extends AppCompatActivity { private TextView department; private Button addDutyButton; private Button saveButon; + private Button scrapButton; private Boolean ifTutorTabExists = true; private List dutyHourList; private RecyclerView dutyHoursRecycller; @@ -72,69 +71,24 @@ public class TutorTab extends AppCompatActivity { userEmail = findViewById(R.id.userEmail); department = findViewById(R.id.userDepartment); saveButon = findViewById(R.id.saveButon); + scrapButton = findViewById(R.id.scrapTutorTab); addDutyButton = findViewById(R.id.addDuty); - dutyHoursRecycller = (RecyclerView) findViewById(R.id.dutyHourView); + dutyHoursRecycller = 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); - disposable.add( - tutorTabService.apiUsersTutorTabByTutorIdGet(PrefUtils.getUserId(getApplicationContext())) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeWith(new DisposableSingleObserver() { - @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())); - if (!tutorTabViewModel.getNote().equals("")) { - userNote.setText(String.format("%s", tutorTabViewModel.getNote())); - } - } - - @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); - } - })); - + getTutorTab(); 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())) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -153,7 +107,46 @@ public class TutorTab extends AppCompatActivity { } })); setUpSaveListener(saveButon); + scrapButton.setOnClickListener(view -> scrapTutorTab()); } + + private void getTutorTab(){ + disposable.add( + tutorTabService.apiUsersTutorTabByTutorIdGet(PrefUtils.getUserId(getApplicationContext())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeWith(new DisposableSingleObserver() { + @Override + public void onSuccess(TutorTabViewModel tutorTabViewModel) { + + dutyHourList = tutorTabViewModel.getDutyHours(); + if(dutyHourList != null){ + dutyHoursAdapter = new DutyHoursAdapter(getApplicationContext(),dutyHourList); + dutyHoursRecycller.setAdapter(dutyHoursAdapter); + addDutyButton.setOnClickListener(v -> addEmptyDuty(dutyHoursAdapter)); + } + userRoom.setText(String.format("%s", tutorTabViewModel.getRoom())); + userEmail.setText(String.format("%s", tutorTabViewModel.getEmailTutorTab())); + if (!tutorTabViewModel.getNote().equals("")) { + userNote.setText(String.format("%s", tutorTabViewModel.getNote())); + } + } + + @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(v -> addEmptyDuty(dutyHoursAdapter)); + } + showError(e); + } + })); + + } + private void addEmptyDuty(DutyHoursAdapter adapter){ adapter.addDuty(new DutyHourViewModel()); adapter.notifyItemInserted(adapter.getItemCount()); @@ -161,20 +154,17 @@ public class TutorTab extends AppCompatActivity { } private void setUpSaveListener(Button button) { - 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); - ifTutorTabExists=true; - } + button.setOnClickListener(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); + ifTutorTabExists=true; } }); } @@ -185,23 +175,34 @@ public class TutorTab extends AppCompatActivity { .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)); } + private void scrapTutorTab() { + disposable.add(tutorTabService.apiUsersScrapTutorTabByTutorIdPost(PrefUtils.getUserId(getApplicationContext())) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(this::handleResponseScrap, this::handleError)); + + } + + private void handleResponseScrap() { + Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.scrap_tutor_msg), Toast.LENGTH_SHORT).show(); + getTutorTab(); + } 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 handleError(Throwable error) { if (error instanceof HttpException) { @@ -212,6 +213,10 @@ public class TutorTab extends AppCompatActivity { } else { Toast.makeText(getApplicationContext(), "Network error " + error.getMessage(), Toast.LENGTH_SHORT).show(); + + + Log.e("WMI SUCC", String.valueOf(error)); + } } 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..38b2349 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 @@ -3,6 +3,7 @@ package com.uam.wmi.findmytutor.service; import com.uam.wmi.findmytutor.model.TutorTabViewModel; +import io.reactivex.Completable; import io.reactivex.Observable; import io.reactivex.Single; import retrofit2.Response; @@ -17,7 +18,7 @@ public interface TutorTabApi { * @return Call<Void> */ @POST("api/users/scrapTutorTab/{tutorId}") - Observable apiUsersScrapTutorTabByTutorIdPost( + Completable apiUsersScrapTutorTabByTutorIdPost( @retrofit2.http.Path("tutorId") String tutorId ); @@ -27,7 +28,7 @@ public interface TutorTabApi { * @return Call<Void> */ @POST("api/users/scrapTutorTab") - Observable apiUsersScrapTutorTabPost(); + Single apiUsersScrapTutorTabPost(); /** diff --git a/app/src/main/res/layout/content_tutor_tab.xml b/app/src/main/res/layout/content_tutor_tab.xml index ef92cd3..3862c1f 100644 --- a/app/src/main/res/layout/content_tutor_tab.xml +++ b/app/src/main/res/layout/content_tutor_tab.xml @@ -7,6 +7,8 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + + + +