package com.pennapps.pennmeet;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewFlipper;
import com.bumptech.bumpapi.BumpAPI;
import com.bumptech.bumpapi.BumpAPIListener;
import com.bumptech.bumpapi.BumpConnectFailedReason;
import com.bumptech.bumpapi.BumpConnection;
import com.bumptech.bumpapi.BumpDisconnectReason;
import com.pennapps.pennmeet.helpers.Group;
import com.pennapps.pennmeet.helpers.GroupAdapter;
public class BumpActivity extends Activity implements BumpAPIListener {
static final int SELECT_IMAGE = 0;
static final String BUMP_API_KEY = "513b4f47da6a49358cade5d254e82e0f";
static final int BUMP_API_REQUEST_CODE = 1;
static final int BUMP_RECEIVING = 2;
static final int BUMP_SENDING = 3;
private int currentBump;
private Group testGroup;
private Group testGroup2;
private Group testGroup3;
private Group testGroup4;
private Group testGroup5;
private GroupAdapter groupAdapter;
private ArrayList<Group> groupList;
private ListView groupListView;
private ViewFlipper mFlipper;
private String sendingGroup;
private TextView header;
private BumpConnection conn;
private final Handler handler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bump);
mFlipper = (ViewFlipper) findViewById(R.id.flipper);
header = (TextView) findViewById(R.id.header);
header.setOnClickListener(new OnClickListener(){
public void onClick(View v){
startActivity(new Intent(getApplicationContext(), HomeActivity.class));
}
});
setupGroupList();
populateGroupList();
}
public void setupGroupList(){
groupListView = (ListView) findViewById(R.id.group_list);
testGroup = new Group("1234981234", "Penn Electric Racing", "N/A", "per@seas.upenn.edu", null, "Michael Cera", "William Henry", getResources().getDrawable(R.drawable.per));
testGroup2 = new Group("1234123432", "PennApps", "N/A", "2011@pennapps.com", null, "Pulak Mittal", "Alexey Komissarouk", getResources().getDrawable(R.drawable.pennapps));
testGroup3 = new Group("0713049371", "Extreme Chess Club", "We rock at Chess.", "chess@seas.upenn.edu", null, "Vladimir Belikov", "Utut Adianto", getResources().getDrawable(R.drawable.chess));
testGroup4 = new Group("1206721212", "Penn Model Congress", "Hold annual high school conferences for model congress events", "pennmc@seas.upenn.edu", null, "Robert Robertson", "Andrew Stephenson",
getResources().getDrawable(R.drawable.pennmc));
testGroup5 = new Group("9612403397", "Muse", "N/A", "muse@wharton.upenn.edu", null, "Jon Hunstman", "Donny Trump", getResources().getDrawable(R.drawable.muse));
groupList = new ArrayList<Group>();
groupAdapter = new GroupAdapter(this, R.layout.groups_list_item, groupList);
groupListView.setAdapter(groupAdapter);
groupListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
sendingGroup = ((TextView) ((ViewGroup) ((ViewGroup) arg1).getChildAt(1)).getChildAt(0)).getText().toString();
// clubPhoto = ((ViewGroup) arg1).getChildAt(0).getBackground();
bump();
mFlipper.setDisplayedChild(2);
// setupEventPage();
}
});
}
public void populateGroupList(){
groupAdapter.add(testGroup);
groupAdapter.add(testGroup2);
groupAdapter.add(testGroup3);
groupAdapter.add(testGroup4);
groupAdapter.add(testGroup5);
}
public void onClick(View v){
switch (v.getId()){
case R.id.share_qr_code:
Uri qrCode = Uri.parse("android.resource://com.pennapps.pennmeet/drawable/test_qr_code");
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/png");
share.putExtra(Intent.EXTRA_STREAM, qrCode);
startActivity(Intent.createChooser(share, "Select Application For Sharing"));
break;
case R.id.group_bump_send:
mFlipper.setDisplayedChild(1);
currentBump = BUMP_SENDING;
break;
case R.id.group_bump_receive:
mFlipper.setDisplayedChild(2);
currentBump = BUMP_RECEIVING;
bump();
break;
}
}
public void bump(){
Intent bump = new Intent(this, BumpAPI.class);
bump.putExtra(BumpAPI.EXTRA_API_KEY, BUMP_API_KEY);
// bump.putExtra(BumpAPI.EXTRA_USER_NAME, "John");
startActivityForResult(bump, BUMP_API_REQUEST_CODE);
}
@Override
public void onStop() {
if (conn != null)
conn.disconnect();
super.onStop();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == BUMP_API_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// Bump connected successfully, set this activity as its listener
conn = (BumpConnection) data.getParcelableExtra(BumpAPI.EXTRA_CONNECTION);
conn.setListener(this, handler);
if(currentBump == BUMP_SENDING){
Log.e("Bump", "made it in the if statement, currentBump = " + currentBump);
try {conn.send(sendingGroup.getBytes("UTF-8"));}
catch(Exception e){ }
Toast.makeText(getApplication(), "Bump was successful!", Toast.LENGTH_SHORT).show();
}
}
else if (data != null) {
// Failed to connect, obtain the reason
BumpConnectFailedReason reason = (BumpConnectFailedReason) data.getSerializableExtra(BumpAPI.EXTRA_REASON);
Log.e("Bump", "reason for failure: " + reason.toString());
Toast.makeText(getApplication(), "Bump was not successful", Toast.LENGTH_SHORT).show();
}
startActivity(new Intent(getApplicationContext(), HomeActivity.class));
}
}
public void onBackPressed(){
super.onBackPressed();
startActivity(new Intent(getApplicationContext(), HomeActivity.class));
}
@Override
public void bumpDataReceived(byte[] chunk) {
try {
String data = new String(chunk, "UTF-8");
Toast.makeText(getApplicationContext(), "Successfully added to " + chunk + "!" , Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Log.e("Bump Chat", "Failed to parse incoming data");
e.printStackTrace();
}
Log.e("Bump", "receive");
}
@Override
public void bumpDisconnect(BumpDisconnectReason arg0) {
}
}