LibreOffice Module android (master) 1
ColorPickerAdapter.java
Go to the documentation of this file.
1package org.libreoffice;
2
3import android.content.Context;
4import android.content.res.Resources;
5import android.graphics.Color;
6import androidx.recyclerview.widget.RecyclerView;
7import android.view.LayoutInflater;
8import android.view.View;
9import android.view.ViewGroup;
10import android.widget.ImageButton;
11
12
13public class ColorPickerAdapter extends RecyclerView.Adapter<ColorPickerAdapter.ColorPickerViewHolder> {
14
15 private final Context mContext;
18 private final int[] colorList;
19 private final int[][] colorPalette = new int[11][8];
20
22 this.mContext = mContext;
23 this.colorPaletteAdapter = colorPaletteAdapter;
24 this.colorPaletteListener = colorPaletteListener;
25 Resources r = mContext.getResources();
26 this.colorList = r.getIntArray(R.array.fontcolors);
28
29
30 }
31
32 @Override
33 public ColorPickerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
34 View item = LayoutInflater.from(mContext).inflate(R.layout.colorbox, parent, false);
35 return new ColorPickerViewHolder(item);
36
37 }
38
39 @Override
40 public void onBindViewHolder(final ColorPickerViewHolder holder, int position) {
41 holder.colorBox.setBackgroundColor(colorList[position]);
42
45 holder.colorBox.setImageResource(R.drawable.ic_done_white_12dp);
46 } else {
47 holder.colorBox.setImageDrawable(null);
48 }
49
50 holder.colorBox.setOnClickListener(new View.OnClickListener() {
51 @Override
52 public void onClick(View view) {
53 LibreOfficeMainActivity.setDocumentChanged(true);
54 setPosition(holder.getAdapterPosition());
55 colorPaletteListener.applyColor(colorList[holder.getAdapterPosition()]);
56 }
57 });
58 }
59
60 @Override
61 public int getItemCount() {
62 return colorList.length;
63 }
64
65
66 private void setPosition(int position) {
67 selectSubColor(position, position==0?0:3);
68 colorPaletteListener.applyColor(colorList[position]);
69 updateAdapter();
70 }
71
76 public void unselectColors() {
77 colorPaletteAdapter.changePosition(0, -1);
78 updateAdapter();
79 }
80
81 private void selectSubColor(int position1, int position2) {
82 colorPaletteAdapter.setPosition(position1, position2);
83 }
84
85 private void initializeColorPalette() {
86
87 for (int i = 0; i < 11; i++) {
88 int red = Color.red(colorList[i]);
89 int green = Color.green(colorList[i]);
90 int blue = Color.blue(colorList[i]);
91
92 int red_tint = red;
93 int green_tint = green;
94 int blue_tint = blue;
95
96 int red_shade = red;
97 int green_shade = green;
98 int blue_shade = blue;
99 if (i == 0) {
100 colorPalette[0][0] = colorList[i];
101 for (int k = 1; k < 7; k++) {
102 red_tint = (int) (red_tint + (255 - red_tint) * 0.25);
103 green_tint = (int) (green_tint + (255 - green_tint) * 0.25);
104 blue_tint = (int) (blue_tint + (255 - blue_tint) * 0.25);
105 colorPalette[i][k] = (Color.rgb(red_tint, green_tint, blue_tint));
106 }
107 } else {
108 colorPalette[i][3] = colorList[i];
109 for (int k = 2; k >= 0; k--) {
110 red_shade = (int) (red_shade * 0.75);
111 green_shade = (int) (green_shade * 0.75);
112 blue_shade = (int) (blue_shade * 0.75);
113 colorPalette[i][k] = (Color.rgb(red_shade, green_shade, blue_shade));
114 }
115 for (int k = 4; k < 7; k++) {
116 red_tint = (int) (red_tint + (255 - red_tint) * 0.45);
117 green_tint = (int) (green_tint + (255 - green_tint) * 0.45);
118 blue_tint = (int) (blue_tint + (255 - blue_tint) * 0.45);
119 colorPalette[i][k] = (Color.rgb(red_tint, green_tint, blue_tint));
120 }
121 }
122 colorPalette[i][7] = Color.WHITE; // last one is always white
123 }
124 colorPaletteAdapter.setColorPalette(colorPalette);
125 }
126
127 public void findSelectedTextColor(int color) {
128 // try to find and highlight the color in the existing palettes
129 for (int i = 0; i < 11; i++) {
130 for (int k = 0; k < 8; k++) {
131 if (colorPalette[i][k] == color) {
132 colorPaletteAdapter.changePosition(i, k);
133 updateAdapter();
134 return;
135 }
136 }
137 }
138
139 // no color in the palettes matched
140 unselectColors();
141 }
142
143 private void updateAdapter(){
144 LOKitShell.getMainHandler().post(new Runnable() {
145 @Override
146 public void run() {
147 ColorPickerAdapter.this.notifyDataSetChanged();
148 }
149 });
150
151 }
152
153 class ColorPickerViewHolder extends RecyclerView.ViewHolder {
154
155 ImageButton colorBox;
156
157 public ColorPickerViewHolder(View itemView) {
158 super(itemView);
159 this.colorBox = itemView.findViewById(R.id.fontColorBox);
160 }
161 }
162}
void unselectColors()
Switches to first palette, but doesn't mark any color as selected.
void selectSubColor(int position1, int position2)
ColorPickerAdapter(Context mContext, final ColorPaletteAdapter colorPaletteAdapter, ColorPaletteListener colorPaletteListener)
final ColorPaletteListener colorPaletteListener
void onBindViewHolder(final ColorPickerViewHolder holder, int position)
final ColorPaletteAdapter colorPaletteAdapter
ColorPickerViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
Common static LOKit functions, functions to send events.
Definition: LOKitShell.java:26
static Handler getMainHandler()
Definition: LOKitShell.java:36
def position(n=-1)
def run(arg=None, arg2=-1)
int i
const wchar_t *typedef int(__stdcall *DllNativeUnregProc)(int
const sal_uInt8 R