From ac3efa249db6d07816861d40d587e0b87465d631 Mon Sep 17 00:00:00 2001
From: Muhammad Ibrahim Rahman <muhammad_ibrahim.rahman@mailbox.tu-dresden.de>
Date: Thu, 8 Aug 2019 01:58:03 +0200
Subject: [PATCH] Add an Openlicht URL preference

---
 mobile/build.gradle                              |  3 ---
 .../openhab/habdroid/ui/PreferencesActivity.java |  3 +++
 .../habdroid/ui/RecognitionsActivity.java        |  2 +-
 .../org/openhab/habdroid/ui/WidgetAdapter.java   |  6 ++++++
 .../org/openhab/habdroid/util/Constants.java     |  1 +
 .../habdroid/util/RetrofitClientInstance.java    | 16 +++++++++++++---
 mobile/src/main/res/values/strings.xml           |  2 ++
 .../res/xml/openlicht_connection_preferences.xml | 11 +++++++++++
 mobile/src/main/res/xml/preferences.xml          |  7 +++++++
 9 files changed, 44 insertions(+), 7 deletions(-)
 create mode 100644 mobile/src/main/res/xml/openlicht_connection_preferences.xml

diff --git a/mobile/build.gradle b/mobile/build.gradle
index 0500571d..62b76970 100644
--- a/mobile/build.gradle
+++ b/mobile/build.gradle
@@ -122,9 +122,6 @@ dependencies {
         exclude group: 'com.intellij', module: 'annotations'
     }
 
-    // MaterialDialogs
-    implementation 'com.afollestad.material-dialogs:core:2.0.0-beta4'
-
     // Google Maps
     fullImplementation 'com.google.android.gms:play-services-maps:12.0.1'
     // GCM
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java
index 91b0d124..4fac42a0 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java
@@ -25,6 +25,8 @@ import android.preference.PreferenceScreen;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.MenuItem;
+import android.widget.EditText;
+
 import androidx.annotation.DrawableRes;
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
@@ -227,6 +229,7 @@ public class PreferencesActivity extends AppCompatActivity {
 
             final Preference localConnPref = findPreference(Constants.SUBSCREEN_LOCAL_CONNECTION);
             final Preference remoteConnPref = findPreference(Constants.SUBSCREEN_REMOTE_CONNECTION);
+            final Preference openlichtConnPref = findPreference(Constants.PREFERENCE_OPENLICHT_URL);
             final Preference themePref = findPreference(Constants.PREFERENCE_THEME);
             final Preference clearCachePref = findPreference(Constants.PREFERENCE_CLEAR_CACHE);
             final Preference clearDefaultSitemapPref =
diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java
index cd222572..f3bdc065 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java
@@ -62,7 +62,7 @@ public class RecognitionsActivity extends AppCompatActivity{
         progressDialog.show();
 
         //  Interface for the RetrofitInstance
-        GetDataService service = RetrofitClientInstance.getRetrofitInstance().create(GetDataService.class);
+        GetDataService service = RetrofitClientInstance.getRetrofitInstance(this).create(GetDataService.class);
 
         Call<List<Recognitions>> call = service.getAllRecognitions();
         call.enqueue(new Callback<List<Recognitions>>() {
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 2618679b..0c8b8f92 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java
@@ -1066,15 +1066,21 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder
             float[] initialColor = mBoundItem.stateAsHsv();
             if (initialColor != null) {
                 colorPicker.setColor(Color.HSVToColor(initialColor));
+
             }
 
             new AlertDialog.Builder(contentView.getContext())
                     .setView(contentView)
                     .setNegativeButton(R.string.close, null)
                     .show();
+
+            ArrayList list = new ArrayList();
+            list.add(Color.HSVToColor(initialColor));
+
         }
     }
 
+
     public static class MjpegVideoViewHolder extends ViewHolder {
         private final ImageView mImageView;
         private MjpegStreamer mStreamer;
diff --git a/mobile/src/main/java/org/openhab/habdroid/util/Constants.java b/mobile/src/main/java/org/openhab/habdroid/util/Constants.java
index 6f622852..9ee7d48e 100644
--- a/mobile/src/main/java/org/openhab/habdroid/util/Constants.java
+++ b/mobile/src/main/java/org/openhab/habdroid/util/Constants.java
@@ -19,6 +19,7 @@ public class Constants {
     public static final String PREFERENCE_SITEMAP_LABEL         = "default_openhab_sitemap_label";
     public static final String PREFERENCE_REMOTE_URL            = "default_openhab_alturl";
     public static final String PREFERENCE_LOCAL_URL             = "default_openhab_url";
+    public static final String PREFERENCE_OPENLICHT_URL         = "default_openlicht_url";
     public static final String PREFERENCE_THEME                 = "default_openhab_theme";
     public static final String PREFERENCE_ANIMATION             = "default_openhab_animation";
     public static final String PREFERENCE_DEMOMODE              = "default_openhab_demomode";
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 24460184..581fe0cc 100644
--- a/mobile/src/main/java/org/openhab/habdroid/util/RetrofitClientInstance.java
+++ b/mobile/src/main/java/org/openhab/habdroid/util/RetrofitClientInstance.java
@@ -1,8 +1,15 @@
 package org.openhab.habdroid.util;
 
+import android.app.Activity;
+import android.content.SharedPreferences;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceManager;
+
 import retrofit2.Retrofit;
 import retrofit2.converter.gson.GsonConverterFactory;
 
+import static android.content.Context.MODE_PRIVATE;
+
 /*
  *  OpenLicht
  *  Use Retrofit to call the API
@@ -12,12 +19,15 @@ import retrofit2.converter.gson.GsonConverterFactory;
 public class RetrofitClientInstance {
 
     private static Retrofit retrofit;
-    private static final String BASE_URL = "http://10.0.2.2:5000";
 
-    public static Retrofit getRetrofitInstance() {
+//    private static final String BASE_URL = "http://10.0.2.2:5000";
+
+    public static Retrofit getRetrofitInstance(Activity activity) {
+        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+        String openlichtUrl = preferences.getString("default_openlicht_url", null);
         if (retrofit == null) {
             retrofit = new Retrofit.Builder()
-                    .baseUrl(BASE_URL)
+                    .baseUrl(openlichtUrl)
                     .addConverterFactory(GsonConverterFactory.create())
                     .build();
         }
diff --git a/mobile/src/main/res/values/strings.xml b/mobile/src/main/res/values/strings.xml
index 2ec1e451..154be608 100644
--- a/mobile/src/main/res/values/strings.xml
+++ b/mobile/src/main/res/values/strings.xml
@@ -58,6 +58,7 @@
     <string name="settings_current_default_sitemap">Current default Sitemap: %1$s</string>
     <string name="settings_openhab_alt_connection">Remote</string>
     <string name="settings_openhab_connection">Local</string>
+    <string name="settings_openlicht_connection">Openlicht</string>
     <string name="settings_notification_vibration">Notification vibration</string>
     <string name="settings_notification_vibration_off">Off</string>
     <string name="settings_notification_vibration_short">Short</string>
@@ -69,6 +70,7 @@
     <string name="settings_notification_vibration_value_twice" translatable="false">twice</string>
     <string name="settings_connection_summary">Connected to %s</string>
     <string name="settings_insecure_connection_summary">Insecurely connected to %s</string>
+    <string name="settings_openlicht_connection_summary">Set your Openlicht URL here</string>
 
     <!-- App messages strings -->
     <string name="title_voice_widget">openHAB voice commands</string>
diff --git a/mobile/src/main/res/xml/openlicht_connection_preferences.xml b/mobile/src/main/res/xml/openlicht_connection_preferences.xml
new file mode 100644
index 00000000..485e371f
--- /dev/null
+++ b/mobile/src/main/res/xml/openlicht_connection_preferences.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+    android:title="@string/settings_openhab_alt_connection">
+    <org.openhab.habdroid.ui.widget.UrlInputPreference
+        android:defaultValue="@string/empty_string"
+        android:inputType="textNoSuggestions"
+        android:key="default_openhab_alturl"
+        android:summary="@string/settings_openhab_alturl_summary"
+        android:title="@string/settings_openhab_alturl"
+        android:icon="@drawable/ic_earth_grey_24dp" />
+</PreferenceScreen>
\ No newline at end of file
diff --git a/mobile/src/main/res/xml/preferences.xml b/mobile/src/main/res/xml/preferences.xml
index 962af85b..6827efdc 100644
--- a/mobile/src/main/res/xml/preferences.xml
+++ b/mobile/src/main/res/xml/preferences.xml
@@ -20,6 +20,13 @@
             android:title="@string/settings_openhab_alt_connection"
             android:dependency="default_openhab_demomode"
             android:icon="@drawable/ic_tree_grey_24dp" />
+        <EditTextPreference
+            android:defaultValue="@string/empty_string"
+            android:inputType="textUri"
+            android:key="default_openlicht_url"
+            android:summary="@string/settings_openlicht_connection_summary"
+            android:title="@string/settings_openlicht_connection"
+            android:icon="@drawable/ic_earth_grey_24dp" />
         <org.openhab.habdroid.ui.widget.SslClientCertificatePreference
             android:defaultValue="@string/settings_openhab_none"
             android:key="default_openhab_sslclientcert"
-- 
GitLab