Finish the UI improvements for the alarm list.
diff --git a/res/drawable-hdpi/ic_clock_add_alarm.png b/res/drawable-hdpi/ic_clock_add_alarm.png
new file mode 100644
index 0000000..f7cc82d
--- /dev/null
+++ b/res/drawable-hdpi/ic_clock_add_alarm.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_clock_add_alarm_selected.png b/res/drawable-hdpi/ic_clock_add_alarm_selected.png
new file mode 100644
index 0000000..55cd344
--- /dev/null
+++ b/res/drawable-hdpi/ic_clock_add_alarm_selected.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_menu_desk_clock.png b/res/drawable-hdpi/ic_menu_desk_clock.png
new file mode 100644
index 0000000..e4d8ecc
--- /dev/null
+++ b/res/drawable-hdpi/ic_menu_desk_clock.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_clock_add_alarm.png b/res/drawable-mdpi/ic_clock_add_alarm.png
new file mode 100644
index 0000000..c49358e
--- /dev/null
+++ b/res/drawable-mdpi/ic_clock_add_alarm.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_clock_add_alarm_selected.png b/res/drawable-mdpi/ic_clock_add_alarm_selected.png
new file mode 100644
index 0000000..c4817c4
--- /dev/null
+++ b/res/drawable-mdpi/ic_clock_add_alarm_selected.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_desk_clock.png b/res/drawable-mdpi/ic_menu_desk_clock.png
new file mode 100644
index 0000000..d9893ed
--- /dev/null
+++ b/res/drawable-mdpi/ic_menu_desk_clock.png
Binary files differ
diff --git a/res/drawable/add_alarm.xml b/res/drawable/add_alarm.xml
new file mode 100644
index 0000000..950894d
--- /dev/null
+++ b/res/drawable/add_alarm.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_focused="true" android:state_window_focused="true"
+        android:drawable="@drawable/ic_clock_add_alarm_selected" />
+    <item android:state_pressed="true" android:state_window_focused="true"
+        android:drawable="@drawable/ic_clock_add_alarm_selected" />
+    <item android:state_focused="false"
+        android:drawable="@drawable/ic_clock_add_alarm" />
+</selector>
diff --git a/res/layout/alarm_clock.xml b/res/layout/alarm_clock.xml
index 5ae1537..ed8b757 100644
--- a/res/layout/alarm_clock.xml
+++ b/res/layout/alarm_clock.xml
@@ -20,6 +20,34 @@
     android:layout_height="fill_parent"
     android:orientation="vertical"> 
 
+    <LinearLayout android:id="@+id/add_alarm"
+        android:clickable="true"
+        android:focusable="true"
+        android:focusableInTouchMode="true"
+        android:background="@android:drawable/list_selector_background"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="4dip"
+        android:paddingBottom="4dip"
+        android:orientation="horizontal">
+
+        <ImageView
+            style="@style/alarm_list_left_column"
+            android:duplicateParentState="true"
+            android:gravity="center"
+            android:scaleType="center"
+            android:src="@drawable/add_alarm" />
+
+        <TextView
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:layout_gravity="center_vertical"
+            android:textSize="28sp"
+            android:textColor="@color/white"
+            android:text="@string/add_alarm" />
+
+    </LinearLayout>
+
     <ListView
         android:id="@+id/alarms_list"
         android:layout_width="fill_parent"
@@ -29,22 +57,42 @@
     <LinearLayout
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        style="@android:style/ButtonBar">
+        android:orientation="horizontal" >
 
-        <Button android:id="@+id/add_alarm"
-            android:focusable="true"
-            android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
-            android:layout_weight="1"
-            android:text="@string/add_alarm"/>
+        <ImageButton android:id="@+id/desk_clock_button"
+            style="@style/ButtonStripLeft"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ic_menu_desk_clock"
+            android:contentDescription="@string/desk_clock_button_description"/>
 
-        <Button android:id="@+id/settings"
-            android:focusable="true"
+        <com.android.deskclock.DigitalClock
+            style="@style/ButtonStripRight"
             android:layout_width="fill_parent"
-            android:layout_height="fill_parent"
-            android:layout_weight="1"
-            android:text="@string/settings"/>
+            android:layout_height="fill_parent">
+
+            <LinearLayout
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:baselineAligned="true">
+
+                <TextView android:id="@+id/timeDisplay"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:paddingRight="6dip"
+                    android:textSize="42sp"
+                    android:textColor="@color/white" />
+
+                <TextView android:id="@+id/am_pm"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textSize="18sp"
+                    android:textStyle="bold"
+                    android:textColor="@color/white" />
+
+            </LinearLayout>
+
+      </com.android.deskclock.DigitalClock>
 
     </LinearLayout>
 
diff --git a/res/layout/alarm_time.xml b/res/layout/alarm_time.xml
index 24a485b..6ab5a66 100644
--- a/res/layout/alarm_time.xml
+++ b/res/layout/alarm_time.xml
@@ -23,12 +23,8 @@
     android:orientation="horizontal">
 
     <LinearLayout android:id="@+id/indicator"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:paddingLeft="14dip"
-        android:paddingRight="14dip"
-        android:paddingTop="8dip"
-        android:paddingBottom="8dip"
+        style="@style/alarm_list_left_column"
+        android:gravity="center"
         android:orientation="vertical">
         <CheckBox android:id="@+id/clock_onoff"
             android:focusable="false"
@@ -87,6 +83,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
+                android:paddingLeft="4dip"
                 android:textSize="16sp"
                 android:textColor="@color/grey"
                 android:textStyle="bold"
diff --git a/res/menu/alarm_list_menu.xml b/res/menu/alarm_list_menu.xml
new file mode 100644
index 0000000..a8d1911
--- /dev/null
+++ b/res/menu/alarm_list_menu.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/menu_item_settings"
+        android:title="@string/settings"
+        android:icon="@android:drawable/ic_menu_preferences"/>
+</menu>
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b4cbabc..ef2817e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -228,6 +228,7 @@
     <string name="music_button_description">Music</string>
     <string name="nightmode_button_description">Dim</string>
     <string name="home_button_description">Launcher</string>
+    <string name="desk_clock_button_description">Clock Display</string>
 
     <!-- A short representation of charging information, e.g "34%" -->
     <string name="battery_charging_level"><xliff:g id="number">%d</xliff:g><xliff:g id="percent">%%</xliff:g></string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 6ba3eeb..11a6550 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -52,4 +52,9 @@
         <item name="android:layout_height">wrap_content</item>
         <item name="android:background">@drawable/btn_strip_trans_right</item>
     </style>
+
+    <style name="alarm_list_left_column">
+        <item name="android:layout_width">64dip</item>
+        <item name="android:layout_height">54dip</item>
+    </style>
 </resources>
diff --git a/src/com/android/deskclock/AlarmClock.java b/src/com/android/deskclock/AlarmClock.java
index f2533c3..acf42b3 100644
--- a/src/com/android/deskclock/AlarmClock.java
+++ b/src/com/android/deskclock/AlarmClock.java
@@ -24,7 +24,6 @@
 import android.content.SharedPreferences;
 import android.content.res.Configuration;
 import android.database.Cursor;
-import android.database.DataSetObserver;
 import android.graphics.Typeface;
 import android.net.Uri;
 import android.os.Bundle;
@@ -45,6 +44,7 @@
 import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.CursorAdapter;
+import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
@@ -58,9 +58,6 @@
 
     final static String PREFERENCES = "AlarmClock";
 
-    /** Cap alarm count at this number */
-    final static int MAX_ALARM_COUNT = 12;
-
     /** This must be false for production.  If true, turns on logging,
         test code, etc. */
     final static boolean DEBUG = false;
@@ -221,7 +218,7 @@
         mAlarmsList.setOnItemClickListener(this);
         mAlarmsList.setOnCreateContextMenuListener(this);
 
-        final Button addAlarm = (Button) findViewById(R.id.add_alarm);
+        View addAlarm = findViewById(R.id.add_alarm);
         addAlarm.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                     Uri uri = Alarms.addAlarm(getContentResolver());
@@ -237,28 +234,14 @@
                     startActivity(intent);
                 }
             });
-        // Update the enabled state of the "Add alarm" menu item depending on
-        // how many alarms are set.
-        adapter.registerDataSetObserver(new DataSetObserver() {
-            public void onChanged() {
-                updateAddAlarmButton(addAlarm);
-            }
-            public void onInvalidate() {
-                updateAddAlarmButton(addAlarm);
-            }
-        });
 
-        Button settings = (Button) findViewById(R.id.settings);
-        settings.setOnClickListener(new View.OnClickListener() {
+        ImageButton deskClock =
+                (ImageButton) findViewById(R.id.desk_clock_button);
+        deskClock.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
-                    startActivity(
-                        new Intent(AlarmClock.this, SettingsActivity.class));
+                    startActivity(new Intent(AlarmClock.this, DeskClock.class));
                 }
-            });
-    }
-
-    private void updateAddAlarmButton(Button b) {
-        b.setEnabled(mAlarmsList.getAdapter().getCount() < MAX_ALARM_COUNT);
+        });
     }
 
     @Override
@@ -301,6 +284,21 @@
         }
     }
 
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.menu_item_settings) {
+            startActivity(new Intent(this, SettingsActivity.class));
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.alarm_list_menu, menu);
+        return true;
+    }
+
     public void onItemClick(AdapterView parent, View v, int pos, long id) {
         Intent intent = new Intent(this, SetAlarm.class);
         intent.putExtra(Alarms.ALARM_ID, (int) id);