mirror of
https://github.com/stenzek/duckstation.git
synced 2025-06-06 19:45:33 +00:00
FullscreenUI: Add BackgroundProgressCallback
This commit is contained in:
parent
498e7aac56
commit
0733e173b2
@ -8525,6 +8525,75 @@ void FullscreenUI::OpenLeaderboardsWindow()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FullscreenUI::BackgroundProgressCallback::BackgroundProgressCallback(std::string name)
|
||||||
|
: ProgressCallback(), m_name(std::move(name))
|
||||||
|
{
|
||||||
|
ImGuiFullscreen::OpenBackgroundProgressDialog(m_name.c_str(), "", 0, 100, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
FullscreenUI::BackgroundProgressCallback::~BackgroundProgressCallback()
|
||||||
|
{
|
||||||
|
ImGuiFullscreen::CloseBackgroundProgressDialog(m_name.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullscreenUI::BackgroundProgressCallback::SetStatusText(const std::string_view text)
|
||||||
|
{
|
||||||
|
ProgressCallback::SetStatusText(text);
|
||||||
|
Redraw(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullscreenUI::BackgroundProgressCallback::SetProgressRange(u32 range)
|
||||||
|
{
|
||||||
|
const u32 last_range = m_progress_range;
|
||||||
|
|
||||||
|
ProgressCallback::SetProgressRange(range);
|
||||||
|
|
||||||
|
if (m_progress_range != last_range)
|
||||||
|
Redraw(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullscreenUI::BackgroundProgressCallback::SetProgressValue(u32 value)
|
||||||
|
{
|
||||||
|
const u32 last_value = m_progress_value;
|
||||||
|
|
||||||
|
ProgressCallback::SetProgressValue(value);
|
||||||
|
|
||||||
|
if (m_progress_value != last_value)
|
||||||
|
Redraw(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullscreenUI::BackgroundProgressCallback::Redraw(bool force)
|
||||||
|
{
|
||||||
|
const int percent =
|
||||||
|
static_cast<int>((static_cast<float>(m_progress_value) / static_cast<float>(m_progress_range)) * 100.0f);
|
||||||
|
if (percent == m_last_progress_percent && !force)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_last_progress_percent = percent;
|
||||||
|
ImGuiFullscreen::UpdateBackgroundProgressDialog(m_name.c_str(), m_status_text, 0, 100, percent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullscreenUI::BackgroundProgressCallback::ModalError(const std::string_view message)
|
||||||
|
{
|
||||||
|
Host::ReportErrorAsync("Error", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FullscreenUI::BackgroundProgressCallback::ModalConfirmation(const std::string_view message)
|
||||||
|
{
|
||||||
|
return Host::ConfirmMessage("Confirm", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullscreenUI::BackgroundProgressCallback::ModalInformation(const std::string_view message)
|
||||||
|
{
|
||||||
|
Host::ReportErrorAsync("Information", message);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FullscreenUI::BackgroundProgressCallback::SetCancelled()
|
||||||
|
{
|
||||||
|
if (m_cancellable)
|
||||||
|
m_cancelled = true;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // __ANDROID__
|
#endif // __ANDROID__
|
||||||
|
|
||||||
LoadingScreenProgressCallback::LoadingScreenProgressCallback()
|
LoadingScreenProgressCallback::LoadingScreenProgressCallback()
|
||||||
|
@ -26,18 +26,6 @@ void OnSystemResumed();
|
|||||||
void OnSystemDestroyed();
|
void OnSystemDestroyed();
|
||||||
void OnRunningGameChanged(const std::string& path, const std::string& serial, const std::string& title, GameHash hash);
|
void OnRunningGameChanged(const std::string& path, const std::string& serial, const std::string& title, GameHash hash);
|
||||||
|
|
||||||
#ifndef __ANDROID__
|
|
||||||
void OpenPauseMenu();
|
|
||||||
void OpenCheatsMenu();
|
|
||||||
void OpenDiscChangeMenu();
|
|
||||||
void OpenAchievementsWindow();
|
|
||||||
void OpenLeaderboardsWindow();
|
|
||||||
void ReturnToMainWindow();
|
|
||||||
void ReturnToPreviousWindow();
|
|
||||||
void SetStandardSelectionFooterText(bool back_instead_of_cancel);
|
|
||||||
void UpdateRunIdleState();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void Shutdown(bool clear_state);
|
void Shutdown(bool clear_state);
|
||||||
void Render();
|
void Render();
|
||||||
void InvalidateCoverCache();
|
void InvalidateCoverCache();
|
||||||
@ -51,6 +39,43 @@ void UpdateLoadingScreen(std::string_view image, std::string_view message, s32 p
|
|||||||
s32 progress_value = -1);
|
s32 progress_value = -1);
|
||||||
void CloseLoadingScreen();
|
void CloseLoadingScreen();
|
||||||
|
|
||||||
|
#ifndef __ANDROID__
|
||||||
|
|
||||||
|
void OpenPauseMenu();
|
||||||
|
void OpenCheatsMenu();
|
||||||
|
void OpenDiscChangeMenu();
|
||||||
|
void OpenAchievementsWindow();
|
||||||
|
void OpenLeaderboardsWindow();
|
||||||
|
void ReturnToMainWindow();
|
||||||
|
void ReturnToPreviousWindow();
|
||||||
|
void SetStandardSelectionFooterText(bool back_instead_of_cancel);
|
||||||
|
void UpdateRunIdleState();
|
||||||
|
|
||||||
|
class BackgroundProgressCallback final : public ProgressCallback
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BackgroundProgressCallback(std::string name);
|
||||||
|
~BackgroundProgressCallback() override;
|
||||||
|
|
||||||
|
void SetStatusText(const std::string_view text) override;
|
||||||
|
void SetProgressRange(u32 range) override;
|
||||||
|
void SetProgressValue(u32 value) override;
|
||||||
|
|
||||||
|
void ModalError(const std::string_view message) override;
|
||||||
|
bool ModalConfirmation(const std::string_view message) override;
|
||||||
|
void ModalInformation(const std::string_view message) override;
|
||||||
|
|
||||||
|
void SetCancelled();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void Redraw(bool force);
|
||||||
|
|
||||||
|
std::string m_name;
|
||||||
|
int m_last_progress_percent = -1;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __ANDROID__
|
||||||
|
|
||||||
} // namespace FullscreenUI
|
} // namespace FullscreenUI
|
||||||
|
|
||||||
class LoadingScreenProgressCallback final : public ProgressCallback
|
class LoadingScreenProgressCallback final : public ProgressCallback
|
||||||
|
Loading…
x
Reference in New Issue
Block a user