mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
move event searching into Room
This commit is contained in:
@@ -738,9 +738,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
mLatestSearchQuery = text
|
mLatestSearchQuery = text
|
||||||
search_placeholder_2.beGoneIf(text.length >= 2)
|
search_placeholder_2.beGoneIf(text.length >= 2)
|
||||||
if (text.length >= 2) {
|
if (text.length >= 2) {
|
||||||
dbHelper.getEventsWithSearchQuery(text) { searchedText, events ->
|
EventsHelper(applicationContext).getEventsWithSearchQuery(text, this) { searchedText, events ->
|
||||||
if (searchedText == mLatestSearchQuery) {
|
if (searchedText == mLatestSearchQuery) {
|
||||||
runOnUiThread {
|
|
||||||
search_results_list.beVisibleIf(events.isNotEmpty())
|
search_results_list.beVisibleIf(events.isNotEmpty())
|
||||||
search_placeholder.beVisibleIf(events.isEmpty())
|
search_placeholder.beVisibleIf(events.isEmpty())
|
||||||
val listItems = getEventListItems(events)
|
val listItems = getEventListItems(events)
|
||||||
@@ -756,7 +755,6 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener {
|
|||||||
search_results_list.adapter = eventsAdapter
|
search_results_list.adapter = eventsAdapter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
search_placeholder.beVisible()
|
search_placeholder.beVisible()
|
||||||
search_results_list.beGone()
|
search_results_list.beGone()
|
||||||
|
@@ -98,20 +98,6 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEventsWithSearchQuery(text: String, callback: (searchedText: String, events: List<Event>) -> Unit) {
|
|
||||||
Thread {
|
|
||||||
val searchQuery = "%$text%"
|
|
||||||
val selection = "$COL_TITLE LIKE ? OR $COL_LOCATION LIKE ? OR $COL_DESCRIPTION LIKE ?"
|
|
||||||
val selectionArgs = arrayOf(searchQuery, searchQuery, searchQuery)
|
|
||||||
val cursor = getEventsCursor(selection, selectionArgs)
|
|
||||||
val events = fillEvents(cursor)
|
|
||||||
|
|
||||||
val displayEventTypes = context.config.displayEventTypes
|
|
||||||
val filteredEvents = events.filter { displayEventTypes.contains(it.eventType.toString()) }
|
|
||||||
callback(text, filteredEvents)
|
|
||||||
}.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getEvents(fromTS: Int, toTS: Int, eventId: Long = -1L, applyTypeFilter: Boolean = true, callback: (events: ArrayList<Event>) -> Unit) {
|
fun getEvents(fromTS: Int, toTS: Int, eventId: Long = -1L, applyTypeFilter: Boolean = true, callback: (events: ArrayList<Event>) -> Unit) {
|
||||||
Thread {
|
Thread {
|
||||||
getEventsInBackground(fromTS, toTS, eventId, applyTypeFilter, callback)
|
getEventsInBackground(fromTS, toTS, eventId, applyTypeFilter, callback)
|
||||||
|
@@ -191,4 +191,16 @@ class EventsHelper(val context: Context) {
|
|||||||
callback(eventIds.isNotEmpty())
|
callback(eventIds.isNotEmpty())
|
||||||
}.start()
|
}.start()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getEventsWithSearchQuery(text: String, activity: Activity, callback: (searchedText: String, events: List<Event>) -> Unit) {
|
||||||
|
Thread {
|
||||||
|
val searchQuery = "%$text%"
|
||||||
|
val events = context.eventsDB.getEventsForSearch(searchQuery)
|
||||||
|
val displayEventTypes = context.config.displayEventTypes
|
||||||
|
val filteredEvents = events.filter { displayEventTypes.contains(it.eventType.toString()) }
|
||||||
|
activity.runOnUiThread {
|
||||||
|
callback(text, filteredEvents)
|
||||||
|
}
|
||||||
|
}.start()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,6 +50,9 @@ interface EventsDao {
|
|||||||
@Query("SELECT id FROM events WHERE source = :source AND import_id != \"\"")
|
@Query("SELECT id FROM events WHERE source = :source AND import_id != \"\"")
|
||||||
fun getCalDAVCalendarEvents(source: String): List<Long>
|
fun getCalDAVCalendarEvents(source: String): List<Long>
|
||||||
|
|
||||||
|
@Query("SELECT * FROM events WHERE title LIKE :searchQuery OR location LIKE :searchQuery OR description LIKE :searchQuery")
|
||||||
|
fun getEventsForSearch(searchQuery: String): List<Event>
|
||||||
|
|
||||||
@Query("UPDATE events SET event_type = $REGULAR_EVENT_TYPE_ID WHERE event_type = :eventTypeId")
|
@Query("UPDATE events SET event_type = $REGULAR_EVENT_TYPE_ID WHERE event_type = :eventTypeId")
|
||||||
fun resetEventsWithType(eventTypeId: Long)
|
fun resetEventsWithType(eventTypeId: Long)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user