mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
implementing Search at the Select Time Zone screen
This commit is contained in:
@ -14,9 +14,9 @@ import com.simplemobiletools.calendar.pro.helpers.TIME_ZONE
|
|||||||
import com.simplemobiletools.calendar.pro.helpers.getAllTimeZones
|
import com.simplemobiletools.calendar.pro.helpers.getAllTimeZones
|
||||||
import com.simplemobiletools.calendar.pro.models.MyTimeZone
|
import com.simplemobiletools.calendar.pro.models.MyTimeZone
|
||||||
import kotlinx.android.synthetic.main.activity_select_time_zone.*
|
import kotlinx.android.synthetic.main.activity_select_time_zone.*
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
class SelectTimeZoneActivity : SimpleActivity() {
|
class SelectTimeZoneActivity : SimpleActivity() {
|
||||||
private var mIsSearchOpen = false
|
|
||||||
private var mSearchMenuItem: MenuItem? = null
|
private var mSearchMenuItem: MenuItem? = null
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
@ -53,9 +53,7 @@ class SelectTimeZoneActivity : SimpleActivity() {
|
|||||||
override fun onQueryTextSubmit(query: String) = false
|
override fun onQueryTextSubmit(query: String) = false
|
||||||
|
|
||||||
override fun onQueryTextChange(newText: String): Boolean {
|
override fun onQueryTextChange(newText: String): Boolean {
|
||||||
if (mIsSearchOpen) {
|
|
||||||
searchQueryChanged(newText)
|
searchQueryChanged(newText)
|
||||||
}
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -64,13 +62,11 @@ class SelectTimeZoneActivity : SimpleActivity() {
|
|||||||
mSearchMenuItem!!.expandActionView()
|
mSearchMenuItem!!.expandActionView()
|
||||||
MenuItemCompat.setOnActionExpandListener(mSearchMenuItem, object : MenuItemCompat.OnActionExpandListener {
|
MenuItemCompat.setOnActionExpandListener(mSearchMenuItem, object : MenuItemCompat.OnActionExpandListener {
|
||||||
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
|
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
|
||||||
mIsSearchOpen = true
|
|
||||||
searchQueryChanged("")
|
searchQueryChanged("")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
|
override fun onMenuItemActionCollapse(item: MenuItem?): Boolean {
|
||||||
mIsSearchOpen = false
|
|
||||||
finish()
|
finish()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@ -78,6 +74,9 @@ class SelectTimeZoneActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun searchQueryChanged(text: String) {
|
private fun searchQueryChanged(text: String) {
|
||||||
|
val timeZones = getAllTimeZones().filter {
|
||||||
|
it.zoneName.toLowerCase(Locale.getDefault()).contains(text.toLowerCase(Locale.getDefault()))
|
||||||
|
}.toMutableList() as ArrayList<MyTimeZone>
|
||||||
|
(select_time_zone_list.adapter as? SelectTimeZoneAdapter)?.updateTimeZones(timeZones)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ import com.simplemobiletools.calendar.pro.models.MyTimeZone
|
|||||||
import kotlinx.android.synthetic.main.item_select_time_zone.view.*
|
import kotlinx.android.synthetic.main.item_select_time_zone.view.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class SelectTimeZoneAdapter(val activity: SimpleActivity, val timeZones: ArrayList<MyTimeZone>, val itemClick: (Any) -> Unit) :
|
class SelectTimeZoneAdapter(val activity: SimpleActivity, var timeZones: ArrayList<MyTimeZone>, val itemClick: (Any) -> Unit) :
|
||||||
RecyclerView.Adapter<SelectTimeZoneAdapter.ViewHolder>() {
|
RecyclerView.Adapter<SelectTimeZoneAdapter.ViewHolder>() {
|
||||||
val textColor = activity.config.textColor
|
val textColor = activity.config.textColor
|
||||||
|
|
||||||
@ -26,6 +26,11 @@ class SelectTimeZoneAdapter(val activity: SimpleActivity, val timeZones: ArrayLi
|
|||||||
|
|
||||||
override fun getItemCount() = timeZones.size
|
override fun getItemCount() = timeZones.size
|
||||||
|
|
||||||
|
fun updateTimeZones(newTimeZones: ArrayList<MyTimeZone>) {
|
||||||
|
timeZones = newTimeZones.clone() as ArrayList<MyTimeZone>
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
|
||||||
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||||
fun bindView(timeZone: MyTimeZone): View {
|
fun bindView(timeZone: MyTimeZone): View {
|
||||||
itemView.apply {
|
itemView.apply {
|
||||||
|
@ -4,7 +4,6 @@ import java.io.Serializable
|
|||||||
|
|
||||||
// sample MyTimeZone(id=1, title="GMT+1", zoneName="Europe/Bratislava")
|
// sample MyTimeZone(id=1, title="GMT+1", zoneName="Europe/Bratislava")
|
||||||
data class MyTimeZone(val id: Int, var title: String, val zoneName: String) : Serializable {
|
data class MyTimeZone(val id: Int, var title: String, val zoneName: String) : Serializable {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val serialVersionUID = -32456354132688616L
|
private const val serialVersionUID = -32456354132688616L
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user