summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:49 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:49 -0800
commit8d7704fad6d9e52865b1789948e20e2f8b200823 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent0ae538fa49ce6d0a0a5cf6246db2bbe4e723bbfd (diff)
downloadandroid_packages_apps_DeskClock-8d7704fad6d9e52865b1789948e20e2f8b200823.tar.gz
android_packages_apps_DeskClock-8d7704fad6d9e52865b1789948e20e2f8b200823.tar.bz2
android_packages_apps_DeskClock-8d7704fad6d9e52865b1789948e20e2f8b200823.zip
auto import from //depot/cupcake/@135843
-rw-r--r--Android.mk10
-rw-r--r--AndroidManifest.xml56
-rw-r--r--MODULE_LICENSE_APACHE20
-rw-r--r--NOTICE190
-rw-r--r--res/drawable/animate_circle.xml27
-rw-r--r--res/drawable/circle0.pngbin8756 -> 0 bytes
-rw-r--r--res/drawable/circle1.pngbin8146 -> 0 bytes
-rw-r--r--res/drawable/circle2.pngbin7125 -> 0 bytes
-rw-r--r--res/drawable/circle3.pngbin6361 -> 0 bytes
-rw-r--r--res/drawable/clock_dial.pngbin18343 -> 0 bytes
-rw-r--r--res/drawable/clock_hour.pngbin457 -> 0 bytes
-rw-r--r--res/drawable/clock_minute.pngbin239 -> 0 bytes
-rw-r--r--res/drawable/clockdroid2_dial.pngbin12749 -> 0 bytes
-rw-r--r--res/drawable/clockdroid2_hour.pngbin386 -> 0 bytes
-rw-r--r--res/drawable/clockdroid2_minute.pngbin344 -> 0 bytes
-rw-r--r--res/drawable/clockdroids_dial.pngbin15917 -> 0 bytes
-rw-r--r--res/drawable/clockdroids_hour.pngbin715 -> 0 bytes
-rw-r--r--res/drawable/clockdroids_minute.pngbin329 -> 0 bytes
-rw-r--r--res/drawable/clockgoog_dial.pngbin17416 -> 0 bytes
-rw-r--r--res/drawable/clockgoog_hour.pngbin814 -> 0 bytes
-rw-r--r--res/drawable/clockgoog_minute.pngbin346 -> 0 bytes
-rw-r--r--res/drawable/gadget_clock_dial.pngbin23627 -> 0 bytes
-rw-r--r--res/drawable/gadget_clock_hour.pngbin480 -> 0 bytes
-rw-r--r--res/drawable/gadget_clock_minute.pngbin580 -> 0 bytes
-rwxr-xr-xres/drawable/ic_launcher_alarmclock.pngbin2988 -> 0 bytes
-rw-r--r--res/drawable/ic_menu_clock_face.pngbin2950 -> 0 bytes
-rw-r--r--res/layout-land/alarm_alert.xml76
-rw-r--r--res/layout-land/alarm_clock.xml35
-rw-r--r--res/layout/alarm_alert.xml73
-rw-r--r--res/layout/alarm_clock.xml37
-rw-r--r--res/layout/alarm_time.xml86
-rw-r--r--res/layout/analog_gadget.xml22
-rw-r--r--res/layout/clock_basic_bw.xml22
-rw-r--r--res/layout/clock_droid2.xml22
-rw-r--r--res/layout/clock_droids.xml22
-rw-r--r--res/layout/clock_googly.xml22
-rw-r--r--res/layout/clockpicker.xml49
-rw-r--r--res/layout/digital_clock.xml52
-rw-r--r--res/values-cs/strings.xml76
-rw-r--r--res/values-de/strings.xml76
-rw-r--r--res/values-es/strings.xml76
-rw-r--r--res/values-fr/strings.xml76
-rw-r--r--res/values-it/strings.xml76
-rw-r--r--res/values-ja/strings.xml76
-rw-r--r--res/values-ko/strings.xml76
-rw-r--r--res/values-nb/strings.xml76
-rw-r--r--res/values-nl/strings.xml76
-rw-r--r--res/values-pl/strings.xml76
-rw-r--r--res/values-ru/strings.xml76
-rw-r--r--res/values-zh-rCN/strings.xml76
-rw-r--r--res/values-zh-rTW/strings.xml76
-rw-r--r--res/values/colors.xml24
-rw-r--r--res/values/strings.xml190
-rw-r--r--res/values/styles.xml23
-rw-r--r--res/xml/alarm_prefs.xml36
-rw-r--r--res/xml/analog_gadget.xml23
-rw-r--r--src/com/android/alarmclock/AlarmAlert.java311
-rw-r--r--src/com/android/alarmclock/AlarmAlertWakeLock.java51
-rw-r--r--src/com/android/alarmclock/AlarmClock.java314
-rw-r--r--src/com/android/alarmclock/AlarmInitReceiver.java44
-rw-r--r--src/com/android/alarmclock/AlarmKlaxon.java212
-rw-r--r--src/com/android/alarmclock/AlarmPreference.java54
-rw-r--r--src/com/android/alarmclock/AlarmProvider.java237
-rw-r--r--src/com/android/alarmclock/AlarmReceiver.java68
-rw-r--r--src/com/android/alarmclock/Alarms.java758
-rw-r--r--src/com/android/alarmclock/AnalogGadgetProvider.java66
-rw-r--r--src/com/android/alarmclock/ClockPicker.java119
-rw-r--r--src/com/android/alarmclock/DigitalClock.java209
-rw-r--r--src/com/android/alarmclock/Log.java42
-rw-r--r--src/com/android/alarmclock/RepeatPreference.java76
-rw-r--r--src/com/android/alarmclock/SetAlarm.java398
-rw-r--r--src/com/android/alarmclock/ToastMaster.java41
72 files changed, 0 insertions, 5085 deletions
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 3b053730d..000000000
--- a/Android.mk
+++ /dev/null
@@ -1,10 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := eng development
-
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-
-LOCAL_PACKAGE_NAME := AlarmClock
-
-include $(BUILD_PACKAGE)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
deleted file mode 100644
index efcc8821c..000000000
--- a/AndroidManifest.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.alarmclock">
-
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
- <uses-permission android:name="android.permission.WAKE_LOCK"/>
- <uses-permission android:name="android.permission.VIBRATE"/>
- <uses-permission android:name="android.permission.WRITE_SETTINGS" />
- <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
-
- <application android:label="@string/app_label"
- android:icon="@drawable/ic_launcher_alarmclock">
-
- <provider android:name="AlarmProvider" android:authorities="com.android.alarmclock" />
-
- <activity android:name="AlarmClock" android:label="@string/app_label">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
-
- <activity android:name="SetAlarm" android:label="@string/set_alarm" />
-
- <activity android:name="AlarmAlert" android:label="@string/alert_title"
- android:excludeFromRecents="true"
- android:theme="@android:style/Theme.Dialog"
- android:launchMode="singleTask"
- android:taskAffinity=":AlarmAlert"
- android:configChanges="orientation|keyboardHidden|keyboard|navigation" />
-
- <activity android:name="ClockPicker" />
-
- <receiver android:name="AlarmReceiver">
- <intent-filter>
- <action android:name="com.android.alarmclock.ALARM_ALERT" />
- </intent-filter>
- </receiver>
-
- <receiver android:name="AlarmInitReceiver">
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED" />
- <action android:name="android.intent.action.TIME_SET" />
- <action android:name="android.intent.action.TIMEZONE_CHANGED" />
- </intent-filter>
- </receiver>
-
- <receiver android:name="AnalogGadgetProvider" android:label="@string/analog_gadget">
- <intent-filter>
- <action android:name="android.gadget.action.GADGET_UPDATE" />
- </intent-filter>
- <meta-data android:name="android.gadget.provider" android:resource="@xml/analog_gadget" />
- </receiver>
- </application>
-</manifest>
-
diff --git a/MODULE_LICENSE_APACHE2 b/MODULE_LICENSE_APACHE2
deleted file mode 100644
index e69de29bb..000000000
--- a/MODULE_LICENSE_APACHE2
+++ /dev/null
diff --git a/NOTICE b/NOTICE
deleted file mode 100644
index c5b1efa7a..000000000
--- a/NOTICE
+++ /dev/null
@@ -1,190 +0,0 @@
-
- Copyright (c) 2005-2008, 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.
-
- 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.
-
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
diff --git a/res/drawable/animate_circle.xml b/res/drawable/animate_circle.xml
deleted file mode 100644
index 02dfd5147..000000000
--- a/res/drawable/animate_circle.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<!-- Chewie... the hyperdrive ain't working -->
-<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
- android:oneshot="false" android:visible="true">
- <item android:drawable="@drawable/circle0" android:duration="80" />
- <item android:drawable="@drawable/circle1" android:duration="80" />
- <item android:drawable="@drawable/circle2" android:duration="80" />
- <item android:drawable="@drawable/circle3" android:duration="80" />
-</animation-list>
-
-
-
diff --git a/res/drawable/circle0.png b/res/drawable/circle0.png
deleted file mode 100644
index 1386ed48d..000000000
--- a/res/drawable/circle0.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/circle1.png b/res/drawable/circle1.png
deleted file mode 100644
index fed01903f..000000000
--- a/res/drawable/circle1.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/circle2.png b/res/drawable/circle2.png
deleted file mode 100644
index 97129764c..000000000
--- a/res/drawable/circle2.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/circle3.png b/res/drawable/circle3.png
deleted file mode 100644
index 056bb4569..000000000
--- a/res/drawable/circle3.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clock_dial.png b/res/drawable/clock_dial.png
deleted file mode 100644
index 734e3612d..000000000
--- a/res/drawable/clock_dial.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clock_hour.png b/res/drawable/clock_hour.png
deleted file mode 100644
index 023faa4a5..000000000
--- a/res/drawable/clock_hour.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clock_minute.png b/res/drawable/clock_minute.png
deleted file mode 100644
index 104e2a2b1..000000000
--- a/res/drawable/clock_minute.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clockdroid2_dial.png b/res/drawable/clockdroid2_dial.png
deleted file mode 100644
index 0996f09db..000000000
--- a/res/drawable/clockdroid2_dial.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clockdroid2_hour.png b/res/drawable/clockdroid2_hour.png
deleted file mode 100644
index cf6268d2b..000000000
--- a/res/drawable/clockdroid2_hour.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clockdroid2_minute.png b/res/drawable/clockdroid2_minute.png
deleted file mode 100644
index a4fe78221..000000000
--- a/res/drawable/clockdroid2_minute.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clockdroids_dial.png b/res/drawable/clockdroids_dial.png
deleted file mode 100644
index 45e86d080..000000000
--- a/res/drawable/clockdroids_dial.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clockdroids_hour.png b/res/drawable/clockdroids_hour.png
deleted file mode 100644
index 898d44d60..000000000
--- a/res/drawable/clockdroids_hour.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clockdroids_minute.png b/res/drawable/clockdroids_minute.png
deleted file mode 100644
index 4e5976419..000000000
--- a/res/drawable/clockdroids_minute.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clockgoog_dial.png b/res/drawable/clockgoog_dial.png
deleted file mode 100644
index a83b7b8d6..000000000
--- a/res/drawable/clockgoog_dial.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clockgoog_hour.png b/res/drawable/clockgoog_hour.png
deleted file mode 100644
index 7eff3c29b..000000000
--- a/res/drawable/clockgoog_hour.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/clockgoog_minute.png b/res/drawable/clockgoog_minute.png
deleted file mode 100644
index b1eaebd37..000000000
--- a/res/drawable/clockgoog_minute.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gadget_clock_dial.png b/res/drawable/gadget_clock_dial.png
deleted file mode 100644
index eda3d17f7..000000000
--- a/res/drawable/gadget_clock_dial.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gadget_clock_hour.png b/res/drawable/gadget_clock_hour.png
deleted file mode 100644
index fcfd94806..000000000
--- a/res/drawable/gadget_clock_hour.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/gadget_clock_minute.png b/res/drawable/gadget_clock_minute.png
deleted file mode 100644
index afc0a3ff9..000000000
--- a/res/drawable/gadget_clock_minute.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_launcher_alarmclock.png b/res/drawable/ic_launcher_alarmclock.png
deleted file mode 100755
index 30ff2671a..000000000
--- a/res/drawable/ic_launcher_alarmclock.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/ic_menu_clock_face.png b/res/drawable/ic_menu_clock_face.png
deleted file mode 100644
index 678af24f8..000000000
--- a/res/drawable/ic_menu_clock_face.png
+++ /dev/null
Binary files differ
diff --git a/res/layout-land/alarm_alert.xml b/res/layout-land/alarm_alert.xml
deleted file mode 100644
index a58bc5653..000000000
--- a/res/layout-land/alarm_alert.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/root"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:paddingTop="2dp">
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:orientation="vertical">
-
- <LinearLayout
- android:id="@+id/clockView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:gravity="center"/>
-
- <TextView android:id="@+id/silencedText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingLeft="4dp"
- android:paddingTop="2dp"
- android:paddingBottom="2dp"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:visibility="gone"
- android:gravity="center"
- android:textColor="@color/red"
- android:text="@string/alarm_alert_alert_silenced"/>
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:orientation="vertical">
-
- <Button
- android:id="@+id/snooze"
- android:layout_width="108dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@string/alarm_alert_snooze_text" />
-
- <!-- blank stretchable view -->
- <View
- android:layout_width="2dip"
- android:layout_gravity="fill_vertical"
- android:layout_weight="1"
- android:layout_height="2dip"/>
-
- <Button
- android:id="@+id/dismiss"
- android:layout_width="108dip"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@string/alarm_alert_dismiss_text" />
-
- </LinearLayout>
-
-</LinearLayout>
diff --git a/res/layout-land/alarm_clock.xml b/res/layout-land/alarm_clock.xml
deleted file mode 100644
index 5b51e537d..000000000
--- a/res/layout-land/alarm_clock.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/base_layout"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center_vertical">
-
- <FrameLayout
- android:id="@+id/clock_layout"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:layout_marginLeft="8dip"
- android:layout_marginRight="8dip"/>
-
- <ListView
- android:id="@+id/alarms_list"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
-
-</LinearLayout>
diff --git a/res/layout/alarm_alert.xml b/res/layout/alarm_alert.xml
deleted file mode 100644
index f18d4ad37..000000000
--- a/res/layout/alarm_alert.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/root"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center_horizontal"
- android:orientation="vertical">
-
- <LinearLayout
- android:id="@+id/clockView"
- android:layout_width="208dip"
- android:layout_height="wrap_content"
- android:gravity="center"/>
-
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingTop="4dp">
-
- <Button
- android:id="@+id/snooze"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingTop="16dp"
- android:paddingBottom="24dp"
- android:layout_weight="3"
- android:text="@string/alarm_alert_snooze_text" />
-
- <!-- blank stretchable view -->
- <View
- android:layout_width="2dip"
- android:layout_height="2dip"
- android:layout_gravity="fill_horizontal"
- android:layout_weight="1"/>
-
- <Button
- android:id="@+id/dismiss"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingTop="16dp"
- android:paddingBottom="24dp"
- android:layout_weight="3"
- android:text="@string/alarm_alert_dismiss_text" />
-
- </LinearLayout>
-
- <TextView android:id="@+id/silencedText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingTop="2dp"
- android:paddingBottom="2dp"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:visibility="gone"
- android:gravity="center"
- android:textColor="@color/red"/>
-
-</LinearLayout>
diff --git a/res/layout/alarm_clock.xml b/res/layout/alarm_clock.xml
deleted file mode 100644
index a0ca8e326..000000000
--- a/res/layout/alarm_clock.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/base_layout"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_marginTop="6dip"
- android:orientation="vertical">
-
- <LinearLayout
- android:id="@+id/clock_layout"
- android:layout_width="fill_parent"
- android:layout_height="208dip"
- android:layout_marginBottom="8dip"
- android:gravity="center"/>
-
- <ListView
- android:id="@+id/alarms_list"
- android:layout_width="fill_parent"
- android:layout_height="0dip"
- android:layout_weight="1.0" />
-
-</LinearLayout>
diff --git a/res/layout/alarm_time.xml b/res/layout/alarm_time.xml
deleted file mode 100644
index aae6ef219..000000000
--- a/res/layout/alarm_time.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<LinearLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content">
-
- <!-- A layout that displays the time. Shows time, am/pm (if 12-hour),
- and an optional line below, used for day/days of week -->
-
- <com.android.alarmclock.DigitalClock android:id="@+id/digitalClock"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:focusable="true"
- android:layout_weight="1"
- android:layout_gravity="center_vertical"
- android:orientation="vertical"
- android:paddingTop="4dp"
- android:paddingLeft="8dp"
- android:background="@android:drawable/menuitem_background">
-
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="left">
-
- <TextView android:id="@+id/timeDisplay"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:paddingTop="-4dp"
- android:paddingBottom="-4dp"
- android:textSize="28sp"
- android:gravity="left"
- android:textColor="@color/white"/>
-
- <LinearLayout android:id="@+id/am_pm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="4dp"
- android:orientation="vertical">
-
- <TextView android:id="@+id/am"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="3dp"
- android:text="@string/am"
- android:textSize="12sp"/>
- <TextView android:id="@+id/pm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="-4dp"
- android:text="@string/pm"
- android:textSize="12sp"/>
- </LinearLayout>
- </LinearLayout>
-
- <TextView android:id="@+id/daysOfWeek"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textSize="10sp"
- android:textColor="@color/ltgrey"
- android:layout_marginLeft="2dp"
- android:gravity="left"/>
-
- </com.android.alarmclock.DigitalClock>
-
- <CheckBox android:id="@+id/alarmButton"
- android:layout_width="60dp"
- android:layout_height="60dp"
- android:layout_gravity="center_vertical"/>
-
-</LinearLayout>
diff --git a/res/layout/analog_gadget.xml b/res/layout/analog_gadget.xml
deleted file mode 100644
index efa4789e9..000000000
--- a/res/layout/analog_gadget.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<AnalogClock xmlns:android="http://schemas.android.com/apk/res/android"
- android:dial="@drawable/gadget_clock_dial"
- android:hand_hour="@drawable/gadget_clock_hour"
- android:hand_minute="@drawable/gadget_clock_minute"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" />
diff --git a/res/layout/clock_basic_bw.xml b/res/layout/clock_basic_bw.xml
deleted file mode 100644
index b1593e97a..000000000
--- a/res/layout/clock_basic_bw.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<AnalogClock xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/clock"
- style="@style/analogClock"
- android:dial="@drawable/clock_dial"
- android:hand_hour="@drawable/clock_hour"
- android:hand_minute="@drawable/clock_minute"/>
diff --git a/res/layout/clock_droid2.xml b/res/layout/clock_droid2.xml
deleted file mode 100644
index 336efd358..000000000
--- a/res/layout/clock_droid2.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<AnalogClock xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/clock"
- style="@style/analogClock"
- android:dial="@drawable/clockdroid2_dial"
- android:hand_hour="@drawable/clockdroid2_hour"
- android:hand_minute="@drawable/clockdroid2_minute"/>
diff --git a/res/layout/clock_droids.xml b/res/layout/clock_droids.xml
deleted file mode 100644
index 9ec79b692..000000000
--- a/res/layout/clock_droids.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<AnalogClock xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/clock"
- style="@style/analogClock"
- android:dial="@drawable/clockdroids_dial"
- android:hand_hour="@drawable/clockdroids_hour"
- android:hand_minute="@drawable/clockdroids_minute"/>
diff --git a/res/layout/clock_googly.xml b/res/layout/clock_googly.xml
deleted file mode 100644
index cb09d85a0..000000000
--- a/res/layout/clock_googly.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<AnalogClock xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/clock"
- style="@style/analogClock"
- android:dial="@drawable/clockgoog_dial"
- android:hand_hour="@drawable/clockgoog_hour"
- android:hand_minute="@drawable/clockgoog_minute"/>
diff --git a/res/layout/clockpicker.xml b/res/layout/clockpicker.xml
deleted file mode 100644
index 2e2c3b9c7..000000000
--- a/res/layout/clockpicker.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
-
- <TextView
- android:id="@+id/instructions"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:padding="5dip"
- android:background="#70000000"
- android:text="@string/clock_instructions"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- />
- <LinearLayout
- android:id="@+id/clock_layout"
- android:layout_width="fill_parent"
- android:layout_below="@+id/instructions"
- android:layout_height="208dip"
- android:gravity="center"/>
-
- <Gallery android:id="@+id/gallery"
- android:background="#70000000"
- android:layout_width="fill_parent"
- android:layout_height="80dip"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:gravity="center_vertical"
- android:spacing="16dp"
- />
-
-</RelativeLayout>
-
diff --git a/res/layout/digital_clock.xml b/res/layout/digital_clock.xml
deleted file mode 100644
index 95d9f5ec9..000000000
--- a/res/layout/digital_clock.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<com.android.alarmclock.DigitalClock android:id="@+id/digitalClock"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="208dip"
- android:gravity="center">
-
- <!-- Includes vertical padding so animated background doesn't
- stretch much -->
- <TextView android:id="@+id/timeDisplay"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textSize="64sp"
- android:paddingRight="4dip"
- android:paddingTop="48dip"
- android:paddingBottom="48dip"
- android:textColor="@color/white"/>
-
- <LinearLayout android:id="@+id/am_pm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <TextView android:id="@+id/am"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="-7dp"
- android:text="@string/am"
- android:textSize="28sp"/>
- <TextView android:id="@+id/pm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="-4dp"
- android:text="@string/pm"
- android:textSize="28sp"/>
- </LinearLayout>
-</com.android.alarmclock.DigitalClock>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
deleted file mode 100644
index 3a26d52ac..000000000
--- a/res/values-cs/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"Budík"</string>
- <string name="add_alarm">"Přidat upozornění"</string>
- <string name="delete_alarm">"Smazat upozornění"</string>
- <string name="delete_alarm_confirm">"Toto upozornění bude odstraněno."</string>
- <string name="show_clock">"Zobrazit hodiny"</string>
- <string name="hide_clock">"Skrýt hodiny"</string>
- <string name="set_alarm">"Nastavit upozornění"</string>
- <string name="enable">"Zapnout upozornění"</string>
- <string name="alarm_vibrate">"Vibrace"</string>
- <string name="alarm_repeat">"Opakovat"</string>
- <string name="alert">"Vyzváněcí tón"</string>
- <string name="time">"Čas"</string>
- <string name="alert_title">"Upozornění"</string>
- <string name="alarm_alert_dismiss_text">"Zavřít"</string>
- <string name="alarm_alert_alert_silenced">"Upozornění ztišeno po uplynutí <xliff:g id="MINUTES">%d</xliff:g> min."</string>
- <string name="alarm_alert_snooze_text">"Odložit"</string>
- <string name="alarm_alert_snooze_set">"Upozornění odloženo o <xliff:g id="MINUTES">%d</xliff:g> min."</string>
- <string name="alarm_alert_snooze_not_set">"Upozornění nebylo odloženo – další upozornění v <xliff:g id="TIME">%s</xliff:g>."</string>
- <string name="alarm_set">"Toto upozornění bude aktivováno za: <xliff:g id="TIME_DELTA">%s</xliff:g>."</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 den"</string>
- <string name="days">"dní: <xliff:g id="DAYS">%s</xliff:g>"</string>
- <string name="hour">"1 hodina"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> hod."</string>
- <string name="and">"a"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"méně než 1 minuta"</string>
- <string name="minute">"1 minuta"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> min"</string>
- <string name="am">"dop."</string>
- <string name="pm">"odp."</string>
- <string name="every_day">"Každý den"</string>
- <string name="never">"Nikdy"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"Vyberte hodiny, které mají být zobrazeny."</string>
- <string name="error">"Upozornění není nastaveno"</string>
- <string name="dberror">"Upozornění bohužel nelze nastavit."</string>
- <string name="analog_gadget">"Analogové hodiny"</string>
- <string-array name="days_of_week">
- <item>"Pondělí"</item>
- <item>"Úterý"</item>
- <item>"Středa"</item>
- <item>"Čtvrtek"</item>
- <item>"Pátek"</item>
- <item>"Sobota"</item>
- <item>"Neděle"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"Po"</item>
- <item>"Út"</item>
- <item>"St"</item>
- <item>"Čt"</item>
- <item>"Pá"</item>
- <item>"So"</item>
- <item>"Ne"</item>
- </string-array>
-</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
deleted file mode 100644
index 6ab682be3..000000000
--- a/res/values-de/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"Wecker"</string>
- <string name="add_alarm">"Wecker hinzufügen"</string>
- <string name="delete_alarm">"Wecker löschen"</string>
- <string name="delete_alarm_confirm">"Dieser Alarm wird gelöscht."</string>
- <string name="show_clock">"Uhr anzeigen"</string>
- <string name="hide_clock">"Uhr ausblenden"</string>
- <string name="set_alarm">"Wecker einstellen"</string>
- <string name="enable">"Wecker aktivieren"</string>
- <string name="alarm_vibrate">"Vibrieren"</string>
- <string name="alarm_repeat">"Wiederholen"</string>
- <string name="alert">"Klingelton"</string>
- <string name="time">"Uhrzeit"</string>
- <string name="alert_title">"Wecker"</string>
- <string name="alarm_alert_dismiss_text">"Verwerfen"</string>
- <string name="alarm_alert_alert_silenced">"Der Wecker verstummte nach <xliff:g id="MINUTES">%d</xliff:g> Minuten"</string>
- <string name="alarm_alert_snooze_text">"Snooze-Funktion"</string>
- <string name="alarm_alert_snooze_set">"Snooze-Funktion aktiviert für <xliff:g id="MINUTES">%d</xliff:g> Minuten"</string>
- <string name="alarm_alert_snooze_not_set">"Snooze-Funktion nicht aktiviert - nächster Wecker klingelt <xliff:g id="TIME">%s</xliff:g>."</string>
- <string name="alarm_set">"Dieser Wecker klingelt in <xliff:g id="TIME_DELTA">%s</xliff:g>."</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 Tag"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> Tagen"</string>
- <string name="hour">"1 Stunde"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> Stunden"</string>
- <string name="and">"und"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"weniger als 1 Minute"</string>
- <string name="minute">"1 Minute"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> Minuten"</string>
- <string name="am">"AM"</string>
- <string name="pm">"PM"</string>
- <string name="every_day">"Täglich"</string>
- <string name="never">"Nie"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"Wählen Sie die anzuzeigende Uhr aus."</string>
- <string name="error">"Wecker nicht eingestellt"</string>
- <string name="dberror">"Der Wecker konnte nicht eingestellt werden."</string>
- <string name="analog_gadget">"Analoguhr"</string>
- <string-array name="days_of_week">
- <item>"Montag"</item>
- <item>"Dienstag"</item>
- <item>"Mittwoch"</item>
- <item>"Donnerstag"</item>
- <item>"Freitag"</item>
- <item>"Samstag"</item>
- <item>"Sonntag"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"Mo"</item>
- <item>"Di"</item>
- <item>"Mi"</item>
- <item>"Do"</item>
- <item>"Fr"</item>
- <item>"Sa"</item>
- <item>"So"</item>
- </string-array>
-</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
deleted file mode 100644
index 9027850f8..000000000
--- a/res/values-es/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"Reloj de alarma"</string>
- <string name="add_alarm">"Añadir alarma"</string>
- <string name="delete_alarm">"Eliminar alarma"</string>
- <string name="delete_alarm_confirm">"Esta alarma se eliminará."</string>
- <string name="show_clock">"Mostrar reloj"</string>
- <string name="hide_clock">"Ocultar reloj"</string>
- <string name="set_alarm">"Establecer alarma"</string>
- <string name="enable">"Activar alarma"</string>
- <string name="alarm_vibrate">"Vibración"</string>
- <string name="alarm_repeat">"Repetir"</string>
- <string name="alert">"Tono"</string>
- <string name="time">"Hora"</string>
- <string name="alert_title">"Alarma"</string>
- <string name="alarm_alert_dismiss_text">"Descartar"</string>
- <string name="alarm_alert_alert_silenced">"La alarma se ha silenciado después de <xliff:g id="MINUTES">%d</xliff:g> minutos."</string>
- <string name="alarm_alert_snooze_text">"Posponer"</string>
- <string name="alarm_alert_snooze_set">"La alarma volverá a sonar en <xliff:g id="MINUTES">%d</xliff:g> minutos."</string>
- <string name="alarm_alert_snooze_not_set">"No se ha pospuesto la alarma, ya que la siguiente alarma sonará a las <xliff:g id="TIME">%s</xliff:g>."</string>
- <string name="alarm_set">"La alarma sonará en <xliff:g id="TIME_DELTA">%s</xliff:g> minutos."</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 día"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> días"</string>
- <string name="hour">"1 hora"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> horas"</string>
- <string name="and">"y"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"menos de 1 minuto"</string>
- <string name="minute">"1 minuto"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> minutos"</string>
- <string name="am">"a.m."</string>
- <string name="pm">"p.m."</string>
- <string name="every_day">"todos los días"</string>
- <string name="never">"Nunca"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"Selecciona el reloj que quieras ver."</string>
- <string name="error">"Alarma no establecida"</string>
- <string name="dberror">"No se ha podido establecer la alarma."</string>
- <string name="analog_gadget">"Reloj analógico"</string>
- <string-array name="days_of_week">
- <item>"Lunes"</item>
- <item>"Martes"</item>
- <item>"Miércoles"</item>
- <item>"Jueves"</item>
- <item>"Viernes"</item>
- <item>"Sábado"</item>
- <item>"Domingo"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"Lun."</item>
- <item>"Mar."</item>
- <item>"Mié."</item>
- <item>"Jue."</item>
- <item>"Vie."</item>
- <item>"Sáb."</item>
- <item>"Dom."</item>
- </string-array>
-</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
deleted file mode 100644
index 97125cccf..000000000
--- a/res/values-fr/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"Réveil"</string>
- <string name="add_alarm">"Ajouter alarme"</string>
- <string name="delete_alarm">"Désactiver alarme"</string>
- <string name="delete_alarm_confirm">"Cette alarme va être supprimée."</string>
- <string name="show_clock">"Afficher horloge"</string>
- <string name="hide_clock">"Masquer horloge"</string>
- <string name="set_alarm">"Régler alarme"</string>
- <string name="enable">"Activer l\'alarme"</string>
- <string name="alarm_vibrate">"Vibreur"</string>
- <string name="alarm_repeat">"Répéter"</string>
- <string name="alert">"Sonnerie"</string>
- <string name="time">"Heure"</string>
- <string name="alert_title">"Alarme"</string>
- <string name="alarm_alert_dismiss_text">"Quitter"</string>
- <string name="alarm_alert_alert_silenced">"Alarme interrompue après <xliff:g id="MINUTES">%d</xliff:g> minutes"</string>
- <string name="alarm_alert_snooze_text">"Répéter"</string>
- <string name="alarm_alert_snooze_set">"Répétition dans <xliff:g id="MINUTES">%d</xliff:g> minutes."</string>
- <string name="alarm_alert_snooze_not_set">"Répétition non activée -- prochaine alarme à <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="alarm_set">"Durée avant prochaine alarme : <xliff:g id="TIME_DELTA">%s</xliff:g>."</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 jour"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> jours"</string>
- <string name="hour">"1 heure"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> heures"</string>
- <string name="and">"et"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"moins d\'1 minute"</string>
- <string name="minute">"1 minute"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> minutes"</string>
- <string name="am">"AM"</string>
- <string name="pm">"PM"</string>
- <string name="every_day">"tous les jours"</string>
- <string name="never">"Jamais"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"Sélectionner une horloge à afficher."</string>
- <string name="error">"Alarme non activée"</string>
- <string name="dberror">"Désolé, impossible de régler l\'alarme."</string>
- <string name="analog_gadget">"Horloge analogique"</string>
- <string-array name="days_of_week">
- <item>"Lundi"</item>
- <item>"Mardi"</item>
- <item>"Mercredi"</item>
- <item>"Jeudi"</item>
- <item>"Vendredi"</item>
- <item>"Samedi"</item>
- <item>"Dimanche"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"Lun."</item>
- <item>"Mar."</item>
- <item>"Mer."</item>
- <item>"Jeu."</item>
- <item>"Ven."</item>
- <item>"Sam."</item>
- <item>"Dim."</item>
- </string-array>
-</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
deleted file mode 100644
index c3c1d1657..000000000
--- a/res/values-it/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"Sveglia"</string>
- <string name="add_alarm">"Aggiungi allarme"</string>
- <string name="delete_alarm">"Elimina allarme"</string>
- <string name="delete_alarm_confirm">"Questa sveglia verrà eliminata."</string>
- <string name="show_clock">"Mostra orologio"</string>
- <string name="hide_clock">"Nascondi orologio"</string>
- <string name="set_alarm">"Imposta allarme"</string>
- <string name="enable">"Attiva allarme"</string>
- <string name="alarm_vibrate">"Vibrazione"</string>
- <string name="alarm_repeat">"Ripeti"</string>
- <string name="alert">"Suoneria"</string>
- <string name="time">"Ora"</string>
- <string name="alert_title">"Allarme"</string>
- <string name="alarm_alert_dismiss_text">"Chiudi"</string>
- <string name="alarm_alert_alert_silenced">"Tono allarme disattivato dopo <xliff:g id="MINUTES">%d</xliff:g> minuti"</string>
- <string name="alarm_alert_snooze_text">"Posponi"</string>
- <string name="alarm_alert_snooze_set">"Sospensione per <xliff:g id="MINUTES">%d</xliff:g> minuti."</string>
- <string name="alarm_alert_snooze_not_set">"Sospensione non impostata. Prossimo allarme alle <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="alarm_set">"L\'allarme sarà attivato fra <xliff:g id="TIME_DELTA">%s</xliff:g>."</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 giorno"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> giorni"</string>
- <string name="hour">"1 ora"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> ore"</string>
- <string name="and">"e"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"meno di 1 minuto"</string>
- <string name="minute">"1 minuto"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> minuti"</string>
- <string name="am">"am"</string>
- <string name="pm">"pm"</string>
- <string name="every_day">"Ogni giorno"</string>
- <string name="never">"Mai"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"Seleziona un orologio."</string>
- <string name="error">"Allarme non impostato"</string>
- <string name="dberror">"Spiacenti. Impossibile impostare l\'allarme."</string>
- <string name="analog_gadget">"Orologio analogico"</string>
- <string-array name="days_of_week">
- <item>"Lunedì"</item>
- <item>"Martedì"</item>
- <item>"Mercoledì"</item>
- <item>"Giovedì"</item>
- <item>"Venerdì"</item>
- <item>"Sabato"</item>
- <item>"Domenica"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"Lun"</item>
- <item>"Mar"</item>
- <item>"Mer"</item>
- <item>"Gio"</item>
- <item>"Ven"</item>
- <item>"Sab"</item>
- <item>"Dom"</item>
- </string-array>
-</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
deleted file mode 100644
index 9bc53ff82..000000000
--- a/res/values-ja/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"アラーム"</string>
- <string name="add_alarm">"アラームの設定"</string>
- <string name="delete_alarm">"アラームを削除"</string>
- <string name="delete_alarm_confirm">"このアラームを削除します。"</string>
- <string name="show_clock">"時計を表示"</string>
- <string name="hide_clock">"時計を隠す"</string>
- <string name="set_alarm">"アラームの設定"</string>
- <string name="enable">"アラームをONにする"</string>
- <string name="alarm_vibrate">"バイブレーション"</string>
- <string name="alarm_repeat">"繰り返し"</string>
- <string name="alert">"アラーム音"</string>
- <string name="time">"時刻"</string>
- <string name="alert_title">"アラーム"</string>
- <string name="alarm_alert_dismiss_text">"停止"</string>
- <string name="alarm_alert_alert_silenced">"アラームは<xliff:g id="MINUTES">%d</xliff:g>分間鳴って止まりました"</string>
- <string name="alarm_alert_snooze_text">"スヌーズ"</string>
- <string name="alarm_alert_snooze_set">"<xliff:g id="MINUTES">%d</xliff:g>分間スヌーズ"</string>
- <string name="alarm_alert_snooze_not_set">"スヌーズ設定エラー: <xliff:g id="TIME">%s</xliff:g>に次のアラームがセットされています"</string>
- <string name="alarm_set">"<xliff:g id="TIME_DELTA">%s</xliff:g>後にセットしました"</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1日"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g>日"</string>
- <string name="hour">"1時間"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g>時間"</string>
- <string name="and">"と"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"1分未満"</string>
- <string name="minute">"1分"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g>分"</string>
- <string name="am">"AM"</string>
- <string name="pm">"PM"</string>
- <string name="every_day">"毎日"</string>
- <string name="never">"繰り返しなし"</string>
- <string name="day_concat">"、"</string>
- <string name="clock_instructions">"表示する時計を選択してください。"</string>
- <string name="error">"アラームを設定できません"</string>
- <string name="dberror">"アラームを設定できません"</string>
- <string name="analog_gadget">"アナログ時計"</string>
- <string-array name="days_of_week">
- <item>"月曜日"</item>
- <item>"火曜日"</item>
- <item>"水曜日"</item>
- <item>"木曜日"</item>
- <item>"金曜日"</item>
- <item>"土曜日"</item>
- <item>"日曜日"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"(月)"</item>
- <item>"(火)"</item>
- <item>"(水)"</item>
- <item>"(木)"</item>
- <item>"(金)"</item>
- <item>"(土)"</item>
- <item>"(日)"</item>
- </string-array>
-</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
deleted file mode 100644
index 036e5a3bf..000000000
--- a/res/values-ko/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"알람 시계"</string>
- <string name="add_alarm">"알람 추가"</string>
- <string name="delete_alarm">"알람 삭제"</string>
- <string name="delete_alarm_confirm">"알람이 삭제됩니다."</string>
- <string name="show_clock">"시계 표시"</string>
- <string name="hide_clock">"시계 숨기기"</string>
- <string name="set_alarm">"알람 설정"</string>
- <string name="enable">"알람 켜기"</string>
- <string name="alarm_vibrate">"진동"</string>
- <string name="alarm_repeat">"반복"</string>
- <string name="alert">"벨소리"</string>
- <string name="time">"시간"</string>
- <string name="alert_title">"알람"</string>
- <string name="alarm_alert_dismiss_text">"해제"</string>
- <string name="alarm_alert_alert_silenced">"<xliff:g id="MINUTES">%d</xliff:g>분 후에 알람이 꺼집니다."</string>
- <string name="alarm_alert_snooze_text">"스누즈"</string>
- <string name="alarm_alert_snooze_set">"<xliff:g id="MINUTES">%d</xliff:g>분 동안 스누즈"</string>
- <string name="alarm_alert_snooze_not_set">"스누즈 설정되지 않음. <xliff:g id="TIME">%s</xliff:g>에 다음 알람이 설정되어 있음."</string>
- <string name="alarm_set">"이 알람은 지금부터 <xliff:g id="TIME_DELTA">%s</xliff:g> 동안 설정됩니다."</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1일"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g>일"</string>
- <string name="hour">"1시간"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g>시간"</string>
- <string name="and">"및"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"1분 미만"</string>
- <string name="minute">"1분"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g>분"</string>
- <string name="am">"am"</string>
- <string name="pm">"pm"</string>
- <string name="every_day">"매일"</string>
- <string name="never">"안 함"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"표시할 시계를 선택하세요."</string>
- <string name="error">"알람이 설정되지 않음"</string>
- <string name="dberror">"죄송합니다. 알람을 설정할 수 없습니다."</string>
- <string name="analog_gadget">"아날로그 시계"</string>
- <string-array name="days_of_week">
- <item>"월요일"</item>
- <item>"화요일"</item>
- <item>"수요일"</item>
- <item>"목요일"</item>
- <item>"금요일"</item>
- <item>"토요일"</item>
- <item>"일요일"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"월"</item>
- <item>"화"</item>
- <item>"수"</item>
- <item>"목"</item>
- <item>"금"</item>
- <item>"토"</item>
- <item>"일"</item>
- </string-array>
-</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
deleted file mode 100644
index ca5ae66d4..000000000
--- a/res/values-nb/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"Alarm"</string>
- <string name="add_alarm">"Legg til alarm"</string>
- <string name="delete_alarm">"Slett alarm"</string>
- <string name="delete_alarm_confirm">"Denne alarmen vil bli slettet."</string>
- <string name="show_clock">"Vis klokke"</string>
- <string name="hide_clock">"Fjern klokke"</string>
- <string name="set_alarm">"Sett alarm"</string>
- <string name="enable">"Slå på alarm"</string>
- <string name="alarm_vibrate">"Vibrer"</string>
- <string name="alarm_repeat">"Gjenta"</string>
- <string name="alert">"Ringetone"</string>
- <string name="time">"Tidspunkt"</string>
- <string name="alert_title">"Alarm"</string>
- <string name="alarm_alert_dismiss_text">"OK"</string>
- <string name="alarm_alert_alert_silenced">"Alarmen ble stilnet etter <xliff:g id="MINUTES">%d</xliff:g> minutter"</string>
- <string name="alarm_alert_snooze_text">"Slumre"</string>
- <string name="alarm_alert_snooze_set">"Slumrer i <xliff:g id="MINUTES">%d</xliff:g> minutter."</string>
- <string name="alarm_alert_snooze_not_set">"Slumrer ikke -- neste alarm vil gå av <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="alarm_set">"Alarmen vil gå av <xliff:g id="TIME_DELTA">%s</xliff:g> fra nå."</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"en dag"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> dager"</string>
- <string name="hour">"en time"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> timer"</string>
- <string name="and">"og"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"mindre enn et minutt"</string>
- <string name="minute">"et minutt"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> minutter"</string>
- <string name="am">"am"</string>
- <string name="pm">"pm"</string>
- <string name="every_day">"hver dag"</string>
- <string name="never">"Aldri"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"Velg klokken som skal vises."</string>
- <string name="error">"Alarmen ble ikke satt"</string>
- <string name="dberror">"Beklager, kunne ikke sette alarmen."</string>
- <string name="analog_gadget">"Analog klokke"</string>
- <string-array name="days_of_week">
- <item>"Mandag"</item>
- <item>"Tirsdag"</item>
- <item>"Onsdag"</item>
- <item>"Torsdag"</item>
- <item>"Fredag"</item>
- <item>"Lørdag"</item>
- <item>"Søndag"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"man"</item>
- <item>"tir"</item>
- <item>"ons"</item>
- <item>"tor"</item>
- <item>"fre"</item>
- <item>"lør"</item>
- <item>"søn"</item>
- </string-array>
-</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
deleted file mode 100644
index a98c030a6..000000000
--- a/res/values-nl/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"Wekker"</string>
- <string name="add_alarm">"Alarm toevoegen"</string>
- <string name="delete_alarm">"Alarm verwijderen"</string>
- <string name="delete_alarm_confirm">"Dit alarm wordt verwijderd."</string>
- <string name="show_clock">"Klok weergeven"</string>
- <string name="hide_clock">"Klok verbergen"</string>
- <string name="set_alarm">"Alarm instellen"</string>
- <string name="enable">"Alarm inschakelen"</string>
- <string name="alarm_vibrate">"Trillen"</string>
- <string name="alarm_repeat">"Herhalen"</string>
- <string name="alert">"Beltoon"</string>
- <string name="time">"Tijd"</string>
- <string name="alert_title">"Alarm"</string>
- <string name="alarm_alert_dismiss_text">"Negeren"</string>
- <string name="alarm_alert_alert_silenced">"Alarm gaat uit na <xliff:g id="MINUTES">%d</xliff:g> minuten"</string>
- <string name="alarm_alert_snooze_text">"Snooze"</string>
- <string name="alarm_alert_snooze_set">"Snooze is ingesteld op <xliff:g id="MINUTES">%d</xliff:g> minuten."</string>
- <string name="alarm_alert_snooze_not_set">"Snooze is niet ingesteld - volgende alarm is ingesteld op <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="alarm_set">"Dit alarm is ingesteld op <xliff:g id="TIME_DELTA">%s</xliff:g> vanaf nu."</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 dag"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> dagen"</string>
- <string name="hour">"1 uur"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> uur"</string>
- <string name="and">"en"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"minder dan 1 minuut"</string>
- <string name="minute">"1 minuut"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> minuten"</string>
- <string name="am">"am"</string>
- <string name="pm">"pm"</string>
- <string name="every_day">"elke dag"</string>
- <string name="never">"Nooit"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"Selecteer een klok die u wilt weergeven."</string>
- <string name="error">"Alarm is niet ingesteld"</string>
- <string name="dberror">"Het alarm kan niet worden ingesteld."</string>
- <string name="analog_gadget">"Analoge klok"</string>
- <string-array name="days_of_week">
- <item>"Maandag"</item>
- <item>"Dinsdag"</item>
- <item>"Woensdag"</item>
- <item>"Donderdag"</item>
- <item>"Vrijdag"</item>
- <item>"Zaterdag"</item>
- <item>"Zondag"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"Ma"</item>
- <item>"Di"</item>
- <item>"Wo"</item>
- <item>"Do"</item>
- <item>"Vr"</item>
- <item>"Za"</item>
- <item>"Zo"</item>
- </string-array>
-</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
deleted file mode 100644
index 60254cb9e..000000000
--- a/res/values-pl/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"Budzik"</string>
- <string name="add_alarm">"Dodaj alarm"</string>
- <string name="delete_alarm">"Usuń alarm"</string>
- <string name="delete_alarm_confirm">"Ten zegar zostanie usunięty."</string>
- <string name="show_clock">"Pokaż zegar"</string>
- <string name="hide_clock">"Ukryj zegar"</string>
- <string name="set_alarm">"Ustaw alarm"</string>
- <string name="enable">"Włącz alarm"</string>
- <string name="alarm_vibrate">"Wibracje"</string>
- <string name="alarm_repeat">"Powtarzanie"</string>
- <string name="alert">"Dzwonek"</string>
- <string name="time">"Godzina"</string>
- <string name="alert_title">"Alarm"</string>
- <string name="alarm_alert_dismiss_text">"Odrzuć"</string>
- <string name="alarm_alert_alert_silenced">"Alarm jest wyciszany po <xliff:g id="MINUTES">%d</xliff:g> min."</string>
- <string name="alarm_alert_snooze_text">"Drzemka"</string>
- <string name="alarm_alert_snooze_set">"Drzemka przez <xliff:g id="MINUTES">%d</xliff:g> min."</string>
- <string name="alarm_alert_snooze_not_set">"Nie ustawiono drzemki — następny alarm: <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="alarm_set">"Ustawiony alarm odezwie się za <xliff:g id="TIME_DELTA">%s</xliff:g>"</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 dzień"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> dni"</string>
- <string name="hour">"1 godz."</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> godz."</string>
- <string name="and">"oraz"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"mniej niż 1 min"</string>
- <string name="minute">"1 min"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> min"</string>
- <string name="am">"AM"</string>
- <string name="pm">"PM"</string>
- <string name="every_day">"codziennie"</string>
- <string name="never">"Nigdy"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"Wybierz wyświetlany zegar."</string>
- <string name="error">"Alarm nieustawiony"</string>
- <string name="dberror">"Niestety, nie można ustawić alarmu."</string>
- <string name="analog_gadget">"Zegar analogowy"</string>
- <string-array name="days_of_week">
- <item>"Poniedziałek"</item>
- <item>"Wtorek"</item>
- <item>"Środa"</item>
- <item>"Czwartek"</item>
- <item>"Piątek"</item>
- <item>"Sobota"</item>
- <item>"Niedziela"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"Pn"</item>
- <item>"Wt"</item>
- <item>"Śr"</item>
- <item>"Cz"</item>
- <item>"Pt"</item>
- <item>"So"</item>
- <item>"Ndz"</item>
- </string-array>
-</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
deleted file mode 100644
index 8bae5a179..000000000
--- a/res/values-ru/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"Будильник"</string>
- <string name="add_alarm">"Добавить будильник"</string>
- <string name="delete_alarm">"Удалить будильник"</string>
- <string name="delete_alarm_confirm">"Сигнал будет удален."</string>
- <string name="show_clock">"Показать часы"</string>
- <string name="hide_clock">"Скрыть часы"</string>
- <string name="set_alarm">"Установить будильник"</string>
- <string name="enable">"Включить будильник"</string>
- <string name="alarm_vibrate">"Вибрация"</string>
- <string name="alarm_repeat">"Повтор"</string>
- <string name="alert">"Мелодия звонка"</string>
- <string name="time">"Время"</string>
- <string name="alert_title">"Будильник"</string>
- <string name="alarm_alert_dismiss_text">"Закрыть"</string>
- <string name="alarm_alert_alert_silenced">"Будильник отключается через <xliff:g id="MINUTES">%d</xliff:g> минут(ы)"</string>
- <string name="alarm_alert_snooze_text">"Отсрочка"</string>
- <string name="alarm_alert_snooze_set">"Отсрочка на <xliff:g id="MINUTES">%d</xliff:g> минут(ы)."</string>
- <string name="alarm_alert_snooze_not_set">"Отсрочка не установлена – следующий будильник установлен на <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="alarm_set">"Будильник прозвонит через <xliff:g id="TIME_DELTA">%s</xliff:g>"</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 день"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> дня(ей)"</string>
- <string name="hour">"1 час"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> часа(ов)"</string>
- <string name="and">"и"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"менее 1 минуты"</string>
- <string name="minute">"1 минута"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> минут(ы)"</string>
- <string name="am">"до полудня"</string>
- <string name="pm">"после полудня"</string>
- <string name="every_day">"ежедневно"</string>
- <string name="never">"Никогда"</string>
- <string name="day_concat">","</string>
- <string name="clock_instructions">"Выберите часы для отображения"</string>
- <string name="error">"Будильник не установлен"</string>
- <string name="dberror">"К сожалению, установить будильник не удалось."</string>
- <string name="analog_gadget">"Часы со стрелками"</string>
- <string-array name="days_of_week">
- <item>"Понедельник"</item>
- <item>"Вторник"</item>
- <item>"Среда"</item>
- <item>"Четверг"</item>
- <item>"Пятница"</item>
- <item>"Суббота"</item>
- <item>"Воскресенье"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"Пн"</item>
- <item>"Вт"</item>
- <item>"Ср"</item>
- <item>"Чт"</item>
- <item>"Пт"</item>
- <item>"Сб"</item>
- <item>"Вс"</item>
- </string-array>
-</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
deleted file mode 100644
index 3c1ae8d50..000000000
--- a/res/values-zh-rCN/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"闹钟时钟"</string>
- <string name="add_alarm">"添加闹钟"</string>
- <string name="delete_alarm">"取消闹钟"</string>
- <string name="delete_alarm_confirm">"将会删除此警报。"</string>
- <string name="show_clock">"显示时钟"</string>
- <string name="hide_clock">"隐藏时钟"</string>
- <string name="set_alarm">"设置闹钟"</string>
- <string name="enable">"开启闹钟"</string>
- <string name="alarm_vibrate">"振动"</string>
- <string name="alarm_repeat">"重复"</string>
- <string name="alert">"铃声"</string>
- <string name="time">"时间"</string>
- <string name="alert_title">"闹钟"</string>
- <string name="alarm_alert_dismiss_text">"取消"</string>
- <string name="alarm_alert_alert_silenced">"闹钟在 <xliff:g id="MINUTES">%d</xliff:g> 分钟后静音"</string>
- <string name="alarm_alert_snooze_text">"再响"</string>
- <string name="alarm_alert_snooze_set">"<xliff:g id="MINUTES">%d</xliff:g> 分钟后再响。"</string>
- <string name="alarm_alert_snooze_not_set">"未设置再响 - 下次闹钟设置在 <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="alarm_set">"该闹钟设置为从现在起 <xliff:g id="TIME_DELTA">%s</xliff:g> 后再提醒。"</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 天"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> 天"</string>
- <string name="hour">"1 小时"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> 小时"</string>
- <string name="and">"和"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"短于 1 分钟"</string>
- <string name="minute">"1 分钟"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> 分钟"</string>
- <string name="am">"上午"</string>
- <string name="pm">"下午"</string>
- <string name="every_day">"每天"</string>
- <string name="never">"永不"</string>
- <string name="day_concat">"、"</string>
- <string name="clock_instructions">"选择要显示的时钟。"</string>
- <string name="error">"未设置闹钟"</string>
- <string name="dberror">"抱歉,无法设置该闹钟。"</string>
- <string name="analog_gadget">"模拟时钟"</string>
- <string-array name="days_of_week">
- <item>"周一"</item>
- <item>"周二"</item>
- <item>"周三"</item>
- <item>"周四"</item>
- <item>"周五"</item>
- <item>"周六"</item>
- <item>"周日"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"周一"</item>
- <item>"周二"</item>
- <item>"周三"</item>
- <item>"周四"</item>
- <item>"周五"</item>
- <item>"周六"</item>
- <item>"周日"</item>
- </string-array>
-</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
deleted file mode 100644
index 8757f61d2..000000000
--- a/res/values-zh-rTW/strings.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label">"鬧鐘"</string>
- <string name="add_alarm">"新增鬧鐘"</string>
- <string name="delete_alarm">"刪除鬧鐘"</string>
- <string name="delete_alarm_confirm">"將刪除此鬧鐘。"</string>
- <string name="show_clock">"顯示時鐘"</string>
- <string name="hide_clock">"隱藏時鐘"</string>
- <string name="set_alarm">"設定鬧鐘"</string>
- <string name="enable">"開啟鬧鐘"</string>
- <string name="alarm_vibrate">"震動"</string>
- <string name="alarm_repeat">"重複"</string>
- <string name="alert">"鈴聲"</string>
- <string name="time">"時間"</string>
- <string name="alert_title">"鬧鐘"</string>
- <string name="alarm_alert_dismiss_text">"關閉"</string>
- <string name="alarm_alert_alert_silenced">"鬧鐘 <xliff:g id="MINUTES">%d</xliff:g> 分鐘後靜音"</string>
- <string name="alarm_alert_snooze_text">"貪睡"</string>
- <string name="alarm_alert_snooze_set">"再貪睡 <xliff:g id="MINUTES">%d</xliff:g> 分鐘。"</string>
- <string name="alarm_alert_snooze_not_set">"未設定貪睡鬧鐘 -- 下一次鬧鐘時間為 <xliff:g id="TIME">%s</xliff:g>"</string>
- <string name="alarm_set">"還有 <xliff:g id="TIME_DELTA">%s</xliff:g> 會啟動鬧鐘。"</string>
- <!-- no translation found for combiner (2146732837172099134) -->
- <skip />
- <string name="day">"1 天"</string>
- <string name="days">"<xliff:g id="DAYS">%s</xliff:g> 天"</string>
- <string name="hour">"1 小時"</string>
- <string name="hours">"<xliff:g id="HOURS">%s</xliff:g> 小時"</string>
- <string name="and">"又"</string>
- <!-- no translation found for space (9141227650891547547) -->
- <skip />
- <string name="subminute">"少於 1 分鐘"</string>
- <string name="minute">"1 分鐘"</string>
- <string name="minutes">"<xliff:g id="MINUTES">%s</xliff:g> 分鐘"</string>
- <string name="am">"am"</string>
- <string name="pm">"pm"</string>
- <string name="every_day">"每天"</string>
- <string name="never">"從不"</string>
- <string name="day_concat">"、"</string>
- <string name="clock_instructions">"選取顯示的時鐘。"</string>
- <string name="error">"鬧鐘未設定"</string>
- <string name="dberror">"抱歉,無法設定鬧鐘。"</string>
- <string name="analog_gadget">"類比時鐘"</string>
- <string-array name="days_of_week">
- <item>"星期一"</item>
- <item>"星期二"</item>
- <item>"星期三"</item>
- <item>"星期四"</item>
- <item>"星期五"</item>
- <item>"星期六"</item>
- <item>"星期日"</item>
- </string-array>
- <string-array name="days_of_week_short">
- <item>"週一"</item>
- <item>"週二"</item>
- <item>"週三"</item>
- <item>"週四"</item>
- <item>"週五"</item>
- <item>"週六"</item>
- <item>"週日"</item>
- </string-array>
-</resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
deleted file mode 100644
index e61b6c35e..000000000
--- a/res/values/colors.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<resources>
- <color name="ampm_off">#ff404040</color>
- <color name="ampm_on">#ffffffff</color>
-
- <color name="white">#ffffffff</color>
- <color name="red">#ffee0000</color>
- <color name="ltgrey">#ffe0e0e0</color>
-</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
deleted file mode 100644
index 30b8fe2e1..000000000
--- a/res/values/strings.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2007 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.
--->
-
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- -->
- <!-- Label shown on launcher icon -->
- <string name="app_label">Alarm Clock</string>
-
- <!-- Menu item on Alarm Clock screen: Add alarm -->
- <string name="add_alarm">Add alarm</string>
-
- <!-- Context Menu Item on Alarm Settings screen: Delete alarm -->
- <string name="delete_alarm">Delete alarm</string>
-
- <!-- Delete alarm confirmation dialog message. -->
- <string name="delete_alarm_confirm">This alarm will be deleted.</string>
-
- <!-- Menu item on Alarm Clock screen: Show clock -->
- <string name="show_clock">Show clock</string>
-
- <!-- Menu item on Alarm Clock screen: Hide clock -->
- <string name="hide_clock">Hide clock</string>
-
- <!-- Preference category on Alarm Settings screen: Set alarm -->
- <string name="set_alarm">Set alarm</string>
-
- <!-- Setting labels on Set alarm screen: Enable alarm -->
- <string name="enable">Turn on alarm</string>
-
- <!-- Setting labels on Set alarm screen: Vibration on or off -->
- <string name="alarm_vibrate">Vibrate</string>
-
- <!-- Setting labels on Set alarm screen: Repeat -->
- <string name="alarm_repeat">Repeat</string>
-
- <!-- Setting labels on Set alarm screen: Select alarm ringtone -->
- <string name="alert">Ringtone</string>
-
- <!-- Setting labels on Set alarm screen: Set time -->
- <string name="time">Time</string>
-
-
- <!-- Title of the alarm alert -->
- <string name="alert_title">Alarm</string>
-
- <!-- Button labels on the alarm dialog: Dismiss -->
- <string name="alarm_alert_dismiss_text">Dismiss</string>
-
- <!-- Alarm Alert screen: this message is shown after an alarm rung
- unattended for a number of minutes. It tells the user that
- the alarm has been silenced.-->
- <string name="alarm_alert_alert_silenced">Alarm silenced after <xliff:g id="minutes">%d</xliff:g> minutes</string>
-
- <!-- Button labels on the alarm dialog: Snooze -->
- <string name="alarm_alert_snooze_text">Snooze</string>
-
- <!-- Toast that appears after Alarm is snoozed from the Alarm
- dialog. Says the alarm will snooze for xxx minutes. -->
- <string name="alarm_alert_snooze_set">Snoozing for <xliff:g id="minutes">%d</xliff:g> minutes.</string>
-
- <!-- Toast that appears after Alarm is snoozed from the Alarm
- dialog. Shown if snooze cannot be set because the next alarm
- would fire before the snooze alrm. "Snooze not set - next
- alarm set for xxx." -->
- <string name="alarm_alert_snooze_not_set">Snooze not set -- next alarm set for <xliff:g id="time">%s</xliff:g></string>
-
-
- <!-- Alarm confirmation toast: Describes how long from now until
- alarm fires -->
- <string name="alarm_set">This alarm is set for <xliff:g id="time_delta">%s</xliff:g> from now.</string>
-
- <!-- Alarm confirmation toast: A combiner that orders the segments
- that follow -->
- <string name="combiner"><xliff:g id="xxx">%1$s</xliff:g><xliff:g id="xxx">%2$s</xliff:g><xliff:g id="xxx">%3$s</xliff:g><xliff:g id="xxx">%4$s</xliff:g><xliff:g id="xxx">%5$s</xliff:g></string>
-
- <!-- Alarm confirmation toast: singular day -->
- <string name="day">"1 day"</string>
-
- <!-- Alarm confirmation toast: plural days -->
- <string name="days">"<xliff:g id="days">%s</xliff:g> days"</string>
-
- <!-- Alarm confirmation toast: singular hour -->
- <string name="hour">1 hour</string>
-
- <!-- Alarm confirmation toast: plural hours -->
- <string name="hours"><xliff:g id="hours">%s</xliff:g> hours</string>
-
- <!-- Alarm confirmation toast: "and" to join hours and minutes -->
- <string name="and">" and "</string>
-
- <!-- Alarm confirmation toast: space -->
- <string name="space">" "</string>
-
- <!-- Alarm confirmation toast: time less than one minute -->
- <string name="subminute">"less than 1 minute"</string>
-
- <!-- Alarm confirmation toast: singular minute -->
- <string name="minute">"1 minute"</string>
-
- <!-- Alarm confirmation toast: plural minutes -->
- <string name="minutes">"<xliff:g id="minutes">%s</xliff:g> minutes"</string>
-
- <!-- Alarm confirmation toast: Ante Meridiem, or am -->
- <string name="am">am</string>
-
- <!-- Alarm confirmation toast: Post Meridiem, or pm -->
- <string name="pm">pm</string>
-
- <!-- Repeat options that appear under an alarm on main Alarm Clock
- screen to identify repetition schedule: special case for when
- the alarm is set to repeat every day -->
- <string name="every_day">every day</string>
-
- <!-- Repeat options that appear under an alarm on main Alarm Clock
- screen to identify repetition schedule: special case for when
- the alarm is set to never repeat -->
- <string name="never">Never</string>
-
- <!-- Repeat options that appear under an alarm on main Alarm Clock
- screen to identify repetition schedule: concatenate days with
- this character, i.e. "Mon, Tue, Wed" -->
- <string name="day_concat">", "</string>
-
- <!-- Appears at the top of the Clock Picker screen: Tell user to
- select a clock to display -->
- <string name="clock_instructions">Select a clock to display.</string>
-
- <!-- Error dialog title: Alarm not set. Appears only on critical
- failure -->
- <string name="error">Alarm not set</string>
-
- <!-- Error dialog message. Appears only on critical
- failure -->
- <string name="dberror">Sorry, the alarm could not be set.</string>
-
- <!-- Label for analog clock gadget, shown in list of all gadgets -->
- <string name="analog_gadget">Analog clock</string>
-
- <!-- Days of week -->
- <string-array name="days_of_week">
- <!-- Day of week: Monday -->
- <item>Monday</item>
- <!-- Day of week: Tuesday -->
- <item>Tuesday</item>
- <!-- Day of week: Wednesday -->
- <item>Wednesday</item>
- <!-- Day of week: Thursday -->
- <item>Thursday</item>
- <!-- Day of week: Friday -->
- <item>Friday</item>
- <!-- Day of week: Saturday -->
- <item>Saturday</item>
- <!-- Day of week: Sunday -->
- <item>Sunday</item>
- </string-array>
-
- <!-- Short Day of week -->
- <string-array name="days_of_week_short">
- <!-- Short Day of week: Mon -->
- <item>Mon</item>
- <!-- Short Day of week: Tue -->
- <item>Tue</item>
- <!-- Short Day of week: Wed -->
- <item>Wed</item>
- <!-- Short Day of week: Thu -->
- <item>Thu</item>
- <!-- Short Day of week: Fri -->
- <item>Fri</item>
- <!-- Short Day of week: Sat -->
- <item>Sat</item>
- <!-- Short Day of week: Sun -->
- <item>Sun</item>
- </string-array>
-
-</resources>
-
-
diff --git a/res/values/styles.xml b/res/values/styles.xml
deleted file mode 100644
index c00c6f51a..000000000
--- a/res/values/styles.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<resources>
- <style name="analogClock">
- <item name="android:layout_width">fill_parent</item>
- <item name="android:layout_height">fill_parent</item>
- <item name="android:layout_gravity">center_horizontal</item>
- </style>
-</resources>
diff --git a/res/xml/alarm_prefs.xml b/res/xml/alarm_prefs.xml
deleted file mode 100644
index bdcf6b723..000000000
--- a/res/xml/alarm_prefs.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/set_alarm">
- <CheckBoxPreference android:key="on"
- android:title="@string/enable"/>
- <Preference android:key="time"
- android:title="@string/time"/>
- <com.android.alarmclock.AlarmPreference
- android:key="alarm"
- android:title="@string/alert"
- android:ringtoneType="alarm"
- android:showDefault="false"
- android:showSilent="false" />
- <CheckBoxPreference android:key="vibrate"
- android:title="@string/alarm_vibrate"/>
- <com.android.alarmclock.RepeatPreference
- android:key="setRepeat"
- android:title="@string/alarm_repeat"
- android:entries="@array/days_of_week"
- android:entryValues="@array/days_of_week"/>
-</PreferenceScreen>
diff --git a/res/xml/analog_gadget.xml b/res/xml/analog_gadget.xml
deleted file mode 100644
index 72724ec54..000000000
--- a/res/xml/analog_gadget.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?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.
--->
-
-<gadget-provider xmlns:android="http://schemas.android.com/apk/res/android"
- android:minWidth="146dip"
- android:minHeight="146dip"
- android:updatePeriodMillis="0"
- android:initialLayout="@layout/analog_gadget"
- >
-</gadget-provider>
diff --git a/src/com/android/alarmclock/AlarmAlert.java b/src/com/android/alarmclock/AlarmAlert.java
deleted file mode 100644
index eefd5bb91..000000000
--- a/src/com/android/alarmclock/AlarmAlert.java
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package com.android.alarmclock;
-
-import android.app.Activity;
-import android.app.KeyguardManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.res.Configuration;
-import android.graphics.PixelFormat;
-import android.os.Bundle;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.LayoutInflater;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.Toast;
-import android.widget.TextView;
-
-import java.util.Calendar;
-
-/**
- * Alarm Clock alarm alert: pops visible indicator and plays alarm
- * tone
- */
-public class AlarmAlert extends Activity {
-
- private static final int SNOOZE_MINUTES = 10;
- private static final int UNKNOWN = 0;
- private static final int SNOOZE = 1;
- private static final int DISMISS = 2;
- private static final int KILLED = 3;
-
- private KeyguardManager mKeyguardManager;
- private KeyguardManager.KeyguardLock mKeyguardLock = null;
- private Button mSnoozeButton;
- private int mState = UNKNOWN;
-
- private AlarmKlaxon mKlaxon;
- private int mAlarmId;
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- /* FIXME Intentionally verbose: always log this until we've
- fully debugged the app failing to start up */
- Log.v("AlarmAlert.onCreate()");
-
- mKlaxon = AlarmKlaxon.getInstance();
-
- // Popup alert over black screen
- WindowManager.LayoutParams lp = getWindow().getAttributes();
- lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
- lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
- // XXX DO NOT COPY THIS!!! THIS IS BOGUS! Making an activity have
- // a system alert type is completely broken, because the activity
- // manager will still hide/show it as if it is part of the normal
- // activity stack. If this is really what you want and you want it
- // to work correctly, you should create and show your own custom window.
- lp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
- lp.token = null;
- getWindow().setAttributes(lp);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
-
- mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
-
- mAlarmId = getIntent().getIntExtra(Alarms.ID, -1);
-
- /* allow next alarm to trigger while this activity is
- active */
- Alarms.disableSnoozeAlert(AlarmAlert.this);
- Alarms.disableAlert(AlarmAlert.this, mAlarmId);
- Alarms.setNextAlert(this);
-
- mKlaxon.setKillerCallback(new AlarmKlaxon.KillerCallback() {
- public void onKilled() {
- if (Log.LOGV) Log.v("onKilled()");
- updateSilencedText();
-
- /* don't allow snooze */
- mSnoozeButton.setEnabled(false);
-
- // Dismiss the alarm but mark the state as killed so if the
- // config changes, we show the silenced message and disable
- // snooze.
- dismiss();
- mState = KILLED;
- }
- });
-
- updateLayout();
- }
-
- private void updateSilencedText() {
- TextView silenced = (TextView) findViewById(R.id.silencedText);
- silenced.setText(getString(R.string.alarm_alert_alert_silenced,
- AlarmKlaxon.ALARM_TIMEOUT_SECONDS / 60));
- silenced.setVisibility(View.VISIBLE);
- }
-
- private void updateLayout() {
- setContentView(R.layout.alarm_alert);
-
- /* set clock face */
- LayoutInflater mFactory = LayoutInflater.from(this);
- SharedPreferences settings =
- getSharedPreferences(AlarmClock.PREFERENCES, 0);
- int face = settings.getInt(AlarmClock.PREF_CLOCK_FACE, 0);
- if (face < 0 || face >= AlarmClock.CLOCKS.length) {
- face = 0;
- }
- View clockLayout =
- (View) mFactory.inflate(AlarmClock.CLOCKS[face], null);
- ViewGroup clockView = (ViewGroup) findViewById(R.id.clockView);
- clockView.addView(clockLayout);
- if (clockLayout instanceof DigitalClock) {
- ((DigitalClock) clockLayout).setAnimate();
- }
-
- /* snooze behavior: pop a snooze confirmation view, kick alarm
- manager. */
- mSnoozeButton = (Button) findViewById(R.id.snooze);
- mSnoozeButton.requestFocus();
- // If this was a configuration change, keep the silenced text if the
- // alarm was killed.
- if (mState == KILLED) {
- updateSilencedText();
- mSnoozeButton.setEnabled(false);
- } else {
- mSnoozeButton.setOnClickListener(new Button.OnClickListener() {
- public void onClick(View v) {
- snooze();
- finish();
- }
- });
- }
-
- /* dismiss button: close notification */
- findViewById(R.id.dismiss).setOnClickListener(
- new Button.OnClickListener() {
- public void onClick(View v) {
- dismiss();
- finish();
- }
- });
- }
-
- // Attempt to snooze this alert.
- private void snooze() {
- if (mState != UNKNOWN) {
- return;
- }
- // If the next alarm is set for sooner than the snooze interval, don't
- // snooze. Instead, toast the user that the snooze will not be set.
- final long snoozeTime = System.currentTimeMillis()
- + (1000 * 60 * SNOOZE_MINUTES);
- final long nextAlarm =
- Alarms.calculateNextAlert(AlarmAlert.this).getAlert();
- String displayTime = null;
- if (nextAlarm < snoozeTime) {
- final Calendar c = Calendar.getInstance();
- c.setTimeInMillis(nextAlarm);
- displayTime = getString(R.string.alarm_alert_snooze_not_set,
- Alarms.formatTime(AlarmAlert.this, c));
- mState = DISMISS;
- } else {
- Alarms.saveSnoozeAlert(AlarmAlert.this, mAlarmId, snoozeTime);
- Alarms.setNextAlert(AlarmAlert.this);
- displayTime = getString(R.string.alarm_alert_snooze_set,
- SNOOZE_MINUTES);
- mState = SNOOZE;
- }
- // Intentionally log the snooze time for debugging.
- Log.v(displayTime);
- // Display the snooze minutes in a toast.
- Toast.makeText(AlarmAlert.this, displayTime, Toast.LENGTH_LONG).show();
- mKlaxon.stop(this, mState == SNOOZE);
- releaseLocks();
- }
-
- // Dismiss the alarm.
- private void dismiss() {
- if (mState != UNKNOWN) {
- return;
- }
- mState = DISMISS;
- mKlaxon.stop(this, false);
- releaseLocks();
- }
-
- /**
- * this is called when a second alarm is triggered while a
- * previous alert window is still active.
- */
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- if (Log.LOGV) Log.v("AlarmAlert.OnNewIntent()");
- mState = UNKNOWN;
- mSnoozeButton.setEnabled(true);
- disableKeyguard();
-
- mAlarmId = intent.getIntExtra(Alarms.ID, -1);
-
- /* unset silenced message */
- TextView silenced = (TextView)findViewById(R.id.silencedText);
- silenced.setVisibility(View.GONE);
-
- Alarms.setNextAlert(this);
- setIntent(intent);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- if (Log.LOGV) Log.v("AlarmAlert.onResume()");
- disableKeyguard();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- if (Log.LOGV) Log.v("AlarmAlert.onStop()");
- // As a last resort, try to snooze if this activity is stopped.
- snooze();
- }
-
- @Override
- public void onConfigurationChanged(Configuration config) {
- super.onConfigurationChanged(config);
- updateLayout();
- }
-
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- // Do this on key down to handle a few of the system keys. Only handle
- // the snooze and dismiss this alert if the state is unknown.
- boolean up = event.getAction() == KeyEvent.ACTION_UP;
- boolean dismiss = false;
- switch (event.getKeyCode()) {
- case KeyEvent.KEYCODE_DPAD_UP:
- case KeyEvent.KEYCODE_DPAD_DOWN:
- case KeyEvent.KEYCODE_DPAD_LEFT:
- case KeyEvent.KEYCODE_DPAD_RIGHT:
- case KeyEvent.KEYCODE_DPAD_CENTER:
- // Ignore ENDCALL because we do not receive the event if the screen
- // is on. However, we do receive the key up for ENDCALL if the
- // screen was off.
- case KeyEvent.KEYCODE_ENDCALL:
- break;
- // Volume keys dismiss the alarm
- case KeyEvent.KEYCODE_VOLUME_UP:
- case KeyEvent.KEYCODE_VOLUME_DOWN:
- dismiss = true;
- // All other keys will snooze the alarm
- default:
- // Check for UNKNOWN here so that we intercept both key events
- // and prevent the volume keys from triggering their default
- // behavior.
- if (mState == UNKNOWN && up) {
- if (dismiss) {
- dismiss();
- } else {
- snooze();
- }
- finish();
- }
- return true;
- }
- return super.dispatchKeyEvent(event);
- }
-
- private synchronized void enableKeyguard() {
- if (mKeyguardLock != null) {
- mKeyguardLock.reenableKeyguard();
- mKeyguardLock = null;
- }
- }
-
- private synchronized void disableKeyguard() {
- if (mKeyguardLock == null) {
- mKeyguardLock = mKeyguardManager.newKeyguardLock(Log.LOGTAG);
- mKeyguardLock.disableKeyguard();
- }
- }
-
- /**
- * release wake and keyguard locks
- */
- private synchronized void releaseLocks() {
- AlarmAlertWakeLock.release();
- enableKeyguard();
- }
-}
diff --git a/src/com/android/alarmclock/AlarmAlertWakeLock.java b/src/com/android/alarmclock/AlarmAlertWakeLock.java
deleted file mode 100644
index 083996e58..000000000
--- a/src/com/android/alarmclock/AlarmAlertWakeLock.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-package com.android.alarmclock;
-
-import android.content.Context;
-import android.os.PowerManager;
-
-/**
- * Hold a wakelock that can be acquired in the AlarmReceiver and
- * released in the AlarmAlert activity
- */
-class AlarmAlertWakeLock {
-
- private static PowerManager.WakeLock sWakeLock;
-
- static void acquire(Context context) {
- if (sWakeLock != null) {
- sWakeLock.release();
- }
-
- PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
-
- sWakeLock = pm.newWakeLock(
- PowerManager.FULL_WAKE_LOCK |
- PowerManager.ACQUIRE_CAUSES_WAKEUP |
- PowerManager.ON_AFTER_RELEASE, Log.LOGTAG);
- sWakeLock.acquire();
- }
-
- static void release() {
- if (Log.LOGV) Log.v("AlarmAlertWakeLock release");
- if (sWakeLock != null) {
- sWakeLock.release();
- sWakeLock = null;
- }
- }
-}
diff --git a/src/com/android/alarmclock/AlarmClock.java b/src/com/android/alarmclock/AlarmClock.java
deleted file mode 100644
index 6230d16a4..000000000
--- a/src/com/android/alarmclock/AlarmClock.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package com.android.alarmclock;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.SharedPreferences;
-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;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.CursorAdapter;
-import android.widget.ListView;
-import android.widget.TextView;
-import android.widget.CheckBox;
-
-import java.util.Calendar;
-
-/**
- * AlarmClock application.
- */
-public class AlarmClock extends Activity {
-
- final static String PREFERENCES = "AlarmClock";
- final static int SET_ALARM = 1;
- final static String PREF_CLOCK_FACE = "face";
- final static String PREF_SHOW_CLOCK = "show_clock";
-
- /** 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;
-
- private SharedPreferences mPrefs;
- private LayoutInflater mFactory;
- private ViewGroup mClockLayout;
- private View mClock = null;
- private MenuItem mAddAlarmItem;
- private MenuItem mToggleClockItem;
- private ListView mAlarmsList;
- private Cursor mCursor;
-
- /**
- * Which clock face to show
- */
- private int mFace = -1;
-
- /*
- * FIXME: it would be nice for this to live in an xml config file.
- */
- final static int[] CLOCKS = {
- R.layout.clock_basic_bw,
- R.layout.clock_googly,
- R.layout.clock_droid2,
- R.layout.clock_droids,
- R.layout.digital_clock
- };
-
- private class AlarmTimeAdapter extends CursorAdapter {
- public AlarmTimeAdapter(Context context, Cursor cursor) {
- super(context, cursor);
- }
-
- 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.setLive(false);
- if (Log.LOGV) Log.v("newView " + cursor.getPosition());
- return ret;
- }
-
- public void bindView(View view, Context context, Cursor cursor) {
- final int id = cursor.getInt(Alarms.AlarmColumns.ALARM_ID_INDEX);
- final int hour = cursor.getInt(Alarms.AlarmColumns.ALARM_HOUR_INDEX);
- final int minutes = cursor.getInt(Alarms.AlarmColumns.ALARM_MINUTES_INDEX);
- final Alarms.DaysOfWeek daysOfWeek = new Alarms.DaysOfWeek(
- cursor.getInt(Alarms.AlarmColumns.ALARM_DAYS_OF_WEEK_INDEX));
- final boolean enabled = cursor.getInt(Alarms.AlarmColumns.ALARM_ENABLED_INDEX) == 1;
-
- CheckBox onButton = (CheckBox)view.findViewById(R.id.alarmButton);
- onButton.setChecked(enabled);
- onButton.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- boolean isChecked = ((CheckBox) v).isChecked();
- Alarms.enableAlarm(AlarmClock.this, id, isChecked);
- if (isChecked) {
- SetAlarm.popAlarmSetToast(
- AlarmClock.this, hour, minutes, daysOfWeek);
- }
- }
- });
-
- DigitalClock digitalClock = (DigitalClock)view.findViewById(R.id.digitalClock);
- if (Log.LOGV) Log.v("bindView " + cursor.getPosition() + " " + id + " " + hour +
- ":" + minutes + " " + daysOfWeek.toString(context, true) + " dc " + digitalClock);
-
- digitalClock.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- if (true) {
- Intent intent = new Intent(AlarmClock.this, SetAlarm.class);
- intent.putExtra(Alarms.ID, id);
- startActivityForResult(intent, SET_ALARM);
- } else {
- // TESTING: immediately pop alarm
- Intent fireAlarm = new Intent(AlarmClock.this, AlarmAlert.class);
- fireAlarm.putExtra(Alarms.ID, id);
- fireAlarm.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(fireAlarm);
- }
- }
- });
-
- // set the alarm text
- final Calendar c = Calendar.getInstance();
- c.set(Calendar.HOUR_OF_DAY, hour);
- c.set(Calendar.MINUTE, minutes);
- digitalClock.updateTime(c);
- TextView daysOfWeekView = (TextView) digitalClock.findViewById(R.id.daysOfWeek);
- daysOfWeekView.setText(daysOfWeek.toString(AlarmClock.this, false));
-
- // Build context menu
- digitalClock.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
- public void onCreateContextMenu(ContextMenu menu, View view,
- ContextMenuInfo menuInfo) {
- menu.setHeaderTitle(Alarms.formatTime(AlarmClock.this, c));
- MenuItem deleteAlarmItem = menu.add(0, id, 0, R.string.delete_alarm);
- }
- });
- }
- };
-
- @Override
- public boolean onContextItemSelected(final MenuItem item) {
- // Confirm that the alarm will be deleted.
- 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(AlarmClock.this,
- item.getItemId());
- }
- })
- .setNegativeButton(android.R.string.cancel, null)
- .show();
- return true;
- }
-
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- // 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());
- mAlarmsList = (ListView) findViewById(R.id.alarms_list);
- mAlarmsList.setAdapter(new AlarmTimeAdapter(this, mCursor));
- mAlarmsList.setVerticalScrollBarEnabled(true);
- mAlarmsList.setItemsCanFocus(true);
-
- 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);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(intent);
- }
- });
-
- setClockVisibility(mPrefs.getBoolean(PREF_SHOW_CLOCK, true));
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- int face = mPrefs.getInt(PREF_CLOCK_FACE, 0);
- if (mFace != face) {
- if (face < 0 || face >= AlarmClock.CLOCKS.length)
- mFace = 0;
- else
- mFace = face;
- inflateClock();
- }
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- ToastMaster.cancelToast();
- mCursor.deactivate();
- }
-
- protected void inflateClock() {
- if (mClock != null) {
- mClockLayout.removeView(mClock);
- }
- mClock = mFactory.inflate(CLOCKS[mFace], null);
- mClockLayout.addView(mClock, 0);
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
-
- mAddAlarmItem = menu.add(0, 0, 0, R.string.add_alarm);
- mAddAlarmItem.setIcon(android.R.drawable.ic_menu_add);
-
- mToggleClockItem = menu.add(0, 0, 0, R.string.hide_clock);
- mToggleClockItem.setIcon(R.drawable.ic_menu_clock_face);
-
- return true;
- }
-
- /**
- * Only allow user to add a new alarm if there are fewer than
- * MAX_ALARM_COUNT
- */
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- super.onPrepareOptionsMenu(menu);
- mAddAlarmItem.setVisible(mAlarmsList.getChildCount() < MAX_ALARM_COUNT);
- mToggleClockItem.setTitle(getClockVisibility() ? R.string.hide_clock :
- R.string.show_clock);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item == mAddAlarmItem) {
- Uri uri = Alarms.addAlarm(getContentResolver());
- // FIXME: scroll to new item. mAlarmsList.requestChildRectangleOnScreen() ?
- String segment = uri.getPathSegments().get(1);
- int newId = Integer.parseInt(segment);
- if (Log.LOGV) Log.v("In AlarmClock, new alarm id = " + newId);
- Intent intent = new Intent(AlarmClock.this, SetAlarm.class);
- intent.putExtra(Alarms.ID, newId);
- startActivityForResult(intent, SET_ALARM);
- return true;
- } else if (item == mToggleClockItem) {
- setClockVisibility(!getClockVisibility());
- saveClockVisibility();
- return true;
- }
-
- return false;
- }
-
-
- private boolean getClockVisibility() {
- return mClockLayout.getVisibility() == View.VISIBLE;
- }
-
- private void setClockVisibility(boolean visible) {
- mClockLayout.setVisibility(visible ? View.VISIBLE : View.GONE);
- }
-
- private void saveClockVisibility() {
- mPrefs.edit().putBoolean(PREF_SHOW_CLOCK, getClockVisibility()).commit();
- }
-}
diff --git a/src/com/android/alarmclock/AlarmInitReceiver.java b/src/com/android/alarmclock/AlarmInitReceiver.java
deleted file mode 100644
index 77549b07a..000000000
--- a/src/com/android/alarmclock/AlarmInitReceiver.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package com.android.alarmclock;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.BroadcastReceiver;
-
-public class AlarmInitReceiver extends BroadcastReceiver {
-
- /**
- * Sets alarm on ACTION_BOOT_COMPLETED. Resets alarm on
- * TIME_SET, TIMEZONE_CHANGED
- */
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (Log.LOGV) Log.v("AlarmInitReceiver" + action);
-
- if (context.getContentResolver() == null) {
- Log.e("AlarmInitReceiver: FAILURE unable to get content resolver. Alarms inactive.");
- return;
- }
- if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
- Alarms.disableSnoozeAlert(context);
- Alarms.disableExpiredAlarms(context);
- }
- Alarms.setNextAlert(context);
- }
-}
diff --git a/src/com/android/alarmclock/AlarmKlaxon.java b/src/com/android/alarmclock/AlarmKlaxon.java
deleted file mode 100644
index c862292dc..000000000
--- a/src/com/android/alarmclock/AlarmKlaxon.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-package com.android.alarmclock;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.res.AssetFileDescriptor;
-import android.media.AudioManager;
-import android.media.MediaPlayer;
-import android.media.MediaPlayer.OnErrorListener;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Vibrator;
-
-/**
- * Manages alarms and vibe. Singleton, so it can be initiated in
- * AlarmReceiver and shut down in the AlarmAlert activity
- */
-class AlarmKlaxon implements Alarms.AlarmSettings {
-
- interface KillerCallback {
- public void onKilled();
- }
-
- /** Play alarm up to 10 minutes before silencing */
- final static int ALARM_TIMEOUT_SECONDS = 10 * 60;
-
- private static long[] sVibratePattern = new long[] { 500, 500 };
-
- private static AlarmKlaxon sInstance;
-
- private int mAlarmId;
- private String mAlert;
- private Alarms.DaysOfWeek mDaysOfWeek;
- private boolean mVibrate;
-
- private boolean mPlaying = false;
-
- private Vibrator mVibrator;
- private MediaPlayer mMediaPlayer;
-
- private Handler mTimeout;
- private KillerCallback mKillerCallback;
-
-
- static synchronized AlarmKlaxon getInstance() {
- if (sInstance == null) sInstance = new AlarmKlaxon();
- return sInstance;
- }
-
- private AlarmKlaxon() {
- mVibrator = new Vibrator();
- }
-
- public void reportAlarm(
- int idx, boolean enabled, int hour, int minutes,
- Alarms.DaysOfWeek daysOfWeek, boolean vibrate, String message,
- String alert) {
- if (Log.LOGV) Log.v("AlarmKlaxon.reportAlarm: " + idx + " " + hour +
- " " + minutes + " dow " + daysOfWeek);
- mAlert = alert;
- mDaysOfWeek = daysOfWeek;
- mVibrate = vibrate;
- }
-
- synchronized void play(Context context, int alarmId) {
- ContentResolver contentResolver = context.getContentResolver();
-
- if (mPlaying) stop(context, false);
-
- mAlarmId = alarmId;
-
- /* this will call reportAlarm() callback */
- Alarms.getAlarm(contentResolver, this, mAlarmId);
-
- if (Log.LOGV) Log.v("AlarmKlaxon.play() " + mAlarmId + " alert " + mAlert);
-
- /* play audio alert */
- if (mAlert == null) {
- Log.e("Unable to play alarm: no audio file available");
- } else {
- /* we need a new MediaPlayer when we change media URLs */
- mMediaPlayer = new MediaPlayer();
- mMediaPlayer.setOnErrorListener(new OnErrorListener() {
- public boolean onError(MediaPlayer mp, int what, int extra) {
- Log.e("Error occurred while playing audio.");
- mp.stop();
- mp.release();
- mMediaPlayer = null;
- return true;
- }
- });
-
- try {
- mMediaPlayer.setDataSource(context, Uri.parse(mAlert));
- } catch (Exception ex) {
- Log.v("Using the fallback ringtone");
- /* The alert may be on the sd card which could be busy right
- * now. Use the fallback ringtone. */
- AssetFileDescriptor afd =
- context.getResources().openRawResourceFd(
- com.android.internal.R.raw.fallbackring);
- if (afd != null) {
- try {
- mMediaPlayer.setDataSource(afd.getFileDescriptor(),
- afd.getStartOffset(), afd.getLength());
- afd.close();
- } catch (Exception ex2) {
- Log.e("Failed to play fallback ringtone", ex2);
- /* At this point we just don't play anything */
- }
- }
- }
- /* Now try to play the alert. */
- try {
- mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
- mMediaPlayer.setLooping(true);
- mMediaPlayer.prepare();
- mMediaPlayer.start();
- } catch (Exception ex) {
- Log.e("Error playing alarm: " + mAlert, ex);
- }
- }
-
- /* Start the vibrator after everything is ok with the media player */
- if (mVibrate) {
- mVibrator.vibrate(sVibratePattern, 0);
- } else {
- mVibrator.cancel();
- }
-
- enableKiller();
- mPlaying = true;
- }
-
-
- /**
- * Stops alarm audio and disables alarm if it not snoozed and not
- * repeating
- */
- synchronized void stop(Context context, boolean snoozed) {
- if (Log.LOGV) Log.v("AlarmKlaxon.stop() " + mAlarmId);
- if (mPlaying) {
- mPlaying = false;
-
- // Stop audio playing
- if (mMediaPlayer != null) {
- mMediaPlayer.stop();
- mMediaPlayer.release();
- mMediaPlayer = null;
- }
-
- // Stop vibrator
- mVibrator.cancel();
-
- /* disable alarm only if it is not set to repeat */
- if (!snoozed && ((mDaysOfWeek == null || !mDaysOfWeek.isRepeatSet()))) {
- Alarms.enableAlarm(context, mAlarmId, false);
- }
- }
- disableKiller();
- }
-
- /**
- * This callback called when alarm killer times out unattended
- * alarm
- */
- void setKillerCallback(KillerCallback killerCallback) {
- mKillerCallback = killerCallback;
- }
-
- /**
- * Kills alarm audio after ALARM_TIMEOUT_SECONDS, so the alarm
- * won't run all day.
- *
- * This just cancels the audio, but leaves the notification
- * popped, so the user will know that the alarm tripped.
- */
- private void enableKiller() {
- mTimeout = new Handler();
- mTimeout.postDelayed(new Runnable() {
- public void run() {
- if (Log.LOGV) Log.v("*********** Alarm killer triggered *************");
- if (mKillerCallback != null) mKillerCallback.onKilled();
- }
- }, 1000 * ALARM_TIMEOUT_SECONDS);
- }
-
- private void disableKiller() {
- if (mTimeout != null) {
- mTimeout.removeCallbacksAndMessages(null);
- mTimeout = null;
- }
- }
-
-
-}
diff --git a/src/com/android/alarmclock/AlarmPreference.java b/src/com/android/alarmclock/AlarmPreference.java
deleted file mode 100644
index 0fd4f89dd..000000000
--- a/src/com/android/alarmclock/AlarmPreference.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-package com.android.alarmclock;
-
-import android.content.Context;
-import android.net.Uri;
-import android.preference.RingtonePreference;
-import android.util.AttributeSet;
-
-public class AlarmPreference extends RingtonePreference {
- public Uri mAlert;
- private IRingtoneChangedListener mRingtoneChangedListener;
-
- public interface IRingtoneChangedListener {
- public void onRingtoneChanged(Uri ringtoneUri);
- };
-
- public AlarmPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public void setRingtoneChangedListener(IRingtoneChangedListener listener) {
- mRingtoneChangedListener = listener;
- }
-
- @Override
- protected void onSaveRingtone(Uri ringtoneUri) {
- if (ringtoneUri != null) {
- mAlert = ringtoneUri;
- if (mRingtoneChangedListener != null) {
- mRingtoneChangedListener.onRingtoneChanged(ringtoneUri);
- }
- }
- }
-
- @Override
- protected Uri onRestoreRingtone() {
- return mAlert;
- }
-}
diff --git a/src/com/android/alarmclock/AlarmProvider.java b/src/com/android/alarmclock/AlarmProvider.java
deleted file mode 100644
index 74fdd2e89..000000000
--- a/src/com/android/alarmclock/AlarmProvider.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package com.android.alarmclock;
-
-import android.content.ContentProvider;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.UriMatcher;
-import android.database.Cursor;
-import android.database.SQLException;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.database.sqlite.SQLiteQueryBuilder;
-import android.net.Uri;
-import android.text.TextUtils;
-
-public class AlarmProvider extends ContentProvider {
- private SQLiteOpenHelper mOpenHelper;
-
- private static final int ALARMS = 1;
- private static final int ALARMS_ID = 2;
- private static final UriMatcher sURLMatcher = new UriMatcher(
- UriMatcher.NO_MATCH);
-
- static {
- sURLMatcher.addURI("com.android.alarmclock", "alarm", ALARMS);
- sURLMatcher.addURI("com.android.alarmclock", "alarm/#", ALARMS_ID);
- }
-
- private static class DatabaseHelper extends SQLiteOpenHelper {
- private static final String DATABASE_NAME = "alarms.db";
- private static final int DATABASE_VERSION = 5;
-
- public DatabaseHelper(Context context) {
- super(context, DATABASE_NAME, null, DATABASE_VERSION);
- }
-
- @Override
- public void onCreate(SQLiteDatabase db) {
- db.execSQL("CREATE TABLE alarms (" +
- "_id INTEGER PRIMARY KEY," +
- "hour INTEGER, " +
- "minutes INTEGER, " +
- "daysofweek INTEGER, " +
- "alarmtime INTEGER, " +
- "enabled INTEGER, " +
- "vibrate INTEGER, " +
- "message TEXT, " +
- "alert TEXT);");
-
- // insert default alarms
- String insertMe = "INSERT INTO alarms " +
- "(hour, minutes, daysofweek, alarmtime, enabled, vibrate, message, alert) " +
- "VALUES ";
- db.execSQL(insertMe + "(7, 0, 127, 0, 0, 1, '', '');");
- db.execSQL(insertMe + "(8, 30, 31, 0, 0, 1, '', '');");
- db.execSQL(insertMe + "(9, 00, 0, 0, 0, 1, '', '');");
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int currentVersion) {
- if (Log.LOGV) Log.v(
- "Upgrading alarms database from version " +
- oldVersion + " to " + currentVersion +
- ", which will destroy all old data");
- db.execSQL("DROP TABLE IF EXISTS alarms");
- onCreate(db);
- }
- }
-
- public AlarmProvider() {
- }
-
- @Override
- public boolean onCreate() {
- mOpenHelper = new DatabaseHelper(getContext());
- return true;
- }
-
- @Override
- public Cursor query(Uri url, String[] projectionIn, String selection,
- String[] selectionArgs, String sort) {
- SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
-
- // Generate the body of the query
- int match = sURLMatcher.match(url);
- switch (match) {
- case ALARMS:
- qb.setTables("alarms");
- break;
- case ALARMS_ID:
- qb.setTables("alarms");
- qb.appendWhere("_id=");
- qb.appendWhere(url.getPathSegments().get(1));
- break;
- default:
- throw new IllegalArgumentException("Unknown URL " + url);
- }
-
- SQLiteDatabase db = mOpenHelper.getReadableDatabase();
- Cursor ret = qb.query(db, projectionIn, selection, selectionArgs,
- null, null, sort);
-
- if (ret == null) {
- if (Log.LOGV) Log.v("Alarms.query: failed");
- } else {
- ret.setNotificationUri(getContext().getContentResolver(), url);
- }
-
- return ret;
- }
-
- @Override
- public String getType(Uri url) {
- int match = sURLMatcher.match(url);
- switch (match) {
- case ALARMS:
- return "vnd.android.cursor.dir/alarms";
- case ALARMS_ID:
- return "vnd.android.cursor.item/alarms";
- default:
- throw new IllegalArgumentException("Unknown URL");
- }
- }
-
- @Override
- public int update(Uri url, ContentValues values, String where, String[] whereArgs) {
- int count;
- long rowId = 0;
- int match = sURLMatcher.match(url);
- SQLiteDatabase db = mOpenHelper.getWritableDatabase();
- switch (match) {
- case ALARMS_ID: {
- String segment = url.getPathSegments().get(1);
- rowId = Long.parseLong(segment);
- count = db.update("alarms", values, "_id=" + rowId, null);
- break;
- }
- default: {
- throw new UnsupportedOperationException(
- "Cannot update URL: " + url);
- }
- }
- if (Log.LOGV) Log.v("*** notifyChange() rowId: " + rowId + " url " + url);
- getContext().getContentResolver().notifyChange(url, null);
- return count;
- }
-
- @Override
- public Uri insert(Uri url, ContentValues initialValues) {
- if (sURLMatcher.match(url) != ALARMS) {
- throw new IllegalArgumentException("Cannot insert into URL: " + url);
- }
-
- ContentValues values;
- if (initialValues != null)
- values = new ContentValues(initialValues);
- else
- values = new ContentValues();
-
- if (!values.containsKey(Alarms.AlarmColumns.HOUR))
- values.put(Alarms.AlarmColumns.HOUR, 0);
-
- if (!values.containsKey(Alarms.AlarmColumns.MINUTES))
- values.put(Alarms.AlarmColumns.MINUTES, 0);
-
- if (!values.containsKey(Alarms.AlarmColumns.DAYS_OF_WEEK))
- values.put(Alarms.AlarmColumns.DAYS_OF_WEEK, 0);
-
- if (!values.containsKey(Alarms.AlarmColumns.ALARM_TIME))
- values.put(Alarms.AlarmColumns.ALARM_TIME, 0);
-
- if (!values.containsKey(Alarms.AlarmColumns.ENABLED))
- values.put(Alarms.AlarmColumns.ENABLED, 0);
-
- if (!values.containsKey(Alarms.AlarmColumns.VIBRATE))
- values.put(Alarms.AlarmColumns.VIBRATE, 1);
-
- if (!values.containsKey(Alarms.AlarmColumns.MESSAGE))
- values.put(Alarms.AlarmColumns.MESSAGE, "");
-
- if (!values.containsKey(Alarms.AlarmColumns.ALERT))
- values.put(Alarms.AlarmColumns.ALERT, "");
-
- SQLiteDatabase db = mOpenHelper.getWritableDatabase();
- long rowId = db.insert("alarms", Alarms.AlarmColumns.MESSAGE, values);
- if (rowId < 0) {
- throw new SQLException("Failed to insert row into " + url);
- }
- if (Log.LOGV) Log.v("Added alarm rowId = " + rowId);
-
- Uri newUrl = ContentUris.withAppendedId(Alarms.AlarmColumns.CONTENT_URI, rowId);
- getContext().getContentResolver().notifyChange(newUrl, null);
- return newUrl;
- }
-
- public int delete(Uri url, String where, String[] whereArgs) {
- SQLiteDatabase db = mOpenHelper.getWritableDatabase();
- int count;
- long rowId = 0;
- switch (sURLMatcher.match(url)) {
- case ALARMS:
- count = db.delete("alarms", where, whereArgs);
- break;
- case ALARMS_ID:
- String segment = url.getPathSegments().get(1);
- rowId = Long.parseLong(segment);
- if (TextUtils.isEmpty(where)) {
- where = "_id=" + segment;
- } else {
- where = "_id=" + segment + " AND (" + where + ")";
- }
- count = db.delete("alarms", where, whereArgs);
- break;
- default:
- throw new IllegalArgumentException("Cannot delete from URL: " + url);
- }
-
- getContext().getContentResolver().notifyChange(url, null);
- return count;
- }
-}
diff --git a/src/com/android/alarmclock/AlarmReceiver.java b/src/com/android/alarmclock/AlarmReceiver.java
deleted file mode 100644
index af18b7b7a..000000000
--- a/src/com/android/alarmclock/AlarmReceiver.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package com.android.alarmclock;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.BroadcastReceiver;
-
-/**
- * Glue class: connects AlarmAlert IntentReceiver to AlarmAlert
- * activity. Passes through Alarm ID.
- */
-public class AlarmReceiver extends BroadcastReceiver {
-
- /** If the alarm is older than STALE_WINDOW seconds, ignore. It
- is probably the result of a time or timezone change */
- private final static int STALE_WINDOW = 60 * 30;
-
- @Override
- public void onReceive(Context context, Intent intent) {
- long now = System.currentTimeMillis();
- int id = intent.getIntExtra(Alarms.ID, 0);
- long setFor = intent.getLongExtra(Alarms.TIME, 0);
-
- /* FIXME Intentionally verbose: always log this until we've
- fully debugged the app failing to start up */
- Log.v("AlarmReceiver.onReceive() id " + id + " setFor " + setFor +
- " now " + now);
-
- if (now > setFor + STALE_WINDOW * 1000) {
- if (Log.LOGV) Log.v("AlarmReceiver ignoring stale alarm intent id"
- + id + " setFor " + setFor + " now " + now);
- return;
- }
-
- /* wake device */
- AlarmAlertWakeLock.acquire(context);
-
- /* start audio/vibe */
- AlarmKlaxon klaxon = AlarmKlaxon.getInstance();
- klaxon.play(context, id);
-
- /* Close dialogs and window shade */
- Intent i = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
- context.sendBroadcast(i);
-
- /* launch UI, explicitly stating that this is not due to user action
- * so that the current app's notification management is not disturbed */
- Intent fireAlarm = new Intent(context, AlarmAlert.class);
- fireAlarm.putExtra(Alarms.ID, id);
- fireAlarm.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_USER_ACTION);
- context.startActivity(fireAlarm);
- }
-}
diff --git a/src/com/android/alarmclock/Alarms.java b/src/com/android/alarmclock/Alarms.java
deleted file mode 100644
index 56af9b310..000000000
--- a/src/com/android/alarmclock/Alarms.java
+++ /dev/null
@@ -1,758 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package com.android.alarmclock;
-
-import android.app.AlarmManager;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.ContentUris;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.database.Cursor;
-import android.net.Uri;
-import android.provider.BaseColumns;
-import android.provider.Settings;
-import android.text.format.DateFormat;
-
-import java.util.Calendar;
-
-/**
- * The Alarms provider supplies info about Alarm Clock settings
- */
-public class Alarms {
-
- public final static String ALARM_ALERT_ACTION = "com.android.alarmclock.ALARM_ALERT";
- public final static String ID = "alarm_id";
- public final static String TIME = "alarm_time";
-
- final static String PREF_SNOOZE_ID = "snooze_id";
- final static String PREF_SNOOZE_TIME = "snooze_time";
-
- private final static String DM12 = "E h:mm aa";
- private final static String DM24 = "E k:mm";
-
- private final static String M12 = "h:mm aa";
- private final static String M24 = "k:mm";
-
- static class DaysOfWeek {
-
- int mDays;
-
- /**
- * Days of week coded as single int, convenient for DB
- * storage:
- *
- * 0x00: no day
- * 0x01: Monday
- * 0x02: Tuesday
- * 0x04: Wednesday
- * 0x08: Thursday
- * 0x10: Friday
- * 0x20: Saturday
- * 0x40: Sunday
- */
- DaysOfWeek() {
- this(0);
- }
-
- DaysOfWeek(int days) {
- mDays = days;
- }
-
- public String toString(Context context, boolean showNever) {
- StringBuilder ret = new StringBuilder();
-
- /* no days */
- if (mDays == 0) return showNever ? context.getText(
- R.string.never).toString() : "";
-
- /* every day */
- if (mDays == 0x7f) {
- return context.getText(R.string.every_day).toString();
- }
-
- /* count selected days */
- int dayCount = 0, days = mDays;
- while (days > 0) {
- if ((days & 1) == 1) dayCount++;
- days >>= 1;
- }
-
- /* short or long form? */
- CharSequence[] strings =
- context.getResources().getTextArray(
- (dayCount > 1) ? R.array.days_of_week_short :
- R.array.days_of_week);
-
- /* selected days */
- for (int i = 0; i < 7; i++) {
- if ((mDays & (1 << i)) != 0) {
- ret.append(strings[i]);
- dayCount -= 1;
- if (dayCount > 0) ret.append(
- context.getText(R.string.day_concat));
- }
- }
- return ret.toString();
- }
-
- /**
- * @param day Mon=0 ... Sun=6
- * @return true if given day is set
- */
- public boolean isSet(int day) {
- return ((mDays & (1 << day)) > 0);
- }
-
- public void set(int day, boolean set) {
- if (set) {
- mDays |= (1 << day);
- } else {
- mDays &= ~(1 << day);
- }
- }
-
- public void set(DaysOfWeek dow) {
- mDays = dow.mDays;
- }
-
- public int getCoded() {
- return mDays;
- }
-
- public boolean equals(DaysOfWeek dow) {
- return mDays == dow.mDays;
- }
-
- // Returns days of week encoded in an array of booleans.
- public boolean[] getBooleanArray() {
- boolean[] ret = new boolean[7];
- for (int i = 0; i < 7; i++) {
- ret[i] = isSet(i);
- }
- return ret;
- }
-
- public void setCoded(int days) {
- mDays = days;
- }
-
- /**
- * @return true if alarm is set to repeat
- */
- public boolean isRepeatSet() {
- return mDays != 0;
- }
-
- /**
- * @return true if alarm is set to repeat every day
- */
- public boolean isEveryDaySet() {
- return mDays == 0x7f;
- }
-
-
- /**
- * returns number of days from today until next alarm
- * @param c must be set to today
- */
- public int getNextAlarm(Calendar c) {
- if (mDays == 0) return -1;
- int today = (c.get(Calendar.DAY_OF_WEEK) + 5) % 7;
-
- int day, dayCount;
- for (dayCount = 0; dayCount < 7; dayCount++) {
- day = (today + dayCount) % 7;
- if ((mDays & (1 << day)) > 0) {
- break;
- }
- }
- return dayCount;
- }
- }
-
- public static class AlarmColumns implements BaseColumns {
-
- /**
- * The content:// style URL for this table
- */
- public static final Uri CONTENT_URI =
- Uri.parse("content://com.android.alarmclock/alarm");
-
- public static final String _ID = "_id";
-
- /**
- * The default sort order for this table
- */
- public static final String DEFAULT_SORT_ORDER = "_id ASC";
-
- /**
- * Hour in 24-hour localtime 0 - 23.
- * <P>Type: INTEGER</P>
- */
- public static final String HOUR = "hour";
-
- /**
- * Minutes in localtime 0 - 59
- * <P>Type: INTEGER</P>
- */
- public static final String MINUTES = "minutes";
-
- /**
- * Days of week coded as integer
- * <P>Type: INTEGER</P>
- */
- public static final String DAYS_OF_WEEK = "daysofweek";
-
- /**
- * Alarm time in UTC milliseconds from the epoch.
- * <P>Type: INTEGER</P>
- */
- public static final String ALARM_TIME = "alarmtime";
-
- /**
- * True if alarm is active
- * <P>Type: BOOLEAN</P>
- */
- public static final String ENABLED = "enabled";
-
- /**
- * True if alarm should vibrate
- * <P>Type: BOOLEAN</P>
- */
- public static final String VIBRATE = "vibrate";
-
- /**
- * Message to show when alarm triggers
- * Note: not currently used
- * <P>Type: STRING</P>
- */
- public static final String MESSAGE = "message";
-
- /**
- * Audio alert to play when alarm triggers
- * <P>Type: STRING</P>
- */
- public static final String ALERT = "alert";
-
- static final String[] ALARM_QUERY_COLUMNS = {
- _ID, HOUR, MINUTES, DAYS_OF_WEEK, ALARM_TIME,
- ENABLED, VIBRATE, MESSAGE, ALERT};
-
- /**
- * These save calls to cursor.getColumnIndexOrThrow()
- * THEY MUST BE KEPT IN SYNC WITH ABOVE QUERY COLUMNS
- */
- public static final int ALARM_ID_INDEX = 0;
- public static final int ALARM_HOUR_INDEX = 1;
- public static final int ALARM_MINUTES_INDEX = 2;
- public static final int ALARM_DAYS_OF_WEEK_INDEX = 3;
- public static final int ALARM_TIME_INDEX = 4;
- public static final int ALARM_ENABLED_INDEX = 5;
- public static final int ALARM_VIBRATE_INDEX = 6;
- public static final int ALARM_MESSAGE_INDEX = 7;
- public static final int ALARM_ALERT_INDEX = 8;
- }
-
- /**
- * getAlarm and getAlarms call this interface to report alarms in
- * the database
- */
- static interface AlarmSettings {
- void reportAlarm(
- int idx, boolean enabled, int hour, int minutes,
- DaysOfWeek daysOfWeek, boolean vibrate, String message,
- String alert);
- }
-
- /**
- * Creates a new Alarm.
- */
- public synchronized static Uri addAlarm(ContentResolver contentResolver) {
- ContentValues values = new ContentValues();
- values.put(Alarms.AlarmColumns.HOUR, 8);
- return contentResolver.insert(AlarmColumns.CONTENT_URI, values);
- }
-
- /**
- * Removes an existing Alarm. If this alarm is snoozing, disables
- * snooze. Sets next alert.
- */
- public synchronized static void deleteAlarm(
- Context context, int alarmId) {
-
- ContentResolver contentResolver = context.getContentResolver();
- /* If alarm is snoozing, lose it */
- int snoozeId = getSnoozeAlarmId(context);
- if (snoozeId == alarmId) disableSnoozeAlert(context);
-
- Uri uri = ContentUris.withAppendedId(AlarmColumns.CONTENT_URI, alarmId);
- deleteAlarm(contentResolver, uri);
-
- setNextAlert(context);
- }
-
- private synchronized static void deleteAlarm(
- ContentResolver contentResolver, Uri uri) {
- contentResolver.delete(uri, "", null);
- }
-
- /**
- * Queries all alarms
- * @return cursor over all alarms
- */
- public synchronized static Cursor getAlarmsCursor(
- ContentResolver contentResolver) {
- return contentResolver.query(
- AlarmColumns.CONTENT_URI, AlarmColumns.ALARM_QUERY_COLUMNS,
- null, null, AlarmColumns.DEFAULT_SORT_ORDER);
- }
-
- /**
- * Calls the AlarmSettings.reportAlarm interface on all alarms found in db.
- */
- public synchronized static void getAlarms(
- ContentResolver contentResolver, AlarmSettings alarmSettings) {
- Cursor cursor = getAlarmsCursor(contentResolver);
- getAlarms(alarmSettings, cursor);
- cursor.close();
- }
-
- private synchronized static void getAlarms(
- AlarmSettings alarmSettings, Cursor cur) {
- if (cur.moveToFirst()) {
- do {
- // Get the field values
- int id = cur.getInt(AlarmColumns.ALARM_ID_INDEX);
- int hour = cur.getInt(AlarmColumns.ALARM_HOUR_INDEX);
- int minutes = cur.getInt(AlarmColumns.ALARM_MINUTES_INDEX);
- int daysOfWeek = cur.getInt(AlarmColumns.ALARM_DAYS_OF_WEEK_INDEX);
- boolean enabled = cur.getInt(AlarmColumns.ALARM_ENABLED_INDEX) == 1 ? true : false;
- boolean vibrate = cur.getInt(AlarmColumns.ALARM_VIBRATE_INDEX) == 1 ? true : false;
- String message = cur.getString(AlarmColumns.ALARM_MESSAGE_INDEX);
- String alert = cur.getString(AlarmColumns.ALARM_ALERT_INDEX);
- alarmSettings.reportAlarm(
- id, enabled, hour, minutes, new DaysOfWeek(daysOfWeek),
- vibrate, message, alert);
- } while (cur.moveToNext());
- }
- }
-
- /**
- * Calls the AlarmSettings.reportAlarm interface on alarm with given
- * alarmId
- */
- public synchronized static void getAlarm(
- ContentResolver contentResolver, AlarmSettings alarmSetting,
- int alarmId) {
- Cursor cursor = contentResolver.query(
- ContentUris.withAppendedId(AlarmColumns.CONTENT_URI, alarmId),
- AlarmColumns.ALARM_QUERY_COLUMNS,
- null, null, AlarmColumns.DEFAULT_SORT_ORDER);
-
- getAlarms(alarmSetting, cursor);
- cursor.close();
- }
-
-
- /**
- * A convenience method to set an alarm in the Alarms
- * content provider.
- *
- * @param id corresponds to the _id column
- * @param enabled corresponds to the ENABLED column
- * @param hour corresponds to the HOUR column
- * @param minutes corresponds to the MINUTES column
- * @param daysOfWeek corresponds to the DAYS_OF_WEEK column
- * @param time corresponds to the ALARM_TIME column
- * @param vibrate corresponds to the VIBRATE column
- * @param message corresponds to the MESSAGE column
- * @param alert corresponds to the ALERT column
- */
- public synchronized static void setAlarm(
- Context context, int id, boolean enabled, int hour, int minutes,
- DaysOfWeek daysOfWeek, boolean vibrate, String message,
- String alert) {
-
- ContentValues values = new ContentValues(8);
- ContentResolver resolver = context.getContentResolver();
- long time = calculateAlarm(hour, minutes, daysOfWeek).getTimeInMillis();
-
- if (Log.LOGV) Log.v(
- "** setAlarm * idx " + id + " hour " + hour + " minutes " +
- minutes + " enabled " + enabled + " time " + time);
-
- values.put(AlarmColumns.ENABLED, enabled ? 1 : 0);
- values.put(AlarmColumns.HOUR, hour);
- values.put(AlarmColumns.MINUTES, minutes);
- values.put(AlarmColumns.ALARM_TIME, time);
- values.put(AlarmColumns.DAYS_OF_WEEK, daysOfWeek.getCoded());
- values.put(AlarmColumns.VIBRATE, vibrate);
- values.put(AlarmColumns.MESSAGE, message);
- values.put(AlarmColumns.ALERT, alert);
- resolver.update(ContentUris.withAppendedId(AlarmColumns.CONTENT_URI, id),
- values, null, null);
-
- int aid = disableSnoozeAlert(context);
- if (aid != -1 && aid != id) enableAlarmInternal(context, aid, false);
- setNextAlert(context);
- }
-
- /**
- * A convenience method to enable or disable an alarm.
- *
- * @param id corresponds to the _id column
- * @param enabled corresponds to the ENABLED column
- */
-
- public synchronized static void enableAlarm(
- final Context context, final int id, boolean enabled) {
- int aid = disableSnoozeAlert(context);
- if (aid != -1 && aid != id) enableAlarmInternal(context, aid, false);
- enableAlarmInternal(context, id, enabled);
- setNextAlert(context);
- }
-
- private synchronized static void enableAlarmInternal(
- final Context context, final int id, boolean enabled) {
- ContentResolver resolver = context.getContentResolver();
-
- class EnableAlarm implements AlarmSettings {
- public int mHour;
- public int mMinutes;
- public DaysOfWeek mDaysOfWeek;
-
- public void reportAlarm(
- int idx, boolean enabled, int hour, int minutes,
- DaysOfWeek daysOfWeek, boolean vibrate, String message,
- String alert) {
- mHour = hour;
- mMinutes = minutes;
- mDaysOfWeek = daysOfWeek;
- }
- }
-
- ContentValues values = new ContentValues(2);
- values.put(AlarmColumns.ENABLED, enabled ? 1 : 0);
-
- /* If we are enabling the alarm, load hour/minutes/daysOfWeek
- from db, so we can calculate alarm time */
- if (enabled) {
- EnableAlarm enableAlarm = new EnableAlarm();
- getAlarm(resolver, enableAlarm, id);
- if (enableAlarm.mDaysOfWeek == null) {
- /* Under monkey, sometimes reportAlarm is never
- called */
- Log.e("** enableAlarmInternal failed " + id + " h " +
- enableAlarm.mHour + " m " + enableAlarm.mMinutes);
- return;
- }
-
- long time = calculateAlarm(enableAlarm.mHour, enableAlarm.mMinutes,
- enableAlarm.mDaysOfWeek).getTimeInMillis();
- values.put(AlarmColumns.ALARM_TIME, time);
- }
-
- resolver.update(ContentUris.withAppendedId(AlarmColumns.CONTENT_URI, id),
- values, null, null);
- }
-
-
- /**
- * Calculates next scheduled alert
- */
- static class AlarmCalculator implements AlarmSettings {
- public long mMinAlert = Long.MAX_VALUE;
- public int mMinIdx = -1;
-
- /**
- * returns next scheduled alert, MAX_VALUE if none
- */
- public long getAlert() {
- return mMinAlert;
- }
- public int getIndex() {
- return mMinIdx;
- }
-
- public void reportAlarm(
- int idx, boolean enabled, int hour, int minutes,
- DaysOfWeek daysOfWeek, boolean vibrate, String message,
- String alert) {
- if (enabled) {
- long atTime = calculateAlarm(hour, minutes,
- daysOfWeek).getTimeInMillis();
- /* Log.i("** SET ALERT* idx " + idx + " hour " + hour + " minutes " +
- minutes + " enabled " + enabled + " calc " + atTime); */
- if (atTime < mMinAlert) {
- mMinIdx = idx;
- mMinAlert = atTime;
- }
- }
- }
- }
-
- static AlarmCalculator calculateNextAlert(final Context context) {
- ContentResolver resolver = context.getContentResolver();
- AlarmCalculator alarmCalc = new AlarmCalculator();
- getAlarms(resolver, alarmCalc);
- return alarmCalc;
- }
-
- /**
- * Disables non-repeating alarms that have passed. Called at
- * boot.
- */
- public static void disableExpiredAlarms(final Context context) {
- Cursor cur = getAlarmsCursor(context.getContentResolver());
- long now = System.currentTimeMillis();
-
- if (cur.moveToFirst()) {
- do {
- // Get the field values
- int id = cur.getInt(AlarmColumns.ALARM_ID_INDEX);
- boolean enabled = cur.getInt(
- AlarmColumns.ALARM_ENABLED_INDEX) == 1 ? true : false;
- DaysOfWeek daysOfWeek = new DaysOfWeek(
- cur.getInt(AlarmColumns.ALARM_DAYS_OF_WEEK_INDEX));
- long time = cur.getLong(AlarmColumns.ALARM_TIME_INDEX);
-
- if (enabled && !daysOfWeek.isRepeatSet() && time < now) {
- if (Log.LOGV) Log.v(
- "** DISABLE " + id + " now " + now +" set " + time);
- enableAlarmInternal(context, id, false);
- }
- } while (cur.moveToNext());
- }
- cur.close();
- }
-
- private static NotificationManager getNotificationManager(
- final Context context) {
- return (NotificationManager) context.getSystemService(
- context.NOTIFICATION_SERVICE);
- }
-
- /**
- * Called at system startup, on time/timezone change, and whenever
- * the user changes alarm settings. Activates snooze if set,
- * otherwise loads all alarms, activates next alert.
- */
- public static void setNextAlert(final Context context) {
- int snoozeId = getSnoozeAlarmId(context);
- if (snoozeId == -1) {
- AlarmCalculator ac = calculateNextAlert(context);
- int id = ac.getIndex();
- long atTime = ac.getAlert();
-
- if (atTime < Long.MAX_VALUE) {
- enableAlert(context, id, atTime);
- } else {
- disableAlert(context, id);
- }
- } else {
- enableSnoozeAlert(context);
- }
- }
-
- /**
- * Sets alert in AlarmManger and StatusBar. This is what will
- * actually launch the alert when the alarm triggers.
- *
- * Note: In general, apps should call setNextAlert() instead of
- * this method. setAlert() is only used outside this class when
- * the alert is not to be driven by the state of the db. "Snooze"
- * uses this API, as we do not want to alter the alarm in the db
- * with each snooze.
- *
- * @param id Alarm ID.
- * @param atTimeInMillis milliseconds since epoch
- */
- static void enableAlert(Context context, int id, long atTimeInMillis) {
- AlarmManager am = (AlarmManager)
- context.getSystemService(Context.ALARM_SERVICE);
-
- Intent intent = new Intent(ALARM_ALERT_ACTION);
- if (Log.LOGV) Log.v("** setAlert id " + id + " atTime " + atTimeInMillis);
- intent.putExtra(ID, id);
- intent.putExtra(TIME, atTimeInMillis);
- PendingIntent sender = PendingIntent.getBroadcast(
- context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
-
- if (true) {
- am.set(AlarmManager.RTC_WAKEUP, atTimeInMillis, sender);
- } else {
- // a five-second alarm, for testing
- am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5000,
- sender);
- }
-
- setStatusBarIcon(context, true);
-
- Calendar c = Calendar.getInstance();
- c.setTime(new java.util.Date(atTimeInMillis));
- String timeString = formatDayAndTime(context, c);
- saveNextAlarm(context, timeString);
- }
-
- /**
- * Disables alert in AlarmManger and StatusBar.
- *
- * @param id Alarm ID.
- */
- static void disableAlert(Context context, int id) {
- AlarmManager am = (AlarmManager)
- context.getSystemService(Context.ALARM_SERVICE);
- Intent intent = new Intent(ALARM_ALERT_ACTION);
- intent.putExtra(ID, id);
- PendingIntent sender = PendingIntent.getBroadcast(
- context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
- am.cancel(sender);
- setStatusBarIcon(context, false);
- saveNextAlarm(context, "");
- }
-
- static void saveSnoozeAlert(final Context context, int id,
- long atTimeInMillis) {
- SharedPreferences prefs = context.getSharedPreferences(
- AlarmClock.PREFERENCES, 0);
- SharedPreferences.Editor ed = prefs.edit();
- ed.putInt(PREF_SNOOZE_ID, id);
- ed.putLong(PREF_SNOOZE_TIME, atTimeInMillis);
- ed.commit();
- }
-
- /**
- * @return ID of alarm disabled, if disabled, -1 otherwise
- */
- static int disableSnoozeAlert(final Context context) {
- int id = getSnoozeAlarmId(context);
- if (id == -1) return -1;
- saveSnoozeAlert(context, -1, 0);
- return id;
- }
-
- /**
- * @return alarm ID of snoozing alarm, -1 if snooze unset
- */
- private static int getSnoozeAlarmId(final Context context) {
- SharedPreferences prefs = context.getSharedPreferences(
- AlarmClock.PREFERENCES, 0);
- return prefs.getInt(PREF_SNOOZE_ID, -1);
- }
-
- /**
- * If there is a snooze set, enable it in AlarmManager
- * @return true if snooze is set
- */
- private static boolean enableSnoozeAlert(final Context context) {
- SharedPreferences prefs = context.getSharedPreferences(
- AlarmClock.PREFERENCES, 0);
-
- int id = prefs.getInt(PREF_SNOOZE_ID, -1);
- if (id == -1) return false;
- long atTimeInMillis = prefs.getLong(PREF_SNOOZE_TIME, -1);
- if (id == -1) return false;
- enableAlert(context, id, atTimeInMillis);
- return true;
- }
-
-
- /**
- * Tells the StatusBar whether the alarm is enabled or disabled
- */
- private static void setStatusBarIcon(Context context, boolean enabled) {
- Intent alarmChanged = new Intent(Intent.ACTION_ALARM_CHANGED);
- alarmChanged.putExtra("alarmSet", enabled);
- context.sendBroadcast(alarmChanged);
- }
-
- /**
- * Given an alarm in hours and minutes, return a time suitable for
- * setting in AlarmManager.
- * @param hour Always in 24 hour 0-23
- * @param minute 0-59
- * @param daysOfWeek 0-59
- */
- static Calendar calculateAlarm(int hour, int minute, DaysOfWeek daysOfWeek) {
-
- // start with now
- Calendar c = Calendar.getInstance();
- c.setTimeInMillis(System.currentTimeMillis());
-
- int nowHour = c.get(Calendar.HOUR_OF_DAY);
- int nowMinute = c.get(Calendar.MINUTE);
-
- // if alarm is behind current time, advance one day
- if (hour < nowHour ||
- hour == nowHour && minute <= nowMinute) {
- c.add(Calendar.DAY_OF_YEAR, 1);
- }
- c.set(Calendar.HOUR_OF_DAY, hour);
- c.set(Calendar.MINUTE, minute);
- c.set(Calendar.SECOND, 0);
- c.set(Calendar.MILLISECOND, 0);
-
- int addDays = daysOfWeek.getNextAlarm(c);
- /* Log.v("** TIMES * " + c.getTimeInMillis() + " hour " + hour +
- " minute " + minute + " dow " + c.get(Calendar.DAY_OF_WEEK) + " from now " +
- addDays); */
- if (addDays > 0) c.add(Calendar.DAY_OF_WEEK, addDays);
- return c;
- }
-
- static String formatTime(final Context context, int hour, int minute,
- DaysOfWeek daysOfWeek) {
- Calendar c = calculateAlarm(hour, minute, daysOfWeek);
- return formatTime(context, c);
- }
-
- /* used by AlarmAlert */
- static String formatTime(final Context context, Calendar c) {
- String format = get24HourMode(context) ? M24 : M12;
- return (c == null) ? "" : (String)DateFormat.format(format, c);
- }
-
- /**
- * Shows day and time -- used for lock screen
- */
- private static String formatDayAndTime(final Context context, Calendar c) {
- String format = get24HourMode(context) ? DM24 : DM12;
- return (c == null) ? "" : (String)DateFormat.format(format, c);
- }
-
- /**
- * Save time of the next alarm, as a formatted string, into the system
- * settings so those who care can make use of it.
- */
- static void saveNextAlarm(final Context context, String timeString) {
- Settings.System.putString(context.getContentResolver(),
- Settings.System.NEXT_ALARM_FORMATTED,
- timeString);
- }
-
- /**
- * @return true if clock is set to 24-hour mode
- */
- static boolean get24HourMode(final Context context) {
- return android.text.format.DateFormat.is24HourFormat(context);
- }
-}
diff --git a/src/com/android/alarmclock/AnalogGadgetProvider.java b/src/com/android/alarmclock/AnalogGadgetProvider.java
deleted file mode 100644
index 1143da586..000000000
--- a/src/com/android/alarmclock/AnalogGadgetProvider.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.alarmclock;
-
-import android.app.AlarmManager;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.ComponentName;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.Resources;
-import android.database.Cursor;
-import android.gadget.GadgetManager;
-import android.graphics.PorterDuff;
-import android.net.Uri;
-import android.provider.Calendar;
-import android.provider.Calendar.Attendees;
-import android.provider.Calendar.Calendars;
-import android.provider.Calendar.EventsColumns;
-import android.provider.Calendar.Instances;
-import android.provider.Calendar.Reminders;
-import android.text.format.DateFormat;
-import android.text.format.DateUtils;
-import android.util.Config;
-import android.util.Log;
-import android.view.View;
-import android.widget.RemoteViews;
-
-import java.util.Arrays;
-
-/**
- * Simple gadget to show analog clock.
- */
-public class AnalogGadgetProvider extends BroadcastReceiver {
- static final String TAG = "AnalogGadgetProvider";
-
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
-
- if (GadgetManager.ACTION_GADGET_UPDATE.equals(action)) {
- RemoteViews views = new RemoteViews(context.getPackageName(),
- R.layout.analog_gadget);
-
- int[] gadgetIds = intent.getIntArrayExtra(GadgetManager.EXTRA_GADGET_IDS);
-
- GadgetManager gm = GadgetManager.getInstance(context);
- gm.updateGadget(gadgetIds, views);
- }
- }
-}
-
diff --git a/src/com/android/alarmclock/ClockPicker.java b/src/com/android/alarmclock/ClockPicker.java
deleted file mode 100644
index 039f5b8a3..000000000
--- a/src/com/android/alarmclock/ClockPicker.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-package com.android.alarmclock;
-
-import android.app.Activity;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.Window;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.Gallery;
-
-/**
- * Clock face picker for the Alarm Clock application.
- */
-public class ClockPicker extends Activity implements
- AdapterView.OnItemSelectedListener, AdapterView.OnItemClickListener {
-
- private LayoutInflater mFactory;
- private Gallery mGallery;
-
- private SharedPreferences mPrefs;
- private View mClock;
- private ViewGroup mClockLayout;
- private int mPosition;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
-
- mFactory = LayoutInflater.from(this);
- setContentView(R.layout.clockpicker);
-
- mGallery = (Gallery) findViewById(R.id.gallery);
- mGallery.setAdapter(new ClockAdapter());
- mGallery.setOnItemSelectedListener(this);
- mGallery.setOnItemClickListener(this);
-
- mPrefs = getSharedPreferences(AlarmClock.PREFERENCES, 0);
- int face = mPrefs.getInt(AlarmClock.PREF_CLOCK_FACE, 0);
- if (face < 0 || face >= AlarmClock.CLOCKS.length) face = 0;
-
- mClockLayout = (ViewGroup) findViewById(R.id.clock_layout);
- mClockLayout.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- selectClock(mPosition);
- }
- });
-
- mGallery.setSelection(face, false);
- }
-
- public void onItemSelected(AdapterView parent, View v, int position, long id) {
- if (mClock != null) {
- mClockLayout.removeView(mClock);
- }
- mClock = mFactory.inflate(AlarmClock.CLOCKS[position], null);
- mClockLayout.addView(mClock, 0);
- mPosition = position;
- }
-
- public void onItemClick(AdapterView parent, View v, int position, long id) {
- selectClock(position);
- }
-
- private synchronized void selectClock(int position) {
- SharedPreferences.Editor ed = mPrefs.edit();
- ed.putInt("face", position);
- ed.commit();
-
- setResult(RESULT_OK);
- finish();
- }
-
- public void onNothingSelected(AdapterView parent) {
- }
-
- class ClockAdapter extends BaseAdapter {
-
- public ClockAdapter() {
- }
-
- public int getCount() {
- return AlarmClock.CLOCKS.length;
- }
-
- public Object getItem(int position) {
- return position;
- }
-
- public long getItemId(int position) {
- return position;
- }
-
- public View getView(final int position, View convertView, ViewGroup parent) {
- View clock = mFactory.inflate(AlarmClock.CLOCKS[position], null);
- return clock;
- }
-
- }
-}
diff --git a/src/com/android/alarmclock/DigitalClock.java b/src/com/android/alarmclock/DigitalClock.java
deleted file mode 100644
index 65dcc2c9c..000000000
--- a/src/com/android/alarmclock/DigitalClock.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-package com.android.alarmclock;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.res.Resources;
-import android.database.ContentObserver;
-import android.graphics.drawable.AnimationDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.provider.Settings;
-import android.text.format.DateFormat;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import java.util.Calendar;
-
-/**
- * Displays the time
- */
-public class DigitalClock extends LinearLayout {
-
- private final static String M12 = "h:mm";
- private final static String M24 = "k:mm";
-
- private Calendar mCalendar;
- private String mFormat;
- private TextView mTimeDisplay;
- private AmPm mAmPm;
- private boolean mAnimate;
- private ContentObserver mFormatChangeObserver;
- private boolean mLive = true;
- private boolean mAttached;
-
- /* called by system on minute ticks */
- private final Handler mHandler = new Handler();
- private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (mLive && intent.getAction().equals(
- Intent.ACTION_TIMEZONE_CHANGED)) {
- mCalendar = Calendar.getInstance();
- }
- updateTime();
- }
- };
-
- static class AmPm {
- private int mColorOn, mColorOff;
-
- private LinearLayout mAmPmLayout;
- private TextView mAm, mPm;
-
- AmPm(View parent) {
- mAmPmLayout = (LinearLayout) parent.findViewById(R.id.am_pm);
- mAm = (TextView)mAmPmLayout.findViewById(R.id.am);
- mPm = (TextView)mAmPmLayout.findViewById(R.id.pm);
-
- Resources r = parent.getResources();
- mColorOn = r.getColor(R.color.ampm_on);
- mColorOff = r.getColor(R.color.ampm_off);
- }
-
- void setShowAmPm(boolean show) {
- mAmPmLayout.setVisibility(show ? View.VISIBLE : View.GONE);
- }
-
- void setIsMorning(boolean isMorning) {
- mAm.setTextColor(isMorning ? mColorOn : mColorOff);
- mPm.setTextColor(isMorning ? mColorOff : mColorOn);
- }
- }
-
- private class FormatChangeObserver extends ContentObserver {
- public FormatChangeObserver() {
- super(new Handler());
- }
- @Override
- public void onChange(boolean selfChange) {
- setDateFormat();
- updateTime();
- }
- }
-
- public DigitalClock(Context context) {
- this(context, null);
- }
-
- public DigitalClock(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
-
- mTimeDisplay = (TextView) findViewById(R.id.timeDisplay);
- mAmPm = new AmPm(this);
- mCalendar = Calendar.getInstance();
-
- setDateFormat();
- }
-
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
-
- if (Log.LOGV) Log.v("onAttachedToWindow " + this);
-
- if (mAttached) return;
- mAttached = true;
-
- if (mAnimate) {
- AnimationDrawable frameAnimation =
- (AnimationDrawable) mContext.getResources().getDrawable(
- R.drawable.animate_circle);
- View digitalClock = findViewById(R.id.digitalClock);
- digitalClock.setBackgroundDrawable(frameAnimation);
- /* Start the animation (looped playback by default). */
- ((AnimationDrawable) digitalClock.getBackground()).start();
- /* No luck wrapping animation or individual bitmaps in a
- ScaleDrawable */
- digitalClock.requestLayout();
- }
-
- if (mLive) {
- /* monitor time ticks, time changed, timezone */
- IntentFilter filter = new IntentFilter();
- filter.addAction(Intent.ACTION_TIME_TICK);
- filter.addAction(Intent.ACTION_TIME_CHANGED);
- filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
- mContext.registerReceiver(mIntentReceiver, filter, null, mHandler);
- }
-
- /* monitor 12/24-hour display preference */
- mFormatChangeObserver = new FormatChangeObserver();
- mContext.getContentResolver().registerContentObserver(
- Settings.System.CONTENT_URI, true, mFormatChangeObserver);
-
- updateTime();
- }
-
- @Override
- protected void onDetachedFromWindow() {
- super.onDetachedFromWindow();
-
- if (!mAttached) return;
- mAttached = false;
-
- Drawable background = getBackground();
- if (background instanceof AnimationDrawable) {
- ((AnimationDrawable) background).stop();
- }
-
- if (mLive) {
- mContext.unregisterReceiver(mIntentReceiver);
- }
- mContext.getContentResolver().unregisterContentObserver(
- mFormatChangeObserver);
- }
-
-
- void updateTime(Calendar c) {
- mCalendar = c;
- updateTime();
- }
-
- private void updateTime() {
- if (mLive) {
- mCalendar.setTimeInMillis(System.currentTimeMillis());
- }
-
- CharSequence newTime = DateFormat.format(mFormat, mCalendar);
- mTimeDisplay.setText(newTime);
- mAmPm.setIsMorning(mCalendar.get(Calendar.AM_PM) == 0);
- }
-
- private void setDateFormat() {
- mFormat = Alarms.get24HourMode(mContext) ? M24 : M12;
- mAmPm.setShowAmPm(mFormat == M12);
- }
-
- void setAnimate() {
- mAnimate = true;
- }
-
- void setLive(boolean live) {
- mLive = live;
- }
-}
diff --git a/src/com/android/alarmclock/Log.java b/src/com/android/alarmclock/Log.java
deleted file mode 100644
index 18cc391d0..000000000
--- a/src/com/android/alarmclock/Log.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-/**
- * package-level logging flag
- */
-
-package com.android.alarmclock;
-
-import android.os.SystemClock;
-import android.util.Config;
-
-class Log {
- public final static String LOGTAG = "AlarmClock";
-
- static final boolean LOGV = AlarmClock.DEBUG ? Config.LOGD : Config.LOGV;
-
- static void v(String logMe) {
- android.util.Log.v(LOGTAG, /* SystemClock.uptimeMillis() + " " + */ logMe);
- }
-
- static void e(String logMe) {
- android.util.Log.e(LOGTAG, logMe);
- }
-
- static void e(String logMe, Exception ex) {
- android.util.Log.e(LOGTAG, logMe, ex);
- }
-}
diff --git a/src/com/android/alarmclock/RepeatPreference.java b/src/com/android/alarmclock/RepeatPreference.java
deleted file mode 100644
index 8313858a4..000000000
--- a/src/com/android/alarmclock/RepeatPreference.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-package com.android.alarmclock;
-
-import android.app.AlertDialog.Builder;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.preference.ListPreference;
-import android.util.AttributeSet;
-
-public class RepeatPreference extends ListPreference {
-
- private Alarms.DaysOfWeek mDaysOfWeek = new Alarms.DaysOfWeek();
- private OnRepeatChangedObserver mOnRepeatChangedObserver;
-
- public interface OnRepeatChangedObserver {
- /** RepeatPrefrence calls this to get initial state */
- public Alarms.DaysOfWeek getDaysOfWeek();
-
- /** Called when this preference has changed */
- public void onRepeatChanged(Alarms.DaysOfWeek daysOfWeek);
- }
-
- public RepeatPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- void setOnRepeatChangedObserver(OnRepeatChangedObserver onRepeatChangedObserver) {
- mOnRepeatChangedObserver = onRepeatChangedObserver;
- }
-
- @Override
- protected void onDialogClosed(boolean positiveResult) {
- if (positiveResult) {
- mOnRepeatChangedObserver.onRepeatChanged(mDaysOfWeek);
- } else {
- /* no change -- reset to initial state */
- mDaysOfWeek.set(mOnRepeatChangedObserver.getDaysOfWeek());
- }
- }
-
- @Override
- protected void onPrepareDialogBuilder(Builder builder) {
- CharSequence[] entries = getEntries();
- CharSequence[] entryValues = getEntryValues();
-
- if (entries == null || entryValues == null) {
- throw new IllegalStateException(
- "RepeatPreference requires an entries array and an entryValues array.");
- }
-
- mDaysOfWeek.set(mOnRepeatChangedObserver.getDaysOfWeek());
-
- builder.setMultiChoiceItems(
- entries, mDaysOfWeek.getBooleanArray(),
- new DialogInterface.OnMultiChoiceClickListener() {
- public void onClick(DialogInterface dialog, int which, boolean isChecked) {
- mDaysOfWeek.set(which, isChecked);
- }
- });
- }
-}
diff --git a/src/com/android/alarmclock/SetAlarm.java b/src/com/android/alarmclock/SetAlarm.java
deleted file mode 100644
index d8c9b46db..000000000
--- a/src/com/android/alarmclock/SetAlarm.java
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Copyright (C) 2007 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.
- */
-
-package com.android.alarmclock;
-
-import android.app.Activity;
-import android.app.Dialog;
-import android.app.TimePickerDialog;
-import android.content.Context;
-import android.content.Intent;
-import android.database.ContentObserver;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.preference.Preference;
-import android.preference.PreferenceActivity;
-import android.preference.CheckBoxPreference;
-import android.preference.PreferenceScreen;
-import android.text.format.DateFormat;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.widget.TimePicker;
-import android.widget.Toast;
-
-/**
- * Manages each alarm
- */
-public class SetAlarm extends PreferenceActivity
- implements Alarms.AlarmSettings, TimePickerDialog.OnTimeSetListener {
-
- private CheckBoxPreference mAlarmOnPref;
- private Preference mTimePref;
- private AlarmPreference mAlarmPref;
- private CheckBoxPreference mVibratePref;
- private RepeatPreference mRepeatPref;
- private ContentObserver mAlarmsChangeObserver;
- private MenuItem mDeleteAlarmItem;
- private MenuItem mTestAlarmItem;
-
- private int mId;
- private int mHour;
- private int mMinutes;
- private Alarms.DaysOfWeek mDaysOfWeek = new Alarms.DaysOfWeek();
-
- private boolean mReportAlarmCalled;
-
- private static final int DIALOG_TIMEPICKER = 0;
-
- private class RingtoneChangedListener implements AlarmPreference.IRingtoneChangedListener {
- public void onRingtoneChanged(Uri ringtoneUri) {
- saveAlarm(false);
- }
- }
-
- private class OnRepeatChangedObserver implements RepeatPreference.OnRepeatChangedObserver {
- public void onRepeatChanged(Alarms.DaysOfWeek daysOfWeek) {
- if (!mDaysOfWeek.equals(daysOfWeek)) {
- mDaysOfWeek.set(daysOfWeek);
- saveAlarm(true);
- }
- }
- public Alarms.DaysOfWeek getDaysOfWeek() {
- return mDaysOfWeek;
- }
- }
-
- private class AlarmsChangeObserver extends ContentObserver {
- public AlarmsChangeObserver() {
- super(new Handler());
- }
- @Override
- public void onChange(boolean selfChange) {
- Alarms.getAlarm(getContentResolver(), SetAlarm.this, mId);
- }
- }
-
- /**
- * Set an alarm. Requires an Alarms.ID to be passed in as an
- * extra
- */
- @Override
- protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- addPreferencesFromResource(R.xml.alarm_prefs);
- mAlarmOnPref = (CheckBoxPreference)findPreference("on");
- mTimePref = findPreference("time");
- mAlarmPref = (AlarmPreference) findPreference("alarm");
- mVibratePref = (CheckBoxPreference) findPreference("vibrate");
- mRepeatPref = (RepeatPreference) findPreference("setRepeat");
-
- Intent i = getIntent();
- mId = i.getIntExtra(Alarms.ID, -1);
- if (Log.LOGV) Log.v("In SetAlarm, alarm id = " + mId);
-
- mReportAlarmCalled = false;
- /* load alarm details from database */
- Alarms.getAlarm(getContentResolver(), this, mId);
- /* This should never happen, but does occasionally with the monkey.
- * I believe it's a race condition where a deleted alarm is opened
- * before the alarm list is refreshed. */
- if (!mReportAlarmCalled) {
- Log.e("reportAlarm never called!");
- finish();
- }
-
- mAlarmsChangeObserver = new AlarmsChangeObserver();
- getContentResolver().registerContentObserver(
- Alarms.AlarmColumns.CONTENT_URI, true, mAlarmsChangeObserver);
-
- mAlarmPref.setRingtoneChangedListener(new RingtoneChangedListener());
- mRepeatPref.setOnRepeatChangedObserver(new OnRepeatChangedObserver());
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- getContentResolver().unregisterContentObserver(mAlarmsChangeObserver);
- }
-
- @Override
- protected Dialog onCreateDialog(int id) {
- Dialog d;
-
- switch (id) {
- case DIALOG_TIMEPICKER:
- d = new TimePickerDialog(
- SetAlarm.this,
- this,
- 0,
- 0,
- DateFormat.is24HourFormat(SetAlarm.this));
- d.setTitle(getResources().getString(R.string.time));
- break;
- default:
- d = null;
- }
-
- return d;
- }
-
- @Override
- protected void onPrepareDialog(int id, Dialog dialog) {
- super.onPrepareDialog(id, dialog);
-
- switch (id) {
- case DIALOG_TIMEPICKER:
- TimePickerDialog timePicker = (TimePickerDialog)dialog;
- timePicker.updateTime(mHour, mMinutes);
- break;
- }
- }
-
- @Override
- public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
-
- if (preference == mTimePref) {
- showDialog(DIALOG_TIMEPICKER);
- } else if (preference == mAlarmOnPref) {
- saveAlarm(true);
- } else if (preference == mVibratePref) {
- saveAlarm(false);
- }
-
- return super.onPreferenceTreeClick(preferenceScreen, preference);
- }
-
- public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
- mHour = hourOfDay;
- mMinutes = minute;
- mAlarmOnPref.setChecked(true);
- saveAlarm(true);
- }
-
- /**
- * Alarms.AlarmSettings implementation. Database feeds current
- * settings in through this call
- */
- public void reportAlarm(
- int idx, boolean enabled, int hour, int minutes,
- Alarms.DaysOfWeek daysOfWeek, boolean vibrate,String message,
- String alert) {
-
- mHour = hour;
- mMinutes = minutes;
- mAlarmOnPref.setChecked(enabled);
- mDaysOfWeek.set(daysOfWeek);
- mVibratePref.setChecked(vibrate);
-
- if (alert == null || alert.length() == 0) {
- if (Log.LOGV) Log.v("****** reportAlarm null or 0-length alert");
- mAlarmPref.mAlert = getDefaultAlarm();
- if (mAlarmPref.mAlert == null) {
- Log.e("****** Default Alarm null");
- }
- } else {
- mAlarmPref.mAlert = Uri.parse(alert);
- if (mAlarmPref.mAlert == null) {
- Log.e("****** Parsed null alarm. URI: " + alert);
- }
- }
- if (Log.LOGV) Log.v("****** reportAlarm uri " + alert + " alert " +
- mAlarmPref.mAlert);
- updateTime();
- updateRepeat();
- updateAlarm(mAlarmPref.mAlert);
-
- mReportAlarmCalled = true;
- }
-
- /**
- * picks the first alarm available
- */
- private Uri getDefaultAlarm() {
- RingtoneManager ringtoneManager = new RingtoneManager(this);
- ringtoneManager.setType(RingtoneManager.TYPE_ALARM);
- return ringtoneManager.getRingtoneUri(0);
- }
-
- private void updateTime() {
- if (Log.LOGV) Log.v("updateTime " + mId);
- mTimePref.setSummary(Alarms.formatTime(this, mHour, mMinutes, mDaysOfWeek));
- }
-
- private void updateAlarm(Uri ringtoneUri) {
- if (Log.LOGV) Log.v("updateAlarm " + mId);
- Ringtone ringtone = RingtoneManager.getRingtone(SetAlarm.this, ringtoneUri);
- if (ringtone != null) {
- mAlarmPref.setSummary(ringtone.getTitle(SetAlarm.this));
- }
- }
-
- private void updateRepeat() {
- if (Log.LOGV) Log.v("updateRepeat " + mId);
- mRepeatPref.setSummary(mDaysOfWeek.toString(this, true));
- }
-
- private void saveAlarm(boolean popToast) {
- if (mReportAlarmCalled && mAlarmPref.mAlert != null) {
- String alertString = mAlarmPref.mAlert.toString();
- saveAlarm(this, mId, mAlarmOnPref.isChecked(), mHour, mMinutes,
- mDaysOfWeek, mVibratePref.isChecked(), alertString,
- popToast);
- }
- }
-
- /**
- * Write alarm out to persistent store and pops toast if alarm
- * enabled
- */
- private static void saveAlarm(
- Context context, int id, boolean enabled, int hour, int minute,
- Alarms.DaysOfWeek daysOfWeek, boolean vibrate, String alert,
- boolean popToast) {
- if (Log.LOGV) Log.v("** saveAlarm " + id + " " + enabled + " " + hour +
- " " + minute + " vibe " + vibrate);
-
- // Fix alert string first
- Alarms.setAlarm(context, id, enabled, hour, minute, daysOfWeek, vibrate,
- "", alert);
-
- if (enabled && popToast) {
- popAlarmSetToast(context, hour, minute, daysOfWeek);
- }
- }
-
- /**
- * Display a toast that tells the user how long until the alarm
- * goes off. This helps prevent "am/pm" mistakes.
- */
- static void popAlarmSetToast(Context context, int hour, int minute,
- Alarms.DaysOfWeek daysOfWeek) {
-
- String toastText = formatToast(context, hour, minute, daysOfWeek);
- Toast toast = Toast.makeText(context, toastText, Toast.LENGTH_LONG);
- ToastMaster.setToast(toast);
- toast.show();
- }
-
- /**
- * format "Alarm set for 2 days 7 hours and 53 minutes from
- * now"
- */
- static String formatToast(Context context, int hour, int minute,
- Alarms.DaysOfWeek daysOfWeek) {
- long alarm = Alarms.calculateAlarm(hour, minute,
- daysOfWeek).getTimeInMillis();
- long delta = alarm - System.currentTimeMillis();;
- long hours = delta / (1000 * 60 * 60);
- long minutes = delta / (1000 * 60) % 60;
- long days = hours / 24;
- hours = hours % 24;
-
- String daySeq = (days == 0) ? "" :
- (days == 1) ? context.getString(R.string.day) :
- context.getString(R.string.days, Long.toString(days));
-
- String minSeq = (minutes == 0) ? "" :
- (minutes == 1) ? context.getString(R.string.minute) :
- context.getString(R.string.minutes, Long.toString(minutes));
-
- String hourSeq = (hours == 0) ? "" :
- (hours == 1) ? context.getString(R.string.hour) :
- context.getString(R.string.hours, Long.toString(hours));
-
- boolean dispDays = days > 0;
- boolean dispHour = hours > 0;
- boolean dispMinute = minutes > 0;
-
- String ret;
- if (!(dispDays || dispHour || dispMinute)) {
- ret = context.getString(R.string.subminute);
- } else {
- String parts[] = new String[5];
- parts[0] = daySeq;
- parts[1] = !dispDays ? "" :
- dispHour && dispMinute ? context.getString(R.string.space) :
- !dispHour && !dispMinute ? "" :
- context.getString(R.string.and);
- parts[2] = dispHour ? hourSeq : "";
- parts[3] = dispHour && dispMinute ? context.getString(R.string.and) : "";
- parts[4] = dispMinute ? minSeq : "";
- ret = context.getString(R.string.combiner, (Object[])parts);
- }
-
- ret = context.getString(R.string.alarm_set, ret);
- /* if (Log.LOGV) Log.v("** TOAST daySeq " + daySeq + " hourSeq " + hourSeq +
- " minSeq " + minSeq + " ret " + ret); */
- return ret;
- }
-
- 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");
- }
-
-
- return true;
- }
-
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item == mDeleteAlarmItem) {
- Alarms.deleteAlarm(this, mId);
- finish();
- return true;
- }
- if (AlarmClock.DEBUG) {
- if (item == mTestAlarmItem) {
- setTestAlarm();
- return true;
- }
- }
-
- return false;
- }
-
-
- /**
- * Test code: this is disabled for production build. Sets
- * this alarm to go off on the next minute
- */
- void setTestAlarm() {
-
- // start with now
- java.util.Calendar c = java.util.Calendar.getInstance();
- c.setTimeInMillis(System.currentTimeMillis());
-
- int nowHour = c.get(java.util.Calendar.HOUR_OF_DAY);
- int nowMinute = c.get(java.util.Calendar.MINUTE);
-
- int minutes = (nowMinute + 1) % 60;
- int hour = nowHour + (nowMinute == 0? 1 : 0);
-
- saveAlarm(this, mId, true, hour, minutes, mDaysOfWeek, true,
- mAlarmPref.mAlert.toString(), true);
- }
-
-}
diff --git a/src/com/android/alarmclock/ToastMaster.java b/src/com/android/alarmclock/ToastMaster.java
deleted file mode 100644
index c4c281521..000000000
--- a/src/com/android/alarmclock/ToastMaster.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-package com.android.alarmclock;
-
-import android.widget.Toast;
-
-public class ToastMaster {
-
- private static Toast sToast = null;
-
- private ToastMaster() {
-
- }
-
- public static void setToast(Toast toast) {
- if (sToast != null)
- sToast.cancel();
- sToast = toast;
- }
-
- public static void cancelToast() {
- if (sToast != null)
- sToast.cancel();
- sToast = null;
- }
-
-}