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