1/*
2 * Copyright 2013, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef RESULT_WINDOW_H
6#define RESULT_WINDOW_H
7
8
9#include <map>
10#include <set>
11
12#include <ObjectList.h>
13#include <Window.h>
14
15
16namespace BPackageKit {
17	class BSolverPackage;
18}
19
20using BPackageKit::BSolverPackage;
21
22class BButton;
23class BGroupLayout;
24class BGroupView;
25
26
27class ResultWindow : public BWindow {
28public:
29			typedef std::set<BSolverPackage*> PackageSet;
30			typedef BObjectList<BSolverPackage> PackageList;
31
32public:
33								ResultWindow();
34	virtual						~ResultWindow();
35
36			bool				AddLocationChanges(const char* location,
37									const PackageList& packagesToInstall,
38									const PackageSet& packagesAlreadyAdded,
39									const PackageList& packagesToUninstall,
40									const PackageSet& packagesAlreadyRemoved);
41			bool				Go();
42
43	virtual	bool				QuitRequested();
44	virtual	void				MessageReceived(BMessage* message);
45
46private:
47			bool				_AddPackages(BGroupLayout* packagesGroup,
48									const PackageList& packages,
49									const PackageSet& ignorePackages,
50									bool install);
51
52private:
53			sem_id				fDoneSemaphore;
54			bool				fClientWaiting;
55			bool				fAccepted;
56			BGroupView*			fContainerView;
57			BButton*			fCancelButton;
58			BButton*			fApplyButton;
59};
60
61
62#endif	// RESULT_WINDOW_H
63