package com.geored.gui; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.geored.rest.R; import com.geored.rest.ServicioRestUsuarios; import com.geored.rest.data.Invitacion; import com.geored.rest.exception.ConflictException; import com.geored.rest.exception.NotFoundException; import com.geored.rest.exception.RestBlowUpException; import com.geored.rest.exception.UnauthorizedException; import android.content.Intent; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; import android.os.AsyncTask; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; public class InvitacionesActivity extends GenericActivity { @Override protected void goToPreviousActivity(){ Intent setIntent = new Intent(this,UsuarioActivity.class); startActivity(setIntent); } protected void loadVista() { setContentView(R.layout.activity_invitaciones); loadListView(); registerForContextMenu(getListView()); } private void setListAdapter(ArrayAdapter<String> adapter) { getListView().setAdapter(adapter); } private ListAdapter getListAdapter() { return getListView().getAdapter(); } private ListView getListView() { return ((ListView)findViewById(R.id.listView)); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.activity_invitaciones, menu); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); Object itemList = getListAdapter().getItem(info.position); switch (item.getItemId()) { case R.id.menu_aceptar_invitacion: showInvitacionAceptada(itemList.toString()); //showToast("Chat: pos="+info.position + " , usr="+itemList.toString()); showToast("invitacion del contacto <"+itemList.toString()+"> aceptada"); return true; default: return super.onContextItemSelected(item); } } private void showInvitacionAceptada(String idItem) { if (hashUsuarios.containsKey(idItem)){ progressBar.show(); String id = hashUsuarios.get(idItem).getId(); AceptarInvitacionAsyncTask task = new AceptarInvitacionAsyncTask(); task.execute(new String[] { id }); }else{ showToast("error antes de llamar al invitacion Aceptada"); } } private void loadListView() { progressBar.show(); RegistryAsyncTask task = new RegistryAsyncTask(); task.execute(); } private void loadListView(List<Invitacion> invitaciones) { try{ hashUsuarios.clear(); List<String> strs = new ArrayList<String>(); //List<Invitacion> invitaciones = ServicioRestUsuarios.getInvitaciones(); if (invitaciones != null){ showToast(Integer.toString(invitaciones.size())); Iterator<Invitacion> it = invitaciones.iterator(); while(it.hasNext()){ Invitacion invitacion = (Invitacion)it.next(); String valueToShow = "id:<"+invitacion.getId()+"> remitente:<"+invitacion.getRemitente().getNombre()+">"; strs.add(valueToShow); hashUsuarios.put(valueToShow, invitacion.getRemitente()); } ArrayAdapter<String> adapter = new ArrayAdapter<String>(InvitacionesActivity.this, android.R.layout.simple_list_item_1, strs); setListAdapter(adapter); }else{ showToast("invitaciones == null"); } }catch(Exception ex){ showToast(ex.getMessage()); } } /* private void loadListViewHardCoreData2() { //ListView listView = (ListView) findViewById(R.id.contactosListView); List<String> strs = new ArrayList<String>(); for(int i=0; i < 15;i++){ //strs.add("Usuario "+Integer.toString(i)); strs.add("id:<"+Integer.toString(i)+"> remitente:<Usuario "+Integer.toString(i)+">"); } //ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, // android.R.layout.simple_list_item_1, android.R.id.text1, strs); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strs); // Assign adapter to ListView //listView.setAdapter(adapter); setListAdapter(adapter); } */ private class RegistryAsyncTask extends AsyncTask<String, Void, List<Invitacion> > { @Override protected List<Invitacion> doInBackground(String... params) { List<Invitacion> invitaciones; try { invitaciones = ServicioRestUsuarios.getInvitaciones(); } catch (RestBlowUpException e) { e.printStackTrace(); return null; } catch (NotFoundException e) { e.printStackTrace(); return null; } catch (UnauthorizedException e) { e.printStackTrace(); return null; } return invitaciones; } @Override protected void onPostExecute(List<Invitacion> result) { if (result != null){ loadListView(result); //goToActivity(UsuarioActivity.class); }else{ showToast("error"); } progressBar.dismiss(); } } private class AceptarInvitacionAsyncTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { try { ServicioRestUsuarios.aceptarInvitacion(params[0]); } catch (RestBlowUpException e) { e.printStackTrace(); return null; } catch (NotFoundException e) { e.printStackTrace(); return null; } catch (UnauthorizedException e) { e.printStackTrace(); return null; } catch (ConflictException e) { e.printStackTrace(); return null; } return "Exito"; } @Override protected void onPostExecute(String result) { if (result != null){ Intent i = new Intent(getApplicationContext(), UsuarioActivity.class); startActivity(i); //loadListView(result); //goToActivity(UsuarioActivity.class); }else{ showToast("error"); } progressBar.dismiss(); } } }