aboutsummaryrefslogtreecommitdiffstats
path: root/app/src
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2015-03-27 11:52:01 +0000
committerKenny Root <kenny@the-b.org>2015-03-27 11:52:01 +0000
commit48e9c2f37ca757c3dfbd882417670ed67192725f (patch)
tree7e4f348052736b5132609fe26376d1922c22fa1b /app/src
parent8c2e8642127e0c6068a17e9ed82a46668cbd11c4 (diff)
parentada9571134b5d061206c4b7fa7d76a770ec9d419 (diff)
downloadconnectbot-48e9c2f37ca757c3dfbd882417670ed67192725f.tar.gz
connectbot-48e9c2f37ca757c3dfbd882417670ed67192725f.tar.bz2
connectbot-48e9c2f37ca757c3dfbd882417670ed67192725f.zip
Merge branch 'master' into gradle-conversion
Conflicts: app/src/main/java/org/connectbot/util/UberColorPickerDialog.java
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/org/connectbot/ColorsActivity.java83
-rw-r--r--app/src/main/java/org/connectbot/util/UberColorPickerDialog.java218
-rw-r--r--app/src/main/res/layout/act_colors.xml58
-rw-r--r--app/src/main/res/values/strings.xml10
4 files changed, 211 insertions, 158 deletions
diff --git a/app/src/main/java/org/connectbot/ColorsActivity.java b/app/src/main/java/org/connectbot/ColorsActivity.java
index 38336f7..4d28732 100644
--- a/app/src/main/java/org/connectbot/ColorsActivity.java
+++ b/app/src/main/java/org/connectbot/ColorsActivity.java
@@ -30,6 +30,7 @@ import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
+import android.util.DisplayMetrics;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -54,11 +55,12 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
private int mColorScheme;
private List<Integer> mColorList;
- private HostDatabase hostdb;
+ private HostDatabase mHostDb;
private int mCurrentColor = 0;
private int[] mDefaultColors;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -71,10 +73,10 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
mColorScheme = HostDatabase.DEFAULT_COLOR_SCHEME;
- hostdb = new HostDatabase(this);
+ mHostDb = new HostDatabase(this);
- mColorList = Arrays.asList(hostdb.getColorsForScheme(mColorScheme));
- mDefaultColors = hostdb.getDefaultColorsForScheme(mColorScheme);
+ mColorList = Arrays.asList(mHostDb.getColorsForScheme(mColorScheme));
+ mDefaultColors = mHostDb.getDefaultColorsForScheme(mColorScheme);
mColorGrid = (GridView) findViewById(R.id.color_grid);
mColorGrid.setAdapter(new ColorsAdapter(true));
@@ -82,12 +84,12 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
mColorGrid.setSelection(0);
mFgSpinner = (Spinner) findViewById(R.id.fg);
- mFgSpinner.setAdapter(new ColorsAdapter(false));
+ mFgSpinner.setAdapter(new ColorsAdapter(false, R.string.colors_fg_label));
mFgSpinner.setSelection(mDefaultColors[0]);
mFgSpinner.setOnItemSelectedListener(this);
mBgSpinner = (Spinner) findViewById(R.id.bg);
- mBgSpinner.setAdapter(new ColorsAdapter(false));
+ mBgSpinner.setAdapter(new ColorsAdapter(false, R.string.color_bg_label));
mBgSpinner.setSelection(mDefaultColors[1]);
mBgSpinner.setOnItemSelectedListener(this);
}
@@ -96,9 +98,9 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
protected void onDestroy() {
super.onDestroy();
- if (hostdb != null) {
- hostdb.close();
- hostdb = null;
+ if (mHostDb != null) {
+ mHostDb.close();
+ mHostDb = null;
}
}
@@ -106,22 +108,28 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
protected void onResume() {
super.onResume();
- if (hostdb == null)
- hostdb = new HostDatabase(this);
+ if (mHostDb == null)
+ mHostDb = new HostDatabase(this);
}
private class ColorsAdapter extends BaseAdapter {
- private boolean mSquareViews;
+ private final boolean mSquareViews;
+ private final int mResourceLabel;
public ColorsAdapter(boolean squareViews) {
+ this(squareViews, -1);
+ }
+
+ public ColorsAdapter(boolean squareViews, int resourceLabel) {
mSquareViews = squareViews;
+ mResourceLabel = resourceLabel;
}
public View getView(int position, View convertView, ViewGroup parent) {
ColorView c;
if (convertView == null) {
- c = new ColorView(ColorsActivity.this, mSquareViews);
+ c = new ColorView(ColorsActivity.this, mResourceLabel, mSquareViews);
} else {
c = (ColorView) convertView;
}
@@ -146,7 +154,15 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
}
private class ColorView extends View {
- private boolean mSquare;
+ /** The font size displayed in the GridView entries. */
+ private static final float FONT_SIZE_DP = 20f;
+
+ /** Margin around the GridView entries. */
+ private static final float MARGIN_DP = 10f;
+
+ private final boolean mSquare;
+
+ private final int mResourceLabel;
private Paint mTextPaint;
private Paint mShadowPaint;
@@ -159,14 +175,17 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
private int mWidthCenter;
private int mHeightCenter;
- public ColorView(Context context, boolean square) {
+ public ColorView(Context context, int resourceLabel, boolean square) {
super(context);
mSquare = square;
+ mResourceLabel = resourceLabel;
+
+ DisplayMetrics metrics = context.getResources().getDisplayMetrics();
mTextPaint = new Paint();
mTextPaint.setAntiAlias(true);
- mTextPaint.setTextSize(16);
+ mTextPaint.setTextSize((int) (metrics.density * FONT_SIZE_DP + 0.5f));
mTextPaint.setColor(0xFFFFFFFF);
mTextPaint.setTextAlign(Paint.Align.CENTER);
@@ -177,7 +196,8 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
mShadowPaint.setStrokeWidth(4f);
mShadowPaint.setColor(0xFF000000);
- setPadding(10, 10, 10, 10);
+ int marginPx = (int) (MARGIN_DP * metrics.density + 0.5f);
+ setPadding(marginPx, marginPx, marginPx, marginPx);
}
public void setColor(int color) {
@@ -185,7 +205,11 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
}
public void setNumber(int number) {
- mText = Integer.toString(number);
+ if (mResourceLabel != -1) {
+ mText = getContext().getResources().getString(mResourceLabel, number);
+ } else {
+ mText = Integer.toString(number);
+ }
}
@Override
@@ -193,10 +217,12 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
int width = measureWidth(widthMeasureSpec);
int height;
- if (mSquare)
+ if (mSquare) {
+ //noinspection SuspiciousNameCombination
height = width;
- else
+ } else {
height = measureHeight(heightMeasureSpec);
+ }
mAscent = (int) mTextPaint.ascent();
mWidthCenter = width / 2;
@@ -206,7 +232,8 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
}
private int measureWidth(int measureSpec) {
- int result = 0;
+ int result;
+
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
@@ -228,7 +255,8 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
}
private int measureHeight(int measureSpec) {
- int result = 0;
+ int result;
+
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
@@ -249,7 +277,6 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
return result;
}
-
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
@@ -273,7 +300,7 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
public void onNothingSelected(AdapterView<?> arg0) { }
public void colorChanged(int value) {
- hostdb.setGlobalColor(mCurrentColor, value);
+ mHostDb.setGlobalColor(mCurrentColor, value);
mColorList.set(mCurrentColor, value);
mColorGrid.invalidateViews();
}
@@ -294,7 +321,7 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
}
if (needUpdate)
- hostdb.setDefaultColorsForScheme(mColorScheme, mDefaultColors[0], mDefaultColors[1]);
+ mHostDb.setDefaultColorsForScheme(mColorScheme, mDefaultColors[0], mDefaultColors[1]);
}
@Override
@@ -309,8 +336,8 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
public boolean onMenuItemClick(MenuItem arg0) {
// Reset each individual color to defaults.
for (int i = 0; i < Colors.defaults.length; i++) {
- if (mColorList.get(i) != Colors.defaults[i]) {
- hostdb.setGlobalColor(i, Colors.defaults[i]);
+ if (!mColorList.get(i).equals(Colors.defaults[i])) {
+ mHostDb.setGlobalColor(i, Colors.defaults[i]);
mColorList.set(i, Colors.defaults[i]);
}
}
@@ -319,7 +346,7 @@ public class ColorsActivity extends Activity implements OnItemClickListener, OnC
// Reset the default FG/BG colors as well.
mFgSpinner.setSelection(HostDatabase.DEFAULT_FG_COLOR);
mBgSpinner.setSelection(HostDatabase.DEFAULT_BG_COLOR);
- hostdb.setDefaultColorsForScheme(HostDatabase.DEFAULT_COLOR_SCHEME,
+ mHostDb.setDefaultColorsForScheme(HostDatabase.DEFAULT_COLOR_SCHEME,
HostDatabase.DEFAULT_FG_COLOR, HostDatabase.DEFAULT_BG_COLOR);
return true;
diff --git a/app/src/main/java/org/connectbot/util/UberColorPickerDialog.java b/app/src/main/java/org/connectbot/util/UberColorPickerDialog.java
index c19d959..dc46525 100644
--- a/app/src/main/java/org/connectbot/util/UberColorPickerDialog.java
+++ b/app/src/main/java/org/connectbot/util/UberColorPickerDialog.java
@@ -33,6 +33,8 @@
package org.connectbot.util;
+import org.connectbot.R;
+
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
@@ -81,7 +83,6 @@ public class UberColorPickerDialog extends Dialog {
* @param context
* @param listener
* @param initialColor
- * @param showTitle If true, a title is shown across the top of the dialog. If false a toast is shown instead.
*/
public UberColorPickerDialog(Context context,
OnColorChangedListener listener,
@@ -110,7 +111,7 @@ public class UberColorPickerDialog extends Dialog {
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
- setTitle("Pick a color (try the trackball)");
+ setTitle(getContext().getResources().getString(R.string.title_color_picker));
try {
setContentView(new ColorPickerView(getContext(), l, screenWidth, screenHeight, mInitialColor));
@@ -132,20 +133,13 @@ public class UberColorPickerDialog extends Dialog {
* I highly recommend adding new methods to the end of the list. If you want to try to reorder the list, you're on your own.
*/
private static class ColorPickerView extends View {
- private static int SWATCH_WIDTH = 95;
- private static final int SWATCH_HEIGHT = 60;
-
- private static int PALETTE_POS_X = 0;
- private static int PALETTE_POS_Y = SWATCH_HEIGHT;
- private static final int PALETTE_DIM = SWATCH_WIDTH * 2;
- private static final int PALETTE_RADIUS = PALETTE_DIM / 2;
- private static final int PALETTE_CENTER_X = PALETTE_RADIUS;
- private static final int PALETTE_CENTER_Y = PALETTE_RADIUS;
+ private static int SWATCH_WIDTH_PORTRAIT_DP = 95;
+ private static int SWATCH_WIDTH_LANDSCAPE_DP = 110;
+ private static final int SWATCH_HEIGHT_DP = 60;
- private static final int SLIDER_THICKNESS = 40;
+ private static final int PALETTE_DIM_DP = SWATCH_WIDTH_PORTRAIT_DP * 2;
- private static int VIEW_DIM_X = PALETTE_DIM;
- private static int VIEW_DIM_Y = SWATCH_HEIGHT;
+ private static final int SLIDER_THICKNESS_DP = 40;
//NEW_METHOD_WORK_NEEDED_HERE
private static final int METHOD_HS_V_PALETTE = 0;
@@ -158,7 +152,11 @@ public class UberColorPickerDialog extends Dialog {
private static final int TRACK_HS_PALETTE = 30;
private static final int TRACK_VER_VALUE_SLIDER = 31;
- private static final int TEXT_SIZE = 12;
+ private static final int TEXT_SIZE_DP = 12;
+ private static final int TEXT_SIZE_LABEL_DP = 12;
+
+ private static final int BUTTON_TEXT_MARGIN_DP = 16;
+
private static int[] TEXT_HSV_POS = new int[2];
private static int[] TEXT_RGB_POS = new int[2];
private static int[] TEXT_YUV_POS = new int[2];
@@ -166,6 +164,19 @@ public class UberColorPickerDialog extends Dialog {
private static final float PI = 3.141592653589793f;
+ private final int mSwatchWidthPx;
+ private final int mTextSizePx;
+ private final int mTextSizeLabelPx;
+ private final int mPalettePosX;
+ private final int mPalettePosY;
+ private final int mPaletteDimPx;
+ private final int mPaletteRadiusPx;
+ private final int mSliderThicknessPx;
+ private final int mViewDimXPx;
+ private final int mViewDimYPx;
+ private final int mPaletteCenterPx;
+ private final int mButtonTextMarginPx;
+
private int mMethod = METHOD_HS_V_PALETTE;
private int mTracking = TRACKED_NONE; //What object on screen is currently being tracked for movement
@@ -225,6 +236,10 @@ public class UberColorPickerDialog extends Dialog {
throws Exception {
super(c);
+ DisplayMetrics metrics = c.getResources().getDisplayMetrics();
+ mTextSizePx = (int) (TEXT_SIZE_DP * metrics.density + 0.5f);
+ mTextSizeLabelPx = (int) (TEXT_SIZE_LABEL_DP * metrics.density + 0.5f);
+
//We need to make the dialog focusable to retrieve trackball events.
setFocusable(true);
@@ -236,55 +251,64 @@ public class UberColorPickerDialog extends Dialog {
updateAllFromHSV();
+ mPaletteDimPx = (int) (PALETTE_DIM_DP * metrics.density + 0.5f);
+ mSliderThicknessPx = (int) (SLIDER_THICKNESS_DP * metrics.density + 0.5f);
+ mButtonTextMarginPx = (int) (BUTTON_TEXT_MARGIN_DP * metrics.density + 0.5f);
+
//Setup the layout based on whether this is a portrait or landscape orientation.
if (width <= height) { //Portrait layout
- SWATCH_WIDTH = (PALETTE_DIM + SLIDER_THICKNESS) / 2;
+ mSwatchWidthPx = (int) (((PALETTE_DIM_DP + SLIDER_THICKNESS_DP) / 2) * metrics.density + 0.5f);
+ final int swatchHeightPx = (int) (SWATCH_HEIGHT_DP * metrics.density + 0.5f);
- PALETTE_POS_X = 0;
- PALETTE_POS_Y = TEXT_SIZE * 4 + SWATCH_HEIGHT;
+ mPalettePosX = 0;
+ mPalettePosY = mTextSizePx * 4 + swatchHeightPx;
//Set more rects, lots of rects
- mOldSwatchRect.set(0, TEXT_SIZE * 4, SWATCH_WIDTH, TEXT_SIZE * 4 + SWATCH_HEIGHT);
- mNewSwatchRect.set(SWATCH_WIDTH, TEXT_SIZE * 4, SWATCH_WIDTH * 2, TEXT_SIZE * 4 + SWATCH_HEIGHT);
- mPaletteRect.set(0, PALETTE_POS_Y, PALETTE_DIM, PALETTE_POS_Y + PALETTE_DIM);
- mVerSliderRect.set(PALETTE_DIM, PALETTE_POS_Y, PALETTE_DIM + SLIDER_THICKNESS, PALETTE_POS_Y + PALETTE_DIM);
+ mOldSwatchRect.set(0, mTextSizePx * 4, mSwatchWidthPx, mTextSizePx * 4 + swatchHeightPx);
+ mNewSwatchRect.set(mSwatchWidthPx, mTextSizePx * 4, mSwatchWidthPx * 2, mTextSizePx * 4 + swatchHeightPx);
+ mPaletteRect.set(0, mPalettePosY, mPaletteDimPx, mPalettePosY + mPaletteDimPx);
+ mVerSliderRect.set(mPaletteDimPx, mPalettePosY, mPaletteDimPx + mSliderThicknessPx, mPalettePosY + mPaletteDimPx);
- TEXT_HSV_POS[0] = 3;
+ TEXT_HSV_POS[0] = (int) (3 * metrics.density + 0.5f);
TEXT_HSV_POS[1] = 0;
- TEXT_RGB_POS[0] = TEXT_HSV_POS[0] + 50;
+ TEXT_RGB_POS[0] = TEXT_HSV_POS[0] + (int) (50 * metrics.density + 0.5f);
TEXT_RGB_POS[1] = TEXT_HSV_POS[1];
- TEXT_YUV_POS[0] = TEXT_HSV_POS[0] + 100;
+ TEXT_YUV_POS[0] = TEXT_HSV_POS[0] + (int) (100 * metrics.density + 0.5f);
TEXT_YUV_POS[1] = TEXT_HSV_POS[1];
- TEXT_HEX_POS[0] = TEXT_HSV_POS[0] + 150;
+ TEXT_HEX_POS[0] = TEXT_HSV_POS[0] + (int) (150 * metrics.density + 0.5f);
TEXT_HEX_POS[1] = TEXT_HSV_POS[1];
- VIEW_DIM_X = PALETTE_DIM + SLIDER_THICKNESS;
- VIEW_DIM_Y = SWATCH_HEIGHT + PALETTE_DIM + TEXT_SIZE * 4;
+ mViewDimXPx = mPaletteDimPx + mSliderThicknessPx;
+ mViewDimYPx = swatchHeightPx + mPaletteDimPx + mTextSizePx * 4;
} else { //Landscape layout
- SWATCH_WIDTH = 110;
+ mSwatchWidthPx = (int) (SWATCH_WIDTH_LANDSCAPE_DP * metrics.density + 0.5f);
+ final int swatchHeightPx = (int) (SWATCH_HEIGHT_DP * metrics.density + 0.5f);
- PALETTE_POS_X = SWATCH_WIDTH;
- PALETTE_POS_Y = 0;
+ mPalettePosX = mSwatchWidthPx;
+ mPalettePosY = 0;
//Set more rects, lots of rects
- mOldSwatchRect.set(0, TEXT_SIZE * 7, SWATCH_WIDTH, TEXT_SIZE * 7 + SWATCH_HEIGHT);
- mNewSwatchRect.set(0, TEXT_SIZE * 7 + SWATCH_HEIGHT, SWATCH_WIDTH, TEXT_SIZE * 7 + SWATCH_HEIGHT * 2);
- mPaletteRect.set(SWATCH_WIDTH, PALETTE_POS_Y, SWATCH_WIDTH + PALETTE_DIM, PALETTE_POS_Y + PALETTE_DIM);
- mVerSliderRect.set(SWATCH_WIDTH + PALETTE_DIM, PALETTE_POS_Y, SWATCH_WIDTH + PALETTE_DIM + SLIDER_THICKNESS, PALETTE_POS_Y + PALETTE_DIM);
+ mOldSwatchRect.set(0, mTextSizePx * 7, mSwatchWidthPx, mTextSizePx * 7 + swatchHeightPx);
+ mNewSwatchRect.set(0, mTextSizePx * 7 + mSliderThicknessPx, mSwatchWidthPx, mTextSizePx * 7 + swatchHeightPx * 2);
+ mPaletteRect.set(mSwatchWidthPx, mPalettePosY, mSwatchWidthPx + mPaletteDimPx, mPalettePosY + mPaletteDimPx);
+ mVerSliderRect.set(mSwatchWidthPx + mPaletteDimPx, mPalettePosY, mSwatchWidthPx + mPaletteDimPx + mSliderThicknessPx, mPalettePosY + mPaletteDimPx);
- TEXT_HSV_POS[0] = 3;
+ TEXT_HSV_POS[0] = (int) (3 * metrics.density + 0.5f);
TEXT_HSV_POS[1] = 0;
TEXT_RGB_POS[0] = TEXT_HSV_POS[0];
- TEXT_RGB_POS[1] = (int) (TEXT_HSV_POS[1] + TEXT_SIZE * 3.5);
- TEXT_YUV_POS[0] = TEXT_HSV_POS[0] + 50;
- TEXT_YUV_POS[1] = (int) (TEXT_HSV_POS[1] + TEXT_SIZE * 3.5);
- TEXT_HEX_POS[0] = TEXT_HSV_POS[0] + 50;
+ TEXT_RGB_POS[1] = (int) (TEXT_HSV_POS[1] + mTextSizePx * 3.5);
+ TEXT_YUV_POS[0] = TEXT_HSV_POS[0] + (int) (50 * metrics.density + 0.5f);
+ TEXT_YUV_POS[1] = (int) (TEXT_HSV_POS[1] + mTextSizePx * 3.5);
+ TEXT_HEX_POS[0] = TEXT_HSV_POS[0] + (int) (50 * metrics.density + 0.5f);
TEXT_HEX_POS[1] = TEXT_HSV_POS[1];
- VIEW_DIM_X = PALETTE_POS_X + PALETTE_DIM + SLIDER_THICKNESS;
- VIEW_DIM_Y = Math.max(mNewSwatchRect.bottom, PALETTE_DIM);
+ mViewDimXPx = mPalettePosX + mPaletteDimPx + mSliderThicknessPx;
+ mViewDimYPx = Math.max(mNewSwatchRect.bottom, mPaletteDimPx);
}
+ mPaletteCenterPx = mPaletteDimPx / 2;
+ mPaletteRadiusPx = mPaletteDimPx / 2;
+
//Rainbows make everybody happy!
mSpectrumColorsRev = new int[]{
0xFFFF0000, 0xFFFF00FF, 0xFF0000FF, 0xFF00FFFF,
@@ -305,18 +329,18 @@ public class UberColorPickerDialog extends Dialog {
mSwatchNew.setColor(Color.HSVToColor(mHSV));
Shader shaderA = new SweepGradient(0, 0, mSpectrumColorsRev, null);
- Shader shaderB = new RadialGradient(0, 0, PALETTE_CENTER_X, 0xFFFFFFFF, 0xFF000000, Shader.TileMode.CLAMP);
+ Shader shaderB = new RadialGradient(0, 0, mPaletteCenterPx, 0xFFFFFFFF, 0xFF000000, Shader.TileMode.CLAMP);
Shader shader = new ComposeShader(shaderA, shaderB, PorterDuff.Mode.SCREEN);
mOvalHueSat = new Paint(Paint.ANTI_ALIAS_FLAG);
mOvalHueSat.setShader(shader);
mOvalHueSat.setStyle(Paint.Style.FILL);
mOvalHueSat.setDither(true);
- mVerSliderBM = Bitmap.createBitmap(SLIDER_THICKNESS, PALETTE_DIM, Bitmap.Config.RGB_565);
+ mVerSliderBM = Bitmap.createBitmap(mSliderThicknessPx, mPaletteDimPx, Bitmap.Config.RGB_565);
mVerSliderCv = new Canvas(mVerSliderBM);
for (int i = 0; i < 3; i++) {
- mHorSlidersBM[i] = Bitmap.createBitmap(PALETTE_DIM, SLIDER_THICKNESS, Bitmap.Config.RGB_565);
+ mHorSlidersBM[i] = Bitmap.createBitmap(mPaletteDimPx, mSliderThicknessPx, Bitmap.Config.RGB_565);
mHorSlidersCv[i] = new Canvas(mHorSlidersBM[i]);
}
@@ -332,7 +356,7 @@ public class UberColorPickerDialog extends Dialog {
//Add Paints to represent the icon for the new method
shaderA = new SweepGradient(0, 0, mSpectrumColorsRev, null);
- shaderB = new RadialGradient(0, 0, PALETTE_DIM / 2, 0xFFFFFFFF, 0xFF000000, Shader.TileMode.CLAMP);
+ shaderB = new RadialGradient(0, 0, mPaletteDimPx / 2, 0xFFFFFFFF, 0xFF000000, Shader.TileMode.CLAMP);
shader = new ComposeShader(shaderA, shaderB, PorterDuff.Mode.SCREEN);
mOvalHueSatSmall = new Paint(Paint.ANTI_ALIAS_FLAG);
mOvalHueSatSmall.setShader(shader);
@@ -345,7 +369,7 @@ public class UberColorPickerDialog extends Dialog {
//Make a basic text Paint.
mText = new Paint(Paint.ANTI_ALIAS_FLAG);
- mText.setTextSize(TEXT_SIZE);
+ mText.setTextSize(mTextSizePx);
mText.setColor(Color.WHITE);
//Kickstart
@@ -376,7 +400,7 @@ public class UberColorPickerDialog extends Dialog {
private void drawSwatches(Canvas canvas) {
float[] hsv = new float[3];
- mText.setTextSize(16);
+ mText.setTextSize(mTextSizePx);
//Draw the original swatch
canvas.drawRect(mOldSwatchRect, mSwatchOld);
@@ -385,17 +409,17 @@ public class UberColorPickerDialog extends Dialog {
// hsv[1] = 0;
if (hsv[2] > .5)
mText.setColor(Color.BLACK);
- canvas.drawText("Revert", mOldSwatchRect.left + SWATCH_WIDTH / 2 - mText.measureText("Revert") / 2, mOldSwatchRect.top + 16, mText);
+ canvas.drawText("Revert", mOldSwatchRect.left + mSwatchWidthPx / 2 - mText.measureText("Revert") / 2, mOldSwatchRect.top + mButtonTextMarginPx, mText);
mText.setColor(Color.WHITE);
//Draw the new swatch
canvas.drawRect(mNewSwatchRect, mSwatchNew);
if (mHSV[2] > .5)
mText.setColor(Color.BLACK);
- canvas.drawText("Accept", mNewSwatchRect.left + SWATCH_WIDTH / 2 - mText.measureText("Accept") / 2, mNewSwatchRect.top + 16, mText);
+ canvas.drawText("Accept", mNewSwatchRect.left + mSwatchWidthPx / 2 - mText.measureText("Accept") / 2, mNewSwatchRect.top + mButtonTextMarginPx, mText);
mText.setColor(Color.WHITE);
- mText.setTextSize(TEXT_SIZE);
+ mText.setTextSize(mTextSizePx);
}
/**
@@ -405,25 +429,25 @@ public class UberColorPickerDialog extends Dialog {
*/
private void writeColorParams(Canvas canvas) {
if (mHSVenabled) {
- canvas.drawText("H: " + Integer.toString((int) (mHSV[0] / 360.0f * 255)), TEXT_HSV_POS[0], TEXT_HSV_POS[1] + TEXT_SIZE, mText);
- canvas.drawText("S: " + Integer.toString((int) (mHSV[1] * 255)), TEXT_HSV_POS[0], TEXT_HSV_POS[1] + TEXT_SIZE * 2, mText);
- canvas.drawText("V: " + Integer.toString((int) (mHSV[2] * 255)), TEXT_HSV_POS[0], TEXT_HSV_POS[1] + TEXT_SIZE * 3, mText);
+ canvas.drawText("H: " + Integer.toString((int) (mHSV[0] / 360.0f * 255)), TEXT_HSV_POS[0], TEXT_HSV_POS[1] + mTextSizePx, mText);
+ canvas.drawText("S: " + Integer.toString((int) (mHSV[1] * 255)), TEXT_HSV_POS[0], TEXT_HSV_POS[1] + mTextSizePx * 2, mText);
+ canvas.drawText("V: " + Integer.toString((int) (mHSV[2] * 255)), TEXT_HSV_POS[0], TEXT_HSV_POS[1] + mTextSizePx * 3, mText);
}
if (mRGBenabled) {
- canvas.drawText("R: " + mRGB[0], TEXT_RGB_POS[0], TEXT_RGB_POS[1] + TEXT_SIZE, mText);
- canvas.drawText("G: " + mRGB[1], TEXT_RGB_POS[0], TEXT_RGB_POS[1] + TEXT_SIZE * 2, mText);
- canvas.drawText("B: " + mRGB[2], TEXT_RGB_POS[0], TEXT_RGB_POS[1] + TEXT_SIZE * 3, mText);
+ canvas.drawText("R: " + mRGB[0], TEXT_RGB_POS[0], TEXT_RGB_POS[1] + mTextSizePx, mText);
+ canvas.drawText("G: " + mRGB[1], TEXT_RGB_POS[0], TEXT_RGB_POS[1] + mTextSizePx * 2, mText);
+ canvas.drawText("B: " + mRGB[2], TEXT_RGB_POS[0], TEXT_RGB_POS[1] + mTextSizePx * 3, mText);
}
if (mYUVenabled) {
- canvas.drawText("Y: " + Integer.toString((int) (mYUV[0] * 255)), TEXT_YUV_POS[0], TEXT_YUV_POS[1] + TEXT_SIZE, mText);
- canvas.drawText("U: " + Integer.toString((int) ((mYUV[1] + .5f) * 255)), TEXT_YUV_POS[0], TEXT_YUV_POS[1] + TEXT_SIZE * 2, mText);
- canvas.drawText("V: " + Integer.toString((int) ((mYUV[2] + .5f) * 255)), TEXT_YUV_POS[0], TEXT_YUV_POS[1] + TEXT_SIZE * 3, mText);
+ canvas.drawText("Y: " + Integer.toString((int) (mYUV[0] * 255)), TEXT_YUV_POS[0], TEXT_YUV_POS[1] + mTextSizePx, mText);
+ canvas.drawText("U: " + Integer.toString((int) ((mYUV[1] + .5f) * 255)), TEXT_YUV_POS[0], TEXT_YUV_POS[1] + mTextSizePx * 2, mText);
+ canvas.drawText("V: " + Integer.toString((int) ((mYUV[2] + .5f) * 255)), TEXT_YUV_POS[0], TEXT_YUV_POS[1] + mTextSizePx * 3, mText);
}
if (mHexenabled)
- canvas.drawText("#" + mHexStr, TEXT_HEX_POS[0], TEXT_HEX_POS[1] + TEXT_SIZE, mText);
+ canvas.drawText("#" + mHexStr, TEXT_HEX_POS[0], TEXT_HEX_POS[1] + mTextSizePx, mText);
}
/**
@@ -448,9 +472,9 @@ public class UberColorPickerDialog extends Dialog {
*/
private void markVerSlider(Canvas canvas, int markerPos) {
mPosMarker.setColor(Color.BLACK);
- canvas.drawRect(new Rect(0, markerPos - 2, SLIDER_THICKNESS, markerPos + 3), mPosMarker);
+ canvas.drawRect(new Rect(0, markerPos - 2, mSliderThicknessPx, markerPos + 3), mPosMarker);
mPosMarker.setColor(Color.WHITE);
- canvas.drawRect(new Rect(0, markerPos, SLIDER_THICKNESS, markerPos + 1), mPosMarker);
+ canvas.drawRect(new Rect(0, markerPos, mSliderThicknessPx, markerPos + 1), mPosMarker);
}
/**
@@ -460,9 +484,9 @@ public class UberColorPickerDialog extends Dialog {
*/
private void hilightFocusedVerSlider(Canvas canvas) {
mPosMarker.setColor(Color.WHITE);
- canvas.drawRect(new Rect(0, 0, SLIDER_THICKNESS, PALETTE_DIM), mPosMarker);
+ canvas.drawRect(new Rect(0, 0, mSliderThicknessPx, mPaletteDimPx), mPosMarker);
mPosMarker.setColor(Color.BLACK);
- canvas.drawRect(new Rect(2, 2, SLIDER_THICKNESS - 2, PALETTE_DIM - 2), mPosMarker);
+ canvas.drawRect(new Rect(2, 2, mSliderThicknessPx - 2, mPaletteDimPx - 2), mPosMarker);
}
/**
@@ -472,9 +496,9 @@ public class UberColorPickerDialog extends Dialog {
*/
private void hilightFocusedOvalPalette(Canvas canvas) {
mPosMarker.setColor(Color.WHITE);
- canvas.drawOval(new RectF(-PALETTE_RADIUS, -PALETTE_RADIUS, PALETTE_RADIUS, PALETTE_RADIUS), mPosMarker);
+ canvas.drawOval(new RectF(-mPaletteRadiusPx, -mPaletteRadiusPx, mPaletteRadiusPx, mPaletteRadiusPx), mPosMarker);
mPosMarker.setColor(Color.BLACK);
- canvas.drawOval(new RectF(-PALETTE_RADIUS + 2, -PALETTE_RADIUS + 2, PALETTE_RADIUS - 2, PALETTE_RADIUS - 2), mPosMarker);
+ canvas.drawOval(new RectF(-mPaletteRadiusPx + 2, -mPaletteRadiusPx + 2, mPaletteRadiusPx - 2, mPaletteRadiusPx - 2), mPosMarker);
}
//NEW_METHOD_WORK_NEEDED_HERE
@@ -488,19 +512,19 @@ public class UberColorPickerDialog extends Dialog {
private void drawHSV1Palette(Canvas canvas) {
canvas.save();
- canvas.translate(PALETTE_POS_X, PALETTE_POS_Y);
+ canvas.translate(mPalettePosX, mPalettePosY);
//Draw the 2D palette
- canvas.translate(PALETTE_CENTER_X, PALETTE_CENTER_Y);
- canvas.drawOval(new RectF(-PALETTE_RADIUS, -PALETTE_RADIUS, PALETTE_RADIUS, PALETTE_RADIUS), mOvalHueSat);
- canvas.drawOval(new RectF(-PALETTE_RADIUS, -PALETTE_RADIUS, PALETTE_RADIUS, PALETTE_RADIUS), mValDimmer);
+ canvas.translate(mPaletteCenterPx, mPaletteCenterPx);
+ canvas.drawOval(new RectF(-mPaletteRadiusPx, -mPaletteRadiusPx, mPaletteRadiusPx, mPaletteRadiusPx), mOvalHueSat);
+ canvas.drawOval(new RectF(-mPaletteRadiusPx, -mPaletteRadiusPx, mPaletteRadiusPx, mPaletteRadiusPx), mValDimmer);
if (mFocusedControl == 0)
hilightFocusedOvalPalette(canvas);
mark2DPalette(canvas, mCoord[0], mCoord[1]);
- canvas.translate(-PALETTE_CENTER_X, -PALETTE_CENTER_Y);
+ canvas.translate(-mPaletteCenterPx, -mPaletteCenterPx);
//Draw the 1D slider
- canvas.translate(PALETTE_DIM, 0);
+ canvas.translate(mPaletteDimPx, 0);
canvas.drawBitmap(mVerSliderBM, 0, 0, null);
if (mFocusedControl == 1)
hilightFocusedVerSlider(canvas);
@@ -530,11 +554,11 @@ public class UberColorPickerDialog extends Dialog {
setVerValSlider();
float angle = 2 * PI - mHSV[0] / (180 / 3.1415927f);
- float radius = mHSV[1] * PALETTE_RADIUS;
+ float radius = mHSV[1] * mPaletteRadiusPx;
mCoord[0] = (int) (Math.cos(angle) * radius);
mCoord[1] = (int) (Math.sin(angle) * radius);
- mCoord[2] = PALETTE_DIM - (int) (mHSV[2] * PALETTE_DIM);
+ mCoord[2] = mPaletteDimPx - (int) (mHSV[2] * mPaletteDimPx);
}
//NEW_METHOD_WORK_NEEDED_HERE
@@ -568,7 +592,7 @@ public class UberColorPickerDialog extends Dialog {
GradientDrawable gradDraw = new GradientDrawable(Orientation.TOP_BOTTOM, colors);
gradDraw.setDither(true);
gradDraw.setLevel(10000);
- gradDraw.setBounds(0, 0, SLIDER_THICKNESS, PALETTE_DIM);
+ gradDraw.setBounds(0, 0, mSliderThicknessPx, mPaletteDimPx);
gradDraw.draw(mVerSliderCv);
}
@@ -577,7 +601,7 @@ public class UberColorPickerDialog extends Dialog {
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- setMeasuredDimension(VIEW_DIM_X, VIEW_DIM_Y);
+ setMeasuredDimension(mViewDimXPx, mViewDimYPx);
}
/**
@@ -761,18 +785,18 @@ public class UberColorPickerDialog extends Dialog {
mCoord[0] += x2;
mCoord[1] += y2;
- if (mCoord[0] < -PALETTE_RADIUS)
- mCoord[0] = -PALETTE_RADIUS;
- else if (mCoord[0] > PALETTE_RADIUS)
- mCoord[0] = PALETTE_RADIUS;
- if (mCoord[1] < -PALETTE_RADIUS)
- mCoord[1] = -PALETTE_RADIUS;
- else if (mCoord[1] > PALETTE_RADIUS)
- mCoord[1] = PALETTE_RADIUS;
+ if (mCoord[0] < -mPaletteRadiusPx)
+ mCoord[0] = -mPaletteRadiusPx;
+ else if (mCoord[0] > mPaletteRadiusPx)
+ mCoord[0] = mPaletteRadiusPx;
+ if (mCoord[1] < -mPaletteRadiusPx)
+ mCoord[1] = -mPaletteRadiusPx;
+ else if (mCoord[1] > mPaletteRadiusPx)
+ mCoord[1] = mPaletteRadiusPx;
float radius = (float) java.lang.Math.sqrt(mCoord[0] * mCoord[0] + mCoord[1] * mCoord[1]);
- if (radius > PALETTE_RADIUS)
- radius = PALETTE_RADIUS;
+ if (radius > mPaletteRadiusPx)
+ radius = mPaletteRadiusPx;
float angle = (float) java.lang.Math.atan2(mCoord[1], mCoord[0]);
// need to turn angle [-PI ... PI] into unit [0....1]
@@ -788,7 +812,7 @@ public class UberColorPickerDialog extends Dialog {
float[] hsv = new float[3];
Color.colorToHSV(c, hsv);
mHSV[0] = hsv[0];
- mHSV[1] = radius / PALETTE_RADIUS;
+ mHSV[1] = radius / mPaletteRadiusPx;
updateAllFromHSV();
mSwatchNew.setColor(Color.HSVToColor(mHSV));
@@ -814,7 +838,7 @@ public class UberColorPickerDialog extends Dialog {
mHSV[2] += (increase ? jump : -jump) / 256.0f;
mHSV[2] = pinToUnit(mHSV[2]);
updateAllFromHSV();
- mCoord[2] = PALETTE_DIM - (int) (mHSV[2] * PALETTE_DIM);
+ mCoord[2] = mPaletteDimPx - (int) (mHSV[2] * mPaletteDimPx);
mSwatchNew.setColor(Color.HSVToColor(mHSV));
@@ -889,11 +913,11 @@ public class UberColorPickerDialog extends Dialog {
float y = event.getY();
//Generate coordinates which are palette=local with the origin at the upper left of the main 2D palette
- int y2 = (int) (pin(round(y - PALETTE_POS_Y), PALETTE_DIM));
+ int y2 = (int) (pin(round(y - mPalettePosY), mPaletteDimPx));
//Generate coordinates which are palette-local with the origin at the center of the main 2D palette
- float circlePinnedX = x - PALETTE_POS_X - PALETTE_CENTER_X;
- float circlePinnedY = y - PALETTE_POS_Y - PALETTE_CENTER_Y;
+ float circlePinnedX = x - mPalettePosX - mPaletteCenterPx;
+ float circlePinnedY = y - mPalettePosY - mPaletteCenterPx;
//Is the event in a swatch?
boolean inSwatchOld = ptInRect(round(x), round(y), mOldSwatchRect);
@@ -903,11 +927,11 @@ public class UberColorPickerDialog extends Dialog {
float radius = (float) java.lang.Math.sqrt(circlePinnedX * circlePinnedX + circlePinnedY * circlePinnedY);
//Is the event in a circle-pinned 2D palette?
- boolean inOvalPalette = radius <= PALETTE_RADIUS;
+ boolean inOvalPalette = radius <= mPaletteRadiusPx;
//Pin the radius
- if (radius > PALETTE_RADIUS)
- radius = PALETTE_RADIUS;
+ if (radius > mPaletteRadiusPx)
+ radius = mPaletteRadiusPx;
//Is the event in a vertical slider to the right of the main 2D palette
boolean inVerSlider = ptInRect(round(x), round(y), mVerSliderRect);
@@ -951,7 +975,7 @@ public class UberColorPickerDialog extends Dialog {
float[] hsv = new float[3];
Color.colorToHSV(c, hsv);
mHSV[0] = hsv[0];
- mHSV[1] = radius / PALETTE_RADIUS;
+ mHSV[1] = radius / mPaletteRadiusPx;
updateAllFromHSV();
mSwatchNew.setColor(Color.HSVToColor(mHSV));
@@ -961,7 +985,7 @@ public class UberColorPickerDialog extends Dialog {
} else if (mTracking == TRACK_VER_VALUE_SLIDER) {
if (mCoord[2] != y2) {
mCoord[2] = y2;
- float value = 1.0f - (float) y2 / (float) PALETTE_DIM;
+ float value = 1.0f - (float) y2 / (float) mPaletteDimPx;
mHSV[2] = value;
updateAllFromHSV();
diff --git a/app/src/main/res/layout/act_colors.xml b/app/src/main/res/layout/act_colors.xml
index 625437d..dfb6082 100644
--- a/app/src/main/res/layout/act_colors.xml
+++ b/app/src/main/res/layout/act_colors.xml
@@ -23,36 +23,35 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
- <TextView
- android:text="@string/colors_fg"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:id="@+id/fg_label"
- android:paddingTop="12dp"
- />
-
- <Spinner
- android:id="@+id/fg"
- android:layout_width="wrap_content"
+ <LinearLayout
+ android:orientation="horizontal"
+ android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:layout_toRightOf="@+id/fg_label"
- />
+ android:id="@+id/spinners">
- <Spinner
- android:id="@+id/bg"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignTop="@+id/fg"
- android:layout_alignParentRight="true"
- />
+ <Spinner
+ android:id="@+id/fg"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_alignParentLeft="true"
+ android:minHeight="60dp"
+ android:layout_weight="1"
+ android:gravity="center"
+ />
- <TextView
- android:text="@string/color_bg"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_toLeftOf="@+id/bg"
- android:paddingTop="12dp"
- />
+ <Spinner
+ android:id="@+id/bg"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_alignTop="@id/fg"
+ android:layout_alignParentRight="true"
+ android:layout_toRightOf="@id/fg"
+ android:layout_alignParentStart="true"
+ android:minHeight="60dp"
+ android:layout_weight="1"
+ android:gravity="center"
+ />
+ </LinearLayout>
<GridView
android:id="@+id/color_grid"
@@ -65,7 +64,8 @@
android:columnWidth="60dp"
android:stretchMode="columnWidth"
android:gravity="center"
- android:layout_below="@+id/fg"
- android:stackFromBottom="true" android:minHeight="60dp"/>
+ android:minHeight="60dp"
+ android:layout_below="@+id/spinners"
+ />
</RelativeLayout>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 552cd05..87206cf 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -37,6 +37,8 @@
<string name="title_help">"Help"</string>
<!-- Window title for color list editing screen -->
<string name="title_colors">"Colors"</string>
+ <!-- Dialog title for color picker dialog -->
+ <string name="title_color_picker">"Pick a color"</string>
<string name="resolve_connect">"Connect"</string>
<!-- Menu selection where user must move finger randomly over an area to gather entropy (collect random bits) -->
@@ -481,11 +483,11 @@
<string name="color_blue">"blue"</string>
<string name="color_gray">"gray"</string>
- <!-- Very short label indicating the thing next to it is "foreground color." -->
- <string name="colors_fg">"FG":</string>
+ <!-- Very short label indicating the number next to it is "foreground color" number. -->
+ <string name="colors_fg_label">"FG: %1$d"</string>
- <!-- Very short label indicating the thing next to it is "background color." -->
- <string name="color_bg">"BG:"</string>
+ <!-- Very short label indicating the number next to it is "background color" number. -->
+ <string name="color_bg_label">"BG: %1$d"</string>
<!-- Describes the image of the "connected to host" icon for accessibility purposes. -->
<string name="image_description_connected">"Connected."</string>