Skip to content
Snippets Groups Projects
Commit 83801612 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Enable breadcrumb browsing for OTG devices

parent abb68d88
No related branches found
No related tags found
No related merge requests found
......@@ -617,4 +617,5 @@
<string name="tv_my_new_videos">My new videos</string>
<string name="cast_option_title">Cast medias on another screen</string>
<string name="otg_device_title">OTG device</string>
<string name="browser">Browser</string>
</resources>
......@@ -213,7 +213,7 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr
viewModel.saveList(media)
args.putParcelable(KEY_MEDIA, media)
next.arguments = args
if (save) ft.addToBackStack(if (isRootDirectory) "root" else FileUtils.getFileNameFromPath(mrl))
if (save) ft.addToBackStack(if (isRootDirectory) "root" else currentMedia?.title ?: FileUtils.getFileNameFromPath(mrl))
ft.replace(R.id.fragment_placeholder, next, media.title)
ft.commit()
}
......
package org.videolan.vlc.gui.browser
import android.support.v7.widget.RecyclerView
import android.util.Log
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.TextView
import org.videolan.vlc.R
import org.videolan.vlc.util.AndroidDevices
import org.videolan.vlc.util.FileUtils
private val EXTERNAL_PUBLIC_DIRECTORY_TAG = FileUtils.getFileNameFromPath(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY)
class PathAdapter(val browser: BaseBrowserFragment, path: String) : RecyclerView.Adapter<PathAdapter.ViewHolder>() {
init {
Log.d("PathAdapter", path)
}
private val memoryTitle = browser.getString(R.string.internal_memory)
private val browserTitle = browser.getString(R.string.browser)
private val otgDevice = browser.getString(R.string.otg_device_title)
private val segments = mutableListOf("browser").apply { addAll(path.replace(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY, memoryTitle).split('/').filter { !it.isEmpty() } ) }
private val segments = prepareSegments(path)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.browser_path_item, parent, false) as TextView)
......@@ -35,10 +30,20 @@ class PathAdapter(val browser: BaseBrowserFragment, path: String) : RecyclerView
root.setOnClickListener {
browser.backTo(adapterPosition.let { when (it) {
0 -> "root"
1 -> if (segments[1] == memoryTitle) EXTERNAL_PUBLIC_DIRECTORY_TAG else segments[1]
else -> segments[it]
}})
}
}
}
private fun prepareSegments(path: String) : MutableList<String>{
val string = when {
path.startsWith("/tree/") -> if (path.endsWith(':')) "" else path.substringAfterLast(':')
else -> path.replace(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY, memoryTitle)
}
val list = mutableListOf(browserTitle)
if (path.startsWith("/tree/")) list.add(otgDevice)
list.addAll(string.split('/').filter { !it.isEmpty() })
return list
}
}
\ No newline at end of file
......@@ -27,7 +27,7 @@ import org.videolan.vlc.database.models.BrowserFav
fun isSchemeSupported(scheme: String?) = when(scheme) {
"file", "smb", "ssh", "nfs" -> true
"file", "smb", "ssh", "nfs", "content" -> true
else -> false
}
......
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