From a60f920ac25cba7630f05336a0cd15ce5048e788 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Thu, 3 May 2018 16:23:18 +0200 Subject: [PATCH] Replace old autocomplete code Signed-off-by: Janne Koschinski <janne@kuschku.de> --- .../ui/chat/topic/TopicFragment.kt | 5 ++ .../aliasitem/AliasItemFragment.kt | 5 ++ .../util/ui/AutoCompleteRecyclerView.kt | 43 ---------- app/src/main/res/layout/fragment_topic.xml | 54 +++++++----- .../main/res/layout/settings_aliasitem.xml | 86 +++++++++++-------- 5 files changed, 90 insertions(+), 103 deletions(-) delete mode 100644 app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt index 6efb38992..4e2b76f84 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt @@ -21,6 +21,7 @@ package de.kuschku.quasseldroid.ui.chat.topic import android.arch.lifecycle.Observer import android.os.Bundle +import android.support.design.widget.BottomSheetBehavior import android.support.v7.widget.DefaultItemAnimator import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView @@ -102,11 +103,15 @@ class TopicFragment : SettingsFragment(), SettingsFragment.Savable { editorViewModel.lastWord.onNext(editorHelper.lastWord) if (autoCompleteSettings.prefix || autoCompleteSettings.auto) { + val autoCompleteBottomSheet = BottomSheetBehavior.from(autoCompleteList) autoCompleteAdapter.setOnClickListener(chatline::autoComplete) autoCompleteList.layoutManager = LinearLayoutManager(activity) autoCompleteList.itemAnimator = DefaultItemAnimator() autoCompleteList.adapter = autoCompleteAdapter autoCompleteHelper.addDataListener { + autoCompleteBottomSheet.state = + if (it.isEmpty()) BottomSheetBehavior.STATE_HIDDEN + else BottomSheetBehavior.STATE_COLLAPSED autoCompleteAdapter.submitList(it) } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt index e1e7cd6b3..c6aecdbd6 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt @@ -22,6 +22,7 @@ package de.kuschku.quasseldroid.ui.coresettings.aliasitem import android.app.Activity import android.content.Intent import android.os.Bundle +import android.support.design.widget.BottomSheetBehavior import android.support.v7.widget.DefaultItemAnimator import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView @@ -115,11 +116,15 @@ class AliasItemFragment : SettingsFragment(), SettingsFragment.Savable, editorViewModel.lastWord.onNext(editorHelper.lastWord) if (autoCompleteSettings.prefix || autoCompleteSettings.auto) { + val autoCompleteBottomSheet = BottomSheetBehavior.from(autoCompleteList) autoCompleteAdapter.setOnClickListener(expansion::autoComplete) autoCompleteList.layoutManager = LinearLayoutManager(activity) autoCompleteList.itemAnimator = DefaultItemAnimator() autoCompleteList.adapter = autoCompleteAdapter autoCompleteHelper.addDataListener { + autoCompleteBottomSheet.state = + if (it.isEmpty()) BottomSheetBehavior.STATE_HIDDEN + else BottomSheetBehavior.STATE_COLLAPSED autoCompleteAdapter.submitList(it) } } diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt b/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt deleted file mode 100644 index 53d7209fc..000000000 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/AutoCompleteRecyclerView.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Quasseldroid - Quassel client for Android - * - * Copyright (c) 2018 Janne Koschinski - * Copyright (c) 2018 The Quassel Project - * - * This program is free software: you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3 as published - * by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -package de.kuschku.quasseldroid.util.ui - -import android.content.Context -import android.support.v7.widget.RecyclerView -import android.util.AttributeSet -import de.kuschku.quasseldroid.R - -class AutoCompleteRecyclerView : RecyclerView { - constructor(context: Context?) : super(context) - constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) - constructor(context: Context?, attrs: AttributeSet?, defStyle: Int) : super( - context, attrs, defStyle - ) - - override fun onMeasure(widthSpec: Int, heightSpec: Int) { - super.onMeasure( - widthSpec, - MeasureSpec.makeMeasureSpec( - resources.getDimensionPixelSize(R.dimen.autocomplete_max_height), - MeasureSpec.AT_MOST - ) - ) - } -} diff --git a/app/src/main/res/layout/fragment_topic.xml b/app/src/main/res/layout/fragment_topic.xml index e672208ed..fe0600db4 100644 --- a/app/src/main/res/layout/fragment_topic.xml +++ b/app/src/main/res/layout/fragment_topic.xml @@ -25,35 +25,45 @@ android:minHeight="240dp" android:orientation="vertical"> - <ScrollView - android:id="@+id/chatline_scroller" + <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1"> - <de.kuschku.quasseldroid.ui.chat.input.RichEditText - android:id="@+id/chatline" + <ScrollView + android:id="@+id/chatline_scroller" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <de.kuschku.quasseldroid.ui.chat.input.RichEditText + android:id="@+id/chatline" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@android:color/transparent" + android:gravity="center_vertical" + android:hint="@string/label_placeholder_topic" + android:imeOptions="flagNoExtractUi" + android:inputType="textCapSentences|textAutoCorrect|textShortMessage|textMultiLine" + android:minHeight="?attr/actionBarSize" + android:paddingBottom="8dp" + android:paddingLeft="20dp" + android:paddingRight="20dp" + android:paddingTop="8dp" + android:textColor="?attr/colorForeground" + android:textSize="16sp" /> + </ScrollView> + + <android.support.v7.widget.RecyclerView + android:id="@+id/autocomplete_list" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@android:color/transparent" - android:gravity="center_vertical" - android:hint="@string/label_placeholder_topic" - android:imeOptions="flagNoExtractUi" - android:inputType="textCapSentences|textAutoCorrect|textShortMessage|textMultiLine" - android:minHeight="?attr/actionBarSize" - android:paddingBottom="8dp" - android:paddingLeft="20dp" - android:paddingRight="20dp" - android:paddingTop="8dp" - android:textColor="?attr/colorForeground" - android:textSize="16sp" /> - </ScrollView> + android:background="?colorBackgroundCard" + app:behavior_hideable="true" + app:behavior_peekHeight="@dimen/autocomplete_max_height" + app:layout_behavior="@string/bottom_sheet_behavior" + tools:listitem="@layout/widget_nick" /> - <de.kuschku.quasseldroid.util.ui.AutoCompleteRecyclerView - android:id="@+id/autocomplete_list" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:listitem="@layout/widget_nick" /> + </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/settings_aliasitem.xml b/app/src/main/res/layout/settings_aliasitem.xml index 8fe9a1594..9418f42c9 100644 --- a/app/src/main/res/layout/settings_aliasitem.xml +++ b/app/src/main/res/layout/settings_aliasitem.xml @@ -30,52 +30,62 @@ android:layout_height="wrap_content" android:orientation="vertical"> - <LinearLayout style="@style/Widget.CoreSettings.Wrapper"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="48dp"> - - <android.support.design.widget.TextInputLayout - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:hint="@string/settings_aliasitem_name"> - - <android.support.design.widget.TextInputEditText - android:id="@+id/name" - style="@style/Widget.CoreSettings.EditText" - tools:text="back" /> - </android.support.design.widget.TextInputLayout> - </LinearLayout> - </LinearLayout> - - <ScrollView + <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1"> <LinearLayout style="@style/Widget.CoreSettings.Wrapper"> - <android.support.design.widget.TextInputLayout - style="@style/Widget.CoreSettings.PrimaryItemSwitch" - android:hint="@string/settings_aliasitem_expansion"> - - <de.kuschku.quasseldroid.ui.chat.input.RichEditText - android:id="@+id/expansion" - style="@style/Widget.CoreSettings.EditText" - android:imeOptions="flagNoExtractUi" - android:inputType="textMultiLine" - android:textColor="?attr/colorForeground" - android:textSize="16sp" /> - </android.support.design.widget.TextInputLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="48dp"> + + <android.support.design.widget.TextInputLayout + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:hint="@string/settings_aliasitem_name"> + + <android.support.design.widget.TextInputEditText + android:id="@+id/name" + style="@style/Widget.CoreSettings.EditText" + tools:text="back" /> + </android.support.design.widget.TextInputLayout> + </LinearLayout> </LinearLayout> - </ScrollView> - <de.kuschku.quasseldroid.util.ui.AutoCompleteRecyclerView - android:id="@+id/autocomplete_list" - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:listitem="@layout/widget_nick" /> + <ScrollView + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout style="@style/Widget.CoreSettings.Wrapper"> + + <android.support.design.widget.TextInputLayout + style="@style/Widget.CoreSettings.PrimaryItemSwitch" + android:hint="@string/settings_aliasitem_expansion"> + + <de.kuschku.quasseldroid.ui.chat.input.RichEditText + android:id="@+id/expansion" + style="@style/Widget.CoreSettings.EditText" + android:imeOptions="flagNoExtractUi" + android:inputType="textMultiLine" + android:textColor="?attr/colorForeground" + android:textSize="16sp" /> + </android.support.design.widget.TextInputLayout> + </LinearLayout> + </ScrollView> + + <android.support.v7.widget.RecyclerView + android:id="@+id/autocomplete_list" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?colorBackgroundCard" + app:behavior_hideable="true" + app:behavior_peekHeight="@dimen/autocomplete_max_height" + app:layout_behavior="@string/bottom_sheet_behavior" + tools:listitem="@layout/widget_nick" /> + + </android.support.design.widget.CoordinatorLayout> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" -- GitLab