#ifndef INSTALL_PACKAGE_PROCESS_H
#define INSTALL_PACKAGE_PROCESS_H
#include <vector>
#include "AbstractPackageProcess.h"
#include "PackageProgressListener.h"
typedef std::set<PackageInfoRef> PackageInfoSet;
class DownloadProgress;
class InstallPackageProcess
: public AbstractPackageProcess,
private PackageProgressListener {
public:
InstallPackageProcess(
const BString& packageName, Model* model);
virtual ~InstallPackageProcess();
virtual const char* Name() const;
virtual const char* Description() const;
virtual float Progress();
virtual void DownloadProgressChanged(
const char* packageName,
float progress);
virtual void DownloadProgressComplete(
const char* packageName);
virtual void ConfirmedChanges(
BPackageManager::InstalledRepository&
repository);
protected:
virtual status_t RunInternal();
private:
static status_t _DeriveSimplePackageName(
const BString& canonicalForm,
BString& simplePackageName);
void _SetDownloadedPackagesState(
PackageState state);
void _SetDownloadProgress(
const BString& simplePackageName,
float progress);
private:
std::map<BString, DownloadProgress>
fDownloadProgresses;
BString fDescription;
bigtime_t fLastDownloadUpdate;
std::set<BString> fDownloadedPackageNames;
};
#endif