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:
parent
7373451912
commit
c95edfa28b
2 changed files with 16 additions and 0 deletions
|
@ -25,6 +25,13 @@ import android.view.View
|
||||||
import androidx.annotation.AttrRes
|
import androidx.annotation.AttrRes
|
||||||
import com.google.android.material.textfield.TextInputEditText
|
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 {
|
class ReadOnlyTextInput : TextInputEditText {
|
||||||
constructor(context: Context) : super(context)
|
constructor(context: Context) : super(context)
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
package org.oxycblt.auxio.detail
|
package org.oxycblt.auxio.detail
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.text.format.Formatter
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.webkit.MimeTypeMap
|
import android.webkit.MimeTypeMap
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
@ -28,6 +29,7 @@ import org.oxycblt.auxio.R
|
||||||
import org.oxycblt.auxio.databinding.DialogSongDetailBinding
|
import org.oxycblt.auxio.databinding.DialogSongDetailBinding
|
||||||
import org.oxycblt.auxio.music.Song
|
import org.oxycblt.auxio.music.Song
|
||||||
import org.oxycblt.auxio.ui.ViewBindingDialogFragment
|
import org.oxycblt.auxio.ui.ViewBindingDialogFragment
|
||||||
|
import org.oxycblt.auxio.util.formatDuration
|
||||||
import org.oxycblt.auxio.util.launch
|
import org.oxycblt.auxio.util.launch
|
||||||
|
|
||||||
class SongDetailDialog : ViewBindingDialogFragment<DialogSongDetailBinding>() {
|
class SongDetailDialog : ViewBindingDialogFragment<DialogSongDetailBinding>() {
|
||||||
|
@ -53,6 +55,13 @@ class SongDetailDialog : ViewBindingDialogFragment<DialogSongDetailBinding>() {
|
||||||
|
|
||||||
if (song != null) {
|
if (song != null) {
|
||||||
binding.detailContainer.isGone = false
|
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) {
|
if (song.bitrateKbps != null) {
|
||||||
binding.detailBitrate.setText(getString(R.string.fmt_bitrate, song.bitrateKbps))
|
binding.detailBitrate.setText(getString(R.string.fmt_bitrate, song.bitrateKbps))
|
||||||
|
|
Loading…
Reference in a new issue