First snapshot (beta 0.9)

- playlists working (not all features added yet)
- minor fixes and improvements
This commit is contained in:
Karim Abou Zeid 2015-03-18 15:32:35 +01:00
commit 11ee05ce64
30 changed files with 1055 additions and 126 deletions

View file

@ -0,0 +1,49 @@
package com.kabouzeid.gramophone.helper;
import android.content.Context;
import android.view.View;
import com.afollestad.materialdialogs.MaterialDialog;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.loader.PlaylistLoader;
import com.kabouzeid.gramophone.model.Playlist;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.PlaylistsUtil;
import java.util.ArrayList;
import java.util.List;
/**
* Created by karim on 17.03.15.
*/
public class AddToPlaylistDialogHelper {
public static MaterialDialog getDialog(final Context context, final Song song) {
List<Song> tmpSong = new ArrayList<>();
tmpSong.add(song);
return getDialog(context, tmpSong);
}
public static MaterialDialog getDialog(final Context context, final List<Song> songs) {
final List<Playlist> playlists = PlaylistLoader.getAllPlaylists(context);
CharSequence[] playlistNames = new CharSequence[playlists.size() + 1];
playlistNames[0] = context.getResources().getString(R.string.action_new_playlist);
for (int i = 1; i < playlistNames.length; i++) {
playlistNames[i] = playlists.get(i-1).name;
}
return new MaterialDialog.Builder(context)
.items(playlistNames)
.itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog materialDialog, View view, int i, CharSequence charSequence) {
if (i == 0) {
materialDialog.dismiss();
CreatePlaylistDialogHelper.getDialog(context, songs).show();
} else {
materialDialog.dismiss();
PlaylistsUtil.addToPlaylist(context, songs, playlists.get(i - 1).id);
}
}
})
.build();
}
}

View file

@ -0,0 +1,67 @@
package com.kabouzeid.gramophone.helper;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import com.afollestad.materialdialogs.MaterialDialog;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.PlaylistsUtil;
import java.util.ArrayList;
import java.util.List;
/**
* Created by karim on 17.03.15.
*/
public class CreatePlaylistDialogHelper {
public static MaterialDialog getDialog(final Context context, final Song song) {
List<Song> tmpSong = new ArrayList<>();
tmpSong.add(song);
return getDialog(context, tmpSong);
}
public static MaterialDialog getDialog(final Context context, final List<Song> songs) {
final EditText editText = new EditText(context);
ViewGroup layout = (ViewGroup) LayoutInflater.from(context).inflate(R.layout.dialog_create_playlist, null);
if (editText.getParent() != null) {((ViewGroup) editText.getParent()).removeView(editText);}
layout.addView(editText, new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
return new MaterialDialog.Builder(context)
.title(context.getResources().getString(R.string.action_new_playlist))
.customView(layout, false)
.positiveText(context.getResources().getString(R.string.ok))
.negativeText(context.getResources().getString(R.string.cancel))
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
super.onPositive(dialog);
final String playlistName = editText.getText().toString();
if (!playlistName.trim().equals("")) {
dialog.dismiss();
final int playlistId = PlaylistsUtil.createPlaylist(context, playlistName);
if (playlistId != -1) {
if (songs != null) {
PlaylistsUtil.addToPlaylist(context, songs, playlistId);
}
}
}
}
@Override
public void onNegative(MaterialDialog dialog) {
super.onNegative(dialog);
dialog.dismiss();
}
}
)
.build();
}
public static MaterialDialog getDialog(final Context context) {
return getDialog(context, (List<Song>) null);
}
}

View file

@ -8,6 +8,7 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.PlayingQueueAdapter;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.util.PlaylistsUtil;
import com.mobeta.android.dslv.DragSortListView;
import java.util.List;
@ -16,8 +17,8 @@ import java.util.List;
* Created by karim on 24.01.15.
*/
public class PlayingQueueDialogHelper {
public static MaterialDialog getDialog(Activity activity) {
List<Song> playingQueue = MusicPlayerRemote.getPlayingQueue();
public static MaterialDialog getDialog(final Activity activity) {
final List<Song> playingQueue = MusicPlayerRemote.getPlayingQueue();
if (playingQueue.isEmpty()) {
return null;
}
@ -26,7 +27,7 @@ public class PlayingQueueDialogHelper {
.title(activity.getResources().getString(R.string.label_current_playing_queue))
.customView(R.layout.dialog_playlist, false)
.positiveText(activity.getResources().getString(R.string.close))
.negativeText(activity.getResources().getString(R.string.save_as_playlist))
.neutralText(activity.getResources().getString(R.string.save_as_playlist))
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
@ -35,8 +36,10 @@ public class PlayingQueueDialogHelper {
}
@Override
public void onNegative(MaterialDialog dialog) {
public void onNeutral(MaterialDialog dialog) {
super.onNegative(dialog);
dialog.dismiss();
AddToPlaylistDialogHelper.getDialog(activity, playingQueue).show();
}
})
.build();