LibreOffice Module android (master) 1
ColorPaletteAdapter.java
Go to the documentation of this file.
1package org.libreoffice;
2
3import android.content.Context;
4import androidx.recyclerview.widget.RecyclerView;
5import android.view.LayoutInflater;
6import android.view.View;
7import android.view.ViewGroup;
8import android.view.animation.Animation;
9import android.view.animation.AnimationUtils;
10import android.widget.ImageButton;
11
12
13public class ColorPaletteAdapter extends RecyclerView.Adapter<ColorPaletteAdapter.ColorPaletteViewHolder> {
14
15 private int[][] color_palette;
16 private final Context mContext;
17 private int upperSelectedBox = -1;
18 private int selectedBox = 0;
19 private boolean animate;
21
23 this.mContext = mContext;
24 this.color_palette = new int[11][8];
25 this.colorPaletteListener = colorPaletteListener;
26 }
27
28 @Override
29 public ColorPaletteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
30 View item = LayoutInflater.from(mContext).inflate(R.layout.colorbox, parent, false);
31 return new ColorPaletteViewHolder(item);
32 }
33
34
35 public int getSelectedBox() {
36 return selectedBox;
37 }
38
39 public int getUpperSelectedBox() {
40 return upperSelectedBox;
41 }
42
43 @Override
44 public void onBindViewHolder(final ColorPaletteViewHolder holder, int position) {
45
46 holder.colorBox.setBackgroundColor(color_palette[upperSelectedBox][position]);
47 if (selectedBox == position) {
48 holder.colorBox.setImageResource(R.drawable.ic_done_all_white_12dp);
49 } else {
50 holder.colorBox.setImageDrawable(null);
51 }
52
53 holder.colorBox.setOnClickListener(new View.OnClickListener() {
54 @Override
55 public void onClick(View view) {
56 LibreOfficeMainActivity.setDocumentChanged(true);
57 setPosition(holder.getAdapterPosition());
58 }
59 });
60 if (animate) //it will only animate when the upper color box is selected
61 setAnimation(holder.colorBox);
62
63 }
64
65 private void setAnimation(View viewToAnimate) {
66 Animation animation = AnimationUtils.loadAnimation(mContext, android.R.anim.fade_in);
67 viewToAnimate.startAnimation(animation);
68 }
69
70 @Override
71 public int getItemCount() {
72 return color_palette[0].length;
73 }
74
75 private void setPosition(int position) {
76 this.selectedBox = position;
77 colorPaletteListener.applyColor(color_palette[upperSelectedBox][position]);
78 animate = false;
79 updateAdapter();
80 }
81
82 public void setPosition(int upperSelectedBox, int position) {
83 if (this.upperSelectedBox != upperSelectedBox) {
84 this.upperSelectedBox = upperSelectedBox;
85 this.selectedBox = position;
86 colorPaletteListener.applyColor(color_palette[upperSelectedBox][position]);
87 animate = true;
88 updateAdapter();
89 }
90 }
91
92 /*
93 this is for InvalidationHandler when .uno:FontColor is captured
94 */
95 public void changePosition(int upperSelectedBox, int position) {
96 if(this.upperSelectedBox != upperSelectedBox){
97 this.upperSelectedBox = upperSelectedBox;
98 animate=true;
99 }
100
101 this.selectedBox = position;
102
103 updateAdapter();
104
105 }
106
107 public void setColorPalette(int[][] color_palette) {
108 this.color_palette = color_palette;
109 this.upperSelectedBox = 0;
110 this.selectedBox = 0;
111 }
112
113 private void updateAdapter(){
114
115 LOKitShell.getMainHandler().post(new Runnable() {
116 @Override
117 public void run() {
118 ColorPaletteAdapter.this.notifyDataSetChanged();
119 }
120 });
121 }
122
123
124 class ColorPaletteViewHolder extends RecyclerView.ViewHolder {
125
126 ImageButton colorBox;
127
128 public ColorPaletteViewHolder(View itemView) {
129 super(itemView);
130 colorBox = itemView.findViewById(R.id.fontColorBox);
131 }
132 }
133
134
135}
void onBindViewHolder(final ColorPaletteViewHolder holder, int position)
void setColorPalette(int[][] color_palette)
ColorPaletteViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
final ColorPaletteListener colorPaletteListener
void changePosition(int upperSelectedBox, int position)
ColorPaletteAdapter(Context mContext, ColorPaletteListener colorPaletteListener)
void setPosition(int upperSelectedBox, int position)
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)
const sal_uInt8 R