From ae48c1f899dfa540520df477617362c946772181 Mon Sep 17 00:00:00 2001 From: tibbi Date: Thu, 18 Jan 2018 23:37:42 +0100 Subject: [PATCH] adding a Search menu button --- app/src/main/AndroidManifest.xml | 8 ++++ .../calendar/activities/MainActivity.kt | 47 +++++++++++++++++++ .../calendar/helpers/IcsImporter.kt | 6 ++- app/src/main/res/menu/menu_main.xml | 6 +++ app/src/main/res/xml/searchable.xml | 5 ++ 5 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/xml/searchable.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dbe031abb..d4eb7662e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,6 +35,14 @@ + + + + + + diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt index a17f46093..ff5487f1e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/activities/MainActivity.kt @@ -1,5 +1,7 @@ package com.simplemobiletools.calendar.activities +import android.app.SearchManager +import android.content.Context import android.content.Intent import android.content.pm.ActivityInfo import android.database.ContentObserver @@ -8,7 +10,9 @@ import android.net.Uri import android.os.Bundle import android.os.Handler import android.provider.ContactsContract +import android.support.v4.view.MenuItemCompat import android.support.v4.view.ViewPager +import android.support.v7.widget.SearchView import android.util.SparseIntArray import android.view.Menu import android.view.MenuItem @@ -53,7 +57,9 @@ class MainActivity : SimpleActivity(), NavigationListener { private var showCalDAVRefreshToast = false private var mIsMonthSelected = false private var mShouldFilterBeVisible = false + private var mIsSearchOpen = false private var mCalDAVSyncHandler = Handler() + private var mSearchMenuItem: MenuItem? = null private var mDefaultWeeklyPage = 0 private var mDefaultMonthlyPage = 0 @@ -151,6 +157,7 @@ class MainActivity : SimpleActivity(), NavigationListener { super.onStop() mCalDAVSyncHandler.removeCallbacksAndMessages(null) contentResolver.unregisterContentObserver(calDAVSyncObserver) + closeSearch() } override fun onCreateOptionsMenu(menu: Menu): Boolean { @@ -160,6 +167,8 @@ class MainActivity : SimpleActivity(), NavigationListener { findItem(R.id.go_to_today).isVisible = shouldGoToTodayBeVisible() findItem(R.id.refresh_caldav_calendars).isVisible = config.caldavSync } + + setupSearch(menu) return true } @@ -201,6 +210,43 @@ class MainActivity : SimpleActivity(), NavigationListener { mStoredDayCode = Formatter.getTodayCode(applicationContext) } + private fun setupSearch(menu: Menu) { + val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager + mSearchMenuItem = menu.findItem(R.id.search) + (mSearchMenuItem!!.actionView as SearchView).apply { + setSearchableInfo(searchManager.getSearchableInfo(componentName)) + isSubmitButtonEnabled = false + setOnQueryTextListener(object : SearchView.OnQueryTextListener { + override fun onQueryTextSubmit(query: String) = false + + override fun onQueryTextChange(newText: String): Boolean { + if (mIsSearchOpen) { + + } + return true + } + }) + } + + MenuItemCompat.setOnActionExpandListener(mSearchMenuItem, object : MenuItemCompat.OnActionExpandListener { + override fun onMenuItemActionExpand(item: MenuItem?): Boolean { + mIsSearchOpen = true + return true + } + + override fun onMenuItemActionCollapse(item: MenuItem?): Boolean { + mIsSearchOpen = false + return true + } + }) + } + + private fun closeSearch() { + if (mSearchMenuItem != null) { + MenuItemCompat.collapseActionView(mSearchMenuItem) + } + } + private fun checkOpenIntents() { val dayCodeToOpen = intent.getStringExtra(DAY_CODE) ?: "" if (dayCodeToOpen.isNotEmpty()) { @@ -227,6 +273,7 @@ class MainActivity : SimpleActivity(), NavigationListener { RadioItem(EVENTS_LIST_VIEW, res.getString(R.string.simple_event_list))) RadioGroupDialog(this, items, config.storedView) { + closeSearch() updateView(it as Int) invalidateOptionsMenu() } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsImporter.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsImporter.kt index 67a998b8a..8b5018b27 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsImporter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/IcsImporter.kt @@ -100,8 +100,9 @@ class IcsImporter(val activity: SimpleActivity) { curLastModified = getTimestamp(line.substring(LAST_MODIFIED.length)) * 1000L } else if (line.startsWith(EXDATE)) { var value = line.substring(EXDATE.length) - if (value.endsWith('}')) + if (value.endsWith('}')) { value = value.substring(0, value.length - 1) + } curRepeatExceptions.add(getTimestamp(value)) } else if (line.startsWith(LOCATION)) { @@ -164,8 +165,9 @@ class IcsImporter(val activity: SimpleActivity) { return try { if (fullString.startsWith(';')) { val value = fullString.substring(fullString.lastIndexOf(':') + 1) - if (!value.contains("T")) + if (!value.contains("T")) { curFlags = curFlags or FLAG_ALL_DAY + } Parser().parseDateTimeValue(value) } else { diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 93f25c68e..bd7261da2 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -1,6 +1,12 @@ + +