1/*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Copyright 2014-2016, Rene Gollent, rene@gollent.com.
4 * Distributed under the terms of the MIT License.
5 */
6#ifndef GRAPHICAL_USER_INTERFACE_H
7#define GRAPHICAL_USER_INTERFACE_H
8
9
10#include "UserInterface.h"
11
12#include "ObjectList.h"
13#include "String.h"
14
15
16class BFilePanel;
17class BHandler;
18class BMessenger;
19class TeamWindow;
20
21
22class GraphicalUserInterface : public UserInterface {
23public:
24								GraphicalUserInterface();
25	virtual						~GraphicalUserInterface();
26
27	virtual	const char*			ID() const;
28
29	virtual	status_t			Init(Team* team,
30									UserInterfaceListener* listener);
31	virtual	void				Show();
32	virtual	void				Terminate();
33									// shut down the UI *now* -- no more user
34									// feedback
35
36	virtual	UserInterface*		Clone() const;
37
38	virtual	bool				IsInteractive() const;
39
40	virtual status_t			LoadSettings(const TeamUiSettings* settings);
41	virtual status_t			SaveSettings(TeamUiSettings*& settings)	const;
42
43	virtual	void				NotifyUser(const char* title,
44									const char* message,
45									user_notification_type type);
46	virtual	void				NotifyBackgroundWorkStatus(
47									const char* message);
48	virtual	int32				SynchronouslyAskUser(const char* title,
49									const char* message, const char* choice1,
50									const char* choice2, const char* choice3);
51	virtual	status_t			SynchronouslyAskUserForFile(entry_ref* _ref);
52private:
53			class FilePanelHandler;
54
55private:
56			TeamWindow*			fTeamWindow;
57			BMessenger*			fTeamWindowMessenger;
58			FilePanelHandler*	fFilePanelHandler;
59			BFilePanel*			fFilePanel;
60
61			struct DefaultAction {
62				BString fKey;
63				int fDecision;
64			};
65			BObjectList<DefaultAction>	fDefaultActions;
66};
67
68
69#endif	// GRAPHICAL_USER_INTERFACE_H
70