#include "pch.h"
#include "app.h"
#include "legacy_app_dialog_services.h"
#include "legacy_document_layer_services.h"

#ifdef __QUEST__
#include "oculus_vr.h"
#endif

namespace pp::panopainter {
void open_document_export_dialog(App& app, std::string ext);
void open_document_export_layers_dialog(App& app);
void open_document_export_anim_frames_dialog(App& app);
void open_document_export_depth_dialog(App& app);
void open_document_export_cube_faces_dialog(App& app);
void open_ppbr_export_dialog(App& app);
void open_document_timelapse_export_dialog(App& app);
void open_document_export_mp4_dialog(App& app);
void open_usermanual_dialog(App& app);
void open_changelog_dialog(App& app);
void open_about_dialog(App& app);
void open_whatsnew_dialog(App& app, bool force_show);
void open_shortcuts_dialog(App& app);
void open_legacy_document_layer_rename_dialog(App& app);
}

std::shared_ptr<NodeProgressBar> App::show_progress(const std::string& title, int total /*= 0*/)
{
    return pp::panopainter::show_legacy_app_progress_dialog(*this, title, total);
}

std::shared_ptr<NodeMessageBox> App::message_box(const std::string &title, const std::string& text, bool cancel_button)
{
    return pp::panopainter::show_legacy_app_message_dialog(*this, title, text, cancel_button);
}

std::shared_ptr<NodeInputBox> App::input_box(const std::string& title, 
    const std::string& field_name, const std::string& ok_caption /*= "Ok"*/)
{
    return pp::panopainter::show_legacy_app_input_dialog(*this, title, field_name, ok_caption);
}

void App::dialog_usermanual()
{
    pp::panopainter::open_usermanual_dialog(*this);
}

void App::dialog_changelog()
{
    pp::panopainter::open_changelog_dialog(*this);
}

void App::dialog_about()
{
    pp::panopainter::open_about_dialog(*this);
}

void App::dialog_export(std::string ext)
{
    pp::panopainter::open_document_export_dialog(*this, ext);
}

void App::dialog_export_layers()
{
    pp::panopainter::open_document_export_layers_dialog(*this);
}

void App::dialog_export_anim_frames()
{
    pp::panopainter::open_document_export_anim_frames_dialog(*this);
}

void App::dialog_export_depth()
{
    pp::panopainter::open_document_export_depth_dialog(*this);
}

void App::dialog_export_cube_faces()
{
    pp::panopainter::open_document_export_cube_faces_dialog(*this);
}

void App::dialog_layer_rename()
{
    pp::panopainter::open_legacy_document_layer_rename_dialog(*this);
}

void App::dialog_preset_download()
{

}

void App::dialog_ppbr_export()
{
    pp::panopainter::open_ppbr_export_dialog(*this);
}

void App::dialog_timelapse_export()
{
    pp::panopainter::open_document_timelapse_export_dialog(*this);
}

void App::dialog_export_mp4()
{
    pp::panopainter::open_document_export_mp4_dialog(*this);
}

void App::dialog_whatsnew(bool force_show)
{
    pp::panopainter::open_whatsnew_dialog(*this, force_show);
}

void App::dialog_shortcuts()
{
    pp::panopainter::open_shortcuts_dialog(*this);
}
