adding monthly repetition + some corrections

This commit is contained in:
tibbi
2016-09-11 20:07:42 +02:00
parent 85b124bf87
commit 82225ae58d
10 changed files with 23 additions and 12 deletions

View File

@ -9,6 +9,7 @@ public class Constants {
public static final int DAY = 86400; public static final int DAY = 86400;
public static final int WEEK = 604800; public static final int WEEK = 604800;
public static final int MONTH = 2592000;
public static final int YEAR = 31536000; public static final int YEAR = 31536000;
// Shared Preferences // Shared Preferences

View File

@ -162,15 +162,11 @@ public class DBHelper extends SQLiteOpenHelper {
public void getEvents(int fromTS, int toTS) { public void getEvents(int fromTS, int toTS) {
List<Event> events = new ArrayList<>(); List<Event> events = new ArrayList<>();
if (fromTS == toTS) {
events.addAll(getEventsFor(fromTS));
} else {
for (int ts = fromTS; ts <= toTS; ts += Constants.DAY) { for (int ts = fromTS; ts <= toTS; ts += Constants.DAY) {
events.addAll(getEventsFor(ts)); events.addAll(getEventsFor(ts));
} }
}
final String selection = COL_START_TS + " <= ? AND " + COL_END_TS + " >= ?"; final String selection = COL_START_TS + " <= ? AND " + COL_END_TS + " >= ? AND " + COL_REPEAT_INTERVAL + " IS NULL";
final String[] selectionArgs = {String.valueOf(toTS), String.valueOf(fromTS)}; final String[] selectionArgs = {String.valueOf(toTS), String.valueOf(fromTS)};
final Cursor cursor = getEventsCursor(selection, selectionArgs); final Cursor cursor = getEventsCursor(selection, selectionArgs);
if (cursor != null) { if (cursor != null) {
@ -183,9 +179,9 @@ public class DBHelper extends SQLiteOpenHelper {
private List<Event> getEventsFor(int ts) { private List<Event> getEventsFor(int ts) {
List<Event> newEvents = new ArrayList<>(); List<Event> newEvents = new ArrayList<>();
final int dayExclusive = Constants.DAY; final int dayExclusive = Constants.DAY -1;
final String selection = "(? - " + COL_REPEAT_START + ") % " + COL_REPEAT_INTERVAL + " BETWEEN 0 AND " + dayExclusive; final String selection = "(? - " + COL_REPEAT_START + ") % " + COL_REPEAT_INTERVAL + " BETWEEN 0 AND " + dayExclusive;
final String[] selectionArgs = {String.valueOf(ts)}; final String[] selectionArgs = {String.valueOf(ts + 84600)};
final Cursor cursor = getEventsCursor(selection, selectionArgs); final Cursor cursor = getEventsCursor(selection, selectionArgs);
if (cursor != null) { if (cursor != null) {
newEvents = fillEvents(cursor); newEvents = fillEvents(cursor);
@ -197,13 +193,15 @@ public class DBHelper extends SQLiteOpenHelper {
} }
private void updateEventTimes(Event e, int ts) { private void updateEventTimes(Event e, int ts) {
final int periods = (ts - e.getStartTS()) / e.getRepeatInterval(); final int periods = (ts - e.getStartTS() + Constants.DAY) / e.getRepeatInterval();
DateTime currStart = new DateTime(e.getStartTS() * 1000L, DateTimeZone.getDefault()); DateTime currStart = new DateTime(e.getStartTS() * 1000L, DateTimeZone.getDefault());
DateTime newStart; DateTime newStart;
if (e.getRepeatInterval() == Constants.DAY) { if (e.getRepeatInterval() == Constants.DAY) {
newStart = currStart.plusDays(periods); newStart = currStart.plusDays(periods);
} else if (e.getRepeatInterval() == Constants.WEEK) { } else if (e.getRepeatInterval() == Constants.WEEK) {
newStart = currStart.plusWeeks(periods); newStart = currStart.plusWeeks(periods);
} else if (e.getRepeatInterval() == Constants.MONTH) {
newStart = currStart.plusMonths(periods);
} else { } else {
newStart = currStart.plusYears(periods); newStart = currStart.plusYears(periods);
} }

View File

@ -164,8 +164,9 @@ public class DayActivity extends SimpleActivity
} }
private void checkEvents() { private void checkEvents() {
final int startTS = Formatter.getDayStartTS(mDayCode);
final int endTS = Formatter.getDayEndTS(mDayCode); final int endTS = Formatter.getDayEndTS(mDayCode);
DBHelper.newInstance(getApplicationContext(), this).getEvents(endTS, endTS); DBHelper.newInstance(getApplicationContext(), this).getEvents(startTS, endTS);
} }
private void updateEvents(List<Event> events) { private void updateEvents(List<Event> events) {

View File

@ -134,9 +134,12 @@ public class EventActivity extends SimpleActivity implements DBHelper.DBOperatio
case Constants.WEEK: case Constants.WEEK:
mRepetition.setSelection(2); mRepetition.setSelection(2);
break; break;
case Constants.YEAR: case Constants.MONTH:
mRepetition.setSelection(3); mRepetition.setSelection(3);
break; break;
case Constants.YEAR:
mRepetition.setSelection(4);
break;
default: default:
mRepetition.setSelection(0); mRepetition.setSelection(0);
break; break;
@ -244,6 +247,8 @@ public class EventActivity extends SimpleActivity implements DBHelper.DBOperatio
case 2: case 2:
return Constants.WEEK; return Constants.WEEK;
case 3: case 3:
return Constants.MONTH;
case 4:
return Constants.YEAR; return Constants.YEAR;
default: default:
return 0; return 0;

View File

@ -25,6 +25,7 @@
<string name="none">None</string> <string name="none">None</string>
<string name="daily">Daily</string> <string name="daily">Daily</string>
<string name="weekly">Weekly</string> <string name="weekly">Weekly</string>
<string name="monthly">Monthly</string>
<string name="yearly">Yearly</string> <string name="yearly">Yearly</string>
<!-- Day details --> <!-- Day details -->

View File

@ -25,6 +25,7 @@
<string name="none">None</string> <string name="none">None</string>
<string name="daily">Daily</string> <string name="daily">Daily</string>
<string name="weekly">Weekly</string> <string name="weekly">Weekly</string>
<string name="monthly">Monthly</string>
<string name="yearly">Yearly</string> <string name="yearly">Yearly</string>
<!-- Day details --> <!-- Day details -->

View File

@ -25,6 +25,7 @@
<string name="none">None</string> <string name="none">None</string>
<string name="daily">Daily</string> <string name="daily">Daily</string>
<string name="weekly">Weekly</string> <string name="weekly">Weekly</string>
<string name="monthly">Monthly</string>
<string name="yearly">Yearly</string> <string name="yearly">Yearly</string>
<!-- Day details --> <!-- Day details -->

View File

@ -25,6 +25,7 @@
<string name="none">None</string> <string name="none">None</string>
<string name="daily">Daily</string> <string name="daily">Daily</string>
<string name="weekly">Weekly</string> <string name="weekly">Weekly</string>
<string name="monthly">Monthly</string>
<string name="yearly">Yearly</string> <string name="yearly">Yearly</string>
<!-- Day details --> <!-- Day details -->

View File

@ -10,6 +10,7 @@
<item>@string/none</item> <item>@string/none</item>
<item>@string/daily</item> <item>@string/daily</item>
<item>@string/weekly</item> <item>@string/weekly</item>
<item>@string/monthly</item>
<item>@string/yearly</item> <item>@string/yearly</item>
</string-array> </string-array>
</resources> </resources>

View File

@ -25,6 +25,7 @@
<string name="none">None</string> <string name="none">None</string>
<string name="daily">Daily</string> <string name="daily">Daily</string>
<string name="weekly">Weekly</string> <string name="weekly">Weekly</string>
<string name="monthly">Monthly</string>
<string name="yearly">Yearly</string> <string name="yearly">Yearly</string>
<!-- Day details --> <!-- Day details -->