From 38859c43f6ba009f8a0cca103855778bcb849a14 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 31 Jan 2023 17:34:40 +0100 Subject: [PATCH 01/23] [Audio player] Swipe listener --- .../ui/fragments/AudioPlayerFragment.kt | 40 ++++++--- .../ui/interfaces/AudioPlayerOptions.kt | 10 +++ .../listeners/AudioPlayerThumbnailListener.kt | 83 +++++++++++++++++++ .../libretube/ui/views/CustomExoPlayerView.kt | 4 +- 4 files changed, 125 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/github/libretube/ui/interfaces/AudioPlayerOptions.kt create mode 100644 app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt diff --git a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt index 93a6a39b9..375308c6c 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt @@ -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 @@ -9,6 +10,7 @@ import android.os.Handler import android.os.IBinder import android.os.Looper import android.text.format.DateUtils +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -18,21 +20,26 @@ import com.github.libretube.api.obj.StreamItem import com.github.libretube.databinding.FragmentAudioPlayerBinding import com.github.libretube.enums.ShareObjectType 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(binding.thumbnail, this) + binding.thumbnail.setOnTouchListener(listener) // Listen for track changes due to autoplay or the notification PlayingQueue.addOnTrackChangedListener(onTrackChangeListener) @@ -232,4 +236,18 @@ class AudioPlayerFragment : BaseFragment() { super.onDestroy() } + + override fun onSingleTap() { + val current = PlayingQueue.getCurrent() + VideoOptionsBottomSheet(current?.url?.toID() ?: return, current.title ?: return) + .show(childFragmentManager) + } + + override fun onSwipe(distanceY: Float) { + Log.e("swiping", distanceY.toString()) + } + + override fun onSwipeEnd() { + Log.e("ended", "ended") + } } diff --git a/app/src/main/java/com/github/libretube/ui/interfaces/AudioPlayerOptions.kt b/app/src/main/java/com/github/libretube/ui/interfaces/AudioPlayerOptions.kt new file mode 100644 index 000000000..eddb6387b --- /dev/null +++ b/app/src/main/java/com/github/libretube/ui/interfaces/AudioPlayerOptions.kt @@ -0,0 +1,10 @@ +package com.github.libretube.ui.interfaces + +interface AudioPlayerOptions { + + fun onSingleTap() + + fun onSwipe(distanceY: Float) + + fun onSwipeEnd() +} diff --git a/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt b/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt new file mode 100644 index 000000000..ba82efdfc --- /dev/null +++ b/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt @@ -0,0 +1,83 @@ +package com.github.libretube.ui.listeners + +import android.annotation.SuppressLint +import android.os.Handler +import android.os.Looper +import android.view.GestureDetector +import android.view.MotionEvent +import android.view.View +import androidx.core.os.postDelayed +import com.github.libretube.ui.interfaces.AudioPlayerOptions +import kotlin.math.abs + +class AudioPlayerThumbnailListener(private val view: View, private val listener: AudioPlayerOptions) : + View.OnTouchListener { + + private val width get() = view.width + private val height get() = view.height + + private val handler = Handler(Looper.getMainLooper()) + + private val gestureDetector: GestureDetector + + private var isMoving = false + + var wasClick = true + + init { + gestureDetector = GestureDetector(view.context, GestureListener(), handler) + } + + @SuppressLint("ClickableViewAccessibility") + override fun onTouch(v: View, event: MotionEvent): Boolean { + if (event.action == MotionEvent.ACTION_UP && isMoving) { + isMoving = false + listener.onSwipeEnd() + } + + runCatching { + gestureDetector.onTouchEvent(event) + } + + return true + } + + private inner class GestureListener : GestureDetector.SimpleOnGestureListener() { + + override fun onDown(e: MotionEvent): Boolean { + // Initially assume this event is for click + wasClick = true + if (isMoving) return false + + handler.postDelayed(100) { + if (wasClick) 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 + wasClick = false + + listener.onSwipe(distanceY) + return true + } + } + + companion object { + private const val MOVEMENT_THRESHOLD = 10 + } +} diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index 7b5d65c5a..f6681d921 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -196,7 +196,9 @@ internal class CustomExoPlayerView( } private fun cancelHideControllerTask() { - handler.removeCallbacksAndMessages(HIDE_CONTROLLER_TOKEN) + runCatching { + handler.removeCallbacksAndMessages(HIDE_CONTROLLER_TOKEN) + } } override fun hideController() { From 288067b044e2653db47f8a22a5be175cf7341e88 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Tue, 31 Jan 2023 17:57:24 +0100 Subject: [PATCH 02/23] [Audio Player] Volume controls --- .../java/com/github/libretube/LibreTubeApp.kt | 2 +- .../github/libretube/api/PlaylistsHelper.kt | 2 +- .../libretube/services/BackgroundMode.kt | 2 +- .../libretube/services/DownloadService.kt | 6 +-- .../libretube/ui/activities/MainActivity.kt | 12 +++--- .../ui/activities/NoInternetActivity.kt | 4 +- .../ui/activities/OfflinePlayerActivity.kt | 6 +-- .../libretube/ui/activities/RouterActivity.kt | 2 +- .../libretube/ui/adapters/ChaptersAdapter.kt | 2 +- .../libretube/ui/adapters/CommentsAdapter.kt | 6 +-- .../libretube/ui/adapters/DownloadsAdapter.kt | 2 +- .../ui/adapters/IconsSheetAdapter.kt | 2 +- .../ui/adapters/LegacySubscriptionAdapter.kt | 4 +- .../ui/adapters/PlayingQueueAdapter.kt | 4 +- .../libretube/ui/adapters/PlaylistAdapter.kt | 4 +- .../ui/adapters/PlaylistBookmarkAdapter.kt | 4 +- .../libretube/ui/adapters/PlaylistsAdapter.kt | 4 +- .../libretube/ui/adapters/SearchAdapter.kt | 4 +- .../ui/adapters/SubscriptionChannelAdapter.kt | 4 +- .../libretube/ui/adapters/VideosAdapter.kt | 6 +-- .../ui/adapters/WatchHistoryAdapter.kt | 4 +- .../ui/base/BasePreferenceFragment.kt | 2 +- .../libretube/ui/dialogs/BackupDialog.kt | 2 +- .../ui/dialogs/NavBarOptionsDialog.kt | 2 +- .../libretube/ui/dialogs/ShareDialog.kt | 2 +- .../ui/fragments/AudioPlayerFragment.kt | 39 +++++++++++++++++-- .../libretube/ui/fragments/ChannelFragment.kt | 2 +- .../ui/fragments/DownloadsFragment.kt | 2 +- .../libretube/ui/fragments/HomeFragment.kt | 2 +- .../libretube/ui/fragments/LibraryFragment.kt | 4 +- .../libretube/ui/fragments/PlayerFragment.kt | 16 ++++---- .../ui/fragments/PlaylistFragment.kt | 4 +- .../ui/fragments/SearchResultFragment.kt | 2 +- .../ui/fragments/SubscriptionsFragment.kt | 2 +- .../libretube/ui/fragments/TrendsFragment.kt | 2 +- .../ui/fragments/WatchHistoryFragment.kt | 4 +- .../listeners/AudioPlayerThumbnailListener.kt | 23 +++-------- .../ui/listeners/PlayerGestureController.kt | 2 +- .../ui/listeners/SeekbarPreviewListener.kt | 2 +- .../ui/preferences/AdvancedSettings.kt | 2 +- .../ui/preferences/AppearanceSettings.kt | 2 +- .../ui/preferences/BackupRestoreSettings.kt | 4 +- .../ui/preferences/GeneralSettings.kt | 4 +- .../ui/preferences/InstanceSettings.kt | 2 +- .../ui/preferences/NotificationSettings.kt | 2 +- .../ui/preferences/PlayerSettings.kt | 2 +- .../ui/sheets/ChannelOptionsBottomSheet.kt | 4 +- .../ui/sheets/PlaylistOptionsBottomSheet.kt | 2 +- .../ui/sheets/VideoOptionsBottomSheet.kt | 2 +- .../github/libretube/ui/tools/SleepTimer.kt | 2 +- .../libretube/ui/views/CustomExoPlayerView.kt | 8 ++-- .../libretube/workers/NotificationWorker.kt | 2 +- .../main/res/layout/fragment_audio_player.xml | 35 +++++++++++++++++ 53 files changed, 164 insertions(+), 109 deletions(-) diff --git a/app/src/main/java/com/github/libretube/LibreTubeApp.kt b/app/src/main/java/com/github/libretube/LibreTubeApp.kt index 48e06da95..282d1f6c1 100644 --- a/app/src/main/java/com/github/libretube/LibreTubeApp.kt +++ b/app/src/main/java/com/github/libretube/LibreTubeApp.kt @@ -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() { diff --git a/app/src/main/java/com/github/libretube/api/PlaylistsHelper.kt b/app/src/main/java/com/github/libretube/api/PlaylistsHelper.kt index f96a05282..1f01927fd 100644 --- a/app/src/main/java/com/github/libretube/api/PlaylistsHelper.kt +++ b/app/src/main/java/com/github/libretube/api/PlaylistsHelper.kt @@ -16,9 +16,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 diff --git a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt index fd6fa630b..01541746a 100644 --- a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt +++ b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/services/DownloadService.kt b/app/src/main/java/com/github/libretube/services/DownloadService.kt index 2fd5d8f07..8f04bf6a6 100644 --- a/app/src/main/java/com/github/libretube/services/DownloadService.kt +++ b/app/src/main/java/com/github/libretube/services/DownloadService.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt b/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt index 364742269..5c13ab6ca 100644 --- a/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt +++ b/app/src/main/java/com/github/libretube/ui/activities/MainActivity.kt @@ -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() { diff --git a/app/src/main/java/com/github/libretube/ui/activities/NoInternetActivity.kt b/app/src/main/java/com/github/libretube/ui/activities/NoInternetActivity.kt index 06339f0fd..5b3ce4be1 100644 --- a/app/src/main/java/com/github/libretube/ui/activities/NoInternetActivity.kt +++ b/app/src/main/java/com/github/libretube/ui/activities/NoInternetActivity.kt @@ -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() { diff --git a/app/src/main/java/com/github/libretube/ui/activities/OfflinePlayerActivity.kt b/app/src/main/java/com/github/libretube/ui/activities/OfflinePlayerActivity.kt index 2d192ce6d..04367ea19 100644 --- a/app/src/main/java/com/github/libretube/ui/activities/OfflinePlayerActivity.kt +++ b/app/src/main/java/com/github/libretube/ui/activities/OfflinePlayerActivity.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/activities/RouterActivity.kt b/app/src/main/java/com/github/libretube/ui/activities/RouterActivity.kt index bae5a0ca8..a6d42a91f 100644 --- a/app/src/main/java/com/github/libretube/ui/activities/RouterActivity.kt +++ b/app/src/main/java/com/github/libretube/ui/activities/RouterActivity.kt @@ -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() { diff --git a/app/src/main/java/com/github/libretube/ui/adapters/ChaptersAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/ChaptersAdapter.kt index a7b628c85..3dc32e5a2 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/ChaptersAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/ChaptersAdapter.kt @@ -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( diff --git a/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt index bb8ba390f..575bb82a0 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/CommentsAdapter.kt @@ -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?, diff --git a/app/src/main/java/com/github/libretube/ui/adapters/DownloadsAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/DownloadsAdapter.kt index 72b1cd834..df46893c3 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/DownloadsAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/DownloadsAdapter.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/adapters/IconsSheetAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/IconsSheetAdapter.kt index 3d14cc083..00daa1f59 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/IconsSheetAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/IconsSheetAdapter.kt @@ -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() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): IconsSheetViewHolder { diff --git a/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt index da2242be9..f4ecf65f7 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlayingQueueAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlayingQueueAdapter.kt index 2a2bb18b3..dec3d6921 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlayingQueueAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlayingQueueAdapter.kt @@ -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() { diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt index 0285534a4..93d331783 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistAdapter.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistBookmarkAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistBookmarkAdapter.kt index a7fcef33c..d96cf9703 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistBookmarkAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistBookmarkAdapter.kt @@ -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, diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt index a3cf346cd..2a650a922 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlaylistsAdapter.kt @@ -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, diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt index eefc2683e..03c983b24 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt @@ -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( diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt index 104e7cab7..e5ec8d60d 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/adapters/VideosAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/VideosAdapter.kt index ddbdbd791..cf2139337 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/VideosAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/VideosAdapter.kt @@ -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( diff --git a/app/src/main/java/com/github/libretube/ui/adapters/WatchHistoryAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/WatchHistoryAdapter.kt index 7378b42fe..bed0f0b77 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/WatchHistoryAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/WatchHistoryAdapter.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/base/BasePreferenceFragment.kt b/app/src/main/java/com/github/libretube/ui/base/BasePreferenceFragment.kt index 1c58428b1..8fcc90d42 100644 --- a/app/src/main/java/com/github/libretube/ui/base/BasePreferenceFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/base/BasePreferenceFragment.kt @@ -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 /** diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt index 858550188..34c50f58e 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/BackupDialog.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/NavBarOptionsDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/NavBarOptionsDialog.kt index 30bcb73e5..181394b3a 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/NavBarOptionsDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/NavBarOptionsDialog.kt @@ -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() { diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt index 700e3ef8f..08550f499 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/ShareDialog.kt @@ -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( diff --git a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt index 375308c6c..c42e4e59a 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt @@ -10,7 +10,6 @@ import android.os.Handler import android.os.IBinder import android.os.Looper import android.text.format.DateUtils -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -19,6 +18,7 @@ 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 @@ -138,7 +138,7 @@ class AudioPlayerFragment : BaseFragment(), AudioPlayerOptions { ).show(childFragmentManager, null) } - val listener = AudioPlayerThumbnailListener(binding.thumbnail, this) + val listener = AudioPlayerThumbnailListener(requireContext(), this) binding.thumbnail.setOnTouchListener(listener) // Listen for track changes due to autoplay or the notification @@ -150,6 +150,11 @@ class AudioPlayerFragment : BaseFragment(), AudioPlayerOptions { // load the stream info into the UI updateStreamInfo() + + // update the currently shown volume + binding.volumeProgressBar.let { bar -> + bar.progress = audioHelper.getVolumeWithScale(bar.max) + } } /** @@ -244,10 +249,36 @@ class AudioPlayerFragment : BaseFragment(), AudioPlayerOptions { } override fun onSwipe(distanceY: Float) { - Log.e("swiping", distanceY.toString()) + binding.volumeControls.visibility = View.VISIBLE + updateVolume(distanceY) } override fun onSwipeEnd() { - Log.e("ended", "ended") + 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)}" } } diff --git a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt index 11ac52e83..af260aa24 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/fragments/DownloadsFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/DownloadsFragment.kt index b5bf1a17f..b23146823 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/DownloadsFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/DownloadsFragment.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/fragments/HomeFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/HomeFragment.kt index 68d2b369c..360a6cd7a 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/HomeFragment.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt index 99ccb43ad..d868af09e 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/LibraryFragment.kt @@ -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() { diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 9985a0c67..33514024a 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt index 3d775b0a9..980f525fd 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/fragments/SearchResultFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/SearchResultFragment.kt index 51d7fc5e5..e44b0dae6 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/SearchResultFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/SearchResultFragment.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/fragments/SubscriptionsFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/SubscriptionsFragment.kt index 1cb41c30f..526ec633e 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/SubscriptionsFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/SubscriptionsFragment.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt index ead15d77e..ec2187af8 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/TrendsFragment.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt index 563829078..f39eca543 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt @@ -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() { diff --git a/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt b/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt index ba82efdfc..464bbcdf8 100644 --- a/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt +++ b/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt @@ -1,6 +1,7 @@ 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 @@ -10,29 +11,19 @@ import androidx.core.os.postDelayed import com.github.libretube.ui.interfaces.AudioPlayerOptions import kotlin.math.abs -class AudioPlayerThumbnailListener(private val view: View, private val listener: AudioPlayerOptions) : +class AudioPlayerThumbnailListener(context: Context, private val listener: AudioPlayerOptions) : View.OnTouchListener { - private val width get() = view.width - private val height get() = view.height - private val handler = Handler(Looper.getMainLooper()) - - private val gestureDetector: GestureDetector - + private val gestureDetector = GestureDetector(context, GestureListener(), handler) private var isMoving = false - var wasClick = true - - init { - gestureDetector = GestureDetector(view.context, GestureListener(), handler) - } - @SuppressLint("ClickableViewAccessibility") override fun onTouch(v: View, event: MotionEvent): Boolean { if (event.action == MotionEvent.ACTION_UP && isMoving) { isMoving = false listener.onSwipeEnd() + return false } runCatching { @@ -46,11 +37,10 @@ class AudioPlayerThumbnailListener(private val view: View, private val listener: override fun onDown(e: MotionEvent): Boolean { // Initially assume this event is for click - wasClick = true if (isMoving) return false - handler.postDelayed(100) { - if (wasClick) listener.onSingleTap() + handler.postDelayed(300) { + if (!isMoving) listener.onSingleTap() } return true @@ -70,7 +60,6 @@ class AudioPlayerThumbnailListener(private val view: View, private val listener: } isMoving = true - wasClick = false listener.onSwipe(distanceY) return true diff --git a/app/src/main/java/com/github/libretube/ui/listeners/PlayerGestureController.kt b/app/src/main/java/com/github/libretube/ui/listeners/PlayerGestureController.kt index 60f900ee4..f59d8aa3b 100644 --- a/app/src/main/java/com/github/libretube/ui/listeners/PlayerGestureController.kt +++ b/app/src/main/java/com/github/libretube/ui/listeners/PlayerGestureController.kt @@ -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) : diff --git a/app/src/main/java/com/github/libretube/ui/listeners/SeekbarPreviewListener.kt b/app/src/main/java/com/github/libretube/ui/listeners/SeekbarPreviewListener.kt index a21a28b00..5740a9aa9 100644 --- a/app/src/main/java/com/github/libretube/ui/listeners/SeekbarPreviewListener.kt +++ b/app/src/main/java/com/github/libretube/ui/listeners/SeekbarPreviewListener.kt @@ -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( diff --git a/app/src/main/java/com/github/libretube/ui/preferences/AdvancedSettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/AdvancedSettings.kt index 44729128d..61b3d3965 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/AdvancedSettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/AdvancedSettings.kt @@ -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() { diff --git a/app/src/main/java/com/github/libretube/ui/preferences/AppearanceSettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/AppearanceSettings.kt index d2913a214..ecea86cc6 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/AppearanceSettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/AppearanceSettings.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/preferences/BackupRestoreSettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/BackupRestoreSettings.kt index e478f69b9..63020dc01 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/BackupRestoreSettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/BackupRestoreSettings.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/preferences/GeneralSettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/GeneralSettings.kt index e3d4daf42..a698caef4 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/GeneralSettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/GeneralSettings.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/preferences/InstanceSettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/InstanceSettings.kt index d17ddab51..662e7034b 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/InstanceSettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/InstanceSettings.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/preferences/NotificationSettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/NotificationSettings.kt index ea534f637..3e23d33a4 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/NotificationSettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/NotificationSettings.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/preferences/PlayerSettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/PlayerSettings.kt index 8b4735898..0587ca184 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/PlayerSettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/PlayerSettings.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt index e78ff3f05..eaf86e581 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt @@ -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 /** diff --git a/app/src/main/java/com/github/libretube/ui/sheets/PlaylistOptionsBottomSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/PlaylistOptionsBottomSheet.kt index caac4343c..cf7400f56 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/PlaylistOptionsBottomSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/PlaylistOptionsBottomSheet.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/sheets/VideoOptionsBottomSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/VideoOptionsBottomSheet.kt index 2aeb75168..a6243de9c 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/VideoOptionsBottomSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/VideoOptionsBottomSheet.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/ui/tools/SleepTimer.kt b/app/src/main/java/com/github/libretube/ui/tools/SleepTimer.kt index 5d1401287..45b59a9ac 100644 --- a/app/src/main/java/com/github/libretube/ui/tools/SleepTimer.kt +++ b/app/src/main/java/com/github/libretube/ui/tools/SleepTimer.kt @@ -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 { diff --git a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt index f6681d921..d8a5b309b 100644 --- a/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/CustomExoPlayerView.kt @@ -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 diff --git a/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt b/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt index b910e5552..31d91bb03 100644 --- a/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt +++ b/app/src/main/java/com/github/libretube/workers/NotificationWorker.kt @@ -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 diff --git a/app/src/main/res/layout/fragment_audio_player.xml b/app/src/main/res/layout/fragment_audio_player.xml index 40c1b5a1a..a574140c7 100644 --- a/app/src/main/res/layout/fragment_audio_player.xml +++ b/app/src/main/res/layout/fragment_audio_player.xml @@ -23,6 +23,41 @@ app:shapeAppearanceOverlay="@style/ShapeAppearance.Material3.Corner.Small" tools:src="@tools:sample/backgrounds/scenic" /> + + + + + + + + + + Date: Tue, 31 Jan 2023 18:08:37 +0100 Subject: [PATCH 03/23] Play and pause the video on single touches --- .../libretube/ui/fragments/AudioPlayerFragment.kt | 4 ++++ .../libretube/ui/interfaces/AudioPlayerOptions.kt | 2 ++ .../ui/listeners/AudioPlayerThumbnailListener.kt | 13 +++++++++++-- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt index c42e4e59a..0a737e5dd 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/AudioPlayerFragment.kt @@ -243,6 +243,10 @@ class AudioPlayerFragment : BaseFragment(), AudioPlayerOptions { } 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) diff --git a/app/src/main/java/com/github/libretube/ui/interfaces/AudioPlayerOptions.kt b/app/src/main/java/com/github/libretube/ui/interfaces/AudioPlayerOptions.kt index eddb6387b..91a0198fb 100644 --- a/app/src/main/java/com/github/libretube/ui/interfaces/AudioPlayerOptions.kt +++ b/app/src/main/java/com/github/libretube/ui/interfaces/AudioPlayerOptions.kt @@ -4,6 +4,8 @@ interface AudioPlayerOptions { fun onSingleTap() + fun onLongTap() + fun onSwipe(distanceY: Float) fun onSwipeEnd() diff --git a/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt b/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt index 464bbcdf8..05e747704 100644 --- a/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt +++ b/app/src/main/java/com/github/libretube/ui/listeners/AudioPlayerThumbnailListener.kt @@ -7,6 +7,7 @@ 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 @@ -36,10 +37,9 @@ class AudioPlayerThumbnailListener(context: Context, private val listener: Audio private inner class GestureListener : GestureDetector.SimpleOnGestureListener() { override fun onDown(e: MotionEvent): Boolean { - // Initially assume this event is for click if (isMoving) return false - handler.postDelayed(300) { + handler.postDelayed(ACTION_INTERVAL, SINGLE_PRESS_TOKEN) { if (!isMoving) listener.onSingleTap() } @@ -64,9 +64,18 @@ class AudioPlayerThumbnailListener(context: Context, private val listener: Audio 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" } } From bae54abd7c50b865bae854f9fba086433a24121e Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Sun, 29 Jan 2023 06:09:37 +0000 Subject: [PATCH 04/23] Translated using Weblate (Arabic) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/ar/ --- app/src/main/res/values-ar/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index af132d9f1..7624744bd 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -450,4 +450,5 @@ تخطي الصمت التعليمات الأسئلة المتداولة + الردود \ No newline at end of file From 799f39ac95da52e9e1d8ef0c5d1bb7167233a844 Mon Sep 17 00:00:00 2001 From: Andrey Date: Sat, 28 Jan 2023 21:03:10 +0000 Subject: [PATCH 05/23] Translated using Weblate (Russian) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/ru/ --- app/src/main/res/values-ru/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 610d80c7d..0ed36a9fe 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -450,4 +450,5 @@ Пропускать тишину Помощь FAQ + Ответы \ No newline at end of file From 8f5daeea9431c1cac4e96ac16672ca61534cf3a0 Mon Sep 17 00:00:00 2001 From: Park Seonu Date: Tue, 31 Jan 2023 12:43:06 +0000 Subject: [PATCH 06/23] Translated using Weblate (Korean) Currently translated at 98.0% (442 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/ko/ --- app/src/main/res/values-ko/strings.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 2c27ea60a..08608135c 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -430,4 +430,16 @@ 셔플 북마크에 추가 북마크 제거 + 답글 + 알 수 없음 + FAQ + 최대 동시 다운로드 수 + 무음 건너뛰기 + 최대 동시 다운로드 수에 도달하였습니다. + 다운로드 완료 + 일시정지 + 취침 타이머 + 오디오 플레이어 + 오디오 모드 + LibreTube 를 음악 플에어이로 바꿉니다. \ No newline at end of file From e1fbad31cc22195d3462a5b9c887e35dd95ccd67 Mon Sep 17 00:00:00 2001 From: Michael Weinberger Date: Sun, 29 Jan 2023 14:32:38 +0000 Subject: [PATCH 07/23] Translated using Weblate (German) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/de/ --- app/src/main/res/values-de/strings.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 16fd501e5..a7f9f2f5b 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -441,4 +441,14 @@ Herunterladen abgeschlossen Unbekannt Fortsetzen + \"Nur Audio\"- und Skip-Steuerung anzeigen im Bild-in-Bild-Modus anstelle von Vor- und Zurückspulen + Antworten + Maximale Anzahl gleichzeitiger Downloads erreicht. + LibreTube in einen Musikplayer umwandeln. + Häufig gestellte Fragen + Audio-Player + Hilfe + Maximale Anzahl gleichzeitiger Downloads + Einschlaf-Timer + Stille überspringen \ No newline at end of file From 4cff2081154e7d67196097d1f8746ddbf1a0e787 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Sun, 29 Jan 2023 14:05:22 +0000 Subject: [PATCH 08/23] Translated using Weblate (Spanish) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/es/ --- app/src/main/res/values-es/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 44fa77ba2..a7784050a 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -450,4 +450,5 @@ Saltar silencio Ayuda Preguntas frecuentes + Respuestas \ No newline at end of file From e9931284291d7badd162a77facaf7f37cbeb263e Mon Sep 17 00:00:00 2001 From: Linerly Date: Sun, 29 Jan 2023 14:05:19 +0000 Subject: [PATCH 09/23] Translated using Weblate (Indonesian) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/id/ --- app/src/main/res/values-in/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 875acfd73..af8c0e52a 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -450,4 +450,5 @@ Lewati keheningan Bantuan SSD + Balasan \ No newline at end of file From 2a848b70b256ab1896f6c3cc859753bde651edc8 Mon Sep 17 00:00:00 2001 From: ShareASmile Date: Mon, 30 Jan 2023 11:45:43 +0000 Subject: [PATCH 10/23] Translated using Weblate (Hindi) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/hi/ --- app/src/main/res/values-hi/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index fe1568c71..9f336298c 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -450,4 +450,5 @@ चुप्पी छोड़ें सहायता आम सवाल + जवाब \ No newline at end of file From 10f3431e484d2294e8ecede3ccc6030970f9fe12 Mon Sep 17 00:00:00 2001 From: Fjuro Date: Sat, 28 Jan 2023 21:14:06 +0000 Subject: [PATCH 11/23] Translated using Weblate (Czech) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/cs/ --- app/src/main/res/values-cs/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 460d249ca..0e3ade266 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -450,4 +450,5 @@ Přeskočit ticho Nápověda Často kladené dotazy + Odpovědi \ No newline at end of file From b90adea306adf1b01ed327b2f08ede6a5a513533 Mon Sep 17 00:00:00 2001 From: jc Date: Sun, 29 Jan 2023 16:09:13 +0000 Subject: [PATCH 12/23] Translated using Weblate (Portuguese) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/pt/ --- app/src/main/res/values-pt/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 345f5de1e..29b8df858 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -450,4 +450,5 @@ FAQ Temporizador de sono Ignorar o silêncio + Respostas \ No newline at end of file From dc72dc3b9bebc31c836de04b84c62c32431bdb6d Mon Sep 17 00:00:00 2001 From: d4f5409d Date: Sun, 29 Jan 2023 20:09:35 +0000 Subject: [PATCH 13/23] Translated using Weblate (Hungarian) Currently translated at 99.7% (450 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/hu/ --- app/src/main/res/values-hu/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index ed777a3b9..5ea99f707 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -450,4 +450,5 @@ Csend átugrása Súgó GYIK + Válaszok \ No newline at end of file From 583a15515b700b302ff8eecfd303e787063c0e40 Mon Sep 17 00:00:00 2001 From: Nidi Date: Sat, 28 Jan 2023 21:53:40 +0000 Subject: [PATCH 14/23] Translated using Weblate (Turkish) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/tr/ --- app/src/main/res/values-tr/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 813bce80b..0592f4a51 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -450,4 +450,5 @@ Sessizliği atla Yardım SSS + Cevaplar \ No newline at end of file From 35e32dfb23144e3fd4f9c5344b635462bc4556db Mon Sep 17 00:00:00 2001 From: Ricardo Date: Sat, 28 Jan 2023 21:53:25 +0000 Subject: [PATCH 15/23] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/pt_BR/ --- app/src/main/res/values-pt-rBR/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 8536098cd..0ae140881 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -450,4 +450,5 @@ Pular silêncio Ajuda FAQ + Respostas \ No newline at end of file From 5a01bbe3fb4090057d07b585b61bd85e10ec74d1 Mon Sep 17 00:00:00 2001 From: Nidi Date: Tue, 31 Jan 2023 11:24:23 +0000 Subject: [PATCH 16/23] Translated using Weblate (Azerbaijani) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/az/ --- app/src/main/res/values-az/strings.xml | 71 +++++++++++++------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index d9356e230..067fb1ed9 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -5,7 +5,7 @@ Axtarış Videolar Abunə Ol - Abunəlikdən çıx + Abunə olma Paylaş Saxla Yüklə @@ -15,13 +15,13 @@ Qeydiyyatdan keç Çıx Ləğv et - Daxil olundu. + Giriş edildi. Çıxıldı. Qeydiyyatdan keçilib. İndi kanallara abunə ola bilərsiniz. Artıq daxil olunub.İstəsəniz hesabınızdan çıxa bilərsiniz. Zəhmət olmasa, daxil ol və təkrar cəhd et. Ev - Abunəliklər + Abunələr Kitabxana Seç… Fərdi @@ -38,7 +38,7 @@ YT Musiqi Mahnıları YT Musiqi Videoları YT Musiqi Pleylistləri - Defolt Panel + Standart Panel SponsorBlok https://sponsor.ajay.app API\'sini istifadə edir 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. @@ -54,33 +54,33 @@ Bitdi. Şərhlər Əvvəlcə İnternetə Qoşul. - Yenidən Cəhd Et + Təkrar Cəhd Et Seqment ötürüldü Ö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. İnteraksiya xatırladıcı(bəyən və abunə ol) Fasilə/Giriş Animasiyası Daxil ol/qeydiyyatdan keç - Zəhmət olmasa, əvvəlcə tənzimləmələrdə daxil ol və ya qeydiyyatdan keç. + Zəhmət olmasa, əvvəlcə tənzimləmələrdə giriş et və ya qeydiyyatdan keç. Abunə olundu Əvvəlcə bəzi kanallara abunə ol. Bu yayımı endirmək mümkün deyil. Endirmə tamamlandı. - Başqa endirmə artıq davam edir, zəhmət olmasa, bitənə qədər gözlə. + Artıq digər endirmə davam edir, zəhmət olmasa, bitənə qədər gözlə. Endirmə alınmadı. VLC\'də Aç VLC-də açmaq mümkün olmadı. O, quraşdırılmamış ola bilər. Abunəlikləri idxal et YouTube və ya NewPipe\'dan Tema - Serverlə problem yaşanır. Başqa nümunə cəhd edilsinmi\? + Serverlə problem yaşanır. Başqa nümunə sınansın\? Şəbəkə xətası. Nəsə xəta baş verdi. İstifadəçi adı və şifrə daxil etməlisiniz. Bu Piped hesabı üçündür. Video görüntü imkanı Şəbəkə sütunları - Burada heç nə yoxdur. + Bura boşdur. Pleylisti sil Pleylist silinsinmi\? Pleylist yarat @@ -119,7 +119,7 @@ %1$s Versiyası Mövcuddur Onu endirmək üçün GitHub\'da buraxılışlara keçilsinmi\? Xarici Görünüş - Davranma + Davranış Yüklənənlər Video formatı Səs və video birlikdə endirildisə, faylların dönüşdürülməsi. @@ -132,9 +132,9 @@ Oynatma sürəti Qabaqcıl Oynadıcı - Tətbiqi zövqünüzə uyğunlaşdırın. + Tətbiqi zövqünüzə görə uyğunlaşdırın. Yüklənənlər və sıfırla - Yeniləmə üçün yoxla + Yeniləmək üçün yoxla Ən son versiyanı işlədirsiniz. Canlı Müəlliflər @@ -148,7 +148,7 @@ Daxili yaddaş Endirilmiş medianın saxlanıldığı qovluğun adı. %1$s baxış - Defolt + Standart İtmiş miras Dəbdəbəli yanğın Pərgar meyli @@ -188,14 +188,14 @@ \"Trenddə olan\" səhifəsini gizlət Keyfiyyət Davranış - Defolt tənzimləmələr və davranış + Standartlar və davranış Axtarış artımı Nümunə üçün URL - Cari videodan sonra növbəti videonu avtomatik oynat. + Hazırkı videodan sonra növbəti videonu avtomatik oynat. Avtomatik fasilə Ekran söndürüldükdə oynatmanı dayandır. Pleylisti klonla - İlkin tənzimləmələri qaytar + Standartları qaytar Bütün tənzimləmələr sıfırlansın və sistemdən çıxılsın\? Hesab Bərpa Et @@ -204,7 +204,7 @@ Baxış Tarixçəsi Mövqe xatırlat Son oynatma mövqeyindən davam etdir - Təsdiqləyici nümunəni seç + Təsdiqləyici nümunə seç Təsdiqlənmiş dəvətlər üçün fərqli nümunə istifadə et. Təsdiqləyici nümunə GitHub @@ -222,7 +222,7 @@ Twitter Discord Aç… - Lütfən, İnternetə qoşulmaq üçün Wi-Fi və ya mobil məlumatı açın. + Zəhmət olmasa, İnternetə qoşulmaq üçün Wi-Fi və ya mobil məlumatı açın. Bölmələr Oynatma sürəti Yeni dəyişiklikləri işlətmək üçün tətbiqi yenidən başlat. @@ -237,10 +237,10 @@ Təmiz tema Təmiz ağ/qara tema Xarici oynadıcı tapılmadı. Zəhmət olmasa, birinin quraşdırıldığından əmin olun. - Məlumata qənaət rejimi + Məlumat qənaəti rejimi Cihaz fırladıldıqda tam ekran oynat. Axtarışları saxla - Baxılan videoları yerli olaraq saxla + Baxılan videoların yerli olaraq saxlanılması Sıfırla Sistem altyazı üsulu Altyazılar @@ -302,7 +302,7 @@ Yaxınlaşdır Uyğunlaşdır Heç biri - Cari + Hazırkı Nüsxələ & bərpa et Nüsxələ Şəkil içində Şəkil @@ -337,10 +337,10 @@ Səs oynadıcını idarə etmək üçün düymələrlə bildiriş göstərir. Sonrakında oynat Naviqasiya çubuğu - Lütfən, ən az bir element seç - Trend\'in cari ölkə üçün əlçatan olmadığı görünür.Lütfən, tənzimləmələrdə başqasını seç. + Xahiş edirik, ən az bir element seç + Trend\'in hazırkı ölkə üçün əlçatan olmadığı görünür.Xahiş edirik, tənzimləmələrdə başqasını seç. HLS\'ni 1080p ilə məhdudlaşdır - Defolt + Standart Qabaqcıl, yükləmə intervalı ölçüsü Daha aşağı dəyər ilkin video yükləməni sürətləndirə bilər. baxış @@ -360,7 +360,7 @@ Vaxt çubuğunda seqmentləri nişanla. Canlı yayımlar Alternativ video tərtibatı - Defolt işıqlı + Standart işıqlı Pleylist klonlandı %1$s abunəliyini ləğv etmək istədiyinizə əminsiniz\? Abunəlik ləğvini təsdiqlə @@ -370,18 +370,18 @@ Başlama vaxtı Bitmə vaxtı Bildiriş vaxtı - Bildirişlərin göstərilməsinə icazə verilən vaxt aralığı. + Bildirişləri göstərmək üçün icazə verilən vaxt aralığı. Alternativ trend tərtibatı Ardıcıllıq Tərtibat Alternativ oynadıcı tərtibatı Əlaqəli videoları aşağıda deyil, şərhlərin üstündə cərgə kimi göstər. Səs treki - Defolt + Standart Dəstəklənməyən fayl formatı! Avtomatik HLS istifadə et - DASH əvəzinə HLS istifadə et (daha yavaş olacaq, tövsiyə edilmir) + DASH əvəzinə HLS istifadə et (daha yavaş olacaq, tövsiyə edilmədi) İş vaxtı məhdudiyyət Bildirişdən növbə aç Trendlər @@ -393,21 +393,21 @@ Hələ əlfəcinlər yoxdur! Əlaqəli videoları yerləşdir Yerli pleylistlər - Lütfən, əvvəla başqa başlanğıc paneli seç! + Xahiş edirik, əvvəla başqa başlatma paneli seç! Menyu elementi aktiv deyil! Parlaqlıq Avtomatik Parlaqlığı və səs səviyyəsini nizamlamaq üçün sürüşdürmə jesti istifadə et. Səs səviyyəsi Sürüşdürmə nəzarətləri - Defolt + Standartlar Ani pəncərə Bu videoda şərhlər əlçatan deyil. Şərhlər yükləyici tərəfindən deaktiv edilib. Axtarmaq üçün iki dəfə kliklə Oynadıcı mövqeyini geri və ya irəli çəkmək üçün sola yaxud sağa iki dəfə kliklə. Hamısını yuxarıda tutmusunuz - Bütün yeni videolara baxmısınız + Bütün yeni videoları gördünüz Altyazı ölçüsü Pleylistləri idxal et Pleylistləri ixrac et @@ -422,7 +422,7 @@ Minimalist Tək Rəngli Ən son videoları oynat Heç nə seçilməyib! - Hərtərəfli Bənövşəyi + Bütöv Bənövşəyi Mövcud nümunələri əldə etmək mümkün olmadı. Baxılan videoları axından gizlət Abunəliklər panelində 90% daha çox baxılan videoları göstərmə. @@ -432,15 +432,15 @@ Əlfəcini sil Əlfəcinlərə əlavə et İrəli - Fasilə ver + Dayandır Alternativ PiP nəzarətləri - Yalnız səsi göstər və irəli və geri çevirmək əvəzində PiP-də idarəetmələri ötür + 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 Geri sar Səs oynadıcı Yalnız səs rejimi LibreTube-u musiqi oynadıcıya dəyiş. Altyazı yoxdur - Endirməyə fasilə verildi + Endirmə dayandırıldı Endirmə tamamlandı Maksimal paralel endirmələr Maksimal paralel endirmə limitinə çatıldı. @@ -450,4 +450,5 @@ Səssizliyi ötür Kömək T-TSS + Cavablar \ No newline at end of file From 7d2f5276d0491a053f74d7c1ba6448530de6c846 Mon Sep 17 00:00:00 2001 From: Eric Date: Sun, 29 Jan 2023 12:16:39 +0000 Subject: [PATCH 17/23] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/zh_Hans/ --- app/src/main/res/values-zh-rCN/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index d5989365e..a6bd03f93 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -450,4 +450,5 @@ 跳过静音 帮助 常见问题 + 回复 \ No newline at end of file From db72c3948b6c10cd782706e935eb777904030e1c Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Sat, 28 Jan 2023 20:28:55 +0000 Subject: [PATCH 18/23] Translated using Weblate (Ukrainian) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/uk/ --- app/src/main/res/values-uk/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index e176e1148..ce02f8112 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -450,4 +450,5 @@ ЧаПи Таймер сну Пропускати тишу + Відповіді \ No newline at end of file From 4ee1370fb2775a22e995f02b2aef4f7decb5d493 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Sun, 29 Jan 2023 07:39:35 +0000 Subject: [PATCH 19/23] Translated using Weblate (Hebrew) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/he/ --- app/src/main/res/values-iw/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index da38021d7..e37bc0900 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -450,4 +450,5 @@ דילוג על שקט עזרה שו״ת + תגובות \ No newline at end of file From 73070f6e936ee28e77d2ba4a0fc786e719ed9574 Mon Sep 17 00:00:00 2001 From: aasami Date: Sat, 28 Jan 2023 22:26:01 +0000 Subject: [PATCH 20/23] Translated using Weblate (Slovak) Currently translated at 62.5% (282 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/sk/ --- app/src/main/res/values-sk/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 88097e645..fa2fa41b2 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -22,7 +22,7 @@ Iné sťahovanie práve prebieha, počkajte kým bude ukončené. Sťahovanie zlyhalo. Otvoriť vo VLC - Nemožno otvoriť vo VLC. Možno nie je nainštalovaný. + Nepodarilo sa otvoriť vo VLC. Možno nie je nainštalovaný. Import odberov Z YouTube alebo NewPipe Na serveri sa vyskytol problém. Skúsiť inú inštanciu\? @@ -175,7 +175,7 @@ Skryť kapitoly 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. Cieľ vyrovnávacej pamäte - Ide o vedľajšie scény pridané len ako výplň alebo humor, ktoré nie sú potrebné na pochopenie hlavného obsahu videa. + Pre vedľajšie scény pridané len ako výplň alebo humor, ktoré nie sú potrebné na pochopenie hlavného obsahu videa. 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. Informácie po skončení. Nie pre závery s informáciami. Prosím zapnite si wifi alebo mobilné dáta aby ste sa pripojili na internet. @@ -292,4 +292,5 @@ Najlepšia Audio formát pre prehrávač Kvalita zvuku + Odpovede \ No newline at end of file From 4cf8694ec37a3eaf243d3193207bbcc33492d546 Mon Sep 17 00:00:00 2001 From: Daniel Rozario Date: Sun, 29 Jan 2023 16:27:55 +0000 Subject: [PATCH 21/23] Translated using Weblate (Bengali) Currently translated at 87.8% (396 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/bn/ --- app/src/main/res/values-bn/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml index cd62a3ec9..84fd5b6a8 100644 --- a/app/src/main/res/values-bn/strings.xml +++ b/app/src/main/res/values-bn/strings.xml @@ -395,4 +395,5 @@ বুকমার্ক বুকমার্ক মুছে দিন কোনো বুকমার্ক নেই! + পপ-আপ \ No newline at end of file From efb3e934a560276aca888753540474952802c5f3 Mon Sep 17 00:00:00 2001 From: GET100PERCENT Date: Sun, 29 Jan 2023 03:26:03 +0000 Subject: [PATCH 22/23] Translated using Weblate (Odia) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/or/ --- app/src/main/res/values-or/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index c6f831238..a46759f34 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -450,4 +450,5 @@ ନୀରବତା ଛାଡିଦିଅ ସାହାଯ୍ୟ FAQ + ଉତ୍ତର ଗୁଡିକ \ No newline at end of file From 505da3527488c5f2ff61e9e3b4fb9093ef19b4fd Mon Sep 17 00:00:00 2001 From: ShareASmile Date: Mon, 30 Jan 2023 11:42:13 +0000 Subject: [PATCH 23/23] Translated using Weblate (Punjabi) Currently translated at 100.0% (451 of 451 strings) Translation: LibreTube/LibreTube Translate-URL: https://hosted.weblate.org/projects/libretube/libretube/pa/ --- app/src/main/res/values-pa/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 140528f64..9e76556cc 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -113,7 +113,7 @@ ਅਨੰਦਮਈ ਨੀਲਾ ਜ਼ੋਰਦਾਰ ਪੀਲਾ ਆਕਰਸ਼ਕ ਹਰਾ - ਅਨੰਦਦਾਇਕ ਜਾਮਨੀ + ਅਨੰਦਦਾਇਕ ਜਾਮਣੀ ਕਾਲ੍ਹਾ ਮਟੀਰੀਅਲ ਯੂ ਨੋਟੀਫਿਕੇਸ਼ਨ @@ -450,4 +450,5 @@ ਸਹਾਇਤਾ ਆਮ ਸਵਾਲ ਸਲੀਪ ਟਾਈਮਰ + ਜਵਾਬ \ No newline at end of file