1 /* 2 * Copyright 2013-2015, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Ingo Weinhold <ingo_weinhold@gmx.de> 7 * Rene Gollent <rene@gollent.com> 8 */ 9 #ifndef PACKAGE_MANAGER_H 10 #define PACKAGE_MANAGER_H 11 12 13 #include <package/DaemonClient.h> 14 #include <package/manager/PackageManager.h> 15 16 #include <NumberFormat.h> 17 18 #include "DecisionProvider.h" 19 20 21 using namespace BPackageKit; 22 using BPackageKit::BPrivate::BDaemonClient; 23 using BManager::BPrivate::BPackageManager; 24 25 26 class PackageManager : public BPackageManager, 27 private BPackageManager::UserInteractionHandler { 28 public: 29 PackageManager( 30 BPackageInstallationLocation location, 31 bool interactive = true); 32 ~PackageManager(); 33 34 void SetInteractive(bool interactive); 35 36 virtual void JobFailed(BSupportKit::BJob* job); 37 38 private: 39 // UserInteractionHandler 40 virtual void HandleProblems(); 41 virtual void ConfirmChanges(bool fromMostSpecific); 42 43 virtual void Warn(status_t error, const char* format, ...); 44 45 46 virtual void ProgressPackageDownloadStarted( 47 const char* packageName); 48 virtual void ProgressPackageDownloadActive( 49 const char* packageName, 50 float completionPercentage, 51 off_t bytes, off_t totalBytes); 52 virtual void ProgressPackageDownloadComplete( 53 const char* packageName); 54 virtual void ProgressPackageChecksumStarted( 55 const char* packageName); 56 virtual void ProgressPackageChecksumComplete( 57 const char* packageName); 58 59 virtual void ProgressStartApplyingChanges( 60 InstalledRepository& repository); 61 virtual void ProgressTransactionCommitted( 62 InstalledRepository& repository, 63 const BCommitTransactionResult& result); 64 virtual void ProgressApplyingChangesDone( 65 InstalledRepository& repository); 66 67 private: 68 void _PrintResult(InstalledRepository& 69 installationRepository); 70 71 private: 72 DecisionProvider fDecisionProvider; 73 BNumberFormat fNumberFormat; 74 BPackageManager::ClientInstallationInterface 75 fClientInstallationInterface; 76 bool fInteractive; 77 78 bool fShowProgress; 79 off_t fLastBytes; 80 bigtime_t fLastRateCalcTime; 81 float fDownloadRate; 82 }; 83 84 85 #endif // PACKAGE_MANAGER_H 86