public ServerSettingsViewModel (ISettingsFaultFinder settingsFaultFinder, ICurrentOptions currentOptions, IOutlookAccountPasswordProvider outlookAccountPasswordProvider)
    {
      if (settingsFaultFinder == null)
        throw new ArgumentNullException (nameof (settingsFaultFinder));
      if (currentOptions == null)
        throw new ArgumentNullException (nameof (currentOptions));

      _settingsFaultFinder = settingsFaultFinder;
      _currentOptions = currentOptions;
      _outlookAccountPasswordProvider = outlookAccountPasswordProvider;

      _testConnectionCommand = new DelegateCommandWithoutCanExecuteDelegation (_ =>
      {
        ComponentContainer.EnsureSynchronizationContext();
        TestConnectionAsync();
      });
      _getAccountSettingsCommand = new DelegateCommandWithoutCanExecuteDelegation (_ =>
      {
        ComponentContainer.EnsureSynchronizationContext();
        GetAccountSettings();
      });
      _createDavResourceCommand = new DelegateCommandWithoutCanExecuteDelegation (_ =>
      {
        ComponentContainer.EnsureSynchronizationContext();
        CreateDavResource();
      });
    }
Beispiel #2
0
        public static IProfileTypeRegistry Create(
            IOptionsViewModelParent optionsViewModelParent,
            IOutlookAccountPasswordProvider outlookAccountPasswordProvider,
            IReadOnlyList <string> availableCategories,
            IOptionTasks optionTasks,
            ISettingsFaultFinder settingsFaultFinder,
            GeneralOptions generalOptions,
            IViewOptions viewOptions)
        {
            if (optionsViewModelParent == null)
            {
                throw new ArgumentNullException(nameof(optionsViewModelParent));
            }
            if (outlookAccountPasswordProvider == null)
            {
                throw new ArgumentNullException(nameof(outlookAccountPasswordProvider));
            }
            if (availableCategories == null)
            {
                throw new ArgumentNullException(nameof(availableCategories));
            }
            if (optionTasks == null)
            {
                throw new ArgumentNullException(nameof(optionTasks));
            }
            if (settingsFaultFinder == null)
            {
                throw new ArgumentNullException(nameof(settingsFaultFinder));
            }
            if (generalOptions == null)
            {
                throw new ArgumentNullException(nameof(generalOptions));
            }
            if (viewOptions == null)
            {
                throw new ArgumentNullException(nameof(viewOptions));
            }


            var generic = new GenericProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions);
            var google  = new GoogleProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions);
            var all     = new List <IProfileType> {
                generic, google
            };

            all.Add(new FruuxProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new PosteoProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new YandexProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new GmxCalendarProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new SarenetProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new LandmarksProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new SogoProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new CozyProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new NextcloudProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new MailboxOrgProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new EasyProjectProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));
            all.Add(new WebDeProfile(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions));

            return(new ProfileTypeRegistry(all, generic, google));
        }
        public ServerSettingsViewModel(ISettingsFaultFinder settingsFaultFinder, ICurrentOptions currentOptions, IOutlookAccountPasswordProvider outlookAccountPasswordProvider)
        {
            if (settingsFaultFinder == null)
            {
                throw new ArgumentNullException(nameof(settingsFaultFinder));
            }
            if (currentOptions == null)
            {
                throw new ArgumentNullException(nameof(currentOptions));
            }

            _settingsFaultFinder            = settingsFaultFinder;
            _currentOptions                 = currentOptions;
            _outlookAccountPasswordProvider = outlookAccountPasswordProvider;

            _testConnectionCommand = new DelegateCommandWithoutCanExecuteDelegation(_ =>
            {
                ComponentContainer.EnsureSynchronizationContext();
                TestConnectionAsync();
            });
            _getAccountSettingsCommand = new DelegateCommandWithoutCanExecuteDelegation(_ =>
            {
                ComponentContainer.EnsureSynchronizationContext();
                GetAccountSettings();
            });
            _createDavResourceCommand = new DelegateCommandWithoutCanExecuteDelegation(_ =>
            {
                ComponentContainer.EnsureSynchronizationContext();
                CreateDavResource();
            });
        }
Beispiel #4
0
        public OptionsModel(
            ISettingsFaultFinder faultFinder,
            IOptionTasks optionTasks,
            IOutlookAccountPasswordProvider outlookAccountPasswordProvider,
            Contracts.Options data,
            GeneralOptions generalOptions,
            IProfileModelFactory profileModelFactory,
            bool isGoogle,
            OptionModelSessionData sessionData,
            IServerSettingsDetector serverSettingsDetector)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (serverSettingsDetector == null)
            {
                throw new ArgumentNullException(nameof(serverSettingsDetector));
            }

            _mappingConfigurationModelFactory = new MappingConfigurationModelFactory(sessionData);
            _faultFinder = faultFinder ?? throw new ArgumentNullException(nameof(faultFinder));
            _optionTasks = optionTasks ?? throw new ArgumentNullException(nameof(optionTasks));
            _outlookAccountPasswordProvider = outlookAccountPasswordProvider ?? throw new ArgumentNullException(nameof(outlookAccountPasswordProvider));
            _generalOptions = generalOptions ?? throw new ArgumentNullException(nameof(generalOptions));
            ModelFactory    = profileModelFactory ?? throw new ArgumentNullException(nameof(profileModelFactory));
            _sessionData    = sessionData ?? throw new ArgumentNullException(nameof(sessionData));

            Id = data.Id;

            _isGoogle = isGoogle;
            _serverSettingsDetector = serverSettingsDetector;

            InitializeData(data);
        }
Beispiel #5
0
        public void Initialize(ISettingsFaultFinder settingsFaultFinder, IServerSettingsControlDependencies dependencies)
        {
            InitializeComponent();

            _settingsFaultFinder = settingsFaultFinder;
            _dependencies        = dependencies;

            _testConnectionButton.Click += TestConnectionButton_Click;
        }
    public void Initialize (ISettingsFaultFinder settingsFaultFinder, IServerSettingsControlDependencies dependencies)
    {
      InitializeComponent();

      _settingsFaultFinder = settingsFaultFinder;
      _dependencies = dependencies;

      _testConnectionButton.Click += _testConnectionButton_Click;
    }
Beispiel #7
0
        public void Initialize(
            NameSpace session,
            ISettingsFaultFinder faultFinder)
        {
            InitializeComponent();

            _session     = session;
            _faultFinder = faultFinder;
            _selectOutlookFolderButton.Click += _selectOutlookFolderButton_Click;
        }
    public void Initialize (
        NameSpace session,
        ISettingsFaultFinder faultFinder)
    {
      InitializeComponent();

      _session = session;
      _faultFinder = faultFinder;
      _selectOutlookFolderButton.Click += _selectOutlookFolderButton_Click;
    }
    public void Initialize (ISettingsFaultFinder settingsFaultFinder, IServerSettingsControlDependencies dependencies)
    {
      InitializeComponent();

      _settingsFaultFinder = settingsFaultFinder;
      _dependencies = dependencies;

      _testConnectionButton.Click += _testConnectionButton_Click;
      _serverAdapterTypeControl = _serverAdapterTypeControlImp;
      _serverAdapterTypeControl.SelectedServerAdapterTypeChanged += _serverAdapterTypeControl_SelectedServerAdapterTypeChanged;
    }
        public void Initialize(ISettingsFaultFinder settingsFaultFinder, IServerSettingsControlDependencies dependencies)
        {
            InitializeComponent();

            _settingsFaultFinder = settingsFaultFinder;
            _dependencies        = dependencies;

            _testConnectionButton.Click += _testConnectionButton_Click;
            _serverAdapterTypeControl    = _serverAdapterTypeControlImp;
            _serverAdapterTypeControl.SelectedServerAdapterTypeChanged += _serverAdapterTypeControl_SelectedServerAdapterTypeChanged;
        }
Beispiel #11
0
        public void Initialize(
            ISettingsFaultFinder settingsFaultFinder,
            IServerSettingsControlDependencies dependencies,
            IOutlookAccountPasswordProvider outlookAccountPasswordProvider)
        {
            InitializeComponent();

            _settingsFaultFinder            = settingsFaultFinder;
            _dependencies                   = dependencies;
            _outlookAccountPasswordProvider = outlookAccountPasswordProvider;
            _testConnectionButton.Click    += TestConnectionButton_Click;
        }
        protected ProfileModelFactoryBase(IProfileType profileType, IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, ISettingsFaultFinder settingsFaultFinder, GeneralOptions generalOptions, IViewOptions viewOptions, OptionModelSessionData sessionData)
        {
            if (profileType == null)
            {
                throw new ArgumentNullException(nameof(profileType));
            }
            if (optionsViewModelParent == null)
            {
                throw new ArgumentNullException(nameof(optionsViewModelParent));
            }
            if (outlookAccountPasswordProvider == null)
            {
                throw new ArgumentNullException(nameof(outlookAccountPasswordProvider));
            }
            if (availableCategories == null)
            {
                throw new ArgumentNullException(nameof(availableCategories));
            }
            if (optionTasks == null)
            {
                throw new ArgumentNullException(nameof(optionTasks));
            }
            if (settingsFaultFinder == null)
            {
                throw new ArgumentNullException(nameof(settingsFaultFinder));
            }
            if (generalOptions == null)
            {
                throw new ArgumentNullException(nameof(generalOptions));
            }
            if (viewOptions == null)
            {
                throw new ArgumentNullException(nameof(viewOptions));
            }
            if (sessionData == null)
            {
                throw new ArgumentNullException(nameof(sessionData));
            }

            ProfileType                    = profileType;
            OptionsViewModelParent         = optionsViewModelParent;
            OutlookAccountPasswordProvider = outlookAccountPasswordProvider;
            AvailableCategories            = availableCategories;
            OptionTasks                    = optionTasks;
            SettingsFaultFinder            = settingsFaultFinder;
            GeneralOptions                 = generalOptions;
            ViewOptions                    = viewOptions;
            SessionData                    = sessionData;
            ServerSettingsDetector         = new Lazy <IServerSettingsDetector>(CreateServerSettingsDetector);
        }
        public OutlookFolderViewModel(NameSpace session, ISettingsFaultFinder faultFinder)
        {
            if (session == null)
            {
                throw new ArgumentNullException(nameof(session));
            }
            if (faultFinder == null)
            {
                throw new ArgumentNullException(nameof(faultFinder));
            }

            _session            = session;
            _faultFinder        = faultFinder;
            SelectFolderCommand = new DelegateCommand(_ => SelectFolder());
        }
        public OutlookFolderViewModel(ISettingsFaultFinder faultFinder, IOptionTasks optionTasks)
        {
            if (faultFinder == null)
            {
                throw new ArgumentNullException(nameof(faultFinder));
            }
            if (optionTasks == null)
            {
                throw new ArgumentNullException(nameof(optionTasks));
            }

            _faultFinder        = faultFinder;
            _optionTasks        = optionTasks;
            SelectFolderCommand = new DelegateCommand(_ => SelectFolder());
        }
Beispiel #15
0
        public OptionsModel(
            ISettingsFaultFinder faultFinder,
            IOptionTasks optionTasks,
            IOutlookAccountPasswordProvider outlookAccountPasswordProvider,
            Contracts.Options data,
            GeneralOptions generalOptions,
            IProfileType profileType,
            bool isGoogle)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (faultFinder == null)
            {
                throw new ArgumentNullException(nameof(faultFinder));
            }
            if (optionTasks == null)
            {
                throw new ArgumentNullException(nameof(optionTasks));
            }
            if (outlookAccountPasswordProvider == null)
            {
                throw new ArgumentNullException(nameof(outlookAccountPasswordProvider));
            }
            if (generalOptions == null)
            {
                throw new ArgumentNullException(nameof(generalOptions));
            }
            if (profileType == null)
            {
                throw new ArgumentNullException(nameof(profileType));
            }

            _faultFinder = faultFinder;
            _optionTasks = optionTasks;
            _outlookAccountPasswordProvider = outlookAccountPasswordProvider;
            _generalOptions = generalOptions;
            ProfileType     = profileType;

            Id = data.Id;

            _isGoogle = isGoogle;

            InitializeData(data);
        }
    public GoogleServerSettingsViewModel (ISettingsFaultFinder settingsFaultFinder, ICurrentOptions currentOptions)
    {
      if (settingsFaultFinder == null)
        throw new ArgumentNullException (nameof (settingsFaultFinder));
      if (currentOptions == null)
        throw new ArgumentNullException (nameof (currentOptions));

      _settingsFaultFinder = settingsFaultFinder;
      _currentOptions = currentOptions;
      _currentOptions.OutlookFolderTypeChanged += CurrentOptions_OutlookFolderTypeChanged;
      _doAutoDiscoveryCommand = new DelegateCommandWithoutCanExecuteDelegation (_ => DoAutoDiscovery());
      _testConnectionCommand = new DelegateCommandWithoutCanExecuteDelegation (_ =>
      {
        ComponentContainer.EnsureSynchronizationContext();
        TestConnectionAsync (CalenderUrl);
      });
    }
        public OptionTasks(NameSpace session, IEnumDisplayNameProvider enumDisplayNameProvider, ISettingsFaultFinder settingsFaultFinder)
        {
            if (session == null)
            {
                throw new ArgumentNullException(nameof(session));
            }
            if (enumDisplayNameProvider == null)
            {
                throw new ArgumentNullException(nameof(enumDisplayNameProvider));
            }
            if (settingsFaultFinder == null)
            {
                throw new ArgumentNullException(nameof(settingsFaultFinder));
            }

            _session = session;
            _enumDisplayNameProvider = enumDisplayNameProvider;
            _settingsFaultFinder     = settingsFaultFinder;
        }
        public ServerSettingsViewModel(ISettingsFaultFinder settingsFaultFinder, ICurrentOptions currentOptions)
        {
            if (settingsFaultFinder == null)
            {
                throw new ArgumentNullException(nameof(settingsFaultFinder));
            }
            if (currentOptions == null)
            {
                throw new ArgumentNullException(nameof(currentOptions));
            }

            _settingsFaultFinder   = settingsFaultFinder;
            _currentOptions        = currentOptions;
            _testConnectionCommand = new DelegateCommandWithoutCanExecuteDelegation(_ =>
            {
                ComponentContainer.EnsureSynchronizationContext();
                TestConnectionAsync();
            });
        }
Beispiel #19
0
        public GoogleServerSettingsViewModel(ISettingsFaultFinder settingsFaultFinder, ICurrentOptions currentOptions)
        {
            if (settingsFaultFinder == null)
            {
                throw new ArgumentNullException(nameof(settingsFaultFinder));
            }
            if (currentOptions == null)
            {
                throw new ArgumentNullException(nameof(currentOptions));
            }

            _settingsFaultFinder = settingsFaultFinder;
            _currentOptions      = currentOptions;
            _currentOptions.OutlookFolderTypeChanged += CurrentOptions_OutlookFolderTypeChanged;
            _doAutoDiscoveryCommand = new DelegateCommandWithoutCanExecuteDelegation(_ => DoAutoDiscovery());
            _testConnectionCommand  = new DelegateCommandWithoutCanExecuteDelegation(_ =>
            {
                ComponentContainer.EnsureSynchronizationContext();
                TestConnectionAsync(CalenderUrl);
            });
        }
Beispiel #20
0
        protected ProfileBase(IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, ISettingsFaultFinder settingsFaultFinder, GeneralOptions generalOptions, IViewOptions viewOptions)
        {
            if (optionsViewModelParent == null)
            {
                throw new ArgumentNullException(nameof(optionsViewModelParent));
            }
            if (outlookAccountPasswordProvider == null)
            {
                throw new ArgumentNullException(nameof(outlookAccountPasswordProvider));
            }
            if (availableCategories == null)
            {
                throw new ArgumentNullException(nameof(availableCategories));
            }
            if (optionTasks == null)
            {
                throw new ArgumentNullException(nameof(optionTasks));
            }
            if (settingsFaultFinder == null)
            {
                throw new ArgumentNullException(nameof(settingsFaultFinder));
            }
            if (generalOptions == null)
            {
                throw new ArgumentNullException(nameof(generalOptions));
            }
            if (viewOptions == null)
            {
                throw new ArgumentNullException(nameof(viewOptions));
            }

            OptionsViewModelParent         = optionsViewModelParent;
            OutlookAccountPasswordProvider = outlookAccountPasswordProvider;
            AvailableCategories            = availableCategories;
            OptionTasks         = optionTasks;
            SettingsFaultFinder = settingsFaultFinder;
            GeneralOptions      = generalOptions;
            ViewOptions         = viewOptions;
        }
    public OptionsDisplayControl (NameSpace session)
    {
      InitializeComponent();

      if (bool.Parse (ConfigurationManager.AppSettings["automaticallyFixSettings"]))
        _faultFinder = new SettingsFaultFinder (this);
      else
        _faultFinder = NullSettingsFaultFinder.Instance;

      _session = session;
      BindComboBox (_syncIntervalComboBox, _availableSyncIntervals);
      BindComboBox (_conflictResolutionComboBox, _availableConflictResolutions);
      BindComboBox (_synchronizationModeComboBox, _availableSynchronizationModes);

      _testConnectionButton.Click += _testConnectionButton_Click;
      _selectOutlookFolderButton.Click += _selectOutlookFolderButton_Click;

      _profileNameTextBox.TextChanged += _profileNameTextBox_TextChanged;
      _synchronizationModeComboBox.SelectedValueChanged += _synchronizationModeComboBox_SelectedValueChanged;
      _inactiveCheckBox.CheckedChanged += _inactiveCheckBox_CheckedChanged;
    }
Beispiel #22
0
 public GenericProfile(IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, ISettingsFaultFinder settingsFaultFinder, GeneralOptions generalOptions, IViewOptions viewOptions) : base(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions)
 {
 }
 public IProfileModelFactory CreateModelFactory(IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, ISettingsFaultFinder settingsFaultFinder, GeneralOptions generalOptions, IViewOptions viewOptions, OptionModelSessionData sessionData)
 {
     return(this);
 }
Beispiel #24
0
 public ProfileModelFactory(IProfileType profileType, IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, ISettingsFaultFinder settingsFaultFinder, GeneralOptions generalOptions, IViewOptions viewOptions, OptionModelSessionData sessionData)
     : base(profileType, optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions, sessionData)
 {
 }
 IServerSettingsViewModel CreateServerSettingsViewModel(ISettingsFaultFinder settingsFaultFinder, ICurrentOptions currentOptions)
 {
     return(new ServerSettingsViewModel(settingsFaultFinder, currentOptions, _outlookAccountPasswordProvider));
 }
 IServerSettingsViewModel CreateGoogleServerSettingsViewModel(ISettingsFaultFinder settingsFaultFinder, ICurrentOptions currentOptions)
 {
     return(new GoogleServerSettingsViewModel(settingsFaultFinder, currentOptions));
 }
    public OptionsDisplayControl (
      NameSpace session, 
      Func<Guid, string> profileDataDirectoryFactory,
      bool fixInvalidSettings)
    {
      InitializeComponent();

      if (fixInvalidSettings)
        _faultFinder = new SettingsFaultFinder (this);
      else
        _faultFinder = NullSettingsFaultFinder.Instance;

      _session = session;
      _profileDataDirectoryFactory = profileDataDirectoryFactory;
      BindComboBox (_syncIntervalComboBox, _availableSyncIntervals);
      BindComboBox (_conflictResolutionComboBox, _availableConflictResolutions);
      BindComboBox (_synchronizationModeComboBox, _availableSynchronizationModes);

      _testConnectionButton.Click += _testConnectionButton_Click;
      _selectOutlookFolderButton.Click += _selectOutlookFolderButton_Click;

      _profileNameTextBox.TextChanged += _profileNameTextBox_TextChanged;
      _synchronizationModeComboBox.SelectedValueChanged += _synchronizationModeComboBox_SelectedValueChanged;
      _inactiveCheckBox.CheckedChanged += _inactiveCheckBox_CheckedChanged;
    }
Beispiel #28
0
        public static async Task TestGoogleConnection(ICurrentOptions currentOptions, ISettingsFaultFinder settingsFaultFinder)
        {
            if (currentOptions.OutlookFolderType == null)
            {
                MessageBox.Show("Please select an Outlook folder to specify the item type for this profile", ConnectionTestCaption);
                return;
            }

            var outlookFolderType = currentOptions.OutlookFolderType.Value;

            StringBuilder errorMessageBuilder = new StringBuilder();

            if (!ValidateGoogleEmailAddress(errorMessageBuilder, currentOptions.EmailAddress))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The Email Address is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (outlookFolderType == OlItemType.olTaskItem)
            {
                await TestGoogleTaskConnection(currentOptions, errorMessageBuilder, outlookFolderType);

                return;
            }

            if (!ValidateWebDavUrl(currentOptions.ServerUrl, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var enteredUri   = new Uri(currentOptions.ServerUrl);
            var webDavClient = currentOptions.CreateWebDavClient();

            Uri          autoDiscoveredUrl;
            ResourceType autoDiscoveredResourceType;

            if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
            {
                var calDavDataAccess = new CalDavDataAccess(enteredUri, webDavClient);
                var foundCaldendars  = await calDavDataAccess.GetUserCalendarsNoThrow(false);

                var cardDavDataAccess = new CardDavDataAccess(enteredUri, webDavClient);
                IReadOnlyList <Tuple <Uri, string> > foundAddressBooks = await cardDavDataAccess.GetUserAddressBooksNoThrow(true);

                if (foundCaldendars.Count > 0 || foundAddressBooks.Count > 0)
                {
                    ResourceType initalResourceType;
                    if (currentOptions.OutlookFolderType == OlItemType.olContactItem)
                    {
                        initalResourceType = ResourceType.AddressBook;
                    }
                    else if (currentOptions.OutlookFolderType == OlItemType.olTaskItem)
                    {
                        initalResourceType = ResourceType.TaskList;
                    }
                    else
                    {
                        initalResourceType = ResourceType.Calendar;
                    }

                    using (SelectResourceForm listCalendarsForm =
                               new SelectResourceForm(
                                   foundCaldendars,
                                   foundAddressBooks,
                                   new Tuple <string, string>[] {},
                                   initalResourceType))
                    {
                        if (listCalendarsForm.ShowDialog() == DialogResult.OK)
                        {
                            if (listCalendarsForm.ResourceType == ResourceType.TaskList)
                            {
                                autoDiscoveredUrl        = null;
                                currentOptions.ServerUrl = listCalendarsForm.SelectedUrl;
                            }
                            else
                            {
                                autoDiscoveredUrl = new Uri(enteredUri.GetLeftPart(UriPartial.Authority) + listCalendarsForm.SelectedUrl);
                            }
                            autoDiscoveredResourceType = listCalendarsForm.ResourceType;
                        }
                        else
                        {
                            autoDiscoveredUrl          = null;
                            autoDiscoveredResourceType = ResourceType.None;
                        }
                    }
                }
                else
                {
                    MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                    autoDiscoveredUrl          = null;
                    autoDiscoveredResourceType = ResourceType.None;
                }
            }
            else
            {
                var result = await ConnectionTester.TestConnection(enteredUri, webDavClient, ResourceType.None);

                if (result.ResourceType != ResourceType.None)
                {
                    settingsFaultFinder.FixSynchronizationMode(result);
                }
                DisplayTestReport(
                    result,
                    currentOptions.SynchronizationMode,
                    currentOptions.SynchronizationModeDisplayName,
                    outlookFolderType);
                return;
            }

            if (autoDiscoveredUrl != null)
            {
                currentOptions.ServerUrl = autoDiscoveredUrl.ToString();
                var finalResult =
                    await ConnectionTester.TestConnection(autoDiscoveredUrl, webDavClient, autoDiscoveredResourceType);

                settingsFaultFinder.FixSynchronizationMode(finalResult);

                DisplayTestReport(
                    finalResult,
                    currentOptions.SynchronizationMode,
                    currentOptions.SynchronizationModeDisplayName,
                    outlookFolderType);
            }
            else if (outlookFolderType == OlItemType.olTaskItem)
            {
                TestResult result = new TestResult(ResourceType.TaskList, CalendarProperties.None, AddressBookProperties.None);

                DisplayTestReport(
                    result,
                    currentOptions.SynchronizationMode,
                    currentOptions.SynchronizationModeDisplayName,
                    outlookFolderType);
            }
        }
        public static async Task <string> TestWebDavConnection(ICurrentOptions environment, ISettingsFaultFinder settingsFaultFinder, string url)
        {
            if (environment.OutlookFolderType == null)
            {
                MessageBox.Show("Please select an Outlook folder to specify the item type for this profile", ConnectionTestCaption);
                return(url);
            }

            var outlookFolderType = environment.OutlookFolderType.Value;

            StringBuilder errorMessageBuilder = new StringBuilder();

            if (!ValidateWebDavUrl(url, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(url);
            }

            var enteredUri   = new Uri(url);
            var webDavClient = environment.CreateWebDavClient(enteredUri);

            Uri autoDiscoveredUrl;

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

                switch (autodiscoveryResult.Status)
                {
                case AutoDiscoverResultStatus.UserCancelled:
                    return(url);

                case AutoDiscoverResultStatus.ResourceSelected:
                    autoDiscoveredUrl = autodiscoveryResult.RessourceUrl;
                    break;

                case AutoDiscoverResultStatus.NoResourcesFound:
                    var autodiscoveryResult2 = await DoAutoDiscovery(enteredUri.AbsolutePath.EndsWith ("/")?enteredUri : new Uri(enteredUri.ToString() + "/"), webDavClient, false, false, outlookFolderType);

                    switch (autodiscoveryResult2.Status)
                    {
                    case AutoDiscoverResultStatus.UserCancelled:
                        return(url);

                    case AutoDiscoverResultStatus.ResourceSelected:
                        autoDiscoveredUrl = autodiscoveryResult2.RessourceUrl;
                        break;

                    case AutoDiscoverResultStatus.NoResourcesFound:
                        MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                        return(url);

                    default:
                        throw new NotImplementedException(autodiscoveryResult2.Status.ToString());
                    }
                    break;

                default:
                    throw new NotImplementedException(autodiscoveryResult.Status.ToString());
                }
            }
            else
            {
                var result = await ConnectionTester.TestConnection(enteredUri, webDavClient);

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

                    DisplayTestReport(
                        result,
                        environment.SynchronizationMode,
                        environment.SynchronizationModeDisplayName,
                        outlookFolderType);
                    return(url);
                }
                else
                {
                    var autodiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, false, false, outlookFolderType);

                    switch (autodiscoveryResult.Status)
                    {
                    case AutoDiscoverResultStatus.UserCancelled:
                        return(url);

                    case AutoDiscoverResultStatus.ResourceSelected:
                        autoDiscoveredUrl = autodiscoveryResult.RessourceUrl;
                        break;

                    case AutoDiscoverResultStatus.NoResourcesFound:
                        var autodiscoveryResult2 = await DoAutoDiscovery(enteredUri, webDavClient, true, true, outlookFolderType);

                        switch (autodiscoveryResult2.Status)
                        {
                        case AutoDiscoverResultStatus.UserCancelled:
                            return(url);

                        case AutoDiscoverResultStatus.ResourceSelected:
                            autoDiscoveredUrl = autodiscoveryResult2.RessourceUrl;
                            break;

                        case AutoDiscoverResultStatus.NoResourcesFound:
                            MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                            return(url);

                        default:
                            throw new NotImplementedException(autodiscoveryResult2.Status.ToString());
                        }
                        break;

                    default:
                        throw new NotImplementedException(autodiscoveryResult.Status.ToString());
                    }
                }
            }


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

            settingsFaultFinder.FixSynchronizationMode(finalResult);

            DisplayTestReport(
                finalResult,
                environment.SynchronizationMode,
                environment.SynchronizationModeDisplayName,
                outlookFolderType);

            return(autoDiscoveredUrl.ToString());
        }
        public static async Task <string> TestGoogleConnection(ICurrentOptions currentOptions, ISettingsFaultFinder settingsFaultFinder, string url)
        {
            if (currentOptions.OutlookFolderType == null)
            {
                MessageBox.Show("Please select an Outlook folder to specify the item type for this profile", ConnectionTestCaption);
                return(url);
            }

            var outlookFolderType = currentOptions.OutlookFolderType.Value;

            StringBuilder errorMessageBuilder = new StringBuilder();

            if (!ValidateGoogleEmailAddress(errorMessageBuilder, currentOptions.EmailAddress))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The Email Address is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(url);
            }

            if (outlookFolderType == OlItemType.olTaskItem)
            {
                return(await TestGoogleTaskConnection(currentOptions, errorMessageBuilder, outlookFolderType, url));
            }

            if (outlookFolderType == OlItemType.olContactItem && currentOptions.ServerAdapterType == ServerAdapterType.GoogleContactApi)
            {
                return(await TestGoogleContactsConnection(currentOptions, outlookFolderType, url));
            }

            if (!ValidateWebDavUrl(url, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(url);
            }

            var enteredUri   = new Uri(url);
            var webDavClient = currentOptions.CreateWebDavClient(enteredUri);

            Uri autoDiscoveredUrl;

            if (ConnectionTester.RequiresAutoDiscovery(enteredUri))
            {
                var autoDiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, false, true, outlookFolderType);

                switch (autoDiscoveryResult.Status)
                {
                case AutoDiscoverResultStatus.UserCancelled:
                    return(url);

                case AutoDiscoverResultStatus.ResourceSelected:
                    autoDiscoveredUrl = autoDiscoveryResult.RessourceUrl;
                    break;

                default:
                    autoDiscoveredUrl = null;
                    break;
                }
            }
            else
            {
                autoDiscoveredUrl = null;
            }


            var finalUrl = autoDiscoveredUrl?.ToString() ?? url;

            var result = await ConnectionTester.TestConnection(new Uri(finalUrl), webDavClient);

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

            if (outlookFolderType == OlItemType.olContactItem)
            {
                // Google Addressbook doesn't have any properties. As long as there doesn't occur an exception, the test is successful.
                MessageBox.Show("Connection test successful.", ConnectionTestCaption);
            }
            else
            {
                DisplayTestReport(
                    result,
                    currentOptions.SynchronizationMode,
                    currentOptions.SynchronizationModeDisplayName,
                    outlookFolderType);
            }

            return(finalUrl);
        }
Beispiel #31
0
        public static async Task TestWebDavConnection(ICurrentOptions environment, ISettingsFaultFinder settingsFaultFinder)
        {
            if (environment.OutlookFolderType == null)
            {
                MessageBox.Show("Please select an Outlook folder to specify the item type for this profile", ConnectionTestCaption);
                return;
            }

            var outlookFolderType = environment.OutlookFolderType.Value;

            StringBuilder errorMessageBuilder = new StringBuilder();

            if (!ValidateWebDavUrl(environment.ServerUrl, errorMessageBuilder, false))
            {
                MessageBox.Show(errorMessageBuilder.ToString(), "The CalDav/CardDav Url is invalid", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var enteredUri   = new Uri(environment.ServerUrl);
            var webDavClient = environment.CreateWebDavClient();

            Uri          autoDiscoveredUrl;
            ResourceType autoDiscoveredResourceType;

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

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

                    if (autodiscoveryResult2.WasCancelled)
                    {
                        return;
                    }
                    if (autodiscoveryResult2.RessourceUrl != null)
                    {
                        autoDiscoveredUrl          = autodiscoveryResult2.RessourceUrl;
                        autoDiscoveredResourceType = autodiscoveryResult2.ResourceType;
                    }
                    else
                    {
                        MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                        return;
                    }
                }
            }
            else
            {
                var result = await ConnectionTester.TestConnection(enteredUri, webDavClient, ResourceType.None);

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

                    DisplayTestReport(
                        result,
                        environment.SynchronizationMode,
                        environment.SynchronizationModeDisplayName,
                        outlookFolderType);
                    return;
                }
                else
                {
                    var autodiscoveryResult = await DoAutoDiscovery(enteredUri, webDavClient, false, false, environment.OutlookFolderType);

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

                        if (autodiscoveryResult2.RessourceUrl != null)
                        {
                            autoDiscoveredUrl          = autodiscoveryResult2.RessourceUrl;
                            autoDiscoveredResourceType = autodiscoveryResult2.ResourceType;
                        }
                        else
                        {
                            MessageBox.Show("No resources were found via autodiscovery!", ConnectionTestCaption);
                            return;
                        }
                    }
                }
            }

            environment.ServerUrl = autoDiscoveredUrl.ToString();

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

            settingsFaultFinder.FixSynchronizationMode(finalResult);

            DisplayTestReport(
                finalResult,
                environment.SynchronizationMode,
                environment.SynchronizationModeDisplayName,
                outlookFolderType);
        }