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