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