tree 0eef677fe5fcdd70a4b3ef2e38fcb45b65ddf3cc
parent 01b9b5baace6a45a7a4d45ba041b271662960aa4
author Patrick Scott <phanna@android.com> 1245331548 -0400
committer Patrick Scott <phanna@android.com> 1245331548 -0400

Merge the fullscreen change from master to donut for security.

Rework the AlarmAlert dialog layout.

Make the layout portrait only to make it more uniform and nicer looking. Update
all the clock layouts to have the same size. The alert will have a larger clock
than the AlarmClock screen.

Remove the old hack to make the alert a dialog.

Inflate the views with a root so the layout params will be fill_parent. Use the
animate_circle resource in setBackgroundResource to clean up the code.

Add a new AlarmAlertFullScreen activity which makes the alert fullscreen with
the current wallpaper as the background. Query the keyguard manager during the
alarm broadcast to decide which activity to launch. The regular alert activity
shows above the current activity but the fullscreen activity will not show the
previous activity for security reasons.

Add the alarm_alert style that mimics the Theme.Dialog.Alert style but does not
rely on a private resource. Add dialog.9.png for the same reason.

Add a LinearLayout surrounding the alert layout to hold the background
wallpaper.
