HandleApiCalls.java revision 8188813bc869d3df4885f9c2972f9cc85745b59b
1/* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.deskclock; 18 19import static android.provider.AlarmClock.ACTION_SET_ALARM; 20import static android.provider.AlarmClock.ACTION_SET_TIMER; 21import static android.provider.AlarmClock.EXTRA_HOUR; 22import static android.provider.AlarmClock.EXTRA_MESSAGE; 23import static android.provider.AlarmClock.EXTRA_MINUTES; 24import static android.provider.AlarmClock.EXTRA_SKIP_UI; 25 26import android.app.Activity; 27import android.content.ContentResolver; 28import android.content.ContentValues; 29import android.content.Intent; 30import android.net.Uri; 31import android.os.Bundle; 32 33import com.android.deskclock.provider.Alarm; 34import com.android.deskclock.provider.DaysOfWeek; 35 36import java.util.Calendar; 37import java.util.List; 38 39public class HandleApiCalls extends Activity { 40 @Override 41 protected void onCreate(Bundle icicle) { 42 try { 43 super.onCreate(icicle); 44 Intent intent = getIntent(); 45 if (intent != null) { 46 if (ACTION_SET_ALARM.equals(intent.getAction())) { 47 handleSetAlarm(intent); 48 } else if (ACTION_SET_TIMER.equals(intent.getAction())) { 49 handleSetTimer(intent); 50 } 51 } 52 } finally { 53 finish(); 54 } 55 } 56 57 /*** 58 * Processes the SET_ALARM intent 59 * @param intent 60 */ 61 private void handleSetAlarm(Intent intent) { 62 63 // Intent has no time , open the alarm creation UI 64 if (!intent.hasExtra(EXTRA_HOUR)) { 65 Intent createAlarm = new Intent(this, DeskClock.class); 66 createAlarm.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 67 createAlarm.putExtra(Alarms.ALARM_CREATE_NEW, true); 68 createAlarm.putExtra(DeskClock.SELECT_TAB_INTENT_EXTRA, DeskClock.ALARM_TAB_INDEX); 69 70 startActivity(createAlarm); 71 finish(); 72 return; 73 } 74 75 final Calendar calendar = Calendar.getInstance(); 76 calendar.setTimeInMillis(System.currentTimeMillis()); 77 final int hour = intent.getIntExtra(EXTRA_HOUR, calendar.get(Calendar.HOUR_OF_DAY)); 78 final int minutes = intent.getIntExtra(EXTRA_MINUTES, calendar.get(Calendar.MINUTE)); 79 final boolean skipUi = intent.getBooleanExtra(EXTRA_SKIP_UI, false); 80 String message = intent.getStringExtra(EXTRA_MESSAGE); 81 if (message == null) { 82 message = ""; 83 } 84 85 // Check if the alarm already exists and handle it 86 ContentResolver cr = getContentResolver(); 87 List<Alarm> alarms = Alarm.getAlarms(cr, 88 Alarm.HOUR + "=" + hour + " AND " + 89 Alarm.MINUTES + "=" + minutes + " AND " + 90 Alarm.DAYS_OF_WEEK + "=" + DaysOfWeek.NO_DAYS_SET + " AND " + 91 Alarm.MESSAGE + "=?", 92 new String[] { message }); 93 if (!alarms.isEmpty()) { 94 enableAlarm(alarms.get(0), true, skipUi); 95 finish(); 96 return; 97 } 98 99 // Otherwise insert it and handle it 100 Alarm alarm = new Alarm(hour, minutes); 101 alarm.enabled = true; 102 alarm.label = message; 103 104 Uri result = cr.insert(Alarm.CONTENT_URI, Alarm.createContentValues(alarm)); 105 enableAlarm(Alarm.getAlarm(cr, Alarm.getId(result)), false, skipUi); 106 finish(); 107 } 108 109 private void handleSetTimer(Intent intent) { 110 111 } 112 113 private void enableAlarm(Alarm alarm, boolean enable, boolean skipUi) { 114 if (enable) { 115 Alarms.enableAlarm(this, alarm.id, true); 116 alarm.enabled = true; 117 } 118 AlarmUtils.popAlarmSetToast(this, alarm.calculateAlarmTime()); 119 if (skipUi) { 120 Alarms.setAlarm(this, alarm); 121 } else { 122 Intent createAlarm = new Intent(this, DeskClock.class); 123 createAlarm.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 124 createAlarm.putExtra(Alarms.ALARM_INTENT_EXTRA, alarm); 125 createAlarm.putExtra(DeskClock.SELECT_TAB_INTENT_EXTRA, DeskClock.ALARM_TAB_INDEX); 126 createAlarm.putExtra(Alarms.ALARM_INTENT_EXTRA, alarm); 127 startActivity(createAlarm); 128 } 129 } 130} 131