1/* 2 * Copyright 2013-2014, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef PACKAGE_MANAGER_H 6#define PACKAGE_MANAGER_H 7 8 9#include <map> 10#include <set> 11 12#include <package/Context.h> 13#include <package/Job.h> 14 15#include <package/DaemonClient.h> 16#include <package/manager/PackageManager.h> 17 18 19using BPackageKit::BCommitTransactionResult; 20using BPackageKit::BContext; 21using BPackageKit::BPackageInstallationLocation; 22using BPackageKit::BRepositoryConfig; 23using BPackageKit::BSolverPackage; 24using BSupportKit::BJob; 25using BSupportKit::BJobStateListener; 26 27using BPackageKit::BPrivate::BDaemonClient; 28using BPackageKit::BManager::BPrivate::BPackageManager; 29 30 31class Package; 32class ProblemWindow; 33class ResultWindow; 34class Root; 35class Volume; 36 37 38class PackageManager : public BPackageManager, 39 private BPackageManager::InstallationInterface, 40 private BPackageManager::UserInteractionHandler { 41public: 42 PackageManager(Root* root, Volume* volume); 43 ~PackageManager(); 44 45 void HandleUserChanges(); 46 47private: 48 // InstallationInterface 49 virtual void InitInstalledRepository( 50 InstalledRepository& repository); 51 virtual void ResultComputed(InstalledRepository& repository); 52 53 virtual status_t PrepareTransaction(Transaction& transaction); 54 virtual status_t CommitTransaction(Transaction& transaction, 55 BCommitTransactionResult& _result); 56 57private: 58 // UserInteractionHandler 59 virtual void HandleProblems(); 60 virtual void ConfirmChanges(bool fromMostSpecific); 61 62 virtual void Warn(status_t error, const char* format, ...); 63 64 virtual void ProgressPackageDownloadStarted( 65 const char* packageName); 66 virtual void ProgressPackageDownloadActive( 67 const char* packageName, 68 float completionPercentage, 69 off_t bytes, off_t totalBytes); 70 virtual void ProgressPackageDownloadComplete( 71 const char* packageName); 72 virtual void ProgressPackageChecksumStarted( 73 const char* title); 74 virtual void ProgressPackageChecksumComplete( 75 const char* title); 76 77 virtual void ProgressStartApplyingChanges( 78 InstalledRepository& repository); 79 virtual void ProgressTransactionCommitted( 80 InstalledRepository& repository, 81 const BCommitTransactionResult& result); 82 virtual void ProgressApplyingChangesDone( 83 InstalledRepository& repository); 84 85private: 86 // BJobStateListener 87 virtual void JobFailed(BSupportKit::BJob* job); 88 virtual void JobAborted(BSupportKit::BJob* job); 89 90private: 91 typedef std::set<BSolverPackage*> SolverPackageSet; 92 typedef std::map<Package*, BSolverPackage*> SolverPackageMap; 93 94private: 95 bool _AddResults(InstalledRepository& repository, 96 ResultWindow* window); 97 98 BSolverPackage* _SolverPackageFor(Package* package) const; 99 100 void _InitGui(); 101 102private: 103 Root* fRoot; 104 Volume* fVolume; 105 SolverPackageMap fSolverPackages; 106 SolverPackageSet fPackagesAddedByUser; 107 SolverPackageSet fPackagesRemovedByUser; 108 ProblemWindow* fProblemWindow; 109}; 110 111 112#endif // PACKAGE_MANAGER_H 113