xref: /haiku/src/bin/pkgman/PackageManager.h (revision eee422752c6de8ab971937a81225008d254ad785)
13ac0de3bSIngo Weinhold /*
2*eee42275SIngo Weinhold  * Copyright 2013-2014, Haiku, Inc. All Rights Reserved.
33ac0de3bSIngo Weinhold  * Distributed under the terms of the MIT License.
43ac0de3bSIngo Weinhold  *
53ac0de3bSIngo Weinhold  * Authors:
63ac0de3bSIngo Weinhold  *		Ingo Weinhold <ingo_weinhold@gmx.de>
79345049aSRene Gollent  *		Rene Gollent <rene@gollent.com>
83ac0de3bSIngo Weinhold  */
93ac0de3bSIngo Weinhold #ifndef PACKAGE_MANAGER_H
103ac0de3bSIngo Weinhold #define PACKAGE_MANAGER_H
113ac0de3bSIngo Weinhold 
123ac0de3bSIngo Weinhold 
1383462cc2SIngo Weinhold #include <package/DaemonClient.h>
1483462cc2SIngo Weinhold #include <package/manager/PackageManager.h>
153ac0de3bSIngo Weinhold 
163ac0de3bSIngo Weinhold #include "DecisionProvider.h"
173ac0de3bSIngo Weinhold 
183ac0de3bSIngo Weinhold 
193ac0de3bSIngo Weinhold using namespace BPackageKit;
2083462cc2SIngo Weinhold using BPackageKit::BPrivate::BDaemonClient;
2183462cc2SIngo Weinhold using BManager::BPrivate::BPackageManager;
223ac0de3bSIngo Weinhold 
233ac0de3bSIngo Weinhold 
2483462cc2SIngo Weinhold class PackageManager : public BPackageManager,
2583462cc2SIngo Weinhold 	private BPackageManager::UserInteractionHandler {
263ac0de3bSIngo Weinhold public:
273ac0de3bSIngo Weinhold 								PackageManager(
2883f63a21SIngo Weinhold 									BPackageInstallationLocation location,
2983f63a21SIngo Weinhold 									bool interactive = true);
303ac0de3bSIngo Weinhold 								~PackageManager();
313ac0de3bSIngo Weinhold 
3283f63a21SIngo Weinhold 			void				SetInteractive(bool interactive);
3383f63a21SIngo Weinhold 
349345049aSRene Gollent 	virtual	void				JobFailed(BJob* job);
359345049aSRene Gollent 	virtual	void				JobAborted(BJob* job);
369345049aSRene Gollent 
3783462cc2SIngo Weinhold private:
3883462cc2SIngo Weinhold 	// UserInteractionHandler
3983462cc2SIngo Weinhold 	virtual	void				HandleProblems();
4083462cc2SIngo Weinhold 	virtual	void				ConfirmChanges(bool fromMostSpecific);
413ac0de3bSIngo Weinhold 
4283462cc2SIngo Weinhold 	virtual	void				Warn(status_t error, const char* format, ...);
439345049aSRene Gollent 
449345049aSRene Gollent 
459345049aSRene Gollent 	virtual	void				ProgressPackageDownloadStarted(
469345049aSRene Gollent 									const char* packageName);
479345049aSRene Gollent 	virtual	void				ProgressPackageDownloadActive(
489345049aSRene Gollent 									const char* packageName,
499345049aSRene Gollent 									float completionPercentage);
509345049aSRene Gollent 	virtual	void				ProgressPackageDownloadComplete(
519345049aSRene Gollent 									const char* packageName);
529345049aSRene Gollent 	virtual	void				ProgressPackageChecksumStarted(
539345049aSRene Gollent 									const char* packageName);
549345049aSRene Gollent 	virtual	void				ProgressPackageChecksumComplete(
559345049aSRene Gollent 									const char* packageName);
569345049aSRene Gollent 
5783462cc2SIngo Weinhold 	virtual	void				ProgressStartApplyingChanges(
5883462cc2SIngo Weinhold 									InstalledRepository& repository);
5983462cc2SIngo Weinhold 	virtual	void				ProgressTransactionCommitted(
6083462cc2SIngo Weinhold 									InstalledRepository& repository,
61*eee42275SIngo Weinhold 									const BCommitTransactionResult& result);
6283462cc2SIngo Weinhold 	virtual	void				ProgressApplyingChangesDone(
6383462cc2SIngo Weinhold 									InstalledRepository& repository);
64a54a50b4SIngo Weinhold 
653ac0de3bSIngo Weinhold private:
6683462cc2SIngo Weinhold 			void				_PrintResult(InstalledRepository&
6783462cc2SIngo Weinhold 									installationRepository);
6883462cc2SIngo Weinhold 
6983462cc2SIngo Weinhold private:
703ac0de3bSIngo Weinhold 			DecisionProvider	fDecisionProvider;
71cf3bb0d7SIngo Weinhold 			BPackageManager::ClientInstallationInterface
72cf3bb0d7SIngo Weinhold 									fClientInstallationInterface;
73d3f4a865SRene Gollent 			int32				fPreviousDownloadPercentage;
7483f63a21SIngo Weinhold 			bool				fInteractive;
753381a1bfSIngo Weinhold };
763381a1bfSIngo Weinhold 
773381a1bfSIngo Weinhold 
783ac0de3bSIngo Weinhold #endif	// PACKAGE_MANAGER_H
79