mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 14:20:30 +05:30
restore all functionality
This commit is contained in:
parent
022281e107
commit
329ccaeb00
@ -21,7 +21,6 @@ import androidx.appcompat.widget.SearchView
|
|||||||
import androidx.constraintlayout.motion.widget.MotionLayout
|
import androidx.constraintlayout.motion.widget.MotionLayout
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
import androidx.fragment.app.replace
|
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import androidx.navigation.findNavController
|
import androidx.navigation.findNavController
|
||||||
import androidx.navigation.ui.setupWithNavController
|
import androidx.navigation.ui.setupWithNavController
|
||||||
@ -30,7 +29,6 @@ import com.github.libretube.Globals
|
|||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.databinding.ActivityMainBinding
|
import com.github.libretube.databinding.ActivityMainBinding
|
||||||
import com.github.libretube.fragments.PlayerFragment
|
import com.github.libretube.fragments.PlayerFragment
|
||||||
import com.github.libretube.fragments.SearchFragment
|
|
||||||
import com.github.libretube.preferences.PreferenceHelper
|
import com.github.libretube.preferences.PreferenceHelper
|
||||||
import com.github.libretube.preferences.PreferenceKeys
|
import com.github.libretube.preferences.PreferenceKeys
|
||||||
import com.github.libretube.services.ClosingService
|
import com.github.libretube.services.ClosingService
|
||||||
@ -49,7 +47,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
lateinit var navController: NavController
|
lateinit var navController: NavController
|
||||||
private var startFragmentId = R.id.homeFragment
|
private var startFragmentId = R.id.homeFragment
|
||||||
var autoRotationEnabled = false
|
var autoRotationEnabled = false
|
||||||
private var searchFragment: SearchFragment? = null
|
lateinit var searchView: SearchView
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
// set the app theme (e.g. Material You)
|
// set the app theme (e.g. Material You)
|
||||||
@ -137,6 +135,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
// clear backstack if it's the start fragment
|
// clear backstack if it's the start fragment
|
||||||
if (startFragmentId == it.itemId) navController.backQueue.clear()
|
if (startFragmentId == it.itemId) navController.backQueue.clear()
|
||||||
// set menu item on click listeners
|
// set menu item on click listeners
|
||||||
|
removeSearchFocus()
|
||||||
when (it.itemId) {
|
when (it.itemId) {
|
||||||
R.id.homeFragment -> {
|
R.id.homeFragment -> {
|
||||||
navController.navigate(R.id.homeFragment)
|
navController.navigate(R.id.homeFragment)
|
||||||
@ -155,13 +154,20 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun removeSearchFocus() {
|
||||||
|
searchView.setQuery("", false)
|
||||||
|
searchView.clearFocus()
|
||||||
|
searchView.onActionViewCollapsed()
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
// Inflate the menu; this adds items to the action bar if it is present.
|
// Inflate the menu; this adds items to the action bar if it is present.
|
||||||
menuInflater.inflate(R.menu.action_bar, menu)
|
menuInflater.inflate(R.menu.action_bar, menu)
|
||||||
val searchItem = menu.findItem(R.id.action_search)
|
|
||||||
|
|
||||||
// stuff for the search in the topBar
|
// stuff for the search in the topBar
|
||||||
val searchView = searchItem.actionView as SearchView
|
val searchItem = menu.findItem(R.id.action_search)
|
||||||
|
searchView = searchItem.actionView as SearchView
|
||||||
|
|
||||||
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
|
||||||
override fun onQueryTextSubmit(query: String?): Boolean {
|
override fun onQueryTextSubmit(query: String?): Boolean {
|
||||||
val bundle = Bundle()
|
val bundle = Bundle()
|
||||||
@ -185,6 +191,10 @@ class MainActivity : AppCompatActivity() {
|
|||||||
// automatically handle clicks on the Home/Up button, so long
|
// automatically handle clicks on the Home/Up button, so long
|
||||||
// as you specify a parent activity in AndroidManifest.xml.
|
// as you specify a parent activity in AndroidManifest.xml.
|
||||||
return when (item.itemId) {
|
return when (item.itemId) {
|
||||||
|
R.id.action_search -> {
|
||||||
|
navController.navigate(R.id.searchFragment)
|
||||||
|
true
|
||||||
|
}
|
||||||
R.id.action_settings -> {
|
R.id.action_settings -> {
|
||||||
val settingsIntent = Intent(this, SettingsActivity::class.java)
|
val settingsIntent = Intent(this, SettingsActivity::class.java)
|
||||||
startActivity(settingsIntent)
|
startActivity(settingsIntent)
|
||||||
@ -204,14 +214,6 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addToHistory(query: String) {
|
|
||||||
val searchHistoryEnabled =
|
|
||||||
PreferenceHelper.getBoolean(PreferenceKeys.SEARCH_HISTORY_TOGGLE, true)
|
|
||||||
if (searchHistoryEnabled && query != "") {
|
|
||||||
PreferenceHelper.saveToSearchHistory(query)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
val intentData: Uri? = intent?.data
|
val intentData: Uri? = intent?.data
|
||||||
@ -338,6 +340,9 @@ class MainActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onBackPressed() {
|
override fun onBackPressed() {
|
||||||
|
// remove focus from search
|
||||||
|
removeSearchFocus()
|
||||||
|
|
||||||
if (binding.mainMotionLayout.progress == 0F) {
|
if (binding.mainMotionLayout.progress == 0F) {
|
||||||
try {
|
try {
|
||||||
minimizePlayer()
|
minimizePlayer()
|
||||||
|
@ -2,12 +2,14 @@ package com.github.libretube.adapters
|
|||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.github.libretube.databinding.SearchhistoryRowBinding
|
import com.github.libretube.databinding.SearchhistoryRowBinding
|
||||||
import com.github.libretube.preferences.PreferenceHelper
|
import com.github.libretube.preferences.PreferenceHelper
|
||||||
|
|
||||||
class SearchHistoryAdapter(
|
class SearchHistoryAdapter(
|
||||||
private var historyList: List<String>
|
private var historyList: List<String>,
|
||||||
|
private val searchView: SearchView
|
||||||
) :
|
) :
|
||||||
RecyclerView.Adapter<SearchHistoryViewHolder>() {
|
RecyclerView.Adapter<SearchHistoryViewHolder>() {
|
||||||
|
|
||||||
@ -33,6 +35,7 @@ class SearchHistoryAdapter(
|
|||||||
}
|
}
|
||||||
|
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
|
searchView.setQuery(historyQuery, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,13 @@ package com.github.libretube.adapters
|
|||||||
|
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.github.libretube.databinding.SearchsuggestionRowBinding
|
import com.github.libretube.databinding.SearchsuggestionRowBinding
|
||||||
|
|
||||||
class SearchSuggestionsAdapter(
|
class SearchSuggestionsAdapter(
|
||||||
private var suggestionsList: List<String>
|
private var suggestionsList: List<String>,
|
||||||
|
private val searchView: SearchView
|
||||||
) :
|
) :
|
||||||
RecyclerView.Adapter<SearchSuggestionsViewHolder>() {
|
RecyclerView.Adapter<SearchSuggestionsViewHolder>() {
|
||||||
|
|
||||||
@ -27,6 +29,7 @@ class SearchSuggestionsAdapter(
|
|||||||
holder.binding.apply {
|
holder.binding.apply {
|
||||||
suggestionText.text = suggestion
|
suggestionText.text = suggestion
|
||||||
root.setOnClickListener {
|
root.setOnClickListener {
|
||||||
|
searchView.setQuery(suggestion, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,8 +10,12 @@ import androidx.lifecycle.lifecycleScope
|
|||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
|
import com.github.libretube.activities.MainActivity
|
||||||
|
import com.github.libretube.adapters.SearchHistoryAdapter
|
||||||
import com.github.libretube.adapters.SearchSuggestionsAdapter
|
import com.github.libretube.adapters.SearchSuggestionsAdapter
|
||||||
import com.github.libretube.databinding.FragmentSearchBinding
|
import com.github.libretube.databinding.FragmentSearchBinding
|
||||||
|
import com.github.libretube.preferences.PreferenceHelper
|
||||||
|
import com.github.libretube.preferences.PreferenceKeys
|
||||||
import com.github.libretube.util.RetrofitInstance
|
import com.github.libretube.util.RetrofitInstance
|
||||||
import retrofit2.HttpException
|
import retrofit2.HttpException
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
@ -39,8 +43,21 @@ class SearchFragment() : Fragment() {
|
|||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
// fetch the search
|
// add the query to the history
|
||||||
fetchSuggestions(query!!)
|
if (query != null) addToHistory(query!!)
|
||||||
|
|
||||||
|
binding.suggestionsRecycler.layoutManager = LinearLayoutManager(requireContext())
|
||||||
|
// fetch the search or history
|
||||||
|
if (query == null || query == "") showHistory()
|
||||||
|
else fetchSuggestions(query!!)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addToHistory(query: String) {
|
||||||
|
val searchHistoryEnabled =
|
||||||
|
PreferenceHelper.getBoolean(PreferenceKeys.SEARCH_HISTORY_TOGGLE, true)
|
||||||
|
if (searchHistoryEnabled && query != "") {
|
||||||
|
PreferenceHelper.saveToSearchHistory(query)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fetchSuggestions(query: String) {
|
private fun fetchSuggestions(query: String) {
|
||||||
@ -59,10 +76,10 @@ class SearchFragment() : Fragment() {
|
|||||||
// only load the suggestions if the input field didn't get cleared yet
|
// only load the suggestions if the input field didn't get cleared yet
|
||||||
val suggestionsAdapter =
|
val suggestionsAdapter =
|
||||||
SearchSuggestionsAdapter(
|
SearchSuggestionsAdapter(
|
||||||
response
|
response,
|
||||||
|
(activity as MainActivity).searchView
|
||||||
)
|
)
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
binding.suggestionsRecycler.layoutManager = LinearLayoutManager(requireContext())
|
|
||||||
binding.suggestionsRecycler.adapter = suggestionsAdapter
|
binding.suggestionsRecycler.adapter = suggestionsAdapter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -70,6 +87,17 @@ class SearchFragment() : Fragment() {
|
|||||||
run()
|
run()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showHistory() {
|
||||||
|
val historyList = PreferenceHelper.getSearchHistory()
|
||||||
|
if (historyList.isNotEmpty()) {
|
||||||
|
binding.suggestionsRecycler.adapter =
|
||||||
|
SearchHistoryAdapter(
|
||||||
|
historyList,
|
||||||
|
(activity as MainActivity).searchView
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun Fragment?.runOnUiThread(action: () -> Unit) {
|
private fun Fragment?.runOnUiThread(action: () -> Unit) {
|
||||||
this ?: return
|
this ?: return
|
||||||
if (!isAdded) return // Fragment not attached to an Activity
|
if (!isAdded) return // Fragment not attached to an Activity
|
||||||
|
@ -7,7 +7,8 @@
|
|||||||
android:icon="@drawable/ic_search"
|
android:icon="@drawable/ic_search"
|
||||||
android:title="@string/search_hint"
|
android:title="@string/search_hint"
|
||||||
app:showAsAction="ifRoom"
|
app:showAsAction="ifRoom"
|
||||||
app:actionViewClass="androidx.appcompat.widget.SearchView" />
|
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||||
|
android:focusableInTouchMode="true" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_settings"
|
android:id="@+id/action_settings"
|
||||||
|
Loading…
Reference in New Issue
Block a user