Search in sources :

Example 1 with KeyboardStatusListener

use of im.actor.sdk.view.emoji.keyboard.KeyboardStatusListener in project actor-platform by actorapp.

the class InputBarFragment method onCreateView.

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View res = inflater.inflate(R.layout.fragment_inputbar, container, false);
    res.setBackgroundColor(style.getMainBackgroundColor());
    // 
    // Message Body
    // 
    messageEditText = (BarEditText) res.findViewById(R.id.et_message);
    messageEditText.setTextColor(style.getTextPrimaryColor());
    messageEditText.setHintTextColor(style.getTextHintColor());
    // Hardware keyboard events
    messageEditText.setOnKeyListener((view, keycode, keyEvent) -> {
        if (messenger().isSendByEnterEnabled()) {
            if (keyEvent.getAction() == KeyEvent.ACTION_DOWN && keycode == KeyEvent.KEYCODE_ENTER) {
                onSendButtonPressed();
                return true;
            }
        }
        return false;
    });
    // Software keyboard events
    messageEditText.setOnEditorActionListener((textView, i, keyEvent) -> {
        if (i == EditorInfo.IME_ACTION_SEND) {
            onSendButtonPressed();
            return true;
        }
        if (i == EditorInfo.IME_ACTION_DONE) {
            onSendButtonPressed();
            return true;
        }
        if (messenger().isSendByEnterEnabled()) {
            if (keyEvent != null && i == EditorInfo.IME_NULL && keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
                onSendButtonPressed();
                return true;
            }
        }
        return false;
    });
    messageEditText.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            onBeforeTextChanged(charSequence, i, i1, i2);
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            InputBarFragment.this.onTextChanged(charSequence, i, i1, i2);
        }

        @Override
        public void afterTextChanged(Editable editable) {
            onAfterTextChanged(editable);
        }
    });
    messageEditText.addSelectionListener((start, length) -> {
        InputBarFragment.this.onSelectionChanged(start, length);
    });
    messageEditText.setOnFocusChangeListener((v, hasFocus) -> {
        Fragment parent = getParentFragment();
        if (parent instanceof InputBarCallback) {
            ((InputBarCallback) parent).onTextFocusChanged(hasFocus);
        }
    });
    // 
    // Send Button
    // 
    sendButton = (TintImageView) res.findViewById(R.id.ib_send);
    sendButton.setResource(R.drawable.conv_send);
    sendButton.setOnClickListener(v -> {
        onSendButtonPressed();
    });
    // 
    // Attach Button
    // 
    attachButton = (ImageButton) res.findViewById(R.id.ib_attach);
    attachButton.setOnClickListener(v -> {
        onAttachButtonClicked();
    });
    // 
    // Emoji keyboard
    // 
    emojiButton = (ImageView) res.findViewById(R.id.ib_emoji);
    emojiButton.setOnClickListener(v -> emojiKeyboard.toggle());
    emojiKeyboard = getEmojiKeyboard();
    emojiKeyboard.setOnStickerClickListener(sticker -> {
        Fragment parent = getParentFragment();
        if (parent instanceof InputBarCallback) {
            ((InputBarCallback) parent).onStickerSent(sticker);
        }
    });
    emojiKeyboard.setKeyboardStatusListener(new KeyboardStatusListener() {

        @Override
        public void onDismiss() {
            emojiButton.setImageResource(R.drawable.ic_emoji);
        }

        @Override
        public void onShow() {
            emojiButton.setImageResource(R.drawable.ic_keyboard);
        }
    });
    // 
    // Audio
    // 
    audioContainer = res.findViewById(R.id.audioContainer);
    audioTimer = (TextView) res.findViewById(R.id.audioTimer);
    audioSlide = res.findViewById(R.id.audioSlide);
    recordPoint = res.findViewById(R.id.record_point);
    audioButton = (ImageView) res.findViewById(R.id.record_btn);
    audioButton.setVisibility(View.VISIBLE);
    audioButton.setOnTouchListener((v, event) -> {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            if (!isAudioVisible) {
                showAudio();
                slideStart = (int) event.getX();
            }
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            if (isAudioVisible) {
                hideAudio(false);
            }
        } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
            if (isAudioVisible) {
                int slide = slideStart - (int) event.getX();
                if (slide < 0) {
                    slide = 0;
                }
                if (slide > SLIDE_LIMIT) {
                    hideAudio(true);
                } else {
                    slideAudio(slide);
                }
            }
        }
        return true;
    });
    return res;
}
Also used : TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) KeyboardStatusListener(im.actor.sdk.view.emoji.keyboard.KeyboardStatusListener) TintImageView(im.actor.sdk.view.TintImageView) ImageView(android.widget.ImageView) ViewUtils.zoomInView(im.actor.sdk.util.ViewUtils.zoomInView) View(android.view.View) ViewUtils.zoomOutView(im.actor.sdk.util.ViewUtils.zoomOutView) TextView(android.widget.TextView) BaseFragment(im.actor.sdk.controllers.BaseFragment) Fragment(android.support.v4.app.Fragment) MessagesDefaultFragment(im.actor.sdk.controllers.conversation.messages.MessagesDefaultFragment) MessagesFragment(im.actor.sdk.controllers.conversation.messages.MessagesFragment) Nullable(android.support.annotation.Nullable)

Aggregations

Nullable (android.support.annotation.Nullable)1 Fragment (android.support.v4.app.Fragment)1 Editable (android.text.Editable)1 TextWatcher (android.text.TextWatcher)1 View (android.view.View)1 ImageView (android.widget.ImageView)1 TextView (android.widget.TextView)1 BaseFragment (im.actor.sdk.controllers.BaseFragment)1 MessagesDefaultFragment (im.actor.sdk.controllers.conversation.messages.MessagesDefaultFragment)1 MessagesFragment (im.actor.sdk.controllers.conversation.messages.MessagesFragment)1 ViewUtils.zoomInView (im.actor.sdk.util.ViewUtils.zoomInView)1 ViewUtils.zoomOutView (im.actor.sdk.util.ViewUtils.zoomOutView)1 TintImageView (im.actor.sdk.view.TintImageView)1 KeyboardStatusListener (im.actor.sdk.view.emoji.keyboard.KeyboardStatusListener)1