From c15833f149ee81d8b0f0fcad87dd1c38ec5c1fda Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Wed, 17 Nov 2021 14:28:39 +0100 Subject: [PATCH] Fossil Hybrid HR: Add button for removing the watchface background image --- .../HybridHRWatchfaceDesignerActivity.java | 35 +++++++++++-------- app/src/main/res/drawable/ic_remove_image.xml | 10 ++++++ .../activity_hybridhr_watchface_designer.xml | 7 ++++ 3 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 app/src/main/res/drawable/ic_remove_image.xml diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceDesignerActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceDesignerActivity.java index 62770c206..aa2732207 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceDesignerActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HybridHRWatchfaceDesignerActivity.java @@ -159,7 +159,7 @@ public class HybridHRWatchfaceDesignerActivity extends AbstractGBActivity implem findViewById(R.id.button_watchface_settings).setOnClickListener(this); findViewById(R.id.watchface_rotate_left).setOnClickListener(this); findViewById(R.id.watchface_rotate_right).setOnClickListener(this); - + findViewById(R.id.watchface_remove_image).setOnClickListener(this); } @Override @@ -242,18 +242,19 @@ public class HybridHRWatchfaceDesignerActivity extends AbstractGBActivity implem showWidgetEditPopup(-1); } else if (v.getId() == R.id.button_watchface_settings) { showWatchfaceSettingsPopup(); - } - else if (v.getId() == R.id.watchface_rotate_left) { + } else if (v.getId() == R.id.watchface_rotate_left) { if (selectedBackgroundImage != null) { selectedBackgroundImage = BitmapUtil.rotateImage(selectedBackgroundImage, -90); renderWatchfacePreview(); } - } - else if (v.getId() == R.id.watchface_rotate_right) { + } else if (v.getId() == R.id.watchface_rotate_right) { if (selectedBackgroundImage != null) { selectedBackgroundImage = BitmapUtil.rotateImage(selectedBackgroundImage, 90); renderWatchfacePreview(); } + } else if (v.getId() == R.id.watchface_remove_image) { + deleteWatchfaceBackground(); + renderWatchfacePreview(); } } @@ -453,15 +454,7 @@ public class HybridHRWatchfaceDesignerActivity extends AbstractGBActivity implem } } if (selectedBackgroundImage == null) { - processedBackgroundImage = Bitmap.createBitmap(displayImageSize, displayImageSize, Bitmap.Config.ARGB_8888); - // Paint a gray circle around the watchface - Canvas backgroundImageCanvas = new Canvas(processedBackgroundImage); - Paint circlePaint = new Paint(); - circlePaint.setColor(Color.GRAY); - circlePaint.setAntiAlias(true); - circlePaint.setStrokeWidth(3); - circlePaint.setStyle(Paint.Style.STROKE); - backgroundImageCanvas.drawCircle(displayImageSize/2f + 2, displayImageSize/2f + 2, displayImageSize/2f - 5, circlePaint); + deleteWatchfaceBackground(); } else { processedBackgroundImage = Bitmap.createScaledBitmap(selectedBackgroundImage, displayImageSize, displayImageSize, true); } @@ -482,6 +475,14 @@ public class HybridHRWatchfaceDesignerActivity extends AbstractGBActivity implem onlyPreviewIsRemaining = true; } } + // Paint a gray circle around the watchface + Canvas backgroundImageCanvas = new Canvas(processedBackgroundImage); + Paint circlePaint = new Paint(); + circlePaint.setColor(Color.GRAY); + circlePaint.setAntiAlias(true); + circlePaint.setStrokeWidth(3); + circlePaint.setStyle(Paint.Style.STROKE); + backgroundImageCanvas.drawCircle(displayImageSize/2f, displayImageSize/2f, displayImageSize/2f - 2, circlePaint); // Dynamically add an ImageView for each widget Paint widgetPaint = new Paint(); widgetPaint.setColor(Color.RED); @@ -695,6 +696,12 @@ public class HybridHRWatchfaceDesignerActivity extends AbstractGBActivity implem return BitmapUtil.convertToGrayscale(BitmapUtil.getCircularBitmap(bitmap)); } + private void deleteWatchfaceBackground() { + selectedBackgroundImage = Bitmap.createBitmap(displayImageSize, displayImageSize, Bitmap.Config.ARGB_8888); + selectedBackgroundImage.eraseColor(Color.BLACK); + selectedBackgroundImage = BitmapUtil.getCircularBitmap(selectedBackgroundImage); + } + private void sendToWatch(boolean preview) { HybridHRWatchfaceFactory wfFactory; if (preview) { diff --git a/app/src/main/res/drawable/ic_remove_image.xml b/app/src/main/res/drawable/ic_remove_image.xml new file mode 100644 index 000000000..dd1b1ed4e --- /dev/null +++ b/app/src/main/res/drawable/ic_remove_image.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_hybridhr_watchface_designer.xml b/app/src/main/res/layout/activity_hybridhr_watchface_designer.xml index 0e1c83040..9d26b67e0 100644 --- a/app/src/main/res/layout/activity_hybridhr_watchface_designer.xml +++ b/app/src/main/res/layout/activity_hybridhr_watchface_designer.xml @@ -67,6 +67,13 @@ android:layout_alignStart="@+id/watchface_rotate_left" android:rotationY="180" app:srcCompat="@drawable/ic_rotate_left" /> + +