]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/HueRing.java
more pronounced day/month delimiters in the transaction list
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / HueRing.java
index 006cd4ba7c0480031cbeaa30dc1becae8b11552d..71df5bb98f75a98012761b74f8ceed13dea237d9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2019 Damyan Ivanov.
+ * Copyright © 2020 Damyan Ivanov.
  * This file is part of MoLe.
  * MoLe is free software: you can distribute it and/or modify it
  * under the term of the GNU General Public License as published by
@@ -33,25 +33,23 @@ import androidx.annotation.Nullable;
 import net.ktnx.mobileledger.utils.Colors;
 import net.ktnx.mobileledger.utils.DimensionUtils;
 
+import java.util.Locale;
 
 import static net.ktnx.mobileledger.utils.Logger.debug;
 
 public class HueRing extends View {
     public static final int hueStepDegrees = 5;
     private Paint ringPaint, initialPaint, currentPaint, markerPaint;
-    private int centerX, centerY;
-    private int diameter;
+    private int center;
     private int padding;
     private int initialHueDegrees;
     private int color, hueDegrees;
     private float outerR;
     private float innerR;
     private float bandWidth;
-    private float ringR;
-    private float innerDiameter;
     private float centerR;
-    private RectF centerRect;
-    private RectF ringRect;
+    private final RectF centerRect = new RectF();
+    private final RectF ringRect = new RectF();
     private int markerOverflow;
     private int markerStrokeWidth;
     public HueRing(Context context, @Nullable AttributeSet attrs) {
@@ -181,6 +179,7 @@ public class HueRing extends View {
         int heightMode = View.MeasureSpec.getMode(heightMeasureSpec);
         int heightSize = View.MeasureSpec.getSize(heightMeasureSpec);
 
+        int diameter;
         if ((widthMode == MeasureSpec.AT_MOST) && (heightMode == MeasureSpec.AT_MOST)) {
             diameter = Math.min(widthSize, heightSize);
         }
@@ -195,26 +194,29 @@ public class HueRing extends View {
 //                getContext().getResources().getDimension(R.dimen.activity_horizontal_margin)) / 2;
         diameter -= 2 * padding;
         outerR = diameter / 2f;
-        centerX = padding + (int) outerR;
-        centerY = centerX;
+        center = padding + (int) outerR;
 
         bandWidth = diameter / 3.5f;
-        ringR = outerR - bandWidth / 2f;
+        float ringR = outerR - bandWidth / 2f;
         innerR = outerR - bandWidth;
 
-        ringRect = new RectF(-ringR, -ringR, ringR, ringR);
+        ringRect.set(-ringR, -ringR, ringR, ringR);
 
-        innerDiameter = diameter - 2 * bandWidth;
+        float innerDiameter = diameter - 2 * bandWidth;
         centerR = innerDiameter * 0.5f;
-        centerRect = new RectF(-centerR, -centerR, centerR, centerR);
+        centerRect.set(-centerR, -centerR, centerR, centerR);
+    }
+    @Override
+    public boolean performClick() {
+        return super.performClick();
     }
     @Override
     public boolean onTouchEvent(MotionEvent event) {
         switch (event.getAction()) {
             case MotionEvent.ACTION_DOWN:
             case MotionEvent.ACTION_MOVE:
-                float x = event.getX() - centerX;
-                float y = event.getY() - centerY;
+                float x = event.getX() - center;
+                float y = event.getY() - center;
 
                 float dist = (float) Math.hypot(x, y);
 
@@ -230,13 +232,15 @@ public class HueRing extends View {
                 float hue = (float) (angleRad / (2 * Math.PI));
                 if (hue < 0)
                     hue += 1;
-                debug("TMP",
-                        String.format("x=%1.3f, y=%1.3f, angle=%1.3frad, hueDegrees=%1.3f", x, y,
-                                angleRad, hue));
+                debug("TMP", String.format(Locale.US,
+                        "x=%1.3f, y=%1.3f, angle=%1.3f rad, hueDegrees=%1.3f", x, y, angleRad,
+                        hue));
                 setHue(hue);
                 break;
+            case MotionEvent.ACTION_UP:
+                performClick();
+                break;
         }
-
         return true;
     }
     public void setInitialHue(int initialHue) {