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 viewModel = new OptionsCollectionViewModel(
                _session,
                generalOptions,
                _outlookAccountPasswordProvider,
                categories,
                GetProfileDataDirectory);

            _currentVisibleOptionsFormOrNull = viewModel;

            viewModel.SetOptionsCollection(options, initialSelectedProfileId);

            if (_uiService.ShowOptions(viewModel))
            {
                _optionsDataAccess.EnsureBackupExists("Wpf");
                return(viewModel.GetOptionsCollection());
            }
            else
            {
                return(null);
            }
        }
        public async Task ShowOptionsAsync(Guid?initialVisibleProfile = null)
        {
            if (_currentVisibleOptionsFormOrNull == null)
            {
                var            options        = _optionsDataAccess.Load();
                GeneralOptions generalOptions = _generalOptionsDataAccess.LoadOptions();
                try
                {
                    var newOptions = ShowWpfOptions(initialVisibleProfile, generalOptions, options, out var oneTimeTasks);

                    if (newOptions != null)
                    {
                        s_logger.Info("Applying new options");
                        await ApplyNewOptions(options, newOptions, generalOptions, oneTimeTasks);

                        s_logger.Info("Applied new options");
                    }
                }
                finally
                {
                    _currentVisibleOptionsFormOrNull = null;
                }
            }
            else
            {
                _currentVisibleOptionsFormOrNull.BringToFront();
                if (initialVisibleProfile.HasValue)
                {
                    _currentVisibleOptionsFormOrNull.ShowProfile(initialVisibleProfile.Value);
                }
            }
        }
        public async Task ShowOptions(Guid?initialVisibleProfile = null)
        {
            if (_currentVisibleOptionsFormOrNull == null)
            {
                var            options        = _optionsDataAccess.LoadOptions();
                GeneralOptions generalOptions = _generalOptionsDataAccess.LoadOptions();
                try
                {
                    var newOptions = ShowWpfOptions(initialVisibleProfile, generalOptions, options);

                    if (newOptions != null)
                    {
                        await ApplyNewOptions(options, newOptions, generalOptions);
                    }
                }
                finally
                {
                    _currentVisibleOptionsFormOrNull = null;
                }
            }
            else
            {
                _currentVisibleOptionsFormOrNull.BringToFront();
                if (initialVisibleProfile.HasValue)
                {
                    _currentVisibleOptionsFormOrNull.ShowProfile(initialVisibleProfile.Value);
                }
            }
        }
        private Options[] ShowWinFormOptions(Guid?initialVisibleProfile, GeneralOptions generalOptions, Options[] options)
        {
            var optionsForm = new OptionsForm(
                _session,
                GetProfileDataDirectory,
                generalOptions.FixInvalidSettings,
                _outlookAccountPasswordProvider);

            _currentVisibleOptionsFormOrNull = optionsForm;

            optionsForm.OptionsList = options;

            if (initialVisibleProfile.HasValue)
            {
                _currentVisibleOptionsFormOrNull.ShowProfile(initialVisibleProfile.Value);
            }

            if (optionsForm.ShowDialog() == DialogResult.OK)
            {
                return(optionsForm.OptionsList);
            }
            else
            {
                return(null);
            }
        }
        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);
            }
        }
Пример #6
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 void ShowOptions(Guid?initialVisibleProfile = null)
        {
            if (_currentVisibleOptionsFormOrNull == null)
            {
                var            options        = _optionsDataAccess.LoadOptions();
                GeneralOptions generalOptions = _generalOptionsDataAccess.LoadOptions();
                try
                {
                    Options[] newOptions;
                    if (generalOptions.UseNewOptionUi)
                    {
                        newOptions = ShowWpfOptions(initialVisibleProfile, generalOptions, options);
                    }
                    else
                    {
                        newOptions = ShowWinFormOptions(initialVisibleProfile, generalOptions, options);
                    }

                    if (newOptions != null)
                    {
                        ApplyNewOptions(options, newOptions, generalOptions);
                    }
                }
                finally
                {
                    _currentVisibleOptionsFormOrNull = null;
                }
            }
            else
            {
                _currentVisibleOptionsFormOrNull.BringToFront();
                if (initialVisibleProfile.HasValue)
                {
                    _currentVisibleOptionsFormOrNull.ShowProfile(initialVisibleProfile.Value);
                }
            }
        }
        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);
            }
        }