From a53409c4a385fe2714a7def0f9efc9e0d1b472e6 Mon Sep 17 00:00:00 2001 From: Krocks Date: Fri, 11 Aug 2017 11:58:10 +0300 Subject: [PATCH 1/3] added keyboard or audio --- .../mvp/presenters/ChatPresenter.java | 4 ++++ .../communicator/mvp/view/ChatView.java | 2 ++ .../ui/fragments/chats/ChatFragment.java | 19 ++++++++++++++++++- app/src/main/res/layout/fragment_chat.xml | 8 +++++++- .../main/res/layout/partial_chat_footer.xml | 7 ++++--- 5 files changed, 35 insertions(+), 5 deletions(-) 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 5fb7ecc75f..20d88c10c2 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,10 @@ public class ChatPresenter extends BaseErrorPresenter { }); } + public void switchToText() { + getViewState().onSwitchToText(); + } + 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 cd23b650f8..3774ffb3f4 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,6 @@ public interface ChatView extends ErrorMvpView { void navigateToVideoCall(); void navigateToAudioCall(); + + void onSwitchToText(); } 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 7bde9f6378..f791baa8b0 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 @@ -18,8 +18,8 @@ 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; @@ -36,6 +36,7 @@ import com.ninja.mobile.communicator.ui.adapters.decorators.SpacesItemDecoration import com.ninja.mobile.communicator.ui.base.BaseFragment; 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; @@ -68,6 +69,10 @@ public class ChatFragment extends BaseFragment implements ChatView, OnItemClickL @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_footer_keyboard) View keyboardLayout; + @BindView(R.id.chat_footer_keyboard_audio) View keyboardOrAudio; + private ChatAdapter mAdapter; private Disposable mDisposable; private ChatModel mChatModel; @@ -105,6 +110,11 @@ 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.switchToText()); } private void initHeader() { @@ -130,6 +140,13 @@ public class ChatFragment extends BaseFragment implements ChatView, OnItemClickL mMessageText.setText(null); } + @Override public void onSwitchToText() { + keyboardOrAudio.setVisibility(View.GONE); + keyboardLayout.setVisibility(View.VISIBLE); + mMessageText.requestFocus(); + Utils.showKeyboard(getActivity()); + } + @Override public void setMessages(List messages) { mAdapter.setItems(messages); } diff --git a/app/src/main/res/layout/fragment_chat.xml b/app/src/main/res/layout/fragment_chat.xml index ee8934c708..8e9d4f29ff 100644 --- a/app/src/main/res/layout/fragment_chat.xml +++ b/app/src/main/res/layout/fragment_chat.xml @@ -15,14 +15,20 @@ android:layout_weight="1" tools:listitem="@layout/li_chat_my_image_message" /> + + + android:paddingTop="12dp" + android:visibility="gone"> -- GitLab From f3bb4824b4de8d5e25dcfc21f0e19d5321ba5219 Mon Sep 17 00:00:00 2001 From: Krocks Date: Fri, 11 Aug 2017 12:20:00 +0300 Subject: [PATCH 2/3] added porn with back button from keyboard to keyboard or audio --- .../communicator/mvp/presenters/ChatPresenter.java | 4 ++++ .../ninja/mobile/communicator/mvp/view/ChatView.java | 2 ++ .../ui/fragments/chats/ChatFragment.java | 12 ++++++++++-- .../mobile/communicator/ui/views/CustomEditText.java | 9 +++++++++ .../communicator/ui/views/OnCustomEditTextBack.java | 5 +++++ app/src/main/res/layout/fragment_chat.xml | 5 +++-- 6 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/ninja/mobile/communicator/ui/views/OnCustomEditTextBack.java 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 20d88c10c2..9a84fcafaa 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 @@ -107,6 +107,10 @@ public class ChatPresenter extends BaseErrorPresenter { getViewState().onSwitchToText(); } + public void switchTextAudio() { + getViewState().onSwitchToTextAudio(); + } + 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 3774ffb3f4..233b47f3be 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 @@ -23,4 +23,6 @@ public interface ChatView extends ErrorMvpView { void navigateToAudioCall(); void onSwitchToText(); + + void onSwitchToTextAudio(); } 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 f791baa8b0..0d0bc6ee7c 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,7 +15,6 @@ 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.TextView; @@ -34,6 +33,7 @@ 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; @@ -62,7 +62,7 @@ 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; @@ -145,6 +145,14 @@ public class ChatFragment extends BaseFragment implements ChatView, OnItemClickL keyboardLayout.setVisibility(View.VISIBLE); mMessageText.requestFocus(); Utils.showKeyboard(getActivity()); + (mMessageText).setBackListener(() -> mChatPresenter.switchTextAudio()); + } + + @Override public void onSwitchToTextAudio() { + mMessageText.setBackListener(null); + Utils.hideKeyboard(getActivity()); + keyboardLayout.setVisibility(View.GONE); + keyboardOrAudio.setVisibility(View.VISIBLE); } @Override public void setMessages(List 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 9d76aee53c..898f66ef89 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 OnCustomEditTextBack mBack; public CustomEditText(Context context) { super(context); @@ -29,10 +30,18 @@ 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(OnCustomEditTextBack onCustomEditTextBack) { + this.mBack = onCustomEditTextBack; + } } \ No newline at end of file diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/views/OnCustomEditTextBack.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/OnCustomEditTextBack.java new file mode 100644 index 0000000000..d6c8c88209 --- /dev/null +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/OnCustomEditTextBack.java @@ -0,0 +1,5 @@ +package com.ninja.mobile.communicator.ui.views; + +public interface OnCustomEditTextBack { + void onBackPressed(); +} diff --git a/app/src/main/res/layout/fragment_chat.xml b/app/src/main/res/layout/fragment_chat.xml index 8e9d4f29ff..eb3fc92435 100644 --- a/app/src/main/res/layout/fragment_chat.xml +++ b/app/src/main/res/layout/fragment_chat.xml @@ -17,7 +17,8 @@ + android:id="@+id/chat_footer_keyboard_audio" + android:visibility="visible" /> - Date: Fri, 11 Aug 2017 13:57:06 +0300 Subject: [PATCH 3/3] small changes, method renames, etc Moved interface to view class --- .../mvp/presenters/ChatPresenter.java | 12 ++++++--- .../communicator/mvp/view/ChatView.java | 6 +++-- .../ui/fragments/chats/ChatFragment.java | 25 +++++++++++++------ .../communicator/ui/views/CustomEditText.java | 8 ++++-- .../ui/views/OnCustomEditTextBack.java | 5 ---- 5 files changed, 35 insertions(+), 21 deletions(-) delete mode 100644 app/src/main/java/com/ninja/mobile/communicator/ui/views/OnCustomEditTextBack.java 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 9a84fcafaa..ae0f32cdb7 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,12 +103,16 @@ public class ChatPresenter extends BaseErrorPresenter { }); } - public void switchToText() { - getViewState().onSwitchToText(); + public void showAudio() { + getViewState().onShowAudio(); } - public void switchTextAudio() { - getViewState().onSwitchToTextAudio(); + public void showKeyboard() { + getViewState().onShowKeyboard(); + } + + public void showSwitcherUI() { + getViewState().onShowSwitcherUI(); } public void startAudioCall() { 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 233b47f3be..1d6cb195ce 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 @@ -22,7 +22,9 @@ public interface ChatView extends ErrorMvpView { void navigateToAudioCall(); - void onSwitchToText(); + void onShowKeyboard(); - void onSwitchToTextAudio(); + 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 0d0bc6ee7c..ee591c0d09 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 @@ -70,6 +70,7 @@ public class ChatFragment extends BaseFragment implements ChatView, OnItemClickL @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; @@ -114,7 +115,8 @@ public class ChatFragment extends BaseFragment implements ChatView, OnItemClickL } private void initFooter() { - keyboardOn.setOnClickListener(v -> mChatPresenter.switchToText()); + keyboardOn.setOnClickListener(v -> mChatPresenter.showKeyboard()); + audioOn.setOnClickListener(v -> mChatPresenter.showAudio()); } private void initHeader() { @@ -140,19 +142,26 @@ public class ChatFragment extends BaseFragment implements ChatView, OnItemClickL mMessageText.setText(null); } - @Override public void onSwitchToText() { + + //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.switchTextAudio()); + (mMessageText).setBackListener(() -> mChatPresenter.showSwitcherUI()); } - @Override public void onSwitchToTextAudio() { - mMessageText.setBackListener(null); - Utils.hideKeyboard(getActivity()); - keyboardLayout.setVisibility(View.GONE); - keyboardOrAudio.setVisibility(View.VISIBLE); + @Override public void onShowAudio() { + //TODO add audio logic } @Override public void setMessages(List 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 898f66ef89..c1fdaaa23b 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,7 +10,7 @@ import android.widget.EditText; public class CustomEditText extends EditText { private boolean mBlockBackButton; - private OnCustomEditTextBack mBack; + private OnBackPressListener mBack; public CustomEditText(Context context) { super(context); @@ -41,7 +41,11 @@ public class CustomEditText extends EditText { mBlockBackButton = blockBackButton; } - public void setBackListener(OnCustomEditTextBack onCustomEditTextBack) { + 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/java/com/ninja/mobile/communicator/ui/views/OnCustomEditTextBack.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/OnCustomEditTextBack.java deleted file mode 100644 index d6c8c88209..0000000000 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/views/OnCustomEditTextBack.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.ninja.mobile.communicator.ui.views; - -public interface OnCustomEditTextBack { - void onBackPressed(); -} -- GitLab