#pragma once #include #include #include #include #include namespace hex::plugin::builtin::ui { namespace impl { template struct ToastNotification : Toast { ToastNotification(ImColor color, const char *icon, UnlocalizedString title, UnlocalizedString message) : Toast(color), m_icon(icon), m_title(std::move(title)), m_message(std::move(message)) {} void drawContent() final { ImGuiExt::TextFormattedColored(this->getColor(), "{}", m_icon); ImGui::SameLine(); ImGui::PushFont(ImHexApi::Fonts::Bold()); { ImGuiExt::TextFormatted("{}", hex::limitStringLength(Lang(m_title).get(), 30)); } ImGui::PopFont(); ImGui::Separator(); ImGuiExt::TextFormattedWrapped("{}", hex::limitStringLength(Lang(m_message).get(), 60)); } private: const char *m_icon; UnlocalizedString m_title, m_message; }; } struct ToastInfo : impl::ToastNotification { ToastInfo(UnlocalizedString title, UnlocalizedString message) : ToastNotification(ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_LoggerInfo), ICON_VS_INFO, std::move(title), std::move(message)) {} }; struct ToastWarn : impl::ToastNotification { ToastWarn(UnlocalizedString title, UnlocalizedString message) : ToastNotification(ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_LoggerWarning), ICON_VS_WARNING, std::move(title), std::move(message)) {} }; struct ToastError : impl::ToastNotification { ToastError(UnlocalizedString title, UnlocalizedString message) : ToastNotification(ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_LoggerError), ICON_VS_ERROR, std::move(title), std::move(message)) {} }; }