Thursday, 11 June 2015

Alarm details class

package com.siliconicpro.admin.ialarm;

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