X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcom%2Fandroid%2Falarmclock%2FAlarmClock.java;h=657b935c7be68f5e2a233c242fc0be3338a9fecc;hb=bcfaaa6b567b95df64499c2a2e3c15780438a2dc;hp=f84db846c102a62a6db070fbfce2069711e428f1;hpb=aaeab75eee4f56fe6c3b4809a4be556273463cf1;p=android-x86%2Fpackages-apps-DeskClock.git diff --git a/src/com/android/alarmclock/AlarmClock.java b/src/com/android/alarmclock/AlarmClock.java index f84db84..657b935 100644 --- a/src/com/android/alarmclock/AlarmClock.java +++ b/src/com/android/alarmclock/AlarmClock.java @@ -22,11 +22,11 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.res.Configuration; import android.database.Cursor; 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; @@ -34,34 +34,33 @@ import android.view.Menu; 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; import android.widget.AdapterView.OnItemClickListener; +import android.widget.CheckBox; import android.widget.CursorAdapter; import android.widget.ListView; import android.widget.TextView; -import android.widget.CheckBox; -import java.util.Calendar; import java.text.DateFormatSymbols; +import java.util.Calendar; /** * AlarmClock application. */ public class AlarmClock extends Activity implements OnItemClickListener { - final static String PREFERENCES = "AlarmClock"; - final static String PREF_CLOCK_FACE = "face"; - final static String PREF_SHOW_CLOCK = "show_clock"; + static final String PREFERENCES = "AlarmClock"; + static final String PREF_CLOCK_FACE = "face"; + static final String PREF_SHOW_CLOCK = "show_clock"; /** Cap alarm count at this number */ - final static int MAX_ALARM_COUNT = 12; + static final int MAX_ALARM_COUNT = 12; /** 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; @@ -78,9 +77,9 @@ public class AlarmClock extends Activity implements OnItemClickListener { private int mFace = -1; /* - * FIXME: it would be nice for this to live in an xml config file. + * TODO: it would be nice for this to live in an xml config file. */ - final static int[] CLOCKS = { + static final int[] CLOCKS = { R.layout.clock_basic_bw, R.layout.clock_googly, R.layout.clock_droid2, @@ -99,16 +98,16 @@ public class AlarmClock extends Activity implements OnItemClickListener { ((TextView) ret.findViewById(R.id.am)).setText(mAm); ((TextView) ret.findViewById(R.id.pm)).setText(mPm); - 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; } public void bindView(View view, Context context, Cursor cursor) { final Alarm alarm = new Alarm(cursor); - CheckBox onButton = (CheckBox)view.findViewById(R.id.alarmButton); + CheckBox onButton = (CheckBox) view.findViewById(R.id.alarmButton); onButton.setChecked(alarm.enabled); onButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { @@ -202,33 +201,30 @@ public class AlarmClock extends Activity implements OnItemClickListener { mAm = ampm[0]; mPm = ampm[1]; - // sanity check -- no database, no clock - if (getContentResolver() == null) { - new AlertDialog.Builder(this) - .setTitle(getString(R.string.error)) - .setMessage(getString(R.string.dberror)) - .setPositiveButton( - android.R.string.ok, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - finish(); - } - }) - .setOnCancelListener( - new DialogInterface.OnCancelListener() { - public void onCancel(DialogInterface dialog) { - finish(); - }}) - .setIcon(android.R.drawable.ic_dialog_alert) - .create().show(); - return; - } - - setContentView(R.layout.alarm_clock); mFactory = LayoutInflater.from(this); mPrefs = getSharedPreferences(PREFERENCES, 0); - mCursor = Alarms.getAlarmsCursor(getContentResolver()); + + updateLayout(); + setClockVisibility(mPrefs.getBoolean(PREF_SHOW_CLOCK, true)); + } + + private final Handler mHandler = new Handler(); + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + // Send a message to avoid a possible ANR. + mHandler.post(new Runnable() { + public void run() { + updateLayout(); + inflateClock(); + } + }); + } + + private void updateLayout() { + setContentView(R.layout.alarm_clock); mAlarmsList = (ListView) findViewById(R.id.alarms_list); mAlarmsList.setAdapter(new AlarmTimeAdapter(this, mCursor)); mAlarmsList.setVerticalScrollBarEnabled(true); @@ -238,13 +234,12 @@ public class AlarmClock extends Activity implements OnItemClickListener { mClockLayout = (ViewGroup) findViewById(R.id.clock_layout); mClockLayout.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - final Intent intent = new Intent(AlarmClock.this, ClockPicker.class); + final Intent intent = + new Intent(AlarmClock.this, ClockPicker.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } }); - - setClockVisibility(mPrefs.getBoolean(PREF_SHOW_CLOCK, true)); } @Override @@ -253,10 +248,11 @@ public class AlarmClock extends Activity implements OnItemClickListener { int face = mPrefs.getInt(PREF_CLOCK_FACE, 0); if (mFace != face) { - if (face < 0 || face >= AlarmClock.CLOCKS.length) + if (face < 0 || face >= AlarmClock.CLOCKS.length) { mFace = 0; - else + } else { mFace = face; + } inflateClock(); } } @@ -353,7 +349,8 @@ public class AlarmClock extends Activity implements OnItemClickListener { switch (item.getItemId()) { case R.id.menu_add_alarm: Uri uri = Alarms.addAlarm(getContentResolver()); - // FIXME: scroll to new item? + // TODO: Create new alarm _after_ SetAlarm so the user has the + // chance to cancel alarm creation. String segment = uri.getPathSegments().get(1); int newId = Integer.parseInt(segment); if (Log.LOGV) {