class Addon;
class AddonRepository;
+class TransferStatus;
+using TransferStatusPtr = std::shared_ptr<TransferStatus>;
typedef std::string AddonId;
/** Checks for, installs and removes Add-ons */
class AddonManager : public Currenton<AddonManager>
{
-public:
- struct InstallStatus
- {
- InstallStatus() :
- now(0),
- total(0),
- done(false),
- callback()
- {}
-
- int now;
- int total;
- bool done;
- std::function<void ()> callback;
-
- void then(const std::function<void ()>& callback_)
- {
- callback = callback_;
- }
- };
-
- struct InstallRequest
- {
- InstallRequest() :
- addon_id(),
- install_filename()
- {}
-
- std::string addon_id;
- std::string install_filename;
- };
-
- using InstallStatusPtr = std::shared_ptr<InstallStatus>;
- using InstallRequestPtr = std::shared_ptr<InstallRequest>;
-
private:
using AddonList = std::vector<std::unique_ptr<Addon> >;
bool m_has_been_updated;
- InstallRequestPtr m_install_request;
- InstallStatusPtr m_install_status;
TransferStatusPtr m_transfer_status;
public:
bool has_online_support() const;
bool has_been_updated() const;
void check_online();
- InstallStatusPtr request_check_online();
+ TransferStatusPtr request_check_online();
std::vector<AddonId> get_repository_addons() const;
std::vector<AddonId> get_installed_addons() const;
Addon& get_repository_addon(const AddonId& addon);
Addon& get_installed_addon(const AddonId& addon);
- InstallStatusPtr request_install_addon(const AddonId& addon_id);
- void abort_install();
+ TransferStatusPtr request_install_addon(const AddonId& addon_id);
void install_addon(const AddonId& addon_id);
void uninstall_addon(const AddonId& addon_id);