mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-12-28 19:45:50 +01:00
Read events from android calendars, one week in the future.
- Needs new permission. - Stores the details needed for the pebble timeline and the miband - Device support to be done
This commit is contained in:
parent
ddd196fab4
commit
19afe23703
@ -16,6 +16,7 @@
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="com.fsck.k9.permission.READ_MESSAGES" />
|
||||
<uses-permission android:name="android.permission.READ_CALENDAR"/>
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.bluetooth"
|
||||
|
@ -0,0 +1,132 @@
|
||||
package nodomain.freeyourgadget.gadgetbridge.model;
|
||||
|
||||
import android.content.ContentUris;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.provider.CalendarContract;
|
||||
import android.provider.CalendarContract.Instances;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.List;
|
||||
|
||||
public class CalendarEvents {
|
||||
|
||||
// needed for pebble: time, duration, layout, reminders, actions
|
||||
// layout: type, title, subtitle, body (max 512), tinyIcon, smallIcon, largeIcon
|
||||
//further: primaryColor, secondaryColor, backgroundColor, headings, paragraphs, lastUpdated
|
||||
// taken from: https://developer.getpebble.com/guides/timeline/pin-structure/
|
||||
|
||||
// needed for miband:
|
||||
// time
|
||||
|
||||
private static final String[] EVENT_INSTANCE_PROJECTION = new String[] {
|
||||
Instances._ID,
|
||||
Instances.BEGIN,
|
||||
Instances.END,
|
||||
Instances.EVENT_ID,
|
||||
Instances.TITLE,
|
||||
Instances.DESCRIPTION,
|
||||
Instances.EVENT_LOCATION,
|
||||
Instances.CALENDAR_DISPLAY_NAME
|
||||
};
|
||||
|
||||
private static final int lookahead_days = 7;
|
||||
|
||||
private List<CalendarEvent> calendarEventList = new ArrayList<CalendarEvent>();
|
||||
|
||||
public List<CalendarEvent> getCalendarEventList(Context mContext) {
|
||||
fetchSystemEvents(mContext);
|
||||
return calendarEventList;
|
||||
}
|
||||
|
||||
private boolean fetchSystemEvents(Context mContext) {
|
||||
|
||||
Calendar cal = GregorianCalendar.getInstance();
|
||||
Long dtStart = cal.getTime().getTime();
|
||||
cal.add(Calendar.DATE, lookahead_days);
|
||||
Long dtEnd = cal.getTime().getTime();
|
||||
|
||||
Uri.Builder eventsUriBuilder = CalendarContract.Instances.CONTENT_URI.buildUpon();
|
||||
ContentUris.appendId(eventsUriBuilder, dtStart);
|
||||
ContentUris.appendId(eventsUriBuilder, dtEnd);
|
||||
Uri eventsUri = eventsUriBuilder.build();
|
||||
|
||||
Cursor evtCursor = null;
|
||||
evtCursor = mContext.getContentResolver().query(eventsUri, EVENT_INSTANCE_PROJECTION, null, null, CalendarContract.Instances.DTSTART + " ASC");
|
||||
|
||||
if (evtCursor.moveToFirst()) {
|
||||
do {
|
||||
CalendarEvent calEvent = new CalendarEvent(
|
||||
evtCursor.getLong(1),
|
||||
evtCursor.getLong(2),
|
||||
evtCursor.getLong(3),
|
||||
evtCursor.getString(4),
|
||||
evtCursor.getString(5),
|
||||
evtCursor.getString(6),
|
||||
evtCursor.getString(7)
|
||||
);
|
||||
calendarEventList.add(calEvent);
|
||||
} while(evtCursor.moveToNext());
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public class CalendarEvent {
|
||||
private long begin;
|
||||
private long end;
|
||||
private long id;
|
||||
private String title;
|
||||
private String description;
|
||||
private String location;
|
||||
private String calName;
|
||||
|
||||
public CalendarEvent(long begin, long end, long id, String title, String description, String location, String calName) {
|
||||
this.begin = begin;
|
||||
this.end = end;
|
||||
this.id = id;
|
||||
this.title = title;
|
||||
this.description = description;
|
||||
this.location = location;
|
||||
this.calName = calName;
|
||||
}
|
||||
|
||||
public long getBegin() {
|
||||
return begin;
|
||||
}
|
||||
|
||||
public long getEnd() {
|
||||
return end;
|
||||
}
|
||||
|
||||
public long getDuration() {
|
||||
return end - begin;
|
||||
}
|
||||
|
||||
|
||||
public long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public String getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public String getCalName() {
|
||||
return calName;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user