Skip to content
Snippets Groups Projects
Commit 4a70e845 authored by Julian Catoni's avatar Julian Catoni
Browse files

Fixed snackbar after manual changes

parent b868fe20
Branches
No related tags found
No related merge requests found
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
package org.openhab.habdroid.ui; package org.openhab.habdroid.ui;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
...@@ -71,15 +70,11 @@ import org.openhab.habdroid.util.Util; ...@@ -71,15 +70,11 @@ import org.openhab.habdroid.util.Util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/** /**
* This class provides openHAB widgets adapter for list view. * This class provides openHAB widgets adapter for list view.
...@@ -1000,19 +995,18 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder ...@@ -1000,19 +995,18 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder
} }
} }
private final static Handler handler = new Handler(); private final static Handler mSnackbarHandler = new Handler();
private final static int DELAY_SNACKBAR = 3000; private final static int DELAY_SNACKBAR = 2000;
private static void showSnackbar(View v, int delay, AlertDialog dialog) { private static void showSnackbar(View v, int delay) {
handler.removeCallbacksAndMessages(null); mSnackbarHandler.removeCallbacksAndMessages(null);
final View currentView = v.getRootView().findFocus(); final View currentView = v.getRootView().findFocus();
handler.postDelayed(() -> { mSnackbarHandler.postDelayed(() -> {
Snackbar snackbar = Snackbar.make(currentView, "Soll die manuelle Änderung als neuer Standardwert genutzt werden?", Snackbar.LENGTH_LONG); Snackbar snackbar = Snackbar.make(currentView, "Manuelle Änderung als neuen Standardwert setzen?", Snackbar.LENGTH_LONG);
snackbar.setAction("Setze als Standard", v1 -> { snackbar.setAction("Setze als\nStandard", v1 -> {
Toast.makeText(currentView.getContext(), "Änderung wurde als neuer Standardwert gesetzt!", Toast.LENGTH_SHORT).show(); Toast.makeText(currentView.getContext(), "Änderung wurde als neuer Standardwert gesetzt!", Toast.LENGTH_SHORT).show();
}); });
snackbar.show(); snackbar.show();
if (dialog != null) dialog.dismiss();
}, delay); }, delay);
} }
...@@ -1024,7 +1018,7 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder ...@@ -1024,7 +1018,7 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder
private Item mBoundItem; private Item mBoundItem;
private final LayoutInflater mInflater; private final LayoutInflater mInflater;
private final Handler mHandler = new Handler(this); private final Handler mHandler = new Handler(this);
private AlertDialog mAlertDialog; private boolean mColorChanged;
ColorViewHolder(LayoutInflater inflater, ViewGroup parent, ColorViewHolder(LayoutInflater inflater, ViewGroup parent,
Connection conn, ColorMapper colorMapper) { Connection conn, ColorMapper colorMapper) {
...@@ -1053,7 +1047,7 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder ...@@ -1053,7 +1047,7 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder
if (v.getTag() instanceof String) { if (v.getTag() instanceof String) {
final String cmd = (String) v.getTag(); final String cmd = (String) v.getTag();
Util.sendItemCommand(mConnection.getAsyncHttpClient(), mBoundItem, cmd); Util.sendItemCommand(mConnection.getAsyncHttpClient(), mBoundItem, cmd);
WidgetAdapter.showSnackbar(v, DELAY_SNACKBAR, mAlertDialog); WidgetAdapter.showSnackbar(v, DELAY_SNACKBAR);
} else { } else {
showColorPickerDialog(); showColorPickerDialog();
} }
...@@ -1069,7 +1063,6 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder ...@@ -1069,7 +1063,6 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder
final String newColorValue = String.format(Locale.US, "%f,%f,%f", final String newColorValue = String.format(Locale.US, "%f,%f,%f",
hsv[0], hsv[1] * 100, hsv[2] * 100); hsv[0], hsv[1] * 100, hsv[2] * 100);
Util.sendItemCommand(mConnection.getAsyncHttpClient(), mBoundItem, newColorValue); Util.sendItemCommand(mConnection.getAsyncHttpClient(), mBoundItem, newColorValue);
WidgetAdapter.showSnackbar(itemView, DELAY_SNACKBAR, mAlertDialog);
return true; return true;
} }
...@@ -1090,13 +1083,23 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder ...@@ -1090,13 +1083,23 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder
colorPicker.setOnColorChangedListener(this); colorPicker.setOnColorChangedListener(this);
colorPicker.setShowOldCenterColor(false); colorPicker.setShowOldCenterColor(false);
colorPicker.setOnColorSelectedListener(color -> mColorChanged = true);
saturationBar.setOnSaturationChangedListener(saturation -> mColorChanged = true);
valueBar.setOnValueChangedListener(value -> mColorChanged = true);
float[] initialColor = mBoundItem.stateAsHsv(); float[] initialColor = mBoundItem.stateAsHsv();
if (initialColor != null) { if (initialColor != null) {
colorPicker.setColor(Color.HSVToColor(initialColor)); colorPicker.setColor(Color.HSVToColor(initialColor));
} }
mAlertDialog = new AlertDialog.Builder(contentView.getContext()) new AlertDialog.Builder(contentView.getContext())
.setView(contentView) .setView(contentView)
.setOnDismissListener(dialog -> {
if (mColorChanged) {
WidgetAdapter.showSnackbar(itemView, 0);
mColorChanged = false;
}
})
.setNegativeButton(R.string.close, null).show(); .setNegativeButton(R.string.close, null).show();
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment