summaryrefslogtreecommitdiffstats
path: root/android/source/src/java/org/libreoffice/ColorPickerAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'android/source/src/java/org/libreoffice/ColorPickerAdapter.java')
-rw-r--r--android/source/src/java/org/libreoffice/ColorPickerAdapter.java86
1 files changed, 41 insertions, 45 deletions
diff --git a/android/source/src/java/org/libreoffice/ColorPickerAdapter.java b/android/source/src/java/org/libreoffice/ColorPickerAdapter.java
index c93d5a01bbb4..a17dd264fb99 100644
--- a/android/source/src/java/org/libreoffice/ColorPickerAdapter.java
+++ b/android/source/src/java/org/libreoffice/ColorPickerAdapter.java
@@ -3,7 +3,7 @@ package org.libreoffice;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
-import android.support.v7.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -12,12 +12,11 @@ import android.widget.ImageButton;
public class ColorPickerAdapter extends RecyclerView.Adapter<ColorPickerAdapter.ColorPickerViewHolder> {
- Context mContext;
- ColorPaletteAdapter colorPaletteAdapter;
- ColorPaletteListener colorPaletteListener;
- int[] colorList;
- int[][] colorPalette = new int[11][8];
- int selectedBox = 0;
+ private final Context mContext;
+ private final ColorPaletteAdapter colorPaletteAdapter;
+ private final ColorPaletteListener colorPaletteListener;
+ private final int[] colorList;
+ private final int[][] colorPalette = new int[11][8];
public ColorPickerAdapter(Context mContext, final ColorPaletteAdapter colorPaletteAdapter, ColorPaletteListener colorPaletteListener) {
this.mContext = mContext;
@@ -41,10 +40,11 @@ public class ColorPickerAdapter extends RecyclerView.Adapter<ColorPickerAdapter.
public void onBindViewHolder(final ColorPickerViewHolder holder, int position) {
holder.colorBox.setBackgroundColor(colorList[position]);
- if (selectedBox != position)
- holder.colorBox.setImageDrawable(null);
- else {
+ if (colorPaletteAdapter.getUpperSelectedBox() == position
+ && colorPaletteAdapter.getSelectedBox() >= 0) {
holder.colorBox.setImageResource(R.drawable.ic_done_white_12dp);
+ } else {
+ holder.colorBox.setImageDrawable(null);
}
holder.colorBox.setOnClickListener(new View.OnClickListener() {
@@ -64,12 +64,20 @@ public class ColorPickerAdapter extends RecyclerView.Adapter<ColorPickerAdapter.
private void setPosition(int position) {
- this.selectedBox = position;
selectSubColor(position, position==0?0:3);
colorPaletteListener.applyColor(colorList[position]);
updateAdapter();
}
+ /**
+ * Switches to first palette, but doesn't mark any color as selected.
+ * Use this if no color in the palette matches the actual one.
+ */
+ public void unselectColors() {
+ colorPaletteAdapter.changePosition(0, -1);
+ updateAdapter();
+ }
+
private void selectSubColor(int position1, int position2) {
colorPaletteAdapter.setPosition(position1, position2);
}
@@ -88,7 +96,15 @@ public class ColorPickerAdapter extends RecyclerView.Adapter<ColorPickerAdapter.
int red_shade = red;
int green_shade = green;
int blue_shade = blue;
- if (i != 0) {
+ if (i == 0) {
+ colorPalette[0][0] = colorList[i];
+ for (int k = 1; k < 7; k++) {
+ red_tint = (int) (red_tint + (255 - red_tint) * 0.25);
+ green_tint = (int) (green_tint + (255 - green_tint) * 0.25);
+ blue_tint = (int) (blue_tint + (255 - blue_tint) * 0.25);
+ colorPalette[i][k] = (Color.rgb(red_tint, green_tint, blue_tint));
+ }
+ } else {
colorPalette[i][3] = colorList[i];
for (int k = 2; k >= 0; k--) {
red_shade = (int) (red_shade * 0.75);
@@ -102,48 +118,28 @@ public class ColorPickerAdapter extends RecyclerView.Adapter<ColorPickerAdapter.
blue_tint = (int) (blue_tint + (255 - blue_tint) * 0.45);
colorPalette[i][k] = (Color.rgb(red_tint, green_tint, blue_tint));
}
- } else {
- colorPalette[0][0] = colorList[i];
- for (int k = 1; k < 7; k++) {
- red_tint = (int) (red_tint + (255 - red_tint) * 0.25);
- green_tint = (int) (green_tint + (255 - green_tint) * 0.25);
- blue_tint = (int) (blue_tint + (255 - blue_tint) * 0.25);
- colorPalette[i][k] = (Color.rgb(red_tint, green_tint, blue_tint));
- }
}
- }
- for (int i = 0; i < 11; i++){
- this.colorPalette[i][7] = (Color.rgb(255, 255, 255)); // last one is always white
+ colorPalette[i][7] = Color.WHITE; // last one is always white
}
colorPaletteAdapter.setColorPalette(colorPalette);
}
public void findSelectedTextColor(int color) {
- /*
- Libreoffice recognizes -1 as Black
- */
- if (color == -1) {
- colorPaletteAdapter.changePosition(0, 0);
- selectedBox = 0;
- updateAdapter();
- return;
- }
- /*
- Find the color if the palette points another color
- */
- if (colorPalette[selectedBox][colorPaletteAdapter.getSelectedBox()] != color) {
- for (int i = 0; i < 11; i++) {
- for (int k = 0; k < 8; k++) {
- if (colorPalette[i][k] == color) {
- colorPaletteAdapter.changePosition(i, k);
- selectedBox = i;
- updateAdapter();
- return;
- }
+ // try to find and highlight the color in the existing palettes
+ for (int i = 0; i < 11; i++) {
+ for (int k = 0; k < 8; k++) {
+ if (colorPalette[i][k] == color) {
+ colorPaletteAdapter.changePosition(i, k);
+ updateAdapter();
+ return;
}
}
}
+
+ // no color in the palettes matched
+ unselectColors();
}
+
private void updateAdapter(){
LOKitShell.getMainHandler().post(new Runnable() {
@Override
@@ -163,4 +159,4 @@ public class ColorPickerAdapter extends RecyclerView.Adapter<ColorPickerAdapter.
this.colorBox = itemView.findViewById(R.id.fontColorBox);
}
}
-} \ No newline at end of file
+}