diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java b/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java index f0188f8369e13b1bf02603abf7775695d3d6c5fa..cfb66a5e1e8e3b06f6cae8ae53a06ce87a82b91d 100644 --- a/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java +++ b/mobile/src/main/java/org/openhab/habdroid/ui/MainActivity.java @@ -706,7 +706,7 @@ public class MainActivity extends AbstractBaseActivity implements return; } mConnection.getAsyncHttpClient().get(url, - new AsyncHttpClient.BitmapResponseHandler(defaultIcon.getIntrinsicWidth()) { + new AsyncHttpClient.BitmapResponseHandler(defaultIcon.getIntrinsicWidth(), true) { @Override public void onFailure(Request request, int statusCode, Throwable error) { Log.w(TAG, "Could not fetch icon for sitemap " + sitemap.name()); diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java index 16793e77978a708a7c0ab5f2e5608cb8c9095773..83fda2c51f37e6b85435c371e6133ae21a628e84 100644 --- a/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java +++ b/mobile/src/main/java/org/openhab/habdroid/ui/WidgetListFragment.java @@ -311,7 +311,7 @@ public class WidgetListFragment extends Fragment **/ int foregroundSize = (int) Util.convertDpToPixel(46, context); Bitmap bitmap = connection.getSyncHttpClient().get(url) - .asBitmap(foregroundSize).response; + .asBitmap(foregroundSize, true).response; if (bitmap != null) { bitmap = addBackgroundAndBorder(bitmap, (int) Util.convertDpToPixel(31, context)); diff --git a/mobile/src/main/java/org/openhab/habdroid/ui/widget/WidgetImageView.java b/mobile/src/main/java/org/openhab/habdroid/ui/widget/WidgetImageView.java index 2a142a581b7a0ac56d00f1ee546ce23aa8c793a3..7ecff3a05ca4e060fcf760fb1cc285c15e016cd9 100644 --- a/mobile/src/main/java/org/openhab/habdroid/ui/widget/WidgetImageView.java +++ b/mobile/src/main/java/org/openhab/habdroid/ui/widget/WidgetImageView.java @@ -273,7 +273,7 @@ public class WidgetImageView extends AppCompatImageView { private Call mCall; public HttpImageRequest(int size, AsyncHttpClient client, HttpUrl url, long timeoutMillis) { - super(size); + super(size, false); mClient = client; mUrl = url; mTimeoutMillis = timeoutMillis; diff --git a/mobile/src/main/java/org/openhab/habdroid/util/AsyncHttpClient.java b/mobile/src/main/java/org/openhab/habdroid/util/AsyncHttpClient.java index 08ab6d5e7709904003046806d19a81e551812e53..84ae662e5818dec6bb03a753078b0fd354db5f88 100644 --- a/mobile/src/main/java/org/openhab/habdroid/util/AsyncHttpClient.java +++ b/mobile/src/main/java/org/openhab/habdroid/util/AsyncHttpClient.java @@ -42,14 +42,16 @@ public class AsyncHttpClient extends HttpClient { public abstract static class BitmapResponseHandler implements ResponseHandler<Bitmap> { private final int mSize; + private final boolean mEnforceSize; - public BitmapResponseHandler(int sizePx) { + public BitmapResponseHandler(int sizePx, boolean enforceSize) { mSize = sizePx; + mEnforceSize = enforceSize; } @Override public Bitmap convertBodyInBackground(ResponseBody body) throws IOException { - return getBitmapFromResponseBody(body, mSize); + return getBitmapFromResponseBody(body, mSize, mEnforceSize); } } diff --git a/mobile/src/main/java/org/openhab/habdroid/util/HttpClient.java b/mobile/src/main/java/org/openhab/habdroid/util/HttpClient.java index f5cbd682122e95a50ff37adc5c5ed4fd4aac46da..3996cf806600c5cdaee26c7f2bae96155bf3fd2b 100644 --- a/mobile/src/main/java/org/openhab/habdroid/util/HttpClient.java +++ b/mobile/src/main/java/org/openhab/habdroid/util/HttpClient.java @@ -122,8 +122,8 @@ public abstract class HttpClient { return builder; } - protected static Bitmap getBitmapFromResponseBody(ResponseBody body, int size) - throws IOException { + protected static Bitmap getBitmapFromResponseBody(ResponseBody body, + int size, boolean enforceSize) throws IOException { MediaType contentType = body.contentType(); boolean isSvg = contentType != null && contentType.type().equals("image") @@ -138,7 +138,9 @@ public abstract class HttpClient { } else { Bitmap bitmap = BitmapFactory.decodeStream(is); if (bitmap != null) { - return Bitmap.createScaledBitmap(bitmap, size, size, false); + return enforceSize + ? Bitmap.createScaledBitmap(bitmap, size, size, false) + : bitmap; } throw new IOException("Bitmap decoding failed"); } diff --git a/mobile/src/main/java/org/openhab/habdroid/util/SyncHttpClient.java b/mobile/src/main/java/org/openhab/habdroid/util/SyncHttpClient.java index 41e0e5b64ba5a2567fb9273ec63065f37a78dfda..e75e4d1b732c996cd84a1ddb2bbe86b8ff637727 100644 --- a/mobile/src/main/java/org/openhab/habdroid/util/SyncHttpClient.java +++ b/mobile/src/main/java/org/openhab/habdroid/util/SyncHttpClient.java @@ -63,8 +63,8 @@ public class SyncHttpClient extends HttpClient { return new HttpTextResult(this); } - public HttpBitmapResult asBitmap(int sizeInPixels) { - return new HttpBitmapResult(this, sizeInPixels); + public HttpBitmapResult asBitmap(int sizeInPixels, boolean enforceSize) { + return new HttpBitmapResult(this, sizeInPixels, enforceSize); } public HttpStatusResult asStatus() { @@ -124,7 +124,7 @@ public class SyncHttpClient extends HttpClient { public final Throwable error; public final int statusCode; - HttpBitmapResult(HttpResult result, int size) { + HttpBitmapResult(HttpResult result, int size, boolean enforceSize) { this.request = result.request; this.statusCode = result.statusCode; if (result.response == null) { @@ -134,7 +134,7 @@ public class SyncHttpClient extends HttpClient { Bitmap response = null; Throwable error = result.error; try { - response = getBitmapFromResponseBody(result.response, size); + response = getBitmapFromResponseBody(result.response, size, enforceSize); } catch (IOException e) { error = e; }