Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert SearchActionModeCallback to Kotlin #4652

Merged
merged 11 commits into from
May 22, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -328,18 +328,10 @@ class InsertMediaActivity : BaseActivity() {
private inner class SearchCallback : SearchActionModeCallback() {
var searchActionProvider: SearchActionProvider? = null
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
searchActionProvider = SearchActionProvider(this@InsertMediaActivity, searchHintString,
object : SearchActionProvider.Callback {
override fun onQueryTextChange(s: String) {
onQueryChange(s)
}

override fun onQueryTextFocusChange() {
}
})
searchActionProvider = SearchActionProvider(this@InsertMediaActivity, getSearchHintString()) { onQueryChange(it) }
searchActionProvider?.setQueryText(viewModel.searchQuery)
searchActionProvider?.selectAllQueryTexts()
val menuItem = menu.add(searchHintString)
val menuItem = menu.add(getSearchHintString())
MenuItemCompat.setActionProvider(menuItem, searchActionProvider)
actionMode = mode
binding.imageInfoContainer.isVisible = false
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/org/wikipedia/history/HistoryFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ class HistoryFragment : Fragment(), BackPressedHandler {
}

private fun beginMultiSelect() {
if (SearchActionModeCallback.`is`(actionMode)) {
if (SearchActionModeCallback.matches(actionMode)) {
finishActionMode()
}
}
Expand Down Expand Up @@ -231,7 +231,7 @@ class HistoryFragment : Fragment(), BackPressedHandler {

private fun onLoadItemsFinished(items: List<Any>) {
val list = mutableListOf<Any>()
if (!SearchActionModeCallback.`is`(actionMode)) {
if (!SearchActionModeCallback.matches(actionMode)) {
list.add(SearchBar())
}
list.addAll(items)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package org.wikipedia.history

import android.content.Context
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.view.ActionMode
import androidx.core.view.MenuItemCompat
import org.wikipedia.views.SearchActionProvider

abstract class SearchActionModeCallback : ActionMode.Callback {

protected abstract fun getSearchHintString(): String
protected abstract fun onQueryChange(s: String)
protected abstract fun getParentContext(): Context

override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
mode.tag = ACTION_MODE_TAG
val menuItem = menu.add(getSearchHintString())
// Manually setup a action provider to be able to adjust the left margin of the search field.
MenuItemCompat.setActionProvider(menuItem, SearchActionProvider(getParentContext(), getSearchHintString()) { onQueryChange(it) })
return true
}

override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean {
return true
}

override fun onActionItemClicked(mode: ActionMode, menuItem: MenuItem): Boolean {
return false
}

override fun onDestroyActionMode(mode: ActionMode) {
}

companion object {
const val ACTION_MODE_TAG: String = "searchActionMode"

fun matches(mode: ActionMode?): Boolean {
return ACTION_MODE_TAG == mode?.tag
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ package org.wikipedia.language
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.*
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.activity.viewModels
import androidx.appcompat.view.ActionMode
Expand All @@ -19,7 +23,6 @@ import org.wikipedia.settings.languages.WikipediaLanguagesFragment
import org.wikipedia.util.DeviceUtil
import org.wikipedia.util.Resource
import org.wikipedia.util.StringUtil
import java.util.*

class LanguagesListActivity : BaseActivity() {
private lateinit var binding: ActivityLanguagesListBinding
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ class NotificationActivity : BaseActivity() {
super.onResume()
actionMode?.let {
postprocessAndDisplay()
if (SearchActionModeCallback.`is`(it)) {
if (SearchActionModeCallback.matches(it)) {
searchActionModeCallback.refreshProvider()
}
}
Expand Down Expand Up @@ -318,7 +318,7 @@ class NotificationActivity : BaseActivity() {
}

private fun beginMultiSelect() {
if (SearchActionModeCallback.`is`(actionMode)) {
if (SearchActionModeCallback.matches(actionMode)) {
finishActionMode()
}
if (!MultiSelectActionModeCallback.isTagType(actionMode)) {
Expand Down Expand Up @@ -582,15 +582,12 @@ class NotificationActivity : BaseActivity() {
var searchAndFilterActionProvider: SearchAndFilterActionProvider? = null
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
adjustRefreshViewLayoutParams(true)
searchAndFilterActionProvider = SearchAndFilterActionProvider(this@NotificationActivity, searchHintString,
searchAndFilterActionProvider = SearchAndFilterActionProvider(this@NotificationActivity, getSearchHintString(),
object : SearchAndFilterActionProvider.Callback {
override fun onQueryTextChange(s: String) {
onQueryChange(s)
}

override fun onQueryTextFocusChange() {
}

override fun onFilterIconClick() {
DeviceUtil.hideSoftKeyboard(this@NotificationActivity)
startActivity(NotificationFilterActivity.newIntent(this@NotificationActivity))
Expand All @@ -605,7 +602,7 @@ class NotificationActivity : BaseActivity() {
}
})

val menuItem = menu.add(searchHintString)
val menuItem = menu.add(getSearchHintString())

MenuItemCompat.setActionProvider(menuItem, searchAndFilterActionProvider)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -481,15 +481,12 @@ class EditHistoryListActivity : BaseActivity() {
val searchBarFilterIcon get() = searchAndFilterActionProvider?.filterIcon

override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
searchAndFilterActionProvider = SearchAndFilterActionProvider(this@EditHistoryListActivity, searchHintString,
searchAndFilterActionProvider = SearchAndFilterActionProvider(this@EditHistoryListActivity, getSearchHintString(),
object : SearchAndFilterActionProvider.Callback {
override fun onQueryTextChange(s: String) {
onQueryChange(s)
}

override fun onQueryTextFocusChange() {
}

override fun onFilterIconClick() {
showFilterOverflowMenu()
}
Expand All @@ -503,7 +500,7 @@ class EditHistoryListActivity : BaseActivity() {
}
})

val menuItem = menu.add(searchHintString)
val menuItem = menu.add(getSearchHintString())

MenuItemCompat.setActionProvider(menuItem, searchAndFilterActionProvider)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@ import android.content.Intent
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.view.*
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
Expand All @@ -29,7 +34,11 @@ import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.disposables.CompositeDisposable
import io.reactivex.rxjava3.functions.Consumer
import io.reactivex.rxjava3.schedulers.Schedulers
import kotlinx.coroutines.*
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Runnable
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.wikipedia.Constants
import org.wikipedia.Constants.InvokeSource
import org.wikipedia.R
Expand All @@ -51,10 +60,19 @@ import org.wikipedia.readinglist.database.ReadingListPage
import org.wikipedia.readinglist.sync.ReadingListSyncEvent
import org.wikipedia.settings.Prefs
import org.wikipedia.settings.RemoteConfig
import org.wikipedia.util.*
import org.wikipedia.util.DeviceUtil
import org.wikipedia.util.DimenUtil
import org.wikipedia.util.FeedbackUtil
import org.wikipedia.util.ResourceUtil
import org.wikipedia.util.ShareUtil
import org.wikipedia.util.log.L
import org.wikipedia.views.*
import org.wikipedia.views.CircularProgressBar
import org.wikipedia.views.DefaultViewHolder
import org.wikipedia.views.DrawableItemDecoration
import org.wikipedia.views.MultiSelectActionModeCallback
import org.wikipedia.views.MultiSelectActionModeCallback.Companion.isTagType
import org.wikipedia.views.PageItemView
import org.wikipedia.views.SwipeableItemTouchHelperCallback

class ReadingListFragment : Fragment(), MenuProvider, ReadingListItemActionsDialog.Callback {

Expand Down Expand Up @@ -408,7 +426,7 @@ class ReadingListFragment : Fragment(), MenuProvider, ReadingListItemActionsDial
}

private fun beginMultiSelect() {
if (SearchActionModeCallback.`is`(actionMode)) {
if (SearchActionModeCallback.matches(actionMode)) {
finishActionMode()
}
if (!isTagType(actionMode)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ class SuggestedEditsRecentEditsFragment : Fragment(), MenuProvider {
override fun onResume() {
super.onResume()
actionMode?.let {
if (SearchActionModeCallback.`is`(it)) {
if (SearchActionModeCallback.matches(it)) {
searchActionModeCallback.refreshProvider()
}
}
Expand Down Expand Up @@ -427,15 +427,12 @@ class SuggestedEditsRecentEditsFragment : Fragment(), MenuProvider {
var searchAndFilterActionProvider: SearchAndFilterActionProvider? = null

override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
searchAndFilterActionProvider = SearchAndFilterActionProvider(requireContext(), searchHintString,
searchAndFilterActionProvider = SearchAndFilterActionProvider(requireContext(), getSearchHintString(),
object : SearchAndFilterActionProvider.Callback {
override fun onQueryTextChange(s: String) {
onQueryChange(s)
}

override fun onQueryTextFocusChange() {
}

override fun onFilterIconClick() {
launchFilterActivity.launch(SuggestedEditsRecentEditsFilterActivity.newIntent(requireContext()))
}
Expand All @@ -449,7 +446,7 @@ class SuggestedEditsRecentEditsFragment : Fragment(), MenuProvider {
}
})

val menuItem = menu.add(searchHintString)
val menuItem = menu.add(getSearchHintString())

MenuItemCompat.setActionProvider(menuItem, searchAndFilterActionProvider)

Expand Down
12 changes: 2 additions & 10 deletions app/src/main/java/org/wikipedia/talk/TalkTopicActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -225,17 +225,9 @@ class TalkTopicActivity : BaseActivity() {
private inner class SearchCallback : SearchActionModeCallback() {
var searchActionProvider: SearchActionProvider? = null
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
searchActionProvider = SearchActionProvider(this@TalkTopicActivity, searchHintString,
object : SearchActionProvider.Callback {
override fun onQueryTextChange(s: String) {
onQueryChange(s)
}

override fun onQueryTextFocusChange() {
}
})
searchActionProvider = SearchActionProvider(this@TalkTopicActivity, getSearchHintString()) { onQueryChange(it) }

val menuItem = menu.add(searchHintString)
val menuItem = menu.add(getSearchHintString())

MenuItemCompat.setActionProvider(menuItem, searchActionProvider)
searchActionProvider?.setQueryText(viewModel.currentSearchQuery)
Expand Down
12 changes: 2 additions & 10 deletions app/src/main/java/org/wikipedia/talk/TalkTopicsActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -528,17 +528,9 @@ class TalkTopicsActivity : BaseActivity(), WatchlistExpiryDialog.Callback {
private inner class SearchCallback : SearchActionModeCallback() {
var searchActionProvider: SearchActionProvider? = null
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
searchActionProvider = SearchActionProvider(this@TalkTopicsActivity, searchHintString,
object : SearchActionProvider.Callback {
override fun onQueryTextChange(s: String) {
onQueryChange(s)
}

override fun onQueryTextFocusChange() {
}
})
searchActionProvider = SearchActionProvider(this@TalkTopicsActivity, getSearchHintString()) { onQueryChange(it) }

val menuItem = menu.add(searchHintString)
val menuItem = menu.add(getSearchHintString())

MenuItemCompat.setActionProvider(menuItem, searchActionProvider)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -362,15 +362,12 @@ class UserContribListActivity : BaseActivity() {
var searchAndFilterActionProvider: SearchAndFilterActionProvider? = null

override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
searchAndFilterActionProvider = SearchAndFilterActionProvider(this@UserContribListActivity, searchHintString,
searchAndFilterActionProvider = SearchAndFilterActionProvider(this@UserContribListActivity, getSearchHintString(),
object : SearchAndFilterActionProvider.Callback {
override fun onQueryTextChange(s: String) {
onQueryChange(s)
}

override fun onQueryTextFocusChange() {
}

override fun onFilterIconClick() {
launchFilterActivity.launch(UserContribFilterActivity.newIntent(this@UserContribListActivity))
}
Expand All @@ -384,7 +381,7 @@ class UserContribListActivity : BaseActivity() {
}
})

val menuItem = menu.add(searchHintString)
val menuItem = menu.add(getSearchHintString())

MenuItemCompat.setActionProvider(menuItem, searchAndFilterActionProvider)

Expand Down
Loading
Loading