1/*
2 * Copyright 2011-2015, Haiku, Inc.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _PACKAGE__CONTEXT_H_
6#define _PACKAGE__CONTEXT_H_
7
8
9#include <Entry.h>
10#include <String.h>
11
12
13namespace BSupportKit {
14	struct BJobStateListener;
15}
16
17
18namespace BPackageKit {
19
20
21namespace BPrivate {
22	class TempfileManager;
23}
24
25
26struct BDecisionProvider {
27	virtual						~BDecisionProvider();
28
29	virtual	bool				YesNoDecisionNeeded(const BString& description,
30									const BString& question,
31									const BString& yes, const BString& no,
32									const BString& defaultChoice);
33//	virtual	bool				ActionsAcceptanceDecisionNeeded(
34//									const BString& description,
35//									const BString& question) = 0;
36//	virtual	int32				ChoiceDecisionNeeded(
37//									const BString& question) = 0;
38};
39
40
41class BContext {
42public:
43								BContext(BDecisionProvider& decisionProvider,
44									BSupportKit::BJobStateListener&
45										jobStateListener);
46								~BContext();
47
48			status_t			InitCheck() const;
49
50			status_t			GetNewTempfile(const BString& baseName,
51									BEntry* entry) const;
52
53			BDecisionProvider&	DecisionProvider() const;
54			BSupportKit::BJobStateListener&	JobStateListener() const;
55
56private:
57			status_t			_Initialize();
58
59			BDecisionProvider&	fDecisionProvider;
60			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