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