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.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
import com.ved.musicmapapp.R;
import com.ved.musicmapapp.Objects.User;
import com.ved.musicmapapp.adapters.UserAdapter;
import com.ved.musicmapapp.providers.GetAroundMeTask;
import com.ved.musicmapapp.providers.GetUserArtistListTask;
import com.ved.musicmapapp.providers.GetUserByTypeTask;
import com.ved.musicmapapp.utils.Statics;
import com.ved.musicmapapp.utils.UserSort;
/**
*
* @author Quang
*
* show list of whom you could follow
*/
public class SimilarUserFragment extends Fragment implements
GetUserByTypeTask.GetDataListener {
private ListView list;
private UserAdapter uAdapter;
// private LinearLayout group_loadmore, group_find;
// private boolean alertShowing = false;
// private MusicMapApplication app;
private ArrayList<User> users;
private View mLoadingLayout;
private View mResultLayout;
private GetUserByTypeTask mTask;
private Activity mContext;
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(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, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (null == mContext)
return;
if (!Statics.isNetworkConnected(getActivity())) {
Toast.makeText(getActivity(), "Network unavaiable!", Toast.LENGTH_SHORT).show();
}
list = (ListView) getView().findViewById(R.id.list_you_follow);
mLoadingLayout = getView().findViewById(R.id.loadingLayout);
mResultLayout = getView().findViewById(R.id.resultLayout);
list.setVisibility(View.VISIBLE);
mResultLayout.setVisibility(View.GONE);
if (null == Statics.hashUsers)
return;
users = new ArrayList<User>();
for (String key : Statics.hashUsers.keySet()) {
User user = Statics.hashUsers.get(key);
if (Statics.curUser.getFbid() != null) {
if (!user.isFollowed()
&& !user.getFbid().equals(Statics.curUser.getFbid())) {
users.add(user);
}
}
}
Collections.sort(users, new UserSort());
mLoadingLayout.setVisibility(View.GONE);
uAdapter = new UserAdapter(mContext, users);
list.setAdapter(uAdapter);
if (users.size() == 0) {
mResultLayout.setVisibility(View.VISIBLE);
}
if (!Statics.isWhoToFollowLoaded) {
if (Statics.curUser != null) {
mTask = new GetUserByTypeTask(mContext,
Statics.curUser.getFbid(),
GetUserByTypeTask.SIMILAR_ME, this);
mTask.execute();
}
}
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
final int pos, long arg3) {
if (users.get(pos).getArtists() == null
|| (users.get(pos).getArtists() == null && users
.get(pos).getArtists().size() == 0)
|| (users.get(pos).getArtists() != null && users.get(
pos).getArtistcount() != users.get(pos)
.getArtists().size())) {
if (Statics.isNetworkConnected(getActivity())) {
new GetUserArtistListTask(getActivity(),
Statics.curUser.getFbid(), users.get(pos)
.getFbid()) {
protected void onPostExecute(User result) {
super.onPostExecute(result);
if (result != null) {
users.get(pos).setArtists(result.getArtists());
users.get(pos).setGenre(result.getGenre());
UserDetailsFragment fragment = new UserDetailsFragment();
fragment.setUser(users.get(pos));
FragmentTransaction fragmentTransaction = getActivity()
.getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame_content,
fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
/* UserDetailFragment fragment = new UserDetailFragment();
fragment.setUser(users.get(pos));
FragmentTransaction fragmentTransaction = getFragmentManager()
.beginTransaction();
fragmentTransaction.replace(
R.id.frame_content, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();*/
} else {
Toast.makeText(
getActivity()
.getApplicationContext(),
getString(R.string.error_no_saved_data),
Toast.LENGTH_SHORT).show();
}
};
}.execute();
} else {
Toast.makeText(
getActivity(),
getActivity().getString(
R.string.txt_not_internet),
Toast.LENGTH_SHORT).show();
}
} else {
UserDetailsFragment fragment = new UserDetailsFragment();
fragment.setUser(users.get(pos));
FragmentTransaction fragmentTransaction = getActivity()
.getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame_content,
fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
/*UserDetailFragment fragment = new UserDetailFragment();
fragment.setUser(users.get(pos));
FragmentTransaction fragmentTransaction = getFragmentManager()
.beginTransaction();
fragmentTransaction.replace(R.id.frame_content, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();*/
}
}
});
}
@Override
public void onDestroyView() {
if (getView() != null) {
((ViewGroup) getView().getParent()).removeView(getView());
}
if (mTask != null) {
mTask.cancel(true);
}
super.onDestroyView();
}
@Override
public void onStartGetData() {
if (users == null || users.size() == 0) {
mLoadingLayout.setVisibility(View.VISIBLE);
mResultLayout.setVisibility(View.GONE);
}
}
@Override
public void onGotData(ArrayList<User> users) {
mLoadingLayout.setVisibility(View.GONE);
if (users == null || users.size() == 0) {
try {
mResultLayout.setVisibility(View.VISIBLE);
getView().findViewById(R.id.list_you_follow).setVisibility(
View.GONE);
} catch (Exception ex) {
}
} else {
Collections.sort(users, new UserSort());
this.users = users;
if (mContext != null) {
if (this.users == null) {
this.users = new ArrayList<User>();
}
uAdapter = new UserAdapter(mContext, this.users);
list.setAdapter(uAdapter);
list.setVisibility(View.VISIBLE);
}
}
}
@Override
public void onError(String error) {
mLoadingLayout.setVisibility(View.GONE);
list.setVisibility(View.VISIBLE);
}
}