168548Sbenno/*
2139738Simp * Copyright 2011-2015, Haiku, Inc.
368548Sbenno * Distributed under the terms of the MIT License.
468548Sbenno */
568548Sbenno#ifndef _PACKAGE__CONTEXT_H_
668548Sbenno#define _PACKAGE__CONTEXT_H_
768548Sbenno
868548Sbenno
968548Sbenno#include <Entry.h>
1068548Sbenno#include <String.h>
1168548Sbenno
1268548Sbenno
1368548Sbennonamespace BSupportKit {
1468548Sbenno	struct BJobStateListener;
1568548Sbenno}
1668548Sbenno
1768548Sbenno
1868548Sbennonamespace BPackageKit {
1968548Sbenno
2068548Sbenno
2168548Sbennonamespace BPrivate {
2268548Sbenno	class TempfileManager;
2368548Sbenno}
2468548Sbenno
2568548Sbenno
2668548Sbennostruct BDecisionProvider {
2768548Sbenno	virtual						~BDecisionProvider();
2868548Sbenno
2968548Sbenno	virtual	bool				YesNoDecisionNeeded(const BString& description,
3068548Sbenno									const BString& question,
3168548Sbenno									const BString& yes, const BString& no,
3268548Sbenno									const BString& defaultChoice);
33124139Sobrien//	virtual	bool				ActionsAcceptanceDecisionNeeded(
34124139Sobrien//									const BString& description,
35124139Sobrien//									const BString& question) = 0;
3668548Sbenno//	virtual	int32				ChoiceDecisionNeeded(
3768548Sbenno//									const BString& question) = 0;
3868548Sbenno};
3968548Sbenno
4068548Sbenno
41118485Sgrehanclass BContext {
42118485Sgrehanpublic:
43118485Sgrehan								BContext(BDecisionProvider& decisionProvider,
44118485Sgrehan									BSupportKit::BJobStateListener&
45118485Sgrehan										jobStateListener);
46118485Sgrehan								~BContext();
47118485Sgrehan
48118485Sgrehan			status_t			InitCheck() const;
49118485Sgrehan
50118485Sgrehan			status_t			GetNewTempfile(const BString& baseName,
51118485Sgrehan									BEntry* entry) const;
52118485Sgrehan
53118485Sgrehan			BDecisionProvider&	DecisionProvider() const;
5468548Sbenno			BSupportKit::BJobStateListener&	JobStateListener() const;
5568548Sbenno
5668548Sbennoprivate:
5768548Sbenno			status_t			_Initialize();
5868548Sbenno
5968548Sbenno			BDecisionProvider&	fDecisionProvider;
6068548Sbenno			BSupportKit::BJobStateListener&	fJobStateListener;
61			status_t			fInitStatus;
62
63	mutable	BPrivate::TempfileManager*	fTempfileManager;
64};
65
66
67}	// namespace BPackageKit
68
69
70#endif // _PACKAGE__CONTEXT_H_
71