Browse Source

VlcMigration: move obsolete version helpers

merge-requests/2174/head
Duncan McNamara 2 years ago
parent
commit
757baf3435
  1. 3
      application/television/src/main/java/org/videolan/television/ui/FileTvItemAdapter.kt
  2. 3
      application/television/src/main/java/org/videolan/television/ui/MediaTvItemAdapter.kt
  3. 6
      application/television/src/main/java/org/videolan/television/ui/browser/TvAdapterUtils.kt
  4. 2
      application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
  5. 4
      application/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt
  6. 4
      application/vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt
  7. 4
      application/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt
  8. 13
      application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
  9. 4
      application/vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt
  10. 7
      application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.kt
  11. 2
      application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt
  12. 3
      application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt
  13. 3
      application/vlc-android/src/org/videolan/vlc/util/FileUtils.kt
  14. 3
      application/vlc-android/src/org/videolan/vlc/util/Permissions.kt
  15. 4
      application/vlc-android/src/org/videolan/vlc/util/VoiceSearchParams.kt
  16. 8
      medialibrary/vlc3/src/org/videolan/vlc/VlcMigrationHelper.java
  17. 4
      medialibrary/vlc4/src/org/videolan/vlc/VlcMigrationHelper.java

3
application/television/src/main/java/org/videolan/television/ui/FileTvItemAdapter.kt

@ -22,6 +22,7 @@ import org.videolan.television.databinding.MediaBrowserTvItemBinding
import org.videolan.television.databinding.MediaBrowserTvItemListBinding
import org.videolan.television.ui.browser.TvAdapterUtils
import org.videolan.tools.Settings
import org.videolan.vlc.VlcMigrationHelper
import org.videolan.vlc.gui.DiffUtilAdapter
import org.videolan.vlc.gui.helpers.getBitmapFromDrawable
import org.videolan.vlc.gui.helpers.getMediaIconDrawable
@ -154,7 +155,7 @@ class FileTvItemAdapter(private val eventsHandler: IEventsHandler<MediaLibraryIt
}
}
}
if (AndroidUtil.isLolliPopOrLater) binding.container.clipToOutline = true
if (VlcMigrationHelper.isLolliPopOrLater) binding.container.clipToOutline = true
binding.showSeen = seenMediaMarkerVisible
}

3
application/television/src/main/java/org/videolan/television/ui/MediaTvItemAdapter.kt

@ -28,6 +28,7 @@ import org.videolan.television.ui.browser.TvAdapterUtils
import org.videolan.tools.Settings
import org.videolan.tools.dp
import org.videolan.vlc.BuildConfig
import org.videolan.vlc.VlcMigrationHelper
import org.videolan.vlc.gui.helpers.SelectorViewHolder
import org.videolan.vlc.gui.helpers.getMediaIconDrawable
import org.videolan.vlc.gui.view.FastScroller
@ -203,7 +204,7 @@ class MediaTvItemAdapter(type: Int, private val eventsHandler: IEventsHandler<Me
}
}
binding.showSeen = seenMediaMarkerVisible
if (AndroidUtil.isLolliPopOrLater) binding.container.clipToOutline = true
if (VlcMigrationHelper.isLolliPopOrLater) binding.container.clipToOutline = true
}
override fun recycle() {

6
application/television/src/main/java/org/videolan/television/ui/browser/TvAdapterUtils.kt

@ -30,9 +30,9 @@ import android.graphics.drawable.TransitionDrawable
import android.os.Build
import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.television.ui.FocusableConstraintLayout
import org.videolan.vlc.R
import org.videolan.vlc.VlcMigrationHelper
object TvAdapterUtils {
@ -45,14 +45,14 @@ object TvAdapterUtils {
newWidth--
}
val scale = newWidth.toFloat() / itemSize
if (AndroidUtil.isLolliPopOrLater)
if (VlcMigrationHelper.isLolliPopOrLater)
container.animate().scaleX(scale).scaleY(scale).translationZ(scale)
else
container.animate().scaleX(scale).scaleY(scale)
listener()
} else {
if (AndroidUtil.isLolliPopOrLater)
if (VlcMigrationHelper.isLolliPopOrLater)
container.animate().scaleX(1f).scaleY(1f).translationZ(1f)
else
container.animate().scaleX(1f).scaleY(1f)

2
application/vlc-android/src/org/videolan/vlc/PlaybackService.kt

@ -1029,7 +1029,7 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
isSeekable, speed, isPodcastMode, seekInCompactView, enabledActions,
sessionToken, sessionPendingIntent)
if (isPlayingPopup) return@launch
if (!AndroidUtil.isLolliPopOrLater || playing || audioFocusHelper.lossTransient) {
if (!VlcMigrationHelper.isLolliPopOrLater || playing || audioFocusHelper.lossTransient) {
if (!isForeground) {
ctx.launchForeground(Intent(ctx, PlaybackService::class.java)) {
startForegroundCompat(3, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK)

4
application/vlc-android/src/org/videolan/vlc/gui/AudioPlayerContainerActivity.kt

@ -168,7 +168,7 @@ open class AudioPlayerContainerActivity : BaseActivity(), KeycodeListener, Sched
restoreBookmarks = savedInstanceState.getBoolean(BOOKMARK_VISIBLE, false)
}
super.onCreate(savedInstanceState)
if (AndroidUtil.isLolliPopOrLater && this is MainActivity) WindowCompat.setDecorFitsSystemWindows(window, false)
if (VlcMigrationHelper.isLolliPopOrLater && this is MainActivity) WindowCompat.setDecorFitsSystemWindows(window, false)
volumeControlStream = AudioManager.STREAM_MUSIC
registerLiveData()
@ -249,7 +249,7 @@ open class AudioPlayerContainerActivity : BaseActivity(), KeycodeListener, Sched
tabLayout?.viewTreeObserver?.addOnGlobalLayoutListener {
//add a shadow if there are tabs
val needToElevate = (tabLayout?.layoutParams?.height != 0) || navigationRail?.visibility ?: View.GONE != View.GONE
if (AndroidUtil.isLolliPopOrLater) appBarLayout.elevation = if (needToElevate) 8.dp.toFloat() else 0.dp.toFloat()
if (VlcMigrationHelper.isLolliPopOrLater) appBarLayout.elevation = if (needToElevate) 8.dp.toFloat() else 0.dp.toFloat()
}
audioPlayerContainer = findViewById(R.id.audio_player_container)
(audioPlayerContainer.layoutParams as CoordinatorLayout.LayoutParams).bottomMargin = bottomInset

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

@ -39,7 +39,6 @@ import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.MLServiceLocator
import org.videolan.medialibrary.Tools
import org.videolan.medialibrary.interfaces.Medialibrary
@ -48,6 +47,7 @@ import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.Storage
import org.videolan.tools.Settings
import org.videolan.vlc.R
import org.videolan.vlc.VlcMigrationHelper
import org.videolan.vlc.databinding.BrowserItemBinding
import org.videolan.vlc.gui.SecondaryActivity
import org.videolan.vlc.gui.helpers.ThreeStatesCheckbox
@ -92,7 +92,7 @@ class StorageBrowserFragment : FileBrowserFragment(), BrowserContainer<MediaLibr
super.onViewCreated(view, savedInstanceState)
if (isRootDirectory && Settings.showTvUi) {
snack = com.google.android.material.snackbar.Snackbar.make(view, R.string.tv_settings_hint, com.google.android.material.snackbar.Snackbar.LENGTH_INDEFINITE)
if (AndroidUtil.isLolliPopOrLater) snack?.view?.elevation = view.resources.getDimensionPixelSize(R.dimen.audio_player_elevation).toFloat()
if (VlcMigrationHelper.isLolliPopOrLater) snack?.view?.elevation = view.resources.getDimensionPixelSize(R.dimen.audio_player_elevation).toFloat()
}
}

4
application/vlc-android/src/org/videolan/vlc/gui/helpers/BitmapUtil.kt

@ -38,7 +38,6 @@ import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.DrawableCompat
import androidx.core.graphics.drawable.toDrawable
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.interfaces.media.MediaWrapper
import org.videolan.resources.AppContextProvider
import org.videolan.tools.BitmapCache
@ -46,6 +45,7 @@ import org.videolan.tools.dp
import org.videolan.tools.removeFileScheme
import org.videolan.vlc.BuildConfig
import org.videolan.vlc.R
import org.videolan.vlc.VlcMigrationHelper
import java.io.ByteArrayOutputStream
import java.io.File
import java.io.FileOutputStream
@ -378,7 +378,7 @@ fun Context.getBitmapFromDrawable(@DrawableRes drawableId: Int, width: Int = -1,
}
return when {
drawable is BitmapDrawable -> drawable.bitmap
drawable is VectorDrawableCompat || (AndroidUtil.isLolliPopOrLater && drawable is VectorDrawable) -> {
drawable is VectorDrawableCompat || (VlcMigrationHelper.isLolliPopOrLater && drawable is VectorDrawable) -> {
val bitmap = if (width > 0 && height > 0)
Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
else

13
application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt

@ -92,6 +92,7 @@ import org.videolan.vlc.BuildConfig.VLC_VERSION_NAME
import org.videolan.vlc.MediaParsingService
import org.videolan.vlc.R
import org.videolan.vlc.StartActivity
import org.videolan.vlc.VlcMigrationHelper
import org.videolan.vlc.gui.*
import org.videolan.vlc.gui.browser.MediaBrowserFragment
import org.videolan.vlc.gui.dialogs.*
@ -292,7 +293,7 @@ object UiTools {
fun snacker(activity:Activity, message: String) {
val view = getSnackAnchorView(activity) ?: return
val snack = Snackbar.make(view, message, Snackbar.LENGTH_SHORT)
if (AndroidUtil.isLolliPopOrLater)
if (VlcMigrationHelper.isLolliPopOrLater)
snack.view.elevation = view.resources.getDimensionPixelSize(R.dimen.audio_player_elevation).toFloat()
snack.show()
}
@ -306,7 +307,7 @@ object UiTools {
val snack = Snackbar.make(view, message, Snackbar.LENGTH_LONG)
.setAction(confirmMessage) { action.invoke() }
if (overAudioPlayer) snack.setAnchorView(R.id.time)
if (AndroidUtil.isLolliPopOrLater)
if (VlcMigrationHelper.isLolliPopOrLater)
snack.view.elevation = view.resources.getDimensionPixelSize(R.dimen.audio_player_elevation).toFloat()
snack.show()
}
@ -316,7 +317,7 @@ object UiTools {
val view = getSnackAnchorView(activity) ?: return
val snack = Snackbar.make(view, message, Snackbar.LENGTH_LONG)
.setAction(R.string.ok) { launch { action.invoke() } }
if (AndroidUtil.isLolliPopOrLater)
if (VlcMigrationHelper.isLolliPopOrLater)
snack.view.elevation = view.resources.getDimensionPixelSize(R.dimen.audio_player_elevation).toFloat()
snack.show()
}
@ -333,7 +334,7 @@ object UiTools {
sHandler.removeCallbacks(action)
cancelAction.invoke()
}
if (AndroidUtil.isLolliPopOrLater)
if (VlcMigrationHelper.isLolliPopOrLater)
snack.view.elevation = view.resources.getDimensionPixelSize(R.dimen.audio_player_elevation).toFloat()
if (overAudioPlayer) snack.setAnchorView(R.id.time)
snack.show()
@ -354,7 +355,7 @@ object UiTools {
PreferencesActivity.launchWithPref(activity, "include_missing")
}
}
if (AndroidUtil.isLolliPopOrLater)
if (VlcMigrationHelper.isLolliPopOrLater)
snack.view.elevation = view.resources.getDimensionPixelSize(R.dimen.audio_player_elevation).toFloat()
snack.show()
}
@ -812,7 +813,7 @@ object UiTools {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
fun setRotationAnimation(activity: Activity) {
if (!AndroidUtil.isJellyBeanMR2OrLater) return
if (!VlcMigrationHelper.isJellyBeanMR2OrLater) return
val win = activity.window
val winParams = win.attributes
winParams.rotationAnimation = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) WindowManager.LayoutParams.ROTATION_ANIMATION_SEAMLESS else WindowManager.LayoutParams.ROTATION_ANIMATION_JUMPCUT

4
application/vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt

@ -15,12 +15,12 @@ import androidx.documentfile.provider.DocumentFile
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import kotlinx.coroutines.launch
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.resources.AndroidDevices
import org.videolan.tools.AppScope
import org.videolan.tools.Settings
import org.videolan.tools.putSingle
import org.videolan.vlc.R
import org.videolan.vlc.VlcMigrationHelper
import org.videolan.vlc.util.FileUtils
class WriteExternalDelegate : BaseHeadlessFragment() {
@ -104,7 +104,7 @@ class WriteExternalDelegate : BaseHeadlessFragment() {
fun needsWritePermission(uri: Uri) : Boolean {
val path = uri.path ?: return false
return AndroidUtil.isLolliPopOrLater && ("file" == uri.scheme || uri.scheme == null)
return VlcMigrationHelper.isLolliPopOrLater && ("file" == uri.scheme || uri.scheme == null)
&& path.isNotEmpty() && path.startsWith('/')
&& !path.startsWith(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY)
&& !(FileUtils.findFile(uri)?.canWrite() ?: false)

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

@ -178,6 +178,7 @@ import org.videolan.tools.setVisible
import org.videolan.vlc.BuildConfig
import org.videolan.vlc.PlaybackService
import org.videolan.vlc.R
import org.videolan.vlc.VlcMigrationHelper
import org.videolan.vlc.getAllTracks
import org.videolan.vlc.getSelectedVideoTrack
import org.videolan.vlc.gui.DialogActivity
@ -330,7 +331,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
@TargetApi(Build.VERSION_CODES.KITKAT_WATCH)
get() {
val pm = applicationContext.getSystemService<PowerManager>()!!
return if (AndroidUtil.isLolliPopOrLater) pm.isInteractive else pm.isScreenOn
return if (VlcMigrationHelper.isLolliPopOrLater) pm.isInteractive else pm.isScreenOn
}
val playlistObserver = Observer<List<MediaWrapper>> { mediaWrappers -> if (mediaWrappers != null) overlayDelegate.playlistAdapter.update(mediaWrappers) }
@ -672,7 +673,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
* @return the flag corresponding to the gesture the user wants to use
*/
private fun generateTouchFlags() = if (!isTv) {
val audioTouch = (!AndroidUtil.isLolliPopOrLater || !audiomanager.isVolumeFixed) && settings.getBoolean(ENABLE_VOLUME_GESTURE, true)
val audioTouch = (!VlcMigrationHelper.isLolliPopOrLater || !audiomanager.isVolumeFixed) && settings.getBoolean(ENABLE_VOLUME_GESTURE, true)
val brightnessTouch = !AndroidDevices.isChromeBook && settings.getBoolean(ENABLE_BRIGHTNESS_GESTURE, true)
((if (audioTouch) TOUCH_FLAG_AUDIO_VOLUME else 0)
+ (if (brightnessTouch) TOUCH_FLAG_BRIGHTNESS else 0)
@ -2283,7 +2284,7 @@ open class VideoPlayerActivity : AppCompatActivity(), PlaybackService.Callback,
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
fun getScreenOrientation(mode: PlayerOrientationMode): Int {
return if (!mode.locked) {
if (AndroidUtil.isJellyBeanMR2OrLater)
if (VlcMigrationHelper.isJellyBeanMR2OrLater)
ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
else
ActivityInfo.SCREEN_ORIENTATION_SENSOR

2
application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt

@ -381,7 +381,7 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
if (dim || player.isLocked) {
player.window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
navbar = navbar or (View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LOW_PROFILE or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
if (AndroidUtil.isKitKatOrLater) visibility = visibility or View.SYSTEM_UI_FLAG_IMMERSIVE
if (VlcMigrationHelper.isKitKatOrLater) visibility = visibility or View.SYSTEM_UI_FLAG_IMMERSIVE
visibility = visibility or View.SYSTEM_UI_FLAG_FULLSCREEN
} else {
player.window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

3
application/vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt

@ -36,6 +36,7 @@ import org.videolan.resources.AndroidDevices
import org.videolan.tools.livedata.LiveDataset
import org.videolan.vlc.ExternalMonitor
import org.videolan.vlc.R
import org.videolan.vlc.VlcMigrationHelper
import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate
import org.videolan.vlc.gui.helpers.hf.getDocumentFiles
import org.videolan.vlc.repository.DirectoryRepository
@ -92,7 +93,7 @@ open class FileBrowserProvider(
dataset.value = arrayListOf()
return
}
if (AndroidUtil.isLolliPopOrLater && !ExternalMonitor.devices.isEmpty()) {
if (VlcMigrationHelper.isLolliPopOrLater && !ExternalMonitor.devices.isEmpty()) {
val otg = MLServiceLocator.getAbstractMediaWrapper("otg://".toUri()).apply {
title = context.getString(R.string.otg_device_title)
type = MediaWrapper.TYPE_DIR

3
application/vlc-android/src/org/videolan/vlc/util/FileUtils.kt

@ -47,6 +47,7 @@ import org.videolan.resources.util.isExternalStorageManager
import org.videolan.tools.*
import org.videolan.vlc.BuildConfig
import org.videolan.vlc.R
import org.videolan.vlc.VlcMigrationHelper
import org.videolan.vlc.media.MediaUtils
import java.io.*
import java.lang.Runnable
@ -228,7 +229,7 @@ object FileUtils {
@WorkerThread
fun deleteFile(uri: Uri): Boolean {
if (isExternalStorageManager() || !AndroidUtil.isLolliPopOrLater || uri.path!!.startsWith(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY)) return deleteFile(uri.path)
if (isExternalStorageManager() || !VlcMigrationHelper.isLolliPopOrLater || uri.path!!.startsWith(AndroidDevices.EXTERNAL_PUBLIC_DIRECTORY)) return deleteFile(uri.path)
val docFile = findFile(uri)
if (docFile != null)
try {

3
application/vlc-android/src/org/videolan/vlc/util/Permissions.kt

@ -52,6 +52,7 @@ import org.videolan.tools.isCallable
import org.videolan.tools.putSingle
import org.videolan.vlc.BuildConfig
import org.videolan.vlc.R
import org.videolan.vlc.VlcMigrationHelper
import org.videolan.vlc.gui.helpers.hf.StoragePermissionsDelegate.Companion.askStoragePermission
import org.videolan.vlc.gui.helpers.hf.WriteExternalDelegate
@ -317,7 +318,7 @@ object Permissions {
askWriteStoragePermission(activity, false, callback)
return false
}
} else if (AndroidUtil.isLolliPopOrLater && WriteExternalDelegate.needsWritePermission(uri)) {
} else if (VlcMigrationHelper.isLolliPopOrLater && WriteExternalDelegate.needsWritePermission(uri)) {
WriteExternalDelegate.askForExtWrite(activity, uri, callback)
return false
}

4
application/vlc-android/src/org/videolan/vlc/util/VoiceSearchParams.kt

@ -25,7 +25,7 @@ package org.videolan.vlc.util
import android.os.Bundle
import android.provider.MediaStore
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.vlc.VlcMigrationHelper
class VoiceSearchParams(val query: String, extras: Bundle?) {
var isAny: Boolean = false
@ -47,7 +47,7 @@ class VoiceSearchParams(val query: String, extras: Bundle?) {
} else if (extras == null || !extras.containsKey(MediaStore.EXTRA_MEDIA_FOCUS)) {
isUnstructured = true
} else {
val genreKey = if (AndroidUtil.isLolliPopOrLater)
val genreKey = if (VlcMigrationHelper.isLolliPopOrLater)
MediaStore.EXTRA_MEDIA_GENRE
else
"android.intent.extra.genre"

8
medialibrary/vlc3/src/org/videolan/vlc/VlcMigrationHelper.java

@ -24,6 +24,10 @@
package org.videolan.vlc;
import static org.videolan.libvlc.util.AndroidUtil.isMarshMallowOrLater;
import android.os.Build;
import org.videolan.libvlc.interfaces.IMedia;
import java.util.ArrayList;
@ -37,4 +41,8 @@ public class VlcMigrationHelper {
}
return result;
}
public static final boolean isLolliPopOrLater = isMarshMallowOrLater || android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
public static final boolean isKitKatOrLater = isLolliPopOrLater || android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
public static final boolean isJellyBeanMR2OrLater = isKitKatOrLater || android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2;
}

4
medialibrary/vlc4/src/org/videolan/vlc/VlcMigrationHelper.java

@ -38,4 +38,8 @@ public class VlcMigrationHelper {
}
return Arrays.asList(tracks);
}
public static final boolean isLolliPopOrLater = true;
public static final boolean isKitKatOrLater = true;
public static final boolean isJellyBeanMR2OrLater = true;
}

Loading…
Cancel
Save