mirror of
https://github.com/clangen/musikcube.git
synced 2025-03-29 19:20:28 +00:00
Cleaned up, and (mostly) finished new context menus for tracks, artists,
albums, genres, and playlists. Also fixed a messed up string.
This commit is contained in:
parent
584c41cc1a
commit
eeafa9d7e8
@ -13,9 +13,9 @@ object Metadata {
|
||||
val ALBUM_ARTIST_ID = "album_artist_id"
|
||||
val GENRE = "genre"
|
||||
val TRACK_NUM = "track_num"
|
||||
val GENRE_ID = "visual_genre_id"
|
||||
val GENRE_ID = "genre_id"
|
||||
val ARTIST = "artist"
|
||||
val ARTIST_ID = "visual_artist_id"
|
||||
val ARTIST_ID = "artist_id"
|
||||
val THUMBNAIL_ID = "thumbnail_id"
|
||||
}
|
||||
}
|
||||
@ -26,6 +26,8 @@ object Metadata {
|
||||
val TITLE = "title"
|
||||
val ALBUM_ARTIST = "album_artist"
|
||||
val ALBUM_ARTIST_ID = "album_artist_id"
|
||||
val ARTIST = "artist"
|
||||
val ARTIST_ID = "artist_id"
|
||||
val THUMBNAIL_ID = "thumbnail_id"
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package io.casey.musikcube.remote.service.websocket.model
|
||||
|
||||
interface IAlbum : ICategoryValue {
|
||||
val artist: String
|
||||
val artistId: Long
|
||||
val albumArtist: String
|
||||
val albumArtistId: Long
|
||||
val name: String
|
||||
|
@ -9,6 +9,8 @@ class RemoteAlbum(val json: JSONObject) : IAlbum {
|
||||
override val id: Long get() = json.optLong(Metadata.Album.ID, -1)
|
||||
override val value: String get() = json.optString(Metadata.Album.TITLE, "")
|
||||
override val name: String get() = value
|
||||
override val artist: String get() = json.optString(Metadata.Album.ARTIST, "")
|
||||
override val artistId: Long get() =json.optLong(Metadata.Album.ARTIST_ID, -1)
|
||||
override val albumArtist: String get() = json.optString(Metadata.Album.ALBUM_ARTIST, "")
|
||||
override val albumArtistId: Long get() = json.optLong(Metadata.Album.ALBUM_ARTIST_ID, -1)
|
||||
override val thumbnailId: Long get() = json.optLong(Metadata.Album.THUMBNAIL_ID, -1)
|
||||
|
@ -17,6 +17,7 @@ import io.casey.musikcube.remote.injection.DaggerViewComponent
|
||||
import io.casey.musikcube.remote.injection.DataModule
|
||||
import io.casey.musikcube.remote.service.playback.PlaybackServiceFactory
|
||||
import io.casey.musikcube.remote.service.websocket.Messages
|
||||
import io.casey.musikcube.remote.service.websocket.model.IAlbum
|
||||
import io.casey.musikcube.remote.service.websocket.model.ICategoryValue
|
||||
import io.casey.musikcube.remote.service.websocket.model.IDataProvider
|
||||
import io.casey.musikcube.remote.service.websocket.model.ITrack
|
||||
@ -96,11 +97,16 @@ class ItemContextMenuMixin(private val activity: AppCompatActivity,
|
||||
fun createPlaylist(playlistName: String) {
|
||||
provider.createPlaylist(playlistName).subscribeBy(
|
||||
onNext = { id ->
|
||||
listener?.onPlaylistCreated(id)
|
||||
showSuccess(activity.getString(R.string.playlist_created, playlistName))
|
||||
if (id > 0L) {
|
||||
listener?.onPlaylistCreated(id)
|
||||
showSuccess(activity.getString(R.string.playlist_created, playlistName))
|
||||
}
|
||||
else {
|
||||
showError(activity.getString(R.string.playlist_not_created, playlistName))
|
||||
}
|
||||
},
|
||||
onError = {
|
||||
showSuccess(activity.getString(R.string.playlist_not_created, playlistName))
|
||||
showError(activity.getString(R.string.playlist_not_created, playlistName))
|
||||
})
|
||||
}
|
||||
|
||||
@ -156,9 +162,7 @@ class ItemContextMenuMixin(private val activity: AppCompatActivity,
|
||||
|
||||
fun showForTrack(track: ITrack, anchorView: View) {
|
||||
val popup = PopupMenu(activity, anchorView)
|
||||
popup.inflate(R.menu.generic_item_context_menu)
|
||||
|
||||
popup.menu.removeItem(R.id.menu_show_tracks)
|
||||
popup.inflate(R.menu.track_item_context_menu)
|
||||
|
||||
popup.setOnMenuItemClickListener { item ->
|
||||
val intent: Intent? = when (item.itemId) {
|
||||
@ -166,26 +170,17 @@ class ItemContextMenuMixin(private val activity: AppCompatActivity,
|
||||
addToPlaylist(track)
|
||||
null
|
||||
}
|
||||
R.id.menu_show_albums -> {
|
||||
R.id.menu_show_artist_albums -> {
|
||||
AlbumBrowseActivity.getStartIntent(
|
||||
activity, Messages.Category.ARTIST, track.artistId)
|
||||
}
|
||||
R.id.menu_show_artists -> {
|
||||
R.id.menu_show_artist_tracks -> {
|
||||
TrackListActivity.getStartIntent(
|
||||
activity,
|
||||
Messages.Category.ARTIST,
|
||||
track.artistId)
|
||||
}
|
||||
R.id.menu_show_genres -> {
|
||||
CategoryBrowseActivity.getStartIntent(
|
||||
activity,
|
||||
Messages.Category.GENRE,
|
||||
Messages.Category.ARTIST,
|
||||
track.artistId)
|
||||
}
|
||||
else -> {
|
||||
null
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
|
||||
if (intent != null) {
|
||||
@ -223,61 +218,74 @@ class ItemContextMenuMixin(private val activity: AppCompatActivity,
|
||||
showForPlaylist(value.value, value.id, anchorView)
|
||||
}
|
||||
else {
|
||||
val popup = PopupMenu(activity, anchorView)
|
||||
popup.inflate(R.menu.generic_item_context_menu)
|
||||
|
||||
if (value.type != Messages.Category.GENRE) {
|
||||
popup.menu.removeItem(R.id.menu_show_artists)
|
||||
val menuId = when (value.type) {
|
||||
Messages.Category.ARTIST -> R.menu.artist_item_context_menu
|
||||
Messages.Category.ALBUM_ARTIST -> R.menu.artist_item_context_menu
|
||||
Messages.Category.ALBUM -> R.menu.album_item_context_menu
|
||||
Messages.Category.GENRE -> R.menu.genre_item_context_menu
|
||||
else -> -1
|
||||
}
|
||||
|
||||
when (value.type) {
|
||||
Messages.Category.ARTIST -> popup.menu.removeItem(R.id.menu_show_artists)
|
||||
Messages.Category.ALBUM -> popup.menu.removeItem(R.id.menu_show_albums)
|
||||
Messages.Category.GENRE -> popup.menu.removeItem(R.id.menu_show_genres)
|
||||
}
|
||||
if (menuId != -1) {
|
||||
val popup = PopupMenu(activity, anchorView)
|
||||
popup.inflate(menuId)
|
||||
|
||||
popup.setOnMenuItemClickListener { item ->
|
||||
val intent: Intent? = when (item.itemId) {
|
||||
R.id.menu_add_to_playlist -> {
|
||||
addToPlaylist(value)
|
||||
null
|
||||
popup.setOnMenuItemClickListener { item ->
|
||||
val intent: Intent? = when (item.itemId) {
|
||||
R.id.menu_add_to_playlist -> {
|
||||
addToPlaylist(value)
|
||||
null
|
||||
}
|
||||
R.id.menu_show_artist_albums -> {
|
||||
if (value is IAlbum) {
|
||||
AlbumBrowseActivity.getStartIntent(
|
||||
activity, Messages.Category.ALBUM_ARTIST, value.albumArtistId)
|
||||
}
|
||||
else {
|
||||
null /* should never happen */
|
||||
}
|
||||
}
|
||||
R.id.menu_show_genre_albums -> {
|
||||
AlbumBrowseActivity.getStartIntent(activity, value.type, value.id)
|
||||
}
|
||||
R.id.menu_show_artist_tracks,
|
||||
R.id.menu_show_genre_tracks -> {
|
||||
TrackListActivity.getStartIntent(activity, value.type, value.id)
|
||||
}
|
||||
R.id.menu_show_artist_genres -> {
|
||||
CategoryBrowseActivity.getStartIntent(
|
||||
activity, Messages.Category.GENRE, value.type, value.id)
|
||||
}
|
||||
R.id.menu_show_genre_artists -> {
|
||||
CategoryBrowseActivity.getStartIntent(
|
||||
activity, Messages.Category.ARTIST, value.type, value.id)
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
R.id.menu_show_albums -> {
|
||||
AlbumBrowseActivity.getStartIntent(activity, value.type, value.id)
|
||||
}
|
||||
R.id.menu_show_tracks -> {
|
||||
TrackListActivity.getStartIntent(activity, value.type, value.id)
|
||||
}
|
||||
R.id.menu_show_genres -> {
|
||||
CategoryBrowseActivity.getStartIntent(
|
||||
activity, Messages.Category.GENRE, value.type, value.id)
|
||||
}
|
||||
R.id.menu_show_artists -> {
|
||||
CategoryBrowseActivity.getStartIntent(
|
||||
activity, Messages.Category.ARTIST, value.type, value.id)
|
||||
}
|
||||
else -> {
|
||||
null
|
||||
|
||||
if (intent != null) {
|
||||
activity.startActivity(intent)
|
||||
}
|
||||
|
||||
true
|
||||
}
|
||||
|
||||
if (intent != null) {
|
||||
activity.startActivity(intent)
|
||||
}
|
||||
|
||||
true
|
||||
popup.show()
|
||||
}
|
||||
|
||||
popup.show()
|
||||
}
|
||||
}
|
||||
|
||||
private fun deletePlaylistConfirmed(playlistId: Long, playlistName: String) {
|
||||
if (playlistId != -1L) {
|
||||
provider.deletePlaylist(playlistId).subscribeBy(
|
||||
onNext = {
|
||||
listener?.onPlaylistDeleted(playlistId)
|
||||
showSuccess(activity.getString(R.string.playlist_deleted, playlistName))
|
||||
onNext = { success ->
|
||||
if (success) {
|
||||
listener?.onPlaylistDeleted(playlistId)
|
||||
showSuccess(activity.getString(R.string.playlist_deleted, playlistName))
|
||||
}
|
||||
else {
|
||||
showSuccess(activity.getString(R.string.playlist_not_deleted, playlistName))
|
||||
}
|
||||
},
|
||||
onError = {
|
||||
showSuccess(activity.getString(R.string.playlist_not_deleted, playlistName))
|
||||
@ -292,6 +300,9 @@ class ItemContextMenuMixin(private val activity: AppCompatActivity,
|
||||
showSnackbar(activity.findViewById(android.R.id.content), message)
|
||||
|
||||
private fun showError(message: Int) =
|
||||
showError(activity.getString(message))
|
||||
|
||||
private fun showError(message: String) =
|
||||
showErrorSnackbar(activity.findViewById(android.R.id.content), message)
|
||||
|
||||
class ConfirmDeletePlaylistDialog : BaseDialogFragment() {
|
||||
|
@ -30,11 +30,11 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/fab_padding"
|
||||
android:backgroundTint="@color/color_primary"
|
||||
android:src="@drawable/ic_fab_add"
|
||||
android:scaleType="center"
|
||||
android:elevation="6dp"
|
||||
android:visibility="gone"
|
||||
app:backgroundTint="@color/color_primary"
|
||||
app:fabSize="mini"
|
||||
app:rippleColor="?colorAccent"/>
|
||||
|
||||
|
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/menu_add_to_playlist"
|
||||
android:title="@string/menu_add_to_playlist"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_artist_albums"
|
||||
android:title="@string/menu_show_artist_albums"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_artist_tracks"
|
||||
android:title="@string/menu_show_artist_tracks"/>
|
||||
</menu>
|
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/menu_add_to_playlist"
|
||||
android:title="@string/menu_add_to_playlist"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_artist_albums"
|
||||
android:title="@string/menu_show_albums"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_artist_genres"
|
||||
android:title="@string/menu_show_genres"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_artist_tracks"
|
||||
android:title="@string/menu_show_tracks"/>
|
||||
</menu>
|
@ -1,23 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_add_to_playlist"
|
||||
android:title="@string/menu_add_to_playlist"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_artists"
|
||||
android:id="@+id/menu_show_genre_artists"
|
||||
android:title="@string/menu_show_artists"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_albums"
|
||||
android:id="@+id/menu_show_genre_albums"
|
||||
android:title="@string/menu_show_albums"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_genres"
|
||||
android:title="@string/menu_show_genres"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_tracks"
|
||||
android:id="@+id/menu_show_genre_tracks"
|
||||
android:title="@string/menu_show_tracks"/>
|
||||
</menu>
|
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/menu_add_to_playlist"
|
||||
android:title="@string/menu_add_to_playlist"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_artist_tracks"
|
||||
android:title="@string/menu_show_artist_tracks"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_show_artist_albums"
|
||||
android:title="@string/menu_show_albums"/>
|
||||
</menu>
|
@ -67,7 +67,10 @@
|
||||
<string name="menu_add_to_playlist">add to playlist</string>
|
||||
<string name="menu_show_tracks">songs</string>
|
||||
<string name="menu_show_albums">albums</string>
|
||||
<string name="menu_show_artists">artist</string>
|
||||
<string name="menu_show_artists">artists</string>
|
||||
<string name="menu_show_artist">artist</string>
|
||||
<string name="menu_show_artist_albums">artist albums</string>
|
||||
<string name="menu_show_artist_tracks">artist songs</string>
|
||||
<string name="menu_show_genres">genres</string>
|
||||
<string name="menu_delete_playlist">delete</string>
|
||||
<string name="menu_play_playlist">play now</string>
|
||||
@ -129,6 +132,6 @@
|
||||
<string name="playlist_created">playlist \'%s\' created</string>
|
||||
<string name="playlist_not_created">could not create playlist \'%s\'</string>
|
||||
<string name="playlist_deleted">playlist \'%s\' deleted</string>
|
||||
<string name="playlist_not_deleted">could not create playlist \'%s\'</string>
|
||||
<string name="playlist_not_deleted">could not delete playlist \'%s\'</string>
|
||||
|
||||
</resources>
|
||||
|
Loading…
x
Reference in New Issue
Block a user