package com.socioboard.t_board_pro;
import java.util.ArrayList;
import java.util.Calendar;
import android.app.AlarmManager;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.ActionBarActivity;
import android.util.SparseBooleanArray;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import com.socioboard.t_board_pro.adapters.SelectAccountAdapter;
import com.socioboard.t_board_pro.util.Const;
import com.socioboard.t_board_pro.util.MainSingleTon;
import com.socioboard.t_board_pro.util.ModelUserDatas;
import com.socioboard.t_board_pro.util.SchTweetModel;
import com.socioboard.t_board_pro.util.TboardproLocalData;
import com.socioboard.t_board_pro.util.TweetSchedullerReceiver;
import com.socioboard.tboardpro.R;
public class SchedulleComposeActivity extends ActionBarActivity {
Button tweetButton;
EditText edttext;
String tweetString;
TboardproLocalData tbDAta;
ArrayList<ModelUserDatas> navDrawerItems;
TextView textViewCount;
TextView textViewDate;
TextView textViewTime;
AlarmManager alarmManagers;
TimePicker timePicker;
DatePicker datePicker;
CheckBox chkBox;
ImageView imgimageView1Cal;
ImageView imageView2Time, imageViewAddUsers;
public SparseBooleanArray sparseBooleanArray;
int count = 0;
int year;
int month;
int day;
@Override
protected void onDestroy() {
super.onDestroy();
MainSingleTon.insertedText = "";
MainSingleTon.in_reply_to_status_id = "";
MainSingleTon.retweet_to_status_id = "";
myprint("* * * * SchedulleComposeActivity * * * * * * On destroyed * * * * *");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.schdulle_compose);
alarmManagers = (AlarmManager) getApplicationContext()
.getSystemService(getApplicationContext().ALARM_SERVICE);
textViewCount = (TextView) findViewById(R.id.textView1Counted);
imgimageView1Cal = (ImageView) findViewById(R.id.imageView1Cal);
imageViewAddUsers = (ImageView) findViewById(R.id.imageViewAddUsers);
imageView2Time = (ImageView) findViewById(R.id.imageView2Time);
textViewDate = (TextView) findViewById(R.id.textView1date);
textViewTime = (TextView) findViewById(R.id.textView1time);
chkBox = (CheckBox) findViewById(R.id.checkBox1);
tbDAta = new TboardproLocalData(getApplicationContext());
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.setText("Selected : " + count);
myprint(navDrawerItems);
imageViewAddUsers.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
openSelectDialog();
}
});
tweetButton = (Button) findViewById(R.id.button1);
edttext = (EditText) findViewById(R.id.editText1);
if (!MainSingleTon.retweet_to_status_id.isEmpty()) {
edttext.setVisibility(View.GONE);
} else {
edttext.append(MainSingleTon.insertedText);
}
tweetButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
schedulleThisTweet();
}
});
imgimageView1Cal.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Calendar c = Calendar.getInstance();
final int cyear = c.get(Calendar.YEAR);
final int cmonth = c.get(Calendar.MONTH);
final int cday = c.get(Calendar.DAY_OF_MONTH);
runOnUiThread(new Runnable() {
public void run() {
new DatePickerDialog(SchedulleComposeActivity.this,
pickerListener, cyear, cmonth, cday).show();
}
});
}
});
textViewDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Calendar c = Calendar.getInstance();
final int cyear = c.get(Calendar.YEAR);
final int cmonth = c.get(Calendar.MONTH);
final int cday = c.get(Calendar.DAY_OF_MONTH);
runOnUiThread(new Runnable() {
public void run() {
new DatePickerDialog(SchedulleComposeActivity.this,
pickerListener, cyear, cmonth, cday).show();
}
});
}
});
textViewTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Calendar c = Calendar.getInstance();
final int currenthour = c.get(Calendar.HOUR_OF_DAY);
final int currentminute = c.get(Calendar.MINUTE);
runOnUiThread(new Runnable() {
public void run() {
TimePickerDialog tdialog = new TimePickerDialog(
SchedulleComposeActivity.this, timelistner,
currenthour, currentminute, false);
tdialog.show();
}
});
}
});
imageView2Time.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Calendar c = Calendar.getInstance();
final int currenthour = c.get(Calendar.HOUR_OF_DAY);
final int currentminute = c.get(Calendar.MINUTE);
runOnUiThread(new Runnable() {
public void run() {
TimePickerDialog tdialog = new TimePickerDialog(
SchedulleComposeActivity.this, timelistner,
currenthour, currentminute, false);
tdialog.show();
}
});
}
});
int actionBarTitleId = getResources().getIdentifier("action_bar_title",
"id", "android");
if (actionBarTitleId > 0) {
TextView title = (TextView) findViewById(actionBarTitleId);
if (title != null) {
title.setTextColor(Color.WHITE);
title.setText("Schedule");
}
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setBackgroundDrawable(
new ColorDrawable(getResources().getColor(R.color.myBlue)));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
protected void openSelectDialog() {
final Dialog dialog;
dialog = new Dialog(SchedulleComposeActivity.this);
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,
getApplicationContext(), 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;
myprint("dialog.setOnCancel"
+ sparseBooleanArray.get(i));
}
}
textViewCount.setText("" + count);
}
});
}
protected void schedulleThisTweet() {
tweetString = edttext.getText().toString();
if (count == 0) {
myToastS("Select User first!");
return;
}
if (!MainSingleTon.retweet_to_status_id.isEmpty()) {
} else {
if (tweetString.length() == 0) {
myToastS("Text can Not be Empty");
return;
}
}
// check everything filled by user or not
Calendar calendar = Calendar.getInstance();
if (datePicker != null && timePicker != null) {
calendar.set(datePicker.getYear(), datePicker.getMonth(),
datePicker.getDayOfMonth(), timePicker.getCurrentHour(),
timePicker.getCurrentMinute(), 0);
long startTime = calendar.getTimeInMillis();
if (startTime > System.currentTimeMillis()) {
for (int i = 0; i < navDrawerItems.size(); i++) {
if (sparseBooleanArray.get(i)) {
long tweetTime = startTime + i * 5000;
myprint(i + " time = " + tweetTime);
SchTweetModel schTweetModel = new SchTweetModel(
navDrawerItems.get(i).getUserid(), tweetString,
tweetTime);
myprint(schTweetModel);
if (!MainSingleTon.in_reply_to_status_id.isEmpty()) {
myprint("************ in_reply_to_status_id "
+ MainSingleTon.in_reply_to_status_id);
String newTweetString = "in_reply_to_status_id=@@"
+ MainSingleTon.in_reply_to_status_id
+ "@@" + tweetString;
schTweetModel.setTweet(newTweetString);
} else if (!MainSingleTon.retweet_to_status_id
.isEmpty()) {
String newTweetString = "retweet_to_status_id=@@"
+ MainSingleTon.retweet_to_status_id + "@@"
+ MainSingleTon.insertedText;
schTweetModel.setTweet(newTweetString);
myprint("*********** retweet_to_status_id "
+ MainSingleTon.retweet_to_status_id);
} else {
myprint(" Normal Composing tweet ");
}
tbDAta.addNewSchedulledTweet(schTweetModel);
setAlarmThisTweet(schTweetModel);
}
}
myToastS("Tweet Schedulled !");
MainActivity.isNeedToRefreshDrawer = true;
finish();
} else {
myToastS("picked time should be more than current time");
}
} else {
myToastS("please select desire date or time");
}
}
void myToastS(final String toastMsg) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), toastMsg,
Toast.LENGTH_SHORT).show();
}
});
}
void myToastL(final String toastMsg) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), toastMsg,
Toast.LENGTH_LONG).show();
}
});
}
public void myprint(Object msg) {
System.out.println(msg.toString());
}
void setAlarmThisTweet(SchTweetModel schTweetModel) {
// **************************************
Intent myIntent = new Intent(SchedulleComposeActivity.this,
TweetSchedullerReceiver.class);
myIntent.putExtra(Const.RES_CODE, schTweetModel.getTweetId());
PendingIntent pendingIntent = PendingIntent.getBroadcast(
SchedulleComposeActivity.this, schTweetModel.getTweetId(),
myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManagers.set(AlarmManager.RTC_WAKEUP,
schTweetModel.getTweettime(), pendingIntent);
// **************************************
}
private DatePickerDialog.OnDateSetListener pickerListener = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
@Override
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
datePicker = view;
year = selectedYear;
month = selectedMonth;
day = selectedDay;
// Show selected date
textViewDate.setText(new StringBuilder().append(month + 1)
.append("-").append(day).append("-").append(year)
.append(" "));
}
};
private TimePickerDialog.OnTimeSetListener timelistner = new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
timePicker = view;
textViewTime.setText(hourOfDay + ":" + minute);
}
};
}