Browse Source

Add a show tracks to the audio control settings

Fixes #3124
merge-requests/2174/head
Nicolas Pomepuy 2 years ago
committed by Duncan McNamara
parent
commit
a1a6b67b69
  1. 3
      application/tools/src/main/java/org/videolan/tools/Settings.kt
  2. 22
      application/vlc-android/res/layout/playlist_item.xml
  3. 28
      application/vlc-android/res/xml/preferences_audio_controls.xml
  4. 7
      application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
  5. 2
      application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt
  6. 6
      application/vlc-android/src/org/videolan/vlc/gui/helpers/UiTools.kt
  7. 4
      application/vlc-android/src/org/videolan/vlc/gui/preferences/PreferencesAudioControls.kt
  8. 1
      application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt

3
application/tools/src/main/java/org/videolan/tools/Settings.kt

@ -28,6 +28,7 @@ object Settings : SingletonHolder<SharedPreferences, Context>({ init(it.applicat
var videoDoubleTapJumpDelay = 10
var audioJumpDelay = 10
var audioLongJumpDelay = 20
var audioShowTrackNumbers = MutableLiveData(false)
var showHiddenFiles = false
var showTrackNumber = true
var tvFoldersFirst = true
@ -54,6 +55,7 @@ object Settings : SingletonHolder<SharedPreferences, Context>({ init(it.applicat
videoDoubleTapJumpDelay = prefs.getInt(KEY_VIDEO_DOUBLE_TAP_JUMP_DELAY, 10)
audioJumpDelay = prefs.getInt(KEY_AUDIO_JUMP_DELAY, 10)
audioLongJumpDelay = prefs.getInt(KEY_AUDIO_LONG_JUMP_DELAY, 20)
audioShowTrackNumbers.postValue(prefs.getBoolean(KEY_AUDIO_SHOW_TRACK_NUMBERS, false))
showHiddenFiles = prefs.getBoolean(BROWSER_SHOW_HIDDEN_FILES, !tvUI)
showTrackNumber = prefs.getBoolean(ALBUMS_SHOW_TRACK_NUMBER, true)
tvFoldersFirst = prefs.getBoolean(TV_FOLDERS_FIRST, true)
@ -115,6 +117,7 @@ const val KEY_VIDEO_DOUBLE_TAP_JUMP_DELAY = "video_double_tap_jump_delay"
const val KEY_AUDIO_JUMP_DELAY = "audio_jump_delay"
const val KEY_AUDIO_LONG_JUMP_DELAY = "audio_long_jump_delay"
const val KEY_AUDIO_FORCE_SHUFFLE = "audio_force_shuffle"
const val KEY_AUDIO_SHOW_TRACK_NUMBERS = "audio_show_track_numbers"
// AudioPlayer

22
application/vlc-android/res/layout/playlist_item.xml

@ -35,6 +35,10 @@
name="stopAfterThis"
type="java.lang.Boolean" />
<variable
name="showTrackNumbers"
type="java.lang.Boolean" />
<variable
name="masked"
type="java.lang.Boolean" />
@ -98,6 +102,22 @@
app:layout_constraintStart_toStartOf="@+id/coverImage"
app:layout_constraintTop_toTopOf="@+id/coverImage" />
<TextView
android:id="@+id/track_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
app:trackNumber="@{media}"
android:minWidth="20dp"
android:gravity="end"
android:textColor="?attr/font_default"
android:textSize="14sp"
android:visibility="@{!showTrackNumbers ? View.GONE : View.VISIBLE}"
app:layout_constraintEnd_toStartOf="@+id/audio_item_title"
app:layout_constraintStart_toEndOf="@+id/coverImage"
app:layout_constraintBaseline_toBaselineOf="@+id/audio_item_title"
tools:text="1." />
<TextView
android:id="@+id/audio_item_title"
android:layout_width="0dp"
@ -119,7 +139,7 @@
app:layout_constraintBottom_toTopOf="@+id/audio_item_subtitle"
app:layout_constraintEnd_toEndOf="@+id/selector"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/coverImage"
app:layout_constraintStart_toEndOf="@+id/track_number"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
tools:text="Symphonie n°1" />

28
application/vlc-android/res/xml/preferences_audio_controls.xml

@ -5,12 +5,8 @@
android:key="video_category"
android:title="@string/video_prefs_category">
<CheckBoxPreference
app:singleLineTitle="false"
android:defaultValue="true"
android:key="blurred_cover_background"
android:summary="@string/blurred_cover_background_summary"
android:title="@string/blurred_cover_background_title"/>
<PreferenceCategory android:title="@string/controls_prefs_category"
app:iconSpaceReserved="false">
<org.videolan.vlc.gui.view.NumberPickerPreference
app:key="audio_jump_delay"
@ -31,6 +27,26 @@
android:summary="@string/force_shuffle_summary"
android:title="@string/force_shuffle_title"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/interface_prefs_screen"
app:iconSpaceReserved="false">
<CheckBoxPreference
app:singleLineTitle="false"
android:defaultValue="true"
android:key="blurred_cover_background"
android:summary="@string/blurred_cover_background_summary"
android:title="@string/blurred_cover_background_title"/>
<CheckBoxPreference
app:singleLineTitle="false"
android:defaultValue="false"
android:key="audio_show_track_numbers"
android:title="@string/albums_show_track_numbers"/>
</PreferenceCategory>
</androidx.preference.PreferenceScreen>

7
application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt

@ -31,7 +31,6 @@ import android.support.v4.media.session.PlaybackStateCompat
import android.text.Editable
import android.text.TextWatcher
import android.text.format.DateFormat
import android.util.Log
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
@ -230,6 +229,12 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
playlistModel.service?.manageAbRepeatStep(binding.abRepeatReset, binding.abRepeatStop, binding.abRepeatContainer, abRepeatAddMarker)
}
Settings.audioShowTrackNumbers.observe(viewLifecycleOwner) { showTrackNumbers ->
playlistAdapter.showTrackNumbers = showTrackNumbers
(binding.songsList.layoutManager as? LinearLayoutManager)?.let {
playlistAdapter.notifyItemRangeChanged(it.findFirstVisibleItemPosition(), it.findLastCompletelyVisibleItemPosition())
}
}
abRepeatAddMarker.setOnClickListener {
playlistModel.service?.playlistManager?.setABRepeatValue(playlistModel.service?.playlistManager?.getCurrentMedia(), binding.timeline.progress.toLong())

2
application/vlc-android/src/org/videolan/vlc/gui/audio/PlaylistAdapter.kt

@ -71,6 +71,7 @@ private const val ACTION_MOVED = "action_moved"
class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<MediaWrapper, PlaylistAdapter.ViewHolder>(), SwipeDragHelperAdapter, SchedulerCallback {
var showTrackNumbers: Boolean = false
private var defaultCoverVideo: BitmapDrawable
private var defaultCoverAudio: BitmapDrawable
private var model: PlaylistModel? = null
@ -130,6 +131,7 @@ class PlaylistAdapter(private val player: IPlayer) : DiffUtilAdapter<MediaWrappe
holder.binding.scaleType = ImageView.ScaleType.CENTER_CROP
holder.binding.stopAfter.visibility = if (stopAfter == position) View.VISIBLE else View.GONE
holder.binding.stopAfterThis = (position == stopAfter)
holder.binding.showTrackNumbers = showTrackNumbers
if (currentIndex == position) {
if (model?.playing != false) holder.binding.playing.start() else holder.binding.playing.stop()
holder.binding.playing.visibility = View.VISIBLE

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

@ -108,6 +108,7 @@ import org.videolan.vlc.util.LifecycleAwareScheduler
import org.videolan.vlc.util.SchedulerCallback
import org.videolan.vlc.util.ThumbnailsProvider
import org.videolan.vlc.util.openLinkIfPossible
import org.videolan.vlc.util.trackNumberText
import java.security.SecureRandom
import java.util.concurrent.TimeUnit
import kotlin.math.min
@ -975,6 +976,11 @@ fun selectedElevation(v: View, isSelected: Boolean?) {
}
}
@BindingAdapter("trackNumber")
fun trackNumber(v: View, media: MediaWrapper) {
(v as? TextView)?.text = media.trackNumberText()
}
fun BaseActivity.applyTheme() {
forcedTheme()?.let {
setTheme(it)

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

@ -25,6 +25,7 @@ package org.videolan.vlc.gui.preferences
import android.content.SharedPreferences
import org.videolan.tools.KEY_AUDIO_JUMP_DELAY
import org.videolan.tools.KEY_AUDIO_LONG_JUMP_DELAY
import org.videolan.tools.KEY_AUDIO_SHOW_TRACK_NUMBERS
import org.videolan.tools.Settings
import org.videolan.vlc.R
import org.videolan.vlc.gui.video.VideoPlayerActivity
@ -56,6 +57,9 @@ class PreferencesAudioControls : BasePreferenceFragment(), SharedPreferences.OnS
KEY_AUDIO_LONG_JUMP_DELAY -> {
Settings.audioLongJumpDelay = sharedPreferences.getInt(KEY_AUDIO_LONG_JUMP_DELAY, 20)
}
KEY_AUDIO_SHOW_TRACK_NUMBERS -> {
Settings.audioShowTrackNumbers.postValue(sharedPreferences.getBoolean(KEY_AUDIO_SHOW_TRACK_NUMBERS, false))
}
}
Settings.onAudioControlsChanged()
}

1
application/vlc-android/src/org/videolan/vlc/util/Kextensions.kt

@ -157,6 +157,7 @@ fun FragmentActivity.share(medias: List<MediaWrapper>) = lifecycleScope.launch {
fun MediaWrapper?.isMedia() = this != null && (type == MediaWrapper.TYPE_AUDIO || type == MediaWrapper.TYPE_VIDEO)
fun MediaWrapper?.isBrowserMedia() = this != null && (isMedia() || type == MediaWrapper.TYPE_DIR || type == MediaWrapper.TYPE_PLAYLIST)
fun MediaWrapper.trackNumberText() = if (trackNumber > 0) "$trackNumber." else ""
fun Context.getAppSystemService(name: String) = applicationContext.getSystemService(name)!!

Loading…
Cancel
Save