package com.ved.musicmapapp.fragments;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
import com.ved.musicmapapp.MainActivity;
import com.ved.musicmapapp.R;
import com.ved.musicmapapp.Objects.FacebookFriend;
import com.ved.musicmapapp.Objects.User;
import com.ved.musicmapapp.adapters.FriendAdapter;
import com.ved.musicmapapp.adapters.UserAdapter;
import com.ved.musicmapapp.applications.MusicMapApplication;
import com.ved.musicmapapp.providers.GetUserArtistListTask;
import com.ved.musicmapapp.providers.SearchUserTask;
import com.ved.musicmapapp.utils.Statics;
public class AddPlaylistFragment extends Fragment {
private ListView list;
private UserAdapter uAdapter;
private LinearLayout group_loadmore;
private boolean alertShowing = false;
private MusicMapApplication app;
private FacebookFriend ff;
private int type; // 0: similar, 1: facebook, 2: by name
private View /* group_search,*/ group_button_invite;
private EditText edt_search, edt_search1;
private ImageView /* imv_search, imv_search1,*/ imvAddPlaylist;
private ArrayList<User> users;
private SearchUserTask task;
private View loadingLayout, resultLayout;
private Activity mContext;
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
this.mContext = activity;
}
public static AddPlaylistFragment newInstance(int type) {
AddPlaylistFragment fragment = new AddPlaylistFragment();
fragment.type = type;
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View v = inflater.inflate(R.layout.activity_search, container, false);
if (null == mContext)
return v;
MainActivity parent = (MainActivity) mContext;
edt_search = parent.getEdtSearch();
loadingLayout = v.findViewById(R.id.loadingLayout);
resultLayout = v.findViewById(R.id.resultLayout);
// group_search = v.findViewById(R.id.group_search);
group_button_invite = v.findViewById(R.id.group_button_invite);
app = (MusicMapApplication) parent.getApplication();
list = (ListView) v.findViewById(R.id.list_you_follow);
// imv_search1 = (ImageView) v.findViewById(R.id.imv_search1);
edt_search1 = (EditText) v.findViewById(R.id.edt_search1);
InputMethodManager mgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
edt_search1.requestFocus();
mgr.showSoftInput(edt_search1, InputMethodManager.SHOW_IMPLICIT);
group_loadmore = (LinearLayout) v.findViewById(R.id.group_loadmore);
users = new ArrayList<User>();
uAdapter = new UserAdapter(mContext, users);
list.setAdapter(uAdapter);
// edt_search1.setOnEditorActionListener(new OnEditorActionListener() {
// public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
// if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
// Log.i("check","Enter pressed");
// searchFunction();
// }
// return false;
// }
// });
// imv_search1.setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View arg0) {
// searchFunction();
// }
// });
if (type == 2) { // By Name
// group_search.setVisibility(View.VISIBLE);
edt_search1.setVisibility(View.VISIBLE);
// imv_search.setVisibility(View.GONE);
edt_search.setVisibility(View.GONE);
} else {
// group_search.setVisibility(View.GONE);
edt_search1.setVisibility(View.VISIBLE);
edt_search.setVisibility(View.VISIBLE);
// imv_search.setVisibility(View.VISIBLE);
if (type == 0) { // Similar
list.setAdapter(uAdapter);
} else { // Facebook
group_button_invite.setVisibility(View.VISIBLE);
list.setAdapter(new FriendAdapter(parent));
}
}
edt_search1
.setOnEditorActionListener(new EditText.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH
|| actionId == EditorInfo.IME_ACTION_DONE
|| event.getAction() == KeyEvent.ACTION_DOWN
&& event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
searchFunction();
return true;
}
return false;
}
});
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
final int pos, long arg3) {
if (users.get(pos).getArtists() == null) {
new GetUserArtistListTask(getActivity(), Statics.curUser
.getFbid(), users.get(pos).getFbid()) {
protected void onPostExecute(User result) {
super.onPostExecute(result);
edt_search1.setText("");
if(result != null){
users.get(pos).setArtists(result.getArtists());
users.get(pos).setGenre(result.getGenre());
transaction(users.get(pos));
}
else
Toast.makeText(getActivity(), "Something went wrong, Try again Later..", Toast.LENGTH_SHORT).show();
};
}.execute();
} else {
transaction(users.get(pos));
}
}
public void transaction(User user) {
UserDetailsFragment fragment = new UserDetailsFragment();
fragment.setUser(user);
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame_content, fragment,"UserDetailFragment");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commitAllowingStateLoss();
/*UserArtistsFragment fragment = new UserArtistsFragment();
fragment.setUser(user);
FragmentTransaction fragmentTransaction = getFragmentManager()
.beginTransaction();
fragmentTransaction.replace(R.id.frame_content, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();*/
}
});
return v;
}
public void searchFunction() {
if (!Statics.isNetworkConnected(mContext)) {
Statics.showToast(mContext, "Network unavaiable!");
return;
}
String keyWord = edt_search1.getText().toString().trim();
if (keyWord.length() == 0) {
Statics.showToast(mContext, "Please type some key word!");
return;
}
InputMethodManager imm = (InputMethodManager) mContext
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edt_search1.getWindowToken(), 0);
if (null != task)
task.cancel(true);
task = new SearchUserTask(mContext, keyWord, users) {
@Override
protected void onPreExecute() {
super.onPreExecute();
loadingLayout.setVisibility(View.VISIBLE);
list.setVisibility(View.GONE);
resultLayout.setVisibility(View.GONE);
}
public void onSuccess() {
loadingLayout.setVisibility(View.GONE);
if (users.size() == 0) {
resultLayout.setVisibility(View.VISIBLE);
} else {
uAdapter.notifyDataSetChanged();
list.setVisibility(View.VISIBLE);
}
};
};
task.execute();
}
@Override
public void onDestroy() {
if (null != task)
task.cancel(true);
super.onDestroy();
}
@Override
public void onDestroyView() {
if (getView() != null) {
((ViewGroup) getView().getParent()).removeView(getView());
}
super.onDestroyView();
}
}