package com.socioboard.t_board_pro.adapters; import java.util.ArrayList; import java.util.List; import org.json.JSONObject; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences.Editor; import android.os.Handler; import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.socioboard.t_board_pro.AnyUserProfileDialog; import com.socioboard.t_board_pro.MainActivity; import com.socioboard.t_board_pro.lazylist.ImageLoader; import com.socioboard.t_board_pro.twitterapi.TwitterPostRequestFollow; import com.socioboard.t_board_pro.twitterapi.TwitterPostRequestUnFollow; import com.socioboard.t_board_pro.twitterapi.TwitterRequestCallBack; import com.socioboard.t_board_pro.util.MainSingleTon; import com.socioboard.t_board_pro.util.ModelUserDatas; import com.socioboard.t_board_pro.util.TboardproLocalData; import com.socioboard.t_board_pro.util.ToFollowingModel; import com.socioboard.tboardpro.R; public class SearchAdapter extends BaseAdapter { public Context context; int completesCount = 0, allCount = 0, allSize; public ArrayList<ToFollowingModel> tweetModels; Activity activity; ImageLoader imageLoader; ProgressDialog progressDialog; public SparseBooleanArray sparseBooleanArray; TboardproLocalData tboardproLocalData; ArrayList<String> sendingids; ArrayList<String> sentIds; public SearchAdapter(Context context, ArrayList<ToFollowingModel> tweetModels, Activity activity) { this.context = context; this.tweetModels = tweetModels; imageLoader = new ImageLoader(context); this.activity = activity; tboardproLocalData = new TboardproLocalData(context); sendingids = tboardproLocalData.getAllSendingIDs(MainSingleTon.currentUserModel.getUserid()); sentIds = tboardproLocalData.getAllSentIDs(MainSingleTon.currentUserModel.getUserid()); activity.runOnUiThread(new Runnable() { @Override public void run() { progressDialog = new ProgressDialog(SearchAdapter.this.context); progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); progressDialog.setIndeterminate(true); progressDialog.setCancelable(false); } }); sparseBooleanArray = new SparseBooleanArray(tweetModels.size()); for (int i = 0; i < tweetModels.size(); ++i) { sparseBooleanArray.put(i, false); } } @Override public int getCount() { return tweetModels.size(); } @Override public ToFollowingModel getItem(int position) { return tweetModels.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = mInflater.inflate(R.layout.search_item, parent, false); } final ToFollowingModel toFollowingModel = getItem(position); ImageView profilePic = (ImageView) convertView .findViewById(R.id.profile_pic); profilePic.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String newUser = toFollowingModel.getUserName(); newUser = newUser.replace("@", ""); if (newUser.equals(MainSingleTon.currentUserModel.getUsername())) { return; } AnyUserProfileDialog anyUserProfile = new AnyUserProfileDialog( activity, newUser, toFollowingModel.getId()); } }); TextView userName = (TextView) convertView .findViewById(R.id.followerName); userName.setText(toFollowingModel.getUserName()); userName.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String newUser = toFollowingModel.getUserName(); newUser = newUser.replace("@", ""); if (newUser.equals(MainSingleTon.currentUserModel.getUsername())) { return; } AnyUserProfileDialog anyUserProfile = new AnyUserProfileDialog( activity, newUser, toFollowingModel.getId()); } }); TextView noOfTweets = (TextView) convertView .findViewById(R.id.textViewNotweets); noOfTweets.setText(toFollowingModel.getNoTweets()); TextView noOfFollowings = (TextView) convertView .findViewById(R.id.textViewNoOfFollowings); noOfFollowings.setText(toFollowingModel.getNoToFollowing()); TextView noOfFollowers = (TextView) convertView .findViewById(R.id.textViewNoofFollowers); noOfFollowers.setText(toFollowingModel.getNoFollowers()); final Button buttonFollow = (Button) convertView .findViewById(R.id.buttonFollow); final Button button1FollowByAll = (Button) convertView .findViewById(R.id.button1FollowByAll); final Button buttonUnfollow = (Button) convertView .findViewById(R.id.buttonUnfollow); if (toFollowingModel.isFollowingStatus()) { buttonFollow.setVisibility(View.INVISIBLE); buttonUnfollow.setVisibility(View.VISIBLE); } else { buttonFollow.setVisibility(View.VISIBLE); buttonUnfollow.setVisibility(View.INVISIBLE); } if (MainSingleTon.currentUserModel.getUserid().contains( toFollowingModel.getId())) { buttonUnfollow.setVisibility(View.INVISIBLE); buttonFollow.setVisibility(View.INVISIBLE); } final int pos = position; buttonFollow.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { myprint("buttonFollow " + getItem(pos)); if (MainSingleTon.isNeedTOstopFollowing) { myToastS("You have Exceeded Follow Limit Today"); } else { progressDialog.setMessage(getItem(pos).getUserName() + " Following..."); progressDialog.show(); TwitterPostRequestFollow twitterPostRequestFollow = new TwitterPostRequestFollow( MainSingleTon.currentUserModel, new TwitterRequestCallBack() { @Override public void onSuccess(JSONObject jsonObject) { } @Override public void onSuccess(String jsonResult) { hideProgress(); addDMStatus(toFollowingModel); myprint("buttonFollow onSuccess"); activity.runOnUiThread(new Runnable() { @Override public void run() { buttonFollow.setVisibility(View.INVISIBLE); buttonUnfollow.setVisibility(View.VISIBLE); ++MainSingleTon.followingCount; MainSingleTon.toFollowingModelsIDs.add(toFollowingModel.getId()); MainActivity.isNeedToRefreshDrawer = true; addDMStatus(toFollowingModel); } }); getItem(pos).setFollowingStatus(true); } @Override public void onFailure(Exception e) { myprint("buttonFollow onFailure" + e); hideProgress(); } }); twitterPostRequestFollow.executeThisRequest(toFollowingModel.getId()); } } }); buttonUnfollow.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { myprint("buttonUnfollow " + getItem(pos)); progressDialog.setMessage(getItem(pos).getUserName() + " UnFollowing..."); showProgress(); TwitterPostRequestUnFollow twitterPostRequestUnFollow = new TwitterPostRequestUnFollow( MainSingleTon.currentUserModel, new TwitterRequestCallBack() { @Override public void onSuccess(JSONObject jsonObject) { } @Override public void onSuccess(String jsonResult) { myprint("buttonUnfollow onSuccess"); hideProgress(); activity.runOnUiThread(new Runnable() { @Override public void run() { new Handler().post(new Runnable() { @Override public void run() { buttonFollow .setVisibility(View.VISIBLE); buttonUnfollow.setVisibility(View.INVISIBLE); ++MainSingleTon.followingCount; MainSingleTon.toFollowingModelsIDs .remove(toFollowingModel.getId()); MainActivity.isNeedToRefreshDrawer = true; } }); } }); getItem(pos).setFollowingStatus(false); } @Override public void onFailure(Exception e) { hideProgress(); myprint("buttonUnfollow onFailure" + e); } }); twitterPostRequestUnFollow.executeThisRequest(toFollowingModel.getId()); } }); imageLoader.DisplayImage(toFollowingModel.getUserImagerUrl(), profilePic); if (sparseBooleanArray.get(pos)) { button1FollowByAll.setText("Followed By All"); } button1FollowByAll.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { myprint("buttonFollow " + getItem(pos)); TboardproLocalData localData = new TboardproLocalData(context); List<ModelUserDatas> listDatas = localData .getAllUsersDataArlist(); completesCount = 0; allCount = 0; allSize = listDatas.size(); progressDialog.setMessage(getItem(pos).getUserName() + " Following by..." + allSize); progressDialog.show(); for (int i = 0; i < listDatas.size(); i++) { TwitterPostRequestFollow twitterPostRequestFollow = new TwitterPostRequestFollow( listDatas.get(i), new TwitterRequestCallBack() { @Override public void onSuccess(JSONObject jsonObject) { } @Override public void onSuccess(String jsonResult) { myprint("buttonFollow onSuccess"); ++completesCount; getItem(pos).setFollowingStatus(true); ++allCount; if (allSize <= allCount) { hideProgress(); } activity.runOnUiThread(new Runnable() { @Override public void run() { buttonFollow .setVisibility(View.INVISIBLE); buttonUnfollow .setVisibility(View.VISIBLE); button1FollowByAll .setText("Followed By All"); sparseBooleanArray.put(pos, true); } }); } @Override public void onFailure(Exception e) { myprint("buttonFollow onFailure" + e); ++allCount; } }); twitterPostRequestFollow.executeThisRequest(getItem(pos) .getId()); } } }); return convertView; } public void myprint(Object msg) { System.out.println(msg.toString()); } void showProgress() { activity.runOnUiThread(new Runnable() { @Override public void run() { progressDialog.show(); } }); } void hideProgress() { activity.runOnUiThread(new Runnable() { @Override public void run() { progressDialog.cancel(); } }); } private void addDMStatus(final ToFollowingModel toFollowingModel) { if (MainSingleTon.autoDmfirstime.contains("yes")) { activity.runOnUiThread(new Runnable() { @Override public void run() { new AlertDialog.Builder(activity) .setTitle("Direct Message") .setMessage( "A thanks message will be sent to those users. who are following you back!") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int which) { Editor editor = context .getSharedPreferences( "twtboardpro", Context.MODE_PRIVATE) .edit(); editor.putString("autoDmfirstime", "no"); editor.putBoolean("autodm", true); MainSingleTon.autodm = true; MainSingleTon.autoDmfirstime = "no"; editor.commit(); addDMStatus(toFollowingModel); } }) .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialog, int which) { Editor editor = context .getSharedPreferences( "twtboardpro", Context.MODE_PRIVATE) .edit(); editor.putString("autoDmfirstime", "no"); editor.putBoolean("autodm", false); editor.commit(); MainSingleTon.autoDmfirstime = "no"; MainSingleTon.autodm = false; } }).setIcon(R.drawable.ic_launcher).show(); } }); } else { myprint("Not to diss[ay fvnefisdfnvko nvkjn"); if (MainSingleTon.autodm) { if (sendingids.contains(toFollowingModel.getId()) || sentIds.contains(toFollowingModel.getId())) { } else { tboardproLocalData.addNewDMsendingId( toFollowingModel.getId(), MainSingleTon.currentUserModel.getUserid()); sendingids.add(toFollowingModel.getId()); } } else { } } } void myToastS(final String toastMsg) { activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(activity, toastMsg, Toast.LENGTH_SHORT).show(); } }); } }