diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e77abb8c6..a236cc653 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -52,7 +52,9 @@ android:windowSoftInputMode="adjustPan"> + + @@ -70,7 +72,9 @@ android:windowSoftInputMode="adjustPan"> + + @@ -88,7 +92,9 @@ android:windowSoftInputMode="adjustPan"> + + @@ -106,7 +112,9 @@ android:windowSoftInputMode="adjustPan"> + + @@ -142,7 +150,9 @@ android:windowSoftInputMode="adjustPan"> + + @@ -160,7 +170,9 @@ android:windowSoftInputMode="adjustPan"> + + @@ -178,7 +190,9 @@ android:windowSoftInputMode="adjustPan"> + + diff --git a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt index 80f738b02..38b41d2a0 100644 --- a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt +++ b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt @@ -77,6 +77,7 @@ object PreferenceKeys { const val PICTURE_IN_PICTURE = "picture_in_picture" const val PLAYER_RESIZE_MODE = "player_resize_mode" const val SB_SKIP_MANUALLY = "sb_skip_manually_key" + const val LIMIT_HLS = "limit_hls" /** * Background mode @@ -101,8 +102,6 @@ object PreferenceKeys { const val CLEAR_WATCH_HISTORY = "clear_watch_history" const val CLEAR_WATCH_POSITIONS = "clear_watch_positions" const val SHARE_WITH_TIME_CODE = "share_with_time_code" - const val BACKUP_SETTINGS = "backup_settings" - const val RESTORE_SETTINGS = "restore_settings" /** * History diff --git a/app/src/main/java/com/github/libretube/extensions/GetStyledSnackBar.kt b/app/src/main/java/com/github/libretube/extensions/GetStyledSnackBar.kt deleted file mode 100644 index 1bd6d4b58..000000000 --- a/app/src/main/java/com/github/libretube/extensions/GetStyledSnackBar.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.github.libretube.extensions - -import android.view.View -import android.widget.FrameLayout -import androidx.core.content.res.ResourcesCompat -import com.github.libretube.R -import com.google.android.material.snackbar.Snackbar - -fun View.getStyledSnackBar(text: Int): Snackbar { - val snackBar = Snackbar.make(this, text, Snackbar.LENGTH_SHORT) - snackBar.setTextMaxLines(3) - snackBar.animationMode = Snackbar.ANIMATION_MODE_SLIDE - - val params = snackBar.view.layoutParams as FrameLayout.LayoutParams - val sideMargin = 70 - - params.setMargins( - sideMargin, - params.topMargin, - sideMargin, - sideMargin + 50 - ) - snackBar.view.layoutParams = params - - snackBar.view.background = ResourcesCompat.getDrawable(resources, R.drawable.snackbar_shape, null) - return snackBar -} 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 457692b14..f7473b96f 100644 --- a/app/src/main/java/com/github/libretube/services/BackgroundMode.kt +++ b/app/src/main/java/com/github/libretube/services/BackgroundMode.kt @@ -29,6 +29,7 @@ import com.github.libretube.util.PreferenceHelper import com.google.android.exoplayer2.C import com.google.android.exoplayer2.ExoPlayer import com.google.android.exoplayer2.MediaItem +import com.google.android.exoplayer2.PlaybackException import com.google.android.exoplayer2.Player import com.google.android.exoplayer2.audio.AudioAttributes import kotlinx.coroutines.CoroutineScope @@ -213,7 +214,7 @@ class BackgroundMode : Service() { * Plays the next video when the current one ended */ player?.addListener(object : Player.Listener { - override fun onPlaybackStateChanged(@Player.State state: Int) { + override fun onPlaybackStateChanged(state: Int) { when (state) { Player.STATE_ENDED -> { if (autoplay) playNextVideo() @@ -221,6 +222,8 @@ class BackgroundMode : Service() { Player.STATE_IDLE -> { onDestroy() } + Player.STATE_BUFFERING -> {} + Player.STATE_READY -> {} PlaybackState.STATE_PAUSED -> { query { DatabaseHelper.saveWatchPosition( @@ -229,8 +232,17 @@ class BackgroundMode : Service() { ) } } - Player.STATE_BUFFERING -> {} - Player.STATE_READY -> {} + } + } + + override fun onPlayerError(error: PlaybackException) { + // show a toast on errors + Handler(Looper.getMainLooper()).post { + Toast.makeText( + this@BackgroundMode.applicationContext, + error.localizedMessage, + Toast.LENGTH_SHORT + ).show() } } }) diff --git a/app/src/main/java/com/github/libretube/ui/activities/AboutActivity.kt b/app/src/main/java/com/github/libretube/ui/activities/AboutActivity.kt index ebd4e9198..bc4cf4b13 100644 --- a/app/src/main/java/com/github/libretube/ui/activities/AboutActivity.kt +++ b/app/src/main/java/com/github/libretube/ui/activities/AboutActivity.kt @@ -16,7 +16,6 @@ import com.github.libretube.constants.PIPED_GITHUB_URL import com.github.libretube.constants.WEBLATE_URL import com.github.libretube.constants.WEBSITE_URL import com.github.libretube.databinding.ActivityAboutBinding -import com.github.libretube.extensions.getStyledSnackBar import com.github.libretube.ui.base.BaseActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar @@ -103,12 +102,16 @@ class AboutActivity : BaseActivity() { val clip = ClipData.newPlainText(getString(R.string.copied), href) clipboard.setPrimaryClip(clip) // show the snackBar with open action - val snackBar = binding.root.getStyledSnackBar(R.string.copied_to_clipboard) - snackBar.setAction(R.string.open_copied) { - openLinkFromHref(href) - } - snackBar.animationMode = Snackbar.ANIMATION_MODE_FADE - snackBar.show() + Snackbar.make( + binding.root, + R.string.copied_to_clipboard, + Snackbar.LENGTH_LONG + ) + .setAction(R.string.open_copied) { + openLinkFromHref(href) + } + .setAnimationMode(Snackbar.ANIMATION_MODE_FADE) + .show() } private fun showLicense() { 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 99a7f3af2..24092e33b 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 @@ -106,20 +106,15 @@ class MainActivity : BaseActivity() { binding.bottomNav.setOnItemSelectedListener { // clear backstack if it's the start fragment if (startFragmentId == it.itemId) navController.backQueue.clear() - // set menu item on click listeners - removeSearchFocus() - when (it.itemId) { - R.id.homeFragment -> { - navController.navigate(R.id.homeFragment) - } - R.id.subscriptionsFragment -> { - binding.bottomNav.removeBadge(R.id.subscriptionsFragment) - navController.navigate(R.id.subscriptionsFragment) - } - R.id.libraryFragment -> { - navController.navigate(R.id.libraryFragment) - } + + if (it.itemId == R.id.subscriptionsFragment) { + binding.bottomNav.removeBadge(R.id.subscriptionsFragment) } + + removeSearchFocus() + + // navigate to the selected fragment + navController.navigate(it.itemId) false } 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 95233f2b6..c41e129ae 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 @@ -5,11 +5,11 @@ import android.os.Bundle import androidx.activity.OnBackPressedCallback import com.github.libretube.R import com.github.libretube.databinding.ActivityNointernetBinding -import com.github.libretube.extensions.getStyledSnackBar import com.github.libretube.ui.base.BaseActivity import com.github.libretube.ui.fragments.DownloadsFragment +import com.github.libretube.util.NavigationHelper import com.github.libretube.util.NetworkHelper -import com.github.libretube.util.ThemeHelper +import com.google.android.material.snackbar.Snackbar class NoInternetActivity : BaseActivity() { private lateinit var binding: ActivityNointernetBinding @@ -21,9 +21,9 @@ class NoInternetActivity : BaseActivity() { // retry button binding.retryButton.setOnClickListener { if (NetworkHelper.isNetworkAvailable(this)) { - ThemeHelper.restartMainActivity(this) + NavigationHelper.restartMainActivity(this) } else { - binding.root.getStyledSnackBar(R.string.turnInternetOn).show() + Snackbar.make(binding.root, R.string.turnInternetOn, Snackbar.LENGTH_LONG).show() } } binding.noInternetSettingsImageView.setOnClickListener { 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 46ff87634..2b9efd799 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 @@ -9,7 +9,7 @@ import com.github.libretube.R import com.github.libretube.constants.IntentData import com.github.libretube.extensions.TAG import com.github.libretube.ui.base.BaseActivity -import com.github.libretube.util.ThemeHelper +import com.github.libretube.util.NavigationHelper class RouterActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -23,7 +23,7 @@ class RouterActivity : BaseActivity() { handleSendText(uri!!) } else { // start app as normal if URI not in host list - ThemeHelper.restartMainActivity(this) + NavigationHelper.restartMainActivity(this) } } 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 1634561ac..1bafddb5b 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 @@ -11,6 +11,7 @@ import com.github.libretube.databinding.DownloadedMediaRowBinding import com.github.libretube.obj.DownloadedFile import com.github.libretube.ui.activities.OfflinePlayerActivity import com.github.libretube.ui.viewholders.DownloadsViewHolder +import com.github.libretube.util.DownloadHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder import java.io.File @@ -49,15 +50,19 @@ class DownloadsAdapter( ) { _, index -> when (index) { 0 -> { - val downloadDir = File( - root.context.getExternalFilesDir(null), - "video" - ) + val audioDir = DownloadHelper.getAudioDir(root.context) + val videoDir = DownloadHelper.getVideoDir(root.context) - File( - downloadDir, - file.name - ).delete() + listOf(audioDir, videoDir).forEach { + val f = File(it, file.name) + if (f.exists()) { + try { + f.delete() + } catch (e: Exception) { + e.printStackTrace() + } + } + } files.removeAt(position) notifyItemRemoved(position) diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/RequireRestartDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/RequireRestartDialog.kt index 26ef14fc6..51b952828 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/RequireRestartDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/RequireRestartDialog.kt @@ -4,7 +4,7 @@ import android.app.Dialog import android.os.Bundle import androidx.fragment.app.DialogFragment import com.github.libretube.R -import com.github.libretube.util.ThemeHelper +import com.github.libretube.util.NavigationHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder class RequireRestartDialog : DialogFragment() { @@ -15,7 +15,7 @@ class RequireRestartDialog : DialogFragment() { .setMessage(R.string.require_restart_message) .setPositiveButton(R.string.okay) { _, _ -> activity?.recreate() - ThemeHelper.restartMainActivity(requireContext()) + NavigationHelper.restartMainActivity(requireContext()) } .setNegativeButton(R.string.cancel, null) .show() 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 b56c5e99d..f657fb860 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 @@ -16,13 +16,13 @@ import com.github.libretube.api.RetrofitInstance import com.github.libretube.constants.PreferenceKeys import com.github.libretube.databinding.FragmentHomeBinding import com.github.libretube.extensions.TAG -import com.github.libretube.extensions.getStyledSnackBar import com.github.libretube.ui.activities.SettingsActivity import com.github.libretube.ui.adapters.ChannelAdapter import com.github.libretube.ui.adapters.TrendingAdapter import com.github.libretube.ui.base.BaseFragment import com.github.libretube.util.LocaleHelper import com.github.libretube.util.PreferenceHelper +import com.google.android.material.snackbar.Snackbar import retrofit2.HttpException import java.io.IOException @@ -86,8 +86,10 @@ class HomeFragment : BaseFragment() { // show a [SnackBar] if there are no trending videos available if (response.isEmpty()) { - binding.root.getStyledSnackBar( - R.string.change_region + Snackbar.make( + binding.root, + R.string.change_region, + Snackbar.LENGTH_LONG ) .setAction( R.string.settings 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 5f9dc91ed..6b1053043 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 @@ -1358,6 +1358,18 @@ class PlayerFragment : BaseFragment() { // control for the track sources like subtitles and audio source trackSelector = DefaultTrackSelector(requireContext()) + // limit hls to full hd + if ( + PreferenceHelper.getBoolean( + PreferenceKeys.LIMIT_HLS, + false + ) + ) { + val newParams = trackSelector.buildUponParameters() + .setMaxVideoSize(1920, 1080) + trackSelector.setParameters(newParams) + } + exoPlayer = ExoPlayer.Builder(requireContext()) .setMediaSourceFactory(DefaultMediaSourceFactory(dataSourceFactory)) .setLoadControl(loadControl) 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 7be32162a..799a2d63d 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 @@ -12,6 +12,7 @@ import com.github.libretube.R import com.github.libretube.constants.PreferenceKeys import com.github.libretube.ui.activities.SettingsActivity 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.util.PreferenceHelper import com.github.libretube.util.ThemeHelper @@ -59,6 +60,15 @@ class AppearanceSettings : BasePreferenceFragment() { true } + val navBarOptions = findPreference(PreferenceKeys.NAVBAR_ITEMS) + navBarOptions?.setOnPreferenceClickListener { + NavBarOptionsDialog().show( + childFragmentManager, + null + ) + true + } + val systemCaptionStyle = findPreference(PreferenceKeys.SYSTEM_CAPTION_STYLE) val captionSettings = findPreference(PreferenceKeys.CAPTION_SETTINGS) 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 90810156b..5f0d07849 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 @@ -9,7 +9,6 @@ import com.github.libretube.R import com.github.libretube.constants.PreferenceKeys import com.github.libretube.ui.activities.SettingsActivity 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.util.LocaleHelper import com.github.libretube.util.PreferenceHelper @@ -39,15 +38,6 @@ class GeneralSettings : BasePreferenceFragment() { true } - val navBarOptions = findPreference(PreferenceKeys.NAVBAR_ITEMS) - navBarOptions?.setOnPreferenceClickListener { - NavBarOptionsDialog().show( - childFragmentManager, - null - ) - true - } - val breakReminder = findPreference(PreferenceKeys.BREAK_REMINDER_TOGGLE) val breakReminderTime = findPreference(PreferenceKeys.BREAK_REMINDER) 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 7696e8fe1..0c34906fb 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 @@ -165,12 +165,14 @@ class InstanceSettings : BasePreferenceFragment() { // fetch official public instances val response = try { - RetrofitInstance.externalApi.getInstances() + RetrofitInstance.externalApi.getInstances().toMutableList() } catch (e: Exception) { e.printStackTrace() - emptyList() + mutableListOf() } + response.sortBy { it.name } + response.forEach { if (it.name != null && it.api_url != null) { instanceNames += it.name!! diff --git a/app/src/main/java/com/github/libretube/ui/preferences/MainSettings.kt b/app/src/main/java/com/github/libretube/ui/preferences/MainSettings.kt index 141fc5999..e24018651 100644 --- a/app/src/main/java/com/github/libretube/ui/preferences/MainSettings.kt +++ b/app/src/main/java/com/github/libretube/ui/preferences/MainSettings.kt @@ -6,11 +6,11 @@ import androidx.preference.Preference import com.github.libretube.BuildConfig import com.github.libretube.R import com.github.libretube.api.RetrofitInstance -import com.github.libretube.extensions.getStyledSnackBar import com.github.libretube.ui.activities.SettingsActivity import com.github.libretube.ui.base.BasePreferenceFragment import com.github.libretube.ui.dialogs.UpdateDialog import com.github.libretube.util.NetworkHelper +import com.google.android.material.snackbar.Snackbar import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -97,8 +97,14 @@ class MainSettings : BasePreferenceFragment() { update?.setOnPreferenceClickListener { CoroutineScope(Dispatchers.IO).launch { if (!NetworkHelper.isNetworkAvailable(requireContext())) { - (activity as? SettingsActivity)?.binding?.root?.getStyledSnackBar(R.string.unknown_error) - ?.show() + (activity as? SettingsActivity)?.binding?.let { + Snackbar.make( + it.root, + R.string.unknown_error, + Snackbar.LENGTH_SHORT + ) + .show() + } return@launch } // check for update @@ -109,8 +115,14 @@ class MainSettings : BasePreferenceFragment() { } if (updateInfo.name == null) { // request failed - (activity as? SettingsActivity)?.binding?.root?.getStyledSnackBar(R.string.unknown_error) - ?.show() + (activity as? SettingsActivity)?.binding?.let { + Snackbar.make( + it.root, + R.string.unknown_error, + Snackbar.LENGTH_SHORT + ) + .show() + } } else if (BuildConfig.VERSION_NAME != updateInfo.name) { // show the UpdateAvailableDialog if there's an update available val updateAvailableDialog = UpdateDialog(updateInfo) @@ -120,8 +132,14 @@ class MainSettings : BasePreferenceFragment() { ) } else { // otherwise show the no update available snackBar - (activity as? SettingsActivity)?.binding?.root?.getStyledSnackBar(R.string.app_uptodate) - ?.show() + (activity as? SettingsActivity)?.binding?.let { + Snackbar.make( + it.root, + R.string.unknown_error, + Snackbar.LENGTH_SHORT + ) + .show() + } } } true diff --git a/app/src/main/java/com/github/libretube/util/NavBarHelper.kt b/app/src/main/java/com/github/libretube/util/NavBarHelper.kt index f29aae643..6190982fa 100644 --- a/app/src/main/java/com/github/libretube/util/NavBarHelper.kt +++ b/app/src/main/java/com/github/libretube/util/NavBarHelper.kt @@ -37,7 +37,8 @@ object NavBarHelper { defaultNavBarItems.add( NavBarItem( it.itemId, - it.title.toString() + it.title.toString(), + it.isEnabled ) ) } @@ -90,6 +91,6 @@ object NavBarHelper { ).icon = menuItem.icon } } - return navBarItems[0].id + return navBarItems.filter { it.isEnabled }[0].id } } diff --git a/app/src/main/java/com/github/libretube/util/NavigationHelper.kt b/app/src/main/java/com/github/libretube/util/NavigationHelper.kt index 125ac01c2..4de4d8c2a 100644 --- a/app/src/main/java/com/github/libretube/util/NavigationHelper.kt +++ b/app/src/main/java/com/github/libretube/util/NavigationHelper.kt @@ -1,6 +1,9 @@ package com.github.libretube.util +import android.app.NotificationManager import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.core.os.bundleOf @@ -66,4 +69,21 @@ object NavigationHelper { activity.navController.navigate(R.id.playlistFragment, bundle) } } + + /** + * Needed due to different MainActivity Aliases because of the app icons + */ + fun restartMainActivity(context: Context) { + // kill player notification + val nManager = context + .getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager + nManager.cancelAll() + // start a new Intent of the app + val pm: PackageManager = context.packageManager + val intent = pm.getLaunchIntentForPackage(context.packageName) + intent?.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK + context.startActivity(intent) + // kill the old application + android.os.Process.killProcess(android.os.Process.myPid()) + } } diff --git a/app/src/main/java/com/github/libretube/util/ThemeHelper.kt b/app/src/main/java/com/github/libretube/util/ThemeHelper.kt index 72387f93b..524ffabc6 100644 --- a/app/src/main/java/com/github/libretube/util/ThemeHelper.kt +++ b/app/src/main/java/com/github/libretube/util/ThemeHelper.kt @@ -1,10 +1,8 @@ package com.github.libretube.util import android.app.Activity -import android.app.NotificationManager import android.content.ComponentName import android.content.Context -import android.content.Intent import android.content.pm.PackageManager import android.text.Spanned import android.util.TypedValue @@ -128,23 +126,6 @@ object ThemeHelper { ) } - /** - * Needed due to different MainActivity Aliases because of the app icons - */ - fun restartMainActivity(context: Context) { - // kill player notification - val nManager = context - .getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - nManager.cancelAll() - // start a new Intent of the app - val pm: PackageManager = context.packageManager - val intent = pm.getLaunchIntentForPackage(context.packageName) - intent?.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK - context.startActivity(intent) - // kill the old application - android.os.Process.killProcess(android.os.Process.myPid()) - } - /** * Get a color by a resource code */ diff --git a/app/src/main/res/drawable/snackbar_shape.xml b/app/src/main/res/drawable/snackbar_shape.xml deleted file mode 100644 index ca4993a53..000000000 --- a/app/src/main/res/drawable/snackbar_shape.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_navbar_options.xml b/app/src/main/res/layout/dialog_navbar_options.xml index 9c7d17286..0f8eca75f 100644 --- a/app/src/main/res/layout/dialog_navbar_options.xml +++ b/app/src/main/res/layout/dialog_navbar_options.xml @@ -2,7 +2,7 @@ + android:paddingTop="20dp"> + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index f0c681451..7c7e1d83b 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -338,4 +338,5 @@ تشغيل التالي شريط التنقل يرجى اختيار عنصر واحد على الأقل + المتصدرة يبدو أنها غير متاحة في المنطقة الحالية . الرجاء اختيار آخر في الإعداد . \ No newline at end of file diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 08018f51b..deaf5a5af 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -338,4 +338,5 @@ Növbəti oynadın Naviqasiya paneli Ən azı bir element seçin + Trend\'in cari region üçün əlçatan olmadığı görünür.Tənzimləmələrdə başqasını seçin. \ No newline at end of file diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 4463d53bc..08da48a2f 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -338,4 +338,5 @@ Přehrát jako další Navigační lišta Vyberte prosím alespoň jednu položku + Zdá se, že trendy nejsou pro aktuální oblast k dispozici. V nastavení prosím vyberte jinou. \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 679f68860..cffb8cbe6 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -98,7 +98,7 @@ No remunerado/Autopromoción Intermedio/Animación de entrada Tarjetas finales y créditos - Información después del final. No para conclusiones con información. + Información después del final. No para conclusiones con info. Un intervalo sin contenido real. Puede ser una pausa, un fotograma estático, una animación que se repite. No debe utilizarse para transiciones que contengan información. Licencia Rojo @@ -338,4 +338,5 @@ Reproducir el siguiente Barra de navegación Por favor, seleccione al menos un artículo + Las tendencias parecen no estar disponibles para la región actual. Seleccione otro en la configuración. \ No newline at end of file diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index c5fdb9649..3b4b2bf9d 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -338,4 +338,5 @@ Main berikutnya Bilah navigasi Mohon pilih setidaknya satu item + Sedang Tren sepertinya tidak tersedia untuk wilayah saat ini. Pilih yang lain di pengaturan. \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f51f2dd70..cb71939d7 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -338,4 +338,5 @@ Visualizzazione iscrizioni legacy Barra di navigazione Seleziona almeno un elemento + La Tendenza sembra non essere disponibile per la regione attuale. Selezionane un\'altra nelle impostazioni. \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 38c6f918c..042a7473a 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -11,6 +11,8 @@ @style/Preference.SwitchPreferenceCompat.Material3 + @style/snackBarStyle + diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index dca9d5431..69f6707ed 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -338,4 +338,5 @@ Odtwórz następne Pasek nawigacyjny Proszę wybrać co najmniej jedną pozycję + Filmy na czasie wydają się być niedostępne dla bieżącego regionu. Proszę wybrać inny w ustawieniach. \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index ad9ba0fc2..4bd41298b 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -338,4 +338,5 @@ Проиграть следующий Панель навигации Выберите как минимум один + Похоже, что тренды не доступны в текущем регионе. Выберите другой регион в настройках. \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 484852f13..6a7ab092b 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -338,4 +338,5 @@ Sonrakini oynat Gezinme çubuğu Lütfen en az bir öge seçin + Trendler mevcut bölge için kullanılamıyor gibi görünüyor. Lütfen ayarlarda başka bir tane seçin. \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 0f19654ee..1617d089e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -338,4 +338,5 @@ 播放下一个 请选择至少一个项目 导航栏 + “时下流行”似乎对当前地区不可用。请在设置中另选一个地区。 \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index ecb63c05c..83a94535b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -3,44 +3,299 @@ #AA000000 #EEFFFFFF - #F1395E - #EF5350 - #EDE3E4 + #0058CB + #FFFFFF + #D9E2FF + #001945 + #575E71 + #FFFFFF + #DCE2F9 + #141B2C + #725572 + #FFFFFF + #FDD7FA + #2A132C + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FEFBFF + #1B1B1F + #FEFBFF + #1B1B1F + #E1E2EC + #44464F + #757780 + #F2F0F4 + #303034 + #B0C6FF + #000000 + #0058CB + #0058CB + #B0C6FF + #002D6F + #00429B + #D9E2FF + #C0C6DC + #293042 + #404659 + #DCE2F9 + #E0BBDD + #412742 + #593D5A + #FDD7FA + #FFB4AB + #93000A + #690005 + #FFDAD6 + #1B1B1F + #E3E2E6 + #1B1B1F + #E3E2E6 + #44464F + #C5C6D0 + #8F9099 + #1B1B1F + #E3E2E6 + #0058CB + #000000 + #B0C6FF + #B0C6FF - #C96052 - #D25545 - #1B0B09 + #9F4034 + #FFFFFF + #FFDAD5 + #410000 + #775652 + #FFFFFF + #FFDAD5 + #2C1512 + #705C2E + #FFFFFF + #FCDFA6 + #251A00 + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FFFBFF + #201A19 + #FFFBFF + #201A19 + #F5DDDA + #534341 + #857370 + #FBEEEC + #362F2E + #FFB4A9 + #000000 + #9F4034 + #9F4034 + #FFB4A9 + #61120C + #7F291F + #FFDAD5 + #E7BDB6 + #442925 + #5D3F3B + #FFDAD5 + #DEC38C + #3E2E04 + #574419 + #FCDFA6 + #FFB4AB + #93000A + #690005 + #FFDAD6 + #201A19 + #EDE0DE + #201A19 + #EDE0DE + #534341 + #D8C2BE + #A08C89 + #201A19 + #EDE0DE + #9F4034 + #000000 + #FFB4A9 + #FFB4A9 - #1F75FE - #66A1FE - #e3e1fb + #745B00 + #FFFFFF + #FFE08D + #241A00 + #695D3F + #FFFFFF + #F2E1BB + #231B04 + #47664A + #FFFFFF + #C9ECC8 + #04210B + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FFFBFF + #1E1B16 + #FFFBFF + #1E1B16 + #EBE1CF + #4C4639 + #7E7667 + #F7F0E7 + #33302A + #EBC248 + #000000 + #745B00 + #745B00 + #EBC248 + #3D2F00 + #584400 + #FFE08D + #D5C5A1 + #392F15 + #50462A + #F2E1BB + #ADCFAD + #19361F + #304D34 + #C9ECC8 + #FFB4AB + #93000A + #690005 + #FFDAD6 + #1E1B16 + #E8E1D9 + #1E1B16 + #E8E1D9 + #4C4639 + #CFC5B4 + #989080 + #1E1B16 + #E8E1D9 + #745B00 + #000000 + #EBC248 + #EBC248 - #1F75FE - #0146B6 - #0A0B15 + #3E6A00 + #FFFFFF + #B9F474 + #0F2000 + #576249 + #FFFFFF + #DBE7C8 + #151E0B + #386663 + #FFFFFF + #BBECE8 + #00201E + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FDFCF5 + #1B1C18 + #FDFCF5 + #1B1C18 + #E1E4D5 + #44483D + #75796C + #F2F1E9 + #30312C + #9ED75B + #000000 + #3E6A00 + #3E6A00 + #9ED75B + #1E3700 + #2E4F00 + #B9F474 + #BFCBAD + #2A331E + #404A33 + #DBE7C8 + #A0D0CC + #003735 + #1F4E4B + #BBECE8 + #FFB4AB + #93000A + #690005 + #FFDAD6 + #1B1C18 + #E3E3DB + #1B1C18 + #E3E3DB + #44483D + #C5C8BA + #8E9285 + #1B1C18 + #E3E3DB + #3E6A00 + #000000 + #9ED75B + #9ED75B - #FFA000 - #FFB300 - #FFF8E1 - - #D9B95C - #D1B956 - #19160B - - #7CB342 - #8BC34A - #E8EFE2 - - #8BC34A - #33681E - #0B1307 - - #7E57C2 - #B39DDB - #EFEBF6 - - #AA6F6B - #8F415B - #201015 + #9B3489 + #FFFFFF + #FFD7F0 + #3A0032 + #6F5767 + #FFFFFF + #F9DAEC + #281623 + #815341 + #FFFFFF + #FFDBCE + #321205 + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FFFBFF + #1F1A1D + #FFFBFF + #1F1A1D + #EFDEE6 + #4F444A + #81737B + #F8EEF1 + #342F32 + #FFACE7 + #000000 + #9B3489 + #9B3489 + #FFACE7 + #5E0052 + #7E186F + #FFD7F0 + #DCBED0 + #3E2A38 + #56404F + #F9DAEC + #F5B9A2 + #4B2617 + #663C2B + #FFDBCE + #FFB4AB + #93000A + #690005 + #FFDAD6 + #1F1A1D + #EAE0E3 + #1F1A1D + #EAE0E3 + #4F444A + #D2C2CA + #9B8D94 + #1F1A1D + #EAE0E3 + #9B3489 + #000000 + #FFACE7 + #FFACE7 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 50df12478..ad0ac774b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -333,6 +333,7 @@ Navigation bar Please select at least one item Trending seems to be unavailable for the current region. Please select another in the settings. + Limit HLS to 1080p Download Service diff --git a/app/src/main/res/values/style.xml b/app/src/main/res/values/style.xml index a5bd04bd7..a1858f15e 100644 --- a/app/src/main/res/values/style.xml +++ b/app/src/main/res/values/style.xml @@ -171,4 +171,12 @@ + + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 90073a60d..8db722ec0 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -11,6 +11,8 @@ @style/Preference.SwitchPreferenceCompat.Material3 + @style/snackBarStyle + diff --git a/app/src/main/res/xml/appearance_settings.xml b/app/src/main/res/xml/appearance_settings.xml index 96506ea06..f7faed2a2 100644 --- a/app/src/main/res/xml/appearance_settings.xml +++ b/app/src/main/res/xml/appearance_settings.xml @@ -38,6 +38,12 @@ app:title="@string/app_icon" app:useSimpleSummaryProvider="true" /> + + + diff --git a/app/src/main/res/xml/audio_video_settings.xml b/app/src/main/res/xml/audio_video_settings.xml index 28de14c7d..80eb31c7c 100644 --- a/app/src/main/res/xml/audio_video_settings.xml +++ b/app/src/main/res/xml/audio_video_settings.xml @@ -66,6 +66,12 @@ app:title="@string/playerAudioFormat" app:useSimpleSummaryProvider="true" /> + + diff --git a/app/src/main/res/xml/general_settings.xml b/app/src/main/res/xml/general_settings.xml index 0f3572997..423f831c8 100644 --- a/app/src/main/res/xml/general_settings.xml +++ b/app/src/main/res/xml/general_settings.xml @@ -38,15 +38,6 @@ - - - - - -