4package org.qtproject.qt.android;
7import android.annotation.SuppressLint;
8import android.content.Context;
9import android.graphics.Point;
10import android.text.TextUtils;
11import android.view.Gravity;
12import android.view.View;
13import android.view.ViewGroup;
14import android.widget.LinearLayout;
15import android.widget.TextView;
17import java.util.HashMap;
19@SuppressLint(
"ViewConstructor")
20class EditContextView extends LinearLayout implements
View.OnClickListener
22 public static final int CUT_BUTTON = 1;
23 public static final int COPY_BUTTON = 1 << 1;
24 public static final int PASTE_BUTTON = 1 << 2;
25 public static final int SELECT_ALL_BUTTON = 1 << 3;
27 HashMap<Integer, ContextButton>
m_buttons =
new HashMap<>(4);
28 OnClickListener m_onClickListener;
35 private class ContextButton
extends TextView
37 public int m_buttonId;
38 public ContextButton(Context
context,
int stringId) {
40 m_buttonId = stringId;
42 setLayoutParams(
new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
43 ViewGroup.LayoutParams.WRAP_CONTENT, 1));
44 setGravity(Gravity.CENTER);
45 setTextColor(getResources().getColor(
46 android.R.color.widget_edittext_dark,
context.getTheme()));
47 EditContextView.this.setBackground(getResources().getDrawable(
48 android.R.drawable.editbox_background_normal,
context.getTheme()));
49 float scale = getResources().getDisplayMetrics().density;
50 int hPadding = (int)(16 *
scale + 0.5
f);
51 int vPadding = (int)(8 *
scale + 0.5
f);
52 setPadding(hPadding, vPadding, hPadding, vPadding);
54 setEllipsize(TextUtils.TruncateAt.END);
55 setOnClickListener(EditContextView.this);
60 public void onClick(View
v)
62 ContextButton
button = (ContextButton)
v;
63 m_onClickListener.contextButtonClicked(
button.m_buttonId);
66 void addButton(
int id)
68 ContextButton
button =
new ContextButton(getContext(),
id);
73 public void updateButtons(
int buttonsLayout)
77 button.setVisibility((buttonsLayout & CUT_BUTTON) != 0 ? View.VISIBLE : View.GONE);
81 button.setVisibility((buttonsLayout & COPY_BUTTON) != 0 ? View.VISIBLE : View.GONE);
85 button.setVisibility((buttonsLayout & PASTE_BUTTON) != 0 ? View.VISIBLE : View.GONE);
89 button.setVisibility((buttonsLayout & SELECT_ALL_BUTTON) != 0 ? View.VISIBLE : View.GONE);
92 public Point getCalculatedSize()
96 if (
b.getVisibility() ==
View.VISIBLE) {
98 size.x +=
b.getMeasuredWidth();
99 size.y = Math.max(
size.y,
b.getMeasuredHeight());
103 size.x += getPaddingLeft() + getPaddingRight();
104 size.y += getPaddingTop() + getPaddingBottom();
109 public EditContextView(Context
context, OnClickListener onClickListener) {
111 m_onClickListener = onClickListener;
112 setLayoutParams(
new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
114 addButton(android.R.string.cut);
115 addButton(android.R.string.copy);
116 addButton(android.R.string.paste);
117 addButton(android.R.string.selectAll);
void contextButtonClicked(int buttonId)
Qt::MouseButtons m_buttons
GLenum GLsizei GLsizei GLint * values
[15]
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLenum GLenum GLenum GLenum scale
insertRed setText("insert red text")