public OptionsDisplayControl(
            NameSpace session,
            Func <Guid, string> profileDataDirectoryFactory,
            bool fixInvalidSettings)
        {
            ISettingsFaultFinder faultFinder;

            InitializeComponent();

            if (fixInvalidSettings)
            {
                faultFinder = new SettingsFaultFinder(_syncSettingsControl);
            }
            else
            {
                faultFinder = NullSettingsFaultFinder.Instance;
            }

            _serverSettingsControl.Initialize(faultFinder, this);

            _outlookFolderControl.Initialize(session, faultFinder);
            _profileDataDirectoryFactory = profileDataDirectoryFactory;

            _profileNameTextBox.TextChanged     += _profileNameTextBox_TextChanged;
            _inactiveCheckBox.CheckedChanged    += _inactiveCheckBox_CheckedChanged;
            _outlookFolderControl.FolderChanged += OutlookFolderControl_FolderChanged;
            _configurationFormFactory            = OptionTasks.CreateConfigurationFormFactory(_serverSettingsControl);
        }
        public bool Validate(StringBuilder errorMessageBuilder)
        {
            bool result = OptionTasks.ValidateCalendarUrl(_serverSettingsControl.CalendarUrl, errorMessageBuilder, true);

            result &= _outlookFolderControl.Validate(errorMessageBuilder);
            result &= OptionTasks.ValidateEmailAddress(errorMessageBuilder, _serverSettingsControl.EmailAddress);
            return(result);
        }
Ejemplo n.º 3
0
        private void _okButton_Click(object sender, EventArgs e)
        {
            StringBuilder errorMessageBuilder = new StringBuilder();

            if (OptionTasks.ValidateCategoryName(_categoryTextBox.Text, errorMessageBuilder))
            {
                DialogResult = DialogResult.OK;
            }
            else
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The category name is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void _advancedSettingsButton_Click(object sender, EventArgs e)
        {
            using (AdvancedOptionsForm advancedOptionsForm =
                       new AdvancedOptionsForm(
                           c => OptionTasks.CoreceMappingConfiguration(_outlookFolderControl.OutlookFolderType, c),
                           _configurationFormFactory.Value))
            {
                advancedOptionsForm.Options = _advancedOptions;

                if (advancedOptionsForm.ShowDialog() == DialogResult.OK)
                {
                    _advancedOptions = advancedOptionsForm.Options;
                }
            }
        }
        private async Task TestServerConnection()
        {
            _testConnectionButton.Enabled = false;
            try
            {
                StringBuilder errorMessageBuilder = new StringBuilder();
                if (!OptionTasks.ValidateCalendarUrl(_calenderUrlTextBox.Text, errorMessageBuilder, false))
                {
                    MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                var enteredUri   = new Uri(_calenderUrlTextBox.Text);
                var webDavClient = CreateWebDavClient();

                Uri          autoDiscoveredUrl;
                ResourceType autoDiscoveredResourceType;

                if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
                {
                    var autodiscoveryResult = await OptionTasks.DoAutoDiscovery(enteredUri, webDavClient, true, true, _dependencies.OutlookFolderType);

                    if (autodiscoveryResult.WasCancelled)
                    {
                        return;
                    }
                    if (autodiscoveryResult.RessourceUrl != null)
                    {
                        autoDiscoveredUrl          = autodiscoveryResult.RessourceUrl;
                        autoDiscoveredResourceType = autodiscoveryResult.ResourceType;
                    }
                    else
                    {
                        var autodiscoveryResult2 = await OptionTasks.DoAutoDiscovery(enteredUri.AbsolutePath.EndsWith ("/")?enteredUri : new Uri(enteredUri.ToString() + "/"), webDavClient, false, false, _dependencies.OutlookFolderType);

                        if (autodiscoveryResult2.WasCancelled)
                        {
                            return;
                        }
                        if (autodiscoveryResult2.RessourceUrl != null)
                        {
                            autoDiscoveredUrl          = autodiscoveryResult2.RessourceUrl;
                            autoDiscoveredResourceType = autodiscoveryResult2.ResourceType;
                        }
                        else
                        {
                            return;
                        }
                    }
                }
                else
                {
                    var result = await ConnectionTester.TestConnection(enteredUri, webDavClient, ResourceType.None);

                    if (result.ResourceType != ResourceType.None)
                    {
                        _settingsFaultFinder.FixSynchronizationMode(result);

                        OptionTasks.DisplayTestReport(
                            result,
                            _dependencies.SelectedSynchronizationModeRequiresWriteableServerResource,
                            _dependencies.SelectedSynchronizationModeDisplayName,
                            _dependencies.OutlookFolderType);
                        return;
                    }
                    else
                    {
                        var autodiscoveryResult = await OptionTasks.DoAutoDiscovery(enteredUri, webDavClient, false, false, _dependencies.OutlookFolderType);

                        if (autodiscoveryResult.WasCancelled)
                        {
                            return;
                        }
                        if (autodiscoveryResult.RessourceUrl != null)
                        {
                            autoDiscoveredUrl          = autodiscoveryResult.RessourceUrl;
                            autoDiscoveredResourceType = autodiscoveryResult.ResourceType;
                        }
                        else
                        {
                            var autodiscoveryResult2 = await OptionTasks.DoAutoDiscovery(enteredUri, webDavClient, true, true, _dependencies.OutlookFolderType);

                            if (autodiscoveryResult2.RessourceUrl != null)
                            {
                                autoDiscoveredUrl          = autodiscoveryResult2.RessourceUrl;
                                autoDiscoveredResourceType = autodiscoveryResult2.ResourceType;
                            }
                            else
                            {
                                return;
                            }
                        }
                    }
                }

                _calenderUrlTextBox.Text = autoDiscoveredUrl.ToString();

                var finalResult = await ConnectionTester.TestConnection(autoDiscoveredUrl, webDavClient, autoDiscoveredResourceType);

                _settingsFaultFinder.FixSynchronizationMode(finalResult);

                OptionTasks.DisplayTestReport(
                    finalResult,
                    _dependencies.SelectedSynchronizationModeRequiresWriteableServerResource,
                    _dependencies.SelectedSynchronizationModeDisplayName,
                    _dependencies.OutlookFolderType);
                ;
            }
            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
            {
                _testConnectionButton.Enabled = true;
            }
        }