mirror of
https://github.com/nextcloud/android.git
synced 2024-12-18 15:01:57 +03:00
Code cleanup
Signed-off-by: alperozturk <alper_ozturk@proton.me>
This commit is contained in:
parent
0106ba3478
commit
82526e07b2
2 changed files with 80 additions and 78 deletions
|
@ -25,6 +25,7 @@ import android.os.Bundle
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuInflater
|
import android.view.MenuInflater
|
||||||
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
|
@ -53,6 +54,7 @@ import com.owncloud.android.ui.unifiedsearch.IUnifiedSearchViewModel
|
||||||
import com.owncloud.android.ui.unifiedsearch.ProviderID
|
import com.owncloud.android.ui.unifiedsearch.ProviderID
|
||||||
import com.owncloud.android.ui.unifiedsearch.UnifiedSearchSection
|
import com.owncloud.android.ui.unifiedsearch.UnifiedSearchSection
|
||||||
import com.owncloud.android.ui.unifiedsearch.UnifiedSearchViewModel
|
import com.owncloud.android.ui.unifiedsearch.UnifiedSearchViewModel
|
||||||
|
import com.owncloud.android.ui.unifiedsearch.filterOutHiddenFiles
|
||||||
import com.owncloud.android.utils.DisplayUtils
|
import com.owncloud.android.utils.DisplayUtils
|
||||||
import com.owncloud.android.utils.theme.ViewThemeUtils
|
import com.owncloud.android.utils.theme.ViewThemeUtils
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
@ -68,6 +70,22 @@ class UnifiedSearchFragment : Fragment(), Injectable, UnifiedSearchListInterface
|
||||||
private var searchView: SearchView? = null
|
private var searchView: SearchView? = null
|
||||||
lateinit var vm: IUnifiedSearchViewModel
|
lateinit var vm: IUnifiedSearchViewModel
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val TAG = "UnifiedSearchFragment"
|
||||||
|
|
||||||
|
const val ARG_QUERY = "ARG_QUERY"
|
||||||
|
const val ARG_HIDDEN_FILES = "ARG_HIDDEN_FILES"
|
||||||
|
|
||||||
|
fun newInstance(query: String?, listOfHiddenFiles: ArrayList<String>): UnifiedSearchFragment {
|
||||||
|
val fragment = UnifiedSearchFragment()
|
||||||
|
val args = Bundle()
|
||||||
|
args.putString(ARG_QUERY, query)
|
||||||
|
args.putStringArrayList(ARG_HIDDEN_FILES, listOfHiddenFiles)
|
||||||
|
fragment.arguments = args
|
||||||
|
return fragment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var vmFactory: ViewModelFactory
|
lateinit var vmFactory: ViewModelFactory
|
||||||
|
|
||||||
|
@ -104,6 +122,42 @@ class UnifiedSearchFragment : Fragment(), Injectable, UnifiedSearchListInterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||||
|
_binding = ListFragmentBinding.inflate(inflater, container, false)
|
||||||
|
binding.listRoot.updatePadding(top = resources.getDimension(R.dimen.standard_half_padding).toInt())
|
||||||
|
setUpBinding()
|
||||||
|
|
||||||
|
setHasOptionsMenu(true)
|
||||||
|
return binding.root
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
setupFileDisplayActivity()
|
||||||
|
setupAdapter()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated("Deprecated in Java")
|
||||||
|
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||||
|
val item = menu.findItem(R.id.action_search)
|
||||||
|
setupSearchView(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupSearchView(item: MenuItem) {
|
||||||
|
(item.actionView as? SearchView?)?.run {
|
||||||
|
// Required to align with TextView width.
|
||||||
|
// Because this fragment is opened with TextView onClick on the previous screen
|
||||||
|
maxWidth = Integer.MAX_VALUE
|
||||||
|
viewThemeUtils.androidx.themeToolbarSearchView(this)
|
||||||
|
setQuery(vm.query.value, false)
|
||||||
|
setOnQueryTextListener(this@UnifiedSearchFragment)
|
||||||
|
isIconified = false
|
||||||
|
clearFocus()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setUpViewModel() {
|
private fun setUpViewModel() {
|
||||||
vm.searchResults.observe(this, this::onSearchResultChanged)
|
vm.searchResults.observe(this, this::onSearchResultChanged)
|
||||||
vm.isLoading.observe(this) { loading ->
|
vm.isLoading.observe(this) { loading ->
|
||||||
|
@ -156,25 +210,14 @@ class UnifiedSearchFragment : Fragment(), Injectable, UnifiedSearchListInterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
private fun setupFileDisplayActivity() {
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
(activity as? FileDisplayActivity)?.run {
|
||||||
_binding = ListFragmentBinding.inflate(inflater, container, false)
|
setMainFabVisible(false)
|
||||||
binding.listRoot.updatePadding(top = resources.getDimension(R.dimen.standard_half_padding).toInt())
|
updateActionBarTitleAndHomeButtonByString(null)
|
||||||
setUpBinding()
|
}
|
||||||
|
|
||||||
setHasOptionsMenu(true)
|
|
||||||
return binding.root
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
||||||
super.onViewCreated(view, savedInstanceState)
|
|
||||||
|
|
||||||
if (activity is FileDisplayActivity) {
|
|
||||||
val fileDisplayActivity = activity as FileDisplayActivity
|
|
||||||
fileDisplayActivity.setMainFabVisible(false)
|
|
||||||
fileDisplayActivity.updateActionBarTitleAndHomeButtonByString(null)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupAdapter() {
|
||||||
val gridLayoutManager = GridLayoutManager(requireContext(), 1)
|
val gridLayoutManager = GridLayoutManager(requireContext(), 1)
|
||||||
adapter = UnifiedSearchListAdapter(
|
adapter = UnifiedSearchListAdapter(
|
||||||
storageManager,
|
storageManager,
|
||||||
|
@ -190,18 +233,10 @@ class UnifiedSearchFragment : Fragment(), Injectable, UnifiedSearchListInterface
|
||||||
binding.listRoot.adapter = adapter
|
binding.listRoot.adapter = adapter
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
|
||||||
super.onDestroyView()
|
|
||||||
_binding = null
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun showFile(file: OCFile) {
|
private fun showFile(file: OCFile) {
|
||||||
activity.let {
|
(activity as? FileDisplayActivity)?.let {
|
||||||
if (activity is FileDisplayActivity) {
|
it.file = file
|
||||||
val fda = activity as FileDisplayActivity
|
it.showFile("")
|
||||||
fda.file = file
|
|
||||||
fda.showFile("")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,16 +252,7 @@ class UnifiedSearchFragment : Fragment(), Injectable, UnifiedSearchListInterface
|
||||||
fun onSearchResultChanged(result: List<UnifiedSearchSection>) {
|
fun onSearchResultChanged(result: List<UnifiedSearchSection>) {
|
||||||
Log_OC.d(TAG, "result")
|
Log_OC.d(TAG, "result")
|
||||||
binding.emptyList.emptyListView.visibility = View.GONE
|
binding.emptyList.emptyListView.visibility = View.GONE
|
||||||
|
adapter.setData(result.filterOutHiddenFiles(listOfHiddenFiles))
|
||||||
val filteredResult = result.map { searchSection ->
|
|
||||||
val entriesWithoutHiddenFiles = searchSection.entries.filterNot { entry ->
|
|
||||||
listOfHiddenFiles.contains(entry.title)
|
|
||||||
}
|
|
||||||
|
|
||||||
searchSection.copy(entries = entriesWithoutHiddenFiles)
|
|
||||||
}.filter { it.entries.isNotEmpty() }
|
|
||||||
|
|
||||||
adapter.setData(filteredResult)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@ -235,41 +261,6 @@ class UnifiedSearchFragment : Fragment(), Injectable, UnifiedSearchListInterface
|
||||||
setUpViewModel()
|
setUpViewModel()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated("Deprecated in Java")
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
|
||||||
val item = menu.findItem(R.id.action_search)
|
|
||||||
searchView = item.actionView as SearchView?
|
|
||||||
|
|
||||||
// Required to align with TextView width.
|
|
||||||
// Because this fragment is opened with TextView onClick on the previous screen
|
|
||||||
searchView?.maxWidth = Integer.MAX_VALUE
|
|
||||||
|
|
||||||
viewThemeUtils.androidx.themeToolbarSearchView(searchView!!)
|
|
||||||
|
|
||||||
searchView?.setQuery(vm.query.value, false)
|
|
||||||
searchView?.setOnQueryTextListener(this)
|
|
||||||
searchView?.isIconified = false
|
|
||||||
searchView?.clearFocus()
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private const val TAG = "UnifiedSearchFragment"
|
|
||||||
const val ARG_QUERY = "ARG_QUERY"
|
|
||||||
const val ARG_HIDDEN_FILES = "ARG_HIDDEN_FILES"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Public factory method to get fragment.
|
|
||||||
*/
|
|
||||||
fun newInstance(query: String?, listOfHiddenFiles: ArrayList<String>): UnifiedSearchFragment {
|
|
||||||
val fragment = UnifiedSearchFragment()
|
|
||||||
val args = Bundle()
|
|
||||||
args.putString(ARG_QUERY, query)
|
|
||||||
args.putStringArrayList(ARG_HIDDEN_FILES, listOfHiddenFiles)
|
|
||||||
fragment.arguments = args
|
|
||||||
return fragment
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onQueryTextSubmit(query: String): Boolean {
|
override fun onQueryTextSubmit(query: String): Boolean {
|
||||||
vm.setQuery(query)
|
vm.setQuery(query)
|
||||||
vm.initialQuery()
|
vm.initialQuery()
|
||||||
|
@ -278,11 +269,12 @@ class UnifiedSearchFragment : Fragment(), Injectable, UnifiedSearchListInterface
|
||||||
|
|
||||||
override fun onQueryTextChange(newText: String?): Boolean {
|
override fun onQueryTextChange(newText: String?): Boolean {
|
||||||
val closeButton = searchView?.findViewById<ImageView>(androidx.appcompat.R.id.search_close_btn)
|
val closeButton = searchView?.findViewById<ImageView>(androidx.appcompat.R.id.search_close_btn)
|
||||||
if (newText?.isEmpty() == true) {
|
closeButton?.visibility = if (newText?.isEmpty() == true) View.INVISIBLE else View.VISIBLE
|
||||||
closeButton?.visibility = View.INVISIBLE
|
|
||||||
} else {
|
|
||||||
closeButton?.visibility = View.VISIBLE
|
|
||||||
}
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDestroyView() {
|
||||||
|
super.onDestroyView()
|
||||||
|
_binding = null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,3 +10,13 @@ data class UnifiedSearchSection(
|
||||||
val entries: List<SearchResultEntry>,
|
val entries: List<SearchResultEntry>,
|
||||||
val hasMoreResults: Boolean
|
val hasMoreResults: Boolean
|
||||||
)
|
)
|
||||||
|
|
||||||
|
fun List<UnifiedSearchSection>.filterOutHiddenFiles(listOfHiddenFiles: List<String>): List<UnifiedSearchSection> {
|
||||||
|
return map { searchSection ->
|
||||||
|
val entriesWithoutHiddenFiles = searchSection.entries.filterNot { entry ->
|
||||||
|
listOfHiddenFiles.contains(entry.title)
|
||||||
|
}
|
||||||
|
|
||||||
|
searchSection.copy(entries = entriesWithoutHiddenFiles)
|
||||||
|
}.filter { it.entries.isNotEmpty() }
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue