package com.pennapps.pennmeet;
import java.util.ArrayList;
import java.util.HashSet;
import android.app.Dialog;
import android.app.TabActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
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.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;
import com.pennapps.pennmeet.helpers.Group;
import com.pennapps.pennmeet.helpers.GroupAdapter;
import com.pennapps.pennmeet.helpers.RosterAdapter;
import com.pennapps.pennmeet.helpers.User;
public class GroupsActivity extends TabActivity {
private TabHost tabHost;
private Group testMGroup;
private Group testMGroup2;
private Group testMGroup3;
private Group testMGroup4;
private Group testMGroup5;
private GroupAdapter groupMemberAdapter;
private ArrayList<Group> groupMemberList;
private ListView groupMemberListView;
private GroupAdapter groupAdminAdapter;
private ArrayList<Group> groupAdminList;
private ListView groupAdminListView;
private RosterAdapter rosterAdapter;
private ArrayList<User> rosterList;
private ListView rosterListView;
private boolean isProfileOpen;
private ImageView profilePhoto;
private TextView profileName;
private TextView profilePresident;
private TextView profileVP;
private TextView profileEmail;
private TextView profileDescription;
private TextView header;
private ImageView qrView;
private Button shareQR;
private boolean isGroupFocused;
private Dialog profileDialog;
private Dialog rosterDialog;
private User user;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.groups);
isGroupFocused = false;
setupTabs();
setupGroupLists();
populateGroupLists();
}
public void onResume(){
super.onResume();
}
public void setupGroupLists(){
groupMemberListView = (ListView) findViewById(R.id.group_member_list);
groupAdminListView = (ListView) findViewById(R.id.group_admin_list);
testMGroup = new Group("1234981234", "Penn Electric Racing", "N/A", "per@seas.upenn.edu", null, "Michael Cera", "William Henry", getResources().getDrawable(R.drawable.per));
//testMGroup2 = new Group("1234123432", "PennApps", "N/A", "2011@pennapps.com", null, "Pulak Mittal", "Alexey Komissarouk", getResources().getDrawable(R.drawable.pennapps));
//testMGroup3 = new Group("0713049371", "Extreme Chess Club", "We rock at Chess.", "chess@seas.upenn.edu", null, "Vladimir Belikov", "Utut Adianto", getResources().getDrawable(R.drawable.chess));
//testMGroup4 = 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));
//testMGroup5 = new Group("9612403397", "Muse", "N/A", "muse@wharton.upenn.edu", null, "Jon Hunstman", "Donny Trump", getResources().getDrawable(R.drawable.muse));
groupMemberList = new ArrayList<Group>();
groupAdminList = new ArrayList<Group>();
groupMemberAdapter = new GroupAdapter(this, R.layout.groups_list_item, groupMemberList);
groupAdminAdapter = new GroupAdapter(this, R.layout.groups_list_item, groupAdminList);
isProfileOpen = false;
groupMemberListView.setAdapter(groupMemberAdapter);
groupAdminListView.setAdapter(groupAdminAdapter);
groupMemberListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
isProfileOpen = true;
createProfileDialog(((TextView) ((ViewGroup) ((ViewGroup) arg1).getChildAt(1)).getChildAt(0)).getText().toString());
}
});
groupAdminListView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
isProfileOpen = true;
generateQRCode();
}
});
}
public void generateQRCode(){
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final Dialog profileDialog = new Dialog(this, R.style.GroupProfile);
View pview = inflater.inflate(R.layout.event_qr_code, null, false);
profileDialog.setContentView(pview);
qrView = (ImageView) pview.findViewById(R.id.qr_view);
header = (TextView) pview.findViewById(R.id.header);
shareQR = (Button) pview.findViewById(R.id.share_qr_code);
header.setOnClickListener(new OnClickListener(){
public void onClick(View v){
startActivity(new Intent(getApplicationContext(), HomeActivity.class));
}
});
shareQR.setOnClickListener(new OnClickListener(){
public void onClick(View v){
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"));
}
});
profileDialog.show();
}
public void createProfileDialog(String clubName){
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
profileDialog = new Dialog(this, R.style.GroupProfile);
View pview = inflater.inflate(R.layout.group_profile, null, false);
profileDialog.setContentView(pview);
setupProfilePage(pview, clubName);
profileDialog.setOnDismissListener(new OnDismissListener(){
@Override
public void onDismiss(DialogInterface dialog) {
setupGroupLists();
populateGroupLists();
}
});
header = (TextView) pview.findViewById(R.id.header);
header.setOnClickListener(new OnClickListener(){
public void onClick(View v){
startActivity(new Intent(getApplicationContext(), HomeActivity.class));
}
});
profileDialog.show();
}
public void createRosterPopup(){
LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rosterDialog = new Dialog(this, R.style.GroupProfile);
View pview = inflater.inflate(R.layout.roster_view, null, false);
rosterListView = (ListView) pview.findViewById(R.id.roster_listview);
rosterDialog.setContentView(pview);
rosterList = new ArrayList<User>();
rosterAdapter = new RosterAdapter(this, R.layout.roster_list_item, rosterList);
rosterListView.setAdapter(rosterAdapter);
populateRoster();
header = (TextView) pview.findViewById(R.id.header);
header.setOnClickListener(new OnClickListener(){
public void onClick(View v){
startActivity(new Intent(getApplicationContext(), HomeActivity.class));
}
});
rosterDialog.show();
}
public void populateRoster(){
if (rosterAdapter != null){
rosterAdapter.add(new User("1038316", "Jason", "Fraenkel", "3057749281", false, "jfraenk@seas.upenn.edu", "2014", new HashSet<String>()));
rosterAdapter.add(new User("1235124", "Mark", "Zucks", "3057749281", false, "mzucksk@seas.upenn.edu", "2013", new HashSet<String>()));
rosterAdapter.add(new User("6342642", "Drew", "Taylor", "3057749281", false, "dtay@seas.upenn.edu", "2012", new HashSet<String>()));
rosterAdapter.add(new User("1274314", "Boris", "Zhang", "3057749281", false, "bzhang@seas.upenn.edu", "2011", new HashSet<String>()));
rosterAdapter.add(new User("1708743", "Nick", "Franklin", "3057749281", false, "nickf@seas.upenn.edu", "2014", new HashSet<String>()));
rosterAdapter.add(new User("9397404", "Don", "Zaou", "3057749281", false, "donz@seas.upenn.edu", "2014", new HashSet<String>()));
rosterAdapter.add(new User("8723456", "Mike", "Generic", "3057749281", false, "fake@seas.upenn.edu", "2013", new HashSet<String>()));
rosterAdapter.add(new User("1423989", "Anne", "Droid", "3057749281", false, "anned@seas.upenn.edu", "2013", new HashSet<String>()));
rosterAdapter.add(new User("1349863", "Hugh", "Jass", "3057749281", false, "jass@seas.upenn.edu", "2015", new HashSet<String>()));
}
}
public void setupProfilePage(View v, String clubName){
profilePhoto = (ImageView) v.findViewById(R.id.group_profile_photo);
profileName = (TextView) v.findViewById(R.id.group_profile_name);
profilePresident = (TextView) v.findViewById(R.id.group_profile_president);
profileVP = (TextView) v.findViewById(R.id.group_profile_vp);
profileEmail = (TextView) v.findViewById(R.id.group_profile_email);
profileDescription = (TextView) v.findViewById(R.id.group_profile_description);
Button roster = (Button) v.findViewById(R.id.view_roster);
GroupAdapter tempAdapter;
Group tempGroup = new Group("fail", "fail", "fail", "fail", null, "fail", "fail", null);
if (tabHost.getCurrentTabTag().equals("member"))
tempAdapter = groupMemberAdapter;
else
tempAdapter = groupAdminAdapter;
for (int i = 0; i < tempAdapter.getCount(); i++){
if (tempAdapter.getItem(i).getTitle().equals(clubName)){
tempGroup = tempAdapter.getItem(i);
continue;
}
}
roster.setOnClickListener(new OnClickListener(){
public void onClick(View v){
// try{profileDialog.dismiss();}
// catch(NullPointerException e){ //we hate null pointers!
// }
createRosterPopup();
}
});
profilePhoto.setBackgroundDrawable(tempGroup.getPhoto());
profileName.setText(tempGroup.getTitle());
profilePresident.setText(tempGroup.getPres());
profileVP.setText(tempGroup.getVP());
profileEmail.setText(tempGroup.getEmail());
profileDescription.setText(tempGroup.getDesc());
}
public void populateGroupLists(){
//try{
// BackEndConnection.getUser()
// }
// for(int i=0;i<){}
// groupMemberAdapter.add(testMGroup);
// groupMemberAdapter.add(testMGroup4);
// groupMemberAdapter.add(testMGroup5);
// groupMemberAdapter.add(testMGroup2);
// groupMemberAdapter.add(testMGroup3);
//
// groupAdminAdapter.add(testMGroup);
// groupAdminAdapter.add(testMGroup2);
// groupAdminAdapter.add(testMGroup3);
}
public void setupTabs(){
Resources res = getResources();
tabHost = getTabHost();
TabHost.TabSpec spec;
tabHost.setup();
spec = tabHost.newTabSpec("member").setIndicator("Member",
res.getDrawable(R.drawable.group_bw)).setContent(R.id.groups_tab_one);
tabHost.addTab(spec);
spec = tabHost.newTabSpec("administrator").setIndicator("Admin",
res.getDrawable(R.drawable.administrator)).setContent(R.id.groups_tab_two);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
TabWidget tw = getTabWidget();
for (int i = 0; i < tw.getChildCount(); i++){
TextView text = (TextView) tabHost.getTabWidget().getChildAt(i).findViewById(android.R.id.title);
text.setTextColor(Color.WHITE);
}
}
public void onClick(View v){
switch (v.getId()){
case R.id.create_group_button:
startActivity(new Intent(getApplicationContext(), AddGroupActivity.class));
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.groups_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.delete_group:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void onBackPressed(){
super.onBackPressed();
if (!isProfileOpen)
startActivity(new Intent(getApplicationContext(), HomeActivity.class));
else
isProfileOpen = true;
}
}