mirror of
https://github.com/ultrasonic/ultrasonic
synced 2025-02-27 00:47:48 +01:00
Merge pull request #710 from hmueller01/detailed-media-info
Add detailed song information to Now Playing
This commit is contained in:
commit
107b01fd91
@ -59,7 +59,6 @@ import kotlinx.coroutines.cancel
|
||||
import kotlinx.coroutines.launch
|
||||
import org.koin.android.ext.android.inject
|
||||
import org.koin.core.component.KoinComponent
|
||||
import org.koin.core.component.get
|
||||
import org.moire.ultrasonic.R
|
||||
import org.moire.ultrasonic.adapters.BaseAdapter
|
||||
import org.moire.ultrasonic.adapters.TrackViewBinder
|
||||
@ -137,8 +136,10 @@ class PlayerFragment :
|
||||
private lateinit var playlistFlipper: ViewFlipper
|
||||
private lateinit var emptyTextView: TextView
|
||||
private lateinit var songTitleTextView: TextView
|
||||
private lateinit var albumTextView: TextView
|
||||
private lateinit var artistTextView: TextView
|
||||
private lateinit var albumTextView: TextView
|
||||
private lateinit var genreTextView: TextView
|
||||
private lateinit var bitrateFormatTextView: TextView
|
||||
private lateinit var albumArtImageView: ImageView
|
||||
private lateinit var playlistView: RecyclerView
|
||||
private lateinit var positionTextView: TextView
|
||||
@ -174,8 +175,10 @@ class PlayerFragment :
|
||||
playlistFlipper = view.findViewById(R.id.current_playing_playlist_flipper)
|
||||
emptyTextView = view.findViewById(R.id.playlist_empty)
|
||||
songTitleTextView = view.findViewById(R.id.current_playing_song)
|
||||
albumTextView = view.findViewById(R.id.current_playing_album)
|
||||
artistTextView = view.findViewById(R.id.current_playing_artist)
|
||||
albumTextView = view.findViewById(R.id.current_playing_album)
|
||||
genreTextView = view.findViewById(R.id.current_playing_genre)
|
||||
bitrateFormatTextView = view.findViewById(R.id.current_playing_bitrate_format)
|
||||
albumArtImageView = view.findViewById(R.id.current_playing_album_art_image)
|
||||
positionTextView = view.findViewById(R.id.current_playing_position)
|
||||
downloadTrackTextView = view.findViewById(R.id.current_playing_track)
|
||||
@ -979,8 +982,32 @@ class PlayerFragment :
|
||||
if (currentPlaying != null) {
|
||||
currentSong = currentPlaying!!.song
|
||||
songTitleTextView.text = currentSong!!.title
|
||||
albumTextView.text = currentSong!!.album
|
||||
artistTextView.text = currentSong!!.artist
|
||||
albumTextView.text = currentSong!!.album
|
||||
if (currentSong!!.year != null && Settings.showNowPlayingDetails)
|
||||
albumTextView.append(String.format(Locale.ROOT, " (%d)", currentSong!!.year))
|
||||
|
||||
if (Settings.showNowPlayingDetails) {
|
||||
genreTextView.text = currentSong!!.genre
|
||||
genreTextView.isVisible =
|
||||
(currentSong!!.genre != null && currentSong!!.genre!!.isNotBlank())
|
||||
|
||||
var bitRate: String = ""
|
||||
if (currentSong!!.bitRate != null && currentSong!!.bitRate!! > 0)
|
||||
bitRate = String.format(
|
||||
Util.appContext().getString(R.string.song_details_kbps),
|
||||
currentSong!!.bitRate
|
||||
)
|
||||
bitrateFormatTextView.text = String.format(
|
||||
Locale.ROOT, "%s %s",
|
||||
bitRate, currentSong!!.suffix
|
||||
)
|
||||
bitrateFormatTextView.isVisible = true
|
||||
} else {
|
||||
genreTextView.isVisible = false
|
||||
bitrateFormatTextView.isVisible = false
|
||||
}
|
||||
|
||||
downloadTrackTextView.text = trackFormat
|
||||
downloadTotalDurationTextView.text = duration
|
||||
imageLoaderProvider.getImageLoader()
|
||||
@ -989,8 +1016,10 @@ class PlayerFragment :
|
||||
} else {
|
||||
currentSong = null
|
||||
songTitleTextView.text = null
|
||||
albumTextView.text = null
|
||||
artistTextView.text = null
|
||||
albumTextView.text = null
|
||||
genreTextView.text = null
|
||||
bitrateFormatTextView.text = null
|
||||
downloadTrackTextView.text = null
|
||||
downloadTotalDurationTextView.text = null
|
||||
imageLoaderProvider.getImageLoader()
|
||||
|
@ -90,6 +90,7 @@ object Constants {
|
||||
const val PREFERENCES_KEY_CLEAR_SEARCH_HISTORY = "clearSearchHistory"
|
||||
const val PREFERENCES_KEY_DOWNLOAD_TRANSITION = "transitionToDownloadOnPlay"
|
||||
const val PREFERENCES_KEY_INCREMENT_TIME = "incrementTime"
|
||||
const val PREFERENCES_KEY_SHOW_NOW_PLAYING_DETAILS = "showNowPlayingDetails"
|
||||
const val PREFERENCES_KEY_ID3_TAGS = "useId3Tags"
|
||||
const val PREFERENCES_KEY_SHOW_ARTIST_PICTURE = "showArtistPicture"
|
||||
const val PREFERENCES_KEY_TEMP_LOSS = "tempLoss"
|
||||
|
@ -189,6 +189,10 @@ object Settings {
|
||||
true
|
||||
)
|
||||
|
||||
@JvmStatic
|
||||
var showNowPlayingDetails
|
||||
by BooleanSetting(Constants.PREFERENCES_KEY_SHOW_NOW_PLAYING_DETAILS, false)
|
||||
|
||||
@JvmStatic
|
||||
var shouldUseId3Tags
|
||||
by BooleanSetting(Constants.PREFERENCES_KEY_ID3_TAGS, false)
|
||||
|
@ -19,9 +19,9 @@
|
||||
a:layout_width="wrap_content"
|
||||
a:layout_height="wrap_content"
|
||||
a:layout_marginEnd="10dip"
|
||||
a:paddingRight="30dip"
|
||||
a:ellipsize="marquee"
|
||||
a:gravity="left"
|
||||
a:paddingRight="30dip"
|
||||
a:singleLine="true"
|
||||
a:textAppearance="?android:attr/textAppearanceLarge"
|
||||
a:textStyle="bold"
|
||||
@ -47,6 +47,16 @@
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
tools:text="Album" />
|
||||
|
||||
<TextView
|
||||
a:id="@+id/current_playing_genre"
|
||||
a:layout_width="wrap_content"
|
||||
a:layout_height="wrap_content"
|
||||
a:ellipsize="start"
|
||||
a:gravity="right"
|
||||
a:singleLine="true"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
tools:text="Genre" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@ -55,7 +65,8 @@
|
||||
a:layout_alignParentRight="true"
|
||||
a:layout_centerVertical="true"
|
||||
a:gravity="right"
|
||||
a:orientation="vertical">
|
||||
a:orientation="vertical"
|
||||
tools:ignore="RelativeOverlap">
|
||||
|
||||
<TextView
|
||||
a:id="@+id/current_playing_track"
|
||||
@ -76,7 +87,16 @@
|
||||
a:text="@string/util.no_time"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
<TextView
|
||||
a:id="@+id/current_playing_bitrate_format"
|
||||
a:layout_width="wrap_content"
|
||||
a:layout_height="wrap_content"
|
||||
a:ellipsize="start"
|
||||
a:gravity="right"
|
||||
a:singleLine="true"
|
||||
a:textAppearance="?android:attr/textAppearanceSmall"
|
||||
tools:text="Details" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
</RelativeLayout>
|
@ -300,7 +300,6 @@
|
||||
<string name="settings.show_artist_picture">Obrázek umělce v seznamu umělců</string>
|
||||
<string name="settings.show_artist_picture_summary">Zobrazí obrázek umělce v náhledu umělců pokud je dostupný</string>
|
||||
<string name="main.video" tools:ignore="UnusedResources">Video</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -315,7 +315,6 @@
|
||||
<string name="main.video" tools:ignore="UnusedResources">Film</string>
|
||||
<string name="settings.wifi_required_summary">Medien nur über gebührenfreie Verbindungen herunterladen</string>
|
||||
<string name="settings.wifi_required_title">Nur über WLAN herunterladen</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -329,7 +329,6 @@
|
||||
<string name="main.video" tools:ignore="UnusedResources">Vídeo</string>
|
||||
<string name="settings.wifi_required_summary">Solo descargar medios en conexiones sin medir</string>
|
||||
<string name="settings.wifi_required_title">Descargar solo por Wi-Fi</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -322,7 +322,6 @@
|
||||
<string name="settings.show_artist_picture">Afficher l’image de l’artiste dans la liste</string>
|
||||
<string name="settings.show_artist_picture_summary">Affiche l’image de l’artiste dans la liste des artistes si celle-ci est disponible</string>
|
||||
<string name="main.video" tools:ignore="UnusedResources">Vidéo</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d Kb/s</string>
|
||||
<string name="util.bytes_format.byte">0 o</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 Go</string>
|
||||
|
@ -311,7 +311,6 @@
|
||||
<string name="settings.show_artist_picture">Előadó képének megjelenítése</string>
|
||||
<string name="settings.show_artist_picture_summary">Az előadó listában megjeleníti a képeket, amennyiben elérhetőek</string>
|
||||
<string name="main.video" tools:ignore="UnusedResources">Videó</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -287,7 +287,6 @@
|
||||
<string name="settings.use_id3">Sfoglia Utilizzando Tag ID3</string>
|
||||
<string name="settings.use_id3_summary">Usa metodi tag ID3 invece dei metodi basati sul filesystem</string>
|
||||
<string name="main.video" tools:ignore="UnusedResources">Video</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -329,7 +329,6 @@
|
||||
<string name="main.video" tools:ignore="UnusedResources">Video</string>
|
||||
<string name="settings.wifi_required_summary">Haal media alleen op bij gebruik van onbeperkte dataverbindingen</string>
|
||||
<string name="settings.wifi_required_title">Alleen ophalen via wifi</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0,00 GB</string>
|
||||
|
@ -297,7 +297,6 @@ ponieważ api Subsonic nie wspiera nowego sposobu autoryzacji dla użytkowników
|
||||
<string name="settings.use_id3">Przeglądaj używając tagów ID3</string>
|
||||
<string name="settings.use_id3_summary">Używa metod z tagów ID3 zamiast metod opartych na systemie plików</string>
|
||||
<string name="main.video" tools:ignore="UnusedResources">Wideo</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -321,7 +321,6 @@
|
||||
<string name="settings.show_artist_picture">Mostrar Foto do Artista na Lista</string>
|
||||
<string name="settings.show_artist_picture_summary">Mostrar a imagem do artista na lista de artistas, se disponível</string>
|
||||
<string name="main.video" tools:ignore="UnusedResources">Vídeo</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -297,7 +297,6 @@
|
||||
<string name="settings.use_id3">Navegar Usando Etiquetas ID3</string>
|
||||
<string name="settings.use_id3_summary">Usa as etiquetas ID3 ao invés do sistema de ficheiros</string>
|
||||
<string name="main.video" tools:ignore="UnusedResources">Vídeo</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -313,7 +313,6 @@
|
||||
<string name="settings.show_artist_picture">Показать изображение исполнителя в списке исполнителей</string>
|
||||
<string name="settings.show_artist_picture_summary">Отображает изображение исполнителя в списке исполнителей, если доступно</string>
|
||||
<string name="main.video" tools:ignore="UnusedResources">Видео</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -323,7 +323,6 @@
|
||||
<string name="main.video" tools:ignore="UnusedResources">视频</string>
|
||||
<string name="settings.wifi_required_summary">仅未计量的网络用于下载媒体</string>
|
||||
<string name="settings.wifi_required_title">仅使用Wi-Fi进行下载</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
|
@ -340,6 +340,8 @@
|
||||
<string name="settings.summary.enable_ldap_users_support">This forces the app to always send the password unencrypted. Useful if the Subsonic server does not support the new authentication API for the users.</string>
|
||||
<string name="settings.use_folder_for_album_artist">Use Folders For Artist Name</string>
|
||||
<string name="settings.use_folder_for_album_artist_summary">Assume top-level folder is the name of the album artist</string>
|
||||
<string name="settings.show_now_playing_details_summary">Show more song details in Now Playing (genre, year, bitrate)</string>
|
||||
<string name="settings.show_now_playing_details">Show details in Now Playing</string>
|
||||
<string name="settings.use_id3">Browse Using ID3 Tags</string>
|
||||
<string name="settings.use_id3_summary">Use ID3 tag methods instead of file system based methods</string>
|
||||
<string name="settings.show_artist_picture">Show artist picture in artist list</string>
|
||||
@ -347,7 +349,7 @@
|
||||
<string name="main.video" tools:ignore="UnusedResources">Video</string>
|
||||
<string name="settings.wifi_required_summary">Only download media on unmetered connections</string>
|
||||
<string name="settings.wifi_required_title">Download on Wi-Fi only</string>
|
||||
<string name="song_details.all">%1$s%2$s</string>
|
||||
<string name="song_details.all" translatable="false">%1$s%2$s</string>
|
||||
<string name="song_details.kbps">%d kbps</string>
|
||||
<string name="util.bytes_format.byte">0 B</string>
|
||||
<string name="util.bytes_format.gigabyte">0.00 GB</string>
|
||||
@ -484,7 +486,6 @@
|
||||
|
||||
<!-- Subsonic features -->
|
||||
<string name="settings.five_star_rating_title">Use five star rating for songs</string>
|
||||
<string name="settings.five_star_rating_description">Use five star rating system for songs instead of simply starring/unstarring items.
|
||||
</string>
|
||||
<string name="settings.five_star_rating_description">Use five star rating system for songs instead of simply starring/unstarring items.</string>
|
||||
|
||||
</resources>
|
||||
|
@ -53,6 +53,12 @@
|
||||
a:title="@string/settings.playback_control_title"
|
||||
a:key="playbackControlSettings"
|
||||
app:iconSpaceReserved="false">
|
||||
<CheckBoxPreference
|
||||
a:defaultValue="false"
|
||||
a:key="showNowPlayingDetails"
|
||||
a:summary="@string/settings.show_now_playing_details_summary"
|
||||
a:title="@string/settings.show_now_playing_details"
|
||||
app:iconSpaceReserved="false"/>
|
||||
<CheckBoxPreference
|
||||
a:defaultValue="true"
|
||||
a:key="useId3Tags"
|
||||
|
Loading…
x
Reference in New Issue
Block a user