// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.oliodevices.assist.app.detectors; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Context; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Handler; import com.olio.communication.messages.MessageBuilder; import com.olio.data.object.bluetooth_status.BluetoothStatus; import com.olio.data.object.user.CalendarSettings; import com.olio.olios.detector.ManagedDetector; import com.olio.phone_state.CalendarComplicationData; import com.olio.phone_state.CalendarEvent; import com.olio.util.ALog; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; // Referenced classes of package com.oliodevices.assist.app.detectors: // BroadcastDelegate public class OlioCalendarComplicationUpdater implements ManagedDetector { private class CalendarContentObserver extends ContentObserver { final OlioCalendarComplicationUpdater this$0; public boolean deliverSelfNotifications() { return true; } public void onChange(boolean flag) { onChange(flag, null); } public void onChange(boolean flag, Uri uri) { ALog.d("Received change event for URI: %s", new Object[] { uri }); update(); } public CalendarContentObserver(Handler handler) { this$0 = OlioCalendarComplicationUpdater.this; super(handler); } } private static final long EVENT_PERIOD_MILLIS; private static final long UPDATE_FREQUENCY_MILLIS; private final Context context; CalendarContentObserver mCalendarObserver; public OlioCalendarComplicationUpdater(Context context1) { context = context1; } private String getEventCalendar(long l) { String s = ""; Object obj = ContentUris.withAppendedId(android.provider.CalendarContract.Events.CONTENT_URI, l); Cursor cursor = context.getContentResolver().query(((Uri) (obj)), new String[] { "calendar_displayName" }, null, null, null); obj = s; if (cursor != null) { if (cursor.moveToFirst()) { s = cursor.getString(0); } cursor.close(); obj = s; } return ((String) (obj)); } private boolean isAllDay(long l) { boolean flag = false; boolean flag1 = false; Object obj = ContentUris.withAppendedId(android.provider.CalendarContract.Events.CONTENT_URI, l); obj = context.getContentResolver().query(((Uri) (obj)), new String[] { "allDay" }, null, null, null); if (obj != null) { flag = flag1; if (((Cursor) (obj)).moveToFirst()) { if (((Cursor) (obj)).getInt(0) != 0) { flag = true; } else { flag = false; } } ((Cursor) (obj)).close(); } return flag; } public List getEventListForUser() { ArrayList arraylist = new ArrayList(); Object obj = context.getContentResolver(); long l1 = Calendar.getInstance().getTimeInMillis(); long l3 = EVENT_PERIOD_MILLIS; List list = CalendarSettings.get(context.getContentResolver()).getCalendarIdentifiers(); obj = android.provider.CalendarContract.Instances.query(((ContentResolver) (obj)), new String[] { "event_id", "begin", "end", "title", "description" }, l1, l1 + l3); if (obj != null) { int i = ((Cursor) (obj)).getColumnIndex("event_id"); int j = ((Cursor) (obj)).getColumnIndex("begin"); int k = ((Cursor) (obj)).getColumnIndex("end"); int l = ((Cursor) (obj)).getColumnIndex("title"); int i1 = ((Cursor) (obj)).getColumnIndex("description"); do { if (!((Cursor) (obj)).moveToNext()) { break; } long l2 = ((Cursor) (obj)).getLong(i); long l4 = ((Cursor) (obj)).getLong(j); long l5 = ((Cursor) (obj)).getLong(k); if (list.contains(getEventCalendar(l2)) && !isAllDay(l2)) { String s = ((Cursor) (obj)).getString(l); String s1 = ((Cursor) (obj)).getString(i1); arraylist.add(new CalendarEvent(new Date(l4), new Date(l5), s, s1)); } } while (true); ((Cursor) (obj)).close(); } Collections.sort(arraylist, new Comparator() { final OlioCalendarComplicationUpdater this$0; public int compare(CalendarEvent calendarevent, CalendarEvent calendarevent1) { return calendarevent.startTime.compareTo(calendarevent1.startTime); } public volatile int compare(Object obj1, Object obj2) { return compare((CalendarEvent)obj1, (CalendarEvent)obj2); } { this$0 = OlioCalendarComplicationUpdater.this; super(); } }); return arraylist; } public void onDisconnect() { } public void register() { mCalendarObserver = new CalendarContentObserver(null); context.getContentResolver().registerContentObserver(android.provider.CalendarContract.Events.CONTENT_URI, false, mCalendarObserver); } public boolean shouldUpdate() { return BluetoothStatus.bluetoothStatus(context.getContentResolver()).getBluetooth3ConnectionStatus() == 3; } public void unregister() { if (mCalendarObserver != null) { context.getContentResolver().unregisterContentObserver(mCalendarObserver); } } public void update() { BroadcastDelegate broadcastdelegate = new BroadcastDelegate(context); List list = getEventListForUser(); CalendarComplicationData calendarcomplicationdata = new CalendarComplicationData(); calendarcomplicationdata.setCalendarEvents(list); broadcastdelegate.sendMessage((new MessageBuilder()).setAction(com.olio.communication.messages.Message.Action.CREATE_OR_UPDATE).setPayload(calendarcomplicationdata).setDestination("watch").setSource("phone").build()); } public Long updateFrequency() { return Long.valueOf(UPDATE_FREQUENCY_MILLIS); } public boolean updateOnReconnect() { return true; } static { EVENT_PERIOD_MILLIS = TimeUnit.HOURS.toMillis(12L); UPDATE_FREQUENCY_MILLIS = TimeUnit.HOURS.toMillis(2L); } }