2021-07-12 10:14:26 +02:00
|
|
|
package audio.funkwhale.ffa.fragments
|
2020-05-30 15:49:06 +02:00
|
|
|
|
|
|
|
import android.net.Uri
|
|
|
|
import android.os.Bundle
|
|
|
|
import android.util.TypedValue
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
import android.view.View
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import android.view.ViewGroup.LayoutParams
|
|
|
|
import android.widget.TextView
|
|
|
|
import androidx.core.os.bundleOf
|
|
|
|
import androidx.fragment.app.DialogFragment
|
2021-07-12 10:14:26 +02:00
|
|
|
import audio.funkwhale.ffa.R
|
|
|
|
import audio.funkwhale.ffa.utils.Track
|
|
|
|
import audio.funkwhale.ffa.utils.mustNormalizeUrl
|
|
|
|
import audio.funkwhale.ffa.utils.toDurationString
|
2020-05-30 15:49:06 +02:00
|
|
|
import kotlinx.android.synthetic.main.fragment_track_info_details.*
|
|
|
|
|
|
|
|
class TrackInfoDetailsFragment : DialogFragment() {
|
|
|
|
companion object {
|
|
|
|
fun new(track: Track): TrackInfoDetailsFragment {
|
|
|
|
return TrackInfoDetailsFragment().apply {
|
|
|
|
arguments = bundleOf(
|
|
|
|
"artistName" to track.artist.name,
|
2020-07-11 21:01:09 +02:00
|
|
|
"albumTitle" to track.album?.title,
|
2020-05-30 15:49:06 +02:00
|
|
|
"trackTitle" to track.title,
|
2020-07-10 20:25:35 +02:00
|
|
|
"trackCopyright" to track.copyright,
|
|
|
|
"trackLicense" to track.license,
|
2020-05-30 15:49:06 +02:00
|
|
|
"trackPosition" to track.position,
|
|
|
|
"trackDuration" to track.bestUpload()?.duration?.toLong()?.let { toDurationString(it, showSeconds = true) },
|
|
|
|
"trackBitrate" to track.bestUpload()?.bitrate?.let { "${it / 1000} Kbps" },
|
|
|
|
"trackInstance" to track.bestUpload()?.listen_url?.let { Uri.parse(mustNormalizeUrl(it)).authority }
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var properties: MutableList<Pair<Int, String?>> = mutableListOf()
|
|
|
|
|
|
|
|
override fun onStart() {
|
|
|
|
super.onStart()
|
|
|
|
|
|
|
|
dialog?.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
super.onCreate(savedInstanceState)
|
|
|
|
|
|
|
|
arguments?.apply {
|
|
|
|
properties.add(Pair(R.string.track_info_details_artist, getString("artistName")))
|
|
|
|
properties.add(Pair(R.string.track_info_details_album, getString("albumTitle")))
|
|
|
|
properties.add(Pair(R.string.track_info_details_track_title, getString("trackTitle")))
|
2020-07-10 20:25:35 +02:00
|
|
|
properties.add(Pair(R.string.track_info_details_track_copyright, getString("trackCopyright")))
|
|
|
|
properties.add(Pair(R.string.track_info_details_track_license, getString("trackLicense")))
|
2020-05-30 15:49:06 +02:00
|
|
|
properties.add(Pair(R.string.track_info_details_track_duration, getString("trackDuration")))
|
2020-07-10 21:03:48 +02:00
|
|
|
properties.add(Pair(R.string.track_info_details_track_position, getInt("trackPosition").toString()))
|
2020-05-30 15:49:06 +02:00
|
|
|
properties.add(Pair(R.string.track_info_details_track_bitrate, getString("trackBitrate")))
|
|
|
|
properties.add(Pair(R.string.track_info_details_track_instance, getString("trackInstance")))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
|
|
|
return inflater.inflate(R.layout.fragment_track_info_details, container, false)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
|
|
super.onViewCreated(view, savedInstanceState)
|
|
|
|
|
|
|
|
properties.forEach { (label, value) ->
|
|
|
|
val labelTextView = TextView(context).apply {
|
|
|
|
text = getString(label)
|
|
|
|
setTextAppearance(R.style.AppTheme_TrackDetailsLabel)
|
|
|
|
}
|
|
|
|
|
|
|
|
val valueTextView = TextView(context).apply {
|
|
|
|
text = value ?: "N/A"
|
|
|
|
setTextAppearance(R.style.AppTheme_TrackDetailsValue)
|
|
|
|
setPadding(0, 0, 0, TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16f, resources.displayMetrics).toInt())
|
|
|
|
}
|
|
|
|
|
|
|
|
infos.addView(labelTextView)
|
|
|
|
infos.addView(valueTextView)
|
|
|
|
}
|
|
|
|
}
|
2021-07-02 13:55:49 +02:00
|
|
|
}
|