Skip to content

Commit

Permalink
GraphicPackWindow2: disable update button when a game is running
Browse files Browse the repository at this point in the history
and re-enable it when a game is stopped
  • Loading branch information
goeiecool9999 committed Mar 24, 2024
1 parent 241915e commit b837072
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 10 deletions.
16 changes: 6 additions & 10 deletions src/gui/DownloadGraphicPacksWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,14 +110,6 @@ void deleteDownloadedGraphicPacks()

void DownloadGraphicPacksWindow::UpdateThread()
{
if (CafeSystem::IsTitleRunning())
{
wxMessageBox(_("Graphic packs cannot be updated while a game is running."), _("Graphic packs"), 5, this->GetParent());
// cancel update
m_threadState = ThreadFinished;
return;
}

// get github url
std::string githubAPIUrl;
curlDownloadFileState_t tempDownloadState;
Expand Down Expand Up @@ -326,8 +318,6 @@ DownloadGraphicPacksWindow::DownloadGraphicPacksWindow(wxWindow* parent)


m_downloadState = std::make_unique<curlDownloadFileState_t>();

m_thread = std::thread(&DownloadGraphicPacksWindow::UpdateThread, this);
}

DownloadGraphicPacksWindow::~DownloadGraphicPacksWindow()
Expand All @@ -344,6 +334,12 @@ const std::string& DownloadGraphicPacksWindow::GetException() const

int DownloadGraphicPacksWindow::ShowModal()
{
if(CafeSystem::IsTitleRunning())
{
wxMessageBox(_("Graphic packs cannot be updated while a game is running."), _("Graphic packs"), 5, this->GetParent());
return wxID_CANCEL;
}
m_thread = std::thread(&DownloadGraphicPacksWindow::UpdateThread, this);
wxDialog::ShowModal();
return m_threadState == ThreadCanceled ? wxID_CANCEL : wxID_OK;
}
Expand Down
6 changes: 6 additions & 0 deletions src/gui/GraphicPacksWindow2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ GraphicPacksWindow2::GraphicPacksWindow2(wxWindow* parent, uint64_t title_id_fil
auto* row = new wxBoxSizer(wxHORIZONTAL);
m_update_graphicPacks = new wxButton(m_right_panel, wxID_ANY, _("Download latest community graphic packs"));
m_update_graphicPacks->Bind(wxEVT_BUTTON, &GraphicPacksWindow2::OnCheckForUpdates, this);
m_update_graphicPacks->Enable(!CafeSystem::IsTitleRunning());
row->Add(m_update_graphicPacks, 0, wxALL, 5);

sizer->Add(row, 0, wxALL | wxEXPAND, 5);
Expand Down Expand Up @@ -676,6 +677,11 @@ void GraphicPacksWindow2::OnInstalledGamesChanged(wxCommandEvent& event)
event.Skip();
}

void GraphicPacksWindow2::OnTitleRunningStateChanged(bool running)
{
m_update_graphicPacks->Enable(!running);
}

void GraphicPacksWindow2::ReloadPack(const GraphicPackPtr& graphic_pack) const
{
if (graphic_pack->HasShaders() || graphic_pack->HasPatches() || graphic_pack->HasCustomVSyncFrequency())
Expand Down
1 change: 1 addition & 0 deletions src/gui/GraphicPacksWindow2.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class GraphicPacksWindow2 : public wxDialog
~GraphicPacksWindow2();

static void RefreshGraphicPacks();
void OnTitleRunningStateChanged(bool running);

private:
std::string m_filter;
Expand Down
10 changes: 10 additions & 0 deletions src/gui/MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -625,6 +625,7 @@ bool MainWindow::FileLoad(const fs::path launchPath, wxLaunchGameEvent::INITIATE
CreateCanvas();
CafeSystem::LaunchForegroundTitle();
RecreateMenu();
UpdateChildWindowTitleRunningState();

return true;
}
Expand Down Expand Up @@ -683,6 +684,7 @@ void MainWindow::OnFileMenu(wxCommandEvent& event)
RecreateMenu();
CreateGameListAndStatusBar();
DoLayout();
UpdateChildWindowTitleRunningState();
}
}

Expand Down Expand Up @@ -2320,6 +2322,14 @@ void MainWindow::RecreateMenu()
SetMenuVisible(false);
}

void MainWindow::UpdateChildWindowTitleRunningState()
{
const bool running = CafeSystem::IsTitleRunning();

if(auto graphicsPackWindow = dynamic_cast<GraphicPacksWindow2*>(m_graphic_pack_window))
graphicsPackWindow->OnTitleRunningStateChanged(running);
}

void MainWindow::RestoreSettingsAfterGameExited()
{
RecreateMenu();
Expand Down
1 change: 1 addition & 0 deletions src/gui/MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ class MainWindow : public wxFrame, public CafeSystem::SystemImplementation

private:
void RecreateMenu();
void UpdateChildWindowTitleRunningState();
static wxString GetInitialWindowTitle();
void ShowGettingStartedDialog();

Expand Down

0 comments on commit b837072

Please sign in to comment.