pkg::Package: callback for installation start.
Allow eg. Aircraft Center to add listeners to packages to be called if installation starts.
This commit is contained in:
parent
a69130ff10
commit
9868fb03a2
@ -131,12 +131,25 @@ InstallRef Package::install()
|
||||
// start a new install
|
||||
ins = new Install(this, pathOnDisk());
|
||||
m_catalog->root()->scheduleToUpdate(ins);
|
||||
|
||||
_install_cb(this, ins);
|
||||
|
||||
return ins;
|
||||
}
|
||||
|
||||
InstallRef Package::existingInstall() const
|
||||
InstallRef Package::existingInstall(const InstallCallback& cb) const
|
||||
{
|
||||
return m_catalog->installForPackage(const_cast<Package*>(this));
|
||||
InstallRef install = m_catalog->installForPackage(const_cast<Package*>(this));
|
||||
|
||||
if( cb )
|
||||
{
|
||||
_install_cb.push_back(cb);
|
||||
|
||||
if( install )
|
||||
cb(const_cast<Package*>(this), install);
|
||||
}
|
||||
|
||||
return install;
|
||||
}
|
||||
|
||||
std::string Package::id() const
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <simgear/props/props.hxx>
|
||||
#include <simgear/misc/strutils.hxx>
|
||||
|
||||
#include <simgear/structure/function_list.hxx>
|
||||
#include <simgear/structure/SGReferenced.hxx>
|
||||
#include <simgear/structure/SGSharedPtr.hxx>
|
||||
|
||||
@ -49,12 +50,16 @@ typedef std::vector<PackageRef> PackageList;
|
||||
class Package : public SGReferenced
|
||||
{
|
||||
public:
|
||||
|
||||
typedef boost::function<void(Package*, Install*)> InstallCallback;
|
||||
|
||||
/**
|
||||
* get or create an install for the package
|
||||
*/
|
||||
InstallRef install();
|
||||
|
||||
InstallRef existingInstall() const;
|
||||
InstallRef
|
||||
existingInstall(const InstallCallback& cb = InstallCallback()) const;
|
||||
|
||||
bool isInstalled() const;
|
||||
|
||||
@ -138,6 +143,8 @@ private:
|
||||
std::string m_id;
|
||||
string_set m_tags;
|
||||
CatalogRef m_catalog;
|
||||
|
||||
mutable function_list<InstallCallback> _install_cb;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user