Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
EditContextView.java
Go to the documentation of this file.
1// Copyright (C) 2018 BogDan Vatra <bogdan@kde.org>
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4package org.qtproject.qt.android;
5
6
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;
16
17import java.util.HashMap;
18
19@SuppressLint("ViewConstructor")
20class EditContextView extends LinearLayout implements View.OnClickListener
21{
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;
26
27 HashMap<Integer, ContextButton> m_buttons = new HashMap<>(4);
28 OnClickListener m_onClickListener;
29
30 public interface OnClickListener
31 {
32 void contextButtonClicked(int buttonId);
33 }
34
35 private class ContextButton extends TextView
36 {
37 public int m_buttonId;
38 public ContextButton(Context context, int stringId) {
39 super(context);
40 m_buttonId = stringId;
41 setText(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.5f);
51 int vPadding = (int)(8 * scale + 0.5f);
52 setPadding(hPadding, vPadding, hPadding, vPadding);
53 setSingleLine();
54 setEllipsize(TextUtils.TruncateAt.END);
55 setOnClickListener(EditContextView.this);
56 }
57 }
58
59 @Override
60 public void onClick(View v)
61 {
62 ContextButton button = (ContextButton)v;
63 m_onClickListener.contextButtonClicked(button.m_buttonId);
64 }
65
66 void addButton(int id)
67 {
68 ContextButton button = new ContextButton(getContext(), id);
69 m_buttons.put(id, button);
70 addView(button);
71 }
72
73 public void updateButtons(int buttonsLayout)
74 {
75 ContextButton button = m_buttons.get(android.R.string.cut);
76 if (button != null)
77 button.setVisibility((buttonsLayout & CUT_BUTTON) != 0 ? View.VISIBLE : View.GONE);
78
79 button = m_buttons.get(android.R.string.copy);
80 if (button != null)
81 button.setVisibility((buttonsLayout & COPY_BUTTON) != 0 ? View.VISIBLE : View.GONE);
82
83 button = m_buttons.get(android.R.string.paste);
84 if (button != null)
85 button.setVisibility((buttonsLayout & PASTE_BUTTON) != 0 ? View.VISIBLE : View.GONE);
86
87 button = m_buttons.get(android.R.string.selectAll);
88 if (button != null)
89 button.setVisibility((buttonsLayout & SELECT_ALL_BUTTON) != 0 ? View.VISIBLE : View.GONE);
90 }
91
92 public Point getCalculatedSize()
93 {
94 Point size = new Point(0, 0);
95 for (ContextButton b : m_buttons.values()) {
96 if (b.getVisibility() == View.VISIBLE) {
97 b.measure(0, 0);
98 size.x += b.getMeasuredWidth();
99 size.y = Math.max(size.y, b.getMeasuredHeight());
100 }
101 }
102
103 size.x += getPaddingLeft() + getPaddingRight();
104 size.y += getPaddingTop() + getPaddingBottom();
105
106 return size;
107 }
108
109 public EditContextView(Context context, OnClickListener onClickListener) {
110 super(context);
111 m_onClickListener = onClickListener;
112 setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
113
114 addButton(android.R.string.cut);
115 addButton(android.R.string.copy);
116 addButton(android.R.string.paste);
117 addButton(android.R.string.selectAll);
118 }
119}
QPushButton * button
[2]
static void * context
Qt::MouseButtons m_buttons
Definition qnsview.mm:102
GLenum GLsizei GLsizei GLint * values
[15]
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLfloat GLfloat f
GLenum GLenum GLenum GLenum GLenum scale
insertRed setText("insert red text")
Definition parser.h:19