package com.ved.musicmapapp.fragments;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.text.Spannable;
import android.text.TextUtils.TruncateAt;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TextView.BufferType;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.ved.musicmapapp.MainActivity;
import com.ved.musicmapapp.MainActivity.OnShareListener;
import com.ved.musicmapapp.R;
import com.ved.musicmapapp.Objects.Artist;
import com.ved.musicmapapp.Objects.Playlist;
import com.ved.musicmapapp.Objects.PlaylistArtist;
import com.ved.musicmapapp.Objects.User;
import com.ved.musicmapapp.adapters.ArtistListAdapter;
import com.ved.musicmapapp.utils.Statics;
/** Fragment show Artist list of an user */
public class PlaylistArtistsFragment extends Fragment implements OnShareListener {
private ListView list;
private ArtistListAdapter mAdapter;
private Button btn_follow;
private ProgressDialog pd;
private User user;
private Playlist _playlist;
private ImageView ivThumb;
private TextView tvUserName, tvNoSong, tvLastUDArtist, tv_update,
tvFollowMsg;
private ImageLoader imageLoader;
private DisplayImageOptions options;
private boolean lastVal;
private SharedPreferences prefs;
private Activity mContext;
// private Spinner sortSpinner;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.mContext = activity;
}
public void setPlaylistDetails(User user, Playlist playlist) {
this.user = user;
this._playlist = playlist;
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putSerializable("user", user);
super.onSaveInstanceState(outState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_user_detail, container, false);
View topContainer = v.findViewById(R.id.topContainer);
topContainer.setVisibility(View.VISIBLE);
return v;
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
// ((MainActivity)getActivity()).showSpinnerForSort();
if (user != null
&& (user.getFbid() == Statics.curUser.getFbid() || user
.isFollowed())) {
((MainActivity) mContext).showShareAction(this);
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (user == null && savedInstanceState != null) {
user = (User) savedInstanceState.getSerializable("user");
user = Statics.hashUsers.get(user.getFbid());
}
if (null == mContext || null == user)
return;
prefs = mContext
.getSharedPreferences("MUSIC_MAP", Context.MODE_PRIVATE);
// Collections.sort(user.getArtists(), new ArtistSort());
pd = new ProgressDialog(mContext);
pd.setMessage("Loading...");
pd.setCancelable(false);
pd.show();
imageLoader = ImageLoader.getInstance();
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.img_no_image)
.showImageForEmptyUri(R.drawable.img_no_image)
.showImageOnFail(R.drawable.img_no_image).cacheInMemory(true)
.cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565).build();
// sortSpinner = (Spinner) getView().findViewById(R.id.spinner_sort);
// CreateSpinner();
ivThumb = (ImageView) getView().findViewById(R.id.ivThumb);
imageLoader.displayImage(_playlist.getArtistAvatar().trim(), ivThumb, options,
new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
}
@Override
public void onLoadingFailed(String imageUri, View view,
FailReason failReason) {
}
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
//ivThumb.setImageBitmap(Utils.getRoundedCornerBitmap(loadedImage, 20));
ivThumb.setImageBitmap(loadedImage);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
}
});
tvUserName = (TextView) getView().findViewById(R.id.tvUserName);
tvUserName.setText(_playlist.getPlaylistName());
tvNoSong = (TextView) getView().findViewById(R.id.tvNumSong);
String text = _playlist.getArtists().size()+" Artists";
tvNoSong.setText(text);
tvLastUDArtist = (TextView) getView().findViewById(R.id.tvLastUDArtist);
java.util.Date time = new java.util.Date((long)_playlist.getDateAdded()*1000);
java.util.Date time2 = new java.util.Date((long)_playlist.getLastUpdated()*1000);
String addedDate;
String lastUpdated;
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
addedDate = df.format(time);
lastUpdated = df.format(time2);
text = "Added: " + addedDate;
tvLastUDArtist.setText(text);
tvLastUDArtist.setEllipsize(TruncateAt.MARQUEE);
tvLastUDArtist.setSelected(true);
tv_update = (TextView) getView().findViewById(R.id.update_time);
tv_update.setText("Last Updated : "+lastUpdated);
list = (ListView) getView().findViewById(R.id.list_you_follow_detail);
btn_follow = (Button) getView().findViewById(R.id.btn_follow);
String text1 = getString(R.string.user_follow_user);
String text2 = getString(R.string.user_follow_msg, text1);
tvFollowMsg = (TextView) getView().findViewById(R.id.tv_follow_msg);
tvFollowMsg.setMovementMethod(LinkMovementMethod.getInstance());
tvFollowMsg.setText(text2, BufferType.SPANNABLE);
Spannable mySpannable = (Spannable) tvFollowMsg.getText();
tvFollowMsg.setVisibility(View.GONE);
btn_follow.setVisibility(View.GONE);
ClickableSpan myClickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
}
};
mySpannable.setSpan(myClickableSpan, text2.length() - text1.length(),
text2.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
lastVal = user.isFollowed();
if (user.getArtistcount() > 0) {
list.setVisibility(View.VISIBLE);
} else {
list.setVisibility(View.GONE);
}
updateView();
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int pos,long arg3) {
ArtistFragment fr = new ArtistFragment();
PlaylistArtist artist = mAdapter.getItem(pos);
Artist nArtist = Statics.getArtistFromPlaylistArtist(artist);
fr.setArtist(nArtist);
fr.setUser(user);
loadArtistFragment(fr);
}
});
}
private void loadArtistFragment(ArtistFragment fr) {
FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame_content,fr);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
String[] _methodStrings = new String[]{"Sort","A - Z"};
// public void CreateSpinner(){
//
// final ArrayList<String> reasonArray = new ArrayList<String>();
// for(int i = 0; i <_methodStrings.length;i ++){
// reasonArray.add(_methodStrings[i]);
// }
//
// sortSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
// @Override
// public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
// String sortString = sortSpinner.getSelectedItem().toString();
//// ArtistFragment fragment = (ArtistFragment) getSupportFragmentManager().findFragmentByTag("ArtistFragment");
//// if(fragment != null){
//// if(fragment.isVisible()){
// if(sortString.contains("A - Z"))
// mAdapter.sortAscending();
//// }
////
//// }
// }
//
// @Override
// public void onNothingSelected(AdapterView<?> parentView) {
//
// }
//
// });
//
//
// ArrayAdapter<String> methodAdapter = new ArrayAdapter<String>(getActivity(), R.drawable.spinner_item, reasonArray){
//
// @Override
// public View getDropDownView(int position, View convertView,android.view.ViewGroup parent){
// View v = convertView;
// if (v == null) {
// Context mContext = getActivity().getBaseContext();
// LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// v = vi.inflate(R.layout.simple_spinner_dropdown_item, null);
// }
// // The text view of the spinner list view
// TextView tv = (TextView) v.findViewById(android.R.id.text1);
// String val = reasonArray.get(position);
// // remove the extra text here
// tv.setText(val.replace(":False", ""));
//
// boolean disabled = !isEnabled(position);
// if(disabled){tv.setTextColor(Color.GRAY);}
// else{tv.setTextColor(Color.WHITE);}
//
// return v;
// }
// };
// methodAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// sortSpinner.setAdapter(methodAdapter);
// }
/** show list of artist in 2 list :
* - match artist
* - unmatch artist
*
* limit number of artist by 10 if user isn't followed
*
*/
public void showData() {
pd.dismiss();
List<PlaylistArtist> artists = _playlist.getArtists();
if (!user.isFollowed() && !user.getFbid().equals(Statics.curUser.getFbid())) {
tvFollowMsg.findViewById(R.id.tv_follow_msg).setVisibility(View.VISIBLE);
} else {
tvFollowMsg.findViewById(R.id.tv_follow_msg).setVisibility(View.GONE);
}
mAdapter = new ArtistListAdapter(mContext,_playlist.getArtists(),false);
if (list != null)
list.setAdapter(mAdapter);
}
public void updateView() {
// user = Statics.hashUsers.get(user.getFbid());
if (null != user) {
if (user.isFollowed()) {
btn_follow.setText("Unfollow");
//btn_follow.setBackgroundResource(R.drawable.rectangle_transperent);
} else {
btn_follow.setText(" Follow ");
tvFollowMsg.setVisibility(View.VISIBLE);
// btn_follow.setBackgroundResource(R.drawable.bg_button);
}
showData();
}
}
@Override
public void onStop() {
if (null != user && lastVal != user.isFollowed() && null != mContext) {
MainActivity m = (MainActivity) mContext;
m.setHasReload(true);
}
super.onStop();
}
@Override
public void onDestroyView() {
if (getView() != null) {
((ViewGroup) getView().getParent()).removeView(getView());
}
// ((MainActivity) mContext).hideShareAction();
// ((MainActivity)mContext).hideSpinnerForSort();
super.onDestroyView();
}
@Override
public void onShare() {
String sharedUrl = Statics.WEB_APP_URL + user.getUserName();
String shareBody;
if (Statics.curUser.getFbid() == user.getFbid()) {
if (user.getArtistcount() == 1) {
shareBody = getString(R.string.share_user_current_user_, user
.getArtists().get(0).getName());
} else {
shareBody = getString(R.string.share_user_current_user, user
.getArtists().get(0).getName(), user.getArtists()
.size() - 1);
}
} else {
if (user.getArtistcount() == 1) {
shareBody = getString(R.string.share_user_other_user_,
user.getFirstName(), user.getArtists().get(0).getName());
} else {
shareBody = getString(R.string.share_user_other_user,
user.getFirstName(),
user.getArtists().get(0).getName(), user.getArtists()
.size() - 1);
}
}
shareBody += "\n" + sharedUrl;
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Share"));
}
}