Lots of progress with dynamic theming, the nav drawer now uses a RecyclerView, AboutDeveloperDialogHelper is now a DialogFragment, RTL support (to suppress Lint warnings), other various small fixes, cleaned up and formatted lot of code (and removed un-used resources), R.string.ok > android.R.string.ok, R.string.cancel > android.R.string.cancel, switched dialog helpers to DialogFragments.

This commit is contained in:
Aidan Follestad 2015-04-16 16:47:02 -05:00
commit 7ce86afd74
265 changed files with 2853 additions and 2292 deletions

View file

@ -12,17 +12,15 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.kabouzeid.gramophone.App;
import com.afollestad.materialdialogs.util.DialogUtils;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.loader.AlbumLoader;
import com.kabouzeid.gramophone.model.Album;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.UIPreferenceChangedEvent;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PreferenceUtils;
import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil;
import com.squareup.otto.Subscribe;
import com.squareup.picasso.Callback;
@ -31,12 +29,13 @@ import com.squareup.picasso.Picasso;
import java.util.List;
/**
* Created by karim on 24.11.14.
* @author Karim Abou Zeid (kabouzeid)
*/
public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder> {
public static final String TAG = AlbumAdapter.class.getSimpleName();
private Activity activity;
private boolean usePalette;
private final Activity activity;
private final boolean usePalette;
private List<Album> dataSet;
@Override
@ -83,10 +82,10 @@ public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder>
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageView image;
TextView title;
TextView artist;
View footer;
final ImageView image;
final TextView title;
final TextView artist;
final View footer;
public ViewHolder(View itemView) {
super(itemView);
@ -105,7 +104,7 @@ public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder>
)};
if (activity instanceof AbsFabActivity)
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
NavigationUtil.goToAlbum(activity, dataSet.get(getPosition()).id, albumPairs);
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).id, albumPairs);
}
}
@ -127,7 +126,7 @@ public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder>
if (vibrantSwatch != null) {
title.setTextColor(vibrantSwatch.getTitleTextColor());
artist.setTextColor(vibrantSwatch.getTitleTextColor());
ViewUtil.animateViewColor(footer, Util.resolveColor(activity, R.attr.default_bar_color), vibrantSwatch.getRgb());
ViewUtil.animateViewColor(footer, DialogUtils.resolveColor(activity, R.attr.default_bar_color), vibrantSwatch.getRgb());
} else {
paletteBlackAndWhite(title, artist, footer);
}
@ -136,31 +135,19 @@ public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder>
}
private void paletteBlackAndWhite(final TextView title, final TextView artist, final View footer) {
title.setTextColor(Util.resolveColor(activity, R.attr.title_text_color));
artist.setTextColor(Util.resolveColor(activity, R.attr.caption_text_color));
int defaultBarColor = Util.resolveColor(activity, R.attr.default_bar_color);
title.setTextColor(DialogUtils.resolveColor(activity, R.attr.title_text_color));
artist.setTextColor(DialogUtils.resolveColor(activity, R.attr.caption_text_color));
int defaultBarColor = DialogUtils.resolveColor(activity, R.attr.default_bar_color);
ViewUtil.animateViewColor(footer, defaultBarColor, defaultBarColor);
}
private void resetColors(final TextView title, final TextView artist, final View footer) {
title.setTextColor(Util.resolveColor(activity, R.attr.title_text_color));
artist.setTextColor(Util.resolveColor(activity, R.attr.caption_text_color));
int defaultBarColor = Util.resolveColor(activity, R.attr.default_bar_color);
title.setTextColor(DialogUtils.resolveColor(activity, R.attr.title_text_color));
artist.setTextColor(DialogUtils.resolveColor(activity, R.attr.caption_text_color));
int defaultBarColor = DialogUtils.resolveColor(activity, R.attr.default_bar_color);
footer.setBackgroundColor(defaultBarColor);
}
@Override
public void onDetachedFromRecyclerView(RecyclerView recyclerView) {
super.onDetachedFromRecyclerView(recyclerView);
App.bus.unregister(this);
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
App.bus.register(this);
}
@Subscribe
public void onDataBaseEvent(DataBaseChangedEvent event) {
switch (event.getAction()) {
@ -171,14 +158,4 @@ public class AlbumAdapter extends RecyclerView.Adapter<AlbumAdapter.ViewHolder>
break;
}
}
@Subscribe
public void onUIChangeEvent(UIPreferenceChangedEvent event) {
switch (event.getAction()) {
case UIPreferenceChangedEvent.ALBUM_OVERVIEW_PALETTE_CHANGED:
usePalette = (boolean) event.getValue();
notifyDataSetChanged();
break;
}
}
}

View file

@ -23,10 +23,10 @@ import com.squareup.picasso.Picasso;
import java.util.List;
/**
* Created by karim on 29.12.14.
* @author Karim Abou Zeid (kabouzeid)
*/
public class ArtistAdapter extends RecyclerView.Adapter<ArtistAdapter.ViewHolder> {
protected Activity activity;
protected final Activity activity;
protected List<Artist> dataSet;
public ArtistAdapter(Activity activity) {
@ -70,9 +70,9 @@ public class ArtistAdapter extends RecyclerView.Adapter<ArtistAdapter.ViewHolder
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView artistName;
TextView artistInfo;
ImageView artistImage;
final TextView artistName;
final TextView artistInfo;
final ImageView artistImage;
public ViewHolder(View itemView) {
super(itemView);
@ -90,7 +90,7 @@ public class ArtistAdapter extends RecyclerView.Adapter<ArtistAdapter.ViewHolder
)};
if (activity instanceof AbsFabActivity)
artistPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(artistPairs);
NavigationUtil.goToArtist(activity, dataSet.get(getPosition()).id, artistPairs);
NavigationUtil.goToArtist(activity, dataSet.get(getAdapterPosition()).id, artistPairs);
}
}

View file

@ -19,7 +19,7 @@ import com.squareup.picasso.Picasso;
import java.util.List;
/**
* Created by karim on 24.11.14.
* @author Karim Abou Zeid (kabouzeid)
*/
public class ArtistAlbumAdapter extends RecyclerView.Adapter<ArtistAlbumAdapter.ViewHolder> {
public static final String TAG = AlbumAdapter.class.getSimpleName();
@ -28,9 +28,9 @@ public class ArtistAlbumAdapter extends RecyclerView.Adapter<ArtistAlbumAdapter.
private static final int TYPE_MIDDLE = 2;
private static final int TYPE_LAST = 3;
private Activity activity;
private List<Album> dataSet;
private int listMargin;
private final Activity activity;
private final List<Album> dataSet;
private final int listMargin;
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
@ -72,9 +72,9 @@ public class ArtistAlbumAdapter extends RecyclerView.Adapter<ArtistAlbumAdapter.
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageView image;
TextView title;
TextView year;
final ImageView image;
final TextView title;
final TextView year;
public ViewHolder(View itemView) {
super(itemView);
@ -92,7 +92,7 @@ public class ArtistAlbumAdapter extends RecyclerView.Adapter<ArtistAlbumAdapter.
)};
if (activity instanceof AbsFabActivity)
albumPairs = ((AbsFabActivity) activity).getSharedViewsWithFab(albumPairs);
NavigationUtil.goToAlbum(activity, dataSet.get(getPosition()).id, albumPairs);
NavigationUtil.goToAlbum(activity, dataSet.get(getAdapterPosition()).id, albumPairs);
}
}

View file

@ -1,52 +1,121 @@
package com.kabouzeid.gramophone.adapter;
import android.content.Context;
import android.graphics.PorterDuff;
import android.os.Build;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.afollestad.materialdialogs.ThemeSingleton;
import com.afollestad.materialdialogs.util.DialogUtils;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
import com.kabouzeid.gramophone.model.NavigationDrawerItem;
import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.ui.fragments.NavigationDrawerFragment;
import java.util.List;
import java.util.ArrayList;
/**
* Created by karim on 23.11.14.
* @author Aidan Follestad (afollestad)
*/
public class NavigationDrawerItemAdapter extends ArrayAdapter<NavigationDrawerItem> {
private int currentChecked = -1;
public class NavigationDrawerItemAdapter extends RecyclerView.Adapter<NavigationDrawerItemAdapter.ShortcutViewHolder> implements View.OnClickListener {
public NavigationDrawerItemAdapter(Context context, int resource, List<NavigationDrawerItem> objects) {
super(context, resource, objects);
// per the Material design guidelines
@SuppressWarnings("FieldCanBeLocal")
private final int ALPHA_ACTIVATED = 255;
@SuppressWarnings("FieldCanBeLocal")
private final int ALPHA_ICON = 138;
@SuppressWarnings("FieldCanBeLocal")
private final int ALPHA_TEXT = 222;
@Override
public void onClick(View v) {
int index = (Integer) v.getTag();
if (mCallback != null)
mCallback.onItemSelected(index);
}
public static class ShortcutViewHolder extends RecyclerView.ViewHolder {
public ShortcutViewHolder(View itemView) {
super(itemView);
divider = itemView.findViewById(R.id.divider);
container = itemView.findViewById(R.id.container);
title = (TextView) itemView.findViewById(R.id.title);
icon = (ImageView) itemView.findViewById(R.id.icon);
}
final TextView title;
final ImageView icon;
final View divider;
final View container;
}
private int currentChecked = -1;
private int navIconColor;
private final ArrayList<NavigationDrawerItem> mItems;
private final Callback mCallback;
public interface Callback {
void onItemSelected(int index);
}
public NavigationDrawerItemAdapter(Context context, ArrayList<NavigationDrawerItem> objects, Callback callback) {
navIconColor = DialogUtils.resolveColor(context, R.attr.nav_drawer_icon_color);
if (DialogUtils.isColorDark(navIconColor))
navIconColor = ColorChooserDialog.shiftColorUp(navIconColor);
mItems = objects;
mCallback = callback;
}
public void setChecked(int position) {
int oldPosition = currentChecked;
currentChecked = position;
notifyDataSetChanged();
if (oldPosition != -1)
notifyItemChanged(oldPosition);
notifyItemChanged(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
NavigationDrawerItem item = getItem(position);
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_navigation_drawer, parent, false);
}
TextView title = (TextView) convertView.findViewById(R.id.title);
ImageView icon = (ImageView) convertView.findViewById(R.id.album_art);
title.setText(item.title);
if (position == currentChecked) {
title.setTextColor(Util.resolveColor(getContext(), R.attr.colorAccent));
icon.setImageDrawable(Util.getTintedDrawable(getContext().getResources(), item.imageRes, Util.resolveColor(getContext(), R.attr.colorAccent)));
} else {
title.setTextColor(Util.resolveColor(getContext(), R.attr.title_text_color));
icon.setImageDrawable(Util.getTintedDrawable(getContext().getResources(), item.imageRes, Util.resolveColor(getContext(), R.attr.themed_drawable_color)));
}
View container = convertView.findViewById(R.id.container);
container.setActivated(position == currentChecked);
return convertView;
public ShortcutViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_navigation_drawer, parent, false);
return new ShortcutViewHolder(view);
}
}
@Override
public void onBindViewHolder(ShortcutViewHolder holder, int position) {
NavigationDrawerItem item = mItems.get(position);
holder.title.setText(item.title);
holder.icon.setImageResource(item.imageRes);
holder.divider.setVisibility(position == NavigationDrawerFragment.ABOUT_INDEX ?
View.VISIBLE : View.GONE);
final boolean selected = position == currentChecked;
final int iconColor = selected ? ThemeSingleton.get().positiveColor : navIconColor;
final int textColor = selected ? ThemeSingleton.get().positiveColor : navIconColor;
holder.title.setTextColor(textColor);
holder.title.setAlpha(selected ? ALPHA_ACTIVATED : ALPHA_TEXT);
holder.icon.setColorFilter(iconColor, PorterDuff.Mode.SRC_ATOP);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
holder.icon.setImageAlpha(selected ? ALPHA_ACTIVATED : ALPHA_ICON);
} else {
// noinspection deprecation
holder.icon.setAlpha(selected ? ALPHA_ACTIVATED : ALPHA_ICON);
}
holder.container.setActivated(selected);
holder.container.setTag(position);
holder.container.setOnClickListener(this);
}
@Override
public int getItemCount() {
return mItems.size();
}
}

View file

@ -29,7 +29,7 @@ public class PagerAdapter extends FragmentPagerAdapter {
private int mCurrentPage;
private String[] titles;
private final String[] titles;
public PagerAdapter(final Context context, final FragmentManager fragmentManager) {
super(fragmentManager);
@ -68,16 +68,15 @@ public class PagerAdapter extends FragmentPagerAdapter {
if (mWeakFragment != null) {
mWeakFragment.clear();
}
mFragmentArray.put(position, new WeakReference<Fragment>(mFragment));
mFragmentArray.put(position, new WeakReference<>(mFragment));
return mFragment;
}
@Override
public Fragment getItem(final int position) {
final Holder mCurrentHolder = mHolderList.get(position);
final Fragment mFragment = Fragment.instantiate(mContext,
return Fragment.instantiate(mContext,
mCurrentHolder.mClassName, mCurrentHolder.mParams);
return mFragment;
}
@Override
@ -114,7 +113,7 @@ public class PagerAdapter extends FragmentPagerAdapter {
ARTIST(ArtistViewFragment.class),
PLAYLIST(PlaylistViewFragment.class);
private Class<? extends Fragment> mFragmentClass;
private final Class<? extends Fragment> mFragmentClass;
MusicFragments(final Class<? extends Fragment> fragmentClass) {
mFragmentClass = fragmentClass;

View file

@ -1,7 +1,6 @@
package com.kabouzeid.gramophone.adapter;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@ -10,31 +9,24 @@ import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.Toast;
import com.afollestad.materialdialogs.util.DialogUtils;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.AddToPlaylistDialogHelper;
import com.kabouzeid.gramophone.helper.DeleteSongsDialogHelper;
import com.kabouzeid.gramophone.helper.MenuItemClickHelper;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.Util;
import java.io.File;
import java.util.List;
import java.util.ArrayList;
/**
* Created by karim on 24.01.15.
* @author Karim Abou Zeid (kabouzeid)
*/
public class PlayingQueueAdapter extends ArrayAdapter<Song> {
private Activity activity;
public PlayingQueueAdapter(Activity activity, List<Song> playList) {
private final ActionBarActivity activity;
public PlayingQueueAdapter(ActionBarActivity activity, ArrayList<Song> playList) {
super(activity, R.layout.item_list_playlist_song, playList);
this.activity = activity;
}
@ -52,7 +44,7 @@ public class PlayingQueueAdapter extends ArrayAdapter<Song> {
title.setText(song.title);
if (MusicPlayerRemote.getPosition() == position) {
playingIndicator.setVisibility(View.VISIBLE);
playingIndicator.setImageDrawable(Util.getTintedDrawable(getContext().getResources(), R.drawable.ic_speaker_white_48dp, Util.resolveColor(getContext(), R.attr.themed_drawable_color)));
playingIndicator.setImageDrawable(Util.getTintedDrawable(getContext(), R.drawable.ic_speaker_white_48dp, DialogUtils.resolveColor(getContext(), R.attr.themed_drawable_color)));
} else {
playingIndicator.setVisibility(View.GONE);
}
@ -65,7 +57,7 @@ public class PlayingQueueAdapter extends ArrayAdapter<Song> {
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
if(item.getItemId() == R.id.action_remove_from_playing_queue) {
if (item.getItemId() == R.id.action_remove_from_playing_queue) {
MusicPlayerRemote.removeFromQueue(position);
notifyDataSetChanged();
return true;

View file

@ -1,7 +1,7 @@
package com.kabouzeid.gramophone.adapter;
import android.app.Activity;
import android.support.v4.util.Pair;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
@ -24,14 +24,15 @@ import com.squareup.otto.Subscribe;
import java.util.List;
/**
* Created by karim on 16.03.15.
* @author Karim Abou Zeid (kabouzeid)
*/
public class PlaylistAdapter extends RecyclerView.Adapter<PlaylistAdapter.ViewHolder> {
public static final String TAG = PlaylistAdapter.class.getSimpleName();
protected Activity activity;
protected final ActionBarActivity activity;
protected List<Playlist> dataSet;
public PlaylistAdapter(Activity activity) {
public PlaylistAdapter(ActionBarActivity activity) {
this.activity = activity;
loadDataSet();
}
@ -57,8 +58,8 @@ public class PlaylistAdapter extends RecyclerView.Adapter<PlaylistAdapter.ViewHo
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public TextView playlistName;
private ImageView menu;
public final TextView playlistName;
private final ImageView menu;
public ViewHolder(View itemView) {
super(itemView);
@ -73,7 +74,8 @@ public class PlaylistAdapter extends RecyclerView.Adapter<PlaylistAdapter.ViewHo
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return MenuItemClickHelper.handlePlaylistMenuClick(activity, dataSet.get(getAdapterPosition()), item);
return MenuItemClickHelper.handlePlaylistMenuClick(
activity, dataSet.get(getAdapterPosition()), item);
}
});
popupMenu.show();

View file

@ -1,8 +1,8 @@
package com.kabouzeid.gramophone.adapter;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Typeface;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@ -12,22 +12,23 @@ import android.widget.ImageView;
import android.widget.PopupMenu;
import android.widget.TextView;
import com.afollestad.materialdialogs.util.DialogUtils;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.MenuItemClickHelper;
import com.kabouzeid.gramophone.model.SearchEntry;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.SearchActivity;
import com.kabouzeid.gramophone.util.Util;
import java.util.List;
/**
* Created by karim on 27.02.15.
* @author Karim Abou Zeid (kabouzeid)
*/
public class SearchAdapter extends ArrayAdapter<SearchEntry>{
private Activity activity;
public class SearchAdapter extends ArrayAdapter<SearchEntry> {
public SearchAdapter(Activity activity, List<SearchEntry> objects) {
private final ActionBarActivity activity;
public SearchAdapter(ActionBarActivity activity, List<SearchEntry> objects) {
super(activity, R.layout.item_list_search, objects);
this.activity = activity;
}
@ -50,7 +51,7 @@ public class SearchAdapter extends ArrayAdapter<SearchEntry>{
subTitle.setVisibility(View.GONE);
imageView.setVisibility(View.GONE);
overflowButton.setVisibility(View.GONE);
convertView.setBackgroundColor(Util.resolveColor(getContext(), R.attr.default_bar_color));
convertView.setBackgroundColor(DialogUtils.resolveColor(getContext(), R.attr.default_bar_color));
} else if (item instanceof Song) {
title.setTypeface(null, Typeface.NORMAL);
subTitle.setVisibility(View.VISIBLE);

View file

@ -1,8 +1,6 @@
package com.kabouzeid.gramophone.adapter.songadapter;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.util.Pair;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
@ -13,32 +11,23 @@ import android.widget.PopupMenu;
import android.widget.TextView;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.AddToPlaylistDialogHelper;
import com.kabouzeid.gramophone.helper.DeleteSongsDialogHelper;
import com.kabouzeid.gramophone.helper.MenuItemClickHelper;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import java.io.File;
import java.util.List;
import java.util.ArrayList;
/**
* Created by karim on 27.11.14.
* @author Karim Abou Zeid (kabouzeid)
*/
public class AlbumSongAdapter extends RecyclerView.Adapter<AlbumSongAdapter.ViewHolder> {
public static final String TAG = AlbumSongAdapter.class.getSimpleName();
protected final ActionBarActivity activity;
protected final ArrayList<Song> dataSet;
protected Activity activity;
protected List<Song> dataSet;
public AlbumSongAdapter(Activity activity, List<Song> objects) {
public AlbumSongAdapter(ActionBarActivity activity, ArrayList<Song> objects) {
this.activity = activity;
dataSet = objects;
}
@ -66,10 +55,10 @@ public class AlbumSongAdapter extends RecyclerView.Adapter<AlbumSongAdapter.View
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView songTitle;
TextView trackNumber;
TextView artistName;
ImageView overflowButton;
final TextView songTitle;
final TextView trackNumber;
final TextView artistName;
final ImageView overflowButton;
public ViewHolder(View itemView) {
super(itemView);

View file

@ -1,8 +1,7 @@
package com.kabouzeid.gramophone.adapter.songadapter;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.util.Pair;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@ -11,33 +10,25 @@ import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.Toast;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.AddToPlaylistDialogHelper;
import com.kabouzeid.gramophone.helper.DeleteSongsDialogHelper;
import com.kabouzeid.gramophone.helper.MenuItemClickHelper;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.squareup.picasso.Picasso;
import java.io.File;
import java.util.List;
/**
* Created by karim on 14.03.15.
* @author Karim Abou Zeid (kabouzeid)
*/
public class ArtistSongAdapter extends ArrayAdapter<Song> {
private Activity activity;
public ArtistSongAdapter(Activity activity, List<Song> songs) {
private final ActionBarActivity activity;
public ArtistSongAdapter(ActionBarActivity activity, List<Song> songs) {
super(activity, R.layout.item_list_song, songs);
this.activity = activity;
}

View file

@ -1,7 +1,7 @@
package com.kabouzeid.gramophone.adapter.songadapter;
import android.app.Activity;
import android.support.v4.util.Pair;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
@ -22,17 +22,19 @@ import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PlaylistsUtil;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
/**
* Created by karim on 27.11.14.
* @author Karim Abou Zeid (kabouzeid)
*/
public class PlaylistSongAdapter extends RecyclerView.Adapter<PlaylistSongAdapter.ViewHolder> {
public static final String TAG = AlbumSongAdapter.class.getSimpleName();
protected Activity activity;
protected List<PlaylistSong> dataSet;
public PlaylistSongAdapter(Activity activity, List<PlaylistSong> objects) {
public static final String TAG = AlbumSongAdapter.class.getSimpleName();
protected final ActionBarActivity activity;
protected final ArrayList<PlaylistSong> dataSet;
public PlaylistSongAdapter(ActionBarActivity activity, ArrayList<PlaylistSong> objects) {
this.activity = activity;
dataSet = objects;
}
@ -62,10 +64,10 @@ public class PlaylistSongAdapter extends RecyclerView.Adapter<PlaylistSongAdapte
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView songTitle;
TextView songInfo;
ImageView overflowButton;
ImageView albumArt;
final TextView songTitle;
final TextView songInfo;
final ImageView overflowButton;
final ImageView albumArt;
public ViewHolder(View itemView) {
super(itemView);
@ -77,7 +79,8 @@ public class PlaylistSongAdapter extends RecyclerView.Adapter<PlaylistSongAdapte
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MusicPlayerRemote.openQueue((List<Song>) (List) dataSet, getAdapterPosition(), true);
//noinspection unchecked
MusicPlayerRemote.openQueue((ArrayList<Song>) (List) dataSet, getAdapterPosition(), true);
}
});
}

View file

@ -1,9 +1,8 @@
package com.kabouzeid.gramophone.adapter.songadapter;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.support.v4.util.Pair;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
@ -13,41 +12,35 @@ import android.widget.ImageView;
import android.widget.PopupMenu;
import android.widget.TextView;
import com.afollestad.materialdialogs.ThemeSingleton;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.AddToPlaylistDialogHelper;
import com.kabouzeid.gramophone.helper.DeleteSongsDialogHelper;
import com.kabouzeid.gramophone.helper.MenuItemClickHelper;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.loader.SongFilePathLoader;
import com.kabouzeid.gramophone.loader.SongLoader;
import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.DataBaseChangedEvent;
import com.kabouzeid.gramophone.model.Song;
import com.kabouzeid.gramophone.ui.activities.base.AbsFabActivity;
import com.kabouzeid.gramophone.ui.activities.tageditor.SongTagEditorActivity;
import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.Util;
import com.squareup.otto.Subscribe;
import com.squareup.picasso.Picasso;
import java.io.File;
import java.util.List;
import java.util.ArrayList;
/**
* Created by karim on 27.11.14.
* @author Karim Abou Zeid (kabouzeid)
*/
public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
public static final String TAG = AlbumSongAdapter.class.getSimpleName();
private static final int SHUFFLE_BUTTON = 0;
private static final int SONG = 1;
protected Activity activity;
protected List<Song> dataSet;
protected final ActionBarActivity activity;
protected ArrayList<Song> dataSet;
public SongAdapter(Activity activity) {
public SongAdapter(ActionBarActivity activity) {
this.activity = activity;
loadDataSet();
}
@ -80,15 +73,14 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
.placeholder(R.drawable.default_album_art)
.into(holder.albumArt);
} else {
int accentColor = Util.resolveColor(activity, R.attr.colorAccent);
holder.songTitle.setText(activity.getResources().getString(R.string.shuffle_all).toUpperCase());
holder.songTitle.setTextColor(accentColor);
holder.songTitle.setTextColor(ThemeSingleton.get().positiveColor);
holder.songTitle.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
holder.songInfo.setVisibility(View.GONE);
holder.overflowButton.setVisibility(View.GONE);
final int padding = activity.getResources().getDimensionPixelSize(R.dimen.default_item_margin) / 2;
holder.albumArt.setPadding(padding, padding, padding, padding);
holder.albumArt.setColorFilter(accentColor);
holder.albumArt.setColorFilter(ThemeSingleton.get().positiveColor);
holder.albumArt.setImageResource(R.drawable.ic_shuffle_white_48dp);
holder.separator.setVisibility(View.VISIBLE);
holder.short_separator.setVisibility(View.GONE);
@ -101,12 +93,12 @@ public class SongAdapter extends RecyclerView.Adapter<SongAdapter.ViewHolder> {
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView songTitle;
TextView songInfo;
ImageView overflowButton;
ImageView albumArt;
View separator;
View short_separator;
final TextView songTitle;
final TextView songInfo;
final ImageView overflowButton;
final ImageView albumArt;
final View separator;
final View short_separator;
public ViewHolder(View itemView) {
super(itemView);