import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SwitchCompat;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class AlarmDetails extends ActionBarActivity{
private TextView time, date, alarmRepeat, interval, title, description, url, location;
private TextView alert1, alert2, snooze;
private SwitchCompat on_off;
private String screenTitle, id, status, act_arc;
private Context ctx;
private DateFormat timeFormat = new SimpleDateFormat("hh:mm aa");
private DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm_details);
ctx = this;
ActionBar ab = getSupportActionBar();
ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#ff156514"));
ab.setBackgroundDrawable(colorDrawable);
time = (TextView)findViewById(R.id.time_value);
date = (TextView)findViewById(R.id.date_value);
interval = (TextView)findViewById(R.id.input_hours_value);
alarmRepeat = (TextView)findViewById(R.id.alarm_repeat_value);
alert1 = (TextView)findViewById(R.id.alert1);
alert2 = (TextView)findViewById(R.id.alert2);
snooze = (TextView)findViewById(R.id.snooze_value);
title = (TextView)findViewById(R.id.title_value);
url = (TextView)findViewById(R.id.url_value);
location = (TextView)findViewById(R.id.location_value);
description = (TextView)findViewById(R.id.description_value);
on_off = (SwitchCompat)findViewById(R.id.switch_btn);
// showing Alarm Details
showAlarmsData();
// Applying Listener on Switch
on_off.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// Getting Parameter Values
String time_ = getIntent().getExtras().getString("time");
String date_ = getIntent().getExtras().getString("date");
String alert1_ = getIntent().getExtras().getString("alert1");
String alert2_ = getIntent().getExtras().getString("alert2");
int interval_ = Integer.parseInt(getIntent().getExtras().getString("interval"));
int repeat_ = Integer.parseInt(getIntent().getExtras().getString("repeat"));
// When Switch is Turned ON
if(isChecked){
long alarmTime = Home.getRingTime(time_, date_, interval_);
long currentTime = System.currentTimeMillis();
// In case of Active Alarm
if(Integer.parseInt(act_arc) == 1) {
// For Repeat and No Repeat
if(alarmTime > currentTime) {
if(AlarmsTable.onAlarms(Home.getDop()) < 30) {
// Turn On
AlarmsTable.updateAlarmStatus(Integer.parseInt(id), 1, Home.getDop());
// Creating Alarm in System
Home.setNewAlarm(ctx, time_, date_, interval_, repeat_, Integer.parseInt(id), alert1_, alert2_);
String ring_time = Home.ringTime(time_, date_, interval_);
Toast.makeText(ctx, "Alarm set on " + ring_time, Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(ctx, "Number of active alarms have reached the limit!", Toast.LENGTH_SHORT).show();
}
}
// Only For Repeat
else if(alarmTime <= currentTime && repeat_ == 1){
if(AlarmsTable.onAlarms(Home.getDop()) < 30) {
// Turn On
AlarmsTable.updateAlarmStatus(Integer.parseInt(id), 1, Home.getDop());
String newTime_ = timeFormat.format(currentTime);
String newDate_ = dateFormat.format(currentTime);
AlarmsTable.updateRepeatTime(id, newTime_, newDate_, Home.getDop());
Home.setNewAlarm(ctx, newTime_, newDate_, interval_, repeat_, Long.parseLong(id), alert1_, alert2_);
String ring_time = Home.ringTime(newTime_, newDate_ , interval_);
Toast.makeText(ctx, "Alarm set on " + ring_time, Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(ctx, "Number of active alarms have reached the limit!", Toast.LENGTH_SHORT).show();
}
}
// Only For No Repeat
else{
on_off.setChecked(false);
Toast.makeText(ctx, "Not created! as alarm time is in the past", Toast.LENGTH_SHORT).show();
}
}
// In case of Archive Alarm
else{
// For Repeat and No Repeat
if(alarmTime > currentTime) {
showDialogBox(Integer.parseInt(id), Integer.parseInt(act_arc));
}
// Only for Repeat
else if(alarmTime <= currentTime && repeat_ == 1){
showDialogBox(Integer.parseInt(id), Integer.parseInt(act_arc));
}
// Only for No Repeat
else{
on_off.setChecked(false);
Toast.makeText(ctx, "Not created! as alarm time is in the past", Toast.LENGTH_SHORT).show();
}
}
}
// When Switch is Turned OFF
else{
// In case of Active List of Alarms
if(Integer.parseInt(act_arc) == 1) {
// Turn Off
AlarmsTable.updateAlarmStatus(Integer.parseInt(id), 0, Home.getDop());
// Deleting Alarm from System
Home.cancelAlarm(ctx, Long.parseLong(id));
Toast.makeText(ctx, "Alarm Cancelled!", Toast.LENGTH_SHORT).show();
showDialogBox(Integer.parseInt(id), Integer.parseInt(act_arc)); // act_arc = 1
}
}
}});
// Setting state of Switch
// Getting Updated Cursor (containing only Status)
int status = AlarmsTable.getAlarmStatus(Integer.parseInt(id), Home.getDop());
if(status == 1) {
on_off.setChecked(true);
}
else{
on_off.setChecked(false);
}
// setting Screen Title
getSupportActionBar().setTitle(screenTitle);
}
// showing Alarm data from Database
public void showAlarmsData() {
id = getIntent().getExtras().getString("id");
time.setText(getIntent().getExtras().getString("time"));
date.setText(getIntent().getExtras().getString("date"));
int interval_ = Integer.parseInt(getIntent().getExtras().getString("interval"));
interval.setText(Home.minutesToIntervalLabel(this, interval_));
int repeat = Integer.parseInt(getIntent().getExtras().getString("repeat"));
if(repeat == 1){
alarmRepeat.setText("Yes");
}
else{
alarmRepeat.setText("No");
}
title.setText(getIntent().getExtras().getString("title"));
alert1.setText(getIntent().getExtras().getString("alert1"));
alert2.setText(getIntent().getExtras().getString("alert2"));
snooze.setText(getIntent().getExtras().getString("snooze"));
location.setText(getIntent().getExtras().getString("location"));
url.setText(getIntent().getExtras().getString("url"));
description.setText(getIntent().getExtras().getString("description"));
status = getIntent().getExtras().getString("status");
act_arc = getIntent().getExtras().getString("active_archive");
if(Integer.parseInt(status) == 1){
on_off.setChecked(true);
}
else{
on_off.setChecked(false);
}
screenTitle = title.getText().toString();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if(status.equals("1")){
getMenuInflater().inflate(R.menu.edit, menu);
return true;
}
return false;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.edit:
Intent intent = new Intent(AlarmDetails.this, UpdateAlarm.class);
intent.putExtra("id", id);
intent.putExtra("time", time.getText().toString());
intent.putExtra("date", date.getText().toString());
intent.putExtra("interval", getIntent().getExtras().getString("interval")); // from database
intent.putExtra("repeat", alarmRepeat.getText().toString());
intent.putExtra("title", title.getText().toString());
intent.putExtra("alert1", alert1.getText().toString());
intent.putExtra("alert2", alert2.getText().toString());
intent.putExtra("snooze", snooze.getText().toString());
intent.putExtra("location", location.getText().toString());
intent.putExtra("url", url.getText().toString());
intent.putExtra("description", description.getText().toString());
finish();
startActivity(intent);
break;
}
return super.onOptionsItemSelected(item);
}
private void showDialogBox(final int id, final int act_arc){
// Getting Parameter Values
final String time_ = getIntent().getExtras().getString("time");
final String date_ = getIntent().getExtras().getString("date");
final String alert1_ = getIntent().getExtras().getString("alert1");
final String alert2_= getIntent().getExtras().getString("alert2");
final int interval_ = Integer.parseInt(getIntent().getExtras().getString("interval"));
final int repeat_ = Integer.parseInt(getIntent().getExtras().getString("repeat"));
// Showing Alert Dialog
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
String title, msg;
if(act_arc == 1){
title = "Move to Archive!";
msg = "This alarm will be sent to Archive Alarms Section.";
}
else{
title = "Activate Alarm!";
msg = "This alarm will be sent to Active Alarms Section.";
}
builder.setTitle(title)
.setMessage(msg)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (act_arc == 1) {
AlarmsTable.updateActArcStatus(id, 0, Home.getDop()); // Move to Archive
AlarmsTable.updateSysTime(id, Home.getDop()); // Show on Top
dialog.cancel();
finish();
Toast.makeText(ctx, "Alarm moved to Archive Section!", Toast.LENGTH_SHORT).show();
}
else {
long alarmTime = Home.getRingTime(time_, date_, interval_);
long currentTime = System.currentTimeMillis();
// For Repeat and No Repeat
if(alarmTime > currentTime) {
if(AlarmsTable.onAlarms(Home.getDop()) < 30) {
AlarmsTable.updateAlarmStatus(id, 1, Home.getDop()); // Turn On
AlarmsTable.updateActArcStatus(id, 1, Home.getDop()); // Move to Active
AlarmsTable.updateSysTime(id, Home.getDop()); // Show on Top
// Creating Alarm in System
Home.setNewAlarm(ctx, time_, date_, interval_, repeat_, id, alert1_, alert2_);
String ring_time = Home.ringTime(time_, date_, interval_);
Toast.makeText(ctx, "Alarm set on " + ring_time, Toast.LENGTH_SHORT).show();
dialog.cancel();
finish();
}
else{
Toast.makeText(ctx, "Number of active alarms have reached the limit!", Toast.LENGTH_SHORT).show();
}
}
// Only For Repeat
else if(alarmTime <= currentTime && repeat_ == 1){
if(AlarmsTable.onAlarms(Home.getDop()) < 30) {
// Turn On
AlarmsTable.updateAlarmStatus(id, 1, Home.getDop());
AlarmsTable.updateActArcStatus(id, 1, Home.getDop()); // Move to Active
AlarmsTable.updateSysTime(id, Home.getDop()); // Show on Top
String newTime_ = timeFormat.format(currentTime);
String newDate_ = dateFormat.format(currentTime);
AlarmsTable.updateRepeatTime(String.valueOf(id), newTime_, newDate_, Home.getDop());
Home.setNewAlarm(ctx, newTime_, newDate_, interval_, repeat_, (long) id, alert1_, alert2_);
String ring_time = Home.ringTime(newTime_, newDate_ , interval_);
Toast.makeText(ctx, "Alarm set on " + ring_time, Toast.LENGTH_SHORT).show();
dialog.cancel();
finish();
}
else{
Toast.makeText(ctx, "Number of active alarms have reached the limit!", Toast.LENGTH_SHORT).show();
}
}
}
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
// Retaining Previous State
if (act_arc == 0) {
on_off.setChecked(false);
}
}
});
builder.show();
}
}
No comments:
Post a Comment