public GenericOptionsViewModel (
IOptionsViewModelParent parent,
GeneralOptions generalOptions,
IOutlookAccountPasswordProvider outlookAccountPasswordProvider,
Func<ISettingsFaultFinder, ICurrentOptions, IServerSettingsViewModel> serverSettingsViewModelFactory,
Func<ICurrentOptions, IMappingConfigurationViewModelFactory> mappingConfigurationViewModelFactoryFactory,
IOptionTasks optionTasks)
: base (parent)
{
if (generalOptions == null)
throw new ArgumentNullException (nameof (generalOptions));
if (outlookAccountPasswordProvider == null)
throw new ArgumentNullException (nameof (outlookAccountPasswordProvider));
if (mappingConfigurationViewModelFactoryFactory == null)
throw new ArgumentNullException (nameof (mappingConfigurationViewModelFactoryFactory));
_syncSettingsViewModel = new SyncSettingsViewModel();
_networkSettingsViewModel = new NetworkSettingsViewModel();
var faultFinder = generalOptions.FixInvalidSettings ? new SettingsFaultFinder (this) : NullSettingsFaultFinder.Instance;
_serverSettingsViewModel = serverSettingsViewModelFactory (faultFinder, this);
_generalOptions = generalOptions;
_outlookAccountPasswordProvider = outlookAccountPasswordProvider;
_mappingConfigurationViewModelFactory = mappingConfigurationViewModelFactoryFactory(this);
_outlookFolderViewModel = new OutlookFolderViewModel (faultFinder, optionTasks);
_outlookFolderViewModel.PropertyChanged += OutlookFolderViewModel_PropertyChanged;
_timeRangeViewModel = new TimeRangeViewModel();
}