diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt
index 9704e879..6137a041 100644
--- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/MainActivity.kt
@@ -33,6 +33,7 @@ import com.simplemobiletools.smsmessenger.models.Events
import com.simplemobiletools.smsmessenger.models.Message
import com.simplemobiletools.smsmessenger.models.SearchResult
import kotlinx.android.synthetic.main.activity_main.*
+import kotlinx.android.synthetic.main.menu_search.view.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@@ -93,7 +94,6 @@ class MainActivity : SimpleActivity() {
override fun onResume() {
super.onResume()
- setupToolbar(main_toolbar)
updateMenuColors()
getOrCreateConversationsAdapter().apply {
@@ -131,35 +131,35 @@ class MainActivity : SimpleActivity() {
}
override fun onBackPressed() {
- if (search_holder.isVisible()) {
- closeSearch()
+ if (main_menu.isSearchOpen) {
+ main_menu.closeSearch()
} else {
super.onBackPressed()
}
}
private fun setupOptionsMenu() {
- updateMenuColors()
-
- main_toolbar_search_icon.setOnClickListener {
- if (search_holder.isVisible()) {
- closeSearch()
- } else {
- main_toolbar_search.requestFocus()
- }
+ main_menu.top_toolbar.inflateMenu(R.menu.menu_main)
+ main_menu.setupMenu()
+ main_menu.onSearchOpenListener = {
+ search_holder.fadeIn()
+ conversations_fab.beGone()
}
- main_toolbar_search.setOnFocusChangeListener { v, hasFocus ->
- if (hasFocus) {
- openSearch()
- }
+ main_menu.onSearchClosedListener = {
+ search_holder.animate().alpha(0f).setDuration(SHORT_ANIMATION_DURATION).withEndAction {
+ search_holder.beGone()
+ searchTextChanged("", true)
+ }.start()
+
+ conversations_fab.beVisible()
}
- main_toolbar_search.onTextChangeListener {
- searchTextChanged(it)
+ main_menu.onSearchTextChangedListener = { text ->
+ searchTextChanged(text)
}
- main_toolbar.setOnMenuItemClickListener { menuItem ->
+ main_menu.top_toolbar.setOnMenuItemClickListener { menuItem ->
when (menuItem.itemId) {
R.id.import_messages -> tryImportMessages()
R.id.export_messages -> tryToExportMessages()
@@ -173,7 +173,7 @@ class MainActivity : SimpleActivity() {
}
private fun refreshMenuItems() {
- main_toolbar.menu.apply {
+ main_menu.top_toolbar.menu.apply {
findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(R.bool.hide_google_relations)
}
}
@@ -200,15 +200,8 @@ class MainActivity : SimpleActivity() {
}
private fun updateMenuColors() {
- val backgroundColor = getProperBackgroundColor()
- val contrastColor = backgroundColor.getContrastColor()
-
- updateStatusbarColor(backgroundColor)
- main_app_bar_layout.setBackgroundColor(backgroundColor)
- main_toolbar_search_icon.applyColorFilter(contrastColor)
- main_toolbar_holder.background?.applyColorFilter(getProperPrimaryColor().adjustAlpha(LOWER_ALPHA))
- main_toolbar_search.setTextColor(contrastColor)
- main_toolbar_search.setHintTextColor(contrastColor.adjustAlpha(MEDIUM_ALPHA))
+ updateStatusbarColor(getProperBackgroundColor())
+ main_menu.updateColors()
}
// while SEND_SMS and READ_SMS permissions are mandatory, READ_CONTACTS is optional. If we don't have it, we just won't be able to show the contact name in some cases
@@ -440,19 +433,11 @@ class MainActivity : SimpleActivity() {
.build()
}
- private fun openSearch() {
- search_holder.beVisible()
- main_toolbar_search_icon.setImageResource(R.drawable.ic_arrow_left_vector)
- }
+ private fun searchTextChanged(text: String, forceUpdate: Boolean = false) {
+ if (!main_menu.isSearchOpen && !forceUpdate) {
+ return
+ }
- private fun closeSearch() {
- hideKeyboard()
- main_toolbar_search.setText("")
- search_holder.beGone()
- main_toolbar_search_icon.setImageResource(R.drawable.ic_search_vector)
- }
-
- private fun searchTextChanged(text: String) {
lastSearchedText = text
search_placeholder_2.beGoneIf(text.length >= 2)
if (text.length >= 2) {
diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/views/MySearchMenu.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/views/MySearchMenu.kt
new file mode 100644
index 00000000..e465a106
--- /dev/null
+++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/views/MySearchMenu.kt
@@ -0,0 +1,71 @@
+package com.simplemobiletools.smsmessenger.views
+
+import android.app.Activity
+import android.content.Context
+import android.util.AttributeSet
+import com.google.android.material.appbar.AppBarLayout
+import com.simplemobiletools.commons.extensions.*
+import com.simplemobiletools.commons.helpers.LOWER_ALPHA
+import com.simplemobiletools.commons.helpers.MEDIUM_ALPHA
+import com.simplemobiletools.smsmessenger.R
+import com.simplemobiletools.smsmessenger.activities.SimpleActivity
+import kotlinx.android.synthetic.main.menu_search.view.*
+
+class MySearchMenu(context: Context, attrs: AttributeSet) : AppBarLayout(context, attrs) {
+ var isSearchOpen = false
+ var onSearchOpenListener: (() -> Unit)? = null
+ var onSearchClosedListener: (() -> Unit)? = null
+ var onSearchTextChangedListener: ((text: String) -> Unit)? = null
+
+ init {
+ inflate(context, R.layout.menu_search, this)
+ }
+
+ fun setupMenu() {
+ top_toolbar_search_icon.setOnClickListener {
+ if (isSearchOpen) {
+ closeSearch()
+ } else {
+ top_toolbar_search.requestFocus()
+ (context as? Activity)?.showKeyboard(top_toolbar_search)
+ }
+ }
+
+ top_toolbar_search.setOnFocusChangeListener { v, hasFocus ->
+ if (hasFocus) {
+ openSearch()
+ }
+ }
+
+ top_toolbar_search.onTextChangeListener {
+ onSearchTextChangedListener?.invoke(it)
+ }
+ }
+
+ private fun openSearch() {
+ isSearchOpen = true
+ onSearchOpenListener?.invoke()
+ top_toolbar_search_icon.setImageResource(R.drawable.ic_arrow_left_vector)
+ }
+
+ fun closeSearch() {
+ isSearchOpen = false
+ onSearchClosedListener?.invoke()
+ top_toolbar_search.setText("")
+ top_toolbar_search_icon.setImageResource(R.drawable.ic_search_vector)
+ (context as? Activity)?.hideKeyboard()
+ }
+
+ fun updateColors() {
+ val backgroundColor = context.getProperBackgroundColor()
+ val contrastColor = backgroundColor.getContrastColor()
+
+ setBackgroundColor(backgroundColor)
+ top_app_bar_layout.setBackgroundColor(backgroundColor)
+ top_toolbar_search_icon.applyColorFilter(contrastColor)
+ top_toolbar_holder.background?.applyColorFilter(context.getProperPrimaryColor().adjustAlpha(LOWER_ALPHA))
+ top_toolbar_search.setTextColor(contrastColor)
+ top_toolbar_search.setHintTextColor(contrastColor.adjustAlpha(MEDIUM_ALPHA))
+ (context as? SimpleActivity)?.updateTopBarColors(top_toolbar, backgroundColor)
+ }
+}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 50f675dc..9f46effc 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -5,61 +5,18 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="wrap_content" />
+ android:scrollbars="none"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
-
-
-
+
+
+
diff --git a/app/src/main/res/layout/menu_search.xml b/app/src/main/res/layout/menu_search.xml
new file mode 100644
index 00000000..7352b983
--- /dev/null
+++ b/app/src/main/res/layout/menu_search.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index c7ca15ce..c77cc142 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -17,7 +17,7 @@
android:id="@+id/more_apps_from_us"
android:icon="@drawable/ic_google_play_vector"
android:title="@string/more_apps_from_us"
- app:showAsAction="always" />
+ app:showAsAction="ifRoom" />
+ app:showAsAction="always" />
diff --git a/fastlane/metadata/android/hr/title.txt b/fastlane/metadata/android/hr/title.txt
index cca56e43..a7610bc9 100644
--- a/fastlane/metadata/android/hr/title.txt
+++ b/fastlane/metadata/android/hr/title.txt
@@ -1 +1 @@
-Jednostavan SMS slatelj
+Jednostavan SMS messenger