public OutlookFolder (string entryId, string storeId, OlItemType defaultItemType, string name) { EntryId = entryId; StoreId = storeId; DefaultItemType = defaultItemType; Name = name; }
public OutlookFolder(string entryId, string storeId, OlItemType defaultItemType, string name) { EntryId = entryId; StoreId = storeId; DefaultItemType = defaultItemType; Name = name; }
public OutlookFolderDescriptor(string entryId, string storeId, OlItemType defaultItemType, string name, int itemCount) { EntryId = entryId; StoreId = storeId; DefaultItemType = defaultItemType; Name = name; ItemCount = itemCount; }
private void findCalendars(Folders folders, Dictionary <string, MAPIFolder> calendarFolders, String excludeDeletedFolder, MAPIFolder defaultCalendar = null) { //Initiate progress bar (red line underneath "Getting calendars" text) System.Drawing.Graphics g = MainForm.Instance.tabOutlook.CreateGraphics(); System.Drawing.Pen p = new System.Drawing.Pen(System.Drawing.Color.Red, 3); System.Drawing.Point startPoint = new System.Drawing.Point(MainForm.Instance.lOutlookCalendar.Location.X, MainForm.Instance.lOutlookCalendar.Location.Y + MainForm.Instance.lOutlookCalendar.Size.Height + 3); double stepSize = MainForm.Instance.lOutlookCalendar.Size.Width / folders.Count; int fldCnt = 0; foreach (MAPIFolder folder in folders) { fldCnt++; System.Drawing.Point endPoint = new System.Drawing.Point(MainForm.Instance.lOutlookCalendar.Location.X + Convert.ToInt16(fldCnt * stepSize), MainForm.Instance.lOutlookCalendar.Location.Y + MainForm.Instance.lOutlookCalendar.Size.Height + 3); try { g.DrawLine(p, startPoint, endPoint); } catch { /*May get GDI+ error if g has been repainted*/ } System.Windows.Forms.Application.DoEvents(); try { OlItemType defaultItemType = folder.DefaultItemType; if (defaultItemType == OlItemType.olAppointmentItem) { if (defaultCalendar == null || (folder.EntryID != defaultCalendar.EntryID)) { calendarFolders.Add(folder.Name, folder); } } if (folder.EntryID != excludeDeletedFolder && folder.Folders.Count > 0) { findCalendars(folder.Folders, calendarFolders, excludeDeletedFolder, defaultCalendar); } } catch (System.Exception ex) { OGCSexception.Analyse(ex); if (oApp.Session.ExchangeConnectionMode.ToString().Contains("Disconnected") || ex.Message.StartsWith("Network problems are preventing connection to Microsoft Exchange.") || OGCSexception.GetErrorCode(ex, 0x000FFFFF) == "0x00040115") { log.Info("Currently disconnected from Exchange - unable to retrieve MAPI folders."); MainForm.Instance.ToolTips.SetToolTip(MainForm.Instance.cbOutlookCalendars, "The Outlook calendar to synchonize with.\nSome may not be listed as you are currently disconnected."); } else { log.Error("Failed to recurse MAPI folders."); log.Error(ex.Message); MessageBox.Show("A problem was encountered when searching for Outlook calendar folders.", "Calendar Folders", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } p.Dispose(); try { g.Clear(System.Drawing.Color.White); } catch { } g.Dispose(); System.Windows.Forms.Application.DoEvents(); }
private static string NameProperty(OlItemType type) { if (type == OlItemType.olContactItem) { return("FileAs"); } else { return(null); } }
public static MappingConfigurationBase CoreceMappingConfiguration (OlItemType? outlookFolderType, MappingConfigurationBase mappingConfiguration) { switch (outlookFolderType) { case OlItemType.olAppointmentItem: if (mappingConfiguration == null || mappingConfiguration.GetType() != typeof (EventMappingConfiguration)) return new EventMappingConfiguration(); break; case OlItemType.olContactItem: if (mappingConfiguration == null || mappingConfiguration.GetType() != typeof (ContactMappingConfiguration)) return new ContactMappingConfiguration(); break; } return mappingConfiguration; }
public void OpenOutlookItem(OlItemType type, string EntryID) { try { //Open existing Task Item by EntryId if (type is OlItemType.olTaskItem) { (GetOutlookNameSpace().GetItemFromID(EntryID) as TaskItem).Display(); } //Open existing Appointment Item by EntryId if (type is OlItemType.olAppointmentItem) { (GetOutlookNameSpace().GetItemFromID(EntryID) as AppointmentItem).Display(); } } catch { /*Might happen if outlook is closed or item not exists, bad luck*/ } }
public void NewOutlookItem(OlItemType type) { try { //Create new Outlook Task and display UI to user if (type is OlItemType.olTaskItem) { (GetOutlookApplication().CreateItem(type) as TaskItem).Display(); } //Create new Outlook Appointment and display UI to user if (type is OlItemType.olAppointmentItem) { (GetOutlookApplication().CreateItem(type) as AppointmentItem).Display(); } } catch { /*Might happen if outlook is closed or item not exists, bad luck*/ } }
public static string DoSrvLookup(string serverEmail, OlItemType selectedOutlookFolderType, out bool success) { string emailDomain = serverEmail.Substring(serverEmail.IndexOf('@') + 1); string lookupUrl = "https://" + emailDomain; success = false; string srvBase = selectedOutlookFolderType == OlItemType.olContactItem ? "_carddav" : "_caldav"; string lookupString = srvBase + "s._tcp." + emailDomain; var srvRecordsCaldavs = DnsQueryHelper.GetSRVRecordList(lookupString); if (srvRecordsCaldavs.Count > 0) { lookupUrl = "https://" + srvRecordsCaldavs[0]; success = true; var txtRecords = DnsQueryHelper.GetTxtRecord(lookupString); if (txtRecords != null && txtRecords.StartsWith("path=")) { lookupUrl += txtRecords.Substring(txtRecords.IndexOf('=') + 1); } } else { lookupString = srvBase + "._tcp." + emailDomain; var srvRecordsCaldav = DnsQueryHelper.GetSRVRecordList(lookupString); if (srvRecordsCaldav.Count > 0) { lookupUrl = "http://" + srvRecordsCaldav[0]; success = true; var txtRecords = DnsQueryHelper.GetTxtRecord(lookupString); if (txtRecords != null && txtRecords.StartsWith("path=")) { lookupUrl += txtRecords.Substring(txtRecords.IndexOf('=') + 1); } } } return(lookupUrl); }
public static Type GetItemType(this OlItemType olItemType) { switch (olItemType) { case OlItemType.olMailItem: return(typeof(MailItem)); case OlItemType.olAppointmentItem: return(typeof(AppointmentItem)); case OlItemType.olContactItem: return(typeof(ContactItem)); case OlItemType.olTaskItem: return(typeof(TaskItem)); case OlItemType.olJournalItem: return(typeof(JournalItem)); case OlItemType.olNoteItem: return(typeof(NoteItem)); case OlItemType.olPostItem: return(typeof(PostItem)); case OlItemType.olDistributionListItem: return(typeof(DistListItem)); case OlItemType.olMobileItemSMS: return(typeof(MobileItem)); case OlItemType.olMobileItemMMS: return(typeof(MobileItem)); default: return(null); } }
private void findCalendars(Folders folders, Dictionary <string, MAPIFolder> calendarFolders, MAPIFolder defaultCalendar) { string excludeDeletedFolder = folders.Application.Session.GetDefaultFolder(OlDefaultFolders.olFolderDeletedItems).EntryID; foreach (MAPIFolder folder in folders) { try { OlItemType defaultItemType = folder.DefaultItemType; if (defaultItemType == OlItemType.olAppointmentItem) { if (defaultCalendar == null || (folder.EntryID != defaultCalendar.EntryID)) { calendarFolders.Add(folder.Name, folder); } } if (folder.EntryID != excludeDeletedFolder && folder.Folders.Count > 0) { findCalendars(folder.Folders, calendarFolders, defaultCalendar); } } catch (System.Exception ex) { if (oApp.Session.ExchangeConnectionMode.ToString().Contains("Disconnected") || ex.Message.StartsWith("Network problems are preventing connection to Microsoft Exchange.")) { log.Info("Currently disconnected from Exchange - unable to retrieve MAPI folders."); MainForm.Instance.ToolTips.SetToolTip(MainForm.Instance.cbOutlookCalendars, "The Outlook calendar to synchonize with.\nSome may not be listed as you are currently disconnected."); } else { log.Error("Failed to recurse MAPI folders."); log.Error(ex.Message); MessageBox.Show("A problem was encountered when searching for Outlook calendar folders.", "Calendar Folders", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } }
public bool SendEmail(OlItemType olMailItem, string to, string cc, string sub, string documentText, OlImportance olImportanceNormal) { if (_application == null) { GetApplicationObject(); } try { MailItem mailItem = _application.CreateItem(olMailItem); mailItem.To = to; mailItem.CC = cc; mailItem.Subject = sub; mailItem.HTMLBody = documentText; mailItem.Importance = olImportanceNormal; mailItem.Send(); } catch (System.Exception e) { throw e; } return(true); }
public static void DisplayTestReport( TestResult result, SynchronizationMode synchronizationMode, string selectedSynchronizationModeDisplayName, OlItemType outlookFolderType) { bool hasError = false; bool hasWarning = false; var errorMessageBuilder = new StringBuilder(); var isCalendar = result.ResourceType.HasFlag(ResourceType.Calendar); var isAddressBook = result.ResourceType.HasFlag(ResourceType.AddressBook); var isTaskList = result.ResourceType.HasFlag(ResourceType.TaskList); if (isCalendar && isAddressBook) { errorMessageBuilder.AppendLine(Strings.Get($"- Resources which are a calendar and an addressbook are not valid!")); hasError = true; } switch (outlookFolderType) { case OlItemType.olAppointmentItem: if (isCalendar) { if (!result.CalendarProperties.HasFlag(CalendarProperties.CalendarAccessSupported)) { errorMessageBuilder.AppendLine(Strings.Get($"- The specified URL does not support calendar access.")); hasError = true; } if (!result.CalendarProperties.HasFlag(CalendarProperties.SupportsCalendarQuery)) { errorMessageBuilder.AppendLine(Strings.Get($"- The specified URL does not support calendar queries. Some features like time range filter may not work!")); hasWarning = true; } if (DoesModeRequireWriteableServerResource(synchronizationMode)) { if (!result.AccessPrivileges.HasFlag(AccessPrivileges.Modify)) { errorMessageBuilder.AppendFormat( Strings.Get($"- The specified calendar is not writeable. Therefore it is not possible to use the synchronization mode '{selectedSynchronizationModeDisplayName}'.")); errorMessageBuilder.AppendLine(); hasError = true; } if (!result.AccessPrivileges.HasFlag(AccessPrivileges.Create)) { errorMessageBuilder.AppendLine(Strings.Get($"- The specified calendar doesn't allow creation of appointments!")); hasWarning = true; } if (!result.AccessPrivileges.HasFlag(AccessPrivileges.Delete)) { errorMessageBuilder.AppendLine(Strings.Get($"- The specified calendar doesn't allow deletion of appointments!")); hasWarning = true; } } } else { errorMessageBuilder.AppendLine(Strings.Get($"- The specified URL is not a calendar!")); hasError = true; } break; case OlItemType.olContactItem: if (isAddressBook) { if (!result.AddressBookProperties.HasFlag(AddressBookProperties.AddressBookAccessSupported)) { errorMessageBuilder.AppendLine(Strings.Get($"- The specified URL does not support address books.")); hasError = true; } if (DoesModeRequireWriteableServerResource(synchronizationMode)) { if (!result.AccessPrivileges.HasFlag(AccessPrivileges.Modify)) { errorMessageBuilder.AppendFormat( Strings.Get( $"- The specified address book is not writeable. Therefore it is not possible to use the synchronization mode '{selectedSynchronizationModeDisplayName}'.")); errorMessageBuilder.AppendLine(); hasError = true; } if (!result.AccessPrivileges.HasFlag(AccessPrivileges.Create)) { errorMessageBuilder.AppendLine(Strings.Get($"- The specified address book doesn't allow creation of contacts!")); hasWarning = true; } if (!result.AccessPrivileges.HasFlag(AccessPrivileges.Delete)) { errorMessageBuilder.AppendLine(Strings.Get($"- The specified address book doesn't allow deletion of contacts!")); hasWarning = true; } } } else { errorMessageBuilder.AppendLine(Strings.Get($"- The specified URL is not an addressbook!")); hasError = true; } break; case OlItemType.olTaskItem: if (!isTaskList) { errorMessageBuilder.AppendLine(Strings.Get($"- The specified URL is not an task list!")); hasError = true; } break; } if (hasError) { MessageBox.Show(Strings.Get($"Connection test NOT successful:") + Environment.NewLine + errorMessageBuilder, ConnectionTestCaption); } else if (hasWarning) { MessageBox.Show(Strings.Get($"Connection test successful BUT:") + Environment.NewLine + errorMessageBuilder, ConnectionTestCaption, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { MessageBox.Show(Strings.Get($"Connection test successful."), ConnectionTestCaption); } }
public void FixTimeRangeUsage (OlItemType? folderType) { _syncSettingsControl.UseSynchronizationTimeRange = folderType != OlItemType.olContactItem; }
private async Task <string> TestGoogleContactsConnection(OptionsModel options, OlItemType outlookFolderType, string url) { var service = await GoogleHttpClientFactory.LoginToContactsService(options.EmailAddress, options.GetProxyIfConfigured()); try { await Task.Run(() => service.GetGroups()); } catch (Exception x) { s_logger.Error(null, x); MessageBox.Show(x.Message, ConnectionTestCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); return(url); } TestResult result = new TestResult( ResourceType.AddressBook, CalendarProperties.None, AddressBookProperties.AddressBookAccessSupported, AccessPrivileges.All, false, null); DisplayTestReport( result, options.SynchronizationMode, _enumDisplayNameProvider.Get(options.SynchronizationMode), outlookFolderType); return(string.Empty); }
public dynamic CreateItem(OlItemType ItemType) { throw new NotImplementedException(); }
public void FixTimeRangeUsage (OlItemType? folderType) { if (folderType == OlItemType.olContactItem) { _enableTimeRangeFilteringCheckBox.Checked = false; UpdateTimeRangeFilteringGroupBoxEnabled(); } else { _enableTimeRangeFilteringCheckBox.Checked = true; UpdateTimeRangeFilteringGroupBoxEnabled(); } }
/// <summary> /// テスト対象のクラス(e.g. Office365Contact)が実行するクラス /// </summary> /// <param name="ItemType">生成するアイテムのタイプ</param> /// <returns></returns> public dynamic CreateItem(OlItemType ItemType) { return(CreateItemHon(ItemType)); }
/// <summary> /// dynamicを返さないために作ったメソッド /// virtualをつけることで、Substituteに制御を渡す /// </summary> /// <param name="ItemType">生成するアイテムのタイプ</param> /// <returns></returns> public virtual ContactItem CreateItemHon(OlItemType ItemType) { return(null); }
public HeaderEventArgs (string name, bool isInactive, OlItemType? folderItemType) { FolderItemType = folderItemType; IsInactive = isInactive; Name = name; }
public void FixTimeRangeUsage (OlItemType? folderType) { _syncSettingsControl.FixTimeRangeUsage (folderType); }
public static async Task <AutoDiscoveryResult> DoAutoDiscovery(Uri autoDiscoveryUri, IWebDavClient webDavClient, bool useWellKnownCalDav, bool useWellKnownCardDav, OlItemType selectedOutlookFolderType) { switch (selectedOutlookFolderType) { case OlItemType.olAppointmentItem: var calDavDataAccess = new CalDavDataAccess(autoDiscoveryUri, webDavClient); var foundCalendars = (await calDavDataAccess.GetUserResourcesIncludingCalendarProxies(useWellKnownCalDav)).CalendarResources; if (foundCalendars.Count == 0) { return(new AutoDiscoveryResult(null, AutoDiscoverResultStatus.NoResourcesFound)); } var selectedCalendar = SelectCalendar(foundCalendars); if (selectedCalendar != null) { return(new AutoDiscoveryResult(selectedCalendar.Uri, AutoDiscoverResultStatus.ResourceSelected)); } else { return(new AutoDiscoveryResult(null, AutoDiscoverResultStatus.UserCancelled)); } case OlItemType.olTaskItem: var calDavDataAccessTasks = new CalDavDataAccess(autoDiscoveryUri, webDavClient); var foundTasks = (await calDavDataAccessTasks.GetUserResourcesIncludingCalendarProxies(useWellKnownCalDav)).TaskListResources; if (foundTasks.Count == 0) { return(new AutoDiscoveryResult(null, AutoDiscoverResultStatus.NoResourcesFound)); } var selectedTask = SelectTaskList(foundTasks); if (selectedTask != null) { return(new AutoDiscoveryResult(new Uri(selectedTask.Id), AutoDiscoverResultStatus.ResourceSelected)); } else { return(new AutoDiscoveryResult(null, AutoDiscoverResultStatus.UserCancelled)); } case OlItemType.olContactItem: var cardDavDataAccess = new CardDavDataAccess(autoDiscoveryUri, webDavClient, string.Empty, contentType => true); var foundAddressBooks = await cardDavDataAccess.GetUserAddressBooksNoThrow(useWellKnownCardDav); if (foundAddressBooks.Count == 0) { return(new AutoDiscoveryResult(null, AutoDiscoverResultStatus.NoResourcesFound)); } var selectedAddressBook = SelectAddressBook(foundAddressBooks); if (selectedAddressBook != null) { return(new AutoDiscoveryResult(selectedAddressBook.Uri, AutoDiscoverResultStatus.ResourceSelected)); } else { return(new AutoDiscoveryResult(null, AutoDiscoverResultStatus.UserCancelled)); } default: throw new NotImplementedException($"'{selectedOutlookFolderType}' not implemented."); } }
public static async Task <Uri> AddResource(Uri davUri, IWebDavClient webDavClient, OlItemType selectedOutlookFolderType) { switch (selectedOutlookFolderType) { case OlItemType.olAppointmentItem: case OlItemType.olTaskItem: var calDavDataAccess = new CalDavDataAccess(davUri, webDavClient); using (var addResourceForm = new AddResourceForm(true)) { addResourceForm.Text = Strings.Get($"Add calendar resource on server"); if (addResourceForm.ShowDialog() == DialogResult.OK) { try { var newUri = await calDavDataAccess.AddResource(addResourceForm.ResourceName, addResourceForm.UseRandomUri); MessageBox.Show(Strings.Get($"Added calendar resource '{addResourceForm.ResourceName}' successfully!"), CreateDavResourceCaption, MessageBoxButtons.OK, MessageBoxIcon.Information); if (!await new CalDavDataAccess(newUri, webDavClient).SetCalendarColorNoThrow(new ArgbColor(addResourceForm.CalendarColor.ToArgb()))) { MessageBox.Show(Strings.Get($"Can't set the calendar color!'"), CreateDavResourceCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); } return(newUri); } catch (Exception ex) { s_logger.Error($"Can't add calendar resource '{addResourceForm.ResourceName}'", ex); MessageBox.Show(Strings.Get($"Can't add calendar resource '{addResourceForm.ResourceName}'"), CreateDavResourceCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); } } } break; case OlItemType.olContactItem: var cardDavDataAccess = new CardDavDataAccess(davUri, webDavClient, string.Empty, contentType => true); using (var addResourceForm = new AddResourceForm(false)) { addResourceForm.Text = Strings.Get($"Add addressbook resource on server"); if (addResourceForm.ShowDialog() == DialogResult.OK) { try { var newUri = await cardDavDataAccess.AddResource(addResourceForm.ResourceName, addResourceForm.UseRandomUri); MessageBox.Show(Strings.Get($"Added addressbook resource '{addResourceForm.ResourceName}' successfully!"), CreateDavResourceCaption, MessageBoxButtons.OK, MessageBoxIcon.Information); return(newUri); } catch (Exception ex) { s_logger.Error($"Can't add addressbook resource '{addResourceForm.ResourceName}'", ex); MessageBox.Show(Strings.Get($"Can't add addressbook resource '{addResourceForm.ResourceName}'"), CreateDavResourceCaption, MessageBoxButtons.OK, MessageBoxIcon.Error); } } } break; } return(davUri); }
public dynamic CreateItem(OlItemType ItemType) { if (OlItemType.olMailItem == ItemType) { return new WsMailItem(_application.CreateItem(ItemType)); } return new WsDynamicItem(_application.CreateItem(ItemType)); }
private async Task <string> TestGoogleTaskConnection(OptionsModel options, StringBuilder errorMessageBuilder, OlItemType outlookFolderType, string url) { var service = await GoogleHttpClientFactory.LoginToGoogleTasksService(options.EmailAddress, options.GetProxyIfConfigured()); string connectionTestUrl; if (string.IsNullOrEmpty(url)) { TaskLists taskLists = await service.Tasklists.List().ExecuteAsync(); if (taskLists.Items.Any()) { var selectedTaskList = SelectTaskList(taskLists.Items.Select(i => new TaskListData(i.Id, i.Title, AccessPrivileges.All)).ToArray()); if (selectedTaskList != null) { connectionTestUrl = selectedTaskList.Id; } else { return(url); } } else { connectionTestUrl = url; } } else { connectionTestUrl = url; } try { await service.Tasklists.Get(connectionTestUrl).ExecuteAsync(); } catch (Exception x) { s_logger.Error(null, x); errorMessageBuilder.AppendFormat(Strings.Get($"The tasklist with id '{connectionTestUrl}' is invalid.")); MessageBox.Show(errorMessageBuilder.ToString(), Strings.Get($"The tasklist is invalid"), MessageBoxButtons.OK, MessageBoxIcon.Error); return(url); } TestResult result = new TestResult(ResourceType.TaskList, CalendarProperties.None, AddressBookProperties.None, AccessPrivileges.None, false, null); DisplayTestReport( result, options.SynchronizationMode, _enumDisplayNameProvider.Get(options.SynchronizationMode), outlookFolderType); return(connectionTestUrl); }
public static void DisplayTestReport ( TestResult result, bool selectedSynchronizationModeRequiresWriteableServerResource, string selectedSynchronizationModeDisplayName, OlItemType? outlookFolderType, ServerAdapterType serverAdapterType) { bool hasError = false; bool hasWarning = false; var errorMessageBuilder = new StringBuilder (); var isCalendar = result.ResourceType.HasFlag (ResourceType.Calendar); var isAddressBook = result.ResourceType.HasFlag (ResourceType.AddressBook); var isGoogleTask = result.ResourceType.HasFlag (ResourceType.TaskList); if (isGoogleTask) { if (outlookFolderType != OlItemType.olTaskItem) { errorMessageBuilder.AppendLine ("- The outlook folder is not a task folder, or there is no folder selected."); hasError = true; } } else if (!isCalendar && !isAddressBook) { errorMessageBuilder.AppendLine ("- The specified Url is neither a calendar nor an addressbook!"); hasError = true; } if (isCalendar && isAddressBook) { errorMessageBuilder.AppendLine ("- Ressources which are a calendar and an addressbook are not valid!"); hasError = true; } if (isCalendar) { if (!result.CalendarProperties.HasFlag (CalendarProperties.CalendarAccessSupported)) { errorMessageBuilder.AppendLine ("- The specified Url does not support calendar access."); hasError = true; } if (!result.CalendarProperties.HasFlag (CalendarProperties.SupportsCalendarQuery)) { errorMessageBuilder.AppendLine ("- The specified Url does not support calendar queries. Some features like time range filter may not work!"); hasWarning = true; } if (!result.CalendarProperties.HasFlag (CalendarProperties.IsWriteable)) { if (selectedSynchronizationModeRequiresWriteableServerResource) { errorMessageBuilder.AppendFormat ( "- The specified calendar is not writeable. Therefore it is not possible to use the synchronization mode '{0}'.", selectedSynchronizationModeDisplayName); errorMessageBuilder.AppendLine (); hasError = true; } } if (serverAdapterType == ServerAdapterType.WebDavHttpClientBasedWithGoogleOAuth) { if (outlookFolderType != OlItemType.olAppointmentItem) { errorMessageBuilder.AppendLine ("- The outlook folder is not a calendar folder, or there is no folder selected."); hasError = true; } } else if (outlookFolderType != OlItemType.olAppointmentItem && outlookFolderType != OlItemType.olTaskItem) { errorMessageBuilder.AppendLine ("- The outlook folder is not a calendar or task folder, or there is no folder selected."); hasError = true; } } if (isAddressBook) { if (!result.AddressBookProperties.HasFlag (AddressBookProperties.AddressBookAccessSupported)) { errorMessageBuilder.AppendLine ("- The specified Url does not support address books."); hasError = true; } if (!result.AddressBookProperties.HasFlag (AddressBookProperties.IsWriteable)) { if (selectedSynchronizationModeRequiresWriteableServerResource) { errorMessageBuilder.AppendFormat ( "- The specified address book is not writeable. Therefore it is not possible to use the synchronization mode '{0}'.", selectedSynchronizationModeDisplayName); errorMessageBuilder.AppendLine (); hasError = true; } } if (outlookFolderType != OlItemType.olContactItem) { errorMessageBuilder.AppendLine ("- The outlook folder is not an address book, or there is no folder selected."); hasError = true; } } if (hasError) MessageBox.Show ("Connection test NOT successful:" + Environment.NewLine + errorMessageBuilder, OptionTasks.ConnectionTestCaption); else if (hasWarning) MessageBox.Show ("Connection test successful BUT:" + Environment.NewLine + errorMessageBuilder, OptionTasks.ConnectionTestCaption, MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show ("Connection test successful.", OptionTasks.ConnectionTestCaption); }
public ItemPropertyHandler(OlItemType type, string index) { this.type = type; this.index = index; }
public static async Task<AutoDiscoveryResult> DoAutoDiscovery (Uri autoDiscoveryUri, IWebDavClient webDavClient, bool useWellKnownCalDav, bool useWellKnownCardDav, OlItemType? selectedOutlookFolderType) { var calDavDataAccess = new CalDavDataAccess (autoDiscoveryUri, webDavClient); IReadOnlyList<Tuple<Uri, string, string>> foundCaldendars = await calDavDataAccess.GetUserCalendarsNoThrow (useWellKnownCalDav); var cardDavDataAccess = new CardDavDataAccess (autoDiscoveryUri, webDavClient); IReadOnlyList<Tuple<Uri, string>> foundAddressBooks = await cardDavDataAccess.GetUserAddressBooksNoThrow (useWellKnownCardDav); if (foundCaldendars.Count > 0 || foundAddressBooks.Count > 0) { using (SelectResourceForm listCalendarsForm = new SelectResourceForm ( foundCaldendars, foundAddressBooks, new Tuple<string, string>[0], selectedOutlookFolderType == OlItemType.olContactItem ? ResourceType.AddressBook : ResourceType.Calendar)) { if (listCalendarsForm.ShowDialog() == DialogResult.OK) return new AutoDiscoveryResult (new Uri (autoDiscoveryUri.GetLeftPart (UriPartial.Authority) + listCalendarsForm.SelectedUrl), false, listCalendarsForm.ResourceType); else return new AutoDiscoveryResult (null, true, ResourceType.None); } } else { MessageBox.Show (useWellKnownCalDav ? "No resources were found via well-known URLs!" : "No resources were found via autodiscovery!", OptionTasks.ConnectionTestCaption); return new AutoDiscoveryResult (null, false, ResourceType.None); } }
public void FixTimeRangeUsage (OlItemType? folderType) { }
private static async Task TestGoogleTaskConnection(ICurrentOptions currentOptions, StringBuilder errorMessageBuilder, OlItemType outlookFolderType) { var service = await GoogleHttpClientFactory.LoginToGoogleTasksService(currentOptions.EmailAddress, currentOptions.GetProxyIfConfigured()); if (string.IsNullOrEmpty(currentOptions.ServerUrl)) { TaskLists taskLists = await service.Tasklists.List().ExecuteAsync(); if (taskLists.Items.Any()) { using (SelectResourceForm listCalendarsForm = new SelectResourceForm( new Tuple <Uri, string, ArgbColor?>[] { }, new Tuple <Uri, string>[] { }, taskLists.Items.Select(i => Tuple.Create(i.Id, i.Title)).ToArray(), ResourceType.TaskList)) { if (listCalendarsForm.ShowDialog() == DialogResult.OK) { currentOptions.ServerUrl = listCalendarsForm.SelectedUrl; } else { return; } } } } try { await service.Tasklists.Get(currentOptions.ServerUrl).ExecuteAsync(); } catch (Exception) { errorMessageBuilder.AppendFormat("The tasklist with id '{0}' is invalid.", currentOptions.ServerUrl); MessageBox.Show(errorMessageBuilder.ToString(), "The tasklist is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } TestResult result = new TestResult(ResourceType.TaskList, CalendarProperties.None, AddressBookProperties.None); DisplayTestReport( result, currentOptions.SynchronizationMode, currentOptions.SynchronizationModeDisplayName, outlookFolderType); }