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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 4
0
 public ProfileModelFactory(IProfileType profileType, IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, GeneralOptions generalOptions, IViewOptions viewOptions, OptionModelSessionData sessionData)
     : base(profileType, optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, generalOptions, viewOptions, sessionData)
 {
 }
Esempio n. 5
0
 public override IProfileModelFactory CreateModelFactory(IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, GeneralOptions generalOptions, IViewOptions viewOptions, OptionModelSessionData sessionData)
 {
     return(new ProfileModelFactory(this, optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, generalOptions, viewOptions, sessionData));
 }
 public IProfileModelFactory CreateModelFactory(IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, ISettingsFaultFinder settingsFaultFinder, GeneralOptions generalOptions, IViewOptions viewOptions, OptionModelSessionData sessionData)
 {
     return(this);
 }
 public SmarterMailProfile(IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, ISettingsFaultFinder settingsFaultFinder, GeneralOptions generalOptions, IViewOptions viewOptions, OptionModelSessionData sessionData)
     : base(optionsViewModelParent, outlookAccountPasswordProvider, availableCategories, optionTasks, settingsFaultFinder, generalOptions, viewOptions, sessionData)
 {
 }
Esempio n. 8
0
 public abstract IProfileModelFactory CreateModelFactory(IOptionsViewModelParent optionsViewModelParent, IOutlookAccountPasswordProvider outlookAccountPasswordProvider, IReadOnlyList <string> availableCategories, IOptionTasks optionTasks, GeneralOptions generalOptions, IViewOptions viewOptions, OptionModelSessionData sessionData);
Esempio n. 9
0
        public static IProfileTypeRegistry Create(
            IOptionsViewModelParent optionsViewModelParent,
            IOutlookAccountPasswordProvider outlookAccountPasswordProvider,
            IReadOnlyList <string> availableCategories,
            IOptionTasks optionTasks,
            ISettingsFaultFinder settingsFaultFinder,
            GeneralOptions generalOptions,
            IViewOptions viewOptions,
            OptionModelSessionData sessionData)
        {
            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));
            }


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

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

            return(new ProfileTypeRegistry(all, generic, google));
        }