package ca.uwccf.prayerbox.MainScreen;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import ca.uwccf.prayerbox.R;
import ca.uwccf.prayerbox.Data.Prayer;
import ca.uwccf.prayerbox.Data.PrayerApplication;
import ca.uwccf.prayerbox.Data.PrayerParser;
import ca.uwccf.prayerbox.LogIn.PrayerLoginActivity;
import ca.uwccf.prayerbox.OtherScreen.PrayerDetailsActivity;
import ca.uwccf.prayerbox.R.id;
import ca.uwccf.prayerbox.R.layout;
import ca.uwccf.prayerbox.R.menu;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.util.SparseBooleanArray;
import android.view.ActionMode;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView.MultiChoiceModeListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ListView;
import android.widget.Toast;
public class PrayerLogFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
((ListView) parent).setItemChecked(position,
((ListView) parent).isItemChecked(position));
return false;
}
});
getListView().setMultiChoiceModeListener(new MultiChoiceModeListener() {
private int nr = 0;
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
getActivity().getMenuInflater().inflate(
R.menu.contextual_prayer_log, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.contextual_action_delete:
// TODO: Replace toast with code for deleting selected items
// here
SparseBooleanArray selected = ((PrayerAdapter) getListAdapter())
.getSelectedIds();
ArrayList<String> del_prayers = new ArrayList<String>();
for (int i = (selected.size() - 1); i >= 0; i--) {
if (selected.valueAt(i)) {
Prayer selectedItem = (Prayer) getListAdapter()
.getItem(selected.keyAt(i));
del_prayers.add(selectedItem.prayer_id);
}
}
if(PrayerLoginActivity.intInfo.isNetworkAvailable(getActivity().getApplicationContext())){
final ArrayList<String> plist = del_prayers;
SharedPreferences prefs = getActivity().getSharedPreferences("account", 0);
final String user = prefs.getString("user","");
StringRequest request = new StringRequest(Request.Method.POST, getString(R.string.prayer_log_del_mult_url),
new Response.Listener<String>() {
@Override
public void onResponse(String result) {
MainTabbedFragmentActivity.refresh();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
map.put("user", user);
String prayerids = "";
for(String pid: plist){
prayerids += pid + ",";
}
prayerids.substring(0, prayerids.length()-1);
map.put("prayer_ids",prayerids);
return map;
}
};
PrayerApplication.getInstance().addToRequestQueue(request);
mode.finish();
} else {
PrayerLoginActivity.intInfo.noInternetToast(getActivity().getApplicationContext());
}
break;
}
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
nr = 0;
}
@Override
public void onItemCheckedStateChanged(ActionMode mode,
int position, long id, boolean checked) {
((PrayerAdapter) getListAdapter()).toggleSelection(position);
if (checked) {
nr++;
} else {
nr--;
}
if (nr > 1)
mode.setTitle(nr + " items selected");
else
mode.setTitle("1 item selected");
}
});
}
public void refresh() {
if (PrayerLoginActivity.intInfo.isNetworkAvailable(getActivity()
.getApplicationContext())) {
getActivity().setProgressBarIndeterminateVisibility(true);
StringRequest request = new StringRequest(Request.Method.POST, getString(R.string.prayer_log_url),
new Response.Listener<String>() {
@Override
public void onResponse(String result) {
PrayerParser pray_parser = new PrayerParser(result);
ArrayList<Prayer> prayer_list = pray_parser.parsePrayerList();
PrayerAdapter prayerAdapter = new PrayerAdapter(getActivity(),
prayer_list, true);
setListAdapter(prayerAdapter);
getActivity().setProgressBarIndeterminateVisibility(false);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
map.put("username", MainTabbedFragmentActivity.mUser);
return map;
}
};
PrayerApplication.getInstance().addToRequestQueue(request);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
refresh();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_prayer_log,
container, false);
return rootView;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Prayer item = (Prayer) getListAdapter().getItem(position);
String request = item.request;
String subject = item.subject;
String author = item.author;
String date = item.date;
String prayer_id = item.prayer_id;
Intent nextScreen = new Intent(getActivity(),
PrayerDetailsActivity.class);
// Sending data to another Activity
nextScreen.putExtra("subject", subject);
nextScreen.putExtra("request", request);
nextScreen.putExtra("author", author);
nextScreen.putExtra("date", date);
nextScreen.putExtra("isStarred", true);
nextScreen.putExtra("prayer_id", prayer_id);
startActivity(nextScreen);
}
}