diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/ChatPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/ChatPresenter.java index 5fb7ecc75f3581a28e30e63b75a5bb2537f9e697..ae0f32cdb7904da2f26a217367b8086a22607a84 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/ChatPresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/ChatPresenter.java @@ -103,6 +103,18 @@ public class ChatPresenter extends BaseErrorPresenter { }); } + public void showAudio() { + getViewState().onShowAudio(); + } + + public void showKeyboard() { + getViewState().onShowKeyboard(); + } + + public void showSwitcherUI() { + getViewState().onShowSwitcherUI(); + } + public void startAudioCall() { mDataManager.audioCall(mChatModel.members.get(0).person_id); } diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/view/ChatView.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/ChatView.java index cd23b650f812937577328e90d1f6e6b280d07ab2..1d6cb195ce7696dc5cc01a2661d1d489e208718f 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/mvp/view/ChatView.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/view/ChatView.java @@ -21,4 +21,10 @@ public interface ChatView extends ErrorMvpView { void navigateToVideoCall(); void navigateToAudioCall(); + + void onShowKeyboard(); + + void onShowSwitcherUI(); + + void onShowAudio(); } diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/chats/ChatFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/chats/ChatFragment.java index 7bde9f63784104c76ab06112399b1d76933dcadd..ee591c0d09ddcc1eb0871ac44e9d3c64f5e2c5b5 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/chats/ChatFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/chats/ChatFragment.java @@ -15,11 +15,10 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; -import android.widget.Toast; import android.widget.TextView; +import android.widget.Toast; import com.arellomobile.mvp.presenter.InjectPresenter; import com.bumptech.glide.Glide; @@ -34,8 +33,10 @@ import com.ninja.mobile.communicator.mvp.view.ChatView; import com.ninja.mobile.communicator.ui.adapters.ChatAdapter; import com.ninja.mobile.communicator.ui.adapters.decorators.SpacesItemDecoration; import com.ninja.mobile.communicator.ui.base.BaseFragment; +import com.ninja.mobile.communicator.ui.views.CustomEditText; import com.ninja.mobile.communicator.utils.ImageUtils; import com.ninja.mobile.communicator.utils.StringUtils; +import com.ninja.mobile.communicator.utils.Utils; import java.io.File; import java.io.IOException; @@ -61,13 +62,18 @@ public class ChatFragment extends BaseFragment implements ChatView, OnItemClickL @InjectPresenter ChatPresenter mChatPresenter; @BindView(R.id.f_chat_smile) ImageView mSmilesButton; - @BindView(R.id.f_chat_message_text) EditText mMessageText; + @BindView(R.id.f_chat_message_text) CustomEditText mMessageText; @BindView(R.id.f_chat_send_button) ImageButton mSendButton; @BindView(R.id.chat_header_name) TextView headerName; @BindView(R.id.chat_header_status) TextView headerStatus; @BindView(R.id.chat_header_photo) ImageView headerPhoto; + @BindView(R.id.chat_keyboard) ImageView keyboardOn; + @BindView(R.id.chat_audio) ImageView audioOn; + @BindView(R.id.chat_footer_keyboard) View keyboardLayout; + @BindView(R.id.chat_footer_keyboard_audio) View keyboardOrAudio; + private ChatAdapter mAdapter; private Disposable mDisposable; private ChatModel mChatModel; @@ -105,6 +111,12 @@ public class ChatFragment extends BaseFragment implements ChatView, OnItemClickL mRecyclerView.addItemDecoration(new SpacesItemDecoration(20, 20, 0, 0)); mRecyclerView.setAdapter(mAdapter); initHeader(); + initFooter(); + } + + private void initFooter() { + keyboardOn.setOnClickListener(v -> mChatPresenter.showKeyboard()); + audioOn.setOnClickListener(v -> mChatPresenter.showAudio()); } private void initHeader() { @@ -130,6 +142,28 @@ public class ChatFragment extends BaseFragment implements ChatView, OnItemClickL mMessageText.setText(null); } + + //UI with keyboard and audio icons + @Override public void onShowSwitcherUI() { + mMessageText.setBackListener(null); + Utils.hideKeyboard(getActivity()); + keyboardLayout.setVisibility(View.GONE); + keyboardOrAudio.setVisibility(View.VISIBLE); + } + + //UI with keyboard and chat msg + @Override public void onShowKeyboard() { + keyboardOrAudio.setVisibility(View.GONE); + keyboardLayout.setVisibility(View.VISIBLE); + mMessageText.requestFocus(); + Utils.showKeyboard(getActivity()); + (mMessageText).setBackListener(() -> mChatPresenter.showSwitcherUI()); + } + + @Override public void onShowAudio() { + //TODO add audio logic + } + @Override public void setMessages(List messages) { mAdapter.setItems(messages); } diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/views/CustomEditText.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/CustomEditText.java index 9d76aee53c61d897d12ac8d314791f90c35d2e7e..c1fdaaa23b1b25c03d0796ec4cc355a4e12177f0 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/views/CustomEditText.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/CustomEditText.java @@ -10,6 +10,7 @@ import android.widget.EditText; public class CustomEditText extends EditText { private boolean mBlockBackButton; + private OnBackPressListener mBack; public CustomEditText(Context context) { super(context); @@ -29,10 +30,22 @@ public class CustomEditText extends EditText { } @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { + if (mBack != null) { + mBack.onBackPressed(); + return true; + } return mBlockBackButton || super.onKeyPreIme(keyCode, event); } public void setBlockBackButton(boolean blockBackButton) { mBlockBackButton = blockBackButton; } + + public void setBackListener(OnBackPressListener onCustomEditTextBack) { + this.mBack = onCustomEditTextBack; + } + + public interface OnBackPressListener { + void onBackPressed(); + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_chat.xml b/app/src/main/res/layout/fragment_chat.xml index ee8934c7081485953366bd2e93cb9ee5aa248012..eb3fc92435696b8e561e8eb776f2ee413bc8437d 100644 --- a/app/src/main/res/layout/fragment_chat.xml +++ b/app/src/main/res/layout/fragment_chat.xml @@ -15,14 +15,21 @@ android:layout_weight="1" tools:listitem="@layout/li_chat_my_image_message" /> + + + android:paddingTop="12dp" + android:visibility="gone"> -