package com.socioboard.t_board_pro.dialog;
import java.util.ArrayList;
import org.json.JSONObject;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.graphics.drawable.ColorDrawable;
import android.os.Handler;
import android.util.SparseBooleanArray;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.socioboard.t_board_pro.MainActivity;
import com.socioboard.t_board_pro.adapters.SelectAccountAdapter;
import com.socioboard.t_board_pro.twitterapi.TwitterPostRequestTweet;
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.tboardpro.R;
public class ShowTweetComposeDialog {
private Dialog dialog;
String tweetString;
Context context;
int count = 0;
TextView textViewCount;
ArrayList<ModelUserDatas> navDrawerItems;
TboardproLocalData tbDAta;
ImageView imageViewAddUsers;
int countProcess;
Button replyButton;
ProgressDialog progressDialog;
public SparseBooleanArray sparseBooleanArray;
EditText edttext;
Handler handler;
public ShowTweetComposeDialog(Context activity, String autoText,
Handler handler) {
this.context = activity;
this.handler = handler;
progressDialog = new ProgressDialog(activity);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setIndeterminate(true);
progressDialog.setCancelable(true);
dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.fragment_tweetcomposedialog);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
Window window = dialog.getWindow();
lp.copyFrom(window.getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(lp);
dialog.setCancelable(true);
tbDAta = new TboardproLocalData(context);
navDrawerItems = tbDAta.getAllUsersDataArlist();
sparseBooleanArray = new SparseBooleanArray(navDrawerItems.size());
for (int i = 0; i < navDrawerItems.size(); ++i) {
sparseBooleanArray.put(i, false);
if (navDrawerItems.get(i).getUserid()
.contains(MainSingleTon.currentUserModel.getUserid())) {
sparseBooleanArray.put(i, true);
count++;
}
}
textViewCount = (TextView) dialog.findViewById(R.id.textView1Counted);
textViewCount.setText("Selected : " + count);
edttext = (EditText) dialog.findViewById(R.id.editText1);
edttext.setText("");
if (autoText.length() != 0) {
edttext.append(autoText + " ");
}
imageViewAddUsers = (ImageView) dialog
.findViewById(R.id.imageViewAddUsers);
replyButton = (Button) dialog.findViewById(R.id.button1);
imageViewAddUsers.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
openSelectDialog();
}
});
ImageView imageView1Close = (ImageView) dialog
.findViewById(R.id.imageView1Close);
imageView1Close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
replyButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
performTweet();
}
});
}
public void showThis() {
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
dialog.show();
}
});
}
protected void openSelectDialog() {
final Dialog dialog;
dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.select_user_dialog);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
Window window = dialog.getWindow();
lp.copyFrom(window.getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(lp);
dialog.setCancelable(true);
ListView listView = (ListView) dialog
.findViewById(R.id.listView1select);
final SelectAccountAdapter selectAccountAdapter;
selectAccountAdapter = new SelectAccountAdapter(navDrawerItems,
context, sparseBooleanArray);
listView.setAdapter(selectAccountAdapter);
Button buttonDone, cancelbtn;
cancelbtn = (Button) dialog.findViewById(R.id.cancelbtn);
cancelbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.cancel();
}
});
buttonDone = (Button) dialog.findViewById(R.id.button1);
buttonDone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
sparseBooleanArray = selectAccountAdapter.sparseBooleanArray;
count = selectAccountAdapter.count;
myprint("buttonCancel");
dialog.cancel();
}
});
new Handler().post(new Runnable() {
@Override
public void run() {
dialog.show();
}
});
dialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
count = 0;
for (int i = 0; i < navDrawerItems.size(); ++i) {
if (sparseBooleanArray.get(i)) {
++count;
}
}
textViewCount.setText("" + count);
}
});
}
public void myprint(Object msg) {
System.out.println(msg.toString());
}
void performTweet() {
tweetString = edttext.getText().toString();
if (new String(tweetString).trim().length() == 0) {
myToastS("Text cannot be empty");
return;
}
if (count == 0) {
myToastS("Select User first!");
return;
}
countProcess = 0;
progressDialog.setMessage("Processing for .." + count);
for (int i = 0; i < navDrawerItems.size(); i++) {
if (sparseBooleanArray.get(i)) {
showProgress();
TwitterPostRequestTweet twitterPostRequestTweet = new TwitterPostRequestTweet(
navDrawerItems.get(i), new TwitterRequestCallBack() {
@Override
public void onSuccess(JSONObject jsonObject) {
}
@Override
public void onSuccess(String jsonResult) {
++countProcess;
myprint("jsonResult " + jsonResult);
// myToastS("Tweet successfull!");
++MainSingleTon.tweetsCount;
MainActivity.isNeedToRefreshDrawer = true;
hideProgress();
handler.post(new Runnable() {
@Override
public void run() {
edttext.setText("");
}
});
}
@Override
public void onFailure(Exception e) {
myprint("onFailure " + e);
myToastS("failed!");
hideProgress();
}
});
twitterPostRequestTweet.executeThisRequest(tweetString);
}
}
}
void myToastS(final String toastMsg) {
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(context, toastMsg, Toast.LENGTH_SHORT).show();
}
});
}
void myToastL(final String toastMsg) {
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(context, toastMsg, Toast.LENGTH_LONG).show();
}
});
}
void showProgress() {
handler.post(new Runnable() {
@Override
public void run() {
progressDialog.show();
}
});
}
void hideProgress() {
handler.post(new Runnable() {
@Override
public void run() {
progressDialog.cancel();
dialog.dismiss();
}
});
}
}