예제 #1
0
 private void SaveToModel(SettingsPageBaseViewModel vm)
 {
     if (vm != null)
     {
         var options = GetService <ISettingsManager>();
         vm.SaveOptionsToModel(options.Options);
     }
 }
예제 #2
0
 /// <summary>
 /// Applies the current appearance settings to the view.
 /// </summary>
 /// <param name="vm"></param>
 private void LoadFromModel(SettingsPageBaseViewModel vm)
 {
     if (vm != null)
     {
         var options = GetService <ISettingsManager>();
         vm.ApplyOptionsFromModel(options.Options);
     }
 }
예제 #3
0
        /// <summary>
        /// Setup viewmodel for edtiting by initializing
        /// viewmodels from model data and selecting a default page.
        /// </summary>
        private void LoadData()
        {
            var settings = GetService <ISettingsManager>();

            var List = new List <SettingsPageBaseViewModel>()
            {
                new GeneralViewModel(),
                new AppearanceViewModel(settings.Themes),
                new AboutViewModel()
            };

            for (int i = 0; i < List.Count; i++)
            {
                LoadFromModel(List[i]);
                Pages.Add(List[i]);
            }

            SelectedPage      = List[0];
            IsEditingSettings = true;
        }
예제 #4
0
        /// <summary>
        /// Class Constructor
        /// </summary>
        /// <param name="settingsManager"></param>
        public SettingsPageViewModel(List <IPageTemplateModel> optionalPages = null)
        {
            var reslocService = GetService <IResourceLocator>();

            _PageTemplateModels = new SortedList <uint, IPageTemplateModel>();

            _PageTemplateModels.Add(0, reslocService.GetNewPageTemplateModel(
                                        Assembly.GetAssembly(typeof(GeneralSettingsView)).GetName().Name,
                                        "Views/Pages/SettingsPages/DataTemplates.xaml",
                                        "GeneralSettingsTemplate",
                                        new GeneralSettingsViewModel("General"),
                                        "Options", 0));

            _PageTemplateModels.Add(9999999, reslocService.GetNewPageTemplateModel(
                                        Assembly.GetAssembly(typeof(AboutViewModel)).GetName().Name,
                                        "Views/Pages/SettingsPages/DataTemplates.xaml",
                                        "AboutSettingsTemplate",
                                        new AboutViewModel(),
                                        "About", 9999999));

            // Add optional page models in addition to those already implemented above.
            if (optionalPages != null)
            {
                // Icon size can be setup on Appearance page if application contains that setting page
                // So, we hide it from General page if Appearance page should be available
                if (optionalPages.Count > 0)
                {
                    SetGeneralIconSizeVisibility(false);
                }

                foreach (var item in optionalPages)
                {
                    _PageTemplateModels.Add(item.SortPriority, item);
                }
            }

            _Pages = new ObservableCollection <SettingsPageBaseViewModel>();
            _PageTemplateSelector = new SettingsTemplateSelector();
            foreach (var item in _PageTemplateModels)
            {
                var template = reslocService.GetResource <DataTemplate>(
                    item.Value.AssemblyName,
                    item.Value.ResourceFilename,
                    item.Value.ResourceKey) as DataTemplate;

                // Register a DataTemplate for each settings view page to map between view and model
                _PageTemplateSelector.RegisterDataTemplate(item.Value.ViewModelInstance.GetType(), template);

                var vm = item.Value.ViewModelInstance as SettingsPageBaseViewModel;

                if (vm != null)
                {
                    vm.IsDirty = false;
                    _Pages.Add(vm);

                    if (_SelectedPage == null)
                    {
                        _SelectedPage = (vm);
                    }

                    // Is current document a EditTranslationsDocumentViewModel?
                    // Then try to load default data for it...
                    vm.DirtyFlagChangedEvent += SettingsPage_DirtyFlagChangedEvent;
                }
            }

            _IsDirty = false;
        }