package com.pledgeapps.buyingtime; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.app.DialogFragment; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.RadioGroup; import android.widget.Spinner; import android.widget.TimePicker; import android.widget.ToggleButton; import com.pledgeapps.buyingtime.data.Alarm; import com.pledgeapps.buyingtime.data.Alarms; import java.util.ArrayList; import java.util.List; public class AlarmActivity extends ActionBarActivity { EditText graceMinutesText; EditText centsPerMinuteText; EditText snoozeDurationText; Button alarmTimeButton; Button daysButton; Button saveButton; Button deleteButton; ToggleButton activeToggle; ToggleButton dismissPuzzle; String[] daysOfTheWeek = new String[]{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; int[] selectedDays = new int[0]; int selectedHour = 0; int selectedMinute = 0; int alarmIndex = 0; Alarm alarm; Handler timeHandler = new Handler() { public void handleMessage(Message m) { Bundle b = m.getData(); selectedHour = b.getInt("hour"); selectedMinute = b.getInt("minute"); alarmTimeButton.setText(Alarm.getDisplayTime(selectedHour,selectedMinute)); } }; Handler daysHandler = new Handler() { public void handleMessage(Message m) { Bundle b = m.getData(); ArrayList<Integer> days = (ArrayList<Integer>) b.get("selectedIndexes"); selectedDays = new int[days.size()]; for (int i=0;i<days.size();i++) selectedDays[i] = days.get(i); daysButton.setText(Alarm.getDisplayDays(selectedDays)); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alarm); Bundle extras = getIntent().getExtras(); if (extras != null) alarmIndex = extras.getInt("ALARM_INDEX"); if (alarmIndex==-1) alarm = Alarm.createNewAlarm(); else alarm = Alarms.getCurrent().get(alarmIndex); activeToggle = (ToggleButton) findViewById(R.id.activeToggle); dismissPuzzle = (ToggleButton) findViewById(R.id.dismissPuzzle); graceMinutesText = (EditText) findViewById(R.id.graceMinutesText); centsPerMinuteText = (EditText) findViewById(R.id.centsPerMinuteText); snoozeDurationText = (EditText) findViewById(R.id.snoozeDurationText); alarmTimeButton = (Button) findViewById(R.id.alarmTimeButton); daysButton = (Button) findViewById(R.id.daysButton); saveButton = (Button) findViewById(R.id.saveButton); deleteButton = (Button) findViewById(R.id.deleteButton); alarmTimeButton.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {setTime();}}); daysButton.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {setDays();}}); saveButton.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {save();}}); deleteButton.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {delete();}}); populateFields(); //alarmList = (ListView) findViewById(R.id.alarmList); } private void populateFields() { this.selectedHour = alarm.hour; this.selectedMinute = alarm.minute; this.selectedDays = alarm.daysOfWeek; activeToggle.setChecked(alarm.active); dismissPuzzle.setChecked(alarm.requirePuzzle); centsPerMinuteText.setText(Integer.toString(alarm.centsPerMinute)); graceMinutesText.setText(Integer.toString(alarm.graceMinutes)); snoozeDurationText.setText(Integer.toString(alarm.snoozeDuration)); alarmTimeButton.setText(alarm.getDisplayTime()); daysButton.setText(alarm.getDisplayDays()); } private void setTime() { DialogFragment timeFragment = TimePickerFragment.newInstance(timeHandler, selectedHour, selectedMinute); timeFragment.show(this.getSupportFragmentManager(), "timePicker"); } private void setDays() { ArrayList<Integer> selectedIndexes = new ArrayList<Integer>(); for (int day : selectedDays) selectedIndexes.add(day); DialogFragment daysFragment = DaysOfWeekFragment.newInstance(daysHandler, selectedIndexes); daysFragment.show(this.getSupportFragmentManager(), "dayPicker"); } private void delete() { if (alarmIndex>-1) Alarms.getCurrent().remove(alarmIndex); this.finish(); } private void save() { alarm.minute = selectedMinute; alarm.hour = selectedHour; alarm.graceMinutes = Integer.parseInt(graceMinutesText.getText().toString()); alarm.centsPerMinute = Integer.parseInt(centsPerMinuteText.getText().toString()); alarm.snoozeDuration = Integer.parseInt(snoozeDurationText.getText().toString()); alarm.active = activeToggle.isChecked(); alarm.requirePuzzle = dismissPuzzle.isChecked(); alarm.daysOfWeek = selectedDays; if (alarmIndex==-1) Alarms.getCurrent().add(alarm); this.finish(); } }