merged everything together correctly
This commit is contained in:
commit
70f33b4829
263 changed files with 2932 additions and 2411 deletions
|
|
@ -1,47 +0,0 @@
|
|||
package com.kabouzeid.gramophone.helper;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
|
||||
/**
|
||||
* Created by karim on 05.02.15.
|
||||
*/
|
||||
public class AboutDeveloperDialogHelper {
|
||||
public static final String TAG = AboutDeveloperDialogHelper.class.getSimpleName();
|
||||
|
||||
public static MaterialDialog getDialog(final Context context) {
|
||||
MaterialDialog dialog = new MaterialDialog.Builder(context)
|
||||
.title(context.getResources().getString(R.string.app_name) + " " + getCurrentVersionName(context))
|
||||
.iconRes(R.drawable.ic_launcher)
|
||||
.content(TextUtils.concat(context.getResources().getText(R.string.credits_1),
|
||||
context.getResources().getText(R.string.credits_2),
|
||||
context.getResources().getText(R.string.credits_3),
|
||||
context.getResources().getText(R.string.credits_4))
|
||||
)
|
||||
.positiveText(context.getResources().getString(R.string.ok))
|
||||
.callback(new MaterialDialog.ButtonCallback() {
|
||||
@Override
|
||||
public void onPositive(MaterialDialog dialog) {
|
||||
super.onPositive(dialog);
|
||||
dialog.dismiss();
|
||||
}
|
||||
})
|
||||
.build();
|
||||
return dialog;
|
||||
}
|
||||
|
||||
private static String getCurrentVersionName(final Context context) {
|
||||
String versionName = "";
|
||||
try {
|
||||
versionName = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
Log.e(TAG, "Unable to get current app version number.", e);
|
||||
}
|
||||
return versionName;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
package com.kabouzeid.gramophone.helper;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
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) {
|
||||
return new MaterialDialog.Builder(context)
|
||||
.title(R.string.action_new_playlist)
|
||||
.positiveText(R.string.ok)
|
||||
.negativeText(R.string.cancel)
|
||||
.input("", "", new MaterialDialog.InputCallback() {
|
||||
@Override
|
||||
public void onInput(MaterialDialog materialDialog, CharSequence charSequence) {
|
||||
if (!charSequence.toString().trim().equals("")) {
|
||||
final int playlistId = PlaylistsUtil.createPlaylist(context, charSequence.toString());
|
||||
if (playlistId != -1 && songs != null) {
|
||||
PlaylistsUtil.addToPlaylist(context, songs, playlistId);
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.build();
|
||||
}
|
||||
|
||||
public static MaterialDialog getDialog(final Context context) {
|
||||
return getDialog(context, (List<Song>) null);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
package com.kabouzeid.gramophone.helper;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.util.PlaylistsUtil;
|
||||
|
||||
/**
|
||||
* Created by karim on 19.03.15.
|
||||
*/
|
||||
public class DeletePlaylistDialogHelper {
|
||||
public static MaterialDialog getDialog(final Context context, final int playlistId) {
|
||||
return new MaterialDialog.Builder(context)
|
||||
.title(context.getResources().getString(R.string.delete_playlist) + PlaylistsUtil.getNameForPlaylist(context, playlistId))
|
||||
.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);
|
||||
dialog.dismiss();
|
||||
PlaylistsUtil.deletePlaylist(context, playlistId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNegative(MaterialDialog dialog) {
|
||||
super.onNegative(dialog);
|
||||
dialog.dismiss();
|
||||
}
|
||||
}).build();
|
||||
}
|
||||
}
|
||||
|
|
@ -11,9 +11,10 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by karim on 23.03.15.
|
||||
* @author Karim Abou Zeid (kabouzeid), Aidan Follestad (afollestad)
|
||||
*/
|
||||
public class DeleteSongsDialogHelper {
|
||||
|
||||
public static MaterialDialog getDialog(final Context context, final Song song) {
|
||||
List<Song> tmpList = new ArrayList<>();
|
||||
tmpList.add(song);
|
||||
|
|
@ -27,7 +28,7 @@ public class DeleteSongsDialogHelper {
|
|||
.title(title)
|
||||
.content(context.getResources().getString(R.string.delete_warning))
|
||||
.positiveText(context.getResources().getString(R.string.delete))
|
||||
.negativeText(context.getResources().getString(R.string.cancel))
|
||||
.negativeText(context.getResources().getString(android.R.string.cancel))
|
||||
.callback(new MaterialDialog.ButtonCallback() {
|
||||
@Override
|
||||
public void onPositive(MaterialDialog dialog) {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
package com.kabouzeid.gramophone.helper;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.support.v4.util.Pair;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.dialogs.AddToPlaylistDialog;
|
||||
import com.kabouzeid.gramophone.dialogs.DeletePlaylistDialog;
|
||||
import com.kabouzeid.gramophone.dialogs.RenamePlaylistDialog;
|
||||
import com.kabouzeid.gramophone.dialogs.SongDetailDialog;
|
||||
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
|
||||
import com.kabouzeid.gramophone.misc.AppKeys;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
|
|
@ -17,16 +21,17 @@ import com.kabouzeid.gramophone.util.NavigationUtil;
|
|||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Created by karim on 11.04.15.
|
||||
* @author Karim Abou Zeid (kabouzeid), Aidan Follestad (afollestad)
|
||||
*/
|
||||
public class MenuItemClickHelper {
|
||||
public static boolean handleSongMenuClick(Activity activity, Song song, MenuItem item){
|
||||
|
||||
public static boolean handleSongMenuClick(ActionBarActivity activity, Song song, MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_delete_from_disk:
|
||||
DeleteSongsDialogHelper.getDialog(activity, song).show();
|
||||
return true;
|
||||
case R.id.action_add_to_playlist:
|
||||
AddToPlaylistDialogHelper.getDialog(activity, song).show();
|
||||
AddToPlaylistDialog.create(song).show(activity.getSupportFragmentManager(), "ADD_PLAYLIST");
|
||||
return true;
|
||||
case R.id.action_play_next:
|
||||
MusicPlayerRemote.playNext(song);
|
||||
|
|
@ -42,31 +47,31 @@ public class MenuItemClickHelper {
|
|||
case R.id.action_details:
|
||||
String songFilePath = SongFilePathLoader.getSongFilePath(activity, song.id);
|
||||
File songFile = new File(songFilePath);
|
||||
SongDetailDialogHelper.getDialog(activity, songFile).show();
|
||||
SongDetailDialog.create(songFile).show(activity.getSupportFragmentManager(), "SONG_DETAILS");
|
||||
return true;
|
||||
case R.id.action_go_to_album:
|
||||
Pair[] albumPairs = null;
|
||||
if (activity instanceof AbsFabActivity)
|
||||
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
|
||||
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(null);
|
||||
NavigationUtil.goToAlbum(activity, song.albumId, albumPairs);
|
||||
return true;
|
||||
case R.id.action_go_to_artist:
|
||||
Pair[] artistPairs = null;
|
||||
if (activity instanceof AbsFabActivity)
|
||||
artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(artistPairs);
|
||||
artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(null);
|
||||
NavigationUtil.goToArtist(activity, song.artistId, artistPairs);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean handlePlaylistMenuClick(Activity activity, Playlist playlist, MenuItem item){
|
||||
public static boolean handlePlaylistMenuClick(ActionBarActivity activity, Playlist playlist, MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.action_rename_playlist:
|
||||
RenamePlaylistDialogHelper.getDialog(activity, playlist.id).show();
|
||||
RenamePlaylistDialog.create(playlist.id).show(activity.getSupportFragmentManager(), "RENAME_PLAYLIST");
|
||||
return true;
|
||||
case R.id.action_delete_playlist:
|
||||
DeletePlaylistDialogHelper.getDialog(activity, playlist.id).show();
|
||||
DeletePlaylistDialog.create(playlist.id).show(activity.getSupportFragmentManager(), "DELETE_PLAYLIST");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -20,27 +20,26 @@ import com.kabouzeid.gramophone.model.Song;
|
|||
import com.kabouzeid.gramophone.service.MusicService;
|
||||
import com.kabouzeid.gramophone.util.InternalStorageUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* Created by karim on 29.11.14.
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class MusicPlayerRemote {
|
||||
|
||||
private static final String TAG = MusicPlayerRemote.class.getSimpleName();
|
||||
|
||||
private static int position = -1;
|
||||
|
||||
private static List<Song> playingQueue;
|
||||
private static List<Song> restoredOriginalQueue;
|
||||
private static ArrayList<Song> playingQueue;
|
||||
private static ArrayList<Song> restoredOriginalQueue;
|
||||
|
||||
private static Context context;
|
||||
private static MusicService musicService;
|
||||
private static Intent musicServiceIntent;
|
||||
|
||||
private static ServiceConnection musicConnection = new ServiceConnection() {
|
||||
private static final ServiceConnection musicConnection = new ServiceConnection() {
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||
MusicService.MusicBinder binder = (MusicService.MusicBinder) service;
|
||||
|
|
@ -72,11 +71,10 @@ public class MusicPlayerRemote {
|
|||
}
|
||||
}
|
||||
|
||||
public static boolean playSongAt(final int position) {
|
||||
public static void playSongAt(final int position) {
|
||||
if (musicService != null) {
|
||||
musicService.playSongAt(position);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void pauseSong() {
|
||||
|
|
@ -104,10 +102,7 @@ public class MusicPlayerRemote {
|
|||
}
|
||||
|
||||
public static boolean isPlaying() {
|
||||
if (musicService != null) {
|
||||
return musicService.isPlaying();
|
||||
}
|
||||
return false;
|
||||
return musicService != null && musicService.isPlaying();
|
||||
}
|
||||
|
||||
public static void resumePlaying() {
|
||||
|
|
@ -127,7 +122,7 @@ public class MusicPlayerRemote {
|
|||
}
|
||||
}
|
||||
|
||||
public static void openQueue(final List<Song> playingQueue, final int startPosition, final boolean startPlaying) {
|
||||
public static void openQueue(final ArrayList<Song> playingQueue, final int startPosition, final boolean startPlaying) {
|
||||
MusicPlayerRemote.playingQueue = playingQueue;
|
||||
if (musicService != null) {
|
||||
musicService.openQueue(MusicPlayerRemote.playingQueue, startPosition, startPlaying);
|
||||
|
|
@ -159,7 +154,7 @@ public class MusicPlayerRemote {
|
|||
}
|
||||
}
|
||||
|
||||
public static List<Song> getPlayingQueue() {
|
||||
public static ArrayList<Song> getPlayingQueue() {
|
||||
if (musicService != null) {
|
||||
playingQueue = musicService.getPlayingQueue();
|
||||
}
|
||||
|
|
@ -174,10 +169,7 @@ public class MusicPlayerRemote {
|
|||
}
|
||||
|
||||
public static boolean isPlayerPrepared() {
|
||||
if (musicService != null) {
|
||||
return musicService.isPlayerPrepared();
|
||||
}
|
||||
return false;
|
||||
return musicService != null && musicService.isPlayerPrepared();
|
||||
}
|
||||
|
||||
public static int getSongDurationMillis() {
|
||||
|
|
@ -207,20 +199,16 @@ public class MusicPlayerRemote {
|
|||
return PreferenceManager.getDefaultSharedPreferences(context).getInt(AppKeys.SP_SHUFFLE_MODE, 0);
|
||||
}
|
||||
|
||||
public static boolean cycleRepeatMode() {
|
||||
public static void cycleRepeatMode() {
|
||||
if (musicService != null) {
|
||||
musicService.cycleRepeatMode();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean toggleShuffleMode() {
|
||||
public static void toggleShuffleMode() {
|
||||
if (musicService != null) {
|
||||
musicService.toggleShuffle();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean setShuffleMode(final int shuffleMode) {
|
||||
|
|
@ -242,7 +230,7 @@ public class MusicPlayerRemote {
|
|||
}
|
||||
|
||||
public static void shuffleAllSongs(final Context context) {
|
||||
List<Song> songs = SongLoader.getAllSongs(context);
|
||||
ArrayList<Song> songs = SongLoader.getAllSongs(context);
|
||||
MusicPlayerRemote.openQueue(songs, new Random().nextInt(songs.size()), true);
|
||||
forceSetShuffleMode(context, MusicService.SHUFFLE_MODE_SHUFFLE);
|
||||
}
|
||||
|
|
@ -294,8 +282,8 @@ public class MusicPlayerRemote {
|
|||
@SuppressWarnings("unchecked")
|
||||
public static void restorePreviousState() {
|
||||
try {
|
||||
List restoredQueue = (ArrayList<Song>) InternalStorageUtil.readObject(context, AppKeys.IS_PLAYING_QUEUE);
|
||||
List restoredOriginalQueue = (ArrayList<Song>) InternalStorageUtil.readObject(context, AppKeys.IS_ORIGINAL_PLAYING_QUEUE);
|
||||
ArrayList<Song> restoredQueue = (ArrayList<Song>) InternalStorageUtil.readObject(context, AppKeys.IS_PLAYING_QUEUE);
|
||||
ArrayList<Song> restoredOriginalQueue = (ArrayList<Song>) InternalStorageUtil.readObject(context, AppKeys.IS_ORIGINAL_PLAYING_QUEUE);
|
||||
int restoredPosition = (int) InternalStorageUtil.readObject(context, AppKeys.IS_POSITION_IN_QUEUE);
|
||||
|
||||
if (musicService != null) {
|
||||
|
|
@ -307,7 +295,7 @@ public class MusicPlayerRemote {
|
|||
position = restoredPosition;
|
||||
|
||||
postToBus(MusicRemoteEvent.STATE_RESTORED);
|
||||
} catch (IOException | ClassNotFoundException | ClassCastException e) {
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "error while restoring music service state", e);
|
||||
playingQueue = new ArrayList<>();
|
||||
position = -1;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package com.kabouzeid.gramophone.helper;
|
||||
|
||||
/**
|
||||
* Created by karim on 27.12.14.
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
|
||||
import android.app.Notification;
|
||||
|
|
@ -25,6 +25,7 @@ import com.koushikdutta.async.future.FutureCallback;
|
|||
import com.koushikdutta.ion.Ion;
|
||||
|
||||
public class PlayingNotificationHelper {
|
||||
|
||||
public static final String TAG = PlayingNotificationHelper.class.getSimpleName();
|
||||
public static final int NOTIFICATION_ID = 1337;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,57 +0,0 @@
|
|||
package com.kabouzeid.gramophone.helper;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.adapter.PlayingQueueAdapter;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.mobeta.android.dslv.DragSortListView;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by karim on 24.01.15.
|
||||
*/
|
||||
public class PlayingQueueDialogHelper {
|
||||
public static MaterialDialog getDialog(final Activity activity) {
|
||||
final List<Song> playingQueue = MusicPlayerRemote.getPlayingQueue();
|
||||
if (playingQueue.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
MaterialDialog dialog = new MaterialDialog.Builder(activity)
|
||||
.title(activity.getResources().getString(R.string.label_current_playing_queue))
|
||||
.customView(R.layout.dialog_playlist, false)
|
||||
.positiveText(activity.getResources().getString(R.string.save_as_playlist))
|
||||
.callback(new MaterialDialog.ButtonCallback() {
|
||||
@Override
|
||||
public void onPositive(MaterialDialog dialog) {
|
||||
super.onPositive(dialog);
|
||||
dialog.dismiss();
|
||||
AddToPlaylistDialogHelper.getDialog(activity, playingQueue).show();
|
||||
}
|
||||
})
|
||||
.build();
|
||||
final DragSortListView dragSortListView = (DragSortListView) dialog.getCustomView().findViewById(R.id.dragSortListView);
|
||||
final PlayingQueueAdapter playingQueueAdapter = new PlayingQueueAdapter(activity, playingQueue);
|
||||
dragSortListView.setAdapter(playingQueueAdapter);
|
||||
dragSortListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
MusicPlayerRemote.playSongAt(position);
|
||||
playingQueueAdapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
dragSortListView.setDropListener(new DragSortListView.DropListener() {
|
||||
@Override
|
||||
public void drop(int from, int to) {
|
||||
MusicPlayerRemote.moveSong(from, to);
|
||||
playingQueueAdapter.notifyDataSetChanged();
|
||||
}
|
||||
});
|
||||
return dialog;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
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.util.PlaylistsUtil;
|
||||
|
||||
/**
|
||||
* Created by karim on 19.03.15.
|
||||
*/
|
||||
public class RenamePlaylistDialogHelper {
|
||||
public static MaterialDialog getDialog(final Context context, final int playlistId) {
|
||||
return new MaterialDialog.Builder(context)
|
||||
.title(R.string.rename_playlist)
|
||||
.positiveText(R.string.ok)
|
||||
.negativeText(R.string.cancel)
|
||||
.input("", PlaylistsUtil.getNameForPlaylist(context, playlistId), new MaterialDialog.InputCallback() {
|
||||
@Override
|
||||
public void onInput(MaterialDialog materialDialog, CharSequence charSequence) {
|
||||
if (!charSequence.toString().trim().equals("")) {
|
||||
PlaylistsUtil.renamePlaylist(context, playlistId, charSequence.toString());
|
||||
}
|
||||
}
|
||||
})
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
|
@ -6,9 +6,10 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by karim on 24.01.15.
|
||||
* @author Karim Abou Zeid (kabouzeid)
|
||||
*/
|
||||
public class ShuffleHelper {
|
||||
|
||||
public static void makeShuffleList(List<Song> listToShuffle, final int current) {
|
||||
if (current >= 0) {
|
||||
Song song = listToShuffle.remove(current);
|
||||
|
|
|
|||
|
|
@ -1,84 +0,0 @@
|
|||
package com.kabouzeid.gramophone.helper;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.Html;
|
||||
import android.text.Spanned;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.util.MusicUtil;
|
||||
import com.kabouzeid.gramophone.util.Util;
|
||||
|
||||
import org.jaudiotagger.audio.AudioFile;
|
||||
import org.jaudiotagger.audio.AudioFileIO;
|
||||
import org.jaudiotagger.audio.AudioHeader;
|
||||
import org.jaudiotagger.audio.exceptions.CannotReadException;
|
||||
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
|
||||
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
|
||||
import org.jaudiotagger.tag.TagException;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Created by karim on 19.01.15.
|
||||
*/
|
||||
public class SongDetailDialogHelper {
|
||||
public static final String TAG = SongDetailDialogHelper.class.getSimpleName();
|
||||
|
||||
public static MaterialDialog getDialog(final Context context, final File songFile) {
|
||||
MaterialDialog dialog = new MaterialDialog.Builder(context)
|
||||
.customView(R.layout.dialog_file_details, true)
|
||||
.title(context.getResources().getString(R.string.label_details))
|
||||
.positiveText(context.getResources().getString(R.string.ok))
|
||||
.callback(new MaterialDialog.ButtonCallback() {
|
||||
@Override
|
||||
public void onPositive(MaterialDialog dialog) {
|
||||
dialog.dismiss();
|
||||
}
|
||||
})
|
||||
.build();
|
||||
|
||||
View dialogView = dialog.getCustomView();
|
||||
final TextView fileName = (TextView) dialogView.findViewById(R.id.file_name);
|
||||
final TextView filePath = (TextView) dialogView.findViewById(R.id.file_path);
|
||||
final TextView fileSize = (TextView) dialogView.findViewById(R.id.file_size);
|
||||
final TextView fileFormat = (TextView) dialogView.findViewById(R.id.file_format);
|
||||
final TextView trackLength = (TextView) dialogView.findViewById(R.id.track_length);
|
||||
final TextView bitRate = (TextView) dialogView.findViewById(R.id.bitrate);
|
||||
final TextView samplingRate = (TextView) dialogView.findViewById(R.id.sampling_rate);
|
||||
|
||||
fileName.setText(makeTextWithTitle(context, R.string.label_file_name, "-"));
|
||||
filePath.setText(makeTextWithTitle(context, R.string.label_file_path, "-"));
|
||||
fileSize.setText(makeTextWithTitle(context, R.string.label_file_size, "-"));
|
||||
fileFormat.setText(makeTextWithTitle(context, R.string.label_file_format, "-"));
|
||||
trackLength.setText(makeTextWithTitle(context, R.string.label_track_length, "-"));
|
||||
bitRate.setText(makeTextWithTitle(context, R.string.label_bit_rate, "-"));
|
||||
samplingRate.setText(makeTextWithTitle(context, R.string.label_sampling_rate, "-"));
|
||||
|
||||
try {
|
||||
if (songFile != null && songFile.exists()) {
|
||||
AudioFile audioFile = AudioFileIO.read(songFile);
|
||||
AudioHeader audioHeader = audioFile.getAudioHeader();
|
||||
|
||||
fileName.setText(makeTextWithTitle(context, R.string.label_file_name, songFile.getName()));
|
||||
filePath.setText(makeTextWithTitle(context, R.string.label_file_path, songFile.getAbsolutePath()));
|
||||
fileSize.setText(makeTextWithTitle(context, R.string.label_file_size, Util.getFileSizeString(songFile.length())));
|
||||
fileFormat.setText(makeTextWithTitle(context, R.string.label_file_format, audioHeader.getFormat()));
|
||||
trackLength.setText(makeTextWithTitle(context, R.string.label_track_length, MusicUtil.getReadableDurationString(audioHeader.getTrackLength() * 1000)));
|
||||
bitRate.setText(makeTextWithTitle(context, R.string.label_bit_rate, audioHeader.getBitRate() + " kb/s"));
|
||||
samplingRate.setText(makeTextWithTitle(context, R.string.label_sampling_rate, audioHeader.getSampleRate() + " Hz"));
|
||||
}
|
||||
} catch (CannotReadException | IOException | TagException | ReadOnlyFileException | InvalidAudioFrameException e) {
|
||||
Log.e(TAG, "error while reading the song file", e);
|
||||
}
|
||||
return dialog;
|
||||
}
|
||||
|
||||
private static Spanned makeTextWithTitle(Context context, int titleResId, String text) {
|
||||
return Html.fromHtml("<b>" + context.getResources().getString(titleResId) + ": " + "</b>" + text);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue