Calendar trigger
This commit is contained in:
parent
dfe8594f06
commit
fe924f6fe9
@ -515,7 +515,7 @@ public class Rule implements Comparable<Rule>
|
|||||||
{
|
{
|
||||||
boolean isActuallyToggleable = isActuallyToggable();
|
boolean isActuallyToggleable = isActuallyToggable();
|
||||||
|
|
||||||
boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this);
|
// boolean notLastActive = getLastActivatedRule() == null || !getLastActivatedRule().equals(Rule.this);
|
||||||
boolean doToggle = ruleToggle && isActuallyToggleable;
|
boolean doToggle = ruleToggle && isActuallyToggleable;
|
||||||
|
|
||||||
String message;
|
String message;
|
||||||
@ -529,6 +529,29 @@ public class Rule implements Comparable<Rule>
|
|||||||
if(Settings.startNewThreadForRuleActivation)
|
if(Settings.startNewThreadForRuleActivation)
|
||||||
publishProgress(message);
|
publishProgress(message);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Make a note of Rule/CalendarEvent executed combinations
|
||||||
|
*/
|
||||||
|
if(Rule.this.hasTriggerOfType(Trigger.Trigger_Enum.calendarEvent))
|
||||||
|
{
|
||||||
|
for(CalendarReceiver.CalendarEvent event : CalendarReceiver.getApplyingCalendarEvents(Rule.this))
|
||||||
|
{
|
||||||
|
if(!CalendarReceiver.hasEventBeenUsedInRule(Rule.this, event))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
Record only the first calendar event that matched because the rule may
|
||||||
|
be executed once for every matching event.
|
||||||
|
*/
|
||||||
|
Miscellaneous.logEvent("i", "Rule", "Executing this rule run for calender event: " + event, 5);
|
||||||
|
CalendarReceiver.addUsedPair(new CalendarReceiver.RuleEventPair(Rule.this, event));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Run actions one after another
|
||||||
|
*/
|
||||||
for(int i = 0; i< Rule.this.getActionSet().size(); i++)
|
for(int i = 0; i< Rule.this.getActionSet().size(); i++)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -628,9 +628,6 @@ public class Trigger
|
|||||||
if(!checkCalendarEvent(event, ignoreActive))
|
if(!checkCalendarEvent(event, ignoreActive))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//TODO: This line alone does not suffice and might also not be correct in some cases
|
|
||||||
CalendarReceiver.addUsedPair(new CalendarReceiver.RuleEventPair(getParentRule(), event));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +137,7 @@ public class CalendarReceiver extends BroadcastReceiver implements AutomationLis
|
|||||||
}
|
}
|
||||||
|
|
||||||
clearCaches();
|
clearCaches();
|
||||||
|
calendarEventsUsed.clear();
|
||||||
|
|
||||||
calendarReceiverActive = false;
|
calendarReceiverActive = false;
|
||||||
}
|
}
|
||||||
@ -599,7 +600,7 @@ public class CalendarReceiver extends BroadcastReceiver implements AutomationLis
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean hasEventBeenUsedInRule(Rule rule, CalendarEvent event)
|
public static boolean hasEventBeenUsedInRule(Rule rule, CalendarEvent event)
|
||||||
{
|
{
|
||||||
for (RuleEventPair executedPair : calendarEventsUsed)
|
for (RuleEventPair executedPair : calendarEventsUsed)
|
||||||
{
|
{
|
||||||
@ -609,4 +610,32 @@ public class CalendarReceiver extends BroadcastReceiver implements AutomationLis
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<CalendarReceiver.CalendarEvent> getApplyingCalendarEvents(Rule rule)
|
||||||
|
{
|
||||||
|
List<CalendarReceiver.CalendarEvent> returnList = new ArrayList<>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
List<CalendarReceiver.CalendarEvent> calendarEvents = CalendarReceiver.readCalendarEvents(AutomationService.getInstance(), true,false);
|
||||||
|
|
||||||
|
for(Trigger t : rule.getTriggerSet())
|
||||||
|
{
|
||||||
|
if(t.getTriggerType().equals(calendarEvents))
|
||||||
|
{
|
||||||
|
for (CalendarReceiver.CalendarEvent event : calendarEvents)
|
||||||
|
{
|
||||||
|
if (t.checkCalendarEvent(event, false))
|
||||||
|
returnList.add(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
Miscellaneous.logEvent("e", "getApplyingCalendarEvents()", Log.getStackTraceString(e), 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnList;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user