diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/ChatFragment.java b/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/ChatFragment.java index dd8ac7f636..870853a4e9 100644 --- a/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/ChatFragment.java +++ b/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/ChatFragment.java @@ -362,6 +362,15 @@ public void onAttachPressed() { } } + @Override + public void onSlashPressed() { + if (findInputBar().getText() == "/") { + findInputBar().setText("", true); + } else { + findInputBar().setText("/", true); + } + } + @Override public void onAvatarClick(int uid) { ActorSDKLauncher.startProfileActivity(getActivity(), uid); @@ -474,6 +483,7 @@ private void hideQuote() { findInputBar().setDisableOnEmptyText(true); findInputBar().setAudioEnabled(true); findInputBar().setAttachEnabled(true); + findInputBar().setSlashEnabled(true); } private void showQuote(String text, boolean isQuote) { @@ -482,5 +492,6 @@ private void showQuote(String text, boolean isQuote) { findInputBar().setDisableOnEmptyText(false); findInputBar().setAudioEnabled(false); findInputBar().setAttachEnabled(false); + findInputBar().setSlashEnabled(false); } } diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/inputbar/InputBarCallback.java b/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/inputbar/InputBarCallback.java index 0a85d4d7f1..891333534e 100644 --- a/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/inputbar/InputBarCallback.java +++ b/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/inputbar/InputBarCallback.java @@ -19,4 +19,6 @@ public interface InputBarCallback { void onStickerSent(Sticker sticker); void onAttachPressed(); + + void onSlashPressed(); } diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/inputbar/InputBarFragment.java b/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/inputbar/InputBarFragment.java index b4c8df0f88..d915f304b8 100644 --- a/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/inputbar/InputBarFragment.java +++ b/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/inputbar/InputBarFragment.java @@ -63,6 +63,7 @@ public class InputBarFragment extends BaseFragment implements MessagesDefaultFra private boolean isAudioEnabled = true; private boolean isAttachEnabled = true; + private boolean isSlashEnabled = true; private boolean isDisableOnEmptyText = true; // @@ -72,6 +73,7 @@ public class InputBarFragment extends BaseFragment implements MessagesDefaultFra protected BarEditText messageEditText; protected TintImageView sendButton; protected ImageButton attachButton; + protected ImageButton slashButton; protected String lastWord = ""; // @@ -194,6 +196,15 @@ public void afterTextChanged(Editable editable) { }); + // + // Slash Button + // + slashButton = (ImageButton) res.findViewById(R.id.ib_slash); + slashButton.setOnClickListener(v -> { + onSlashButtonClicked(); + }); + + // // Emoji keyboard // @@ -366,6 +377,16 @@ public void setAttachEnabled(boolean attachEnabled) { checkSendButton(); } + public boolean isSlashEnabled() { + return isSlashEnabled; + } + + public void setSlashEnabled(boolean slashEnabled) { + isSlashEnabled = slashEnabled; + hideAudio(true); + checkSendButton(); + } + public boolean isDisableOnEmptyText() { return isDisableOnEmptyText; } @@ -397,6 +418,13 @@ protected void onAttachButtonClicked() { } } + protected void onSlashButtonClicked() { + Fragment parent = getParentFragment(); + if (parent instanceof InputBarCallback) { + ((InputBarCallback) parent).onSlashPressed(); + } + } + protected void onBeforeTextChanged(CharSequence s, int start, int count, int after) { Fragment parent = getParentFragment(); if (parent instanceof InputBarCallback) { @@ -475,6 +503,7 @@ protected void checkSendButton(boolean hasText) { } else { zoomOutView(attachButton); } + zoomOutView(slashButton); zoomInView(sendButton); zoomOutView(audioButton); } else { @@ -485,6 +514,11 @@ protected void checkSendButton(boolean hasText) { } else { zoomOutView(attachButton); } + if (isSlashEnabled) { + zoomInView(slashButton); + } else { + zoomOutView(slashButton); + } if (isAudioEnabled) { zoomInView(audioButton); zoomOutView(sendButton); @@ -510,6 +544,7 @@ protected void showAudio() { isAudioVisible = true; hideView(attachButton); + hideView(slashButton); hideView(messageEditText); hideView(emojiButton); @@ -552,6 +587,7 @@ protected void hideAudio(boolean cancel) { isAudioVisible = false; showView(attachButton); + showView(slashButton); showView(messageEditText); showView(emojiButton); diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/mentions/AutocompleteFragment.java b/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/mentions/AutocompleteFragment.java index bf19a9a186..9745d2bf86 100644 --- a/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/mentions/AutocompleteFragment.java +++ b/actor-sdk/sdk-core-android/android-sdk/src/main/java/im/actor/sdk/controllers/conversation/mentions/AutocompleteFragment.java @@ -144,9 +144,13 @@ public void onDestroyView() { private void expandMentions(final BottomSheetListView list, final int oldRowsCount, final int newRowsCount) { list.post(() -> { - if (newRowsCount == oldRowsCount) { - return; - } + + // I dont understand for what it. + // But when its not comment, not work first time typing "/", only next. + // + //if (newRowsCount == oldRowsCount) { + // return; + //} list.setMinHeight(newRowsCount == 0 ? 0 : newRowsCount == 1 ? Screen.dp(48) + 1 : newRowsCount == 2 ? Screen.dp(96) + 2 : Screen.dp(122)); list.setVisibility(View.VISIBLE); diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-hdpi/conv_slash.png b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-hdpi/conv_slash.png new file mode 100644 index 0000000000..05010ad37f Binary files /dev/null and b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-hdpi/conv_slash.png differ diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-mdpi/conv_slash.png b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-mdpi/conv_slash.png new file mode 100644 index 0000000000..18e63837e7 Binary files /dev/null and b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-mdpi/conv_slash.png differ diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-xhdpi/conv_slash.png b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-xhdpi/conv_slash.png new file mode 100644 index 0000000000..9b0c640a08 Binary files /dev/null and b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-xhdpi/conv_slash.png differ diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-xxhdpi/conv_slash.png b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-xxhdpi/conv_slash.png new file mode 100644 index 0000000000..2cad763677 Binary files /dev/null and b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable-xxhdpi/conv_slash.png differ diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable/button_slash.xml b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable/button_slash.xml new file mode 100644 index 0000000000..5216486905 --- /dev/null +++ b/actor-sdk/sdk-core-android/android-sdk/src/main/res/drawable/button_slash.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/actor-sdk/sdk-core-android/android-sdk/src/main/res/layout/fragment_inputbar.xml b/actor-sdk/sdk-core-android/android-sdk/src/main/res/layout/fragment_inputbar.xml index 26ecd31934..52d03bf305 100644 --- a/actor-sdk/sdk-core-android/android-sdk/src/main/res/layout/fragment_inputbar.xml +++ b/actor-sdk/sdk-core-android/android-sdk/src/main/res/layout/fragment_inputbar.xml @@ -23,6 +23,28 @@ android:textCursorDrawable="@null" android:textSize="16sp" /> + + + + + + +