mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 16:00:31 +05:30
Merge pull request #2928 from Bnyro/master
[Audio Player] Gestures on the thumbnail
This commit is contained in:
commit
7d80eb301c
@ -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.DOWNLOAD_CHANNEL_ID
|
||||||
import com.github.libretube.constants.PUSH_CHANNEL_ID
|
import com.github.libretube.constants.PUSH_CHANNEL_ID
|
||||||
import com.github.libretube.db.DatabaseHolder
|
import com.github.libretube.db.DatabaseHolder
|
||||||
import com.github.libretube.util.ExceptionHandler
|
|
||||||
import com.github.libretube.helpers.ImageHelper
|
import com.github.libretube.helpers.ImageHelper
|
||||||
import com.github.libretube.helpers.NotificationHelper
|
import com.github.libretube.helpers.NotificationHelper
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.github.libretube.helpers.ProxyHelper
|
import com.github.libretube.helpers.ProxyHelper
|
||||||
import com.github.libretube.helpers.ShortcutHelper
|
import com.github.libretube.helpers.ShortcutHelper
|
||||||
|
import com.github.libretube.util.ExceptionHandler
|
||||||
|
|
||||||
class LibreTubeApp : Application() {
|
class LibreTubeApp : Application() {
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
|
@ -16,9 +16,9 @@ import com.github.libretube.extensions.toID
|
|||||||
import com.github.libretube.extensions.toLocalPlaylistItem
|
import com.github.libretube.extensions.toLocalPlaylistItem
|
||||||
import com.github.libretube.extensions.toStreamItem
|
import com.github.libretube.extensions.toStreamItem
|
||||||
import com.github.libretube.extensions.toastFromMainThread
|
import com.github.libretube.extensions.toastFromMainThread
|
||||||
import com.github.libretube.obj.ImportPlaylist
|
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.github.libretube.helpers.ProxyHelper
|
import com.github.libretube.helpers.ProxyHelper
|
||||||
|
import com.github.libretube.obj.ImportPlaylist
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.async
|
import kotlinx.coroutines.async
|
||||||
|
@ -29,9 +29,9 @@ import com.github.libretube.extensions.awaitQuery
|
|||||||
import com.github.libretube.extensions.query
|
import com.github.libretube.extensions.query
|
||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
import com.github.libretube.extensions.toStreamItem
|
import com.github.libretube.extensions.toStreamItem
|
||||||
import com.github.libretube.util.NowPlayingNotification
|
|
||||||
import com.github.libretube.helpers.PlayerHelper
|
import com.github.libretube.helpers.PlayerHelper
|
||||||
import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams
|
import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams
|
||||||
|
import com.github.libretube.util.NowPlayingNotification
|
||||||
import com.github.libretube.util.PlayingQueue
|
import com.github.libretube.util.PlayingQueue
|
||||||
import com.google.android.exoplayer2.ExoPlayer
|
import com.google.android.exoplayer2.ExoPlayer
|
||||||
import com.google.android.exoplayer2.MediaItem
|
import com.google.android.exoplayer2.MediaItem
|
||||||
|
@ -25,14 +25,14 @@ import com.github.libretube.extensions.getContentLength
|
|||||||
import com.github.libretube.extensions.query
|
import com.github.libretube.extensions.query
|
||||||
import com.github.libretube.extensions.toDownloadItems
|
import com.github.libretube.extensions.toDownloadItems
|
||||||
import com.github.libretube.extensions.toastFromMainThread
|
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.obj.DownloadStatus
|
||||||
import com.github.libretube.receivers.NotificationReceiver
|
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_PAUSE
|
||||||
import com.github.libretube.receivers.NotificationReceiver.Companion.ACTION_DOWNLOAD_RESUME
|
import com.github.libretube.receivers.NotificationReceiver.Companion.ACTION_DOWNLOAD_RESUME
|
||||||
import com.github.libretube.ui.activities.MainActivity
|
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.io.File
|
||||||
import java.net.HttpURLConnection
|
import java.net.HttpURLConnection
|
||||||
import java.net.SocketTimeoutException
|
import java.net.SocketTimeoutException
|
||||||
|
@ -27,6 +27,12 @@ import com.github.libretube.constants.IntentData
|
|||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.databinding.ActivityMainBinding
|
import com.github.libretube.databinding.ActivityMainBinding
|
||||||
import com.github.libretube.extensions.toID
|
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.services.ClosingService
|
||||||
import com.github.libretube.ui.base.BaseActivity
|
import com.github.libretube.ui.base.BaseActivity
|
||||||
import com.github.libretube.ui.dialogs.ErrorDialog
|
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.SearchViewModel
|
||||||
import com.github.libretube.ui.models.SubscriptionsViewModel
|
import com.github.libretube.ui.models.SubscriptionsViewModel
|
||||||
import com.github.libretube.ui.tools.SleepTimer
|
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
|
import com.google.android.material.elevation.SurfaceColors
|
||||||
|
|
||||||
class MainActivity : BaseActivity() {
|
class MainActivity : BaseActivity() {
|
||||||
|
@ -6,10 +6,10 @@ import androidx.activity.addCallback
|
|||||||
import androidx.fragment.app.commit
|
import androidx.fragment.app.commit
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.databinding.ActivityNointernetBinding
|
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.NavigationHelper
|
||||||
import com.github.libretube.helpers.NetworkHelper
|
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
|
import com.google.android.material.snackbar.Snackbar
|
||||||
|
|
||||||
class NoInternetActivity : BaseActivity() {
|
class NoInternetActivity : BaseActivity() {
|
||||||
|
@ -16,12 +16,12 @@ import com.github.libretube.db.DatabaseHolder.Companion.Database
|
|||||||
import com.github.libretube.enums.FileType
|
import com.github.libretube.enums.FileType
|
||||||
import com.github.libretube.extensions.awaitQuery
|
import com.github.libretube.extensions.awaitQuery
|
||||||
import com.github.libretube.extensions.updateParameters
|
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
|
||||||
import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams
|
import com.github.libretube.helpers.PlayerHelper.loadPlaybackParams
|
||||||
import com.github.libretube.helpers.WindowHelper
|
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.C
|
||||||
import com.google.android.exoplayer2.ExoPlayer
|
import com.google.android.exoplayer2.ExoPlayer
|
||||||
import com.google.android.exoplayer2.MediaItem
|
import com.google.android.exoplayer2.MediaItem
|
||||||
|
@ -7,8 +7,8 @@ import android.os.Bundle
|
|||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.github.libretube.constants.IntentData
|
import com.github.libretube.constants.IntentData
|
||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
import com.github.libretube.ui.base.BaseActivity
|
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
import com.github.libretube.helpers.NavigationHelper
|
||||||
|
import com.github.libretube.ui.base.BaseActivity
|
||||||
import com.github.libretube.util.TextUtils
|
import com.github.libretube.util.TextUtils
|
||||||
|
|
||||||
class RouterActivity : BaseActivity() {
|
class RouterActivity : BaseActivity() {
|
||||||
|
@ -7,9 +7,9 @@ import android.view.ViewGroup
|
|||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.github.libretube.api.obj.ChapterSegment
|
import com.github.libretube.api.obj.ChapterSegment
|
||||||
import com.github.libretube.databinding.ChapterColumnBinding
|
import com.github.libretube.databinding.ChapterColumnBinding
|
||||||
import com.github.libretube.ui.viewholders.ChaptersViewHolder
|
|
||||||
import com.github.libretube.helpers.ImageHelper
|
import com.github.libretube.helpers.ImageHelper
|
||||||
import com.github.libretube.helpers.ThemeHelper
|
import com.github.libretube.helpers.ThemeHelper
|
||||||
|
import com.github.libretube.ui.viewholders.ChaptersViewHolder
|
||||||
import com.google.android.exoplayer2.ExoPlayer
|
import com.google.android.exoplayer2.ExoPlayer
|
||||||
|
|
||||||
class ChaptersAdapter(
|
class ChaptersAdapter(
|
||||||
|
@ -19,13 +19,13 @@ import com.github.libretube.api.obj.Comment
|
|||||||
import com.github.libretube.constants.IntentData
|
import com.github.libretube.constants.IntentData
|
||||||
import com.github.libretube.databinding.CommentsRowBinding
|
import com.github.libretube.databinding.CommentsRowBinding
|
||||||
import com.github.libretube.extensions.formatShort
|
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.ClipboardHelper
|
||||||
import com.github.libretube.helpers.ImageHelper
|
import com.github.libretube.helpers.ImageHelper
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
import com.github.libretube.helpers.NavigationHelper
|
||||||
import com.github.libretube.util.TextUtils
|
|
||||||
import com.github.libretube.helpers.ThemeHelper
|
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(
|
class CommentsAdapter(
|
||||||
private val fragment: Fragment?,
|
private val fragment: Fragment?,
|
||||||
|
@ -14,9 +14,9 @@ import com.github.libretube.db.DatabaseHolder
|
|||||||
import com.github.libretube.db.obj.DownloadWithItems
|
import com.github.libretube.db.obj.DownloadWithItems
|
||||||
import com.github.libretube.extensions.formatAsFileSize
|
import com.github.libretube.extensions.formatAsFileSize
|
||||||
import com.github.libretube.extensions.query
|
import com.github.libretube.extensions.query
|
||||||
|
import com.github.libretube.helpers.ImageHelper
|
||||||
import com.github.libretube.ui.activities.OfflinePlayerActivity
|
import com.github.libretube.ui.activities.OfflinePlayerActivity
|
||||||
import com.github.libretube.ui.viewholders.DownloadsViewHolder
|
import com.github.libretube.ui.viewholders.DownloadsViewHolder
|
||||||
import com.github.libretube.helpers.ImageHelper
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
|
@ -8,9 +8,9 @@ import androidx.recyclerview.widget.RecyclerView
|
|||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.databinding.AppIconItemBinding
|
import com.github.libretube.databinding.AppIconItemBinding
|
||||||
import com.github.libretube.ui.viewholders.IconsSheetViewHolder
|
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.github.libretube.helpers.ThemeHelper
|
import com.github.libretube.helpers.ThemeHelper
|
||||||
|
import com.github.libretube.ui.viewholders.IconsSheetViewHolder
|
||||||
|
|
||||||
class IconsSheetAdapter : RecyclerView.Adapter<IconsSheetViewHolder>() {
|
class IconsSheetAdapter : RecyclerView.Adapter<IconsSheetViewHolder>() {
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): IconsSheetViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): IconsSheetViewHolder {
|
||||||
|
@ -5,11 +5,11 @@ import android.view.ViewGroup
|
|||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.github.libretube.databinding.LegacySubscriptionChannelBinding
|
import com.github.libretube.databinding.LegacySubscriptionChannelBinding
|
||||||
import com.github.libretube.extensions.toID
|
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.base.BaseActivity
|
||||||
import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet
|
import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet
|
||||||
import com.github.libretube.ui.viewholders.LegacySubscriptionViewHolder
|
import com.github.libretube.ui.viewholders.LegacySubscriptionViewHolder
|
||||||
import com.github.libretube.helpers.ImageHelper
|
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
|
||||||
|
|
||||||
class LegacySubscriptionAdapter(
|
class LegacySubscriptionAdapter(
|
||||||
private val subscriptions: List<com.github.libretube.api.obj.Subscription>
|
private val subscriptions: List<com.github.libretube.api.obj.Subscription>
|
||||||
|
@ -8,10 +8,10 @@ import android.view.ViewGroup
|
|||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.github.libretube.databinding.QueueRowBinding
|
import com.github.libretube.databinding.QueueRowBinding
|
||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
import com.github.libretube.ui.viewholders.PlayingQueueViewHolder
|
|
||||||
import com.github.libretube.helpers.ImageHelper
|
import com.github.libretube.helpers.ImageHelper
|
||||||
import com.github.libretube.util.PlayingQueue
|
|
||||||
import com.github.libretube.helpers.ThemeHelper
|
import com.github.libretube.helpers.ThemeHelper
|
||||||
|
import com.github.libretube.ui.viewholders.PlayingQueueViewHolder
|
||||||
|
import com.github.libretube.util.PlayingQueue
|
||||||
|
|
||||||
class PlayingQueueAdapter : RecyclerView.Adapter<PlayingQueueViewHolder>() {
|
class PlayingQueueAdapter : RecyclerView.Adapter<PlayingQueueViewHolder>() {
|
||||||
|
|
||||||
|
@ -13,13 +13,13 @@ import com.github.libretube.databinding.VideoRowBinding
|
|||||||
import com.github.libretube.enums.PlaylistType
|
import com.github.libretube.enums.PlaylistType
|
||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
import com.github.libretube.extensions.toID
|
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.base.BaseActivity
|
||||||
import com.github.libretube.ui.extensions.setFormattedDuration
|
import com.github.libretube.ui.extensions.setFormattedDuration
|
||||||
import com.github.libretube.ui.extensions.setWatchProgressLength
|
import com.github.libretube.ui.extensions.setWatchProgressLength
|
||||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||||
import com.github.libretube.ui.viewholders.PlaylistViewHolder
|
import com.github.libretube.ui.viewholders.PlaylistViewHolder
|
||||||
import com.github.libretube.helpers.ImageHelper
|
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
@ -12,10 +12,10 @@ import com.github.libretube.db.DatabaseHolder
|
|||||||
import com.github.libretube.db.obj.PlaylistBookmark
|
import com.github.libretube.db.obj.PlaylistBookmark
|
||||||
import com.github.libretube.enums.PlaylistType
|
import com.github.libretube.enums.PlaylistType
|
||||||
import com.github.libretube.extensions.query
|
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.ImageHelper
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
import com.github.libretube.helpers.NavigationHelper
|
||||||
|
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
||||||
|
import com.github.libretube.ui.viewholders.PlaylistBookmarkViewHolder
|
||||||
|
|
||||||
class PlaylistBookmarkAdapter(
|
class PlaylistBookmarkAdapter(
|
||||||
private val bookmarks: List<PlaylistBookmark>,
|
private val bookmarks: List<PlaylistBookmark>,
|
||||||
|
@ -7,12 +7,12 @@ import com.github.libretube.R
|
|||||||
import com.github.libretube.api.obj.Playlists
|
import com.github.libretube.api.obj.Playlists
|
||||||
import com.github.libretube.databinding.PlaylistsRowBinding
|
import com.github.libretube.databinding.PlaylistsRowBinding
|
||||||
import com.github.libretube.enums.PlaylistType
|
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.base.BaseActivity
|
||||||
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
||||||
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
||||||
import com.github.libretube.ui.viewholders.PlaylistsViewHolder
|
import com.github.libretube.ui.viewholders.PlaylistsViewHolder
|
||||||
import com.github.libretube.helpers.ImageHelper
|
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
|
||||||
|
|
||||||
class PlaylistsAdapter(
|
class PlaylistsAdapter(
|
||||||
private val playlists: MutableList<Playlists>,
|
private val playlists: MutableList<Playlists>,
|
||||||
|
@ -13,6 +13,8 @@ import com.github.libretube.databinding.VideoRowBinding
|
|||||||
import com.github.libretube.enums.PlaylistType
|
import com.github.libretube.enums.PlaylistType
|
||||||
import com.github.libretube.extensions.formatShort
|
import com.github.libretube.extensions.formatShort
|
||||||
import com.github.libretube.extensions.toID
|
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.base.BaseActivity
|
||||||
import com.github.libretube.ui.extensions.setFormattedDuration
|
import com.github.libretube.ui.extensions.setFormattedDuration
|
||||||
import com.github.libretube.ui.extensions.setWatchProgressLength
|
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.PlaylistOptionsBottomSheet
|
||||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||||
import com.github.libretube.ui.viewholders.SearchViewHolder
|
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
|
import com.github.libretube.util.TextUtils
|
||||||
|
|
||||||
class SearchAdapter(
|
class SearchAdapter(
|
||||||
|
@ -6,12 +6,12 @@ import androidx.recyclerview.widget.RecyclerView
|
|||||||
import com.github.libretube.api.obj.Subscription
|
import com.github.libretube.api.obj.Subscription
|
||||||
import com.github.libretube.databinding.ChannelSubscriptionRowBinding
|
import com.github.libretube.databinding.ChannelSubscriptionRowBinding
|
||||||
import com.github.libretube.extensions.toID
|
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.base.BaseActivity
|
||||||
import com.github.libretube.ui.extensions.setupSubscriptionButton
|
import com.github.libretube.ui.extensions.setupSubscriptionButton
|
||||||
import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet
|
import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet
|
||||||
import com.github.libretube.ui.viewholders.SubscriptionChannelViewHolder
|
import com.github.libretube.ui.viewholders.SubscriptionChannelViewHolder
|
||||||
import com.github.libretube.helpers.ImageHelper
|
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
|
||||||
|
|
||||||
class SubscriptionChannelAdapter(
|
class SubscriptionChannelAdapter(
|
||||||
private val subscriptions: MutableList<Subscription>
|
private val subscriptions: MutableList<Subscription>
|
||||||
|
@ -20,14 +20,14 @@ import com.github.libretube.databinding.VideoRowBinding
|
|||||||
import com.github.libretube.extensions.dpToPx
|
import com.github.libretube.extensions.dpToPx
|
||||||
import com.github.libretube.extensions.formatShort
|
import com.github.libretube.extensions.formatShort
|
||||||
import com.github.libretube.extensions.toID
|
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.base.BaseActivity
|
||||||
import com.github.libretube.ui.extensions.setFormattedDuration
|
import com.github.libretube.ui.extensions.setFormattedDuration
|
||||||
import com.github.libretube.ui.extensions.setWatchProgressLength
|
import com.github.libretube.ui.extensions.setWatchProgressLength
|
||||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||||
import com.github.libretube.ui.viewholders.VideosViewHolder
|
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
|
import com.github.libretube.util.TextUtils
|
||||||
|
|
||||||
class VideosAdapter(
|
class VideosAdapter(
|
||||||
|
@ -8,13 +8,13 @@ import com.github.libretube.databinding.VideoRowBinding
|
|||||||
import com.github.libretube.db.DatabaseHolder
|
import com.github.libretube.db.DatabaseHolder
|
||||||
import com.github.libretube.db.obj.WatchHistoryItem
|
import com.github.libretube.db.obj.WatchHistoryItem
|
||||||
import com.github.libretube.extensions.query
|
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.base.BaseActivity
|
||||||
import com.github.libretube.ui.extensions.setFormattedDuration
|
import com.github.libretube.ui.extensions.setFormattedDuration
|
||||||
import com.github.libretube.ui.extensions.setWatchProgressLength
|
import com.github.libretube.ui.extensions.setWatchProgressLength
|
||||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
||||||
import com.github.libretube.ui.viewholders.WatchHistoryViewHolder
|
import com.github.libretube.ui.viewholders.WatchHistoryViewHolder
|
||||||
import com.github.libretube.helpers.ImageHelper
|
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
|
||||||
|
|
||||||
class WatchHistoryAdapter(
|
class WatchHistoryAdapter(
|
||||||
private val watchHistory: MutableList<WatchHistoryItem>
|
private val watchHistory: MutableList<WatchHistoryItem>
|
||||||
|
@ -7,8 +7,8 @@ import androidx.preference.Preference
|
|||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.databinding.DialogTextPreferenceBinding
|
import com.github.libretube.databinding.DialogTextPreferenceBinding
|
||||||
import com.github.libretube.ui.activities.SettingsActivity
|
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
|
import com.github.libretube.ui.activities.SettingsActivity
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -7,9 +7,9 @@ import androidx.fragment.app.DialogFragment
|
|||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
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.BackupFile
|
||||||
import com.github.libretube.obj.PreferenceItem
|
import com.github.libretube.obj.PreferenceItem
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -8,8 +8,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
|||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.databinding.DialogNavbarOptionsBinding
|
import com.github.libretube.databinding.DialogNavbarOptionsBinding
|
||||||
import com.github.libretube.ui.adapters.NavBarOptionsAdapter
|
|
||||||
import com.github.libretube.helpers.NavBarHelper
|
import com.github.libretube.helpers.NavBarHelper
|
||||||
|
import com.github.libretube.ui.adapters.NavBarOptionsAdapter
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
class NavBarOptionsDialog : DialogFragment() {
|
class NavBarOptionsDialog : DialogFragment() {
|
||||||
|
@ -13,8 +13,8 @@ import com.github.libretube.databinding.DialogShareBinding
|
|||||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||||
import com.github.libretube.enums.ShareObjectType
|
import com.github.libretube.enums.ShareObjectType
|
||||||
import com.github.libretube.extensions.awaitQuery
|
import com.github.libretube.extensions.awaitQuery
|
||||||
import com.github.libretube.obj.ShareData
|
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
|
import com.github.libretube.obj.ShareData
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
class ShareDialog(
|
class ShareDialog(
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.github.libretube.ui.fragments
|
package com.github.libretube.ui.fragments
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -17,22 +18,28 @@ import com.github.libretube.R
|
|||||||
import com.github.libretube.api.obj.StreamItem
|
import com.github.libretube.api.obj.StreamItem
|
||||||
import com.github.libretube.databinding.FragmentAudioPlayerBinding
|
import com.github.libretube.databinding.FragmentAudioPlayerBinding
|
||||||
import com.github.libretube.enums.ShareObjectType
|
import com.github.libretube.enums.ShareObjectType
|
||||||
|
import com.github.libretube.extensions.normalize
|
||||||
import com.github.libretube.extensions.toID
|
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.obj.ShareData
|
||||||
import com.github.libretube.services.BackgroundMode
|
import com.github.libretube.services.BackgroundMode
|
||||||
import com.github.libretube.ui.activities.MainActivity
|
import com.github.libretube.ui.activities.MainActivity
|
||||||
import com.github.libretube.ui.base.BaseFragment
|
import com.github.libretube.ui.base.BaseFragment
|
||||||
import com.github.libretube.ui.dialogs.ShareDialog
|
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.PlaybackOptionsSheet
|
||||||
import com.github.libretube.ui.sheets.PlayingQueueSheet
|
import com.github.libretube.ui.sheets.PlayingQueueSheet
|
||||||
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
|
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
|
import com.github.libretube.util.PlayingQueue
|
||||||
|
|
||||||
class AudioPlayerFragment : BaseFragment() {
|
class AudioPlayerFragment : BaseFragment(), AudioPlayerOptions {
|
||||||
private lateinit var binding: FragmentAudioPlayerBinding
|
private lateinit var binding: FragmentAudioPlayerBinding
|
||||||
|
private lateinit var audioHelper: AudioHelper
|
||||||
|
|
||||||
private val onTrackChangeListener: (StreamItem) -> Unit = {
|
private val onTrackChangeListener: (StreamItem) -> Unit = {
|
||||||
updateStreamInfo()
|
updateStreamInfo()
|
||||||
}
|
}
|
||||||
@ -64,6 +71,7 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
audioHelper = AudioHelper(requireContext())
|
||||||
Intent(activity, BackgroundMode::class.java).also { intent ->
|
Intent(activity, BackgroundMode::class.java).also { intent ->
|
||||||
activity?.bindService(intent, connection, Context.BIND_AUTO_CREATE)
|
activity?.bindService(intent, connection, Context.BIND_AUTO_CREATE)
|
||||||
}
|
}
|
||||||
@ -78,6 +86,7 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("ClickableViewAccessibility")
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
@ -129,13 +138,8 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
).show(childFragmentManager, null)
|
).show(childFragmentManager, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.thumbnail.setOnClickListener {
|
val listener = AudioPlayerThumbnailListener(requireContext(), this)
|
||||||
val current = PlayingQueue.getCurrent()
|
binding.thumbnail.setOnTouchListener(listener)
|
||||||
current?.let {
|
|
||||||
VideoOptionsBottomSheet(it.url!!.toID(), it.title!!)
|
|
||||||
.show(childFragmentManager)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Listen for track changes due to autoplay or the notification
|
// Listen for track changes due to autoplay or the notification
|
||||||
PlayingQueue.addOnTrackChangedListener(onTrackChangeListener)
|
PlayingQueue.addOnTrackChangedListener(onTrackChangeListener)
|
||||||
@ -146,6 +150,11 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
|
|
||||||
// load the stream info into the UI
|
// load the stream info into the UI
|
||||||
updateStreamInfo()
|
updateStreamInfo()
|
||||||
|
|
||||||
|
// update the currently shown volume
|
||||||
|
binding.volumeProgressBar.let { bar ->
|
||||||
|
bar.progress = audioHelper.getVolumeWithScale(bar.max)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -232,4 +241,48 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
|
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onSingleTap() {
|
||||||
|
if (isPaused) playerService?.play() else playerService?.pause()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLongTap() {
|
||||||
|
val current = PlayingQueue.getCurrent()
|
||||||
|
VideoOptionsBottomSheet(current?.url?.toID() ?: return, current.title ?: return)
|
||||||
|
.show(childFragmentManager)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSwipe(distanceY: Float) {
|
||||||
|
binding.volumeControls.visibility = View.VISIBLE
|
||||||
|
updateVolume(distanceY)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSwipeEnd() {
|
||||||
|
binding.volumeControls.visibility = View.GONE
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateVolume(distance: Float) {
|
||||||
|
val bar = binding.volumeProgressBar
|
||||||
|
binding.volumeControls.apply {
|
||||||
|
if (visibility == View.GONE) {
|
||||||
|
visibility = View.VISIBLE
|
||||||
|
// Volume could be changed using other mediums, sync progress
|
||||||
|
// bar with new value.
|
||||||
|
bar.progress = audioHelper.getVolumeWithScale(bar.max)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bar.progress == 0) {
|
||||||
|
binding.volumeImageView.setImageResource(
|
||||||
|
when {
|
||||||
|
distance > 0 -> R.drawable.ic_volume_up
|
||||||
|
else -> R.drawable.ic_volume_off
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
bar.incrementProgressBy(distance.toInt() / 3)
|
||||||
|
audioHelper.setVolumeWithScale(bar.progress, bar.max)
|
||||||
|
|
||||||
|
binding.volumeTextView.text = "${bar.progress.normalize(0, bar.max, 0, 100)}"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import com.github.libretube.enums.ShareObjectType
|
|||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
import com.github.libretube.extensions.formatShort
|
import com.github.libretube.extensions.formatShort
|
||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
|
import com.github.libretube.helpers.ImageHelper
|
||||||
import com.github.libretube.obj.ChannelTabs
|
import com.github.libretube.obj.ChannelTabs
|
||||||
import com.github.libretube.obj.ShareData
|
import com.github.libretube.obj.ShareData
|
||||||
import com.github.libretube.ui.adapters.SearchAdapter
|
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.base.BaseFragment
|
||||||
import com.github.libretube.ui.dialogs.ShareDialog
|
import com.github.libretube.ui.dialogs.ShareDialog
|
||||||
import com.github.libretube.ui.extensions.setupSubscriptionButton
|
import com.github.libretube.ui.extensions.setupSubscriptionButton
|
||||||
import com.github.libretube.helpers.ImageHelper
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
@ -19,13 +19,13 @@ import com.github.libretube.db.DatabaseHolder.Companion.Database
|
|||||||
import com.github.libretube.db.obj.DownloadWithItems
|
import com.github.libretube.db.obj.DownloadWithItems
|
||||||
import com.github.libretube.extensions.awaitQuery
|
import com.github.libretube.extensions.awaitQuery
|
||||||
import com.github.libretube.extensions.formatAsFileSize
|
import com.github.libretube.extensions.formatAsFileSize
|
||||||
|
import com.github.libretube.helpers.DownloadHelper
|
||||||
import com.github.libretube.obj.DownloadStatus
|
import com.github.libretube.obj.DownloadStatus
|
||||||
import com.github.libretube.receivers.DownloadReceiver
|
import com.github.libretube.receivers.DownloadReceiver
|
||||||
import com.github.libretube.services.DownloadService
|
import com.github.libretube.services.DownloadService
|
||||||
import com.github.libretube.ui.adapters.DownloadsAdapter
|
import com.github.libretube.ui.adapters.DownloadsAdapter
|
||||||
import com.github.libretube.ui.base.BaseFragment
|
import com.github.libretube.ui.base.BaseFragment
|
||||||
import com.github.libretube.ui.viewholders.DownloadsViewHolder
|
import com.github.libretube.ui.viewholders.DownloadsViewHolder
|
||||||
import com.github.libretube.helpers.DownloadHelper
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
|
@ -18,11 +18,11 @@ import com.github.libretube.databinding.FragmentHomeBinding
|
|||||||
import com.github.libretube.db.DatabaseHolder
|
import com.github.libretube.db.DatabaseHolder
|
||||||
import com.github.libretube.extensions.awaitQuery
|
import com.github.libretube.extensions.awaitQuery
|
||||||
import com.github.libretube.extensions.toastFromMainThread
|
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.PlaylistBookmarkAdapter
|
||||||
import com.github.libretube.ui.adapters.PlaylistsAdapter
|
import com.github.libretube.ui.adapters.PlaylistsAdapter
|
||||||
import com.github.libretube.ui.adapters.VideosAdapter
|
import com.github.libretube.ui.adapters.VideosAdapter
|
||||||
import com.github.libretube.ui.base.BaseFragment
|
import com.github.libretube.ui.base.BaseFragment
|
||||||
import com.github.libretube.helpers.LocaleHelper
|
|
||||||
import kotlinx.coroutines.CancellationException
|
import kotlinx.coroutines.CancellationException
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -21,13 +21,13 @@ import com.github.libretube.db.DatabaseHolder
|
|||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
import com.github.libretube.extensions.awaitQuery
|
import com.github.libretube.extensions.awaitQuery
|
||||||
import com.github.libretube.extensions.dpToPx
|
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.PlaylistBookmarkAdapter
|
||||||
import com.github.libretube.ui.adapters.PlaylistsAdapter
|
import com.github.libretube.ui.adapters.PlaylistsAdapter
|
||||||
import com.github.libretube.ui.base.BaseFragment
|
import com.github.libretube.ui.base.BaseFragment
|
||||||
import com.github.libretube.ui.dialogs.CreatePlaylistDialog
|
import com.github.libretube.ui.dialogs.CreatePlaylistDialog
|
||||||
import com.github.libretube.ui.models.PlayerViewModel
|
import com.github.libretube.ui.models.PlayerViewModel
|
||||||
import com.github.libretube.helpers.NavBarHelper
|
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
|
||||||
|
|
||||||
class LibraryFragment : BaseFragment() {
|
class LibraryFragment : BaseFragment() {
|
||||||
|
|
||||||
|
@ -67,6 +67,13 @@ import com.github.libretube.extensions.query
|
|||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
import com.github.libretube.extensions.toStreamItem
|
import com.github.libretube.extensions.toStreamItem
|
||||||
import com.github.libretube.extensions.updateParameters
|
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.ShareData
|
||||||
import com.github.libretube.obj.VideoResolution
|
import com.github.libretube.obj.VideoResolution
|
||||||
import com.github.libretube.services.BackgroundMode
|
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.setAspectRatio
|
||||||
import com.github.libretube.ui.extensions.setupSubscriptionButton
|
import com.github.libretube.ui.extensions.setupSubscriptionButton
|
||||||
import com.github.libretube.ui.interfaces.OnlinePlayerOptions
|
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.CommentsViewModel
|
||||||
import com.github.libretube.ui.models.PlayerViewModel
|
import com.github.libretube.ui.models.PlayerViewModel
|
||||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||||
import com.github.libretube.ui.sheets.CommentsSheet
|
import com.github.libretube.ui.sheets.CommentsSheet
|
||||||
import com.github.libretube.ui.sheets.PlayingQueueSheet
|
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.DataSaverMode
|
||||||
import com.github.libretube.util.HtmlParser
|
import com.github.libretube.util.HtmlParser
|
||||||
import com.github.libretube.helpers.ImageHelper
|
|
||||||
import com.github.libretube.util.LinkHandler
|
import com.github.libretube.util.LinkHandler
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
|
||||||
import com.github.libretube.util.NowPlayingNotification
|
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.util.PlayingQueue
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
|
||||||
import com.github.libretube.ui.listeners.SeekbarPreviewListener
|
|
||||||
import com.github.libretube.util.TextUtils
|
import com.github.libretube.util.TextUtils
|
||||||
import com.google.android.exoplayer2.C
|
import com.google.android.exoplayer2.C
|
||||||
import com.google.android.exoplayer2.ExoPlayer
|
import com.google.android.exoplayer2.ExoPlayer
|
||||||
|
@ -26,13 +26,13 @@ import com.github.libretube.extensions.dpToPx
|
|||||||
import com.github.libretube.extensions.query
|
import com.github.libretube.extensions.query
|
||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
import com.github.libretube.extensions.toPlaylistBookmark
|
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.adapters.PlaylistAdapter
|
||||||
import com.github.libretube.ui.base.BaseFragment
|
import com.github.libretube.ui.base.BaseFragment
|
||||||
import com.github.libretube.ui.extensions.serializable
|
import com.github.libretube.ui.extensions.serializable
|
||||||
import com.github.libretube.ui.models.PlayerViewModel
|
import com.github.libretube.ui.models.PlayerViewModel
|
||||||
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
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.PlayingQueue
|
||||||
import com.github.libretube.util.TextUtils
|
import com.github.libretube.util.TextUtils
|
||||||
|
|
||||||
|
@ -16,9 +16,9 @@ import com.github.libretube.db.DatabaseHelper
|
|||||||
import com.github.libretube.db.obj.SearchHistoryItem
|
import com.github.libretube.db.obj.SearchHistoryItem
|
||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
import com.github.libretube.extensions.hideKeyboard
|
import com.github.libretube.extensions.hideKeyboard
|
||||||
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.github.libretube.ui.adapters.SearchAdapter
|
import com.github.libretube.ui.adapters.SearchAdapter
|
||||||
import com.github.libretube.ui.base.BaseFragment
|
import com.github.libretube.ui.base.BaseFragment
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import retrofit2.HttpException
|
import retrofit2.HttpException
|
||||||
|
|
||||||
|
@ -13,13 +13,13 @@ import com.github.libretube.R
|
|||||||
import com.github.libretube.api.obj.StreamItem
|
import com.github.libretube.api.obj.StreamItem
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.databinding.FragmentSubscriptionsBinding
|
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.LegacySubscriptionAdapter
|
||||||
import com.github.libretube.ui.adapters.SubscriptionChannelAdapter
|
import com.github.libretube.ui.adapters.SubscriptionChannelAdapter
|
||||||
import com.github.libretube.ui.adapters.VideosAdapter
|
import com.github.libretube.ui.adapters.VideosAdapter
|
||||||
import com.github.libretube.ui.base.BaseFragment
|
import com.github.libretube.ui.base.BaseFragment
|
||||||
import com.github.libretube.ui.models.SubscriptionsViewModel
|
import com.github.libretube.ui.models.SubscriptionsViewModel
|
||||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
|
||||||
|
|
||||||
class SubscriptionsFragment : BaseFragment() {
|
class SubscriptionsFragment : BaseFragment() {
|
||||||
private lateinit var binding: FragmentSubscriptionsBinding
|
private lateinit var binding: FragmentSubscriptionsBinding
|
||||||
|
@ -12,10 +12,10 @@ import com.github.libretube.R
|
|||||||
import com.github.libretube.api.RetrofitInstance
|
import com.github.libretube.api.RetrofitInstance
|
||||||
import com.github.libretube.databinding.FragmentTrendsBinding
|
import com.github.libretube.databinding.FragmentTrendsBinding
|
||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
|
import com.github.libretube.helpers.LocaleHelper
|
||||||
import com.github.libretube.ui.activities.SettingsActivity
|
import com.github.libretube.ui.activities.SettingsActivity
|
||||||
import com.github.libretube.ui.adapters.VideosAdapter
|
import com.github.libretube.ui.adapters.VideosAdapter
|
||||||
import com.github.libretube.ui.base.BaseFragment
|
import com.github.libretube.ui.base.BaseFragment
|
||||||
import com.github.libretube.helpers.LocaleHelper
|
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import retrofit2.HttpException
|
import retrofit2.HttpException
|
||||||
|
@ -19,12 +19,12 @@ import com.github.libretube.db.DatabaseHolder.Companion.Database
|
|||||||
import com.github.libretube.extensions.awaitQuery
|
import com.github.libretube.extensions.awaitQuery
|
||||||
import com.github.libretube.extensions.dpToPx
|
import com.github.libretube.extensions.dpToPx
|
||||||
import com.github.libretube.extensions.query
|
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.adapters.WatchHistoryAdapter
|
||||||
import com.github.libretube.ui.base.BaseFragment
|
import com.github.libretube.ui.base.BaseFragment
|
||||||
import com.github.libretube.ui.models.PlayerViewModel
|
import com.github.libretube.ui.models.PlayerViewModel
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
|
||||||
import com.github.libretube.util.PlayingQueue
|
import com.github.libretube.util.PlayingQueue
|
||||||
import com.github.libretube.helpers.ProxyHelper
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
class WatchHistoryFragment : BaseFragment() {
|
class WatchHistoryFragment : BaseFragment() {
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.github.libretube.ui.interfaces
|
||||||
|
|
||||||
|
interface AudioPlayerOptions {
|
||||||
|
|
||||||
|
fun onSingleTap()
|
||||||
|
|
||||||
|
fun onLongTap()
|
||||||
|
|
||||||
|
fun onSwipe(distanceY: Float)
|
||||||
|
|
||||||
|
fun onSwipeEnd()
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
package com.github.libretube.ui.listeners
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
|
import android.view.GestureDetector
|
||||||
|
import android.view.MotionEvent
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewConfiguration
|
||||||
|
import androidx.core.os.postDelayed
|
||||||
|
import com.github.libretube.ui.interfaces.AudioPlayerOptions
|
||||||
|
import kotlin.math.abs
|
||||||
|
|
||||||
|
class AudioPlayerThumbnailListener(context: Context, private val listener: AudioPlayerOptions) :
|
||||||
|
View.OnTouchListener {
|
||||||
|
|
||||||
|
private val handler = Handler(Looper.getMainLooper())
|
||||||
|
private val gestureDetector = GestureDetector(context, GestureListener(), handler)
|
||||||
|
private var isMoving = false
|
||||||
|
|
||||||
|
@SuppressLint("ClickableViewAccessibility")
|
||||||
|
override fun onTouch(v: View, event: MotionEvent): Boolean {
|
||||||
|
if (event.action == MotionEvent.ACTION_UP && isMoving) {
|
||||||
|
isMoving = false
|
||||||
|
listener.onSwipeEnd()
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
runCatching {
|
||||||
|
gestureDetector.onTouchEvent(event)
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
private inner class GestureListener : GestureDetector.SimpleOnGestureListener() {
|
||||||
|
|
||||||
|
override fun onDown(e: MotionEvent): Boolean {
|
||||||
|
if (isMoving) return false
|
||||||
|
|
||||||
|
handler.postDelayed(ACTION_INTERVAL, SINGLE_PRESS_TOKEN) {
|
||||||
|
if (!isMoving) listener.onSingleTap()
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onScroll(
|
||||||
|
e1: MotionEvent,
|
||||||
|
e2: MotionEvent,
|
||||||
|
distanceX: Float,
|
||||||
|
distanceY: Float
|
||||||
|
): Boolean {
|
||||||
|
val insideThreshHold = abs(e2.y - e1.y) <= MOVEMENT_THRESHOLD
|
||||||
|
|
||||||
|
// If the movement is inside threshold or scroll is horizontal then return false
|
||||||
|
if (!isMoving && (insideThreshHold || abs(distanceX) > abs(distanceY))) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
isMoving = true
|
||||||
|
|
||||||
|
listener.onSwipe(distanceY)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLongPress(e: MotionEvent) {
|
||||||
|
// remove to single press action from the queue
|
||||||
|
handler.removeCallbacksAndMessages(SINGLE_PRESS_TOKEN)
|
||||||
|
|
||||||
|
listener.onLongTap()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val MOVEMENT_THRESHOLD = 10
|
||||||
|
private val ACTION_INTERVAL = ViewConfiguration.getLongPressTimeout().toLong()
|
||||||
|
private const val SINGLE_PRESS_TOKEN = "singlePress"
|
||||||
|
}
|
||||||
|
}
|
@ -12,10 +12,10 @@ import android.view.ScaleGestureDetector
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.core.os.postDelayed
|
import androidx.core.os.postDelayed
|
||||||
|
import com.github.libretube.helpers.PlayerHelper
|
||||||
import com.github.libretube.ui.base.BaseActivity
|
import com.github.libretube.ui.base.BaseActivity
|
||||||
import com.github.libretube.ui.interfaces.PlayerGestureOptions
|
import com.github.libretube.ui.interfaces.PlayerGestureOptions
|
||||||
import com.github.libretube.ui.models.PlayerViewModel
|
import com.github.libretube.ui.models.PlayerViewModel
|
||||||
import com.github.libretube.helpers.PlayerHelper
|
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
class PlayerGestureController(activity: BaseActivity, private val listener: PlayerGestureOptions) :
|
class PlayerGestureController(activity: BaseActivity, private val listener: PlayerGestureOptions) :
|
||||||
|
@ -9,8 +9,8 @@ import androidx.core.math.MathUtils
|
|||||||
import androidx.core.view.updateLayoutParams
|
import androidx.core.view.updateLayoutParams
|
||||||
import coil.request.ImageRequest
|
import coil.request.ImageRequest
|
||||||
import com.github.libretube.api.obj.PreviewFrames
|
import com.github.libretube.api.obj.PreviewFrames
|
||||||
import com.github.libretube.obj.PreviewFrame
|
|
||||||
import com.github.libretube.helpers.ImageHelper
|
import com.github.libretube.helpers.ImageHelper
|
||||||
|
import com.github.libretube.obj.PreviewFrame
|
||||||
import com.google.android.exoplayer2.ui.TimeBar
|
import com.google.android.exoplayer2.ui.TimeBar
|
||||||
|
|
||||||
class SeekbarPreviewListener(
|
class SeekbarPreviewListener(
|
||||||
|
@ -6,9 +6,9 @@ import androidx.preference.ListPreference
|
|||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
|
||||||
import com.github.libretube.helpers.ImageHelper
|
import com.github.libretube.helpers.ImageHelper
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
|
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
|
||||||
class AdvancedSettings : BasePreferenceFragment() {
|
class AdvancedSettings : BasePreferenceFragment() {
|
||||||
|
@ -7,12 +7,12 @@ import androidx.preference.Preference
|
|||||||
import androidx.preference.SwitchPreferenceCompat
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.github.libretube.ui.adapters.IconsSheetAdapter
|
import com.github.libretube.ui.adapters.IconsSheetAdapter
|
||||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||||
import com.github.libretube.ui.dialogs.NavBarOptionsDialog
|
import com.github.libretube.ui.dialogs.NavBarOptionsDialog
|
||||||
import com.github.libretube.ui.dialogs.RequireRestartDialog
|
import com.github.libretube.ui.dialogs.RequireRestartDialog
|
||||||
import com.github.libretube.ui.sheets.IconsBottomSheet
|
import com.github.libretube.ui.sheets.IconsBottomSheet
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
|
||||||
|
|
||||||
class AppearanceSettings : BasePreferenceFragment() {
|
class AppearanceSettings : BasePreferenceFragment() {
|
||||||
override val titleResourceId: Int = R.string.appearance
|
override val titleResourceId: Int = R.string.appearance
|
||||||
|
@ -7,11 +7,11 @@ import androidx.activity.result.contract.ActivityResultContracts
|
|||||||
import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
|
import androidx.activity.result.contract.ActivityResultContracts.CreateDocument
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import com.github.libretube.R
|
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.obj.BackupFile
|
||||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||||
import com.github.libretube.ui.dialogs.BackupDialog
|
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.LocalDateTime
|
||||||
import java.time.format.DateTimeFormatter
|
import java.time.format.DateTimeFormatter
|
||||||
|
|
||||||
|
@ -7,10 +7,10 @@ import androidx.preference.Preference
|
|||||||
import androidx.preference.SwitchPreferenceCompat
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
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.LocaleHelper
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
|
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||||
|
import com.github.libretube.ui.dialogs.RequireRestartDialog
|
||||||
|
|
||||||
class GeneralSettings : BasePreferenceFragment() {
|
class GeneralSettings : BasePreferenceFragment() {
|
||||||
override val titleResourceId: Int = R.string.general
|
override val titleResourceId: Int = R.string.general
|
||||||
|
@ -15,12 +15,12 @@ import com.github.libretube.constants.PreferenceKeys
|
|||||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||||
import com.github.libretube.extensions.awaitQuery
|
import com.github.libretube.extensions.awaitQuery
|
||||||
import com.github.libretube.extensions.toastFromMainThread
|
import com.github.libretube.extensions.toastFromMainThread
|
||||||
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||||
import com.github.libretube.ui.dialogs.CustomInstanceDialog
|
import com.github.libretube.ui.dialogs.CustomInstanceDialog
|
||||||
import com.github.libretube.ui.dialogs.DeleteAccountDialog
|
import com.github.libretube.ui.dialogs.DeleteAccountDialog
|
||||||
import com.github.libretube.ui.dialogs.LoginDialog
|
import com.github.libretube.ui.dialogs.LoginDialog
|
||||||
import com.github.libretube.ui.dialogs.LogoutDialog
|
import com.github.libretube.ui.dialogs.LogoutDialog
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
|
||||||
|
|
||||||
class InstanceSettings : BasePreferenceFragment() {
|
class InstanceSettings : BasePreferenceFragment() {
|
||||||
override val titleResourceId: Int = R.string.instance
|
override val titleResourceId: Int = R.string.instance
|
||||||
|
@ -6,9 +6,9 @@ import androidx.preference.SwitchPreferenceCompat
|
|||||||
import androidx.work.ExistingPeriodicWorkPolicy
|
import androidx.work.ExistingPeriodicWorkPolicy
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
|
import com.github.libretube.helpers.NotificationHelper
|
||||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||||
import com.github.libretube.ui.views.TimePickerPreference
|
import com.github.libretube.ui.views.TimePickerPreference
|
||||||
import com.github.libretube.helpers.NotificationHelper
|
|
||||||
|
|
||||||
class NotificationSettings : BasePreferenceFragment() {
|
class NotificationSettings : BasePreferenceFragment() {
|
||||||
override val titleResourceId: Int = R.string.notifications
|
override val titleResourceId: Int = R.string.notifications
|
||||||
|
@ -12,9 +12,9 @@ import androidx.preference.Preference
|
|||||||
import androidx.preference.SwitchPreferenceCompat
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.ui.base.BasePreferenceFragment
|
|
||||||
import com.github.libretube.helpers.LocaleHelper
|
import com.github.libretube.helpers.LocaleHelper
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
|
import com.github.libretube.ui.base.BasePreferenceFragment
|
||||||
|
|
||||||
class PlayerSettings : BasePreferenceFragment() {
|
class PlayerSettings : BasePreferenceFragment() {
|
||||||
override val titleResourceId: Int = R.string.player
|
override val titleResourceId: Int = R.string.player
|
||||||
|
@ -7,10 +7,10 @@ import com.github.libretube.api.RetrofitInstance
|
|||||||
import com.github.libretube.enums.ShareObjectType
|
import com.github.libretube.enums.ShareObjectType
|
||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
import com.github.libretube.extensions.toID
|
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.BackgroundHelper
|
||||||
import com.github.libretube.helpers.NavigationHelper
|
import com.github.libretube.helpers.NavigationHelper
|
||||||
|
import com.github.libretube.obj.ShareData
|
||||||
|
import com.github.libretube.ui.dialogs.ShareDialog
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,11 +12,11 @@ import com.github.libretube.extensions.query
|
|||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
import com.github.libretube.extensions.toPlaylistBookmark
|
import com.github.libretube.extensions.toPlaylistBookmark
|
||||||
import com.github.libretube.extensions.toastFromMainThread
|
import com.github.libretube.extensions.toastFromMainThread
|
||||||
|
import com.github.libretube.helpers.BackgroundHelper
|
||||||
import com.github.libretube.obj.ShareData
|
import com.github.libretube.obj.ShareData
|
||||||
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
||||||
import com.github.libretube.ui.dialogs.RenamePlaylistDialog
|
import com.github.libretube.ui.dialogs.RenamePlaylistDialog
|
||||||
import com.github.libretube.ui.dialogs.ShareDialog
|
import com.github.libretube.ui.dialogs.ShareDialog
|
||||||
import com.github.libretube.helpers.BackgroundHelper
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
@ -5,11 +5,11 @@ import com.github.libretube.R
|
|||||||
import com.github.libretube.api.RetrofitInstance
|
import com.github.libretube.api.RetrofitInstance
|
||||||
import com.github.libretube.enums.ShareObjectType
|
import com.github.libretube.enums.ShareObjectType
|
||||||
import com.github.libretube.extensions.toStreamItem
|
import com.github.libretube.extensions.toStreamItem
|
||||||
|
import com.github.libretube.helpers.BackgroundHelper
|
||||||
import com.github.libretube.obj.ShareData
|
import com.github.libretube.obj.ShareData
|
||||||
import com.github.libretube.ui.dialogs.AddToPlaylistDialog
|
import com.github.libretube.ui.dialogs.AddToPlaylistDialog
|
||||||
import com.github.libretube.ui.dialogs.DownloadDialog
|
import com.github.libretube.ui.dialogs.DownloadDialog
|
||||||
import com.github.libretube.ui.dialogs.ShareDialog
|
import com.github.libretube.ui.dialogs.ShareDialog
|
||||||
import com.github.libretube.helpers.BackgroundHelper
|
|
||||||
import com.github.libretube.util.PlayingQueue
|
import com.github.libretube.util.PlayingQueue
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
@ -7,8 +7,8 @@ import android.os.Process
|
|||||||
import androidx.core.os.postDelayed
|
import androidx.core.os.postDelayed
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.ui.activities.MainActivity
|
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
|
import com.github.libretube.ui.activities.MainActivity
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
|
|
||||||
object SleepTimer {
|
object SleepTimer {
|
||||||
|
@ -23,19 +23,19 @@ import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
|
|||||||
import com.github.libretube.databinding.PlayerGestureControlsViewBinding
|
import com.github.libretube.databinding.PlayerGestureControlsViewBinding
|
||||||
import com.github.libretube.extensions.dpToPx
|
import com.github.libretube.extensions.dpToPx
|
||||||
import com.github.libretube.extensions.normalize
|
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.obj.BottomSheetItem
|
||||||
import com.github.libretube.ui.activities.MainActivity
|
import com.github.libretube.ui.activities.MainActivity
|
||||||
import com.github.libretube.ui.base.BaseActivity
|
import com.github.libretube.ui.base.BaseActivity
|
||||||
import com.github.libretube.ui.interfaces.OnlinePlayerOptions
|
import com.github.libretube.ui.interfaces.OnlinePlayerOptions
|
||||||
import com.github.libretube.ui.interfaces.PlayerGestureOptions
|
import com.github.libretube.ui.interfaces.PlayerGestureOptions
|
||||||
import com.github.libretube.ui.interfaces.PlayerOptions
|
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.models.PlayerViewModel
|
||||||
import com.github.libretube.ui.sheets.BaseBottomSheet
|
import com.github.libretube.ui.sheets.BaseBottomSheet
|
||||||
import com.github.libretube.ui.sheets.PlaybackOptionsSheet
|
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.github.libretube.util.PlayingQueue
|
||||||
import com.google.android.exoplayer2.ExoPlayer
|
import com.google.android.exoplayer2.ExoPlayer
|
||||||
import com.google.android.exoplayer2.Player
|
import com.google.android.exoplayer2.Player
|
||||||
|
@ -19,9 +19,9 @@ import com.github.libretube.constants.PUSH_CHANNEL_ID
|
|||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.github.libretube.ui.activities.MainActivity
|
import com.github.libretube.ui.activities.MainActivity
|
||||||
import com.github.libretube.ui.views.TimePickerPreference
|
import com.github.libretube.ui.views.TimePickerPreference
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
|
||||||
import java.time.LocalTime
|
import java.time.LocalTime
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
|
||||||
|
@ -23,6 +23,41 @@
|
|||||||
app:shapeAppearanceOverlay="@style/ShapeAppearance.Material3.Corner.Small"
|
app:shapeAppearanceOverlay="@style/ShapeAppearance.Material3.Corner.Small"
|
||||||
tools:src="@tools:sample/backgrounds/scenic" />
|
tools:src="@tools:sample/backgrounds/scenic" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/volumeControls"
|
||||||
|
android:layout_width="42dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:background="@drawable/controls_layout_bg"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:ignore="RtlHardcoded">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/volume_textView"
|
||||||
|
style="@style/SwipeControlString"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
app:autoSizeTextType="uniform" />
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/volume_progressBar"
|
||||||
|
style="@android:style/Widget.ProgressBar.Horizontal"
|
||||||
|
android:layout_width="7dp"
|
||||||
|
android:layout_height="100dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginVertical="4dp"
|
||||||
|
android:progressDrawable="@drawable/vertical_progressbar" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/volume_imageView"
|
||||||
|
android:layout_width="24dp"
|
||||||
|
android:layout_height="24dp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:contentDescription="@string/volume"
|
||||||
|
android:src="@drawable/ic_volume_up" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<ProgressBar
|
<ProgressBar
|
||||||
android:id="@+id/progress"
|
android:id="@+id/progress"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user