浏览代码

Code cleanup

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 年之前
父节点
当前提交
82526e07b2

+ 70 - 78
app/src/main/java/com/owncloud/android/ui/fragment/UnifiedSearchFragment.kt

@@ -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")
-    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)
-
-        if (activity is FileDisplayActivity) {
-            val fileDisplayActivity = activity as FileDisplayActivity
-            fileDisplayActivity.setMainFabVisible(false)
-            fileDisplayActivity.updateActionBarTitleAndHomeButtonByString(null)
+    private fun setupFileDisplayActivity() {
+        (activity as? FileDisplayActivity)?.run {
+            setMainFabVisible(false)
+            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 {
-            if (activity is FileDisplayActivity) {
-                val fda = activity as FileDisplayActivity
-                fda.file = file
-                fda.showFile("")
-            }
+        (activity as? FileDisplayActivity)?.let {
+            it.file = file
+            it.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
-
-        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)
+        adapter.setData(result.filterOutHiddenFiles(listOfHiddenFiles))
     }
     }
 
 
     @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 = View.INVISIBLE
-        } else {
-            closeButton?.visibility = View.VISIBLE
-        }
+        closeButton?.visibility = if (newText?.isEmpty() == true) View.INVISIBLE else View.VISIBLE
         return true
         return true
     }
     }
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        _binding = null
+    }
 }
 }

+ 10 - 0
app/src/main/java/com/owncloud/android/ui/unifiedsearch/UnifiedSearchModel.kt

@@ -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() }
+}