/*
* Copyright (C) 2010 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.deskclock;
import android.app.Activity;
import android.content.Context;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import static android.provider.AlarmClock.ACTION_SET_ALARM;
import static android.provider.AlarmClock.EXTRA_HOUR;
import static android.provider.AlarmClock.EXTRA_MESSAGE;
import static android.provider.AlarmClock.EXTRA_MINUTES;
import java.util.Calendar;
public class HandleSetAlarm extends Activity {
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
Intent intent = getIntent();
if (intent == null || !ACTION_SET_ALARM.equals(intent.getAction())) {
finish();
return;
} else if (!intent.hasExtra(EXTRA_HOUR)) {
startActivity(new Intent(this, AlarmClock.class));
finish();
return;
}
final Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
final int hour = intent.getIntExtra(EXTRA_HOUR,
calendar.get(Calendar.HOUR_OF_DAY));
final int minutes = intent.getIntExtra(EXTRA_MINUTES,
calendar.get(Calendar.MINUTE));
String message = intent.getStringExtra(EXTRA_MESSAGE);
if (message == null) {
message = "";
}
Cursor c = null;
long timeInMillis = Alarms.calculateAlarm(hour, minutes,
new Alarm.DaysOfWeek(0)).getTimeInMillis();
try {
c = getContentResolver().query(
Alarm.Columns.CONTENT_URI,
new String[] { Alarm.Columns._ID },
Alarm.Columns.HOUR + "=" + hour + " AND " +
Alarm.Columns.MINUTES + "=" + minutes + " AND " +
Alarm.Columns.DAYS_OF_WEEK + "=0 AND " +
Alarm.Columns.MESSAGE + "=?",
new String[] { message }, null);
if (c != null && c.moveToFirst()) {
// Enable the first alarm we find.
Alarms.enableAlarm(this, c.getInt(0), true);
SetAlarm.popAlarmSetToast(this, timeInMillis);
finish();
return;
}
} finally {
if (c != null) c.close();
}
ContentValues values = new ContentValues();
values.put(Alarm.Columns.HOUR, hour);
values.put(Alarm.Columns.MINUTES, minutes);
values.put(Alarm.Columns.MESSAGE, message);
values.put(Alarm.Columns.ENABLED, 1);
values.put(Alarm.Columns.VIBRATE, 1);
values.put(Alarm.Columns.DAYS_OF_WEEK, 0);
values.put(Alarm.Columns.ALARM_TIME, timeInMillis);
if (getContentResolver().insert(
Alarm.Columns.CONTENT_URI, values) != null) {
SetAlarm.popAlarmSetToast(this, timeInMillis);
Alarms.setNextAlert(this);
}
finish();
}
}