mirror of https://github.com/NekoX-Dev/NekoX.git
at by id
This commit is contained in:
parent
2299a7a250
commit
f09d8a39fe
|
@ -696,6 +696,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
|||
private final static int text_mono = 52;
|
||||
private final static int text_link = 53;
|
||||
private final static int text_regular = 54;
|
||||
private final static int text_mention = 55;
|
||||
|
||||
private final static int search = 40;
|
||||
|
||||
|
@ -1340,6 +1341,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
|||
chatActivityEnterView.getEditField().setSelectionOverride(editTextStart, editTextEnd);
|
||||
chatActivityEnterView.getEditField().makeSelectedUrl();
|
||||
}
|
||||
} else if (id == text_mention) {
|
||||
if (chatActivityEnterView != null) {
|
||||
chatActivityEnterView.getEditField().setSelectionOverride(editTextStart, editTextEnd);
|
||||
chatActivityEnterView.getEditField().makeSelectedMention();
|
||||
}
|
||||
} else if (id == text_regular) {
|
||||
if (chatActivityEnterView != null) {
|
||||
chatActivityEnterView.getEditField().setSelectionOverride(editTextStart, editTextEnd);
|
||||
|
@ -1499,6 +1505,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
|||
stringBuilder.setSpan(new TypefaceSpan(Typeface.MONOSPACE), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
editTextItem.addSubItem(text_mono, stringBuilder);
|
||||
editTextItem.addSubItem(text_link, LocaleController.getString("CreateLink", R.string.CreateLink));
|
||||
editTextItem.addSubItem(text_mention, LocaleController.getString("CreateMention", R.string.CreateMention));
|
||||
editTextItem.addSubItem(text_regular, LocaleController.getString("Regular", R.string.Regular));
|
||||
|
||||
if (searchItem != null) {
|
||||
|
@ -10705,7 +10712,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
|||
stringBuilder.setSpan(new TypefaceSpan(Typeface.MONOSPACE), 0, stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
menu.add(R.id.menu_groupbolditalic, R.id.menu_mono, 8, stringBuilder);
|
||||
menu.add(R.id.menu_groupbolditalic, R.id.menu_link, 9, LocaleController.getString("CreateLink", R.string.CreateLink));
|
||||
menu.add(R.id.menu_groupbolditalic, R.id.menu_regular, 10, LocaleController.getString("Regular", R.string.Regular));
|
||||
menu.add(R.id.menu_groupbolditalic, R.id.menu_mention, 10, LocaleController.getString("CreateMention", R.string.CreateMention));
|
||||
menu.add(R.id.menu_groupbolditalic, R.id.menu_regular, 11, LocaleController.getString("Regular", R.string.Regular));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -88,6 +88,87 @@ public class EditTextCaption extends EditTextBoldCursor {
|
|||
applyTextStyleToSelection(new TypefaceSpan(Typeface.MONOSPACE));
|
||||
}
|
||||
|
||||
|
||||
public void makeSelectedMention() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||
builder.setTitle(LocaleController.getString("CreateMention", R.string.CreateMention));
|
||||
|
||||
final EditTextBoldCursor editText = new EditTextBoldCursor(getContext()) {
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(64), MeasureSpec.EXACTLY));
|
||||
}
|
||||
};
|
||||
editText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
|
||||
editText.setTextColor(Theme.getColor(Theme.key_dialogTextBlack));
|
||||
editText.setHintText("ID");
|
||||
editText.setHeaderHintColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlueHeader));
|
||||
editText.setSingleLine(true);
|
||||
editText.setFocusable(true);
|
||||
editText.setTransformHintToHeader(true);
|
||||
editText.setLineColors(Theme.getColor(Theme.key_windowBackgroundWhiteInputField), Theme.getColor(Theme.key_windowBackgroundWhiteInputFieldActivated), Theme.getColor(Theme.key_windowBackgroundWhiteRedText3));
|
||||
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
|
||||
editText.setBackgroundDrawable(null);
|
||||
editText.requestFocus();
|
||||
editText.setPadding(0, 0, 0, 0);
|
||||
builder.setView(editText);
|
||||
|
||||
final int start;
|
||||
final int end;
|
||||
if (selectionStart >= 0 && selectionEnd >= 0) {
|
||||
start = selectionStart;
|
||||
end = selectionEnd;
|
||||
selectionStart = selectionEnd = -1;
|
||||
} else {
|
||||
start = getSelectionStart();
|
||||
end = getSelectionEnd();
|
||||
}
|
||||
|
||||
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), (dialogInterface, i) -> {
|
||||
Editable editable = getText();
|
||||
CharacterStyle spans[] = editable.getSpans(start, end, CharacterStyle.class);
|
||||
if (spans != null && spans.length > 0) {
|
||||
for (int a = 0; a < spans.length; a++) {
|
||||
CharacterStyle oldSpan = spans[a];
|
||||
int spanStart = editable.getSpanStart(oldSpan);
|
||||
int spanEnd = editable.getSpanEnd(oldSpan);
|
||||
editable.removeSpan(oldSpan);
|
||||
if (spanStart < start) {
|
||||
editable.setSpan(oldSpan, spanStart, start, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
if (spanEnd > end) {
|
||||
editable.setSpan(oldSpan, end, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
try {
|
||||
editable.setSpan(new URLSpanUserMention(editText.getText().toString(), 1), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
} catch (Exception ignore) {
|
||||
|
||||
}
|
||||
if (delegate != null) {
|
||||
delegate.onSpansChanged();
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
|
||||
builder.show().setOnShowListener(dialog -> {
|
||||
editText.requestFocus();
|
||||
AndroidUtilities.showKeyboard(editText);
|
||||
});
|
||||
if (editText != null) {
|
||||
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) editText.getLayoutParams();
|
||||
if (layoutParams != null) {
|
||||
if (layoutParams instanceof FrameLayout.LayoutParams) {
|
||||
((FrameLayout.LayoutParams) layoutParams).gravity = Gravity.CENTER_HORIZONTAL;
|
||||
}
|
||||
layoutParams.rightMargin = layoutParams.leftMargin = AndroidUtilities.dp(24);
|
||||
layoutParams.height = AndroidUtilities.dp(36);
|
||||
editText.setLayoutParams(layoutParams);
|
||||
}
|
||||
editText.setSelection(0, editText.getText().length());
|
||||
}
|
||||
}
|
||||
|
||||
public void makeSelectedUrl() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||
builder.setTitle(LocaleController.getString("CreateLink", R.string.CreateLink));
|
||||
|
@ -257,6 +338,10 @@ public class EditTextCaption extends EditTextBoldCursor {
|
|||
makeSelectedUrl();
|
||||
mode.finish();
|
||||
return true;
|
||||
} else if (item.getItemId() == R.id.menu_mention) {
|
||||
makeSelectedMention();
|
||||
mode.finish();
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
return callback.onActionItemClicked(mode, item);
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<item name="menu_regular" type="id"/>
|
||||
<item name="menu_bold" type="id"/>
|
||||
<item name="menu_italic" type="id"/>
|
||||
<item name="menu_mention" type="id"/>
|
||||
<item name="menu_link" type="id"/>
|
||||
<item name="menu_mono" type="id"/>
|
||||
<item name="menu_groupbolditalic" type="id"/>
|
||||
|
|
Loading…
Reference in New Issue