From 386ea5b6ada8ed458b6fdad576a26fe7b0417b4a Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Mon, 2 Jan 2023 12:05:20 +0100 Subject: [PATCH] forward declare Updater --- include/render/gui/UpdateMenu.h | 13 +++++++++--- src/render/gui/UpdateMenu.cpp | 36 ++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/include/render/gui/UpdateMenu.h b/include/render/gui/UpdateMenu.h index 5d3ec5a..f0a1d51 100644 --- a/include/render/gui/UpdateMenu.h +++ b/include/render/gui/UpdateMenu.h @@ -2,21 +2,28 @@ #include "GuiWidget.h" -#include "updater/Updater.h" - #include +#include namespace td { + +namespace utils { + +class Updater; + +} // namespace utils + namespace gui { class UpdateMenu : public GuiWidget { private: bool m_Opened; std::string m_Error; - utils::Updater m_Updater; + std::unique_ptr m_Updater; std::shared_future m_UpdateAvailable; public: UpdateMenu(client::Client* client); + virtual ~UpdateMenu(); virtual void Render(); private: diff --git a/src/render/gui/UpdateMenu.cpp b/src/render/gui/UpdateMenu.cpp index 0ec98ec..68a762a 100644 --- a/src/render/gui/UpdateMenu.cpp +++ b/src/render/gui/UpdateMenu.cpp @@ -1,5 +1,7 @@ #include "render/gui/UpdateMenu.h" +#include "updater/Updater.h" + #include "render/gui/imgui/imgui.h" #include @@ -7,10 +9,12 @@ namespace td { namespace gui { -UpdateMenu::UpdateMenu(client::Client* client) : GuiWidget(client), m_Opened(true) { +UpdateMenu::UpdateMenu(client::Client* client) : GuiWidget(client), m_Opened(true), m_Updater(std::make_unique()) { CheckUpdates(); } +UpdateMenu::~UpdateMenu() {} + void UpdateMenu::Render() { RenderErrorPopup(); if (m_Opened) { @@ -20,40 +24,40 @@ void UpdateMenu::Render() { bool updateAvailable = m_UpdateAvailable.get(); if (updateAvailable) { - if (m_Updater.IsFileWrited()) { + if (m_Updater->IsFileWrited()) { ImGui::Text("The update is now installed"); ImGui::Text("The game needs to be restarted"); - } else if (m_Updater.IsDownloadComplete()) { + } else if (m_Updater->IsDownloadComplete()) { ImGui::Text("Download done!"); if (ImGui::Button("Install")) { - if (!m_Updater.WriteFile()) { + if (!m_Updater->WriteFile()) { m_Error = "Failed to write file !\n"; ImGui::OpenPopup("UpdateError"); } } if (ImGui::Button("Cancel")) { - m_Updater.CancelDownload(); - m_Updater.ClearCache(); + m_Updater->CancelDownload(); + m_Updater->ClearCache(); } } else { - if (m_Updater.GetDownloadProgress() > 0) { + if (m_Updater->GetDownloadProgress() > 0) { ImGui::Text("Downloading ..."); - ImGui::ProgressBar(m_Updater.GetDownloadProgress()); + ImGui::ProgressBar(m_Updater->GetDownloadProgress()); if (ImGui::Button("Cancel")) { - m_Updater.CancelDownload(); + m_Updater->CancelDownload(); } } else { ImGui::Text("An update is available!"); ImGui::Separator(); - ImGui::Text("Current version : %s", m_Updater.GetCurrentVersion().c_str()); - ImGui::Text("Last version : %s", m_Updater.GetLastVersion().c_str()); + ImGui::Text("Current version : %s", m_Updater->GetCurrentVersion().c_str()); + ImGui::Text("Last version : %s", m_Updater->GetLastVersion().c_str()); - bool canDownloadFile = m_Updater.CanUpdate(); + bool canDownloadFile = m_Updater->CanUpdate(); if (!canDownloadFile) ImGui::BeginDisabled(); if (ImGui::Button("Download")) { - m_Updater.DownloadUpdate(); + m_Updater->DownloadUpdate(); } if (!canDownloadFile) ImGui::EndDisabled(); @@ -67,8 +71,8 @@ void UpdateMenu::Render() { } else { ImGui::Text("No update available!"); ImGui::Separator(); - ImGui::Text("Current version : %s", m_Updater.GetCurrentVersion().c_str()); - ImGui::Text("Last version : %s", m_Updater.GetLastVersion().c_str()); + ImGui::Text("Current version : %s", m_Updater->GetCurrentVersion().c_str()); + ImGui::Text("Last version : %s", m_Updater->GetLastVersion().c_str()); } } else { ImGui::Text("Checking updates ..."); @@ -89,7 +93,7 @@ bool UpdateMenu::IsUpdateChecked() { } void UpdateMenu::CheckUpdates() { - m_UpdateAvailable = std::async(std::launch::async, [&]() { return m_Updater.CheckUpdate();}); + m_UpdateAvailable = std::async(std::launch::async, [&]() { return m_Updater->CheckUpdate();}); } } // namespace gui