ui/widget/material/application/material_application.cpp¶
Material Design Application class implementation. More...
Namespaces¶
| Name |
|---|
| cf |
| cf::ui |
| cf::ui::widget |
| cf::ui::widget::material |
Detailed Description¶
Material Design Application class implementation.
Author: CFDesktop Team
Version: 0.1
Date: 2026-03-01
Source code¶
#include "material_application.h"
#include "components/material/cfmaterial_animation_factory.h"
#include "ui/core/material/material_factory_class.h"
#include "ui/core/token/theme_name/material_theme_name.h"
namespace cf::ui::widget::material {
namespace token_literals = ::cf::ui::core::token::literals;
MaterialApplication::MaterialApplication(int& argc, char** argv)
: application_support::Application(argc, argv) {
// Call init to register themes and complete initialization
// (Derived class constructor body can safely call virtual init())
init();
}
MaterialApplication::~MaterialApplication() = default;
void MaterialApplication::init() {
// Register Material animation factory FIRST (before theme registration)
// This must be registered before calling Application::init() which
// tries to create the animation factory
Application::registerAnimationFactoryType("theme.material", [](const core::ICFTheme& theme,
QObject* parent) {
return std::make_unique<components::material::CFMaterialAnimationFactory>(theme, nullptr,
parent);
});
// Register Material Design themes
auto* themeManager = Application::themeManager();
auto installMaterialTheme = []() { return std::make_unique<cf::ui::core::MaterialFactory>(); };
themeManager->insert_one(token_literals::MATERIAL_THEME_LIGHT, installMaterialTheme);
themeManager->insert_one(token_literals::MATERIAL_THEME_DARK, installMaterialTheme);
themeManager->setThemeTo(DEFAULT_THEME, false);
// Then call base class init to complete initialization
Application::init();
}
} // namespace cf::ui::widget::material
Updated on 2026-03-09 at 10:14:01 +0000