mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 16:00:31 +05:30
Merge remote-tracking branch 'upstream/master' into HEAD
This commit is contained in:
commit
0685e1c2d7
@ -12,12 +12,12 @@ import com.github.libretube.constants.BACKGROUND_CHANNEL_ID
|
||||
import com.github.libretube.constants.DOWNLOAD_CHANNEL_ID
|
||||
import com.github.libretube.constants.PUSH_CHANNEL_ID
|
||||
import com.github.libretube.db.DatabaseHolder
|
||||
import com.github.libretube.util.ExceptionHandler
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NotificationHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.helpers.ProxyHelper
|
||||
import com.github.libretube.helpers.ShortcutHelper
|
||||
import com.github.libretube.util.ExceptionHandler
|
||||
|
||||
class LibreTubeApp : Application() {
|
||||
override fun onCreate() {
|
||||
|
@ -17,9 +17,9 @@ import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.extensions.toLocalPlaylistItem
|
||||
import com.github.libretube.extensions.toStreamItem
|
||||
import com.github.libretube.extensions.toastFromMainThread
|
||||
import com.github.libretube.obj.ImportPlaylist
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.helpers.ProxyHelper
|
||||
import com.github.libretube.obj.ImportPlaylist
|
||||
import java.io.IOException
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.async
|
||||
|
@ -29,9 +29,9 @@ import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.extensions.query
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.extensions.toStreamItem
|
||||
import com.github.libretube.util.NowPlayingNotification
|
||||
import com.github.libretube.helpers.PlayerHelper
|
||||
import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams
|
||||
import com.github.libretube.util.NowPlayingNotification
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
import com.google.android.exoplayer2.ExoPlayer
|
||||
import com.google.android.exoplayer2.MediaItem
|
||||
|
@ -25,14 +25,14 @@ import com.github.libretube.extensions.getContentLength
|
||||
import com.github.libretube.extensions.query
|
||||
import com.github.libretube.extensions.toDownloadItems
|
||||
import com.github.libretube.extensions.toastFromMainThread
|
||||
import com.github.libretube.helpers.DownloadHelper
|
||||
import com.github.libretube.helpers.DownloadHelper.getNotificationId
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.obj.DownloadStatus
|
||||
import com.github.libretube.receivers.NotificationReceiver
|
||||
import com.github.libretube.receivers.NotificationReceiver.Companion.ACTION_DOWNLOAD_PAUSE
|
||||
import com.github.libretube.receivers.NotificationReceiver.Companion.ACTION_DOWNLOAD_RESUME
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.github.libretube.helpers.DownloadHelper
|
||||
import com.github.libretube.helpers.DownloadHelper.getNotificationId
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import java.io.File
|
||||
import java.net.HttpURLConnection
|
||||
import java.net.SocketTimeoutException
|
||||
|
@ -27,6 +27,12 @@ import com.github.libretube.constants.IntentData
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.databinding.ActivityMainBinding
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.helpers.NavBarHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.helpers.NetworkHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.helpers.ThemeHelper
|
||||
import com.github.libretube.helpers.WindowHelper
|
||||
import com.github.libretube.services.ClosingService
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.dialogs.ErrorDialog
|
||||
@ -36,12 +42,6 @@ import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.ui.models.SearchViewModel
|
||||
import com.github.libretube.ui.models.SubscriptionsViewModel
|
||||
import com.github.libretube.ui.tools.SleepTimer
|
||||
import com.github.libretube.helpers.NavBarHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.helpers.NetworkHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.helpers.ThemeHelper
|
||||
import com.github.libretube.helpers.WindowHelper
|
||||
import com.google.android.material.elevation.SurfaceColors
|
||||
|
||||
class MainActivity : BaseActivity() {
|
||||
|
@ -6,10 +6,10 @@ import androidx.activity.addCallback
|
||||
import androidx.fragment.app.commit
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.databinding.ActivityNointernetBinding
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.fragments.DownloadsFragment
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.helpers.NetworkHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.fragments.DownloadsFragment
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
|
||||
class NoInternetActivity : BaseActivity() {
|
||||
|
@ -16,12 +16,12 @@ import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||
import com.github.libretube.enums.FileType
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.extensions.updateParameters
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.extensions.setAspectRatio
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.helpers.PlayerHelper
|
||||
import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams
|
||||
import com.github.libretube.helpers.WindowHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.extensions.setAspectRatio
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.google.android.exoplayer2.C
|
||||
import com.google.android.exoplayer2.ExoPlayer
|
||||
import com.google.android.exoplayer2.MediaItem
|
||||
|
@ -7,8 +7,8 @@ import android.os.Bundle
|
||||
import android.util.Log
|
||||
import com.github.libretube.constants.IntentData
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.util.TextUtils
|
||||
|
||||
class RouterActivity : BaseActivity() {
|
||||
|
@ -7,9 +7,9 @@ import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.libretube.api.obj.ChapterSegment
|
||||
import com.github.libretube.databinding.ChapterColumnBinding
|
||||
import com.github.libretube.ui.viewholders.ChaptersViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.ThemeHelper
|
||||
import com.github.libretube.ui.viewholders.ChaptersViewHolder
|
||||
import com.google.android.exoplayer2.ExoPlayer
|
||||
|
||||
class ChaptersAdapter(
|
||||
|
@ -19,13 +19,13 @@ import com.github.libretube.api.obj.Comment
|
||||
import com.github.libretube.constants.IntentData
|
||||
import com.github.libretube.databinding.CommentsRowBinding
|
||||
import com.github.libretube.extensions.formatShort
|
||||
import com.github.libretube.ui.fragments.CommentsRepliesFragment
|
||||
import com.github.libretube.ui.viewholders.CommentsViewHolder
|
||||
import com.github.libretube.helpers.ClipboardHelper
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.util.TextUtils
|
||||
import com.github.libretube.helpers.ThemeHelper
|
||||
import com.github.libretube.ui.fragments.CommentsRepliesFragment
|
||||
import com.github.libretube.ui.viewholders.CommentsViewHolder
|
||||
import com.github.libretube.util.TextUtils
|
||||
|
||||
class CommentsAdapter(
|
||||
private val fragment: Fragment?,
|
||||
|
@ -14,9 +14,9 @@ import com.github.libretube.db.DatabaseHolder
|
||||
import com.github.libretube.db.obj.DownloadWithItems
|
||||
import com.github.libretube.extensions.formatAsFileSize
|
||||
import com.github.libretube.extensions.query
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.ui.activities.OfflinePlayerActivity
|
||||
import com.github.libretube.ui.viewholders.DownloadsViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import java.io.File
|
||||
|
||||
|
@ -8,9 +8,9 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.databinding.AppIconItemBinding
|
||||
import com.github.libretube.ui.viewholders.IconsSheetViewHolder
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.helpers.ThemeHelper
|
||||
import com.github.libretube.ui.viewholders.IconsSheetViewHolder
|
||||
|
||||
class IconsSheetAdapter : RecyclerView.Adapter<IconsSheetViewHolder>() {
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): IconsSheetViewHolder {
|
||||
|
@ -5,11 +5,11 @@ import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.libretube.databinding.LegacySubscriptionChannelBinding
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.LegacySubscriptionViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
|
||||
class LegacySubscriptionAdapter(
|
||||
private val subscriptions: List<com.github.libretube.api.obj.Subscription>
|
||||
|
@ -8,10 +8,10 @@ import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.libretube.databinding.QueueRowBinding
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.ui.viewholders.PlayingQueueViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
import com.github.libretube.helpers.ThemeHelper
|
||||
import com.github.libretube.ui.viewholders.PlayingQueueViewHolder
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
|
||||
class PlayingQueueAdapter : RecyclerView.Adapter<PlayingQueueViewHolder>() {
|
||||
|
||||
|
@ -13,13 +13,13 @@ import com.github.libretube.databinding.VideoRowBinding
|
||||
import com.github.libretube.enums.PlaylistType
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.extensions.setFormattedDuration
|
||||
import com.github.libretube.ui.extensions.setWatchProgressLength
|
||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.PlaylistViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import java.io.IOException
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
@ -12,10 +12,10 @@ import com.github.libretube.db.DatabaseHolder
|
||||
import com.github.libretube.db.obj.PlaylistBookmark
|
||||
import com.github.libretube.enums.PlaylistType
|
||||
import com.github.libretube.extensions.query
|
||||
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.PlaylistBookmarkViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.PlaylistBookmarkViewHolder
|
||||
|
||||
class PlaylistBookmarkAdapter(
|
||||
private val bookmarks: List<PlaylistBookmark>,
|
||||
|
@ -7,12 +7,12 @@ import com.github.libretube.R
|
||||
import com.github.libretube.api.obj.Playlists
|
||||
import com.github.libretube.databinding.PlaylistsRowBinding
|
||||
import com.github.libretube.enums.PlaylistType
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
||||
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.PlaylistsViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
|
||||
class PlaylistsAdapter(
|
||||
private val playlists: MutableList<Playlists>,
|
||||
|
@ -13,6 +13,8 @@ import com.github.libretube.databinding.VideoRowBinding
|
||||
import com.github.libretube.enums.PlaylistType
|
||||
import com.github.libretube.extensions.formatShort
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.extensions.setFormattedDuration
|
||||
import com.github.libretube.ui.extensions.setWatchProgressLength
|
||||
@ -21,8 +23,6 @@ import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet
|
||||
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.SearchViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.util.TextUtils
|
||||
|
||||
class SearchAdapter(
|
||||
|
@ -6,12 +6,12 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.libretube.api.obj.Subscription
|
||||
import com.github.libretube.databinding.ChannelSubscriptionRowBinding
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.extensions.setupSubscriptionButton
|
||||
import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.SubscriptionChannelViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
|
||||
class SubscriptionChannelAdapter(
|
||||
private val subscriptions: MutableList<Subscription>
|
||||
|
@ -20,14 +20,14 @@ import com.github.libretube.databinding.VideoRowBinding
|
||||
import com.github.libretube.extensions.dpToPx
|
||||
import com.github.libretube.extensions.formatShort
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.extensions.setFormattedDuration
|
||||
import com.github.libretube.ui.extensions.setWatchProgressLength
|
||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.VideosViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.util.TextUtils
|
||||
|
||||
class VideosAdapter(
|
||||
|
@ -8,13 +8,13 @@ import com.github.libretube.databinding.VideoRowBinding
|
||||
import com.github.libretube.db.DatabaseHolder
|
||||
import com.github.libretube.db.obj.WatchHistoryItem
|
||||
import com.github.libretube.extensions.query
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.extensions.setFormattedDuration
|
||||
import com.github.libretube.ui.extensions.setWatchProgressLength
|
||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.WatchHistoryViewHolder
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
|
||||
class WatchHistoryAdapter(
|
||||
private val watchHistory: MutableList<WatchHistoryItem>
|
||||
|
@ -7,8 +7,8 @@ import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceFragmentCompat
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.databinding.DialogTextPreferenceBinding
|
||||
import com.github.libretube.ui.activities.SettingsActivity
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.activities.SettingsActivity
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
/**
|
||||
|
@ -7,9 +7,9 @@ import androidx.fragment.app.DialogFragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.obj.BackupFile
|
||||
import com.github.libretube.obj.PreferenceItem
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
@ -8,8 +8,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.databinding.DialogNavbarOptionsBinding
|
||||
import com.github.libretube.ui.adapters.NavBarOptionsAdapter
|
||||
import com.github.libretube.helpers.NavBarHelper
|
||||
import com.github.libretube.ui.adapters.NavBarOptionsAdapter
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
class NavBarOptionsDialog : DialogFragment() {
|
||||
|
@ -13,8 +13,8 @@ import com.github.libretube.databinding.DialogShareBinding
|
||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||
import com.github.libretube.enums.ShareObjectType
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
class ShareDialog(
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.github.libretube.ui.fragments
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
@ -17,22 +18,28 @@ import com.github.libretube.R
|
||||
import com.github.libretube.api.obj.StreamItem
|
||||
import com.github.libretube.databinding.FragmentAudioPlayerBinding
|
||||
import com.github.libretube.enums.ShareObjectType
|
||||
import com.github.libretube.extensions.normalize
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.helpers.AudioHelper
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.services.BackgroundMode
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import com.github.libretube.ui.interfaces.AudioPlayerOptions
|
||||
import com.github.libretube.ui.listeners.AudioPlayerThumbnailListener
|
||||
import com.github.libretube.ui.sheets.PlaybackOptionsSheet
|
||||
import com.github.libretube.ui.sheets.PlayingQueueSheet
|
||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
|
||||
class AudioPlayerFragment : BaseFragment() {
|
||||
class AudioPlayerFragment : BaseFragment(), AudioPlayerOptions {
|
||||
private lateinit var binding: FragmentAudioPlayerBinding
|
||||
private lateinit var audioHelper: AudioHelper
|
||||
|
||||
private val onTrackChangeListener: (StreamItem) -> Unit = {
|
||||
updateStreamInfo()
|
||||
}
|
||||
@ -64,6 +71,7 @@ class AudioPlayerFragment : BaseFragment() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
audioHelper = AudioHelper(requireContext())
|
||||
Intent(activity, BackgroundMode::class.java).also { intent ->
|
||||
activity?.bindService(intent, connection, Context.BIND_AUTO_CREATE)
|
||||
}
|
||||
@ -78,6 +86,7 @@ class AudioPlayerFragment : BaseFragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
@ -129,13 +138,8 @@ class AudioPlayerFragment : BaseFragment() {
|
||||
).show(childFragmentManager, null)
|
||||
}
|
||||
|
||||
binding.thumbnail.setOnClickListener {
|
||||
val current = PlayingQueue.getCurrent()
|
||||
current?.let {
|
||||
VideoOptionsBottomSheet(it.url!!.toID(), it.title!!)
|
||||
.show(childFragmentManager)
|
||||
}
|
||||
}
|
||||
val listener = AudioPlayerThumbnailListener(requireContext(), this)
|
||||
binding.thumbnail.setOnTouchListener(listener)
|
||||
|
||||
// Listen for track changes due to autoplay or the notification
|
||||
PlayingQueue.addOnTrackChangedListener(onTrackChangeListener)
|
||||
@ -146,6 +150,11 @@ class AudioPlayerFragment : BaseFragment() {
|
||||
|
||||
// load the stream info into the UI
|
||||
updateStreamInfo()
|
||||
|
||||
// update the currently shown volume
|
||||
binding.volumeProgressBar.let { bar ->
|
||||
bar.progress = audioHelper.getVolumeWithScale(bar.max)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -232,4 +241,48 @@ class AudioPlayerFragment : BaseFragment() {
|
||||
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
override fun onSingleTap() {
|
||||
if (isPaused) playerService?.play() else playerService?.pause()
|
||||
}
|
||||
|
||||
override fun onLongTap() {
|
||||
val current = PlayingQueue.getCurrent()
|
||||
VideoOptionsBottomSheet(current?.url?.toID() ?: return, current.title ?: return)
|
||||
.show(childFragmentManager)
|
||||
}
|
||||
|
||||
override fun onSwipe(distanceY: Float) {
|
||||
binding.volumeControls.visibility = View.VISIBLE
|
||||
updateVolume(distanceY)
|
||||
}
|
||||
|
||||
override fun onSwipeEnd() {
|
||||
binding.volumeControls.visibility = View.GONE
|
||||
}
|
||||
|
||||
private fun updateVolume(distance: Float) {
|
||||
val bar = binding.volumeProgressBar
|
||||
binding.volumeControls.apply {
|
||||
if (visibility == View.GONE) {
|
||||
visibility = View.VISIBLE
|
||||
// Volume could be changed using other mediums, sync progress
|
||||
// bar with new value.
|
||||
bar.progress = audioHelper.getVolumeWithScale(bar.max)
|
||||
}
|
||||
}
|
||||
|
||||
if (bar.progress == 0) {
|
||||
binding.volumeImageView.setImageResource(
|
||||
when {
|
||||
distance > 0 -> R.drawable.ic_volume_up
|
||||
else -> R.drawable.ic_volume_off
|
||||
}
|
||||
)
|
||||
}
|
||||
bar.incrementProgressBy(distance.toInt() / 3)
|
||||
audioHelper.setVolumeWithScale(bar.progress, bar.max)
|
||||
|
||||
binding.volumeTextView.text = "${bar.progress.normalize(0, bar.max, 0, 100)}"
|
||||
}
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ import com.github.libretube.enums.ShareObjectType
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.formatShort
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.obj.ChannelTabs
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.ui.adapters.SearchAdapter
|
||||
@ -26,7 +27,6 @@ import com.github.libretube.ui.adapters.VideosAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import com.github.libretube.ui.extensions.setupSubscriptionButton
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import java.io.IOException
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
@ -19,13 +19,13 @@ import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||
import com.github.libretube.db.obj.DownloadWithItems
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.extensions.formatAsFileSize
|
||||
import com.github.libretube.helpers.DownloadHelper
|
||||
import com.github.libretube.obj.DownloadStatus
|
||||
import com.github.libretube.receivers.DownloadReceiver
|
||||
import com.github.libretube.services.DownloadService
|
||||
import com.github.libretube.ui.adapters.DownloadsAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.viewholders.DownloadsViewHolder
|
||||
import com.github.libretube.helpers.DownloadHelper
|
||||
import java.io.File
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
|
@ -18,11 +18,11 @@ import com.github.libretube.databinding.FragmentHomeBinding
|
||||
import com.github.libretube.db.DatabaseHolder
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.extensions.toastFromMainThread
|
||||
import com.github.libretube.helpers.LocaleHelper
|
||||
import com.github.libretube.ui.adapters.PlaylistBookmarkAdapter
|
||||
import com.github.libretube.ui.adapters.PlaylistsAdapter
|
||||
import com.github.libretube.ui.adapters.VideosAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.helpers.LocaleHelper
|
||||
import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
@ -21,13 +21,13 @@ import com.github.libretube.db.DatabaseHolder
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.extensions.dpToPx
|
||||
import com.github.libretube.helpers.NavBarHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.adapters.PlaylistBookmarkAdapter
|
||||
import com.github.libretube.ui.adapters.PlaylistsAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.dialogs.CreatePlaylistDialog
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.helpers.NavBarHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
|
||||
class LibraryFragment : BaseFragment() {
|
||||
|
||||
|
@ -67,6 +67,13 @@ import com.github.libretube.extensions.query
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.extensions.toStreamItem
|
||||
import com.github.libretube.extensions.updateParameters
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import com.github.libretube.helpers.DashHelper
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.helpers.PlayerHelper
|
||||
import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.obj.VideoResolution
|
||||
import com.github.libretube.services.BackgroundMode
|
||||
@ -81,24 +88,17 @@ import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import com.github.libretube.ui.extensions.setAspectRatio
|
||||
import com.github.libretube.ui.extensions.setupSubscriptionButton
|
||||
import com.github.libretube.ui.interfaces.OnlinePlayerOptions
|
||||
import com.github.libretube.ui.listeners.SeekbarPreviewListener
|
||||
import com.github.libretube.ui.models.CommentsViewModel
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||
import com.github.libretube.ui.sheets.CommentsSheet
|
||||
import com.github.libretube.ui.sheets.PlayingQueueSheet
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import com.github.libretube.helpers.DashHelper
|
||||
import com.github.libretube.util.DataSaverMode
|
||||
import com.github.libretube.util.HtmlParser
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.util.LinkHandler
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.util.NowPlayingNotification
|
||||
import com.github.libretube.helpers.PlayerHelper
|
||||
import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.listeners.SeekbarPreviewListener
|
||||
import com.github.libretube.util.TextUtils
|
||||
import com.google.android.exoplayer2.C
|
||||
import com.google.android.exoplayer2.ExoPlayer
|
||||
|
@ -26,13 +26,13 @@ import com.github.libretube.extensions.dpToPx
|
||||
import com.github.libretube.extensions.query
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.extensions.toPlaylistBookmark
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.ui.adapters.PlaylistAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.extensions.serializable
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
import com.github.libretube.util.TextUtils
|
||||
|
||||
|
@ -16,9 +16,9 @@ import com.github.libretube.db.DatabaseHelper
|
||||
import com.github.libretube.db.obj.SearchHistoryItem
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.hideKeyboard
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.adapters.SearchAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import java.io.IOException
|
||||
import retrofit2.HttpException
|
||||
|
||||
|
@ -13,13 +13,13 @@ import com.github.libretube.R
|
||||
import com.github.libretube.api.obj.StreamItem
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.databinding.FragmentSubscriptionsBinding
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.adapters.LegacySubscriptionAdapter
|
||||
import com.github.libretube.ui.adapters.SubscriptionChannelAdapter
|
||||
import com.github.libretube.ui.adapters.VideosAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.models.SubscriptionsViewModel
|
||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
|
||||
class SubscriptionsFragment : BaseFragment() {
|
||||
private lateinit var binding: FragmentSubscriptionsBinding
|
||||
|
@ -12,10 +12,10 @@ import com.github.libretube.R
|
||||
import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.databinding.FragmentTrendsBinding
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.helpers.LocaleHelper
|
||||
import com.github.libretube.ui.activities.SettingsActivity
|
||||
import com.github.libretube.ui.adapters.VideosAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.helpers.LocaleHelper
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import java.io.IOException
|
||||
import retrofit2.HttpException
|
||||
|
@ -19,12 +19,12 @@ import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.extensions.dpToPx
|
||||
import com.github.libretube.extensions.query
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.helpers.ProxyHelper
|
||||
import com.github.libretube.ui.adapters.WatchHistoryAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
import com.github.libretube.helpers.ProxyHelper
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
class WatchHistoryFragment : BaseFragment() {
|
||||
|
@ -0,0 +1,12 @@
|
||||
package com.github.libretube.ui.interfaces
|
||||
|
||||
interface AudioPlayerOptions {
|
||||
|
||||
fun onSingleTap()
|
||||
|
||||
fun onLongTap()
|
||||
|
||||
fun onSwipe(distanceY: Float)
|
||||
|
||||
fun onSwipeEnd()
|
||||
}
|
@ -0,0 +1,81 @@
|
||||
package com.github.libretube.ui.listeners
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.view.GestureDetector
|
||||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.view.ViewConfiguration
|
||||
import androidx.core.os.postDelayed
|
||||
import com.github.libretube.ui.interfaces.AudioPlayerOptions
|
||||
import kotlin.math.abs
|
||||
|
||||
class AudioPlayerThumbnailListener(context: Context, private val listener: AudioPlayerOptions) :
|
||||
View.OnTouchListener {
|
||||
|
||||
private val handler = Handler(Looper.getMainLooper())
|
||||
private val gestureDetector = GestureDetector(context, GestureListener(), handler)
|
||||
private var isMoving = false
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
override fun onTouch(v: View, event: MotionEvent): Boolean {
|
||||
if (event.action == MotionEvent.ACTION_UP && isMoving) {
|
||||
isMoving = false
|
||||
listener.onSwipeEnd()
|
||||
return false
|
||||
}
|
||||
|
||||
runCatching {
|
||||
gestureDetector.onTouchEvent(event)
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
private inner class GestureListener : GestureDetector.SimpleOnGestureListener() {
|
||||
|
||||
override fun onDown(e: MotionEvent): Boolean {
|
||||
if (isMoving) return false
|
||||
|
||||
handler.postDelayed(ACTION_INTERVAL, SINGLE_PRESS_TOKEN) {
|
||||
if (!isMoving) listener.onSingleTap()
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onScroll(
|
||||
e1: MotionEvent,
|
||||
e2: MotionEvent,
|
||||
distanceX: Float,
|
||||
distanceY: Float
|
||||
): Boolean {
|
||||
val insideThreshHold = abs(e2.y - e1.y) <= MOVEMENT_THRESHOLD
|
||||
|
||||
// If the movement is inside threshold or scroll is horizontal then return false
|
||||
if (!isMoving && (insideThreshHold || abs(distanceX) > abs(distanceY))) {
|
||||
return false
|
||||
}
|
||||
|
||||
isMoving = true
|
||||
|
||||
listener.onSwipe(distanceY)
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onLongPress(e: MotionEvent) {
|
||||
// remove to single press action from the queue
|
||||
handler.removeCallbacksAndMessages(SINGLE_PRESS_TOKEN)
|
||||
|
||||
listener.onLongTap()
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val MOVEMENT_THRESHOLD = 10
|
||||
private val ACTION_INTERVAL = ViewConfiguration.getLongPressTimeout().toLong()
|
||||
private const val SINGLE_PRESS_TOKEN = "singlePress"
|
||||
}
|
||||
}
|
@ -12,10 +12,10 @@ import android.view.ScaleGestureDetector
|
||||
import android.view.View
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.os.postDelayed
|
||||
import com.github.libretube.helpers.PlayerHelper
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.interfaces.PlayerGestureOptions
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.helpers.PlayerHelper
|
||||
import kotlin.math.abs
|
||||
|
||||
class PlayerGestureController(activity: BaseActivity, private val listener: PlayerGestureOptions) :
|
||||
|
@ -9,8 +9,8 @@ import androidx.core.math.MathUtils
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import coil.request.ImageRequest
|
||||
import com.github.libretube.api.obj.PreviewFrames
|
||||
import com.github.libretube.obj.PreviewFrame
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.obj.PreviewFrame
|
||||
import com.google.android.exoplayer2.ui.TimeBar
|
||||
|
||||
class SeekbarPreviewListener(
|
||||
|
@ -6,9 +6,9 @@ import androidx.preference.ListPreference
|
||||
import androidx.preference.Preference
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
import com.github.libretube.helpers.ImageHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
||||
class AdvancedSettings : BasePreferenceFragment() {
|
||||
|
@ -7,12 +7,12 @@ import androidx.preference.Preference
|
||||
import androidx.preference.SwitchPreferenceCompat
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.adapters.IconsSheetAdapter
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
import com.github.libretube.ui.dialogs.NavBarOptionsDialog
|
||||
import com.github.libretube.ui.dialogs.RequireRestartDialog
|
||||
import com.github.libretube.ui.sheets.IconsBottomSheet
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
|
||||
class AppearanceSettings : BasePreferenceFragment() {
|
||||
override val titleResourceId: Int = R.string.appearance
|
||||
|
@ -7,11 +7,11 @@ import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
|
||||
import androidx.preference.Preference
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.helpers.BackupHelper
|
||||
import com.github.libretube.helpers.ImportHelper
|
||||
import com.github.libretube.obj.BackupFile
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
import com.github.libretube.ui.dialogs.BackupDialog
|
||||
import com.github.libretube.helpers.BackupHelper
|
||||
import com.github.libretube.helpers.ImportHelper
|
||||
import java.time.LocalDateTime
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
|
@ -7,10 +7,10 @@ import androidx.preference.Preference
|
||||
import androidx.preference.SwitchPreferenceCompat
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
import com.github.libretube.ui.dialogs.RequireRestartDialog
|
||||
import com.github.libretube.helpers.LocaleHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
import com.github.libretube.ui.dialogs.RequireRestartDialog
|
||||
|
||||
class GeneralSettings : BasePreferenceFragment() {
|
||||
override val titleResourceId: Int = R.string.general
|
||||
|
@ -15,12 +15,12 @@ import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||
import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.extensions.toastFromMainThread
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
import com.github.libretube.ui.dialogs.CustomInstanceDialog
|
||||
import com.github.libretube.ui.dialogs.DeleteAccountDialog
|
||||
import com.github.libretube.ui.dialogs.LoginDialog
|
||||
import com.github.libretube.ui.dialogs.LogoutDialog
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
|
||||
class InstanceSettings : BasePreferenceFragment() {
|
||||
override val titleResourceId: Int = R.string.instance
|
||||
|
@ -6,9 +6,9 @@ import androidx.preference.SwitchPreferenceCompat
|
||||
import androidx.work.ExistingPeriodicWorkPolicy
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.helpers.NotificationHelper
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
import com.github.libretube.ui.views.TimePickerPreference
|
||||
import com.github.libretube.helpers.NotificationHelper
|
||||
|
||||
class NotificationSettings : BasePreferenceFragment() {
|
||||
override val titleResourceId: Int = R.string.notifications
|
||||
|
@ -12,9 +12,9 @@ import androidx.preference.Preference
|
||||
import androidx.preference.SwitchPreferenceCompat
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
import com.github.libretube.helpers.LocaleHelper
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||
|
||||
class PlayerSettings : BasePreferenceFragment() {
|
||||
override val titleResourceId: Int = R.string.player
|
||||
|
@ -7,10 +7,10 @@ import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.enums.ShareObjectType
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import com.github.libretube.helpers.NavigationHelper
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
/**
|
||||
|
@ -12,11 +12,11 @@ import com.github.libretube.extensions.query
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.extensions.toPlaylistBookmark
|
||||
import com.github.libretube.extensions.toastFromMainThread
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
||||
import com.github.libretube.ui.dialogs.RenamePlaylistDialog
|
||||
import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
@ -5,11 +5,11 @@ import com.github.libretube.R
|
||||
import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.enums.ShareObjectType
|
||||
import com.github.libretube.extensions.toStreamItem
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.ui.dialogs.AddToPlaylistDialog
|
||||
import com.github.libretube.ui.dialogs.DownloadDialog
|
||||
import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import com.github.libretube.helpers.BackgroundHelper
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
|
@ -7,8 +7,8 @@ import android.os.Process
|
||||
import androidx.core.os.postDelayed
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
|
||||
object SleepTimer {
|
||||
|
@ -23,19 +23,19 @@ import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
|
||||
import com.github.libretube.databinding.PlayerGestureControlsViewBinding
|
||||
import com.github.libretube.extensions.dpToPx
|
||||
import com.github.libretube.extensions.normalize
|
||||
import com.github.libretube.helpers.AudioHelper
|
||||
import com.github.libretube.helpers.BrightnessHelper
|
||||
import com.github.libretube.helpers.PlayerHelper
|
||||
import com.github.libretube.obj.BottomSheetItem
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.interfaces.OnlinePlayerOptions
|
||||
import com.github.libretube.ui.interfaces.PlayerGestureOptions
|
||||
import com.github.libretube.ui.interfaces.PlayerOptions
|
||||
import com.github.libretube.ui.listeners.PlayerGestureController
|
||||
import com.github.libretube.ui.models.PlayerViewModel
|
||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||
import com.github.libretube.ui.sheets.PlaybackOptionsSheet
|
||||
import com.github.libretube.helpers.AudioHelper
|
||||
import com.github.libretube.helpers.BrightnessHelper
|
||||
import com.github.libretube.ui.listeners.PlayerGestureController
|
||||
import com.github.libretube.helpers.PlayerHelper
|
||||
import com.github.libretube.util.PlayingQueue
|
||||
import com.google.android.exoplayer2.ExoPlayer
|
||||
import com.google.android.exoplayer2.Player
|
||||
|
@ -19,9 +19,9 @@ import com.github.libretube.constants.PUSH_CHANNEL_ID
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.github.libretube.ui.views.TimePickerPreference
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import java.time.LocalTime
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
|
@ -23,6 +23,41 @@
|
||||
app:shapeAppearanceOverlay="@style/ShapeAppearance.Material3.Corner.Small"
|
||||
tools:src="@tools:sample/backgrounds/scenic" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/volumeControls"
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:background="@drawable/controls_layout_bg"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone"
|
||||
tools:ignore="RtlHardcoded">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/volume_textView"
|
||||
style="@style/SwipeControlString"
|
||||
android:layout_gravity="center"
|
||||
app:autoSizeTextType="uniform" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/volume_progressBar"
|
||||
style="@android:style/Widget.ProgressBar.Horizontal"
|
||||
android:layout_width="7dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginVertical="4dp"
|
||||
android:progressDrawable="@drawable/vertical_progressbar" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/volume_imageView"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_gravity="center"
|
||||
android:contentDescription="@string/volume"
|
||||
android:src="@drawable/ic_volume_up" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">تخطي الصمت</string>
|
||||
<string name="help">التعليمات</string>
|
||||
<string name="faq">الأسئلة المتداولة</string>
|
||||
<string name="replies">الردود</string>
|
||||
</resources>
|
@ -5,7 +5,7 @@
|
||||
<string name="search_hint">Axtarış</string>
|
||||
<string name="videos">Videolar</string>
|
||||
<string name="subscribe">Abunə Ol</string>
|
||||
<string name="unsubscribe">Abunəlikdən çıx</string>
|
||||
<string name="unsubscribe">Abunə olma</string>
|
||||
<string name="share">Paylaş</string>
|
||||
<string name="save">Saxla</string>
|
||||
<string name="download">Yüklə</string>
|
||||
@ -15,13 +15,13 @@
|
||||
<string name="register">Qeydiyyatdan keç</string>
|
||||
<string name="logout">Çıx</string>
|
||||
<string name="cancel">Ləğv et</string>
|
||||
<string name="loggedIn">Daxil olundu.</string>
|
||||
<string name="loggedIn">Giriş edildi.</string>
|
||||
<string name="loggedout">Çıxıldı.</string>
|
||||
<string name="registered">Qeydiyyatdan keçilib. İndi kanallara abunə ola bilərsiniz.</string>
|
||||
<string name="already_logged_in">Artıq daxil olunub.İstəsəniz hesabınızdan çıxa bilərsiniz.</string>
|
||||
<string name="login_first">Zəhmət olmasa, daxil ol və təkrar cəhd et.</string>
|
||||
<string name="startpage">Ev</string>
|
||||
<string name="subscriptions">Abunəliklər</string>
|
||||
<string name="subscriptions">Abunələr</string>
|
||||
<string name="library">Kitabxana</string>
|
||||
<string name="instances">Seç…</string>
|
||||
<string name="customInstance">Fərdi</string>
|
||||
@ -38,7 +38,7 @@
|
||||
<string name="music_songs">YT Musiqi Mahnıları</string>
|
||||
<string name="music_videos">YT Musiqi Videoları</string>
|
||||
<string name="music_playlists">YT Musiqi Pleylistləri</string>
|
||||
<string name="defaultTab">Defolt Panel</string>
|
||||
<string name="defaultTab">Standart Panel</string>
|
||||
<string name="sponsorblock">SponsorBlok</string>
|
||||
<string name="sponsorblock_summary">https://sponsor.ajay.app API\'sini istifadə edir</string>
|
||||
<string name="category_intro_description">Həqiqi məzmunu olmayan aralıq. Fasilə, statik çərçivə, təkrarlanan animasiya ola bilər. Məlumat ehtiva edən keçidlər üçün istifadə edilməməlidir.</string>
|
||||
@ -54,33 +54,33 @@
|
||||
<string name="success">Bitdi.</string>
|
||||
<string name="comments">Şərhlər</string>
|
||||
<string name="noInternet">Əvvəlcə İnternetə Qoşul.</string>
|
||||
<string name="retry">Yenidən Cəhd Et</string>
|
||||
<string name="retry">Təkrar Cəhd Et</string>
|
||||
<string name="segment_skipped">Seqment ötürüldü</string>
|
||||
<string name="sponsorblock_state">Aç</string>
|
||||
<string name="category_sponsor_description">Ödənişli reklam, tövsiyələr və birbaşa reklamlar.Öz reklamı və ya səbəblərə, yaradıcılara, veb saytlara və məhsullara pulsuz orijinal elanlar üçün deyil.</string>
|
||||
<string name="category_interaction">İnteraksiya xatırladıcı(bəyən və abunə ol)</string>
|
||||
<string name="category_intro">Fasilə/Giriş Animasiyası</string>
|
||||
<string name="login_register">Daxil ol/qeydiyyatdan keç</string>
|
||||
<string name="please_login">Zəhmət olmasa, əvvəlcə tənzimləmələrdə daxil ol və ya qeydiyyatdan keç.</string>
|
||||
<string name="please_login">Zəhmət olmasa, əvvəlcə tənzimləmələrdə giriş et və ya qeydiyyatdan keç.</string>
|
||||
<string name="importsuccess">Abunə olundu</string>
|
||||
<string name="subscribeIsEmpty">Əvvəlcə bəzi kanallara abunə ol.</string>
|
||||
<string name="cannotDownload">Bu yayımı endirmək mümkün deyil.</string>
|
||||
<string name="dlcomplete">Endirmə tamamlandı.</string>
|
||||
<string name="dlisinprogress">Başqa endirmə artıq davam edir, zəhmət olmasa, bitənə qədər gözlə.</string>
|
||||
<string name="dlisinprogress">Artıq digər endirmə davam edir, zəhmət olmasa, bitənə qədər gözlə.</string>
|
||||
<string name="downloadfailed">Endirmə alınmadı.</string>
|
||||
<string name="vlc">VLC\'də Aç</string>
|
||||
<string name="vlcerror">VLC-də açmaq mümkün olmadı. O, quraşdırılmamış ola bilər.</string>
|
||||
<string name="import_from_yt">Abunəlikləri idxal et</string>
|
||||
<string name="import_from_yt_summary">YouTube və ya NewPipe\'dan</string>
|
||||
<string name="app_theme">Tema</string>
|
||||
<string name="server_error">Serverlə problem yaşanır. Başqa nümunə cəhd edilsinmi\?</string>
|
||||
<string name="server_error">Serverlə problem yaşanır. Başqa nümunə sınansın\?</string>
|
||||
<string name="unknown_error">Şəbəkə xətası.</string>
|
||||
<string name="error">Nəsə xəta baş verdi.</string>
|
||||
<string name="empty">İstifadəçi adı və şifrə daxil etməlisiniz.</string>
|
||||
<string name="notgmail">Bu Piped hesabı üçündür.</string>
|
||||
<string name="defres">Video görüntü imkanı</string>
|
||||
<string name="grid">Şəbəkə sütunları</string>
|
||||
<string name="emptyList">Burada heç nə yoxdur.</string>
|
||||
<string name="emptyList">Bura boşdur.</string>
|
||||
<string name="deletePlaylist">Pleylisti sil</string>
|
||||
<string name="areYouSure">Pleylist silinsinmi\?</string>
|
||||
<string name="createPlaylist">Pleylist yarat</string>
|
||||
@ -119,7 +119,7 @@
|
||||
<string name="update_available">%1$s Versiyası Mövcuddur</string>
|
||||
<string name="update_available_text">Onu endirmək üçün GitHub\'da buraxılışlara keçilsinmi\?</string>
|
||||
<string name="appearance">Xarici Görünüş</string>
|
||||
<string name="app_behavior">Davranma</string>
|
||||
<string name="app_behavior">Davranış</string>
|
||||
<string name="downloads">Yüklənənlər</string>
|
||||
<string name="video_format">Video formatı</string>
|
||||
<string name="video_format_summary">Səs və video birlikdə endirildisə, faylların dönüşdürülməsi.</string>
|
||||
@ -132,9 +132,9 @@
|
||||
<string name="playback_speed">Oynatma sürəti</string>
|
||||
<string name="advanced">Qabaqcıl</string>
|
||||
<string name="player">Oynadıcı</string>
|
||||
<string name="appearance_summary">Tətbiqi zövqünüzə uyğunlaşdırın.</string>
|
||||
<string name="appearance_summary">Tətbiqi zövqünüzə görə uyğunlaşdırın.</string>
|
||||
<string name="advanced_summary">Yüklənənlər və sıfırla</string>
|
||||
<string name="update_summary">Yeniləmə üçün yoxla</string>
|
||||
<string name="update_summary">Yeniləmək üçün yoxla</string>
|
||||
<string name="no_update_available">Ən son versiyanı işlədirsiniz.</string>
|
||||
<string name="live">Canlı</string>
|
||||
<string name="authors">Müəlliflər</string>
|
||||
@ -148,7 +148,7 @@
|
||||
<string name="internal_storage">Daxili yaddaş</string>
|
||||
<string name="download_folder_summary">Endirilmiş medianın saxlanıldığı qovluğun adı.</string>
|
||||
<string name="views">%1$s baxış</string>
|
||||
<string name="defaultIcon">Defolt</string>
|
||||
<string name="defaultIcon">Standart</string>
|
||||
<string name="legacyIcon">İtmiş miras</string>
|
||||
<string name="fireIcon">Dəbdəbəli yanğın</string>
|
||||
<string name="gradientIcon">Pərgar meyli</string>
|
||||
@ -188,14 +188,14 @@
|
||||
<string name="hideTrendingPage">\"Trenddə olan\" səhifəsini gizlət</string>
|
||||
<string name="quality">Keyfiyyət</string>
|
||||
<string name="behavior">Davranış</string>
|
||||
<string name="player_summary">Defolt tənzimləmələr və davranış</string>
|
||||
<string name="player_summary">Standartlar və davranış</string>
|
||||
<string name="seek_increment">Axtarış artımı</string>
|
||||
<string name="instance_frontend_url">Nümunə üçün URL</string>
|
||||
<string name="autoplay_summary">Cari videodan sonra növbəti videonu avtomatik oynat.</string>
|
||||
<string name="autoplay_summary">Hazırkı videodan sonra növbəti videonu avtomatik oynat.</string>
|
||||
<string name="pauseOnScreenOff">Avtomatik fasilə</string>
|
||||
<string name="pauseOnScreenOff_summary">Ekran söndürüldükdə oynatmanı dayandır.</string>
|
||||
<string name="clonePlaylist">Pleylisti klonla</string>
|
||||
<string name="reset">İlkin tənzimləmələri qaytar</string>
|
||||
<string name="reset">Standartları qaytar</string>
|
||||
<string name="reset_message">Bütün tənzimləmələr sıfırlansın və sistemdən çıxılsın\?</string>
|
||||
<string name="account">Hesab</string>
|
||||
<string name="restore">Bərpa Et</string>
|
||||
@ -204,7 +204,7 @@
|
||||
<string name="watch_history">Baxış Tarixçəsi</string>
|
||||
<string name="watch_positions">Mövqe xatırlat</string>
|
||||
<string name="watch_positions_summary">Son oynatma mövqeyindən davam etdir</string>
|
||||
<string name="auth_instances">Təsdiqləyici nümunəni seç</string>
|
||||
<string name="auth_instances">Təsdiqləyici nümunə seç</string>
|
||||
<string name="auth_instance_summary">Təsdiqlənmiş dəvətlər üçün fərqli nümunə istifadə et.</string>
|
||||
<string name="auth_instance">Təsdiqləyici nümunə</string>
|
||||
<string name="github">GitHub</string>
|
||||
@ -222,7 +222,7 @@
|
||||
<string name="twitter">Twitter</string>
|
||||
<string name="discord">Discord</string>
|
||||
<string name="open">Aç…</string>
|
||||
<string name="turnInternetOn">Lütfən, İnternetə qoşulmaq üçün Wi-Fi və ya mobil məlumatı açın.</string>
|
||||
<string name="turnInternetOn">Zəhmət olmasa, İnternetə qoşulmaq üçün Wi-Fi və ya mobil məlumatı açın.</string>
|
||||
<string name="chapters">Bölmələr</string>
|
||||
<string name="change_playback_speed">Oynatma sürəti</string>
|
||||
<string name="require_restart_message">Yeni dəyişiklikləri işlətmək üçün tətbiqi yenidən başlat.</string>
|
||||
@ -237,10 +237,10 @@
|
||||
<string name="pure_theme">Təmiz tema</string>
|
||||
<string name="pure_theme_summary">Təmiz ağ/qara tema</string>
|
||||
<string name="no_player_found">Xarici oynadıcı tapılmadı. Zəhmət olmasa, birinin quraşdırıldığından əmin olun.</string>
|
||||
<string name="data_saver_mode">Məlumata qənaət rejimi</string>
|
||||
<string name="data_saver_mode">Məlumat qənaəti rejimi</string>
|
||||
<string name="autoRotatePlayer_summary">Cihaz fırladıldıqda tam ekran oynat.</string>
|
||||
<string name="search_history_summary">Axtarışları saxla</string>
|
||||
<string name="watch_history_summary">Baxılan videoları yerli olaraq saxla</string>
|
||||
<string name="watch_history_summary">Baxılan videoların yerli olaraq saxlanılması</string>
|
||||
<string name="reset_watch_positions">Sıfırla</string>
|
||||
<string name="system_caption_style">Sistem altyazı üsulu</string>
|
||||
<string name="captions">Altyazılar</string>
|
||||
@ -302,7 +302,7 @@
|
||||
<string name="resize_mode_zoom">Yaxınlaşdır</string>
|
||||
<string name="resize_mode_fit">Uyğunlaşdır</string>
|
||||
<string name="repeat_mode_none">Heç biri</string>
|
||||
<string name="repeat_mode_current">Cari</string>
|
||||
<string name="repeat_mode_current">Hazırkı</string>
|
||||
<string name="backup_restore">Nüsxələ & bərpa et</string>
|
||||
<string name="backup">Nüsxələ</string>
|
||||
<string name="picture_in_picture">Şəkil içində Şəkil</string>
|
||||
@ -337,10 +337,10 @@
|
||||
<string name="background_channel_description">Səs oynadıcını idarə etmək üçün düymələrlə bildiriş göstərir.</string>
|
||||
<string name="play_next">Sonrakında oynat</string>
|
||||
<string name="navigation_bar">Naviqasiya çubuğu</string>
|
||||
<string name="select_at_least_one">Lütfən, ən az bir element seç</string>
|
||||
<string name="change_region">Trend\'in cari ölkə üçün əlçatan olmadığı görünür.Lütfən, tənzimləmələrdə başqasını seç.</string>
|
||||
<string name="select_at_least_one">Xahiş edirik, ən az bir element seç</string>
|
||||
<string name="change_region">Trend\'in hazırkı ölkə üçün əlçatan olmadığı görünür.Xahiş edirik, tənzimləmələrdə başqasını seç.</string>
|
||||
<string name="limit_hls">HLS\'ni 1080p ilə məhdudlaşdır</string>
|
||||
<string name="default_load_interval">Defolt</string>
|
||||
<string name="default_load_interval">Standart</string>
|
||||
<string name="progressive_load_interval">Qabaqcıl, yükləmə intervalı ölçüsü</string>
|
||||
<string name="progressive_load_interval_summary">Daha aşağı dəyər ilkin video yükləməni sürətləndirə bilər.</string>
|
||||
<string name="views_placeholder">baxış</string>
|
||||
@ -360,7 +360,7 @@
|
||||
<string name="sb_markers_summary">Vaxt çubuğunda seqmentləri nişanla.</string>
|
||||
<string name="livestreams">Canlı yayımlar</string>
|
||||
<string name="alternative_videos_layout">Alternativ video tərtibatı</string>
|
||||
<string name="defaultIconLight">Defolt işıqlı</string>
|
||||
<string name="defaultIconLight">Standart işıqlı</string>
|
||||
<string name="playlistCloned">Pleylist klonlandı</string>
|
||||
<string name="confirm_unsubscribe">%1$s abunəliyini ləğv etmək istədiyinizə əminsiniz\?</string>
|
||||
<string name="confirm_unsubscribing">Abunəlik ləğvini təsdiqlə</string>
|
||||
@ -370,18 +370,18 @@
|
||||
<string name="start_time">Başlama vaxtı</string>
|
||||
<string name="end_time">Bitmə vaxtı</string>
|
||||
<string name="notification_time">Bildiriş vaxtı</string>
|
||||
<string name="notification_time_summary">Bildirişlərin göstərilməsinə icazə verilən vaxt aralığı.</string>
|
||||
<string name="notification_time_summary">Bildirişləri göstərmək üçün icazə verilən vaxt aralığı.</string>
|
||||
<string name="alternative_trending_layout">Alternativ trend tərtibatı</string>
|
||||
<string name="navbar_order">Ardıcıllıq</string>
|
||||
<string name="layout">Tərtibat</string>
|
||||
<string name="alternative_player_layout">Alternativ oynadıcı tərtibatı</string>
|
||||
<string name="alternative_player_layout_summary">Əlaqəli videoları aşağıda deyil, şərhlərin üstündə cərgə kimi göstər.</string>
|
||||
<string name="audio_track">Səs treki</string>
|
||||
<string name="default_audio_track">Defolt</string>
|
||||
<string name="default_audio_track">Standart</string>
|
||||
<string name="unsupported_file_format">Dəstəklənməyən fayl formatı!</string>
|
||||
<string name="auto_quality">Avtomatik</string>
|
||||
<string name="hls_instead_of_dash">HLS istifadə et</string>
|
||||
<string name="hls_instead_of_dash_summary">DASH əvəzinə HLS istifadə et (daha yavaş olacaq, tövsiyə edilmir)</string>
|
||||
<string name="hls_instead_of_dash_summary">DASH əvəzinə HLS istifadə et (daha yavaş olacaq, tövsiyə edilmədi)</string>
|
||||
<string name="limit_to_runtime">İş vaxtı məhdudiyyət</string>
|
||||
<string name="open_queue_from_notification">Bildirişdən növbə aç</string>
|
||||
<string name="trends">Trendlər</string>
|
||||
@ -393,21 +393,21 @@
|
||||
<string name="bookmarks_empty">Hələ əlfəcinlər yoxdur!</string>
|
||||
<string name="queue_insert_related_videos">Əlaqəli videoları yerləşdir</string>
|
||||
<string name="local_playlists">Yerli pleylistlər</string>
|
||||
<string name="select_other_start_tab">Lütfən, əvvəla başqa başlanğıc paneli seç!</string>
|
||||
<string name="select_other_start_tab">Xahiş edirik, əvvəla başqa başlatma paneli seç!</string>
|
||||
<string name="not_enabled">Menyu elementi aktiv deyil!</string>
|
||||
<string name="brightness">Parlaqlıq</string>
|
||||
<string name="auto">Avtomatik</string>
|
||||
<string name="swipe_controls_summary">Parlaqlığı və səs səviyyəsini nizamlamaq üçün sürüşdürmə jesti istifadə et.</string>
|
||||
<string name="volume">Səs səviyyəsi</string>
|
||||
<string name="swipe_controls">Sürüşdürmə nəzarətləri</string>
|
||||
<string name="defaults">Defolt</string>
|
||||
<string name="defaults">Standartlar</string>
|
||||
<string name="pop_up">Ani pəncərə</string>
|
||||
<string name="no_comments_available">Bu videoda şərhlər əlçatan deyil.</string>
|
||||
<string name="comments_disabled">Şərhlər yükləyici tərəfindən deaktiv edilib.</string>
|
||||
<string name="double_tap_seek">Axtarmaq üçün iki dəfə kliklə</string>
|
||||
<string name="double_tap_seek_summary">Oynadıcı mövqeyini geri və ya irəli çəkmək üçün sola yaxud sağa iki dəfə kliklə.</string>
|
||||
<string name="all_caught_up">Hamısını yuxarıda tutmusunuz</string>
|
||||
<string name="all_caught_up_summary">Bütün yeni videolara baxmısınız</string>
|
||||
<string name="all_caught_up_summary">Bütün yeni videoları gördünüz</string>
|
||||
<string name="captions_size">Altyazı ölçüsü</string>
|
||||
<string name="import_playlists">Pleylistləri idxal et</string>
|
||||
<string name="export_playlists">Pleylistləri ixrac et</string>
|
||||
@ -422,7 +422,7 @@
|
||||
<string name="theme_monochrome">Minimalist Tək Rəngli</string>
|
||||
<string name="play_latest_videos">Ən son videoları oynat</string>
|
||||
<string name="nothing_selected">Heç nə seçilməyib!</string>
|
||||
<string name="color_violet">Hərtərəfli Bənövşəyi</string>
|
||||
<string name="color_violet">Bütöv Bənövşəyi</string>
|
||||
<string name="failed_fetching_instances">Mövcud nümunələri əldə etmək mümkün olmadı.</string>
|
||||
<string name="hide_watched_from_feed">Baxılan videoları axından gizlət</string>
|
||||
<string name="hide_watched_from_feed_summary">Abunəliklər panelində 90% daha çox baxılan videoları göstərmə.</string>
|
||||
@ -432,15 +432,15 @@
|
||||
<string name="remove_bookmark">Əlfəcini sil</string>
|
||||
<string name="add_to_bookmarks">Əlfəcinlərə əlavə et</string>
|
||||
<string name="forward">İrəli</string>
|
||||
<string name="pause">Fasilə ver</string>
|
||||
<string name="pause">Dayandır</string>
|
||||
<string name="alternative_pip_controls">Alternativ PiP nəzarətləri</string>
|
||||
<string name="alternative_pip_controls_summary">Yalnız səsi göstər və irəli və geri çevirmək əvəzində PiP-də idarəetmələri ötür</string>
|
||||
<string name="alternative_pip_controls_summary">PiP\'də, irəli və geri çevirmək əvəzinə \"yalnız səs\" düyməsin göstər və idarəetmələri ötür</string>
|
||||
<string name="rewind">Geri sar</string>
|
||||
<string name="audio_player">Səs oynadıcı</string>
|
||||
<string name="audio_only_mode">Yalnız səs rejimi</string>
|
||||
<string name="audio_only_mode_summary">LibreTube-u musiqi oynadıcıya dəyiş.</string>
|
||||
<string name="no_subtitle">Altyazı yoxdur</string>
|
||||
<string name="download_paused">Endirməyə fasilə verildi</string>
|
||||
<string name="download_paused">Endirmə dayandırıldı</string>
|
||||
<string name="download_completed">Endirmə tamamlandı</string>
|
||||
<string name="concurrent_downloads">Maksimal paralel endirmələr</string>
|
||||
<string name="concurrent_downloads_limit_reached">Maksimal paralel endirmə limitinə çatıldı.</string>
|
||||
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">Səssizliyi ötür</string>
|
||||
<string name="help">Kömək</string>
|
||||
<string name="faq">T-TSS</string>
|
||||
<string name="replies">Cavablar</string>
|
||||
</resources>
|
@ -395,4 +395,5 @@
|
||||
<string name="bookmark">বুকমার্ক</string>
|
||||
<string name="clear_bookmarks">বুকমার্ক মুছে দিন</string>
|
||||
<string name="bookmarks_empty">কোনো বুকমার্ক নেই!</string>
|
||||
<string name="pop_up">পপ-আপ</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">Přeskočit ticho</string>
|
||||
<string name="help">Nápověda</string>
|
||||
<string name="faq">Často kladené dotazy</string>
|
||||
<string name="replies">Odpovědi</string>
|
||||
</resources>
|
@ -441,4 +441,14 @@
|
||||
<string name="download_completed">Herunterladen abgeschlossen</string>
|
||||
<string name="unknown">Unbekannt</string>
|
||||
<string name="resume">Fortsetzen</string>
|
||||
<string name="alternative_pip_controls_summary">\"Nur Audio\"- und Skip-Steuerung anzeigen im Bild-in-Bild-Modus anstelle von Vor- und Zurückspulen</string>
|
||||
<string name="replies">Antworten</string>
|
||||
<string name="concurrent_downloads_limit_reached">Maximale Anzahl gleichzeitiger Downloads erreicht.</string>
|
||||
<string name="audio_only_mode_summary">LibreTube in einen Musikplayer umwandeln.</string>
|
||||
<string name="faq">Häufig gestellte Fragen</string>
|
||||
<string name="audio_player">Audio-Player</string>
|
||||
<string name="help">Hilfe</string>
|
||||
<string name="concurrent_downloads">Maximale Anzahl gleichzeitiger Downloads</string>
|
||||
<string name="sleep_timer">Einschlaf-Timer</string>
|
||||
<string name="skip_silence">Stille überspringen</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">Saltar silencio</string>
|
||||
<string name="help">Ayuda</string>
|
||||
<string name="faq">Preguntas frecuentes</string>
|
||||
<string name="replies">Respuestas</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">चुप्पी छोड़ें</string>
|
||||
<string name="help">सहायता</string>
|
||||
<string name="faq">आम सवाल</string>
|
||||
<string name="replies">जवाब</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">Csend átugrása</string>
|
||||
<string name="help">Súgó</string>
|
||||
<string name="faq">GYIK</string>
|
||||
<string name="replies">Válaszok</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">Lewati keheningan</string>
|
||||
<string name="help">Bantuan</string>
|
||||
<string name="faq">SSD</string>
|
||||
<string name="replies">Balasan</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">דילוג על שקט</string>
|
||||
<string name="help">עזרה</string>
|
||||
<string name="faq">שו״ת</string>
|
||||
<string name="replies">תגובות</string>
|
||||
</resources>
|
@ -430,4 +430,16 @@
|
||||
<string name="shuffle">셔플</string>
|
||||
<string name="add_to_bookmarks">북마크에 추가</string>
|
||||
<string name="remove_bookmark">북마크 제거</string>
|
||||
<string name="replies">답글</string>
|
||||
<string name="unknown">알 수 없음</string>
|
||||
<string name="faq">FAQ</string>
|
||||
<string name="concurrent_downloads">최대 동시 다운로드 수</string>
|
||||
<string name="skip_silence">무음 건너뛰기</string>
|
||||
<string name="concurrent_downloads_limit_reached">최대 동시 다운로드 수에 도달하였습니다.</string>
|
||||
<string name="download_completed">다운로드 완료</string>
|
||||
<string name="pause">일시정지</string>
|
||||
<string name="sleep_timer">취침 타이머</string>
|
||||
<string name="audio_player">오디오 플레이어</string>
|
||||
<string name="audio_only_mode">오디오 모드</string>
|
||||
<string name="audio_only_mode_summary">LibreTube 를 음악 플에어이로 바꿉니다.</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">ନୀରବତା ଛାଡିଦିଅ</string>
|
||||
<string name="help">ସାହାଯ୍ୟ</string>
|
||||
<string name="faq">FAQ</string>
|
||||
<string name="replies">ଉତ୍ତର ଗୁଡିକ</string>
|
||||
</resources>
|
@ -113,7 +113,7 @@
|
||||
<string name="color_blue">ਅਨੰਦਮਈ ਨੀਲਾ</string>
|
||||
<string name="color_yellow">ਜ਼ੋਰਦਾਰ ਪੀਲਾ</string>
|
||||
<string name="color_green">ਆਕਰਸ਼ਕ ਹਰਾ</string>
|
||||
<string name="color_purple">ਅਨੰਦਦਾਇਕ ਜਾਮਨੀ</string>
|
||||
<string name="color_purple">ਅਨੰਦਦਾਇਕ ਜਾਮਣੀ</string>
|
||||
<string name="oledTheme">ਕਾਲ੍ਹਾ</string>
|
||||
<string name="material_you">ਮਟੀਰੀਅਲ ਯੂ</string>
|
||||
<string name="sponsorblock_notifications">ਨੋਟੀਫਿਕੇਸ਼ਨ</string>
|
||||
@ -450,4 +450,5 @@
|
||||
<string name="help">ਸਹਾਇਤਾ</string>
|
||||
<string name="faq">ਆਮ ਸਵਾਲ</string>
|
||||
<string name="sleep_timer">ਸਲੀਪ ਟਾਈਮਰ</string>
|
||||
<string name="replies">ਜਵਾਬ</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">Pular silêncio</string>
|
||||
<string name="help">Ajuda</string>
|
||||
<string name="faq">FAQ</string>
|
||||
<string name="replies">Respostas</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="faq">FAQ</string>
|
||||
<string name="sleep_timer">Temporizador de sono</string>
|
||||
<string name="skip_silence">Ignorar o silêncio</string>
|
||||
<string name="replies">Respostas</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">Пропускать тишину</string>
|
||||
<string name="help">Помощь</string>
|
||||
<string name="faq">FAQ</string>
|
||||
<string name="replies">Ответы</string>
|
||||
</resources>
|
@ -22,7 +22,7 @@
|
||||
<string name="dlisinprogress">Iné sťahovanie práve prebieha, počkajte kým bude ukončené.</string>
|
||||
<string name="downloadfailed">Sťahovanie zlyhalo.</string>
|
||||
<string name="vlc">Otvoriť vo VLC</string>
|
||||
<string name="vlcerror">Nemožno otvoriť vo VLC. Možno nie je nainštalovaný.</string>
|
||||
<string name="vlcerror">Nepodarilo sa otvoriť vo VLC. Možno nie je nainštalovaný.</string>
|
||||
<string name="import_from_yt">Import odberov</string>
|
||||
<string name="import_from_yt_summary">Z YouTube alebo NewPipe</string>
|
||||
<string name="server_error">Na serveri sa vyskytol problém. Skúsiť inú inštanciu\?</string>
|
||||
@ -175,7 +175,7 @@
|
||||
<string name="hide_chapters">Skryť kapitoly</string>
|
||||
<string name="category_interaction_description">Ak sa uprostred obsahu nachádza krátka pripomienka, aby ste sa prihlásili k odberu alebo sledovaniu. Ak je dlhý alebo o niečom konkrétnom, mal by byť namiesto toho sebapropagáciou.</string>
|
||||
<string name="buffering_goal">Cieľ vyrovnávacej pamäte</string>
|
||||
<string name="category_filler_description">Ide o vedľajšie scény pridané len ako výplň alebo humor, ktoré nie sú potrebné na pochopenie hlavného obsahu videa.</string>
|
||||
<string name="category_filler_description">Pre vedľajšie scény pridané len ako výplň alebo humor, ktoré nie sú potrebné na pochopenie hlavného obsahu videa.</string>
|
||||
<string name="category_music_offtopic_description">Len na použitie v hudobných videoklipoch. Mal by pokrývať časti videoklipu, ktoré nie sú súčasťou oficiálnych mixov. Nakoniec by sa video malo čo najviac podobať verzii mixu na Spotify alebo akejkoľvek inej verzii mixu, alebo by malo obmedziť hovorenie alebo iné rušivé prvky.</string>
|
||||
<string name="category_outro_description">Informácie po skončení. Nie pre závery s informáciami.</string>
|
||||
<string name="turnInternetOn">Prosím zapnite si wifi alebo mobilné dáta aby ste sa pripojili na internet.</string>
|
||||
@ -292,4 +292,5 @@
|
||||
<string name="best_quality">Najlepšia</string>
|
||||
<string name="playerAudioFormat">Audio formát pre prehrávač</string>
|
||||
<string name="playerAudioQuality">Kvalita zvuku</string>
|
||||
<string name="replies">Odpovede</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">Sessizliği atla</string>
|
||||
<string name="help">Yardım</string>
|
||||
<string name="faq">SSS</string>
|
||||
<string name="replies">Cevaplar</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="faq">ЧаПи</string>
|
||||
<string name="sleep_timer">Таймер сну</string>
|
||||
<string name="skip_silence">Пропускати тишу</string>
|
||||
<string name="replies">Відповіді</string>
|
||||
</resources>
|
@ -450,4 +450,5 @@
|
||||
<string name="skip_silence">跳过静音</string>
|
||||
<string name="help">帮助</string>
|
||||
<string name="faq">常见问题</string>
|
||||
<string name="replies">回复</string>
|
||||
</resources>
|
Loading…
x
Reference in New Issue
Block a user