/*
* Copyright (C) 2015 Naman Dwivedi
*
* Licensed under the GNU General Public License v3
*
* This is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*/
package com.naman14.timber.subfragments;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.naman14.timber.R;
import com.naman14.timber.dataloaders.LastAddedLoader;
import com.naman14.timber.dataloaders.PlaylistLoader;
import com.naman14.timber.dataloaders.PlaylistSongLoader;
import com.naman14.timber.dataloaders.SongLoader;
import com.naman14.timber.dataloaders.TopTracksLoader;
import com.naman14.timber.models.Playlist;
import com.naman14.timber.models.Song;
import com.naman14.timber.utils.Constants;
import com.naman14.timber.utils.NavigationUtils;
import com.naman14.timber.utils.PreferencesUtility;
import com.naman14.timber.utils.TimberUtils;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class PlaylistPagerFragment extends Fragment {
private static final String ARG_PAGE_NUMBER = "pageNumber";
int[] foregroundColors = {R.color.pink_transparent, R.color.green_transparent, R.color.blue_transparent, R.color.red_transparent, R.color.purple_transparent};
private int pageNumber, songCountInt;
private int foregroundColor;
private long firstAlbumID = -1;
private Playlist playlist;
private TextView playlistame, songcount, playlistnumber, playlisttype;
private ImageView playlistImage;
private View foreground;
private Context mContext;
private boolean showAuto;
public static PlaylistPagerFragment newInstance(int pageNumber) {
PlaylistPagerFragment fragment = new PlaylistPagerFragment();
Bundle bundle = new Bundle();
bundle.putInt(ARG_PAGE_NUMBER, pageNumber);
fragment.setArguments(bundle);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
showAuto = PreferencesUtility.getInstance(getActivity()).showAutoPlaylist();
View rootView = inflater.inflate(R.layout.fragment_playlist_pager, container, false);
final List<Playlist> playlists = PlaylistLoader.getPlaylists(getActivity(), showAuto);
pageNumber = getArguments().getInt(ARG_PAGE_NUMBER);
playlist = playlists.get(pageNumber);
playlistame = (TextView) rootView.findViewById(R.id.name);
playlistnumber = (TextView) rootView.findViewById(R.id.number);
songcount = (TextView) rootView.findViewById(R.id.songcount);
playlisttype = (TextView) rootView.findViewById(R.id.playlisttype);
playlistImage = (ImageView) rootView.findViewById(R.id.playlist_image);
foreground = rootView.findViewById(R.id.foreground);
playlistImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ArrayList<Pair> tranitionViews = new ArrayList<>();
tranitionViews.add(0, Pair.create((View) playlistame, "transition_playlist_name"));
tranitionViews.add(1, Pair.create((View) playlistImage, "transition_album_art"));
tranitionViews.add(2, Pair.create(foreground, "transition_foreground"));
NavigationUtils.navigateToPlaylistDetail(getActivity(), getPlaylistType(), firstAlbumID, String.valueOf(playlistame.getText()), foregroundColor, playlist.id, tranitionViews);
}
});
mContext = this.getContext();
setUpPlaylistDetails();
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedinstancestate) {
new loadPlaylistImage().execute("");
}
private void setUpPlaylistDetails() {
playlistame.setText(playlist.name);
int number = getArguments().getInt(ARG_PAGE_NUMBER) + 1;
String playlistnumberstring;
if (number > 9) {
playlistnumberstring = String.valueOf(number);
} else {
playlistnumberstring = "0" + String.valueOf(number);
}
playlistnumber.setText(playlistnumberstring);
Random random = new Random();
int rndInt = random.nextInt(foregroundColors.length);
foregroundColor = foregroundColors[rndInt];
foreground.setBackgroundColor(foregroundColor);
if (showAuto) {
if (pageNumber <= 2)
playlisttype.setVisibility(View.VISIBLE);
}
}
private String getPlaylistType() {
if (showAuto) {
switch (pageNumber) {
case 0:
return Constants.NAVIGATE_PLAYLIST_LASTADDED;
case 1:
return Constants.NAVIGATE_PLAYLIST_RECENT;
case 2:
return Constants.NAVIGATE_PLAYLIST_TOPTRACKS;
default:
return Constants.NAVIGATE_PLAYLIST_USERCREATED;
}
} else return Constants.NAVIGATE_PLAYLIST_USERCREATED;
}
private class loadPlaylistImage extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
if (getActivity() != null) {
if (showAuto) {
switch (pageNumber) {
case 0:
List<Song> lastAddedSongs = LastAddedLoader.getLastAddedSongs(getActivity());
songCountInt = lastAddedSongs.size();
if (songCountInt != 0) {
firstAlbumID = lastAddedSongs.get(0).albumId;
return TimberUtils.getAlbumArtUri(firstAlbumID).toString();
} else return "nosongs";
case 1:
TopTracksLoader recentloader = new TopTracksLoader(getActivity(), TopTracksLoader.QueryType.RecentSongs);
List<Song> recentsongs = SongLoader.getSongsForCursor(TopTracksLoader.getCursor());
songCountInt = recentsongs.size();
if (songCountInt != 0) {
firstAlbumID = recentsongs.get(0).albumId;
return TimberUtils.getAlbumArtUri(firstAlbumID).toString();
} else return "nosongs";
case 2:
TopTracksLoader topTracksLoader = new TopTracksLoader(getActivity(), TopTracksLoader.QueryType.TopTracks);
List<Song> topsongs = SongLoader.getSongsForCursor(TopTracksLoader.getCursor());
songCountInt = topsongs.size();
if (songCountInt != 0) {
firstAlbumID = topsongs.get(0).albumId;
return TimberUtils.getAlbumArtUri(firstAlbumID).toString();
} else return "nosongs";
default:
List<Song> playlistsongs = PlaylistSongLoader.getSongsInPlaylist(getActivity(), playlist.id);
songCountInt = playlistsongs.size();
if (songCountInt != 0) {
firstAlbumID = playlistsongs.get(0).albumId;
return TimberUtils.getAlbumArtUri(firstAlbumID).toString();
} else return "nosongs";
}
} else {
List<Song> playlistsongs = PlaylistSongLoader.getSongsInPlaylist(getActivity(), playlist.id);
songCountInt = playlistsongs.size();
if (songCountInt != 0) {
firstAlbumID = playlistsongs.get(0).albumId;
return TimberUtils.getAlbumArtUri(firstAlbumID).toString();
} else return "nosongs";
}
} else return "context is null";
}
@Override
protected void onPostExecute(String uri) {
ImageLoader.getInstance().displayImage(uri, playlistImage,
new DisplayImageOptions.Builder().cacheInMemory(true)
.showImageOnFail(R.drawable.ic_empty_music2)
.resetViewBeforeLoading(true)
.build(), new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
}
});
songcount.setText(" " + String.valueOf(songCountInt) + " " + mContext.getString(R.string.songs));
}
@Override
protected void onPreExecute() {
}
}
}