package com.ved.musicmapapp.fragments; import java.util.ArrayList; import java.util.Collections; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.Toast; import com.ved.musicmapapp.MainActivity; import com.ved.musicmapapp.R; import com.ved.musicmapapp.Objects.Artist; import com.ved.musicmapapp.Objects.Genre; import com.ved.musicmapapp.Objects.User; import com.ved.musicmapapp.adapters.UserAdapter; import com.ved.musicmapapp.fragments.MainFragment.TabInfo; import com.ved.musicmapapp.providers.GetUserArtistListTask; import com.ved.musicmapapp.providers.GetUserByTypeTask; import com.ved.musicmapapp.providers.GetUserPlaylistsListTask; import com.ved.musicmapapp.utils.Statics; import com.ved.musicmapapp.utils.UserSort; /** * * @author Quang * */ public class YouFollowFragment extends Fragment implements GetUserByTypeTask.GetDataListener { private ListView list; private UserAdapter uAdapter; private LinearLayout group_find; // private LinearLayout group_loadmore; private Button find_similar, find_fb_friend, find_by_name; private View mLoadingLayout; private ArrayList<User> users; private GetUserByTypeTask mTask; private Activity mContext; private FragmentActivity mActivity; @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); mActivity = (FragmentActivity) activity; this.mContext = activity; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); return inflater.inflate(R.layout.activity_you_follow, null); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); init(); } private void init() { list = (ListView) getView().findViewById(R.id.list_you_follow); mLoadingLayout = getView().findViewById(R.id.loadingLayout); mLoadingLayout.setVisibility(View.GONE); // group_loadmore = (LinearLayout) // mView.findViewById(R.id.group_loadmore); group_find = (LinearLayout) getView().findViewById(R.id.group_find); find_similar = (Button) group_find.findViewById(R.id.btn_find_similar); find_fb_friend = (Button) group_find .findViewById(R.id.btn_find_fb_friend); find_by_name = (Button) group_find.findViewById(R.id.btn_find_by_name); find_similar.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { MainActivity m = (MainActivity) getActivity(); m.setNewPage(new SimilarUserFragment()); } }); find_fb_friend.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { MainActivity m = (MainActivity) getActivity(); m.setNewPage(new InviteFriendFragment()); } }); find_by_name.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { MainActivity m = (MainActivity) getActivity(); m.setNewPage(AddPlaylistFragment.newInstance(2)); } }); list.setVisibility(View.VISIBLE); users = new ArrayList<User>(); for (String key : Statics.hashUsers.keySet()) { User user = Statics.hashUsers.get(key); if (user.isFollowed()) { users.add(user); } } Collections.sort(users, new UserSort()); uAdapter = new UserAdapter(getActivity(), users); list.setAdapter(uAdapter); if (users.size() == 0) { group_find.setVisibility(View.VISIBLE); } else { group_find.setVisibility(View.GONE); // TabInfo tabInfo = ((MainFragment) getParentFragment()).getTab(0); // if (tabInfo != null) { // tabInfo.tvCount.setText(users.size() + ""); // } } list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, final int pos, long arg3) { int songCount = 0; final User selectedUser = users.get(pos); ArrayList<Artist> userArtists = selectedUser.getArtists(); if (userArtists != null) { for (Artist item : userArtists) { songCount += item.getSongs().size(); } } //If playlist is not there, download that if(selectedUser.getPlaylists() == null && Statics.isNetworkConnected(mContext)) { new GetUserPlaylistsListTask(mContext, uAdapter.getItem(pos)){ protected void onPostExecute(User result) { super.onPostExecute(result); }; }.execute(); } //If song count is changed at server then download all artists and songs if ( songCount != users.get(pos).getNoSong() && Statics.isNetworkConnected(mContext)) { new GetUserArtistListTask(getActivity(), Statics.curUser.getFbid(), uAdapter.getItem(pos).getFbid()) { protected void onPostExecute(User result) { super.onPostExecute(result); if (result != null) { selectedUser.setArtists(result.getArtists()); ArrayList<String>allGen = new ArrayList<String>(); for(String gen : result.getGenre()){ if(!allGen.toString().toLowerCase().contains(gen.toLowerCase())) allGen.add(gen); } selectedUser.setGenre(allGen); //selectedUser.setGenre(result.getGenre()); loadUserDetailFragment(selectedUser); } else { Toast.makeText( getActivity().getApplicationContext(), getString(R.string.error_no_saved_data), Toast.LENGTH_SHORT).show(); } }; }.execute(); } else { if ((selectedUser != null && selectedUser.getArtists() != null && selectedUser.getArtists().size() > 0)) { loadUserDetailFragment(selectedUser); }else{ Toast.makeText(getActivity(), getString(R.string.txt_not_internet), Toast.LENGTH_SHORT).show(); } } } }); if (!Statics.isFollowingLoaded) { getData(); } } private void loadUserDetailFragment(User user) { UserDetailsFragment fragment = new UserDetailsFragment(); fragment.setUser(user); FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.frame_content,fragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } public void getData() { if (mTask != null) { mTask.cancel(true); } if (Statics.curUser != null && getActivity() != null) { mTask = new GetUserByTypeTask(getActivity(), Statics.curUser.getFbid(), GetUserByTypeTask.YOU_FOLLOW, this); mTask.execute(); } } @Override public void onDestroyView() { if (mTask != null) { mTask.cancel(true); } if (getView() != null) { ((ViewGroup) getView().getParent()).removeView(getView()); } super.onDestroyView(); } /** * @param tv * */ @Override public void onStartGetData() { if (users.size() == 0) { mLoadingLayout.setVisibility(View.VISIBLE); } } @Override public void onGotData(ArrayList<User> users) { mLoadingLayout.setVisibility(View.GONE); if (users != null) { // TabInfo tabInfo = ((MainFragment) getParentFragment()).getTab(0); // if (tabInfo != null) { // tabInfo.tvCount.setText(users.size() + ""); // } if (Statics.curUser != null) Statics.curUser.setTotalYouFollow(users.size()); if (getActivity() != null) { uAdapter = new UserAdapter(getActivity(), users); list.setAdapter(uAdapter); } if (users.size() == 0) { group_find.setVisibility(View.VISIBLE); } else { list.setVisibility(View.VISIBLE); group_find.setVisibility(View.GONE); this.users = users; } } } public void getData(final Activity act) { if (null != mTask) mTask.cancel(true); if (Statics.curUser != null) { mTask = new GetUserByTypeTask(getFragmentActivity(), Statics.curUser.getFbid(), GetUserByTypeTask.FOLLOW_YOU, this); mTask.execute(); } } public FragmentActivity getFragmentActivity() { if (getActivity() != null) return getActivity(); if (mActivity != null) return mActivity; return null; } @Override public void onError(String error) { mLoadingLayout.setVisibility(View.GONE); if (users != null && users.size() > 0) { list.setVisibility(View.VISIBLE); group_find.setVisibility(View.GONE); } else { group_find.setVisibility(View.VISIBLE); } } }