Integrate dialog export and Apple service teams
This commit is contained in:
@@ -8,46 +8,150 @@
|
||||
#include "node_progress_bar.h"
|
||||
|
||||
namespace pp::panopainter {
|
||||
namespace {
|
||||
|
||||
class LegacyAppProgressDialog final : public pp::app::AppProgressDialog {
|
||||
public:
|
||||
explicit LegacyAppProgressDialog(std::shared_ptr<NodeProgressBar> node) noexcept
|
||||
: node_(std::move(node))
|
||||
{
|
||||
}
|
||||
|
||||
[[nodiscard]] pp::app::AppDialogKind kind() const noexcept override
|
||||
{
|
||||
return pp::app::AppDialogKind::progress;
|
||||
}
|
||||
|
||||
[[nodiscard]] std::shared_ptr<NodeProgressBar> node() const noexcept
|
||||
{
|
||||
return node_;
|
||||
}
|
||||
|
||||
private:
|
||||
std::shared_ptr<NodeProgressBar> node_;
|
||||
};
|
||||
|
||||
class LegacyAppMessageDialog final : public pp::app::AppMessageDialog {
|
||||
public:
|
||||
explicit LegacyAppMessageDialog(std::shared_ptr<NodeMessageBox> node) noexcept
|
||||
: node_(std::move(node))
|
||||
{
|
||||
}
|
||||
|
||||
[[nodiscard]] pp::app::AppDialogKind kind() const noexcept override
|
||||
{
|
||||
return pp::app::AppDialogKind::message;
|
||||
}
|
||||
|
||||
[[nodiscard]] std::shared_ptr<NodeMessageBox> node() const noexcept
|
||||
{
|
||||
return node_;
|
||||
}
|
||||
|
||||
private:
|
||||
std::shared_ptr<NodeMessageBox> node_;
|
||||
};
|
||||
|
||||
class LegacyAppInputDialog final : public pp::app::AppInputDialog {
|
||||
public:
|
||||
explicit LegacyAppInputDialog(std::shared_ptr<NodeInputBox> node) noexcept
|
||||
: node_(std::move(node))
|
||||
{
|
||||
}
|
||||
|
||||
[[nodiscard]] pp::app::AppDialogKind kind() const noexcept override
|
||||
{
|
||||
return pp::app::AppDialogKind::input;
|
||||
}
|
||||
|
||||
[[nodiscard]] std::shared_ptr<NodeInputBox> node() const noexcept
|
||||
{
|
||||
return node_;
|
||||
}
|
||||
|
||||
private:
|
||||
std::shared_ptr<NodeInputBox> node_;
|
||||
};
|
||||
|
||||
class LegacyAppDialogFactory final : public pp::app::AppDialogFactory {
|
||||
public:
|
||||
explicit LegacyAppDialogFactory(App& app) noexcept
|
||||
: app_(app)
|
||||
{
|
||||
}
|
||||
|
||||
[[nodiscard]] std::shared_ptr<pp::app::AppProgressDialog> show_progress_dialog(
|
||||
const pp::app::AppProgressDialogPlan& plan) override
|
||||
{
|
||||
return std::make_shared<LegacyAppProgressDialog>(
|
||||
create_legacy_progress_dialog_overlay(app_, plan));
|
||||
}
|
||||
|
||||
[[nodiscard]] std::shared_ptr<pp::app::AppMessageDialog> show_message_dialog(
|
||||
const pp::app::AppMessageDialogPlan& plan) override
|
||||
{
|
||||
return std::make_shared<LegacyAppMessageDialog>(
|
||||
create_legacy_message_dialog_overlay(app_, plan));
|
||||
}
|
||||
|
||||
[[nodiscard]] std::shared_ptr<pp::app::AppInputDialog> show_input_dialog(
|
||||
const pp::app::AppInputDialogPlan& plan) override
|
||||
{
|
||||
return std::make_shared<LegacyAppInputDialog>(
|
||||
create_legacy_input_dialog_overlay(app_, plan));
|
||||
}
|
||||
|
||||
private:
|
||||
App& app_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
std::unique_ptr<pp::app::AppDialogFactory> make_legacy_app_dialog_factory(App& app)
|
||||
{
|
||||
return std::make_unique<LegacyAppDialogFactory>(app);
|
||||
}
|
||||
|
||||
std::shared_ptr<NodeProgressBar> create_legacy_app_progress_dialog(
|
||||
App& app,
|
||||
const pp::app::AppProgressDialogPlan& plan)
|
||||
{
|
||||
auto progress = make_legacy_overlay_node<NodeProgressBar>(app);
|
||||
progress->m_progress->SetWidthP(plan.progress_fraction);
|
||||
progress->m_title->set_text(plan.title.c_str());
|
||||
progress->m_total = plan.total;
|
||||
progress->m_count = plan.count;
|
||||
(void)attach_legacy_overlay_node(app, progress);
|
||||
return progress;
|
||||
return legacy_progress_dialog_node(make_legacy_app_dialog_factory(app)->show_progress_dialog(plan));
|
||||
}
|
||||
|
||||
std::shared_ptr<NodeMessageBox> create_legacy_app_message_dialog(
|
||||
App& app,
|
||||
const pp::app::AppMessageDialogPlan& plan)
|
||||
{
|
||||
auto message = make_legacy_overlay_node<NodeMessageBox>(app);
|
||||
message->m_title->set_text(plan.title.c_str());
|
||||
message->m_message->set_text(plan.message.c_str());
|
||||
message->btn_ok->m_text->set_text(plan.ok_caption.c_str());
|
||||
if (plan.show_cancel)
|
||||
message->btn_cancel->m_text->set_text(plan.cancel_caption.c_str());
|
||||
else
|
||||
close_legacy_dialog_node(*message->btn_cancel);
|
||||
(void)attach_legacy_overlay_node(app, message);
|
||||
return message;
|
||||
return legacy_message_dialog_node(make_legacy_app_dialog_factory(app)->show_message_dialog(plan));
|
||||
}
|
||||
|
||||
std::shared_ptr<NodeInputBox> create_legacy_app_input_dialog(
|
||||
App& app,
|
||||
const pp::app::AppInputDialogPlan& plan)
|
||||
{
|
||||
auto input = make_legacy_overlay_node<NodeInputBox>(app);
|
||||
input->m_title->set_text(plan.title.c_str());
|
||||
input->m_field_name->set_text(plan.field_name.c_str());
|
||||
input->btn_ok->m_text->set_text(plan.ok_caption.c_str());
|
||||
(void)attach_legacy_overlay_node(app, input);
|
||||
return input;
|
||||
return legacy_input_dialog_node(make_legacy_app_dialog_factory(app)->show_input_dialog(plan));
|
||||
}
|
||||
|
||||
std::shared_ptr<NodeProgressBar> legacy_progress_dialog_node(
|
||||
const std::shared_ptr<pp::app::AppProgressDialog>& dialog) noexcept
|
||||
{
|
||||
auto legacy = std::dynamic_pointer_cast<LegacyAppProgressDialog>(dialog);
|
||||
return legacy ? legacy->node() : nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<NodeMessageBox> legacy_message_dialog_node(
|
||||
const std::shared_ptr<pp::app::AppMessageDialog>& dialog) noexcept
|
||||
{
|
||||
auto legacy = std::dynamic_pointer_cast<LegacyAppMessageDialog>(dialog);
|
||||
return legacy ? legacy->node() : nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<NodeInputBox> legacy_input_dialog_node(
|
||||
const std::shared_ptr<pp::app::AppInputDialog>& dialog) noexcept
|
||||
{
|
||||
auto legacy = std::dynamic_pointer_cast<LegacyAppInputDialog>(dialog);
|
||||
return legacy ? legacy->node() : nullptr;
|
||||
}
|
||||
|
||||
} // namespace pp::panopainter
|
||||
|
||||
Reference in New Issue
Block a user