Skip to content
Snippets Groups Projects
Commit 802061bf authored by Geoffrey Métais's avatar Geoffrey Métais Committed by Nicolas Pomepuy
Browse files

Streams: paste clipboard content when relevant

If a valid URL is currently in clipboard, paste it in edittext.

Fix #884
parent 7d9f0a1b
No related branches found
No related tags found
1 merge request!128Stream clipboard
Pipeline #11377 failed with stage
in 3 minutes and 55 seconds
package org.videolan.tools
import android.util.Patterns
import android.app.ActivityManager
import android.app.ActivityManager.RunningAppProcessInfo
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.res.Resources
import android.util.Patterns
import android.util.TypedValue
import android.view.View
import androidx.annotation.AttrRes
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.OnLifecycleEvent
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract
import kotlinx.coroutines.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.delay
import kotlinx.coroutines.yield
import kotlin.contracts.ExperimentalContracts
import kotlin.contracts.contract
fun <T> List<T>.getposition(target: T): Int {
for ((index, item) in withIndex()) if (item == target) return index
......
......@@ -20,6 +20,8 @@
*/
package org.videolan.vlc.gui.network
import android.content.ClipboardManager
import android.content.Context
import android.graphics.Rect
import android.net.Uri
import android.os.Bundle
......@@ -48,6 +50,7 @@ import kotlinx.coroutines.channels.actor
import org.videolan.medialibrary.MLServiceLocator
import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper
import org.videolan.tools.copy
import org.videolan.tools.isValidUrl
import org.videolan.vlc.R
import org.videolan.vlc.databinding.MrlPanelBinding
import org.videolan.vlc.gui.ContentActivity
......@@ -65,7 +68,8 @@ const val TAG = "VLC/MrlPanelFragment"
@ExperimentalCoroutinesApi
@ObsoleteCoroutinesApi
class MRLPanelFragment : Fragment(), View.OnKeyListener, TextView.OnEditorActionListener, View.OnClickListener, CtxActionReceiver, BrowserFragmentInterface {
class MRLPanelFragment : Fragment(), View.OnKeyListener, TextView.OnEditorActionListener,
View.OnClickListener, CtxActionReceiver, BrowserFragmentInterface {
private lateinit var adapter: MRLAdapter
private lateinit var editText: com.google.android.material.textfield.TextInputLayout
......@@ -103,7 +107,6 @@ class MRLPanelFragment : Fragment(), View.OnKeyListener, TextView.OnEditorAction
}
})
recyclerView.layoutManager = gridLayoutManager
} else {
recyclerView.layoutManager = LinearLayoutManager(activity)
recyclerView.addItemDecoration(DividerItemDecoration(activity, DividerItemDecoration.VERTICAL))
......@@ -121,6 +124,13 @@ class MRLPanelFragment : Fragment(), View.OnKeyListener, TextView.OnEditorAction
viewModel.loading.observe(requireActivity(), Observer { (activity as? MainActivity)?.refreshing = it })
}
override fun onResume() {
super.onResume()
val clipBoardManager = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val text = clipBoardManager.primaryClip?.getItemAt(0)?.text?.toString()
if (text.isValidUrl()) viewModel.observableSearchText.set(text)
}
override fun onStart() {
super.onStart()
viewModel.refresh()
......@@ -128,7 +138,6 @@ class MRLPanelFragment : Fragment(), View.OnKeyListener, TextView.OnEditorAction
(activity as? AppCompatActivity)?.supportActionBar?.setTitle(R.string.open_mrl)
}
override fun onKey(v: View, keyCode: Int, event: KeyEvent) = (keyCode == EditorInfo.IME_ACTION_DONE ||
keyCode == EditorInfo.IME_ACTION_GO ||
event.action == KeyEvent.ACTION_DOWN && event.keyCode == KeyEvent.KEYCODE_ENTER) && processUri()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment