Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
stenzek
GitHub Repository: stenzek/duckstation
Path: blob/master/src/updater/updater_progress_callback.h
6236 views
1
// SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <[email protected]>
2
// SPDX-License-Identifier: CC-BY-NC-ND-4.0
3
4
#pragma once
5
#include "common/progress_callback.h"
6
7
class UpdaterProgressCallback : public ProgressCallback
8
{
9
public:
10
UpdaterProgressCallback() = default;
11
virtual ~UpdaterProgressCallback() override = default;
12
13
virtual void DisplayError(const std::string_view message) = 0;
14
virtual void DisplayWarning(const std::string_view message) = 0;
15
virtual void DisplayInformation(const std::string_view message) = 0;
16
virtual void DisplayDebugMessage(const std::string_view message) = 0;
17
18
virtual void ModalError(const std::string_view message) = 0;
19
virtual bool ModalConfirmation(const std::string_view message) = 0;
20
virtual void ModalInformation(const std::string_view message) = 0;
21
22
#define MAKE_PROGRESS_CALLBACK_FORWARDER(from, to) \
23
template<typename... T> \
24
void from(fmt::format_string<T...> fmt, T&&... args) \
25
{ \
26
TinyString str; \
27
fmt::vformat_to(std::back_inserter(str), fmt, fmt::make_format_args(args...)); \
28
to(str.view()); \
29
}
30
31
MAKE_PROGRESS_CALLBACK_FORWARDER(FormatError, DisplayError);
32
MAKE_PROGRESS_CALLBACK_FORWARDER(FormatWarning, DisplayWarning);
33
MAKE_PROGRESS_CALLBACK_FORWARDER(FormatInformation, DisplayInformation);
34
MAKE_PROGRESS_CALLBACK_FORWARDER(FormatDebugMessage, DisplayDebugMessage);
35
MAKE_PROGRESS_CALLBACK_FORWARDER(FormatModalError, ModalError);
36
MAKE_PROGRESS_CALLBACK_FORWARDER(FormatModalConfirmation, ModalConfirmation);
37
MAKE_PROGRESS_CALLBACK_FORWARDER(FormatModalInformation, ModalInformation);
38
39
#undef MAKE_PROGRESS_CALLBACK_FORWARDER
40
};
41
42