Skip to content

Commit

Permalink
Set Google calendar's default notification properly on Outlook appoin…
Browse files Browse the repository at this point in the history
…tment.

#1318
  • Loading branch information
phw198 committed Oct 23, 2021
1 parent dc08c6e commit 0d8772d
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 14 deletions.
6 changes: 3 additions & 3 deletions src/OutlookGoogleCalendarSync/GoogleOgcs/GoogleCalendar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public enum ApiException {
throwException
}
private static Random random = new Random();
public long MinDefaultReminder = long.MinValue;
public int MinDefaultReminder = int.MinValue;
public Int16 UTCoffset { get; internal set; }
public String SubscriptionInvite {
get {
Expand Down Expand Up @@ -1461,12 +1461,12 @@ public void GetSettings() {
}
}
private void getCalendarSettings() {
if (!Settings.Instance.AddReminders || !Settings.Instance.UseGoogleDefaultReminder) return;
if (!Settings.Instance.AddReminders) return;

CalendarListResource.GetRequest request = Service.CalendarList.Get(Settings.Instance.UseGoogleCalendar.Id);
CalendarListEntry cal = request.Execute();
if (cal.DefaultReminders.Count == 0)
this.MinDefaultReminder = long.MinValue;
this.MinDefaultReminder = int.MinValue;
else
this.MinDefaultReminder = cal.DefaultReminders.Where(x => x.Method.Equals("popup")).OrderBy(x => x.Minutes.Value).First().Minutes.Value;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@
<CodeAnalysisRuleSet>ManagedMinimumRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
<OutputPath>bin\Release-clean\</OutputPath>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<FileAlignment>4096</FileAlignment>
Expand Down
31 changes: 21 additions & 10 deletions src/OutlookGoogleCalendarSync/OutlookOgcs/OutlookCalendar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -310,14 +310,17 @@ private void createCalendarEntry(Event ev, ref AppointmentItem ai) {

//Reminder alert
if (Settings.Instance.AddReminders) {
if (ev.Reminders != null && ev.Reminders.Overrides != null && ev.Reminders.Overrides.Any(r => r.Method == "popup")) {
if (ev.Reminders?.Overrides?.Any(r => r.Method == "popup") ?? false) {
ai.ReminderSet = true;
try {
EventReminder reminder = ev.Reminders.Overrides.Where(r => r.Method == "popup").OrderBy(x => x.Minutes).First();
ai.ReminderMinutesBeforeStart = (int)reminder.Minutes;
} catch (System.Exception ex) {
OGCSexception.Analyse("Failed setting Outlook reminder for final popup Google notification.", ex);
}
} else if ((ev.Reminders?.UseDefault ?? false) && GoogleOgcs.Calendar.Instance.MinDefaultReminder != int.MinValue) {
ai.ReminderSet = true;
ai.ReminderMinutesBeforeStart = GoogleOgcs.Calendar.Instance.MinDefaultReminder;
} else {
ai.ReminderSet = Settings.Instance.UseOutlookDefaultReminder;
}
Expand Down Expand Up @@ -627,28 +630,36 @@ public Boolean UpdateCalendarEntry(ref AppointmentItem ai, Event ev, ref int ite
}

//Reminders
Boolean googleReminders = ev.Reminders != null && ev.Reminders.Overrides != null && ev.Reminders.Overrides.Any(r => r.Method == "popup");
Boolean googleReminders = ev.Reminders?.Overrides?.Any(r => r.Method == "popup") ?? false;
int reminderMins = int.MinValue;
if (Settings.Instance.AddReminders) {
if (googleReminders) {
//Find the last popup reminder in Google
EventReminder reminder = ev.Reminders.Overrides.Where(r => r.Method == "popup").OrderBy(r => r.Minutes).First();
reminderMins = (int)reminder.Minutes;
} else if (ev.Reminders?.UseDefault ?? false) {
reminderMins = GoogleOgcs.Calendar.Instance.MinDefaultReminder;
}

if (reminderMins != int.MinValue) {
try {
EventReminder reminder = ev.Reminders.Overrides.Where(r => r.Method == "popup").OrderBy(r => r.Minutes).First();
if (ai.ReminderSet) {
if (Sync.Engine.CompareAttribute("Reminder", Sync.Direction.GoogleToOutlook, reminder.Minutes.ToString(), ai.ReminderMinutesBeforeStart.ToString(), sb, ref itemModified)) {
ai.ReminderMinutesBeforeStart = (int)reminder.Minutes;
if (Sync.Engine.CompareAttribute("Reminder", Sync.Direction.GoogleToOutlook, reminderMins.ToString(), ai.ReminderMinutesBeforeStart.ToString(), sb, ref itemModified)) {
ai.ReminderMinutesBeforeStart = reminderMins;
}
} else {
sb.AppendLine("Reminder: nothing => " + reminder.Minutes);
sb.AppendLine("Reminder: nothing => " + reminderMins);
ai.ReminderSet = true;
ai.ReminderMinutesBeforeStart = (int)reminder.Minutes;
ai.ReminderMinutesBeforeStart = reminderMins;
itemModified++;
} //if Outlook reminders set
}
} catch (System.Exception ex) {
OGCSexception.Analyse("Failed setting Outlook reminder for final popup Google notification.", ex);
}
}

} else if (!googleReminders) {
}
if (!googleReminders && (!(ev.Reminders?.UseDefault ?? false) || reminderMins == int.MinValue)) {
if (ai.ReminderSet && !Settings.Instance.UseOutlookDefaultReminder) {
sb.AppendLine("Reminder: " + ai.ReminderMinutesBeforeStart + " => removed");
ai.ReminderSet = false;
Expand Down Expand Up @@ -1413,7 +1424,7 @@ public Boolean IsOKtoSyncReminder(AppointmentItem ai) {
if (ai.ReminderSet)
alarm = ai.Start.AddMinutes(-ai.ReminderMinutesBeforeStart);
else {
if (Settings.Instance.UseGoogleDefaultReminder && GoogleOgcs.Calendar.Instance.MinDefaultReminder != long.MinValue) {
if (Settings.Instance.UseGoogleDefaultReminder && GoogleOgcs.Calendar.Instance.MinDefaultReminder != int.MinValue) {
log.Fine("Using default Google reminder value: " + GoogleOgcs.Calendar.Instance.MinDefaultReminder);
alarm = ai.Start.AddMinutes(-GoogleOgcs.Calendar.Instance.MinDefaultReminder);
} else
Expand Down

0 comments on commit 0d8772d

Please sign in to comment.