2019-03-03 09:20:15 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2019 Hemanth Savarala.
|
|
|
|
*
|
|
|
|
* Licensed under the GNU General Public License v3
|
|
|
|
*
|
|
|
|
* This is free software: you can redistribute it and/or modify it under
|
|
|
|
* the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
* See the GNU General Public License for more details.
|
|
|
|
*/
|
|
|
|
|
2018-11-30 01:06:16 +00:00
|
|
|
package code.name.monkey.retromusic.helper.menu
|
|
|
|
|
|
|
|
import android.content.Intent
|
|
|
|
import android.view.MenuItem
|
|
|
|
import android.view.View
|
|
|
|
import android.widget.PopupMenu
|
|
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
|
|
import androidx.fragment.app.FragmentActivity
|
2019-03-04 03:55:09 +00:00
|
|
|
|
2018-11-30 01:06:16 +00:00
|
|
|
import code.name.monkey.retromusic.R
|
|
|
|
import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog
|
|
|
|
import code.name.monkey.retromusic.dialogs.DeleteSongsDialog
|
|
|
|
import code.name.monkey.retromusic.dialogs.SongDetailDialog
|
|
|
|
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
|
|
|
import code.name.monkey.retromusic.interfaces.PaletteColorHolder
|
|
|
|
import code.name.monkey.retromusic.model.Song
|
|
|
|
import code.name.monkey.retromusic.ui.activities.tageditor.AbsTagEditorActivity
|
|
|
|
import code.name.monkey.retromusic.ui.activities.tageditor.SongTagEditorActivity
|
|
|
|
import code.name.monkey.retromusic.util.MusicUtil
|
|
|
|
import code.name.monkey.retromusic.util.NavigationUtil
|
2019-04-05 05:49:40 +00:00
|
|
|
import code.name.monkey.retromusic.util.RingtoneManager
|
2018-11-30 01:06:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
object SongMenuHelper {
|
|
|
|
val MENU_RES = R.menu.menu_item_song
|
|
|
|
|
|
|
|
fun handleMenuClick(activity: FragmentActivity, song: Song, menuItemId: Int): Boolean {
|
|
|
|
when (menuItemId) {
|
|
|
|
R.id.action_set_as_ringtone -> {
|
2019-04-05 05:49:40 +00:00
|
|
|
if (RingtoneManager.requiresDialog(activity)) {
|
|
|
|
RingtoneManager.getDialog(activity)
|
|
|
|
}
|
|
|
|
val ringtoneManager = RingtoneManager(activity)
|
|
|
|
ringtoneManager.setRingtone(song)
|
2018-11-30 01:06:16 +00:00
|
|
|
return true
|
|
|
|
}
|
|
|
|
R.id.action_share -> {
|
|
|
|
activity.startActivity(Intent.createChooser(MusicUtil.createShareSongFileIntent(song, activity), null))
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
R.id.action_delete_from_device -> {
|
|
|
|
DeleteSongsDialog.create(song).show(activity.supportFragmentManager, "DELETE_SONGS")
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
R.id.action_add_to_playlist -> {
|
|
|
|
AddToPlaylistDialog.create(song).show(activity.supportFragmentManager, "ADD_PLAYLIST")
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
R.id.action_play_next -> {
|
|
|
|
MusicPlayerRemote.playNext(song)
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
R.id.action_add_to_current_playing -> {
|
|
|
|
MusicPlayerRemote.enqueue(song)
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
R.id.action_tag_editor -> {
|
|
|
|
val tagEditorIntent = Intent(activity, SongTagEditorActivity::class.java)
|
|
|
|
tagEditorIntent.putExtra(AbsTagEditorActivity.EXTRA_ID, song.id)
|
|
|
|
if (activity is PaletteColorHolder)
|
|
|
|
tagEditorIntent.putExtra(AbsTagEditorActivity.EXTRA_PALETTE, (activity as PaletteColorHolder).paletteColor)
|
|
|
|
activity.startActivity(tagEditorIntent)
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
R.id.action_details -> {
|
|
|
|
SongDetailDialog.create(song).show(activity.supportFragmentManager, "SONG_DETAILS")
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
R.id.action_go_to_album -> {
|
|
|
|
NavigationUtil.goToAlbum(activity, song.albumId)
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
R.id.action_go_to_artist -> {
|
|
|
|
NavigationUtil.goToArtist(activity, song.artistId)
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
abstract class OnClickSongMenu protected constructor(private val activity: AppCompatActivity) : View.OnClickListener, PopupMenu.OnMenuItemClickListener {
|
|
|
|
|
|
|
|
open val menuRes: Int
|
|
|
|
get() = MENU_RES
|
|
|
|
|
|
|
|
abstract val song: Song
|
|
|
|
|
|
|
|
override fun onClick(v: View) {
|
|
|
|
val popupMenu = PopupMenu(activity, v)
|
|
|
|
popupMenu.inflate(menuRes)
|
|
|
|
popupMenu.setOnMenuItemClickListener(this)
|
|
|
|
popupMenu.show()
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onMenuItemClick(item: MenuItem): Boolean {
|
|
|
|
return handleMenuClick(activity, song, item.itemId)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|