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 @@
-
-
-
-
-
-