NekoX/TMessagesProj/src/main/java/org/telegram/ui/Components/PhotoViewerCaptionEnterView...

719 lines
25 KiB
Java
Raw Normal View History

/*
2015-10-29 18:10:07 +01:00
* This is the source code of Telegram for Android v. 3.x.x
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
2017-03-31 01:58:05 +02:00
* Copyright Nikolai Kudashov, 2013-2017.
*/
package org.telegram.ui.Components;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
2018-07-30 04:07:02 +02:00
import android.annotation.SuppressLint;
import android.content.Context;
2016-04-22 15:49:00 +02:00
import android.os.Build;
import android.text.Editable;
import android.text.InputFilter;
2017-12-08 18:35:59 +01:00
import android.text.SpannableStringBuilder;
import android.text.TextWatcher;
import android.text.style.ImageSpan;
import android.util.TypedValue;
2016-04-22 15:49:00 +02:00
import android.view.ActionMode;
import android.view.Gravity;
import android.view.KeyEvent;
2016-04-22 15:49:00 +02:00
import android.view.Menu;
import android.view.MenuItem;
2017-03-31 01:58:05 +02:00
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
2015-06-29 19:12:11 +02:00
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
2015-09-24 22:52:02 +02:00
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.Emoji;
import org.telegram.messenger.LocaleController;
2018-07-30 04:07:02 +02:00
import org.telegram.messenger.MessagesController;
2015-09-24 22:52:02 +02:00
import org.telegram.messenger.NotificationCenter;
import org.telegram.messenger.FileLog;
import org.telegram.messenger.R;
2018-07-30 04:07:02 +02:00
import org.telegram.messenger.UserConfig;
2015-09-24 22:52:02 +02:00
import org.telegram.tgnet.TLRPC;
2017-03-31 01:58:05 +02:00
import org.telegram.ui.ActionBar.Theme;
2016-04-22 15:49:00 +02:00
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class PhotoViewerCaptionEnterView extends FrameLayout implements NotificationCenter.NotificationCenterDelegate, SizeNotifierFrameLayoutPhoto.SizeNotifierFrameLayoutPhotoDelegate {
public interface PhotoViewerCaptionEnterViewDelegate {
void onCaptionEnter();
2015-06-29 19:12:11 +02:00
void onTextChanged(CharSequence text);
void onWindowSizeChanged(int size);
}
2018-07-30 04:07:02 +02:00
private EditTextCaption messageEditText;
private ImageView emojiButton;
private EmojiView emojiView;
2015-06-29 19:12:11 +02:00
private SizeNotifierFrameLayoutPhoto sizeNotifierLayout;
2016-04-22 15:49:00 +02:00
private ActionMode currentActionMode;
private AnimatorSet runningAnimation;
private AnimatorSet runningAnimation2;
private ObjectAnimator runningAnimationAudio;
private int runningAnimationType;
private int audioInterfaceState;
2015-06-29 19:12:11 +02:00
private int lastSizeChangeValue1;
private boolean lastSizeChangeValue2;
private int keyboardHeight;
private int keyboardHeightLand;
private boolean keyboardVisible;
2015-06-29 19:12:11 +02:00
private int emojiPadding;
2017-03-31 01:58:05 +02:00
private boolean forceFloatingEmoji;
2015-07-22 20:56:37 +02:00
private boolean innerTextChange;
2018-07-30 04:07:02 +02:00
private int captionMaxLength = 200;
2016-10-11 13:57:01 +02:00
private PhotoViewerCaptionEnterViewDelegate delegate;
2016-04-22 15:49:00 +02:00
private View windowView;
public PhotoViewerCaptionEnterView(Context context, SizeNotifierFrameLayoutPhoto parent, final View window) {
super(context);
setBackgroundColor(0x7f000000);
setFocusable(true);
setFocusableInTouchMode(true);
2016-04-22 15:49:00 +02:00
windowView = window;
2015-06-29 19:12:11 +02:00
sizeNotifierLayout = parent;
LinearLayout textFieldContainer = new LinearLayout(context);
textFieldContainer.setOrientation(LinearLayout.HORIZONTAL);
addView(textFieldContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 2, 0, 0, 0));
FrameLayout frameLayout = new FrameLayout(context);
textFieldContainer.addView(frameLayout, LayoutHelper.createLinear(0, LayoutHelper.WRAP_CONTENT, 1.0f));
emojiButton = new ImageView(context);
emojiButton.setImageResource(R.drawable.ic_smile_w);
emojiButton.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
emojiButton.setPadding(AndroidUtilities.dp(4), AndroidUtilities.dp(1), 0, 0);
frameLayout.addView(emojiButton, LayoutHelper.createFrame(48, 48, Gravity.BOTTOM | Gravity.LEFT));
emojiButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
2015-06-29 19:12:11 +02:00
if (!isPopupShowing()) {
showPopup(1);
} else {
2015-06-29 19:12:11 +02:00
openKeyboardInternal();
}
}
});
2018-07-30 04:07:02 +02:00
messageEditText = new EditTextCaption(context) {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
try {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
} catch (Exception e) {
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), AndroidUtilities.dp(51));
2017-03-31 01:58:05 +02:00
FileLog.e(e);
}
}
};
2016-10-11 13:57:01 +02:00
if (Build.VERSION.SDK_INT >= 23 && windowView != null) {
2016-04-22 15:49:00 +02:00
messageEditText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
currentActionMode = mode;
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
if (Build.VERSION.SDK_INT >= 23) {
fixActionMode(mode);
}
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
if (currentActionMode == mode) {
currentActionMode = null;
}
}
});
messageEditText.setCustomInsertionActionModeCallback(new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
currentActionMode = mode;
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
if (Build.VERSION.SDK_INT >= 23) {
fixActionMode(mode);
}
return true;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
if (currentActionMode == mode) {
currentActionMode = null;
}
}
});
}
messageEditText.setHint(LocaleController.getString("AddCaption", R.string.AddCaption));
2016-03-06 02:49:31 +01:00
messageEditText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
messageEditText.setInputType(messageEditText.getInputType() | EditorInfo.TYPE_TEXT_FLAG_CAP_SENTENCES);
messageEditText.setMaxLines(4);
2015-06-29 19:12:11 +02:00
messageEditText.setHorizontallyScrolling(false);
messageEditText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
messageEditText.setGravity(Gravity.BOTTOM);
messageEditText.setPadding(0, AndroidUtilities.dp(11), 0, AndroidUtilities.dp(12));
messageEditText.setBackgroundDrawable(null);
2017-12-08 18:35:59 +01:00
messageEditText.setCursorColor(0xffffffff);
messageEditText.setCursorSize(AndroidUtilities.dp(20));
messageEditText.setTextColor(0xffffffff);
messageEditText.setHintTextColor(0xb2ffffff);
InputFilter[] inputFilters = new InputFilter[1];
2016-10-11 13:57:01 +02:00
inputFilters[0] = new InputFilter.LengthFilter(captionMaxLength);
messageEditText.setFilters(inputFilters);
frameLayout.addView(messageEditText, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.BOTTOM, 52, 0, 6, 0));
messageEditText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
2016-04-22 15:49:00 +02:00
if (i == KeyEvent.KEYCODE_BACK) {
2016-10-11 13:57:01 +02:00
if (windowView != null && hideActionMode()) {
2016-04-22 15:49:00 +02:00
return true;
} else if (!keyboardVisible && isPopupShowing()) {
if (keyEvent.getAction() == 1) {
showPopup(0);
}
return true;
}
}
return false;
}
});
messageEditText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
2015-06-29 19:12:11 +02:00
if (isPopupShowing()) {
showPopup(AndroidUtilities.usingHardwareInput ? 0 : 2);
}
}
});
messageEditText.addTextChangedListener(new TextWatcher() {
2015-07-22 20:56:37 +02:00
boolean processChange = false;
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
2015-07-22 20:56:37 +02:00
if (innerTextChange) {
return;
}
if (delegate != null) {
2015-06-29 19:12:11 +02:00
delegate.onTextChanged(charSequence);
}
2015-07-22 20:56:37 +02:00
if (before != count && (count - before) > 1) {
processChange = true;
}
}
@Override
public void afterTextChanged(Editable editable) {
2015-07-22 20:56:37 +02:00
if (innerTextChange) {
return;
}
if (processChange) {
ImageSpan[] spans = editable.getSpans(0, editable.length(), ImageSpan.class);
for (int i = 0; i < spans.length; i++) {
editable.removeSpan(spans[i]);
}
2015-07-22 20:56:37 +02:00
Emoji.replaceEmoji(editable, messageEditText.getPaint().getFontMetricsInt(), AndroidUtilities.dp(20), false);
processChange = false;
}
}
});
2017-03-31 01:58:05 +02:00
ImageView doneButton = new ImageView(context);
doneButton.setScaleType(ImageView.ScaleType.CENTER);
doneButton.setImageResource(R.drawable.ic_done);
textFieldContainer.addView(doneButton, LayoutHelper.createLinear(48, 48, Gravity.BOTTOM));
if (Build.VERSION.SDK_INT >= 21) {
doneButton.setBackgroundDrawable(Theme.createSelectorDrawable(Theme.ACTION_BAR_WHITE_SELECTOR_COLOR));
}
doneButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
delegate.onCaptionEnter();
}
});
}
public void setForceFloatingEmoji(boolean value) {
forceFloatingEmoji = value;
}
2016-04-22 15:49:00 +02:00
public boolean hideActionMode() {
if (Build.VERSION.SDK_INT >= 23 && currentActionMode != null) {
2016-10-11 13:57:01 +02:00
try {
currentActionMode.finish();
} catch (Exception e) {
2017-03-31 01:58:05 +02:00
FileLog.e(e);
2016-10-11 13:57:01 +02:00
}
2016-04-22 15:49:00 +02:00
currentActionMode = null;
return true;
}
return false;
}
2018-07-30 04:07:02 +02:00
@SuppressLint("PrivateApi")
2016-04-22 15:49:00 +02:00
@SuppressWarnings("unchecked")
private void fixActionMode(ActionMode mode) {
try {
Class classActionMode = Class.forName("com.android.internal.view.FloatingActionMode");
Field fieldToolbar = classActionMode.getDeclaredField("mFloatingToolbar");
fieldToolbar.setAccessible(true);
Object toolbar = fieldToolbar.get(mode);
Class classToolbar = Class.forName("com.android.internal.widget.FloatingToolbar");
Field fieldToolbarPopup = classToolbar.getDeclaredField("mPopup");
Field fieldToolbarWidth = classToolbar.getDeclaredField("mWidthChanged");
fieldToolbarPopup.setAccessible(true);
fieldToolbarWidth.setAccessible(true);
Object popup = fieldToolbarPopup.get(toolbar);
Class classToolbarPopup = Class.forName("com.android.internal.widget.FloatingToolbar$FloatingToolbarPopup");
Field fieldToolbarPopupParent = classToolbarPopup.getDeclaredField("mParent");
fieldToolbarPopupParent.setAccessible(true);
View currentView = (View) fieldToolbarPopupParent.get(popup);
if (currentView != windowView) {
fieldToolbarPopupParent.set(popup, windowView);
Method method = classActionMode.getDeclaredMethod("updateViewLocationInWindow");
method.setAccessible(true);
method.invoke(mode);
}
} catch (Throwable e) {
2017-03-31 01:58:05 +02:00
FileLog.e(e);
2016-04-22 15:49:00 +02:00
}
}
2015-06-29 19:12:11 +02:00
private void onWindowSizeChanged() {
int size = sizeNotifierLayout.getHeight();
if (!keyboardVisible) {
size -= emojiPadding;
}
if (delegate != null) {
delegate.onWindowSizeChanged(size);
}
}
public void onCreate() {
2018-07-30 04:07:02 +02:00
NotificationCenter.getGlobalInstance().addObserver(this, NotificationCenter.emojiDidLoaded);
2015-06-29 19:12:11 +02:00
sizeNotifierLayout.setDelegate(this);
}
public void onDestroy() {
2015-06-29 19:12:11 +02:00
hidePopup();
if (isKeyboardVisible()) {
closeKeyboard();
}
keyboardVisible = false;
2018-07-30 04:07:02 +02:00
NotificationCenter.getGlobalInstance().removeObserver(this, NotificationCenter.emojiDidLoaded);
2015-06-29 19:12:11 +02:00
if (sizeNotifierLayout != null) {
sizeNotifierLayout.setDelegate(null);
}
}
public void setDelegate(PhotoViewerCaptionEnterViewDelegate delegate) {
this.delegate = delegate;
}
public void setFieldText(CharSequence text) {
if (messageEditText == null) {
return;
}
messageEditText.setText(text);
messageEditText.setSelection(messageEditText.getText().length());
if (delegate != null) {
2015-06-29 19:12:11 +02:00
delegate.onTextChanged(messageEditText.getText());
}
2018-07-30 04:07:02 +02:00
int old = captionMaxLength;
captionMaxLength = MessagesController.getInstance(UserConfig.selectedAccount).maxCaptionLength;
if (old != captionMaxLength) {
InputFilter[] inputFilters = new InputFilter[1];
inputFilters[0] = new InputFilter.LengthFilter(captionMaxLength);
messageEditText.setFilters(inputFilters);
}
}
public int getSelectionLength() {
if (messageEditText == null) {
return 0;
}
try {
return messageEditText.getSelectionEnd() - messageEditText.getSelectionStart();
} catch (Exception e) {
FileLog.e(e);
}
return 0;
}
public int getCursorPosition() {
if (messageEditText == null) {
return 0;
}
return messageEditText.getSelectionStart();
}
2017-12-08 18:35:59 +01:00
private void createEmojiView() {
if (emojiView != null) {
return;
}
emojiView = new EmojiView(false, false, getContext(), null);
emojiView.setListener(new EmojiView.Listener() {
2018-07-30 04:07:02 +02:00
@Override
2017-12-08 18:35:59 +01:00
public boolean onBackspace() {
if (messageEditText.length() == 0) {
return false;
}
messageEditText.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));
return true;
}
2018-07-30 04:07:02 +02:00
@Override
2017-12-08 18:35:59 +01:00
public void onEmojiSelected(String symbol) {
if (messageEditText.length() + symbol.length() > captionMaxLength) {
return;
}
int i = messageEditText.getSelectionEnd();
if (i < 0) {
i = 0;
}
try {
innerTextChange = true;
CharSequence localCharSequence = Emoji.replaceEmoji(symbol, messageEditText.getPaint().getFontMetricsInt(), AndroidUtilities.dp(20), false);
messageEditText.setText(messageEditText.getText().insert(i, localCharSequence));
int j = i + localCharSequence.length();
messageEditText.setSelection(j, j);
} catch (Exception e) {
FileLog.e(e);
} finally {
innerTextChange = false;
}
}
2018-07-30 04:07:02 +02:00
@Override
2017-12-08 18:35:59 +01:00
public void onStickerSelected(TLRPC.Document sticker) {
}
@Override
public void onStickersSettingsClick() {
}
@Override
public void onGifSelected(TLRPC.Document gif) {
}
@Override
public void onGifTab(boolean opened) {
}
@Override
public void onStickersTab(boolean opened) {
}
@Override
public void onClearEmojiRecent() {
}
@Override
public void onShowStickerSet(TLRPC.StickerSet stickerSet, TLRPC.InputStickerSet inputStickerSet) {
}
@Override
public void onStickerSetAdd(TLRPC.StickerSetCovered stickerSet) {
}
@Override
public void onStickerSetRemove(TLRPC.StickerSetCovered stickerSet) {
}
@Override
public void onStickersGroupClick(int chatId) {
}
2018-07-30 04:07:02 +02:00
@Override
public void onSearchOpenClose(boolean open) {
}
@Override
public boolean isSearchOpened() {
return false;
}
@Override
public boolean isExpanded() {
return false;
}
2017-12-08 18:35:59 +01:00
});
sizeNotifierLayout.addView(emojiView);
}
public void addEmojiToRecent(String code) {
createEmojiView();
emojiView.addEmojiToRecent(code);
}
public void replaceWithText(int start, int len, CharSequence text, boolean parseEmoji) {
try {
2017-12-08 18:35:59 +01:00
SpannableStringBuilder builder = new SpannableStringBuilder(messageEditText.getText());
builder.replace(start, start + len, text);
2017-12-08 18:35:59 +01:00
if (parseEmoji) {
Emoji.replaceEmoji(builder, messageEditText.getPaint().getFontMetricsInt(), AndroidUtilities.dp(20), false);
}
messageEditText.setText(builder);
if (start + text.length() <= messageEditText.length()) {
messageEditText.setSelection(start + text.length());
} else {
messageEditText.setSelection(messageEditText.length());
}
} catch (Exception e) {
2017-03-31 01:58:05 +02:00
FileLog.e(e);
}
}
public void setFieldFocused(boolean focus) {
if (messageEditText == null) {
return;
}
if (focus) {
if (!messageEditText.isFocused()) {
messageEditText.postDelayed(new Runnable() {
@Override
public void run() {
if (messageEditText != null) {
try {
messageEditText.requestFocus();
} catch (Exception e) {
2017-03-31 01:58:05 +02:00
FileLog.e(e);
}
}
}
}, 600);
}
} else {
if (messageEditText.isFocused() && !keyboardVisible) {
messageEditText.clearFocus();
}
}
}
2015-06-29 19:12:11 +02:00
public CharSequence getFieldCharSequence() {
return messageEditText.getText();
}
public int getEmojiPadding() {
return emojiPadding;
}
public boolean isPopupView(View view) {
return view == emojiView;
}
private void showPopup(int show) {
if (show == 1) {
if (emojiView == null) {
2017-12-08 18:35:59 +01:00
createEmojiView();
2015-06-29 19:12:11 +02:00
}
emojiView.setVisibility(VISIBLE);
if (keyboardHeight <= 0) {
2018-07-30 04:07:02 +02:00
keyboardHeight = MessagesController.getGlobalEmojiSettings().getInt("kbd_height", AndroidUtilities.dp(200));
2015-06-29 19:12:11 +02:00
}
if (keyboardHeightLand <= 0) {
2018-07-30 04:07:02 +02:00
keyboardHeightLand = MessagesController.getGlobalEmojiSettings().getInt("kbd_height_land3", AndroidUtilities.dp(200));
2015-06-29 19:12:11 +02:00
}
int currentHeight = AndroidUtilities.displaySize.x > AndroidUtilities.displaySize.y ? keyboardHeightLand : keyboardHeight;
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emojiView.getLayoutParams();
layoutParams.width = AndroidUtilities.displaySize.x;
layoutParams.height = currentHeight;
emojiView.setLayoutParams(layoutParams);
2017-03-31 01:58:05 +02:00
if (!AndroidUtilities.isInMultiwindow && !forceFloatingEmoji) {
2016-10-11 13:57:01 +02:00
AndroidUtilities.hideKeyboard(messageEditText);
}
2015-06-29 19:12:11 +02:00
if (sizeNotifierLayout != null) {
emojiPadding = currentHeight;
sizeNotifierLayout.requestLayout();
emojiButton.setImageResource(R.drawable.ic_keyboard_w);
onWindowSizeChanged();
}
} else {
if (emojiButton != null) {
emojiButton.setImageResource(R.drawable.ic_smile_w);
}
if (emojiView != null) {
emojiView.setVisibility(GONE);
}
if (sizeNotifierLayout != null) {
if (show == 0) {
emojiPadding = 0;
}
sizeNotifierLayout.requestLayout();
onWindowSizeChanged();
}
}
}
2015-06-29 19:12:11 +02:00
public void hidePopup() {
if (isPopupShowing()) {
showPopup(0);
}
}
2015-06-29 19:12:11 +02:00
private void openKeyboardInternal() {
showPopup(AndroidUtilities.usingHardwareInput ? 0 : 2);
2017-03-31 01:58:05 +02:00
openKeyboard();
2015-06-29 19:12:11 +02:00
}
public void openKeyboard() {
2017-03-31 01:58:05 +02:00
int currentSelection;
try {
currentSelection = messageEditText.getSelectionStart();
} catch (Exception e) {
currentSelection = messageEditText.length();
FileLog.e(e);
}
MotionEvent event = MotionEvent.obtain(0, 0, MotionEvent.ACTION_DOWN, 0, 0, 0);
messageEditText.onTouchEvent(event);
event.recycle();
event = MotionEvent.obtain(0, 0, MotionEvent.ACTION_UP, 0, 0, 0);
messageEditText.onTouchEvent(event);
event.recycle();
2015-06-29 19:12:11 +02:00
AndroidUtilities.showKeyboard(messageEditText);
2017-03-31 01:58:05 +02:00
try {
messageEditText.setSelection(currentSelection);
} catch (Exception e) {
FileLog.e(e);
}
2015-06-29 19:12:11 +02:00
}
public boolean isPopupShowing() {
return emojiView != null && emojiView.getVisibility() == VISIBLE;
}
2015-06-29 19:12:11 +02:00
public void closeKeyboard() {
AndroidUtilities.hideKeyboard(messageEditText);
}
public boolean isKeyboardVisible() {
2017-03-31 01:58:05 +02:00
return AndroidUtilities.usingHardwareInput && getTag() != null || keyboardVisible;
}
@Override
public void onSizeChanged(int height, boolean isWidthGreater) {
2017-03-31 01:58:05 +02:00
if (height > AndroidUtilities.dp(50) && keyboardVisible && !AndroidUtilities.isInMultiwindow && !forceFloatingEmoji) {
if (isWidthGreater) {
keyboardHeightLand = height;
2018-07-30 04:07:02 +02:00
MessagesController.getGlobalEmojiSettings().edit().putInt("kbd_height_land3", keyboardHeightLand).commit();
} else {
keyboardHeight = height;
2018-07-30 04:07:02 +02:00
MessagesController.getGlobalEmojiSettings().edit().putInt("kbd_height", keyboardHeight).commit();
}
}
2015-06-29 19:12:11 +02:00
if (isPopupShowing()) {
int newHeight;
if (isWidthGreater) {
newHeight = keyboardHeightLand;
} else {
newHeight = keyboardHeight;
}
2015-06-29 19:12:11 +02:00
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) emojiView.getLayoutParams();
if (layoutParams.width != AndroidUtilities.displaySize.x || layoutParams.height != newHeight) {
layoutParams.width = AndroidUtilities.displaySize.x;
layoutParams.height = newHeight;
2015-06-29 19:12:11 +02:00
emojiView.setLayoutParams(layoutParams);
if (sizeNotifierLayout != null) {
emojiPadding = layoutParams.height;
sizeNotifierLayout.requestLayout();
onWindowSizeChanged();
}
}
}
2015-06-29 19:12:11 +02:00
if (lastSizeChangeValue1 == height && lastSizeChangeValue2 == isWidthGreater) {
onWindowSizeChanged();
return;
}
lastSizeChangeValue1 = height;
lastSizeChangeValue2 = isWidthGreater;
boolean oldValue = keyboardVisible;
keyboardVisible = height > 0;
2015-06-29 19:12:11 +02:00
if (keyboardVisible && isPopupShowing()) {
showPopup(0);
}
2015-06-29 19:12:11 +02:00
if (emojiPadding != 0 && !keyboardVisible && keyboardVisible != oldValue && !isPopupShowing()) {
emojiPadding = 0;
sizeNotifierLayout.requestLayout();
}
2015-06-29 19:12:11 +02:00
onWindowSizeChanged();
}
@Override
2018-07-30 04:07:02 +02:00
public void didReceivedNotification(int id, int account, Object... args) {
if (id == NotificationCenter.emojiDidLoaded) {
if (emojiView != null) {
emojiView.invalidateViews();
}
}
}
}