From 927c9118214debdd2575729329032ff484de1f02 Mon Sep 17 00:00:00 2001 From: nerminnicevic Date: Mon, 2 Jan 2017 16:19:27 +0100 Subject: [PATCH 1/7] added tint color to colorize the icon inner and set a default --- qabelbox/src/main/res/layout/fragment_contact_chat.xml | 1 + qabelbox/src/main/res/values/colors.xml | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/qabelbox/src/main/res/layout/fragment_contact_chat.xml b/qabelbox/src/main/res/layout/fragment_contact_chat.xml index bf0f3602..56211a78 100644 --- a/qabelbox/src/main/res/layout/fragment_contact_chat.xml +++ b/qabelbox/src/main/res/layout/fragment_contact_chat.xml @@ -55,6 +55,7 @@ android:background="?attr/selectableItemBackgroundBorderless" android:scaleType="center" android:src="@drawable/ic_send_grey_24dp" + android:tint="@color/button_inactive" tools:ignore="ContentDescription"/> diff --git a/qabelbox/src/main/res/values/colors.xml b/qabelbox/src/main/res/values/colors.xml index fb5cb7b7..f50fac20 100644 --- a/qabelbox/src/main/res/values/colors.xml +++ b/qabelbox/src/main/res/values/colors.xml @@ -5,9 +5,13 @@ #FF690F #e0e0e0 + @color/light_gray + @color/dark_gray + #ffffffff #ff555555 #b3b3b3 + #ff555555 #cc000000 #09000000 #6b3ca0b3 From 60392ad01b57a8e0f6d8fe7205bebdfb297a0e51 Mon Sep 17 00:00:00 2001 From: nerminnicevic Date: Mon, 2 Jan 2017 16:20:51 +0100 Subject: [PATCH 2/7] add textChangeListener to track changes in textinput --- .../chat/view/views/ChatFragmentTest.kt | 15 +++++++++++ .../qabelbox/chat/view/views/ChatFragment.kt | 27 +++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) 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..019c6151 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 @@ -1,12 +1,16 @@ package de.qabel.qabelbox.chat.view.views +import android.graphics.ColorFilter +import android.graphics.LightingColorFilter import android.support.test.espresso.Espresso import android.support.test.espresso.Espresso.onView +import android.support.test.espresso.ViewAssertion import android.support.test.espresso.action.ViewActions.click import android.support.test.espresso.assertion.ViewAssertions import android.support.test.espresso.matcher.ViewMatchers.* import com.natpryce.hamkrest.equalTo import com.natpryce.hamkrest.hasSize +import com.natpryce.hamkrest.isEmptyString import com.natpryce.hamkrest.should.shouldMatch import de.qabel.chat.repository.entities.ChatDropMessage import de.qabel.qabelbox.R @@ -18,6 +22,8 @@ import de.qabel.qabelbox.ui.AbstractUITest import de.qabel.qabelbox.ui.action.QabelViewAction.setText import de.qabel.qabelbox.ui.idling.InjectedIdlingResource import de.qabel.qabelbox.util.IdentityHelper +import kotlinx.android.synthetic.main.fragment_contact_chat.* +import org.jetbrains.anko.backgroundColor import org.junit.Test import java.util.* @@ -69,4 +75,13 @@ class ChatFragmentTest : AbstractUITest() { fragment.prependData(listOf(message)) onView(withText("MESSAGE")).check(ViewAssertions.matches(isDisplayed())) } + + @Test + fun sendButtonInactiveWithoutMessage() { + launch() + fragment.messageText shouldMatch isEmptyString + assert(!fragment.bt_send.hasOnClickListeners()) + assert(!fragment.bt_send.hasOnClickListeners()) + + } } 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..da7c208d 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 @@ -7,6 +7,8 @@ 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 @@ -141,7 +143,27 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { presenter.proxy.loadMore() } - bt_send.onClick { presenter.sendMessage() } + etText.addTextChangedListener(object : TextWatcher { + override fun afterTextChanged(text: Editable?) { + if (messageText.isNotEmpty()) { + bt_send.colorFilter.apply { R.color.button_active } + bt_send.onClick { presenter.sendMessage() } + } + } + + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + + } + + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + if (messageText.isNotEmpty()) { + bt_send.setColorFilter(R.color.button_active) + bt_send.onClick { presenter.sendMessage() } + } + bt_send.setColorFilter(R.color.button_active) + } + }) + action_add_contact.setOnClickListener { presenter.handleContactAddClick() } action_ignore_contact.setOnClickListener { presenter.handleContactIgnoreClick() } emojiPopup = EmojiPopup.Builder.fromRootView(chat_root) @@ -193,7 +215,7 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { if (swipeRefresh.isEnabled) { contact_chat_list.addItemDecoration(headerDecor) } - if(!loadMore){ + if (!loadMore) { scrollToBottom() } idle() @@ -249,3 +271,4 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } } + From f56cae43a50a57cc6dd03e4694ba0b5e839db2b8 Mon Sep 17 00:00:00 2001 From: nerminnicevic Date: Tue, 3 Jan 2017 10:27:25 +0100 Subject: [PATCH 3/7] activation and deactivation of the sendbutton --- .../chat/view/views/ChatFragmentTest.kt | 23 +++++--- .../qabelbox/chat/view/views/ChatFragment.kt | 58 ++++++++++++------- 2 files changed, 53 insertions(+), 28 deletions(-) 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 019c6151..f2486ce0 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 @@ -1,18 +1,18 @@ package de.qabel.qabelbox.chat.view.views -import android.graphics.ColorFilter -import android.graphics.LightingColorFilter import android.support.test.espresso.Espresso import android.support.test.espresso.Espresso.onView import android.support.test.espresso.ViewAssertion import android.support.test.espresso.action.ViewActions.click import android.support.test.espresso.assertion.ViewAssertions +import android.support.test.espresso.core.deps.guava.base.Verify import android.support.test.espresso.matcher.ViewMatchers.* import com.natpryce.hamkrest.equalTo import com.natpryce.hamkrest.hasSize import com.natpryce.hamkrest.isEmptyString import com.natpryce.hamkrest.should.shouldMatch import de.qabel.chat.repository.entities.ChatDropMessage +import de.qabel.core.extensions.letApply import de.qabel.qabelbox.R import de.qabel.qabelbox.base.MainActivity import de.qabel.qabelbox.chat.dto.ChatMessage @@ -23,7 +23,10 @@ import de.qabel.qabelbox.ui.action.QabelViewAction.setText import de.qabel.qabelbox.ui.idling.InjectedIdlingResource import de.qabel.qabelbox.util.IdentityHelper import kotlinx.android.synthetic.main.fragment_contact_chat.* -import org.jetbrains.anko.backgroundColor +import org.jetbrains.anko.runOnUiThread +import org.junit.Assert +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue import org.junit.Test import java.util.* @@ -77,11 +80,17 @@ class ChatFragmentTest : AbstractUITest() { } @Test - fun sendButtonInactiveWithoutMessage() { + fun deactivateSendButton() { launch() - fragment.messageText shouldMatch isEmptyString - assert(!fragment.bt_send.hasOnClickListeners()) - assert(!fragment.bt_send.hasOnClickListeners()) + fragment.deactivateSendButton() + assertFalse(fragment.bt_send.isEnabled) + } + @Test + fun activateSendButton() { + launch() + fragment.activateSendButton() + assertTrue(fragment.bt_send.isEnabled) } + } 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 da7c208d..9f591f72 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 @@ -12,9 +12,11 @@ import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageView import com.vanniktech.emoji.EmojiPopup import de.qabel.core.config.Contact import de.qabel.core.config.Identity +import de.qabel.core.extensions.letApply import de.qabel.qabelbox.QblBroadcastConstants import de.qabel.qabelbox.R import de.qabel.qabelbox.base.BaseFragment @@ -142,27 +144,19 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { swipeRefresh.setOnRefreshListener { presenter.proxy.loadMore() } - - etText.addTextChangedListener(object : TextWatcher { - override fun afterTextChanged(text: Editable?) { - if (messageText.isNotEmpty()) { - bt_send.colorFilter.apply { R.color.button_active } - bt_send.onClick { presenter.sendMessage() } - } - } - - override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { - - } - - override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { - if (messageText.isNotEmpty()) { - bt_send.setColorFilter(R.color.button_active) - bt_send.onClick { presenter.sendMessage() } - } - bt_send.setColorFilter(R.color.button_active) - } - }) + bt_send.onClick { presenter.sendMessage() } +// deactivateSendButton() +// etText.addTextChangedListener(object : TextWatcher { +// override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { +// if (messageText.isNotEmpty()) { +// activateSendButton() +// } +// deactivateSendButton() +// } +// +// override fun afterTextChanged(text: Editable?) {} +// override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {} +// }) action_add_contact.setOnClickListener { presenter.handleContactAddClick() } action_ignore_contact.setOnClickListener { presenter.handleContactIgnoreClick() } @@ -177,6 +171,28 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } } + fun deactivateSendButton() { + busy() + runOnUiThread { + bt_send.apply { + setColorFilter(R.color.button_inactive) + isEnabled = false + idle() + } + } + } + + fun activateSendButton() { + busy() + runOnUiThread { + bt_send.apply { + setColorFilter(R.color.button_active) + isEnabled = true + idle() + } + } + } + override fun onBackPressed(): Boolean { if (emojiPopup.isShowing) { emojiPopup.dismiss() From 9f6cd839630f50d119c6847165f7e826ab4b9b61 Mon Sep 17 00:00:00 2001 From: nerminnicevic Date: Tue, 3 Jan 2017 13:48:59 +0100 Subject: [PATCH 4/7] activation and deactivation of the sendbutton with changing icon tested and working --- .../chat/view/views/ChatFragmentTest.kt | 18 +++----- .../qabelbox/chat/view/views/ChatFragment.kt | 46 ++++++++----------- .../ic_send_grey_active_24dp.xml | 9 ++++ .../main/res/drawable/ic_send_grey_24dp.xml | 2 +- .../main/res/layout/fragment_contact_chat.xml | 1 - qabelbox/src/main/res/values/colors.xml | 3 -- 6 files changed, 34 insertions(+), 45 deletions(-) create mode 100644 qabelbox/src/main/res/drawable-hdpi/ic_send_grey_active_24dp.xml 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 f2486ce0..ff9b09ea 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 @@ -2,17 +2,13 @@ package de.qabel.qabelbox.chat.view.views import android.support.test.espresso.Espresso import android.support.test.espresso.Espresso.onView -import android.support.test.espresso.ViewAssertion import android.support.test.espresso.action.ViewActions.click import android.support.test.espresso.assertion.ViewAssertions -import android.support.test.espresso.core.deps.guava.base.Verify import android.support.test.espresso.matcher.ViewMatchers.* import com.natpryce.hamkrest.equalTo import com.natpryce.hamkrest.hasSize -import com.natpryce.hamkrest.isEmptyString import com.natpryce.hamkrest.should.shouldMatch import de.qabel.chat.repository.entities.ChatDropMessage -import de.qabel.core.extensions.letApply import de.qabel.qabelbox.R import de.qabel.qabelbox.base.MainActivity import de.qabel.qabelbox.chat.dto.ChatMessage @@ -22,11 +18,6 @@ import de.qabel.qabelbox.ui.AbstractUITest import de.qabel.qabelbox.ui.action.QabelViewAction.setText import de.qabel.qabelbox.ui.idling.InjectedIdlingResource import de.qabel.qabelbox.util.IdentityHelper -import kotlinx.android.synthetic.main.fragment_contact_chat.* -import org.jetbrains.anko.runOnUiThread -import org.junit.Assert -import org.junit.Assert.assertFalse -import org.junit.Assert.assertTrue import org.junit.Test import java.util.* @@ -83,14 +74,17 @@ class ChatFragmentTest : AbstractUITest() { fun deactivateSendButton() { launch() fragment.deactivateSendButton() - assertFalse(fragment.bt_send.isEnabled) + onView(withId(R.id.bt_send)).perform(click()) + fragment.adapter.data shouldMatch hasSize(equalTo(0)) + } @Test fun activateSendButton() { launch() - fragment.activateSendButton() - assertTrue(fragment.bt_send.isEnabled) + 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 9f591f72..90737d18 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,6 +4,7 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter +import android.graphics.PorterDuff import android.net.Uri import android.os.Bundle import android.support.v7.widget.LinearLayoutManager @@ -144,20 +145,21 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { swipeRefresh.setOnRefreshListener { presenter.proxy.loadMore() } + bt_send.onClick { presenter.sendMessage() } -// deactivateSendButton() -// etText.addTextChangedListener(object : TextWatcher { -// override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { -// if (messageText.isNotEmpty()) { -// activateSendButton() -// } -// deactivateSendButton() -// } -// -// override fun afterTextChanged(text: Editable?) {} -// override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {} -// }) + deactivateSendButton() + etText.addTextChangedListener(object : TextWatcher { + override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { + if (messageText.isBlank()) { + deactivateSendButton() + } else { + activateSendButton() + } + } + override fun afterTextChanged(text: Editable?) {} + override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {} + }) action_add_contact.setOnClickListener { presenter.handleContactAddClick() } action_ignore_contact.setOnClickListener { presenter.handleContactIgnoreClick() } emojiPopup = EmojiPopup.Builder.fromRootView(chat_root) @@ -172,25 +174,13 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } fun deactivateSendButton() { - busy() - runOnUiThread { - bt_send.apply { - setColorFilter(R.color.button_inactive) - isEnabled = false - idle() - } - } + bt_send.isEnabled = false + bt_send.setImageResource(R.drawable.ic_send_grey_24dp) } fun activateSendButton() { - busy() - runOnUiThread { - bt_send.apply { - setColorFilter(R.color.button_active) - isEnabled = true - idle() - } - } + bt_send.isEnabled = true + bt_send.setImageResource(R.drawable.ic_send_grey_active_24dp) } override fun onBackPressed(): Boolean { 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/layout/fragment_contact_chat.xml b/qabelbox/src/main/res/layout/fragment_contact_chat.xml index 56211a78..bf0f3602 100644 --- a/qabelbox/src/main/res/layout/fragment_contact_chat.xml +++ b/qabelbox/src/main/res/layout/fragment_contact_chat.xml @@ -55,7 +55,6 @@ android:background="?attr/selectableItemBackgroundBorderless" android:scaleType="center" android:src="@drawable/ic_send_grey_24dp" - android:tint="@color/button_inactive" tools:ignore="ContentDescription"/> diff --git a/qabelbox/src/main/res/values/colors.xml b/qabelbox/src/main/res/values/colors.xml index f50fac20..82e23fd0 100644 --- a/qabelbox/src/main/res/values/colors.xml +++ b/qabelbox/src/main/res/values/colors.xml @@ -5,9 +5,6 @@ #FF690F #e0e0e0 - @color/light_gray - @color/dark_gray - #ffffffff #ff555555 #b3b3b3 From 0426712219c7ddc5843a3c1bb183c3c5ea98acb1 Mon Sep 17 00:00:00 2001 From: nerminnicevic Date: Tue, 3 Jan 2017 14:36:15 +0100 Subject: [PATCH 5/7] fixed tests and refactored --- .../de/qabel/qabelbox/chat/view/views/ChatFragmentTest.kt | 1 - .../java/de/qabel/qabelbox/chat/view/views/ChatFragment.kt | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) 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 ff9b09ea..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 @@ -73,7 +73,6 @@ class ChatFragmentTest : AbstractUITest() { @Test fun deactivateSendButton() { launch() - fragment.deactivateSendButton() onView(withId(R.id.bt_send)).perform(click()) fragment.adapter.data shouldMatch hasSize(equalTo(0)) 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 90737d18..dd69c9be 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 @@ -173,12 +173,12 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } } - fun deactivateSendButton() { + private fun deactivateSendButton() { bt_send.isEnabled = false bt_send.setImageResource(R.drawable.ic_send_grey_24dp) } - fun activateSendButton() { + private fun activateSendButton() { bt_send.isEnabled = true bt_send.setImageResource(R.drawable.ic_send_grey_active_24dp) } From 50e881d0a8bfd3197614fbe99d537f79f4d53113 Mon Sep 17 00:00:00 2001 From: nerminnicevic Date: Wed, 4 Jan 2017 11:09:48 +0100 Subject: [PATCH 6/7] remove unused import & refactor textwatcher stuff + toggle sendbutton behaviour --- .../qabelbox/chat/view/views/ChatFragment.kt | 42 +++++++++---------- 1 file changed, 19 insertions(+), 23 deletions(-) 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 dd69c9be..235ab8f1 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,8 +4,6 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter -import android.graphics.PorterDuff -import android.net.Uri import android.os.Bundle import android.support.v7.widget.LinearLayoutManager import android.text.Editable @@ -13,11 +11,9 @@ import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.ImageView import com.vanniktech.emoji.EmojiPopup import de.qabel.core.config.Contact import de.qabel.core.config.Identity -import de.qabel.core.extensions.letApply import de.qabel.qabelbox.QblBroadcastConstants import de.qabel.qabelbox.R import de.qabel.qabelbox.base.BaseFragment @@ -147,19 +143,8 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } bt_send.onClick { presenter.sendMessage() } - deactivateSendButton() - etText.addTextChangedListener(object : TextWatcher { - override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { - if (messageText.isBlank()) { - deactivateSendButton() - } else { - activateSendButton() - } - } - - override fun afterTextChanged(text: Editable?) {} - override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {} - }) + toggleSendButton() + etText.addTextChangedListener(textWatcher()) action_add_contact.setOnClickListener { presenter.handleContactAddClick() } action_ignore_contact.setOnClickListener { presenter.handleContactIgnoreClick() } emojiPopup = EmojiPopup.Builder.fromRootView(chat_root) @@ -173,14 +158,25 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } } - private fun deactivateSendButton() { - bt_send.isEnabled = false - bt_send.setImageResource(R.drawable.ic_send_grey_24dp) + private fun textWatcher(): TextWatcher { + return 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) {} + } } - private fun activateSendButton() { - bt_send.isEnabled = true - bt_send.setImageResource(R.drawable.ic_send_grey_active_24dp) + 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 { From 27d1c594631f682af2772f8df041c03c65644272 Mon Sep 17 00:00:00 2001 From: nerminnicevic Date: Wed, 4 Jan 2017 11:33:45 +0100 Subject: [PATCH 7/7] textwatcher as val --- .../qabelbox/chat/view/views/ChatFragment.kt | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) 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 235ab8f1..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 @@ -66,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( @@ -144,7 +153,7 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { bt_send.onClick { presenter.sendMessage() } toggleSendButton() - etText.addTextChangedListener(textWatcher()) + etText.addTextChangedListener(textWatcher) action_add_contact.setOnClickListener { presenter.handleContactAddClick() } action_ignore_contact.setOnClickListener { presenter.handleContactIgnoreClick() } emojiPopup = EmojiPopup.Builder.fromRootView(chat_root) @@ -158,16 +167,6 @@ class ChatFragment : ChatView, BaseFragment(), AnkoLogger { } } - private fun textWatcher(): TextWatcher { - return 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) {} - } - } fun toggleSendButton() { if (messageText.isBlank()) {