Minor tweaks to reminder logic

pull/14/head
Tim Su 15 years ago
parent 7aeb675caa
commit 12ab4ab16d

@ -30,8 +30,8 @@ import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
@ -42,13 +42,14 @@ import android.widget.TimePicker;
import com.timsu.astrid.R;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.repeats.RepeatControlSet;
import com.todoroo.astrid.service.StartupService;
import com.todoroo.astrid.ui.NumberPicker;
import com.todoroo.andlib.utility.Preferences;
/**
* This activity is launched when a user opens up a notification from the
@ -70,6 +71,8 @@ public class NotificationActivity extends TaskListActivity implements OnTimeSetL
@Override
public void onCreate(Bundle savedInstanceState) {
StartupService.bypassInitialization();
super.onCreate(savedInstanceState);
displayNotificationPopup();

@ -235,22 +235,26 @@ public class Notifications extends BroadcastReceiver {
int callState = tm.getCallState();
boolean voiceReminder = Preferences.getBoolean(R.string.p_voiceRemindersEnabled, false);
// if non-stop mode is activated, set up the flags for insistent
// if multi-ring is activated, set up the flags for insistent
// notification, and increase the volume to full volume, so the user
// will actually pay attention to the alarm
if(ringTimes < 0 && (type != ReminderService.TYPE_RANDOM)) {
notification.flags |= Notification.FLAG_INSISTENT;
if(ringTimes != 1 && (type != ReminderService.TYPE_RANDOM)) {
notification.audioStreamType = AudioManager.STREAM_ALARM;
audioManager.setStreamVolume(AudioManager.STREAM_ALARM,
audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), 0);
voiceReminder = false;
// insistent rings until notification is disabled
if(ringTimes < 0) {
notification.flags |= Notification.FLAG_INSISTENT;
voiceReminder = false;
}
} else {
notification.audioStreamType = AudioManager.STREAM_NOTIFICATION;
if(ringTimes > 3)
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,
audioManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION), 0);
}
// quiet hours = no sound
if(quietHours || callState != TelephonyManager.CALL_STATE_IDLE) {
notification.sound = null;

@ -21,11 +21,11 @@ import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.andlib.utility.Preferences;
/**
@ -177,6 +177,18 @@ public final class ReminderService {
// notifications after due date
long whenOverdue = calculateNextOverdueReminder(task);
/*if(Constants.DEBUG) {
System.err.println("TASK: " + task.getValue(Task.TITLE));
System.err.println("LAST REMINDER: " + new Date(task.getValue(Task.REMINDER_LAST)));
if(task.hasDueDate())
System.err.println("DUEDATE: " + new Date(task.getValue(Task.DUE_DATE)));
System.err.println("WHEN OVERDUE: " + (whenOverdue));
System.err.println("WHEN DUED: " + (whenDueDate));
System.err.println("WHEN SNOOZ: " + (whenSnooze));
System.err.println("WHEN RANDO: " + (whenRandom));
}*/
// if random reminders are too close to due date, favor due date
if(whenRandom != NO_ALARM && whenDueDate - whenRandom < DateUtilities.ONE_DAY)
whenRandom = NO_ALARM;
@ -355,7 +367,7 @@ public final class ReminderService {
if(time < DateUtilities.now())
time = DateUtilities.now() + 5000L;
if(Constants.DEBUG)
if(Constants.DEBUG)
Log.e("Astrid", "Reminder (" + task.getId() + ", " + type +
") set for " + new Date(time));
am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);

@ -79,11 +79,25 @@ public class StartupService {
*/
private static boolean hasStartedUp = false;
/**
* Call to skip initialization steps (i.e. if only a notification screen is needed)
*/
public synchronized static void bypassInitialization() {
hasStartedUp = true;
}
/** Called when this application is started up */
public synchronized void onStartupApplication(final Context context) {
if(hasStartedUp)
return;
// set uncaught exception handler
Thread.setDefaultUncaughtExceptionHandler(new TodorooUncaughtExceptionHandler());
// sets up context manager
ContextManager.setContext(context);
// show notification if reminders are silenced
if(context instanceof Activity) {
AudioManager audioManager = (AudioManager)context.getSystemService(
Context.AUDIO_SERVICE);
@ -91,12 +105,6 @@ public class StartupService {
Toast.makeText(context, R.string.TLA_notification_volume_low, Toast.LENGTH_LONG).show();
}
// set uncaught exception handler
Thread.setDefaultUncaughtExceptionHandler(new TodorooUncaughtExceptionHandler());
// sets up context manager
ContextManager.setContext(context);
// read current version
int latestSetVersion = AstridPreferences.getCurrentVersion();
int version = 0;

Loading…
Cancel
Save