package com.rogoapp; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.View; import android.view.View.OnClickListener; import android.view.LayoutInflater; import android.view.ViewGroup; import android.widget.TextView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.app.SherlockListActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener; public class RequestsReceivedActivity extends SherlockListActivity { static final String REQUESTS_RECEIVED_FILE = "requestsreceived"; ListView requestsReceivedList; LocationManager loc; ArrayList<RequestReceived> requests; RequestsReceivedAdapter listAdapter; CacheClient cache = new CacheClient(this); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.request_list); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); loc = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Location locate = loc.getLastKnownLocation(LocationManager.GPS_PROVIDER); System.out.println("THE CURRENT LOCATION IS.... "+locate); if(locate != null){ nameValuePairs.add(new BasicNameValuePair("location_lat",String.format("%s", locate.getLatitude()))); nameValuePairs.add(new BasicNameValuePair("location_lon",String.format("%s", locate.getLongitude()))); System.out.println(String.format("%s", locate.getLatitude())); System.out.println(String.format("%s", locate.getLongitude())); } else{ nameValuePairs.add(new BasicNameValuePair("location_lat","0.000000")); //Maybe I'm a bad person, but nameValuePairs.add(new BasicNameValuePair("location_lon","0.000000")); //But the server requires a minimum of 5 decimal places } SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); System.out.println(sharedPrefs.getString("radius","1")); String sharedRadius = sharedPrefs.getString("radius", "1"); Boolean sharedBool = sharedPrefs.getBoolean("availability", false); String sharedAvail; if(sharedBool){ sharedAvail = "available"; } else{ sharedAvail = "busy"; } nameValuePairs.add(new BasicNameValuePair("availability",sharedAvail)); nameValuePairs.add(new BasicNameValuePair("radius",sharedRadius)); JSONObject jObj = ServerClient.genericPostRequest("availability", nameValuePairs); try{ String status = jObj.getString("status"); if(status.equals("success")){ System.out.println("updated succesfully"); } else{ System.out.println("not updated!"); } }catch(JSONException e){ System.err.println("IN MAP: " + e); }catch(NullPointerException e){ System.err.println("IN MAP: " + e); } requestsReceivedList = this.getListView(); requests = new ArrayList<RequestReceived>(); getRequestsReceived(); if(!requests.isEmpty()){ /*ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, users); nearbyUsersList.setAdapter(arrayAdapter); */ this.listAdapter = new RequestsReceivedAdapter(this,R.layout.requests_received_item,requests); this.setListAdapter(this.listAdapter); } requestsReceivedList.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id){ RequestReceived user = (RequestReceived) parent.getItemAtPosition(position); System.out.printf("(%s) %s",user.uid,user.username); Intent intent = new Intent(getApplicationContext(), ProfileActivity.class); intent.putExtra("user", Integer.toString(user.uid)); startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add("User") .setOnMenuItemClickListener(this.UserClickListener) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); menu.add("Settings") .setOnMenuItemClickListener(this.SettingsClickListener) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); return true; } public void openUserSettings(View v){ final Context context = this; Intent intent = new Intent(context, UserSettingsActivity.class); startActivity(intent); } OnMenuItemClickListener SettingsClickListener = new OnMenuItemClickListener(){ @Override public boolean onMenuItemClick(MenuItem item){ Intent intent = new Intent(RequestsReceivedActivity.this, UserSettingsActivity.class); startActivity(intent); return false; } }; OnMenuItemClickListener UserClickListener = new OnMenuItemClickListener(){ @Override public boolean onMenuItemClick(MenuItem item){ Intent intent = new Intent(RequestsReceivedActivity.this, UserActivity.class); startActivity(intent); return false; } }; public boolean getRequestsReceived() { if(ServerClient.isNetworkAvailable()){ JSONObject json = ServerClient.genericPostRequest("myrequests", Collections.<NameValuePair>emptyList()); if(json != null) parseJ(json, REQUESTS_RECEIVED_FILE); return json != null; } return false; } public void parseJ(JSONObject jObject, String filename){ JSONArray jArray = new JSONArray(); try { jArray = jObject.getJSONObject("data").getJSONArray("incoming"); } catch (JSONException e1) { e1.printStackTrace(); } for (int i=0; i < jArray.length(); i++) { RequestReceived n = new RequestReceived(); try { JSONObject oneObject = jArray.getJSONObject(i); n.username = oneObject.getString("username"); n.uid = oneObject.getInt("uid"); n.rid = oneObject.getInt("rid"); n.distance = oneObject.getDouble("distance"); n.recentness = oneObject.getString("recentness"); n.characteristic = oneObject.getString("characteristic"); } catch (JSONException e) { e.printStackTrace(); } requests.add(n); } } private class RequestReceived { public String username; public int uid; public int rid; public double distance; public String recentness; public String characteristic; public String getDistance(){ return String.format("%6s",this.distance); } } private class RequestsReceivedAdapter extends ArrayAdapter<RequestReceived> { private ArrayList<RequestReceived> requests; public RequestsReceivedAdapter(Context context, int textViewResourceId, ArrayList<RequestReceived> requests) { super(context, textViewResourceId, requests); this.requests = requests; } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if (v == null) { LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.requests_received_item, null); } RequestReceived u = requests.get(position); if (u != null) { TextView tt = (TextView) v.findViewById(R.id.requests_received_username); TextView bt = (TextView) v.findViewById(R.id.requests_received_distance); if (tt != null) { tt.setText(u.username); } if(bt != null){ bt.setText(u.characteristic); } } return v; } } }