package alm.motiv.AlmendeMotivator; import alm.motiv.AlmendeMotivator.adapters.FriendsAdapter; import alm.motiv.AlmendeMotivator.facebook.FacebookMainFragment; import alm.motiv.AlmendeMotivator.facebook.FacebookManager; import alm.motiv.AlmendeMotivator.misc.CustomCallback; import alm.motiv.AlmendeMotivator.models.User; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; import android.widget.*; import com.facebook.model.GraphUser; import com.google.analytics.tracking.android.EasyTracker; import com.mongodb.*; import org.w3c.dom.Text; import java.util.ArrayList; import java.util.List; /** * Created by AsterLaptop on 5/27/14. */ public class FollowFriendActivity extends Activity { private FriendsAdapter adapter; private GraphUser friend; private User user = null; private GridView friendListView; private List<DBObject> allUsers = null; private boolean manageFriends = true; private boolean initializedFriends = false; private int positionSelectedFriend = 0; private FriendsUtility friendsUtility; //view private TextView lblFriendsYouFollow; //menu private String[] mMenuOptions; private ListView mDrawerList; private DrawerLayout mDrawerLayout; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_friendsmenu); lblFriendsYouFollow = (TextView) findViewById(R.id.lblFriendsYouFollow); lblFriendsYouFollow.setText("Select friends you wish to follow"); //for the menu mMenuOptions = getResources().getStringArray(R.array.profile_array); mDrawerList = (ListView) findViewById(R.id.left_drawer); mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item_menu, mMenuOptions)); mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); new DatabaseThread().execute("select"); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); } @Override public void onStart() { super.onStart(); //google analytics EasyTracker.getInstance(this).activityStart(this); // Add this method. } @Override public void onStop() { super.onStop(); //google analytics EasyTracker.getInstance(this).activityStop(this); // Add this method. } public void initFriends() { FacebookManager.getFriendsOfUser(new CustomCallback() { @Override public Object callback(Object object) { if (object != null && object instanceof List) { List<GraphUser> users = (List<GraphUser>) object; ArrayList<GraphUser> usersArray = new ArrayList<GraphUser>(); usersArray.addAll(users); Cookie.getInstance().facebookFriends = friendsUtility.hasSportopiaAccount(usersArray); addFriendsToList(friendsUtility.compareFriends(false)); } return null; } }); friendListView = (GridView) findViewById(R.id.friendsList); adapter = new FriendsAdapter(this); friendListView.setAdapter(adapter); friendListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { friend = adapter.getItem(position); showPopUp(position); } }); } public void addFriendsToList(ArrayList<GraphUser> users) { if(users!=null){ adapter.setModels(users); } } private void showPopUp(final int position) { AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this); helpBuilder.setTitle(friend.getName()); helpBuilder.setMessage("Do you want to follow " + friend.getName()); helpBuilder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { adapter.removeModel(position); new DatabaseThread().execute("insert"); } }); helpBuilder.setNegativeButton("No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // Do nothing } }); AlertDialog helpDialog = helpBuilder.create(); helpDialog.show(); } public void onInvitePressed(View v){ if(Cookie.getInstance().internet){ FacebookMainFragment.sendRequestDialog(this); } } @Override public void onBackPressed() { finish(); Intent i = new Intent(FollowFriendActivity.this, ChallengeOverviewActivity.class); startActivity(i); finish(); } private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { Menu.selectItem(position, FollowFriendActivity.this); } } //on menu pressed public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU) { mDrawerLayout.openDrawer(Gravity.LEFT); return true; } else { return super.onKeyUp(keyCode, event); } } class DatabaseThread extends AsyncTask<String, String, String> { private ProgressDialog simpleWaitDialog; protected String doInBackground(String... args) { if (Cookie.getInstance().internet) { try { MongoClient client = Database.getInstance(); DB db = client.getDB(Database.uri.getDatabase()); DBCollection userCollection = db.getCollection("user"); userCollection.setObjectClass(User.class); User match = new User(); match.put("facebookID", Cookie.getInstance().userEntryId); if (args[0].equals("select")) { user = (User) userCollection.find(match).toArray().get(0); allUsers = userCollection.find().toArray(); friendsUtility = new FriendsUtility(user, allUsers); } else { //update the user with new friends/followers User aFriend = new User(); aFriend.put("facebookID", friend.getId()); BasicDBObject update = new BasicDBObject(); if (args[0].equals("remove")) { //removes friend from array with pull key update.put("$pull", new BasicDBObject("friends", aFriend)); } else { update.put("$push", new BasicDBObject("friends", aFriend)); } userCollection.update(match, update); } } catch (Exception e) { System.out.println(e); } } return null; } @Override protected void onPreExecute() { simpleWaitDialog = ProgressDialog.show(FollowFriendActivity.this, "Please wait", "Loading"); } protected void onPostExecute(String result) { try { simpleWaitDialog.dismiss(); simpleWaitDialog = null; } catch (Exception e) { // nothing } if (!initializedFriends) { initFriends(); initializedFriends = true; } } } }