xref: /haiku/src/bin/pkgman/PackageManager.h (revision dd2a1e350b303b855a50fd64e6cb55618be1ae6a)
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