private void GetAccountSettings() { _getAccountSettingsCommand.SetCanExecute(false); try { var serverAccountSettings = _outlookAccountPasswordProvider.GetAccountServerSettings(_currentOptions.FolderAccountName); EmailAddress = serverAccountSettings.EmailAddress; string path = !string.IsNullOrEmpty(CalenderUrl) ? new Uri(CalenderUrl).AbsolutePath : string.Empty; bool success; var dnsDiscoveredUrl = OptionTasks.DoSrvLookup(EmailAddress, OlItemType.olAppointmentItem, out success); CalenderUrl = success ? dnsDiscoveredUrl : "https://" + serverAccountSettings.ServerString + path; UserName = serverAccountSettings.UserName; UseAccountPassword = true; } catch (Exception x) { s_logger.Error("Exception while getting account settings.", x); string message = null; for (Exception ex = x; ex != null; ex = ex.InnerException) { message += ex.Message + Environment.NewLine; } MessageBox.Show(message, "Account settings"); } finally { _getAccountSettingsCommand.SetCanExecute(true); } }
public async Task <ServerResources> GetServerResources(NetworkSettingsViewModel networkSettings, GeneralOptions generalOptions) { string caldavUrlString; string carddavUrlString; if (string.IsNullOrEmpty(CalenderUrl) && !string.IsNullOrEmpty(EmailAddress)) { bool success; caldavUrlString = OptionTasks.DoSrvLookup(EmailAddress, OlItemType.olAppointmentItem, out success); carddavUrlString = OptionTasks.DoSrvLookup(EmailAddress, OlItemType.olContactItem, out success); } else { caldavUrlString = CalenderUrl; carddavUrlString = CalenderUrl; } var trimmedCaldavUrl = caldavUrlString.Trim(); var caldavUrl = new Uri(trimmedCaldavUrl.EndsWith("/") ? trimmedCaldavUrl : trimmedCaldavUrl + "/"); var trimmedCarddavUrl = carddavUrlString.Trim(); var carddavUrl = new Uri(trimmedCarddavUrl.EndsWith("/") ? trimmedCarddavUrl : trimmedCarddavUrl + "/"); var webDavClientCaldav = CreateWebDavClient(networkSettings, generalOptions, trimmedCaldavUrl); var webDavClientCarddav = CreateWebDavClient(networkSettings, generalOptions, trimmedCarddavUrl); var calDavDataAccess = new CalDavDataAccess(caldavUrl, webDavClientCaldav); var cardDavDataAccess = new CardDavDataAccess(carddavUrl, webDavClientCarddav); return(await GetUserResources(calDavDataAccess, cardDavDataAccess)); }
public bool Validate(StringBuilder errorMessageBuilder) { var result = OptionTasks.ValidateWebDavUrl(CalenderUrl, errorMessageBuilder, true); result &= OptionTasks.ValidateEmailAddress(errorMessageBuilder, EmailAddress); return(result); }
public Options[] ShowWpfOptions(Guid?initialSelectedProfileId, GeneralOptions generalOptions, Options[] options) { string[] categories; using (var categoriesWrapper = GenericComObjectWrapper.Create(_session.Categories)) { categories = categoriesWrapper.Inner.ToSafeEnumerable <Category>().Select(c => c.Name).ToArray(); } var faultFinder = generalOptions.FixInvalidSettings ? new SettingsFaultFinder(EnumDisplayNameProvider.Instance) : NullSettingsFaultFinder.Instance; var optionTasks = new OptionTasks(_session, EnumDisplayNameProvider.Instance, faultFinder); var viewOptions = new ViewOptions(generalOptions.EnableAdvancedView); var viewModel = new OptionsCollectionViewModel( generalOptions.ExpandAllSyncProfiles, GetProfileDataDirectory, _uiService, optionTasks, p => ProfileTypeRegistry.Create(p, _outlookAccountPasswordProvider, categories, optionTasks, faultFinder, generalOptions, viewOptions), viewOptions); _currentVisibleOptionsFormOrNull = viewModel; viewModel.SetOptionsCollection(options, initialSelectedProfileId); if (_uiService.ShowOptions(viewModel)) { _optionsDataAccess.EnsureBackupExists("SimplifiedUi"); return(viewModel.GetOptionsCollection()); } else { return(null); } }
private async void TestConnectionAsync(string testUrl) { _testConnectionCommand.SetCanExecute(false); _doAutoDiscoveryCommand.SetCanExecute(false); try { var newUrl = await OptionTasks.TestGoogleConnection(_currentOptions, _settingsFaultFinder, testUrl); if (newUrl != testUrl) { CalenderUrl = newUrl; } } catch (Exception x) { s_logger.Error("Exception while testing the connection.", x); string message = null; for (var ex = x; ex != null; ex = ex.InnerException) { message += ex.Message + Environment.NewLine; } MessageBox.Show(message, OptionTasks.ConnectionTestCaption); } finally { _testConnectionCommand.SetCanExecute(true); _doAutoDiscoveryCommand.SetCanExecute(true); } }
public async Task <ServerResources> GetServerResources() { string caldavUrlString; string carddavUrlString; if (string.IsNullOrEmpty(CalenderUrl) && !string.IsNullOrEmpty(EmailAddress)) { bool success; caldavUrlString = OptionTasks.DoSrvLookup(EmailAddress, OlItemType.olAppointmentItem, out success); carddavUrlString = OptionTasks.DoSrvLookup(EmailAddress, OlItemType.olContactItem, out success); } else { caldavUrlString = CalenderUrl; carddavUrlString = CalenderUrl; } var trimmedCaldavUrl = caldavUrlString.Trim(); var caldavUrl = new Uri(trimmedCaldavUrl.EndsWith("/") ? trimmedCaldavUrl : trimmedCaldavUrl + "/"); var trimmedCarddavUrl = carddavUrlString.Trim(); var carddavUrl = new Uri(trimmedCarddavUrl.EndsWith("/") ? trimmedCarddavUrl : trimmedCarddavUrl + "/"); var webDavClientCaldav = _prototypeModel.CreateWebDavClient(new Uri(trimmedCaldavUrl)); var webDavClientCarddav = _prototypeModel.CreateWebDavClient(new Uri(trimmedCarddavUrl)); var calDavDataAccess = new CalDavDataAccess(caldavUrl, webDavClientCaldav); var cardDavDataAccess = new CardDavDataAccess(carddavUrl, webDavClientCarddav, string.Empty, contentType => true); return(await GetUserResources(calDavDataAccess, cardDavDataAccess)); }
private void CoerceMappingConfiguration() { MappingConfigurationViewModel = OptionTasks.CoerceMappingConfiguration( MappingConfigurationViewModel, _outlookFolderViewModel.OutlookFolderType, _serverSettingsViewModel.IsGoogle, _mappingConfigurationViewModelFactory); }
public bool Validate(StringBuilder errorMessageBuilder) { bool result = true; if (_serverAdapterType != ServerAdapterType.GoogleTaskApi) { result &= OptionTasks.ValidateWebDavUrl(CalenderUrl, errorMessageBuilder, true); } result &= OptionTasks.ValidateGoogleEmailAddress(errorMessageBuilder, EmailAddress); return(result); }
public void AutoFillServerSettings(OptionsModel optionsModel) { var serverAccountSettings = _outlookAccountPasswordProvider.GetAccountServerSettings(optionsModel.FolderAccountName); optionsModel.EmailAddress = serverAccountSettings.EmailAddress; string path = !string.IsNullOrEmpty(optionsModel.CalenderUrl) ? new Uri(optionsModel.CalenderUrl).AbsolutePath : string.Empty; bool success; var dnsDiscoveredUrl = OptionTasks.DoSrvLookup(optionsModel.EmailAddress, OlItemType.olAppointmentItem, out success); optionsModel.CalenderUrl = success ? dnsDiscoveredUrl : "https://" + serverAccountSettings.ServerString + path; optionsModel.UserName = serverAccountSettings.UserName; optionsModel.UseAccountPassword = true; }
private void _okButton_Click(object sender, EventArgs e) { StringBuilder errorMessageBuilder = new StringBuilder(); if (OptionTasks.ValidateCategoryName(_categoryNameComboBox.Text, errorMessageBuilder)) { DialogResult = DialogResult.OK; } else { MessageBox.Show(errorMessageBuilder.ToString(), "The category name is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void AddMultiple() { ProfileType?profileType; var options = OptionTasks.CreateNewSynchronizationProfileOrNull(out profileType); if (options != null) { // ReSharper disable once PossibleInvalidOperationException var optionsViewModel = _optionsViewModelFactory.CreateTemplate(options, _generalOptions, profileType.Value); _options.Add(optionsViewModel); ShowProfile(options.Id); } }
private void Add() { var options = OptionTasks.CreateNewSynchronizationProfileOrNull(); if (options != null) { foreach (var vm in _optionsViewModelFactory.Create(new[] { options }, _generalOptions)) { _options.Add(vm); } ShowProfile(options.Id); } }
public bool Validate(StringBuilder errorMessageBuilder) { bool result = true; if (_selectedFolderOrNull == null) { errorMessageBuilder.AppendLine(Strings.Get($"- There is no Outlook folder selected.")); result = false; } if (_useWebDavCollectionSync && _selectedFolderOrNull?.DefaultItemType != OlItemType.olAppointmentItem && _selectedFolderOrNull?.DefaultItemType != OlItemType.olContactItem) { errorMessageBuilder.AppendLine(Strings.Get($"- WebDav collection sync is currently just supported for appointments and contacts.")); result = false; } if (_isGoogle) { var serverAdapterType = ServerAdapterType; if (serverAdapterType != ServerAdapterType.GoogleTaskApi && serverAdapterType != ServerAdapterType.GoogleContactApi) { result &= OptionTasks.ValidateWebDavUrl(CalenderUrl, errorMessageBuilder, true); } result &= OptionTasks.ValidateEmailAddress(errorMessageBuilder, EmailAddress, false); } else { result &= OptionTasks.ValidateWebDavUrl(CalenderUrl, errorMessageBuilder, true); result &= OptionTasks.ValidateEmailAddress(errorMessageBuilder, EmailAddress, true); } if (!string.IsNullOrEmpty(_profileTypeOrNull) && String.Equals(_profileTypeOrNull, "Swisscom", StringComparison.OrdinalIgnoreCase) && _selectedFolderOrNull?.DefaultItemType != OlItemType.olContactItem) { result = false; errorMessageBuilder.AppendLine(Strings.Get($"- The Swisscom profile is currently just supported for contacts, please choose a Contacts folder")); } if (IsChunkedSynchronizationEnabled && ChunkSize < 1) { result = false; errorMessageBuilder.AppendLine(Strings.Get($"- The chunk size has to be 1 or greater.")); } if (MappingConfigurationModelOrNull != null) { result &= MappingConfigurationModelOrNull.Validate(errorMessageBuilder); } return(result); }
public bool Validate(StringBuilder errorMessageBuilder) { bool result = true; if (_selectedFolderOrNull == null) { errorMessageBuilder.AppendLine(Strings.Get($"- There is no Outlook folder selected.")); result = false; } if (_useWebDavCollectionSync && _selectedFolderOrNull?.DefaultItemType != OlItemType.olAppointmentItem && _selectedFolderOrNull?.DefaultItemType != OlItemType.olContactItem) { errorMessageBuilder.AppendLine(Strings.Get($"- WebDav collection sync ist currently just supported for appointments and contacts.")); result = false; } if (_isGoogle) { var serverAdapterType = ServerAdapterType; if (serverAdapterType != ServerAdapterType.GoogleTaskApi && serverAdapterType != ServerAdapterType.GoogleContactApi) { result &= OptionTasks.ValidateWebDavUrl(CalenderUrl, errorMessageBuilder, true); } result &= OptionTasks.ValidateGoogleEmailAddress(errorMessageBuilder, EmailAddress); } else { result &= OptionTasks.ValidateWebDavUrl(CalenderUrl, errorMessageBuilder, true); result &= OptionTasks.ValidateEmailAddress(errorMessageBuilder, EmailAddress); } if (IsChunkedSynchronizationEnabled && ChunkSize < 1) { result = false; errorMessageBuilder.AppendLine(Strings.Get($"- The chunk size hast to be 1 or greater.")); } if (MappingConfigurationModelOrNull != null) { result &= MappingConfigurationModelOrNull.Validate(errorMessageBuilder); } return(result); }
private async void TestConnectionAsync() { _testConnectionCommand.SetCanExecute(false); try { CalenderUrl = await OptionTasks.TestWebDavConnection(_currentOptions, _settingsFaultFinder, CalenderUrl, EmailAddress); } catch (Exception x) { s_logger.Error("Exception while testing the connection.", x); string message = null; for (Exception ex = x; ex != null; ex = ex.InnerException) { message += ex.Message + Environment.NewLine; } MessageBox.Show(message, OptionTasks.ConnectionTestCaption); } finally { _testConnectionCommand.SetCanExecute(true); } }
public bool Validate(StringBuilder errorMessageBuilder) { bool result = true; if (_selectedFolderOrNull == null) { errorMessageBuilder.AppendLine("- There is no Outlook Folder selected."); result = false; } if (_isGoogle) { var serverAdapterType = ServerAdapterType; if (serverAdapterType != ServerAdapterType.GoogleTaskApi && serverAdapterType != ServerAdapterType.GoogleContactApi) { result &= OptionTasks.ValidateWebDavUrl(CalenderUrl, errorMessageBuilder, true); } result &= OptionTasks.ValidateGoogleEmailAddress(errorMessageBuilder, EmailAddress); } else { result &= OptionTasks.ValidateWebDavUrl(CalenderUrl, errorMessageBuilder, true); result &= OptionTasks.ValidateEmailAddress(errorMessageBuilder, EmailAddress); } if (IsChunkedSynchronizationEnabled && ChunkSize < 1) { result = false; errorMessageBuilder.AppendLine("- The chunk size hast to be 1 or greater."); } if (MappingConfigurationModelOrNull != null) { result &= MappingConfigurationModelOrNull.Validate(errorMessageBuilder); } return(result); }
public Options[] ShowWpfOptions(Guid?initialSelectedProfileId, GeneralOptions generalOptions, Options[] options, out OneTimeChangeCategoryTask[] oneTimeTasks) { string[] categories; using (var categoriesWrapper = GenericComObjectWrapper.Create(_session.Categories)) { categories = categoriesWrapper.Inner.ToSafeEnumerable <Category>().Select(c => c.Name).ToArray(); } var faultFinder = generalOptions.FixInvalidSettings ? new SettingsFaultFinder(EnumDisplayNameProvider.Instance) : NullSettingsFaultFinder.Instance; var optionTasks = new OptionTasks(_session, EnumDisplayNameProvider.Instance, faultFinder, _outlookSession); var viewOptions = new ViewOptions(generalOptions.EnableAdvancedView); OptionModelSessionData sessionData = new OptionModelSessionData(_outlookSession.GetCategories().ToDictionary(c => c.Name, _outlookSession.CategoryNameComparer)); var viewModel = new OptionsCollectionViewModel( generalOptions.ExpandAllSyncProfiles, GetProfileDataDirectory, _uiService, optionTasks, _profileTypeRegistry, (parent, type) => type.CreateModelFactory(parent, _outlookAccountPasswordProvider, categories, optionTasks, faultFinder, generalOptions, viewOptions, sessionData), viewOptions); _currentVisibleOptionsFormOrNull = viewModel; viewModel.SetOptionsCollection(options, initialSelectedProfileId); if (_uiService.ShowOptions(viewModel)) { oneTimeTasks = viewModel.GetOneTimeTasks(); return(viewModel.GetOptionsCollection()); } else { oneTimeTasks = null; return(null); } }
public Options[] ShowWpfOptions(Guid?initialSelectedProfileId, GeneralOptions generalOptions, Options[] options, out OneTimeChangeCategoryTask[] oneTimeTasks) { var optionTasks = new OptionTasks(_session, EnumDisplayNameProvider.Instance, _outlookSession); var viewOptions = new ViewOptions(generalOptions.EnableAdvancedView); var categories = _outlookSession .GetCategories() .GroupBy(c => c.Name, _outlookSession.CategoryNameComparer) .Select(g => g.First()) .ToArray(); var categoryNames = categories.Select(c => c.Name).ToArray(); OptionModelSessionData sessionData = new OptionModelSessionData(categories.ToDictionary(c => c.Name, _outlookSession.CategoryNameComparer)); var viewModel = new OptionsCollectionViewModel( generalOptions.ExpandAllSyncProfiles, GetProfileDataDirectory, _uiService, optionTasks, _profileTypeRegistry, (parent, type) => type.CreateModelFactory(parent, _outlookAccountPasswordProvider, categoryNames, optionTasks, generalOptions, viewOptions, sessionData), viewOptions); _currentVisibleOptionsFormOrNull = viewModel; viewModel.SetOptionsCollection(options, initialSelectedProfileId); if (_uiService.ShowOptions(viewModel)) { oneTimeTasks = viewModel.GetOneTimeTasks(); return(viewModel.GetOptionsCollection()); } else { oneTimeTasks = null; return(null); } }
private async void CreateDavResource() { _testConnectionCommand.SetCanExecute(false); _createDavResourceCommand.SetCanExecute(false); try { CalenderUrl = await OptionTasks.CreateDavResource(_model, CalenderUrl); } catch (Exception x) { s_logger.Error("Exception while adding a DAV resource.", x); string message = null; for (Exception ex = x; ex != null; ex = ex.InnerException) { message += ex.Message + Environment.NewLine; } MessageBox.Show(message, OptionTasks.CreateDavResourceCaption); } finally { _testConnectionCommand.SetCanExecute(true); _createDavResourceCommand.SetCanExecute(true); } }
public void UpdateFolderAccountName() { FolderAccountName = _selectedFolder != null ? OptionTasks.GetFolderAccountNameOrNull(_session, _selectedFolder.StoreId) : null; }