diff --git a/qabelbox/src/androidTest/java/de/qabel/qabelbox/chat/view/views/ChatFragmentTest.kt b/qabelbox/src/androidTest/java/de/qabel/qabelbox/chat/view/views/ChatFragmentTest.kt index d583d2ac..f62c1afe 100644 --- a/qabelbox/src/androidTest/java/de/qabel/qabelbox/chat/view/views/ChatFragmentTest.kt +++ b/qabelbox/src/androidTest/java/de/qabel/qabelbox/chat/view/views/ChatFragmentTest.kt @@ -69,4 +69,21 @@ class ChatFragmentTest : AbstractUITest() { fragment.prependData(listOf(message)) onView(withText("MESSAGE")).check(ViewAssertions.matches(isDisplayed())) } + + @Test + fun deactivateSendButton() { + launch() + onView(withId(R.id.bt_send)).perform(click()) + fragment.adapter.data shouldMatch hasSize(equalTo(0)) + + } + + @Test + fun activateSendButton() { + launch() + onView(withId(R.id.etText)).perform(setText("My Message")) + onView(withId(R.id.bt_send)).perform(click()) + fragment.adapter.data shouldMatch hasSize(equalTo(1)) + } + } diff --git a/qabelbox/src/main/java/de/qabel/qabelbox/chat/view/views/ChatFragment.kt b/qabelbox/src/main/java/de/qabel/qabelbox/chat/view/views/ChatFragment.kt index b568d540..c1a02866 100644 --- a/qabelbox/src/main/java/de/qabel/qabelbox/chat/view/views/ChatFragment.kt +++ b/qabelbox/src/main/java/de/qabel/qabelbox/chat/view/views/ChatFragment.kt @@ -4,9 +4,10 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter -import android.net.Uri import android.os.Bundle import android.support.v7.widget.LinearLayoutManager +import android.text.Editable +import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -65,6 +66,15 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { lateinit var emojiPopup: EmojiPopup + val textWatcher = object : TextWatcher { + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + toggleSendButton() + } + + override fun afterTextChanged(text: Editable?) {} + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {} + } + override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) contactKeyId = arguments.getString(ARG_CONTACT) ?: throw IllegalArgumentException( @@ -142,6 +152,8 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } bt_send.onClick { presenter.sendMessage() } + toggleSendButton() + etText.addTextChangedListener(textWatcher) action_add_contact.setOnClickListener { presenter.handleContactAddClick() } action_ignore_contact.setOnClickListener { presenter.handleContactIgnoreClick() } emojiPopup = EmojiPopup.Builder.fromRootView(chat_root) @@ -155,6 +167,17 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } } + + fun toggleSendButton() { + if (messageText.isBlank()) { + bt_send.isEnabled = false + bt_send.setImageResource(R.drawable.ic_send_grey_24dp) + } else { + bt_send.isEnabled = true + bt_send.setImageResource(R.drawable.ic_send_grey_active_24dp) + } + } + override fun onBackPressed(): Boolean { if (emojiPopup.isShowing) { emojiPopup.dismiss() @@ -193,7 +216,7 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { if (swipeRefresh.isEnabled) { contact_chat_list.addItemDecoration(headerDecor) } - if(!loadMore){ + if (!loadMore) { scrollToBottom() } idle() @@ -249,3 +272,4 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } } + diff --git a/qabelbox/src/main/res/drawable-hdpi/ic_send_grey_active_24dp.xml b/qabelbox/src/main/res/drawable-hdpi/ic_send_grey_active_24dp.xml new file mode 100644 index 00000000..54ba5ece --- /dev/null +++ b/qabelbox/src/main/res/drawable-hdpi/ic_send_grey_active_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/qabelbox/src/main/res/drawable/ic_send_grey_24dp.xml b/qabelbox/src/main/res/drawable/ic_send_grey_24dp.xml index 54ba5ece..eb52ba40 100644 --- a/qabelbox/src/main/res/drawable/ic_send_grey_24dp.xml +++ b/qabelbox/src/main/res/drawable/ic_send_grey_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/qabelbox/src/main/res/values/colors.xml b/qabelbox/src/main/res/values/colors.xml index fb5cb7b7..82e23fd0 100644 --- a/qabelbox/src/main/res/values/colors.xml +++ b/qabelbox/src/main/res/values/colors.xml @@ -8,6 +8,7 @@ #ffffffff #ff555555 #b3b3b3 + #ff555555 #cc000000 #09000000 #6b3ca0b3