Browse Source

Target Android 10

merge-requests/382/head
Geoffrey Métais 7 years ago
parent
commit
0d89a36ff2
  1. 4
      build.gradle
  2. 5
      tools/src/main/java/org/videolan/tools/KotlinExtensions.kt
  3. 4
      vlc-android/src/org/videolan/vlc/ExternalMonitor.kt
  4. 4
      vlc-android/src/org/videolan/vlc/StoragesMonitor.kt
  5. 4
      vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt
  6. 6
      vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt
  7. 10
      vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt
  8. 2
      vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloadFragment.kt
  9. 6
      vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt
  10. 2
      vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleHistoryFragment.kt
  11. 4
      vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt
  12. 2
      vlc-android/src/org/videolan/vlc/gui/tv/MediaItemDetailsFragment.kt
  13. 4
      vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt
  14. 2
      vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt
  15. 2
      vlc-android/src/org/videolan/vlc/util/FileUtils.kt
  16. 2
      vlc-android/src/org/videolan/vlc/util/Settings.kt
  17. 4
      vlc-android/src/org/videolan/vlc/util/VLCDownloadManager.kt
  18. 4
      vlc-android/src/org/videolan/vlc/util/VLCOptions.kt

4
build.gradle

@ -32,8 +32,8 @@ ext {
libvlcVersion = '3.2-eap13'
medialibraryVersion = '0.5-eap13'
minSdkVersion = 17
targetSdkVersion = 28
compileSdkVersion = 28
targetSdkVersion = 29
compileSdkVersion = 29
androidxLegacyVersion = '1.0.0'
androidxCoreVersion = '1.1.0'
lifecycleViewmodelVersion = '2.1.0'

5
tools/src/main/java/org/videolan/tools/KotlinExtensions.kt

@ -75,6 +75,7 @@ fun Context.getColorFromAttr(
}
fun Context.copy(label: String, text: String) {
val clipboard = applicationContext.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
clipboard.primaryClip = ClipData.newPlainText(label, text)
(applicationContext.getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager)?.run {
setPrimaryClip(ClipData.newPlainText(label, text))
}
}

4
vlc-android/src/org/videolan/vlc/ExternalMonitor.kt

@ -239,5 +239,5 @@ fun containsDevice(devices: Array<String>, device: String): Boolean {
}
private sealed class DeviceAction
private class MediaMounted(val uri : Uri, val path : String = uri.path, val uuid : String = uri.lastPathSegment) : DeviceAction()
private class MediaUnmounted(val uri : Uri, val path : String = uri.path, val uuid : String = uri.lastPathSegment) : DeviceAction()
private class MediaMounted(val uri : Uri, val path : String = uri.path!!, val uuid : String = uri.lastPathSegment!!) : DeviceAction()
private class MediaUnmounted(val uri : Uri, val path : String = uri.path!!, val uuid : String = uri.lastPathSegment!!) : DeviceAction()

4
vlc-android/src/org/videolan/vlc/StoragesMonitor.kt

@ -60,8 +60,8 @@ class StoragesMonitor : BroadcastReceiver() {
}
private sealed class MediaEvent(val ctx: Context)
private class Mount(ctx: Context, val uri : Uri, val path : String = uri.path, val uuid : String = uri.lastPathSegment) : MediaEvent(ctx)
private class Unmount(ctx: Context, val uri : Uri, val path : String = uri.path, val uuid : String = uri.lastPathSegment) : MediaEvent(ctx)
private class Mount(ctx: Context, val uri : Uri, val path : String = uri.path!!, val uuid : String = uri.lastPathSegment!!) : MediaEvent(ctx)
private class Unmount(ctx: Context, val uri : Uri, val path : String = uri.path!!, val uuid : String = uri.lastPathSegment!!) : MediaEvent(ctx)
fun Context.enableStorageMonitoring() {
val componentName = ComponentName(applicationContext, StoragesMonitor::class.java)

4
vlc-android/src/org/videolan/vlc/gui/browser/MediaBrowserFragment.kt

@ -96,9 +96,7 @@ abstract class MediaBrowserFragment<T : SortableModel> : Fragment(), ActionMode.
super.onCreate(savedInstanceState)
mediaLibrary = AbstractMedialibrary.getInstance()
setHasOptionsMenu(!AndroidDevices.isAndroidTv)
if (savedInstanceState?.keySet()?.contains(KEY_SELECTION) == true) {
savedSelection = (savedInstanceState.getParcelable(KEY_SELECTION) as SparseBooleanArrayParcelable).data
}
(savedInstanceState?.getParcelable<SparseBooleanArrayParcelable>(KEY_SELECTION))?.let { savedSelection = it.data }
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

6
vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt

@ -150,8 +150,9 @@ class StorageBrowserFragment : FileBrowserFragment(), EntryPointsEventsCb {
override fun onCtxClick(v: View, position: Int, item: MediaLibraryItem) {
if (isRootDirectory) {
val storage = adapter.getItem(position) as Storage
val path = storage.uri.path ?: return
launch {
val isCustom = viewModel.customDirectoryExists(storage.uri.path)
val isCustom = viewModel.customDirectoryExists(path)
if (isCustom && isAdded) showContext(requireActivity(), this@StorageBrowserFragment, position, item.title, CTX_CUSTOM_REMOVE)
}
}
@ -159,7 +160,8 @@ class StorageBrowserFragment : FileBrowserFragment(), EntryPointsEventsCb {
override fun onCtxAction(position: Int, option: Int) {
val storage = adapter.getItem(position) as Storage
viewModel.deleteCustomDirectory(storage.uri.path)
val path = storage.uri.path ?: return
viewModel.deleteCustomDirectory(path)
viewModel.remove(storage)
(activity as AudioPlayerContainerActivity).updateLib()
}

10
vlc-android/src/org/videolan/vlc/gui/dialogs/NetworkServerDialog.kt

@ -113,10 +113,12 @@ class NetworkServerDialog : DialogFragment(), AdapterView.OnItemSelectedListener
if (!TextUtils.isEmpty(networkName))
editServername.setText(networkName)
val position = getProtocolSpinnerPosition(networkUri.scheme.toUpperCase())
spinnerProtocol.setSelection(position)
val port = networkUri.port
editPort.setText(if (port != -1) port.toString() else getPortForProtocol(position))
networkUri.scheme?.toUpperCase()?.let {
val position = getProtocolSpinnerPosition(it)
spinnerProtocol.setSelection(position)
val port = networkUri.port
editPort.setText(if (port != -1) port.toString() else getPortForProtocol(position))
}
}
spinnerProtocol.onItemSelectedListener = this
save.setOnClickListener(this)

2
vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloadFragment.kt

@ -26,7 +26,7 @@ class SubtitleDownloadFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mediaUri = arguments?.getParcelable(MEDIA_PATH) ?: Uri.EMPTY
viewModel = ViewModelProviders.of(requireActivity(), SubtitlesModel.Factory(requireContext(), mediaUri)).get(mediaUri.path, SubtitlesModel::class.java)
viewModel = ViewModelProviders.of(requireActivity(), SubtitlesModel.Factory(requireContext(), mediaUri)).get(mediaUri.path!!, SubtitlesModel::class.java)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

6
vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt

@ -42,7 +42,9 @@ class SubtitleDownloaderDialogFragment : DialogFragment() {
for (subtitleEvent in channel) if (isActive) when (subtitleEvent) {
is Click -> when (subtitleEvent.item.state) {
State.NotDownloaded -> VLCDownloadManager.download(requireActivity(), subtitleEvent.item)
State.Downloaded -> deleteSubtitleDialog(requireActivity(), DialogInterface.OnClickListener { _, _ -> viewModel.deleteSubtitle(subtitleEvent.item.mediaUri.path, subtitleEvent.item.idSubtitle) }
State.Downloaded -> deleteSubtitleDialog(requireActivity(), DialogInterface.OnClickListener { _, _ ->
subtitleEvent.item.mediaUri.path?.let { viewModel.deleteSubtitle(it, subtitleEvent.item.idSubtitle) }
}
, DialogInterface.OnClickListener { _, _ -> })
else -> return@actor
}
@ -68,7 +70,7 @@ class SubtitleDownloaderDialogFragment : DialogFragment() {
?: arguments?.getParcelableArrayList<Uri>(MEDIA_PATHS)?.toList() ?: listOf()
if (uris.isEmpty()) dismiss()
viewModel = ViewModelProviders.of(requireActivity(), SubtitlesModel.Factory(requireContext(), uris[0])).get(uris[0].path, SubtitlesModel::class.java)
viewModel = ViewModelProviders.of(requireActivity(), SubtitlesModel.Factory(requireContext(), uris[0])).get(uris[0].path!!, SubtitlesModel::class.java)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

2
vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleHistoryFragment.kt

@ -21,7 +21,7 @@ class SubtitleHistoryFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mediaUri = arguments?.getParcelable(MEDIA_PATH) ?: Uri.EMPTY
viewModel = ViewModelProviders.of(requireActivity(), SubtitlesModel.Factory(requireContext(), mediaUri)).get(mediaUri.path, SubtitlesModel::class.java)
viewModel = ViewModelProviders.of(requireActivity(), SubtitlesModel.Factory(requireContext(), mediaUri)).get(mediaUri.path!!, SubtitlesModel::class.java)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

4
vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesUi.kt

@ -125,12 +125,12 @@ class PreferencesUi : BasePreferenceFragment(), SharedPreferences.OnSharedPrefer
"browser_show_all_files", "video_min_group_length" -> (activity as PreferencesActivity).setRestart()
KEY_APP_THEME -> (activity as PreferencesActivity).exitAndRescan()
LIST_TITLE_ELLIPSIZE -> {
Settings.listTitleEllipsize = sharedPreferences.getString(LIST_TITLE_ELLIPSIZE, "0").toInt()
Settings.listTitleEllipsize = sharedPreferences.getString(LIST_TITLE_ELLIPSIZE, "0")?.toInt() ?: 0
(activity as PreferencesActivity).setRestart()
}
"video_group_size" -> {
val goupSizeValue = try {
Settings.getInstance(requireActivity()).getString(key, "6").toInt()
Settings.getInstance(requireActivity()).getString(key, "6")?.toInt() ?: 6
} catch (e: NumberFormatException) {
6
}

2
vlc-android/src/org/videolan/vlc/gui/tv/MediaItemDetailsFragment.kt

@ -79,7 +79,7 @@ class MediaItemDetailsFragment : DetailsSupportFragment() {
viewModel.mediaStarted = false
val extras = requireActivity().intent.extras ?: savedInstanceState ?: return
viewModel.mediaItemDetails = extras.getParcelable("item") as MediaItemDetails
viewModel.mediaItemDetails = extras.getParcelable("item") ?: return
val hasMedia = extras.containsKey("media")
val media = (extras.getParcelable<Parcelable>("media")
?: MLServiceLocator.getAbstractMediaWrapper(AndroidUtil.LocationToUri(viewModel.mediaItemDetails.location))) as AbstractMediaWrapper

4
vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt

@ -97,6 +97,7 @@ import org.videolan.vlc.media.MediaUtils
import org.videolan.vlc.repository.ExternalSubRepository
import org.videolan.vlc.repository.SlaveRepository
import org.videolan.vlc.util.*
import org.videolan.vlc.util.FileUtils
import org.videolan.vlc.viewmodels.PlaylistModel
@Suppress("DEPRECATION")
@ -550,6 +551,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
if (playbackStarted) service?.run {
if (::hudBinding.isInitialized) {
@ -1837,7 +1839,7 @@ open class VideoPlayerActivity : AppCompatActivity(), IPlaybackSettingsControlle
.setOnDismissListener { this.dimStatusBar(true) }
.create().apply {
setCanceledOnTouchOutside(true)
ownerActivity = this@VideoPlayerActivity
setOwnerActivity(this@VideoPlayerActivity)
show()
}
}

2
vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt

@ -49,7 +49,7 @@ class ExternalSubRepository(private val externalSubDao: ExternalSubDao ) {
}
fun getDownloadedSubtitles(mediaUri: Uri): LiveData<List<ExternalSub>> {
val externalSubs = externalSubDao.get(mediaUri.path)
val externalSubs = externalSubDao.get(mediaUri.path!!)
return Transformations.map(externalSubs) { list ->
val existExternalSubs: MutableList<ExternalSub> = mutableListOf()
list.forEach {

2
vlc-android/src/org/videolan/vlc/util/FileUtils.kt

@ -412,7 +412,7 @@ object FileUtils {
uri = MediaUtils.getContentMediaUri(data)
} else if (TextUtils.equals(data.authority, ctx.getString(R.string.tv_provider_authority))) {
val medialibrary = AbstractMedialibrary.getInstance()
val media = medialibrary.getMedia(data.lastPathSegment.toLong())
val media = medialibrary.getMedia(data.lastPathSegment!!.toLong())
uri = media.uri
} else {
val inputPFD: ParcelFileDescriptor?

2
vlc-android/src/org/videolan/vlc/util/Settings.kt

@ -21,7 +21,7 @@ object Settings : SingletonHolder<SharedPreferences, Context>({ PreferenceManage
fun init(prefs: SharedPreferences) {
showVideoThumbs = prefs.getBoolean(SHOW_VIDEO_THUMBNAILS, true)
tvUI = prefs.getBoolean(PREF_TV_UI, false)
listTitleEllipsize = prefs.getString(LIST_TITLE_ELLIPSIZE, "0").toInt()
listTitleEllipsize = prefs.getString(LIST_TITLE_ELLIPSIZE, "0")?.toInt() ?: 0
}
val showTvUi : Boolean

4
vlc-android/src/org/videolan/vlc/util/VLCDownloadManager.kt

@ -84,7 +84,7 @@ object VLCDownloadManager: BroadcastReceiver(), LifecycleObserver {
ExternalSubRepository.getInstance(context).removeDownloadingItem(id)
downloadedPaths.forEach {
if (it.endsWith(".srt"))
ExternalSubRepository.getInstance(context).saveDownloadedSubtitle(idSubtitle, it, mediaUri.path, subLanguageID, movieReleaseName)
ExternalSubRepository.getInstance(context).saveDownloadedSubtitle(idSubtitle, it, mediaUri.path!!, subLanguageID, movieReleaseName)
}
withContext(Dispatchers.IO) { FileUtils.deleteFile(localUri) }
}
@ -122,7 +122,7 @@ object VLCDownloadManager: BroadcastReceiver(), LifecycleObserver {
cursor.getString(localUriIndex)
else ""
return Pair(status, if (localUri != null) Uri.parse(localUri).path else "")
return Pair(status, if (localUri != null) Uri.parse(localUri).path!! else "")
}
}

4
vlc-android/src/org/videolan/vlc/util/VLCOptions.kt

@ -69,9 +69,9 @@ object VLCOptions {
val timeStrechingDefault = context != null && context.resources.getBoolean(R.bool.time_stretching_default)
val timeStreching = pref.getBoolean("enable_time_stretching_audio", timeStrechingDefault)
val subtitlesEncoding = pref.getString("subtitle_text_encoding", "")
val subtitlesEncoding = pref.getString("subtitle_text_encoding", "") ?: ""
val frameSkip = pref.getBoolean("enable_frame_skip", false)
val chroma = pref.getString("chroma_format", "RV16")
val chroma = pref.getString("chroma_format", "RV16") ?: "RV16"
val verboseMode = pref.getBoolean("enable_verbose_mode", true)
var deblocking = -1

Loading…
Cancel
Save