diff options
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/EditContextView.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/EditContextView.java | 76 |
1 files changed, 54 insertions, 22 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/EditContextView.java b/src/android/jar/src/org/qtproject/qt/android/EditContextView.java index 54b6c14137..fc34b41e94 100644 --- a/src/android/jar/src/org/qtproject/qt/android/EditContextView.java +++ b/src/android/jar/src/org/qtproject/qt/android/EditContextView.java @@ -4,44 +4,48 @@ package org.qtproject.qt.android; +import android.annotation.SuppressLint; import android.content.Context; +import android.graphics.Point; import android.text.TextUtils; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; -import android.R; import java.util.HashMap; -public class EditContextView extends LinearLayout implements View.OnClickListener +@SuppressLint("ViewConstructor") +class EditContextView extends LinearLayout implements View.OnClickListener { - public static final int CUT_BUTTON = 1 << 0; - public static final int COPY_BUTTON = 1 << 1; - public static final int PASTE_BUTTON = 1 << 2; - public static final int SALL_BUTTON = 1 << 3; + static final int CUT_BUTTON = 1; + static final int COPY_BUTTON = 1 << 1; + static final int PASTE_BUTTON = 1 << 2; + static final int SELECT_ALL_BUTTON = 1 << 3; - HashMap<Integer, ContextButton> m_buttons = new HashMap<Integer, ContextButton>(4); + HashMap<Integer, ContextButton> m_buttons = new HashMap<>(4); OnClickListener m_onClickListener; - public interface OnClickListener + interface OnClickListener { void contextButtonClicked(int buttonId); } private class ContextButton extends TextView { - public int m_buttonId; - public ContextButton(Context context, int stringId) { + int m_buttonId; + ContextButton(Context context, int stringId) { super(context); m_buttonId = stringId; setText(stringId); setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1)); setGravity(Gravity.CENTER); - setTextColor(getResources().getColor(R.color.widget_edittext_dark)); - EditContextView.this.setBackground(getResources().getDrawable(R.drawable.editbox_background_normal)); + setTextColor(getResources().getColor( + android.R.color.widget_edittext_dark, context.getTheme())); + EditContextView.this.setBackground(getResources().getDrawable( + android.R.drawable.editbox_background_normal, context.getTheme())); float scale = getResources().getDisplayMetrics().density; int hPadding = (int)(16 * scale + 0.5f); int vPadding = (int)(8 * scale + 0.5f); @@ -66,22 +70,50 @@ public class EditContextView extends LinearLayout implements View.OnClickListene addView(button); } - public void updateButtons(int buttonsLayout) + void updateButtons(int buttonsLayout) { - m_buttons.get(R.string.cut).setVisibility((buttonsLayout & CUT_BUTTON) != 0 ? View.VISIBLE : View.GONE); - m_buttons.get(R.string.copy).setVisibility((buttonsLayout & COPY_BUTTON) != 0 ? View.VISIBLE : View.GONE); - m_buttons.get(R.string.paste).setVisibility((buttonsLayout & PASTE_BUTTON) != 0 ? View.VISIBLE : View.GONE); - m_buttons.get(R.string.selectAll).setVisibility((buttonsLayout & SALL_BUTTON) != 0 ? View.VISIBLE : View.GONE); + ContextButton button = m_buttons.get(android.R.string.cut); + if (button != null) + button.setVisibility((buttonsLayout & CUT_BUTTON) != 0 ? View.VISIBLE : View.GONE); + + button = m_buttons.get(android.R.string.copy); + if (button != null) + button.setVisibility((buttonsLayout & COPY_BUTTON) != 0 ? View.VISIBLE : View.GONE); + + button = m_buttons.get(android.R.string.paste); + if (button != null) + button.setVisibility((buttonsLayout & PASTE_BUTTON) != 0 ? View.VISIBLE : View.GONE); + + button = m_buttons.get(android.R.string.selectAll); + if (button != null) + button.setVisibility((buttonsLayout & SELECT_ALL_BUTTON) != 0 ? View.VISIBLE : View.GONE); + } + + Point getCalculatedSize() + { + Point size = new Point(0, 0); + for (ContextButton b : m_buttons.values()) { + if (b.getVisibility() == View.VISIBLE) { + b.measure(0, 0); + size.x += b.getMeasuredWidth(); + size.y = Math.max(size.y, b.getMeasuredHeight()); + } + } + + size.x += getPaddingLeft() + getPaddingRight(); + size.y += getPaddingTop() + getPaddingBottom(); + + return size; } - public EditContextView(Context context, OnClickListener onClickListener) { + EditContextView(Context context, OnClickListener onClickListener) { super(context); m_onClickListener = onClickListener; setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); - addButton(R.string.cut); - addButton(R.string.copy); - addButton(R.string.paste); - addButton(R.string.selectAll); + addButton(android.R.string.cut); + addButton(android.R.string.copy); + addButton(android.R.string.paste); + addButton(android.R.string.selectAll); } } |