// Copyright (c) Microsoft Corporation. // Licensed under the MIT license. #pragma once #include "GlobalAppearance.g.h" #include "GlobalAppearancePageNavigationState.g.h" #include "Utils.h" namespace winrt::Microsoft::Terminal::Settings::Editor::implementation { struct GlobalAppearancePageNavigationState : GlobalAppearancePageNavigationStateT { public: GlobalAppearancePageNavigationState(const Model::GlobalAppSettings& settings) : _Globals{ settings } {} WINRT_PROPERTY(Model::GlobalAppSettings, Globals, nullptr) }; struct GlobalAppearance : GlobalAppearanceT { public: GlobalAppearance(); void OnNavigatedTo(const winrt::Windows::UI::Xaml::Navigation::NavigationEventArgs& e); WINRT_PROPERTY(Editor::GlobalAppearancePageNavigationState, State, nullptr); GETSET_BINDABLE_ENUM_SETTING(Theme, winrt::Windows::UI::Xaml::ElementTheme, State().Globals, Theme); GETSET_BINDABLE_ENUM_SETTING(TabWidthMode, winrt::Microsoft::UI::Xaml::Controls::TabViewWidthMode, State().Globals, TabWidthMode); public: // LanguageDisplayConverter maps the given BCP 47 tag to a localized string. // For instance "en-US" produces "English (United States)", while "de-DE" produces // "Deutsch (Deutschland)". This works independently of the user's locale. static winrt::hstring LanguageDisplayConverter(const winrt::hstring& tag); winrt::Windows::Foundation::Collections::IObservableVector LanguageList(); winrt::Windows::Foundation::IInspectable CurrentLanguage(); void CurrentLanguage(const winrt::Windows::Foundation::IInspectable& tag); private: std::vector _GetSupportedLanguageTags(); winrt::Windows::Foundation::Collections::IObservableVector _languageList{ nullptr }; winrt::hstring _currentLanguage; }; } namespace winrt::Microsoft::Terminal::Settings::Editor::factory_implementation { BASIC_FACTORY(GlobalAppearance); }