Adding now playing themes and KOTLIN conversion
This commit is contained in:
parent
d03ae1aadb
commit
df37529db8
131 changed files with 5398 additions and 5304 deletions
|
@ -1,84 +0,0 @@
|
|||
package code.name.monkey.retromusic.dialogs;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.loaders.PlaylistLoader;
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.ui.adapter.playlist.AddToPlaylist;
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid), Aidan Follestad (afollestad)
|
||||
*/
|
||||
public class AddToPlaylistDialog extends RoundedBottomSheetDialogFragment {
|
||||
|
||||
@BindView(R.id.playlists)
|
||||
RecyclerView playlist;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
@NonNull
|
||||
public static AddToPlaylistDialog create(Song song) {
|
||||
ArrayList<Song> list = new ArrayList<>();
|
||||
list.add(song);
|
||||
return create(list);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static AddToPlaylistDialog create(ArrayList<Song> songs) {
|
||||
AddToPlaylistDialog dialog = new AddToPlaylistDialog();
|
||||
Bundle args = new Bundle();
|
||||
args.putParcelableArrayList("songs", songs);
|
||||
dialog.setArguments(args);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
View layout = inflater.inflate(R.layout.dialog_add_to_playlist, container, false);
|
||||
ButterKnife.bind(this, layout);
|
||||
return layout;
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@OnClick(R.id.action_add_playlist)
|
||||
void newPlaylist() {
|
||||
final ArrayList<Song> songs = getArguments().getParcelableArrayList("songs");
|
||||
CreatePlaylistDialog.create(songs)
|
||||
.show(getActivity().getSupportFragmentManager(), "ADD_TO_PLAYLIST");
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
title.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
final ArrayList<Song> songs = getArguments().getParcelableArrayList("songs");
|
||||
final ArrayList<Playlist> playlists = PlaylistLoader.INSTANCE.getAllPlaylists(getActivity()).blockingFirst();
|
||||
final AddToPlaylist playlistAdapter = new AddToPlaylist(getActivity(), playlists, R.layout.item_playlist, songs, getDialog());
|
||||
playlist.setLayoutManager(new LinearLayoutManager(getContext()));
|
||||
playlist.setItemAnimator(new DefaultItemAnimator());
|
||||
playlist.setAdapter(playlistAdapter);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
package code.name.monkey.retromusic.dialogs
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.DefaultItemAnimator
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import butterknife.ButterKnife
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.loaders.PlaylistLoader
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.ui.adapter.playlist.AddToPlaylist
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
||||
import kotlinx.android.synthetic.main.dialog_add_to_playlist.*
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid), Aidan Follestad (afollestad)
|
||||
*/
|
||||
class AddToPlaylistDialog : RoundedBottomSheetDialogFragment() {
|
||||
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
val layout = inflater.inflate(R.layout.dialog_add_to_playlist, container, false)
|
||||
ButterKnife.bind(this, layout)
|
||||
return layout
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
actionAddPlaylist.setOnClickListener {
|
||||
val songs = arguments!!.getParcelableArrayList<Song>("songs")
|
||||
CreatePlaylistDialog.create(songs).show(activity!!.supportFragmentManager, "ADD_TO_PLAYLIST")
|
||||
dismiss()
|
||||
}
|
||||
|
||||
bannerTitle.setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||
val songs = arguments!!.getParcelableArrayList<Song>("songs")
|
||||
val playlists = PlaylistLoader.getAllPlaylists(activity!!).blockingFirst()
|
||||
val playlistAdapter = AddToPlaylist(activity!!, playlists, R.layout.item_playlist, songs!!, dialog)
|
||||
recyclerView.apply {
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
itemAnimator = DefaultItemAnimator()
|
||||
adapter = playlistAdapter
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun create(song: Song): AddToPlaylistDialog {
|
||||
val list = ArrayList<Song>()
|
||||
list.add(song)
|
||||
return create(list)
|
||||
}
|
||||
|
||||
fun create(songs: ArrayList<Song>): AddToPlaylistDialog {
|
||||
val dialog = AddToPlaylistDialog()
|
||||
val args = Bundle()
|
||||
args.putParcelableArrayList("songs", songs)
|
||||
dialog.arguments = args
|
||||
return dialog
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
package code.name.monkey.retromusic.dialogs;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
|
||||
import com.afollestad.materialdialogs.DialogAction;
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.model.smartplaylist.AbsSmartPlaylist;
|
||||
|
||||
|
||||
public class ClearSmartPlaylistDialog extends DialogFragment {
|
||||
|
||||
@NonNull
|
||||
public static ClearSmartPlaylistDialog create(AbsSmartPlaylist playlist) {
|
||||
ClearSmartPlaylistDialog dialog = new ClearSmartPlaylistDialog();
|
||||
Bundle args = new Bundle();
|
||||
args.putParcelable("playlist", playlist);
|
||||
dialog.setArguments(args);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
//noinspection unchecked
|
||||
final AbsSmartPlaylist playlist = getArguments().getParcelable("playlist");
|
||||
int title = R.string.clear_playlist_title;
|
||||
//noinspection ConstantConditions
|
||||
CharSequence content = Html.fromHtml(getString(R.string.clear_playlist_x, playlist.name));
|
||||
|
||||
return new MaterialDialog.Builder(getActivity())
|
||||
.title(title)
|
||||
.content(content)
|
||||
.positiveText(R.string.clear_action)
|
||||
.negativeText(android.R.string.cancel)
|
||||
.onPositive(new MaterialDialog.SingleButtonCallback() {
|
||||
@Override
|
||||
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
|
||||
if (getActivity() == null) {
|
||||
return;
|
||||
}
|
||||
playlist.clear(getActivity());
|
||||
}
|
||||
})
|
||||
.build();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package code.name.monkey.retromusic.dialogs
|
||||
|
||||
import android.app.Dialog
|
||||
import android.os.Bundle
|
||||
import android.text.Html
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.model.smartplaylist.AbsSmartPlaylist
|
||||
import com.afollestad.materialdialogs.MaterialDialog
|
||||
|
||||
|
||||
class ClearSmartPlaylistDialog : DialogFragment() {
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
|
||||
val playlist = arguments!!.getParcelable<AbsSmartPlaylist>("playlist")
|
||||
val title = R.string.clear_playlist_title
|
||||
|
||||
val content = Html.fromHtml(getString(R.string.clear_playlist_x, playlist!!.name))
|
||||
|
||||
return MaterialDialog.Builder(activity!!)
|
||||
.title(title)
|
||||
.content(content)
|
||||
.positiveText(R.string.clear_action)
|
||||
.negativeText(android.R.string.cancel)
|
||||
.onPositive { _, _ ->
|
||||
if (activity == null) {
|
||||
return@onPositive
|
||||
}
|
||||
playlist.clear(activity)
|
||||
}
|
||||
.build()
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun create(playlist: AbsSmartPlaylist): ClearSmartPlaylistDialog {
|
||||
val dialog = ClearSmartPlaylistDialog()
|
||||
val args = Bundle()
|
||||
args.putParcelable("playlist", playlist)
|
||||
dialog.arguments = args
|
||||
return dialog
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,123 +0,0 @@
|
|||
package code.name.monkey.retromusic.dialogs;
|
||||
|
||||
import android.content.res.ColorStateList;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.MaterialUtil;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.util.PlaylistsUtil;
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment;
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid), Aidan Follestad (afollestad)
|
||||
*/
|
||||
public class CreatePlaylistDialog extends RoundedBottomSheetDialogFragment {
|
||||
|
||||
@BindView(R.id.option_1)
|
||||
TextInputEditText playlistName;
|
||||
|
||||
@BindView(R.id.action_new_playlist)
|
||||
TextInputLayout textInputLayout;
|
||||
|
||||
@BindView(R.id.action_cancel)
|
||||
MaterialButton actionCancel;
|
||||
|
||||
@BindView(R.id.action_create)
|
||||
MaterialButton actionCreate;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
@NonNull
|
||||
public static CreatePlaylistDialog create() {
|
||||
return create((Song) null);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static CreatePlaylistDialog create(@Nullable Song song) {
|
||||
ArrayList<Song> list = new ArrayList<>();
|
||||
if (song != null) {
|
||||
list.add(song);
|
||||
}
|
||||
return create(list);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static CreatePlaylistDialog create(ArrayList<Song> songs) {
|
||||
CreatePlaylistDialog dialog = new CreatePlaylistDialog();
|
||||
Bundle args = new Bundle();
|
||||
args.putParcelableArrayList("songs", songs);
|
||||
dialog.setArguments(args);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View layout = inflater.inflate(R.layout.dialog_create_playlist, container, false);
|
||||
ButterKnife.bind(this, layout);
|
||||
return layout;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
int accentColor = ThemeStore.accentColor(Objects.requireNonNull(getContext()));
|
||||
|
||||
MaterialUtil.setTint(actionCreate, true);
|
||||
|
||||
MaterialUtil.setTint(actionCancel, false);
|
||||
|
||||
MaterialUtil.setTint(textInputLayout, true);
|
||||
|
||||
|
||||
playlistName.setHintTextColor(ColorStateList.valueOf(accentColor));
|
||||
playlistName.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
|
||||
title.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
}
|
||||
|
||||
@OnClick({R.id.action_cancel, R.id.action_create})
|
||||
void actions(View view) {
|
||||
switch (view.getId()) {
|
||||
case R.id.action_cancel:
|
||||
dismiss();
|
||||
break;
|
||||
case R.id.action_create:
|
||||
if (getActivity() == null) {
|
||||
return;
|
||||
}
|
||||
if (!playlistName.getText().toString().trim().isEmpty()) {
|
||||
final int playlistId = PlaylistsUtil
|
||||
.createPlaylist(getActivity(), playlistName.getText().toString());
|
||||
if (playlistId != -1 && getActivity() != null) {
|
||||
//noinspection unchecked
|
||||
ArrayList<Song> songs = getArguments().getParcelableArrayList("songs");
|
||||
if (songs != null) {
|
||||
PlaylistsUtil.addToPlaylist(getActivity(), songs, playlistId, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
package code.name.monkey.retromusic.dialogs
|
||||
|
||||
import android.content.Context
|
||||
import android.content.res.ColorStateList
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import butterknife.ButterKnife
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.MaterialUtil
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.util.PlaylistsUtil
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
||||
import kotlinx.android.synthetic.main.dialog_playlist.*
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* @author Karim Abou Zeid (kabouzeid), Aidan Follestad (afollestad)
|
||||
*/
|
||||
class CreatePlaylistDialog : RoundedBottomSheetDialogFragment() {
|
||||
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
val layout = inflater.inflate(R.layout.dialog_playlist, container, false)
|
||||
ButterKnife.bind(this, layout)
|
||||
return layout
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
val accentColor = ThemeStore.accentColor(Objects.requireNonNull<Context>(context))
|
||||
|
||||
MaterialUtil.setTint(actionCreate, true)
|
||||
MaterialUtil.setTint(actionCancel, false)
|
||||
MaterialUtil.setTint(actionNewPlaylistContainer, true)
|
||||
|
||||
actionNewPlaylist.setHintTextColor(ColorStateList.valueOf(accentColor))
|
||||
actionNewPlaylist.setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||
bannerTitle.setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||
|
||||
|
||||
actionCancel.setOnClickListener { dismiss() }
|
||||
actionCreate.setOnClickListener {
|
||||
if (activity == null) {
|
||||
return@setOnClickListener
|
||||
}
|
||||
if (!actionNewPlaylist!!.text!!.toString().trim { it <= ' ' }.isEmpty()) {
|
||||
val playlistId = PlaylistsUtil
|
||||
.createPlaylist(activity!!, actionNewPlaylist!!.text!!.toString())
|
||||
if (playlistId != -1 && activity != null) {
|
||||
|
||||
val songs = arguments!!.getParcelableArrayList<Song>("songs")
|
||||
if (songs != null) {
|
||||
PlaylistsUtil.addToPlaylist(activity!!, songs, playlistId, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@JvmOverloads
|
||||
fun create(song: Song? = null): CreatePlaylistDialog {
|
||||
val list = ArrayList<Song>()
|
||||
if (song != null) {
|
||||
list.add(song)
|
||||
}
|
||||
return create(list)
|
||||
}
|
||||
|
||||
fun create(songs: ArrayList<Song>): CreatePlaylistDialog {
|
||||
val dialog = CreatePlaylistDialog()
|
||||
val args = Bundle()
|
||||
args.putParcelableArrayList("songs", songs)
|
||||
dialog.arguments = args
|
||||
return dialog
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,102 +0,0 @@
|
|||
package code.name.monkey.retromusic.dialogs;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.MaterialUtil;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.util.PlaylistsUtil;
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment;
|
||||
|
||||
|
||||
public class DeletePlaylistDialog extends RoundedBottomSheetDialogFragment {
|
||||
|
||||
@BindView(R.id.action_delete)
|
||||
MaterialButton actionDelete;
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
@BindView(R.id.action_cancel)
|
||||
MaterialButton actionCancel;
|
||||
|
||||
@NonNull
|
||||
public static DeletePlaylistDialog create(Playlist playlist) {
|
||||
ArrayList<Playlist> list = new ArrayList<>();
|
||||
list.add(playlist);
|
||||
return create(list);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static DeletePlaylistDialog create(ArrayList<Playlist> playlists) {
|
||||
DeletePlaylistDialog dialog = new DeletePlaylistDialog();
|
||||
Bundle args = new Bundle();
|
||||
args.putParcelableArrayList("playlists", playlists);
|
||||
dialog.setArguments(args);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
View layout = inflater.inflate(R.layout.dialog_delete, container, false);
|
||||
ButterKnife.bind(this, layout);
|
||||
return layout;
|
||||
}
|
||||
|
||||
@SuppressWarnings("ConstantConditions")
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
//noinspection unchecked
|
||||
final ArrayList<Playlist> playlists = getArguments().getParcelableArrayList("playlists");
|
||||
int title;
|
||||
CharSequence content;
|
||||
//noinspection ConstantConditions
|
||||
if (playlists.size() > 1) {
|
||||
content = Html.fromHtml(getString(R.string.delete_x_playlists, playlists.size()));
|
||||
} else {
|
||||
content = Html.fromHtml(getString(R.string.delete_playlist_x, playlists.get(0).name));
|
||||
}
|
||||
this.title.setText(content);
|
||||
this.title.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
|
||||
actionDelete.setText(R.string.action_delete);
|
||||
|
||||
MaterialUtil.setTint(actionDelete, true);
|
||||
MaterialUtil.setTint(actionCancel, false);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@OnClick({R.id.action_cancel, R.id.action_delete})
|
||||
void actions(View view) {
|
||||
final ArrayList<Playlist> playlists = getArguments().getParcelableArrayList("playlists");
|
||||
switch (view.getId()) {
|
||||
case R.id.action_delete:
|
||||
if (getActivity() == null)
|
||||
return;
|
||||
PlaylistsUtil.deletePlaylists(getActivity(), playlists);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
package code.name.monkey.retromusic.dialogs
|
||||
|
||||
import android.os.Bundle
|
||||
import android.text.Html
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import butterknife.ButterKnife
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.model.Playlist
|
||||
import code.name.monkey.retromusic.util.PlaylistsUtil
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
||||
import kotlinx.android.synthetic.main.dialog_remove_from_playlist.*
|
||||
import java.util.*
|
||||
|
||||
|
||||
class DeletePlaylistDialog : RoundedBottomSheetDialogFragment() {
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
val layout = inflater.inflate(R.layout.dialog_remove_from_playlist, container, false)
|
||||
ButterKnife.bind(this, layout)
|
||||
return layout
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
val playlists = arguments!!.getParcelableArrayList<Playlist>("playlists")
|
||||
val content: CharSequence
|
||||
|
||||
content = if (playlists!!.size > 1) {
|
||||
Html.fromHtml(getString(R.string.delete_x_playlists, playlists.size))
|
||||
} else {
|
||||
Html.fromHtml(getString(R.string.delete_playlist_x, playlists[0].name))
|
||||
}
|
||||
bannerTitle.text = content
|
||||
bannerTitle.setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||
|
||||
actionRemove.setText(R.string.action_delete)
|
||||
actionRemove.setTextColor(ThemeStore.textColorSecondary(context!!))
|
||||
actionCancel.setTextColor(ThemeStore.textColorSecondary(context!!))
|
||||
|
||||
actionCancel.setOnClickListener { dismiss() }
|
||||
actionRemove.setOnClickListener {
|
||||
PlaylistsUtil.deletePlaylists(activity!!, playlists)
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
companion object {
|
||||
|
||||
fun create(playlist: Playlist): DeletePlaylistDialog {
|
||||
val list = ArrayList<Playlist>()
|
||||
list.add(playlist)
|
||||
return create(list)
|
||||
}
|
||||
|
||||
fun create(playlist: ArrayList<Playlist>): DeletePlaylistDialog {
|
||||
val dialog = DeletePlaylistDialog()
|
||||
val args = Bundle()
|
||||
args.putParcelableArrayList("playlist", playlist)
|
||||
dialog.arguments = args
|
||||
return dialog
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,167 +0,0 @@
|
|||
package code.name.monkey.retromusic.dialogs;
|
||||
|
||||
import android.content.res.ColorStateList;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.widget.AppCompatTextView;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import butterknife.BindView;
|
||||
import butterknife.BindViews;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.RetroApplication;
|
||||
import code.name.monkey.retromusic.ui.activities.MainActivity;
|
||||
import code.name.monkey.retromusic.ui.fragments.mainactivity.folders.FoldersFragment;
|
||||
import code.name.monkey.retromusic.util.Compressor;
|
||||
import code.name.monkey.retromusic.util.NavigationUtil;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
import code.name.monkey.retromusic.views.CircularImageView;
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
import static code.name.monkey.retromusic.Constants.USER_PROFILE;
|
||||
|
||||
public class MainOptionsBottomSheetDialogFragment extends RoundedBottomSheetDialogFragment {
|
||||
|
||||
private static final String TAG = "MainOptionsBottomSheetD";
|
||||
private static ButterKnife.Setter<MaterialButton, Integer> textColor = (view, value, index) -> view.setTextColor(ColorStateList.valueOf(value));
|
||||
|
||||
|
||||
@BindViews({R.id.action_folders, R.id.action_about, R.id.action_buy_pro, R.id.action_rate,
|
||||
R.id.action_sleep_timer})
|
||||
List<MaterialButton> materialButtons;
|
||||
|
||||
@BindView(R.id.user_image_bottom)
|
||||
CircularImageView userImageBottom;
|
||||
|
||||
@BindView(R.id.title_welcome)
|
||||
AppCompatTextView titleWelcome;
|
||||
|
||||
@BindView(R.id.text)
|
||||
AppCompatTextView text;
|
||||
|
||||
private CompositeDisposable disposable = new CompositeDisposable();
|
||||
|
||||
public static MainOptionsBottomSheetDialogFragment newInstance(int selected_id) {
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putInt("selected_id", selected_id);
|
||||
MainOptionsBottomSheetDialogFragment fragment = new MainOptionsBottomSheetDialogFragment();
|
||||
fragment.setArguments(bundle);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
public static MainOptionsBottomSheetDialogFragment newInstance() {
|
||||
return new MainOptionsBottomSheetDialogFragment();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
View layout = inflater.inflate(R.layout.fragment_main_options, container, false);
|
||||
ButterKnife.bind(this, layout);
|
||||
layout.findViewById(R.id.action_buy_pro).setVisibility(RetroApplication.Companion.isProVersion() ? View.GONE : View.VISIBLE);
|
||||
//ButterKnife.apply(materialButtons, textColor, ThemeStore.textColorPrimary(getContext()));
|
||||
return layout;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
text.setTextColor(ThemeStore.textColorSecondary(getContext()));
|
||||
titleWelcome.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
titleWelcome.setText(String.format("%s %s!", getTimeOfTheDay(), PreferenceUtil.getInstance().getUserName()));
|
||||
loadImageFromStorage();
|
||||
}
|
||||
|
||||
@OnClick({R.id.action_folders, R.id.user_info_container, R.id.action_settings, R.id.action_sleep_timer, R.id.action_rate,
|
||||
R.id.action_buy_pro, R.id.action_about})
|
||||
void onClick(View view) {
|
||||
MainActivity mainActivity = (MainActivity) getActivity();
|
||||
if (mainActivity == null) {
|
||||
return;
|
||||
}
|
||||
switch (view.getId()) {
|
||||
case R.id.action_folders:
|
||||
mainActivity.setCurrentFragment(FoldersFragment.newInstance(getContext()), true, FoldersFragment.TAG);
|
||||
break;
|
||||
case R.id.action_settings:
|
||||
NavigationUtil.goToSettings(mainActivity);
|
||||
break;
|
||||
case R.id.action_about:
|
||||
NavigationUtil.goToAbout(mainActivity);
|
||||
break;
|
||||
case R.id.action_buy_pro:
|
||||
NavigationUtil.goToProVersion(mainActivity);
|
||||
break;
|
||||
case R.id.action_sleep_timer:
|
||||
if (getFragmentManager() != null) {
|
||||
new SleepTimerDialog().show(getFragmentManager(), TAG);
|
||||
}
|
||||
break;
|
||||
case R.id.user_info_container:
|
||||
NavigationUtil.goToUserInfo(getActivity());
|
||||
break;
|
||||
case R.id.action_rate:
|
||||
NavigationUtil.goToPlayStore(mainActivity);
|
||||
break;
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
||||
private String getTimeOfTheDay() {
|
||||
String message = getString(R.string.title_good_day);
|
||||
Calendar c = Calendar.getInstance();
|
||||
int timeOfDay = c.get(Calendar.HOUR_OF_DAY);
|
||||
|
||||
if (timeOfDay >= 0 && timeOfDay < 6) {
|
||||
message = getString(R.string.title_good_night);
|
||||
} else if (timeOfDay >= 6 && timeOfDay < 12) {
|
||||
message = getString(R.string.title_good_morning);
|
||||
} else if (timeOfDay >= 12 && timeOfDay < 16) {
|
||||
message = getString(R.string.title_good_afternoon);
|
||||
} else if (timeOfDay >= 16 && timeOfDay < 20) {
|
||||
message = getString(R.string.title_good_evening);
|
||||
} else if (timeOfDay >= 20 && timeOfDay < 24) {
|
||||
message = getString(R.string.title_good_night);
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
private void loadImageFromStorage() {
|
||||
//noinspection ConstantConditions
|
||||
disposable.add(new Compressor(getContext())
|
||||
.setMaxHeight(300)
|
||||
.setMaxWidth(300)
|
||||
.setQuality(75)
|
||||
.setCompressFormat(Bitmap.CompressFormat.WEBP)
|
||||
.compressToBitmapAsFlowable(
|
||||
new File(PreferenceUtil.getInstance().getProfileImage(),USER_PROFILE))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(userImageBottom::setImageBitmap,
|
||||
throwable -> userImageBottom.setImageDrawable(ContextCompat
|
||||
.getDrawable(getContext(), R.drawable.ic_person_flat))));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
package code.name.monkey.retromusic.dialogs
|
||||
|
||||
import android.graphics.Bitmap
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.content.ContextCompat
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.retromusic.Constants.USER_PROFILE
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.ui.activities.MainActivity
|
||||
import code.name.monkey.retromusic.util.Compressor
|
||||
import code.name.monkey.retromusic.util.NavigationUtil
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import kotlinx.android.synthetic.main.fragment_main_options.*
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
class MainOptionsBottomSheetDialogFragment : RoundedBottomSheetDialogFragment(), View.OnClickListener {
|
||||
|
||||
private val disposable = CompositeDisposable()
|
||||
|
||||
private val timeOfTheDay: String
|
||||
get() {
|
||||
var message = getString(R.string.title_good_day)
|
||||
val c = Calendar.getInstance()
|
||||
val timeOfDay = c.get(Calendar.HOUR_OF_DAY)
|
||||
|
||||
when (timeOfDay) {
|
||||
in 0..5 -> message = getString(R.string.title_good_night)
|
||||
in 6..11 -> message = getString(R.string.title_good_morning)
|
||||
in 12..15 -> message = getString(R.string.title_good_afternoon)
|
||||
in 16..19 -> message = getString(R.string.title_good_evening)
|
||||
in 20..23 -> message = getString(R.string.title_good_night)
|
||||
}
|
||||
return message
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
disposable.clear()
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.fragment_main_options, container, false)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
text!!.setTextColor(ThemeStore.textColorSecondary(context!!))
|
||||
titleWelcome!!.setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||
titleWelcome!!.text = String.format("%s %s!", timeOfTheDay, PreferenceUtil.getInstance().userName)
|
||||
loadImageFromStorage()
|
||||
|
||||
actionSettings.setOnClickListener(this)
|
||||
actionAbout.setOnClickListener(this)
|
||||
actionSleepTimer.setOnClickListener(this)
|
||||
userInfoContainer.setOnClickListener(this)
|
||||
actionRate.setOnClickListener(this)
|
||||
}
|
||||
|
||||
|
||||
override fun onClick(view: View) {
|
||||
val mainActivity = activity as MainActivity? ?: return
|
||||
when (view.id) {
|
||||
R.id.actionSettings -> NavigationUtil.goToSettings(mainActivity)
|
||||
R.id.actionAbout -> NavigationUtil.goToAbout(mainActivity)
|
||||
R.id.actionSleepTimer -> if (fragmentManager != null) {
|
||||
SleepTimerDialog().show(fragmentManager!!, TAG)
|
||||
}
|
||||
R.id.userInfoContainer -> NavigationUtil.goToUserInfo(activity!!)
|
||||
R.id.actionRate -> NavigationUtil.goToPlayStore(mainActivity)
|
||||
}
|
||||
dismiss()
|
||||
}
|
||||
|
||||
private fun loadImageFromStorage() {
|
||||
|
||||
disposable.add(Compressor(context!!)
|
||||
.setMaxHeight(300)
|
||||
.setMaxWidth(300)
|
||||
.setQuality(75)
|
||||
.setCompressFormat(Bitmap.CompressFormat.WEBP)
|
||||
.compressToBitmapAsFlowable(
|
||||
File(PreferenceUtil.getInstance().profileImage, USER_PROFILE))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ userImage!!.setImageBitmap(it) }, {
|
||||
userImage!!.setImageDrawable(ContextCompat
|
||||
.getDrawable(context!!, R.drawable.ic_person_flat))
|
||||
}, {
|
||||
|
||||
}))
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
private const val TAG: String = "MainOptionsBottomSheetD"
|
||||
|
||||
fun newInstance(selected_id: Int): MainOptionsBottomSheetDialogFragment {
|
||||
val bundle = Bundle()
|
||||
bundle.putInt("selected_id", selected_id)
|
||||
val fragment = MainOptionsBottomSheetDialogFragment()
|
||||
fragment.arguments = bundle
|
||||
return fragment
|
||||
}
|
||||
|
||||
fun newInstance(): MainOptionsBottomSheetDialogFragment {
|
||||
return MainOptionsBottomSheetDialogFragment()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -6,40 +6,17 @@ import android.text.Html
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import butterknife.BindView
|
||||
import butterknife.ButterKnife
|
||||
import butterknife.OnClick
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.model.PlaylistSong
|
||||
import code.name.monkey.retromusic.util.PlaylistsUtil
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
||||
import kotlinx.android.synthetic.main.dialog_remove_from_playlist.*
|
||||
import java.util.*
|
||||
|
||||
|
||||
class RemoveFromPlaylistDialog : RoundedBottomSheetDialogFragment() {
|
||||
@BindView(R.id.action_remove)
|
||||
internal var remove: TextView? = null
|
||||
|
||||
@BindView(R.id.title)
|
||||
internal var title: TextView? = null
|
||||
|
||||
@BindView(R.id.action_cancel)
|
||||
internal var cancel: TextView? = null
|
||||
|
||||
@OnClick(R.id.action_cancel, R.id.action_remove)
|
||||
internal fun actions(view: View) {
|
||||
val songs = arguments!!.getParcelableArrayList<PlaylistSong>("songs")
|
||||
when (view.id) {
|
||||
R.id.action_remove -> {
|
||||
if (activity == null)
|
||||
return
|
||||
PlaylistsUtil.removeFromPlaylist(activity!!, songs!!)
|
||||
}
|
||||
}
|
||||
dismiss()
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
val layout = inflater.inflate(R.layout.dialog_remove_from_playlist, container, false)
|
||||
|
@ -64,12 +41,17 @@ class RemoveFromPlaylistDialog : RoundedBottomSheetDialogFragment() {
|
|||
title = R.string.remove_song_from_playlist_title
|
||||
content = Html.fromHtml(getString(R.string.remove_song_x_from_playlist, songs!![0].title))
|
||||
}
|
||||
this.remove!!.text = content
|
||||
this.title!!.setText(title)
|
||||
actionRemove.text = content
|
||||
bannerTitle.setText(title)
|
||||
|
||||
this.title!!.setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||
this.remove!!.setTextColor(ThemeStore.textColorSecondary(context!!))
|
||||
this.cancel!!.setTextColor(ThemeStore.textColorSecondary(context!!))
|
||||
bannerTitle.setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||
actionRemove.setTextColor(ThemeStore.textColorSecondary(context!!))
|
||||
actionCancel.setTextColor(ThemeStore.textColorSecondary(context!!))
|
||||
|
||||
actionRemove.setOnClickListener {
|
||||
PlaylistsUtil.removeFromPlaylist(activity!!, songs)
|
||||
}
|
||||
actionCancel.setOnClickListener { dismiss() }
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -1,98 +0,0 @@
|
|||
package code.name.monkey.retromusic.dialogs;
|
||||
|
||||
import android.content.res.ColorStateList;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.material.button.MaterialButton;
|
||||
import com.google.android.material.textfield.TextInputEditText;
|
||||
import com.google.android.material.textfield.TextInputLayout;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnClick;
|
||||
import code.name.monkey.appthemehelper.ThemeStore;
|
||||
import code.name.monkey.appthemehelper.util.MaterialUtil;
|
||||
import code.name.monkey.retromusic.R;
|
||||
import code.name.monkey.retromusic.util.PlaylistsUtil;
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment;
|
||||
|
||||
public class RenamePlaylistDialog extends RoundedBottomSheetDialogFragment {
|
||||
|
||||
@BindView(R.id.title)
|
||||
TextView title;
|
||||
|
||||
@BindView(R.id.option_1)
|
||||
TextInputEditText playlistName;
|
||||
|
||||
@BindView(R.id.action_new_playlist)
|
||||
TextInputLayout textInputLayout;
|
||||
|
||||
@BindView(R.id.action_cancel)
|
||||
MaterialButton actionCancel;
|
||||
|
||||
@BindView(R.id.action_rename)
|
||||
MaterialButton rename;
|
||||
|
||||
@NonNull
|
||||
public static RenamePlaylistDialog create(long playlistId) {
|
||||
RenamePlaylistDialog dialog = new RenamePlaylistDialog();
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("playlist_id", playlistId);
|
||||
dialog.setArguments(args);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@OnClick({R.id.action_cancel, R.id.action_rename})
|
||||
void actions(View view) {
|
||||
switch (view.getId()) {
|
||||
case R.id.action_cancel:
|
||||
dismiss();
|
||||
break;
|
||||
case R.id.action_rename:
|
||||
if (!playlistName.toString().trim().equals("")) {
|
||||
long playlistId = getArguments().getLong("playlist_id");
|
||||
PlaylistsUtil.renamePlaylist(getActivity(), playlistId,
|
||||
playlistName.getText().toString());
|
||||
}
|
||||
break;
|
||||
}
|
||||
dismiss();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
View layout = inflater.inflate(R.layout.dialog_playlist_rename, container, false);
|
||||
ButterKnife.bind(this, layout);
|
||||
return layout;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
int accentColor = ThemeStore.accentColor(Objects.requireNonNull(getContext()));
|
||||
MaterialUtil.setTint(rename,true);
|
||||
MaterialUtil.setTint(actionCancel,false);
|
||||
MaterialUtil.setTint(textInputLayout,false);
|
||||
|
||||
playlistName.setHintTextColor(ColorStateList.valueOf(accentColor));
|
||||
playlistName.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
|
||||
title.setTextColor(ThemeStore.textColorPrimary(getContext()));
|
||||
|
||||
long playlistId = 0;
|
||||
if (getArguments() != null) {
|
||||
playlistId = getArguments().getLong("playlist_id");
|
||||
}
|
||||
playlistName.setText(PlaylistsUtil.getNameForPlaylist(getActivity(), playlistId));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package code.name.monkey.retromusic.dialogs
|
||||
|
||||
import android.content.res.ColorStateList
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import butterknife.ButterKnife
|
||||
import code.name.monkey.appthemehelper.ThemeStore
|
||||
import code.name.monkey.appthemehelper.util.MaterialUtil
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.util.PlaylistsUtil
|
||||
import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment
|
||||
import kotlinx.android.synthetic.main.dialog_playlist.*
|
||||
|
||||
class RenamePlaylistDialog : RoundedBottomSheetDialogFragment() {
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
val layout = inflater.inflate(R.layout.dialog_playlist, container, false)
|
||||
ButterKnife.bind(this, layout)
|
||||
return layout
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
val accentColor = ThemeStore.accentColor(context!!)
|
||||
actionCreate.setText(R.string.action_rename)
|
||||
|
||||
MaterialUtil.setTint(actionCreate, true)
|
||||
MaterialUtil.setTint(actionCancel, false)
|
||||
MaterialUtil.setTint(actionNewPlaylistContainer, false)
|
||||
|
||||
actionNewPlaylist.apply {
|
||||
var playlistId: Long = 0
|
||||
if (arguments != null) {
|
||||
playlistId = arguments!!.getLong("playlist_id")
|
||||
}
|
||||
setText(PlaylistsUtil.getNameForPlaylist(activity!!, playlistId))
|
||||
setHintTextColor(ColorStateList.valueOf(accentColor))
|
||||
setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||
}
|
||||
|
||||
bannerTitle.setTextColor(ThemeStore.textColorPrimary(context!!))
|
||||
bannerTitle.setText(R.string.rename_playlist_title)
|
||||
actionCancel.setOnClickListener { dismiss() }
|
||||
actionCreate.setOnClickListener {
|
||||
if (actionNewPlaylist.toString().trim { it <= ' ' } != "") {
|
||||
val playlistId = arguments!!.getLong("playlist_id")
|
||||
PlaylistsUtil.renamePlaylist(context!!, playlistId, actionNewPlaylist.text!!.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun create(playlistId: Long): RenamePlaylistDialog {
|
||||
val dialog = RenamePlaylistDialog()
|
||||
val args = Bundle()
|
||||
args.putLong("playlist_id", playlistId)
|
||||
dialog.arguments = args
|
||||
return dialog
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue