示例#1
0
        private static void InitCulture()
        {
            var provider = new JsonLocalizationProvider();

            provider.Init();

            foreach (var culture in provider.CulturesList)
            {
                LocalizationManager.SupportedCultures.Add(culture, provider);
            }

            LocalizationManager.CurrentCulture = CultureInfo.CurrentUICulture;
        }
示例#2
0
    /// <inheritdoc/>
    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        // Register logging
        Logger logger = new LoggerConfiguration()
                        .MinimumLevel.Information()
                        .WriteTo.Debug()
                        .WriteTo.File(Consts.LogFilename,
                                      rollingInterval: RollingInterval.Infinite,
                                      rollOnFileSizeLimit: true,
                                      fileSizeLimitBytes: 5 * Consts.Megabyte)
                        .CreateLogger();

        containerRegistry.RegisterInstance <ILogger>(logger);

        AppSettings appSettings = CreateOptions();

        containerRegistry.RegisterInstance(appSettings);

        ThemeManager.Current.ChangeTheme(Current, appSettings.Theme, appSettings.Accent);

        var        paletteHelper = new PaletteHelper();
        IBaseTheme baseTheme     = MaterialDesignThemes.Wpf.Theme.Dark;

        if (appSettings.Theme == "Light")
        {
            baseTheme = MaterialDesignThemes.Wpf.Theme.Light;
        }

        paletteHelper.SetTheme(MaterialDesignThemes.Wpf.Theme.Create(baseTheme,
                                                                     (Color)ColorConverter.ConvertFromString(appSettings.Accent),
                                                                     (Color)ColorConverter.ConvertFromString(appSettings.Accent)));

        // Register main page and main vm - they are constant
        containerRegistry.RegisterSingleton <MainWindowViewModel>();

        containerRegistry.UseAutomapper(Container);

        // Register services
        containerRegistry.RegisterSingleton <ImageService>();
        containerRegistry.Register <IDayService, DayService>();
        containerRegistry.RegisterSingleton <IContextFactory, ContextFactory>();

        // Use instance of provider as singleton for different interfaces
        var jsonProvider = new JsonLocalizationProvider();

        containerRegistry.RegisterInstance <ILocalization>(jsonProvider);
        containerRegistry.RegisterInstance <ILocalizationProvider>(jsonProvider);
        containerRegistry.RegisterInstance <ICurrentCultureProvider>(jsonProvider);

        // If no localization exists or current config is invalid, close application
        EnsureLocalizationProvided();

        // TODO: remove after introducing data migrator
        DatabaseService dbService = Container.Resolve <DatabaseService>();

        dbService.MigrateDatabase();

        // Variables affect pages, so we set them beforehand
        SetStaticVariables();

        // Dialog service is constant - we have only one window
        containerRegistry.RegisterInstance(new DialogService(
                                               Container.Resolve <MainWindowViewModel>(),
                                               DialogCoordinator.Instance,
                                               Container.Resolve <IContainerExtension>(),
                                               Container.Resolve <ILocalization>()
                                               )
                                           );

        // Register pages
        containerRegistry.RegisterForNavigation <WeekSettingsView>();
        containerRegistry.RegisterForNavigation <GeneratedWeekView>();
        containerRegistry.RegisterForNavigation <SettingsView>();
        containerRegistry.RegisterForNavigation <WeekView>();
        containerRegistry.RegisterForNavigation <ShoppingCartView>();
        containerRegistry.RegisterForNavigation <RecipeListView>();
        containerRegistry.RegisterForNavigation <RecipeView>();
        containerRegistry.RegisterForNavigation <IngredientListView>();
        containerRegistry.RegisterForNavigation <TagListView>();
    }