Merge pull request #1237 from Bnyro/master

Use new MaterialSwitches
This commit is contained in:
Bnyro 2022-09-08 21:51:52 +02:00 committed by GitHub
commit bee4ba14f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 68 additions and 53 deletions

View File

@ -97,7 +97,8 @@ class RouterActivity : BaseActivity() {
}
intent.putExtra(IntentData.videoId, videoId)
} else -> {
}
else -> {
val timeStamp = uri.getQueryParameter("t")
val videoId = uri.path!!.replace("/", "")

View File

@ -58,7 +58,7 @@ class PlaylistAdapter(
root.setOnClickListener {
NavigationHelper.navigateVideo(root.context, streamItem.url, playlistId)
}
val videoId = streamItem.url.toID()
val videoId = streamItem.url!!.toID()
root.setOnLongClickListener {
VideoOptionsDialog(videoId)
.show(childFragmentManager, VideoOptionsDialog::class.java.name)

View File

@ -15,7 +15,7 @@ object DatabaseHelper {
streams.title,
streams.uploadDate,
streams.uploader,
streams.uploaderUrl.toID(),
streams.uploaderUrl!!.toID(),
streams.uploaderAvatar,
streams.thumbnailUrl,
streams.duration

View File

@ -87,7 +87,7 @@ class ShareDialog(
// return the custom instance frontend url if available
customInstances.forEach { instance ->
if (instance.apiUrl == instancePref) return instance.apiUrl
if (instance.apiUrl == instancePref) return instance.frontendUrl
}
return ""
}

View File

@ -101,6 +101,7 @@ import com.google.android.exoplayer2.upstream.DefaultHttpDataSource
import com.google.android.exoplayer2.util.RepeatModeUtil
import com.google.android.exoplayer2.video.VideoSize
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlin.math.abs
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@ -108,7 +109,6 @@ import org.chromium.net.CronetEngine
import retrofit2.HttpException
import java.io.IOException
import java.util.concurrent.Executors
import kotlin.math.abs
class PlayerFragment : BaseFragment() {

View File

@ -4,7 +4,6 @@ import android.os.Bundle
import com.github.libretube.R
import com.github.libretube.activities.SettingsActivity
import com.github.libretube.views.MaterialPreferenceFragment
import java.util.*
class AudioVideoSettings : MaterialPreferenceFragment() {

View File

@ -4,6 +4,7 @@ import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.os.Build
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.work.Constraints
@ -30,7 +31,11 @@ class NotificationHelper(
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
// the id where notification channels start
private var notificationId = NotificationManager.activeNotifications.size + 5
private var notificationId = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
NotificationManager.activeNotifications.size + 5
} else {
5
}
/**
* Enqueue the work manager task
@ -117,7 +122,7 @@ class NotificationHelper(
}
val lastSeenStreamId = PreferenceHelper.getLatestVideoId()
val latestFeedStreamId = videoFeed[0].url.toID()
val latestFeedStreamId = videoFeed[0].url!!.toID()
// first time notifications enabled or no new video available
if (lastSeenStreamId == "" || lastSeenStreamId == latestFeedStreamId) {
@ -126,7 +131,7 @@ class NotificationHelper(
}
// filter the new videos out
val lastSeenStreamItem = videoFeed.filter { it.url.toID() == lastSeenStreamId }
val lastSeenStreamItem = videoFeed.filter { it.url!!.toID() == lastSeenStreamId }
// previous video not found
if (lastSeenStreamItem.isEmpty()) return@runBlocking
@ -141,7 +146,7 @@ class NotificationHelper(
// create a notification for each new stream
channelGroups.forEach { (_, streams) ->
createNotification(
group = streams[0].uploaderUrl.toID(),
group = streams[0].uploaderUrl!!.toID(),
title = streams[0].uploaderName.toString(),
isSummary = true
)
@ -151,12 +156,12 @@ class NotificationHelper(
createNotification(
title = streamItem.title.toString(),
description = streamItem.uploaderName.toString(),
group = streamItem.uploaderUrl.toID()
group = streamItem.uploaderUrl!!.toID()
)
}
}
// save the latest streams that got notified about
PreferenceHelper.setLatestVideoId(videoFeed[0].url.toID())
PreferenceHelper.setLatestVideoId(videoFeed[0].url!!.toID())
}
// return whether the work succeeded
return success

View File

@ -5,18 +5,17 @@ import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable
import android.support.v4.media.session.MediaSessionCompat
import coil.request.ImageRequest
import com.github.libretube.activities.MainActivity
import com.github.libretube.constants.BACKGROUND_CHANNEL_ID
import com.github.libretube.constants.PLAYER_NOTIFICATION_ID
import com.github.libretube.extensions.await
import com.github.libretube.obj.Streams
import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.Player
import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector
import com.google.android.exoplayer2.ui.PlayerNotificationManager
import java.net.URL
class NowPlayingNotification(
private val context: Context,
@ -43,7 +42,7 @@ class NowPlayingNotification(
* The [DescriptionAdapter] is used to show title, uploaderName and thumbnail of the video in the notification
* Basic example [here](https://github.com/AnthonyMarkD/AudioPlayerSampleTest)
*/
inner class DescriptionAdapter() :
inner class DescriptionAdapter :
PlayerNotificationManager.MediaDescriptionAdapter {
/**
* sets the title of the notification
@ -83,36 +82,25 @@ class NowPlayingNotification(
player: Player,
callback: PlayerNotificationManager.BitmapCallback
): Bitmap? {
lateinit var bitmap: Bitmap
var resizedBitmap: Bitmap? = null
/**
* running on a new thread to prevent a NetworkMainThreadException
*/
Thread {
try {
/**
* try to GET the thumbnail from the URL
*/
val inputStream = URL(streams?.thumbnailUrl).openStream()
bitmap = BitmapFactory.decodeStream(inputStream)
} catch (ex: java.lang.Exception) {
ex.printStackTrace()
val request = ImageRequest.Builder(context)
.data(streams?.thumbnailUrl)
.target { result ->
val bitmap = (result as BitmapDrawable).bitmap
resizedBitmap = Bitmap.createScaledBitmap(
bitmap,
bitmap.width,
bitmap.width,
false
)
}
}.await()
/**
* returns the scaled bitmap if it got fetched successfully
*/
return try {
val resizedBitmap = Bitmap.createScaledBitmap(
bitmap,
bitmap.width,
bitmap.width,
false
)
resizedBitmap
} catch (e: Exception) {
null
}
.build()
ImageHelper.imageLoader.enqueue(request)
// returns the scaled bitmap if it got fetched successfully
return resizedBitmap
}
}

View File

@ -2,7 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingHorizontal="7dp"
android:paddingVertical="10dp">
@ -16,7 +16,6 @@
<TextView
android:id="@+id/playbackSpeed"
style="@style/BottomSheetItem"
android:layout_marginTop="8dp"
android:text="@string/playback_speed"
app:drawableStartCompat="@drawable/ic_speed" />
@ -43,4 +42,5 @@
style="@style/BottomSheetItem"
android:text="@string/player_resize_mode"
app:drawableStartCompat="@drawable/ic_aspect_ratio" />
</LinearLayout>

View File

@ -20,7 +20,7 @@
android:layout_weight="1"
android:text="@string/share_with_time" />
<androidx.appcompat.widget.SwitchCompat
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/timeCodeSwitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.materialswitch.MaterialSwitch xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/switchWidget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:targetApi="n" />

View File

@ -34,14 +34,12 @@
android:id="@+id/channelFragment"
android:name="com.github.libretube.fragments.ChannelFragment"
android:label="channel"
tools:layout="@layout/fragment_channel">
</fragment>
tools:layout="@layout/fragment_channel"></fragment>
<fragment
android:id="@+id/playlistFragment"
android:name="com.github.libretube.fragments.PlaylistFragment"
android:label="fragment_playlist"
tools:layout="@layout/fragment_playlist">
</fragment>
tools:layout="@layout/fragment_playlist"></fragment>
<fragment
android:id="@+id/watchHistoryFragment"
android:name="com.github.libretube.fragments.WatchHistoryFragment"

View File

@ -6,6 +6,10 @@
<item name="android:windowLightStatusBar" tools:targetApi="m">false</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="switchPreferenceCompatStyle">
@style/Preference.SwitchPreferenceCompat.Material3
</item>
</style>
<style name="StartupTheme" parent="BaseTheme">

View File

@ -158,6 +158,8 @@
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:padding">10dp</item>
<item name="android:layout_marginTop">2dp</item>
<item name="android:layout_marginBottom">2dp</item>
<item name="background">?attr/selectableItemBackground</item>
</style>
@ -175,4 +177,11 @@
</style>
<!-- Uses Material Switches instead of the old ones -->
<style name="Preference.SwitchPreferenceCompat.Material3" parent="@style/Preference.SwitchPreferenceCompat.Material">
<item name="widgetLayout">@layout/view_preference_switch</item>
</style>
</resources>

View File

@ -6,6 +6,10 @@
<item name="android:windowLightStatusBar" tools:targetApi="m">true</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="switchPreferenceCompatStyle">
@style/Preference.SwitchPreferenceCompat.Material3
</item>
</style>
<style name="StartupTheme" parent="BaseTheme">

View File

@ -2,7 +2,7 @@
appcompat = "1.5.0"
lifecycle = "2.5.1"
constraintlayout = "2.1.4"
material = "1.6.0"
material = "1.8.0-alpha01"
navigation = "2.5.1"
legacySupport = "1.0.0"
preference = "1.2.0"
@ -10,7 +10,7 @@ extJunit = "1.1.3"
espresso = "3.4.0"
workRuntime = "2.7.1"
circleimageview = "3.1.0"
exoplayer = "2.17.1"
exoplayer = "2.18.1"
multidex = "2.0.1"
retrofit = "2.9.0"
jacksonAnnotations = "2.13.3"