From d548160b46ca0c5fa9b2d069d4bf2275ffd70dfb Mon Sep 17 00:00:00 2001 From: Moez Bhatti Date: Sat, 28 Jul 2018 04:29:33 -0400 Subject: [PATCH] Make it easier to view entire conversation in QK Reply --- .../common/util/extensions/AdapterExtensions.kt | 8 ++++++++ .../QKSMS/feature/qkreply/QkReplyActivity.kt | 5 +---- .../res/drawable/ic_unfold_less_black_24dp.xml | 9 +++++++++ .../res/drawable/ic_unfold_more_black_24dp.xml | 9 +++++++++ .../src/main/res/layout/qkreply_activity.xml | 2 ++ presentation/src/main/res/menu/qkreply.xml | 16 ++++++++++------ 6 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 presentation/src/main/res/drawable/ic_unfold_less_black_24dp.xml create mode 100644 presentation/src/main/res/drawable/ic_unfold_more_black_24dp.xml diff --git a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt index 50a808db..b5e4540b 100644 --- a/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt +++ b/presentation/src/main/java/com/moez/QKSMS/common/util/extensions/AdapterExtensions.kt @@ -23,6 +23,14 @@ import androidx.recyclerview.widget.RecyclerView fun RecyclerView.Adapter<*>.autoScrollToStart(recyclerView: RecyclerView) { registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { + override fun onChanged() { + val layoutManager = recyclerView.layoutManager as? LinearLayoutManager ?: return + + if (layoutManager.stackFromEnd) { + recyclerView.scrollToPosition(itemCount - 1) + } + } + override fun onItemRangeInserted(positionStart: Int, itemCount: Int) { val layoutManager = recyclerView.layoutManager as? LinearLayoutManager ?: return diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt index de72ba7b..c273e87a 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/qkreply/QkReplyActivity.kt @@ -27,7 +27,6 @@ import android.view.Window import android.view.WindowManager import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProviders -import androidx.recyclerview.widget.LinearLayoutManager import com.jakewharton.rxbinding2.view.clicks import com.jakewharton.rxbinding2.widget.textChanges import com.moez.QKSMS.R @@ -68,10 +67,8 @@ class QkReplyActivity : QkThemedActivity(), QkReplyView { toolbar.clipToOutline = true - adapter.autoScrollToStart(messages) - - messages.layoutManager = LinearLayoutManager(this).apply { stackFromEnd = true } messages.adapter = adapter + messages.adapter?.autoScrollToStart(messages) // These theme attributes don't apply themselves on API 21 if (Build.VERSION.SDK_INT <= 22) { diff --git a/presentation/src/main/res/drawable/ic_unfold_less_black_24dp.xml b/presentation/src/main/res/drawable/ic_unfold_less_black_24dp.xml new file mode 100644 index 00000000..7282a975 --- /dev/null +++ b/presentation/src/main/res/drawable/ic_unfold_less_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/presentation/src/main/res/drawable/ic_unfold_more_black_24dp.xml b/presentation/src/main/res/drawable/ic_unfold_more_black_24dp.xml new file mode 100644 index 00000000..e9ba7540 --- /dev/null +++ b/presentation/src/main/res/drawable/ic_unfold_more_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/presentation/src/main/res/layout/qkreply_activity.xml b/presentation/src/main/res/layout/qkreply_activity.xml index d838382a..c04c2cdb 100644 --- a/presentation/src/main/res/layout/qkreply_activity.xml +++ b/presentation/src/main/res/layout/qkreply_activity.xml @@ -41,12 +41,14 @@ android:clipToPadding="false" android:paddingBottom="8dp" android:paddingTop="8dp" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_constrainedHeight="true" app:layout_constraintBottom_toBottomOf="@id/composeBackground" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_max="220dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/toolbar" + app:stackFromEnd="true" tools:listitem="@layout/message_list_item_in" /> - - + android:icon="@drawable/ic_unfold_more_black_24dp" + android:title="@string/qkreply_menu_expand" + app:showAsAction="ifRoom" /> + android:visible="false" + app:showAsAction="ifRoom" /> + +