Introduced new permasql for noon-based times

pull/14/head
Sam Bosley 12 years ago
parent 642f84f817
commit e7fcdb20d6

@ -25,21 +25,39 @@ public final class PermaSql {
/** value to be replaced by end of day as long */ /** value to be replaced by end of day as long */
public static final String VALUE_EOD = "EOD()"; //$NON-NLS-1$ public static final String VALUE_EOD = "EOD()"; //$NON-NLS-1$
/** value to be replaced by noon today as long */
public static final String VALUE_NOON = "NOON()"; //$NON-NLS-1$
/** value to be replaced by end of day yesterday as long */ /** value to be replaced by end of day yesterday as long */
public static final String VALUE_EOD_YESTERDAY = "EODY()"; //$NON-NLS-1$ public static final String VALUE_EOD_YESTERDAY = "EODY()"; //$NON-NLS-1$
/** value to be replaced by noon yesterday as long */
public static final String VALUE_NOON_YESTERDAY = "NOONY()"; //$NON-NLS-1$
/** value to be replaced by end of day tomorrow as long */ /** value to be replaced by end of day tomorrow as long */
public static final String VALUE_EOD_TOMORROW = "EODT()"; //$NON-NLS-1$ public static final String VALUE_EOD_TOMORROW = "EODT()"; //$NON-NLS-1$
/** value to be replaced by noon tomorrow as long */
public static final String VALUE_NOON_TOMORROW = "NOONT()"; //$NON-NLS-1$
/** value to be replaced by end of day day after tomorrow as long */ /** value to be replaced by end of day day after tomorrow as long */
public static final String VALUE_EOD_DAY_AFTER = "EODTT()"; //$NON-NLS-1$ public static final String VALUE_EOD_DAY_AFTER = "EODTT()"; //$NON-NLS-1$
/** value to be replaced by noon day after tomorrow as long */
public static final String VALUE_NOON_DAY_AFTER = "NOONTT()"; //$NON-NLS-1$
/** value to be replaced by end of day next week as long */ /** value to be replaced by end of day next week as long */
public static final String VALUE_EOD_NEXT_WEEK = "EODW()"; //$NON-NLS-1$ public static final String VALUE_EOD_NEXT_WEEK = "EODW()"; //$NON-NLS-1$
/** value to be replaced by noon next week as long */
public static final String VALUE_NOON_NEXT_WEEK = "NOONW()"; //$NON-NLS-1$
/** value to be replaced by approximate end of day next month as long */ /** value to be replaced by approximate end of day next month as long */
public static final String VALUE_EOD_NEXT_MONTH = "EODM()"; //$NON-NLS-1$ public static final String VALUE_EOD_NEXT_MONTH = "EODM()"; //$NON-NLS-1$
/** value to be replaced by approximate noon next month as long */
public static final String VALUE_NOON_NEXT_MONTH = "NOONM()"; //$NON-NLS-1$
/** Replace placeholder strings with actual */ /** Replace placeholder strings with actual */
public static String replacePlaceholders(String value) { public static String replacePlaceholders(String value) {
if(value.contains(VALUE_NOW)) if(value.contains(VALUE_NOW))
@ -47,19 +65,44 @@ public final class PermaSql {
if(value.contains(VALUE_EOD) || value.contains(VALUE_EOD_DAY_AFTER) || if(value.contains(VALUE_EOD) || value.contains(VALUE_EOD_DAY_AFTER) ||
value.contains(VALUE_EOD_NEXT_WEEK) || value.contains(VALUE_EOD_TOMORROW) || value.contains(VALUE_EOD_NEXT_WEEK) || value.contains(VALUE_EOD_TOMORROW) ||
value.contains(VALUE_EOD_YESTERDAY) || value.contains(VALUE_EOD_NEXT_MONTH)) { value.contains(VALUE_EOD_YESTERDAY) || value.contains(VALUE_EOD_NEXT_MONTH)) {
Date date = new Date(); value = replaceEodValues(value);
date.setHours(23); }
date.setMinutes(59); if(value.contains(VALUE_NOON) || value.contains(VALUE_NOON_DAY_AFTER) ||
date.setSeconds(59); value.contains(VALUE_NOON_NEXT_WEEK) || value.contains(VALUE_NOON_TOMORROW) ||
long time = date.getTime() / 1000l * 1000l; // chop milliseconds off value.contains(VALUE_NOON_YESTERDAY) || value.contains(VALUE_NOON_NEXT_MONTH)) {
value = value.replace(VALUE_EOD_YESTERDAY, Long.toString(time - DateUtilities.ONE_DAY)); value = replaceNoonValues(value);
value = value.replace(VALUE_EOD, Long.toString(time));
value = value.replace(VALUE_EOD_TOMORROW, Long.toString(time + DateUtilities.ONE_DAY));
value = value.replace(VALUE_EOD_DAY_AFTER, Long.toString(time + 2 * DateUtilities.ONE_DAY));
value = value.replace(VALUE_EOD_NEXT_WEEK, Long.toString(time + 7 * DateUtilities.ONE_DAY));
value = value.replace(VALUE_EOD_NEXT_MONTH, Long.toString(time + 30 * DateUtilities.ONE_DAY));
} }
return value; return value;
} }
private static String replaceEodValues(String value) {
Date date = new Date();
date.setHours(23);
date.setMinutes(59);
date.setSeconds(59);
long time = date.getTime() / 1000l * 1000l; // chop milliseconds off
value = value.replace(VALUE_EOD_YESTERDAY, Long.toString(time - DateUtilities.ONE_DAY));
value = value.replace(VALUE_EOD, Long.toString(time));
value = value.replace(VALUE_EOD_TOMORROW, Long.toString(time + DateUtilities.ONE_DAY));
value = value.replace(VALUE_EOD_DAY_AFTER, Long.toString(time + 2 * DateUtilities.ONE_DAY));
value = value.replace(VALUE_EOD_NEXT_WEEK, Long.toString(time + 7 * DateUtilities.ONE_DAY));
value = value.replace(VALUE_EOD_NEXT_MONTH, Long.toString(time + 30 * DateUtilities.ONE_DAY));
return value;
}
private static String replaceNoonValues(String value) {
Date date = new Date();
date.setHours(12);
date.setMinutes(0);
date.setSeconds(0);
long time = date.getTime() / 1000l * 1000l; // chop milliseconds off
value = value.replace(VALUE_NOON_YESTERDAY, Long.toString(time - DateUtilities.ONE_DAY));
value = value.replace(VALUE_NOON, Long.toString(time));
value = value.replace(VALUE_NOON_TOMORROW, Long.toString(time + DateUtilities.ONE_DAY));
value = value.replace(VALUE_NOON_DAY_AFTER, Long.toString(time + 2 * DateUtilities.ONE_DAY));
value = value.replace(VALUE_NOON_NEXT_WEEK, Long.toString(time + 7 * DateUtilities.ONE_DAY));
value = value.replace(VALUE_NOON_NEXT_MONTH, Long.toString(time + 30 * DateUtilities.ONE_DAY));
return value;
}
} }

@ -87,7 +87,7 @@ public final class CustomFilterExposer extends BroadcastReceiver implements Astr
// stock filters // stock filters
String todayTitle = AndroidUtilities.capitalize(r.getString(R.string.today)); String todayTitle = AndroidUtilities.capitalize(r.getString(R.string.today));
ContentValues todayValues = new ContentValues(); ContentValues todayValues = new ContentValues();
todayValues.put(Task.DUE_DATE.name, PermaSql.VALUE_EOD); todayValues.put(Task.DUE_DATE.name, PermaSql.VALUE_NOON);
list[0] = new Filter(todayTitle, list[0] = new Filter(todayTitle,
todayTitle, todayTitle,
new QueryTemplate().where( new QueryTemplate().where(

@ -39,8 +39,7 @@ import com.timsu.astrid.R;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.DisposableTaskListFragment;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.repeats.RepeatControlSet; import com.todoroo.astrid.repeats.RepeatControlSet;
@ -56,7 +55,7 @@ import com.todoroo.astrid.ui.NumberPicker;
* @author timsu * @author timsu
* *
*/ */
public class NotificationFragment extends TaskListFragment implements OnTimeSetListener, SnoozeCallback { public class NotificationFragment extends DisposableTaskListFragment implements OnTimeSetListener, SnoozeCallback {
// --- constants // --- constants
@ -106,16 +105,6 @@ public class NotificationFragment extends TaskListFragment implements OnTimeSetL
new ReminderDialog((AstridActivity) getActivity(), taskId, title).show(); new ReminderDialog((AstridActivity) getActivity(), taskId, title).show();
} }
@Override
public void onDetach() {
Activity activity = getActivity();
if (activity instanceof TaskListActivity) {
TaskListActivity tla = (TaskListActivity) activity;
tla.getFragmentPagerAdapter().remove(filter);
}
super.onDetach();
}
public static class SnoozeDialog extends FrameLayout implements DialogInterface.OnClickListener { public static class SnoozeDialog extends FrameLayout implements DialogInterface.OnClickListener {
LinearLayout snoozePicker; LinearLayout snoozePicker;

@ -0,0 +1,22 @@
package com.todoroo.astrid.activity;
import android.app.Activity;
/**
* Task list fragment that will remove itself from the filterlist/fragment pager when it is detached
* @author Sam
*
*/
public class DisposableTaskListFragment extends TaskListFragment {
@Override
public void onDetach() {
Activity activity = getActivity();
if (activity instanceof TaskListActivity) {
TaskListActivity tla = (TaskListActivity) activity;
tla.getFragmentPagerAdapter().remove(filter);
}
super.onDetach();
}
}
Loading…
Cancel
Save