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")); } }