From 4676c6abdbd6d458b118802bfdcf4cfa4312ccba Mon Sep 17 00:00:00 2001 From: Julian Catoni <julian.catoni@tu-dresden.de> Date: Wed, 21 Aug 2019 10:39:23 +0200 Subject: [PATCH] Added setAsDefault functionality --- .../openhab/habdroid/ui/WidgetAdapter.java | 33 +++++++++++++++++-- .../openhab/habdroid/util/GetDataService.java | 6 ++++ .../habdroid/util/RetrofitClientInstance.java | 3 +- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java index ad937674..3f8f0619 100644 --- a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java +++ b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java @@ -19,6 +19,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.net.Uri; +import android.os.Build; import android.os.Handler; import android.os.Message; import android.preference.PreferenceManager; @@ -55,17 +56,25 @@ import com.larswerkman.holocolorpicker.ColorPicker; import com.larswerkman.holocolorpicker.SaturationBar; import com.larswerkman.holocolorpicker.ValueBar; import okhttp3.HttpUrl; +import okhttp3.ResponseBody; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + import org.openhab.habdroid.R; import org.openhab.habdroid.core.connection.Connection; import org.openhab.habdroid.model.Item; import org.openhab.habdroid.model.LabeledValue; +import org.openhab.habdroid.model.Recognition; import org.openhab.habdroid.model.Widget; import org.openhab.habdroid.ui.widget.DividerItemDecoration; import org.openhab.habdroid.ui.widget.ExtendedSpinner; import org.openhab.habdroid.ui.widget.SegmentedControlButton; import org.openhab.habdroid.ui.widget.WidgetImageView; import org.openhab.habdroid.util.Constants; +import org.openhab.habdroid.util.GetDataService; import org.openhab.habdroid.util.MjpegStreamer; +import org.openhab.habdroid.util.RetrofitClientInstance; import org.openhab.habdroid.util.Util; import java.util.ArrayList; @@ -998,12 +1007,30 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder private final static Handler mSnackbarHandler = new Handler(); private final static int DELAY_SNACKBAR = 2000; - private static void showSnackbar(View v, int delay) { + private static void showSnackbar(View v, int delay, String identifier) { mSnackbarHandler.removeCallbacksAndMessages(null); final View currentView = v.getRootView(); Snackbar snackbar = Snackbar.make(currentView, "Manuelle Änderung als neuen Standardwert setzen?", Snackbar.LENGTH_LONG); snackbar.setAction("Setze als\nStandard", v1 -> { Toast.makeText(currentView.getContext(), "Änderung wurde als neuer Standardwert gesetzt!", Toast.LENGTH_SHORT).show(); + try { + GetDataService service = RetrofitClientInstance.getRetrofitInstance(currentView.getContext()).create(GetDataService.class); + Call<ResponseBody> call = service.setNewDefaultValue(identifier); + call.enqueue(new Callback<ResponseBody>() { + + @Override + public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { + Toast.makeText(currentView.getContext(), "Success", Toast.LENGTH_LONG).show(); + } + + @Override + public void onFailure(Call<ResponseBody> call, Throwable t) { + Toast.makeText(currentView.getContext(), "Failure", Toast.LENGTH_LONG).show(); + } + }); + } catch (IllegalArgumentException e) { + Toast.makeText(currentView.getContext(), e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + } }); mSnackbarHandler.postDelayed(() -> { snackbar.show(); @@ -1047,7 +1074,7 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder if (v.getTag() instanceof String) { final String cmd = (String) v.getTag(); Util.sendItemCommand(mConnection.getAsyncHttpClient(), mBoundItem, cmd); - WidgetAdapter.showSnackbar(itemView, DELAY_SNACKBAR); + WidgetAdapter.showSnackbar(itemView, DELAY_SNACKBAR, mBoundItem.name()); } else { showColorPickerDialog(); } @@ -1097,7 +1124,7 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder .setView(contentView) .setOnDismissListener(dialog -> { if (mColorChanged) { - WidgetAdapter.showSnackbar(itemView, 0); + WidgetAdapter.showSnackbar(itemView, 0, mBoundItem.name()); mColorChanged = false; } }) diff --git a/mobile/src/main/java/org/openhab/habdroid/util/GetDataService.java b/mobile/src/main/java/org/openhab/habdroid/util/GetDataService.java index 9db72a0b..a0dbe06b 100644 --- a/mobile/src/main/java/org/openhab/habdroid/util/GetDataService.java +++ b/mobile/src/main/java/org/openhab/habdroid/util/GetDataService.java @@ -4,8 +4,11 @@ import org.openhab.habdroid.model.Recognition; import java.util.List; +import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.http.GET; +import retrofit2.http.PUT; +import retrofit2.http.Path; /* * OpenLicht @@ -18,6 +21,9 @@ public interface GetDataService { @GET("/events/long") Call<List<Recognition>> getAllRecognitions(); + @PUT("/feedback/{identifier}/newDefault") + Call<ResponseBody> setNewDefaultValue(@Path("identifier") String identifier); + // @GET("/recognitions") // Call<List<Recognition>> getAllRecognitions(); diff --git a/mobile/src/main/java/org/openhab/habdroid/util/RetrofitClientInstance.java b/mobile/src/main/java/org/openhab/habdroid/util/RetrofitClientInstance.java index 75bb74c4..0b79119a 100644 --- a/mobile/src/main/java/org/openhab/habdroid/util/RetrofitClientInstance.java +++ b/mobile/src/main/java/org/openhab/habdroid/util/RetrofitClientInstance.java @@ -1,6 +1,7 @@ package org.openhab.habdroid.util; import android.app.Activity; +import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; @@ -17,7 +18,7 @@ public class RetrofitClientInstance { private static Retrofit retrofit; - public static Retrofit getRetrofitInstance(Activity activity) { + public static Retrofit getRetrofitInstance(Context activity) { SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity); String url = preferences.getString(Constants.PREFERENCE_OPENLICHT_URL, ""); if (retrofit == null || !retrofit.baseUrl().toString().equals(url)) { -- GitLab