Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stats for nerds dialog containing video info #3156

Merged
merged 1 commit into from
Feb 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions app/src/main/java/com/github/libretube/ui/dialogs/StatsDialog.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.github.libretube.ui.dialogs

import android.annotation.SuppressLint
import android.app.Dialog
import android.os.Bundle
import androidx.fragment.app.DialogFragment
import com.github.libretube.R
import com.github.libretube.databinding.DialogStatsBinding
import com.github.libretube.util.TextUtils
import com.google.android.exoplayer2.ExoPlayer
import com.google.android.material.dialog.MaterialAlertDialogBuilder

class StatsDialog(
private val player: ExoPlayer,
private val videoId: String
) : DialogFragment() {

@SuppressLint("SetTextI18n")
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val binding = DialogStatsBinding.inflate(layoutInflater)
binding.videoId.setText(videoId)
binding.videoInfo.setText(
"${player.videoFormat?.codecs.orEmpty()} ${TextUtils.formatBitrate(
player.videoFormat?.bitrate
)}"
)
binding.audioInfo.setText(
"${player.audioFormat?.codecs.orEmpty()} ${TextUtils.formatBitrate(
player.audioFormat?.bitrate
)}"
)
binding.videoQuality.setText(
"${player.videoFormat?.width}x${player.videoFormat?.height} ${player.videoFormat?.frameRate?.toInt()}fps"
)

return MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.stats_for_nerds)
.setView(binding.root)
.setPositiveButton(R.string.okay, null)
.create()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ import com.github.libretube.ui.adapters.VideosAdapter
import com.github.libretube.ui.dialogs.AddToPlaylistDialog
import com.github.libretube.ui.dialogs.DownloadDialog
import com.github.libretube.ui.dialogs.ShareDialog
import com.github.libretube.ui.dialogs.StatsDialog
import com.github.libretube.ui.extensions.setAspectRatio
import com.github.libretube.ui.extensions.setupSubscriptionButton
import com.github.libretube.ui.interfaces.OnlinePlayerOptions
Expand Down Expand Up @@ -1379,6 +1380,12 @@ class PlayerFragment : Fragment(R.layout.fragment_player), OnlinePlayerOptions {
.show(childFragmentManager)
}

override fun onStatsClicked() {
if (!this::streams.isInitialized) return
StatsDialog(exoPlayer, videoId ?: return)
.show(childFragmentManager, null)
}

override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
super.onPictureInPictureModeChanged(isInPictureInPictureMode)
if (isInPictureInPictureMode) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ interface OnlinePlayerOptions {
fun onQualityClicked()

fun onAudioStreamClicked()

fun onStatsClicked()
}
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,12 @@ internal class CustomExoPlayerView(
}
) {
it.onCaptionsClicked()
},
BottomSheetItem(
context.getString(R.string.stats_for_nerds),
R.drawable.ic_info
) {
it.onStatsClicked()
}
)
)
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/java/com/github/libretube/util/TextUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,9 @@ object TextUtils {
DateUtils.getRelativeTimeSpanString(unixTime)
}
}

fun formatBitrate(bitrate: Int?): String {
bitrate ?: return ""
return "${bitrate / 1024}kbps"
}
}
8 changes: 4 additions & 4 deletions app/src/main/res/drawable/ic_info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
android:width="24dp"
android:height="24dp"
android:tint="?attr/colorControlNormal"
android:viewportWidth="48"
android:viewportHeight="48">
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M24,44Q19.75,44 16.1,42.475Q12.45,40.95 9.75,38.25Q7.05,35.55 5.525,31.9Q4,28.25 4,24Q4,19.8 5.525,16.15Q7.05,12.5 9.75,9.8Q12.45,7.1 16.1,5.55Q19.75,4 24,4Q28.2,4 31.85,5.55Q35.5,7.1 38.2,9.8Q40.9,12.5 42.45,16.15Q44,19.8 44,24Q44,28.25 42.45,31.9Q40.9,35.55 38.2,38.25Q35.5,40.95 31.85,42.475Q28.2,44 24,44ZM24,18.3Q24.7,18.3 25.175,17.85Q25.65,17.4 25.65,16.7Q25.65,16 25.175,15.5Q24.7,15 24,15Q23.3,15 22.825,15.5Q22.35,16 22.35,16.7Q22.35,17.4 22.825,17.85Q23.3,18.3 24,18.3ZM22.65,34H25.65V22H22.65Z" />
android:fillColor="@android:color/white"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z" />
</vector>
47 changes: 47 additions & 0 deletions app/src/main/res/layout/dialog_stats.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<com.google.android.material.textfield.TextInputLayout
style="@style/CustomDialogTextInputLayout"
android:layout_marginTop="10dp"
android:hint="@string/video_id">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/video_id"
style="@style/DisabledTextInput" />
</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
style="@style/CustomDialogTextInputLayout"
android:layout_marginTop="10dp"
android:hint="@string/audio">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/audio_info"
style="@style/DisabledTextInput" />
</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
style="@style/CustomDialogTextInputLayout"
android:layout_marginTop="10dp"
android:hint="@string/video">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/video_info"
style="@style/DisabledTextInput" />
</com.google.android.material.textfield.TextInputLayout>

<com.google.android.material.textfield.TextInputLayout
style="@style/CustomDialogTextInputLayout"
android:layout_marginTop="10dp"
android:hint="@string/quality">

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/video_quality"
style="@style/DisabledTextInput" />
</com.google.android.material.textfield.TextInputLayout>

</LinearLayout>
2 changes: 2 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,8 @@
<string name="custom_playback_speed">Custom speed</string>
<string name="custom_playback_speed_summary">Use a different playback speed than for the normal player.</string>
<string name="category">Category</string>
<string name="stats_for_nerds">Stats for nerds</string>
<string name="video_id">Video ID</string>
<!-- Notification channel strings -->
<string name="download_channel_name">Download Service</string>
<string name="download_channel_description">Shows a notification when downloading media.</string>
Expand Down
9 changes: 9 additions & 0 deletions app/src/main/res/values/style.xml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,15 @@

</style>

<style name="DisabledTextInput">

<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:editable">false</item>
<item name="android:textIsSelectable">true</item>

</style>

<style name="PlayerActionsLayout">

<item name="android:layout_width">0dp</item>
Expand Down