import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
-import android.provider.Settings;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
-import android.view.View.OnCreateContextMenuListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
*/
public class AlarmClock extends Activity implements OnItemClickListener {
- final static String PREFERENCES = "AlarmClock";
+ static final String PREFERENCES = "AlarmClock";
/** This must be false for production. If true, turns on logging,
test code, etc. */
- final static boolean DEBUG = false;
+ static final boolean DEBUG = false;
private SharedPreferences mPrefs;
private LayoutInflater mFactory;
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View ret = mFactory.inflate(R.layout.alarm_time, parent, false);
- DigitalClock digitalClock = (DigitalClock) ret.findViewById(R.id.digitalClock);
+ DigitalClock digitalClock =
+ (DigitalClock) ret.findViewById(R.id.digitalClock);
digitalClock.setLive(false);
- if (Log.LOGV) Log.v("newView " + cursor.getPosition());
return ret;
}
(CheckBox) indicator.findViewById(R.id.clock_onoff);
clockOnOff.setChecked(alarm.enabled);
- // Handle the "checkbox" click and toggle the alarm.
- clockOnOff.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- boolean isChecked = ((CheckBox) v).isChecked();
- updateIndicatorAndAlarm(isChecked, barOnOff, alarm);
- }
- });
-
// Clicking outside the "checkbox" should also change the state.
indicator.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
addNewAlarm();
}
});
+ // Make the entire view selected when focused.
+ addAlarm.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+ public void onFocusChange(View v, boolean hasFocus) {
+ v.setSelected(hasFocus);
+ }
+ });
ImageButton deskClock =
(ImageButton) findViewById(R.id.desk_clock_button);
// Set the custom view on the menu.
menu.setHeaderView(v);
+ // Change the text based on the state of the alarm.
+ if (alarm.enabled) {
+ menu.findItem(R.id.enable_alarm).setTitle(R.string.disable_alarm);
+ }
}
@Override
package com.android.deskclock;
+ import android.app.AlertDialog;
import android.app.TimePickerDialog;
import android.content.Context;
+ import android.content.DialogInterface;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
implements TimePickerDialog.OnTimeSetListener {
private EditTextPreference mLabel;
+ private CheckBoxPreference mEnabledPref;
private Preference mTimePref;
private AlarmPreference mAlarmPref;
private CheckBoxPreference mVibratePref;
private RepeatPreference mRepeatPref;
- private MenuItem mDeleteAlarmItem;
private MenuItem mTestAlarmItem;
private int mId;
- private boolean mEnabled;
private int mHour;
private int mMinutes;
return true;
}
});
+ mEnabledPref = (CheckBoxPreference) findPreference("enabled");
mTimePref = findPreference("time");
mAlarmPref = (AlarmPreference) findPreference("alarm");
mVibratePref = (CheckBoxPreference) findPreference("vibrate");
/* load alarm details from database */
Alarm alarm = Alarms.getAlarm(getContentResolver(), mId);
- mEnabled = alarm.enabled;
+ // Bad alarm, bail to avoid a NPE.
+ if (alarm == null) {
+ finish();
+ return;
+ }
+ mEnabledPref.setChecked(alarm.enabled);
mLabel.setText(alarm.label);
mLabel.setSummary(alarm.label);
mHour = alarm.hour;
Button b = (Button) v.findViewById(R.id.alarm_save);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
- mEnabled = true;
+ // Enable the alarm when clicking "Done"
++ mEnabledPref.setChecked(true);
saveAlarm();
finish();
}
finish();
}
});
+ b = (Button) v.findViewById(R.id.alarm_delete);
+ b.setOnClickListener(new View.OnClickListener() {
+ public void onClick(View v) {
+ deleteAlarm();
+ }
+ });
// Replace the old content view with our new one.
setContentView(ll);
mMinutes = minute;
updateTime();
// If the time has been changed, enable the alarm.
- mEnabled = true;
+ mEnabledPref.setChecked(true);
}
private void updateTime() {
private void saveAlarm() {
final String alert = mAlarmPref.getAlertString();
- long time = Alarms.setAlarm(this, mId, mEnabled, mHour, mMinutes,
- mRepeatPref.getDaysOfWeek(), mVibratePref.isChecked(),
+ long time = Alarms.setAlarm(this, mId, mEnabledPref.isChecked(), mHour,
+ mMinutes, mRepeatPref.getDaysOfWeek(), mVibratePref.isChecked(),
mLabel.getText(), alert);
- if (mEnabled) {
+ if (mEnabledPref.isChecked()) {
popAlarmSetToast(this, time);
}
}
+ private void deleteAlarm() {
+ new AlertDialog.Builder(this)
+ .setTitle(getString(R.string.delete_alarm))
+ .setMessage(getString(R.string.delete_alarm_confirm))
+ .setPositiveButton(android.R.string.ok,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface d, int w) {
+ Alarms.deleteAlarm(SetAlarm.this, mId);
+ finish();
+ }
+ })
+ .setNegativeButton(android.R.string.cancel, null)
+ .show();
+ }
+
/**
* Write alarm out to persistent store and pops toast if alarm
* enabled.
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
- mDeleteAlarmItem = menu.add(0, 0, 0, R.string.delete_alarm);
- mDeleteAlarmItem.setIcon(android.R.drawable.ic_menu_delete);
-
if (AlarmClock.DEBUG) {
mTestAlarmItem = menu.add(0, 0, 0, "test alarm");
}
}
public boolean onOptionsItemSelected(MenuItem item) {
- if (item == mDeleteAlarmItem) {
- Alarms.deleteAlarm(this, mId);
- finish();
- return true;
- }
if (AlarmClock.DEBUG) {
if (item == mTestAlarmItem) {
setTestAlarm();