From cfe2d160e703fd2406ae71e0e4d68414647ae4e2 Mon Sep 17 00:00:00 2001
From: Julian Catoni <julian.catoni@tu-dresden.de>
Date: Mon, 12 Aug 2019 10:06:30 +0200
Subject: [PATCH] Show current ip in pref summary, fix crash when ip in wrong
 format

---
 .../habdroid/ui/PreferencesActivity.java      | 19 +++++++++-
 .../habdroid/ui/RecognitionsActivity.java     | 38 +++++++++++--------
 .../openhab/habdroid/ui/WidgetAdapter.java    |  4 +-
 .../habdroid/util/RetrofitClientInstance.java |  2 +-
 4 files changed, 43 insertions(+), 20 deletions(-)

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 f1f8e4de..72bb51e0 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/PreferencesActivity.java
@@ -231,6 +231,7 @@ public class PreferencesActivity extends AppCompatActivity {
             final Preference remoteConnPref = findPreference(Constants.SUBSCREEN_REMOTE_CONNECTION);
             final Preference themePref = findPreference(Constants.PREFERENCE_THEME);
             final Preference clearCachePref = findPreference(Constants.PREFERENCE_CLEAR_CACHE);
+            final Preference openLichtUrl = findPreference(Constants.PREFERENCE_OPENLICHT_URL);
             final Preference clearDefaultSitemapPref =
                     findPreference(Constants.PREFERENCE_CLEAR_DEFAULT_SITEMAP);
             final Preference ringtonePref = findPreference(Constants.PREFERENCE_TONE);
@@ -246,7 +247,14 @@ public class PreferencesActivity extends AppCompatActivity {
                 clearDefaultSitemapPref.setSummary(getString(
                         R.string.settings_current_default_sitemap, currentDefaultSitemapLabel));
             }
-
+            openLichtUrl.setOnPreferenceChangeListener((preference, newValue) -> {
+                if (!newValue.toString().isEmpty()) {
+                    preference.setSummary(newValue.toString());
+                    return true;
+                }
+                return false;
+            });
+            updateOpenLichtUrlPreference(openLichtUrl);
             updateConnectionSummary(Constants.SUBSCREEN_LOCAL_CONNECTION,
                     Constants.PREFERENCE_LOCAL_URL, Constants.PREFERENCE_LOCAL_USERNAME,
                     Constants.PREFERENCE_LOCAL_PASSWORD);
@@ -390,6 +398,15 @@ public class PreferencesActivity extends AppCompatActivity {
                     ? R.drawable.ic_smartphone_grey_24dp : R.drawable.ic_vibration_grey_24dp);
         }
 
+        private boolean updateOpenLichtUrlPreference(Preference pref) {
+            String currentUrl = getPreferenceString(Constants.PREFERENCE_OPENLICHT_URL, "");
+            if (!currentUrl.isEmpty()) {
+                pref.setSummary(currentUrl);
+                return true;
+            }
+            return false;
+        }
+
         private void updateConnectionSummary(String subscreenPrefKey, String urlPrefKey,
                 String userPrefKey, String passwordPrefKey) {
             Preference pref = findPreference(subscreenPrefKey);
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 5455e68c..737100d7 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/RecognitionsActivity.java
@@ -75,26 +75,32 @@ public class RecognitionsActivity extends AppCompatActivity implements WidgetAda
         progressDialog.show();
 
         //  Interface for the RetrofitInstance
-        GetDataService service = RetrofitClientInstance.getRetrofitInstance(this).create(GetDataService.class);
+        try {
+            GetDataService service = RetrofitClientInstance.getRetrofitInstance(this).create(GetDataService.class);
+            Call<List<Recognition>> call = service.getAllRecognitions();
+            call.enqueue(new Callback<List<Recognition>>() {
 
-        Call<List<Recognition>> call = service.getAllRecognitions();
-        call.enqueue(new Callback<List<Recognition>>() {
+                @Override
+                public void onResponse(Call<List<Recognition>> call, Response<List<Recognition>> response) {
 
-            @Override
-            public void onResponse(Call<List<Recognition>> call, Response<List<Recognition>> response) {
+                    progressDialog.dismiss();
+                    //generateDataList(response.body());
+                    generateCurrentActivity(response.body().get(0));
+                    generatePastActivities(response.body().subList(1, response.body().size()));
+                }
+
+                @Override
+                public void onFailure(Call<List<Recognition>> call, Throwable t) {
+                    progressDialog.dismiss();
+                    Toast.makeText(RecognitionsActivity.this, "Error loading Recognition. Please check your network connection.", Toast.LENGTH_SHORT).show();
+                }
+            });
+        } catch (IllegalArgumentException e) {
+            progressDialog.dismiss();
+            Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
+        }
 
-                progressDialog.dismiss();
-                //generateDataList(response.body());
-                generateCurrentActivity(response.body().get(0));
-                generatePastActivities(response.body().subList(1, response.body().size()));
-            }
 
-            @Override
-            public void onFailure(Call<List<Recognition>> call, Throwable t) {
-                progressDialog.dismiss();
-                Toast.makeText(RecognitionsActivity.this, "Error loading Recognition. Please check your network connection.", Toast.LENGTH_SHORT).show();
-            }
-        });
 
     }
 
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 cf2704ba..cc07a3a4 100644
--- a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java
+++ b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetAdapter.java
@@ -1000,7 +1000,7 @@ public class WidgetAdapter extends RecyclerView.Adapter<WidgetAdapter.ViewHolder
 
     private static void showSnackbar(View v, int delay) {
         mSnackbarHandler.removeCallbacksAndMessages(null);
-        final View currentView = v.getRootView().findFocus();
+        final View currentView = v.getRootView();
         mSnackbarHandler.postDelayed(() -> {
             Snackbar snackbar = Snackbar.make(currentView, "Manuelle Änderung als neuen Standardwert setzen?", Snackbar.LENGTH_LONG);
             snackbar.setAction("Setze als\nStandard", v1 -> {
@@ -1047,7 +1047,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(v, DELAY_SNACKBAR);
+                    WidgetAdapter.showSnackbar(itemView, DELAY_SNACKBAR);
                 } else {
                     showColorPickerDialog();
                 }
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 1c73dc79..75bb74c4 100644
--- a/mobile/src/main/java/org/openhab/habdroid/util/RetrofitClientInstance.java
+++ b/mobile/src/main/java/org/openhab/habdroid/util/RetrofitClientInstance.java
@@ -20,7 +20,7 @@ public class RetrofitClientInstance {
     public static Retrofit getRetrofitInstance(Activity activity) {
         SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
         String url = preferences.getString(Constants.PREFERENCE_OPENLICHT_URL, "");
-        if (retrofit == null) {
+        if (retrofit == null || !retrofit.baseUrl().toString().equals(url)) {
             retrofit = new Retrofit.Builder()
                     .baseUrl(url)
                     .addConverterFactory(GsonConverterFactory.create())
-- 
GitLab