// 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.app.Service; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Handler; import android.os.IBinder; import com.olio.communication.actions.AndroidAction; import com.olio.communication.actions.AndroidActionBuilder; import com.olio.communication.messages.MessageBuilder; import com.olio.communication.messages.filters.FilterBuilder; import com.olio.communication.notifications.new_notifications.StreamItemBuilder; import com.olio.util.ALog; import java.util.Calendar; // Referenced classes of package com.oliodevices.assist.app.detectors: // MessageBroadcastDelegate, BroadcastDelegate public class CalendarDetector extends Service { private class CalendarContentObserver extends ContentObserver { final CalendarDetector 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 }); checkCurrentCalendar(); } public CalendarContentObserver(Handler handler) { this$0 = CalendarDetector.this; super(handler); } } private class CalendarEventReceiver extends BroadcastReceiver { final CalendarDetector this$0; public void onReceive(Context context, Intent intent) { boolean flag = true; context = (AndroidAction)intent.getSerializableExtra("notification_action"); if (context != null && context.getSenderExtra("com.oliodevices.CalendarDetector:SHOULD_DELETE_FILTER") != null && context.getSenderExtra("com.oliodevices.CalendarDetector:SHOULD_DELETE_FILTER").equals("true")) { mPreviouslyEnabled = true; } context = CalendarDetector.this; if (mPreviouslyEnabled) { flag = false; } context.mPreviouslyEnabled = flag; sendFilterUpdate(mPreviouslyEnabled); } private CalendarEventReceiver() { this$0 = CalendarDetector.this; super(); } } public static final String CALENDAR_ACTION_FILTER = "com.oliodevices.CalendarDetector:ACTION_LISTENER"; public static final String CALENDAR_EVENT_LISTENER = "com.oliodevices.CalendarDetector:EVENT_LISTENER"; public static final String CALENDAR_EXTRA_SHOULD_DELETE_FILTER = "com.oliodevices.CalendarDetector:SHOULD_DELETE_FILTER"; public static final String CALENDAR_FILTER_ID = "com.olio.CalendarDetector.filter"; public static final String CALENDAR_HOLDING_NOTIFICATIONS_ID = "com.oliodevices.CalendarDetector:HOLDING_NOTIFICATIONS_ID"; private ContentObserver mCalendarContentObserver; private CalendarEventReceiver mCalendarReceiver; private MessageBroadcastDelegate mDetectorDelegate; private boolean mPreviouslyEnabled; public CalendarDetector() { mCalendarReceiver = null; mDetectorDelegate = null; mCalendarContentObserver = null; mPreviouslyEnabled = false; } private void checkCurrentCalendar() { long l = Calendar.getInstance().getTimeInMillis(); if (android.provider.CalendarContract.Instances.query(getContentResolver(), new String[] { "event_id" }, l, l).getCount() != 0) { sendFilterUpdate(true); return; } else { sendFilterUpdate(false); return; } } private void sendFilterUpdate(boolean flag) { com.olio.communication.messages.Message message; if (flag) { message = (new MessageBuilder()).setAction(com.olio.communication.messages.Message.Action.CREATE_OR_UPDATE).setDestination("watch").setSource("phone").setPayload((new FilterBuilder()).setIdentifier("com.olio.CalendarDetector.filter").addSelectClause(com.olio.communication.messages.filters.Filter.SelectField.CATEGORY, com.olio.communication.messages.filters.Filter.FilterOperation.EQUALS, com.olio.communication.notifications.NotificationFilters.Category.SOCIAL.toString()).addUpdateClause(com.olio.communication.messages.filters.Filter.UpdateField.DISPLAY_TYPE, com.olio.communication.notifications.new_notifications.StreamItem.DisplayType.NONE.toString()).build()).build(); com.olio.communication.messages.Message message1 = (new MessageBuilder()).setAction(com.olio.communication.messages.Message.Action.CREATE_OR_UPDATE).setPayload((new StreamItemBuilder()).setVibrationType(com.olio.communication.notifications.new_notifications.StreamItem.VibrationType.NONE).setOverviewTopText("Silencing Notifications").setOverviewBottomText("Looks like you're in a meeting, swipe to make alerts active again.").setDetailTitle("Silencing Notifications").setDetailText("Looks like you're in a meeting, swipe to make alerts active again.").setNotificationId("com.oliodevices.CalendarDetector:HOLDING_NOTIFICATIONS_ID").setNotificationCategory(com.olio.communication.notifications.NotificationFilters.Category.LATER).addActionToActionList((new MessageBuilder()).setAction(com.olio.communication.messages.Message.Action.CREATE_OR_UPDATE).setSource("phone").setDestination("watch").setPayload(((AndroidActionBuilder)((AndroidActionBuilder)(new AndroidActionBuilder()).setTitle("Cancel")).setBroadcastFilter("com.oliodevices.CalendarDetector:EVENT_LISTENER").setDestination("android")).setAppId(getPackageName()).setStringExtra("com.oliodevices.CalendarDetector:SHOULD_DELETE_FILTER", "true").build()).build()).setDismissAction((new MessageBuilder()).setAction(com.olio.communication.messages.Message.Action.CREATE_OR_UPDATE).setSource("phone").setDestination("watch").setPayload(((AndroidActionBuilder)((AndroidActionBuilder)(new AndroidActionBuilder()).setTitle("Cancel")).setBroadcastFilter("com.oliodevices.CalendarDetector:EVENT_LISTENER").setDestination("android")).setAppId(getPackageName()).setStringExtra("com.oliodevices.CalendarDetector:SHOULD_DELETE_FILTER", "true").build()).build()).build()).build(); mDetectorDelegate.sendMessage(message1); } else { message = (new MessageBuilder()).setPayload((new FilterBuilder()).setIdentifier("com.olio.CalendarDetector.filter").build()).setAction(com.olio.communication.messages.Message.Action.DELETE).build(); (new MessageBuilder()).setAction(com.olio.communication.messages.Message.Action.DELETE).setSource("phone").setDestination("watch").setPayload((new StreamItemBuilder()).setNotificationId("com.oliodevices.CalendarDetector:HOLDING_NOTIFICATIONS_ID").build()).build(); } if (mDetectorDelegate != null && message != null) { mDetectorDelegate.sendMessage(message); return; } else { ALog.e("Could not send notification, because delegate is null", new Object[0]); return; } } public IBinder onBind(Intent intent) { return null; } public void onCreate() { super.onCreate(); mCalendarReceiver = new CalendarEventReceiver(); IntentFilter intentfilter = new IntentFilter("com.oliodevices.CalendarDetector:EVENT_LISTENER"); registerReceiver(mCalendarReceiver, intentfilter); mDetectorDelegate = new BroadcastDelegate(this); mCalendarContentObserver = new CalendarContentObserver(null); getContentResolver().registerContentObserver(android.provider.CalendarContract.Events.CONTENT_URI, false, mCalendarContentObserver); } public void onDestroy() { super.onDestroy(); if (mCalendarReceiver != null) { unregisterReceiver(mCalendarReceiver); } if (mCalendarContentObserver != null) { getContentResolver().unregisterContentObserver(mCalendarContentObserver); } } public int onStartCommand(Intent intent, int i, int j) { return 3; } /* static boolean access$202(CalendarDetector calendardetector, boolean flag) { calendardetector.mPreviouslyEnabled = flag; return flag; } */ }