detail: complete song detail view

Complete a song detail view, shown when the "View properties" option in
the song menu is selected.

Resolves #144.
This commit is contained in:
OxygenCobalt 2022-06-11 16:25:46 -06:00
parent 7373451912
commit c95edfa28b
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
2 changed files with 16 additions and 0 deletions

View file

@ -25,6 +25,13 @@ import android.view.View
import androidx.annotation.AttrRes
import com.google.android.material.textfield.TextInputEditText
/**
* A [TextInputEditText] that deliberately restricts all input except for selection. Yes, this is a
* blatant abuse of Material Design Guidelines, but I also don't want to figure out how to main
* plain text selectable.
*
* @author OxygenCobalt
*/
class ReadOnlyTextInput : TextInputEditText {
constructor(context: Context) : super(context)

View file

@ -18,6 +18,7 @@
package org.oxycblt.auxio.detail
import android.os.Bundle
import android.text.format.Formatter
import android.view.LayoutInflater
import android.webkit.MimeTypeMap
import androidx.appcompat.app.AlertDialog
@ -28,6 +29,7 @@ import org.oxycblt.auxio.R
import org.oxycblt.auxio.databinding.DialogSongDetailBinding
import org.oxycblt.auxio.music.Song
import org.oxycblt.auxio.ui.ViewBindingDialogFragment
import org.oxycblt.auxio.util.formatDuration
import org.oxycblt.auxio.util.launch
class SongDetailDialog : ViewBindingDialogFragment<DialogSongDetailBinding>() {
@ -53,6 +55,13 @@ class SongDetailDialog : ViewBindingDialogFragment<DialogSongDetailBinding>() {
if (song != null) {
binding.detailContainer.isGone = false
binding.detailFileName.setText(song.song.path.name)
binding.detailRelativeDir.setText(song.song.path.parent.resolveName(requireContext()))
binding.detailFormat.setText(
mimeTypes.getExtensionFromMimeType(song.song.mimeType)?.uppercase()
?: getString(R.string.def_format))
binding.detailSize.setText(Formatter.formatFileSize(requireContext(), song.song.size))
binding.detailDuration.setText(song.song.durationSecs.formatDuration(true))
if (song.bitrateKbps != null) {
binding.detailBitrate.setText(getString(R.string.fmt_bitrate, song.bitrateKbps))