1/*
2 * Copyright 2010, Haiku, Inc. All rights reserved.
3 * Distributed under the terms of the MIT license.
4 *
5 * Authors:
6 *		Robert Polic
7 *		Stephan A��mus <superstippi@gmx.de>
8 *
9 * Copyright 1999, Be Incorporated.   All Rights Reserved.
10 * This file may be used under the terms of the Be Sample Code License.
11 */
12#ifndef PERSON_VIEW_H
13#define PERSON_VIEW_H
14
15
16#include <GridView.h>
17#include <ObjectList.h>
18#include <String.h>
19
20
21class AttributeTextControl;
22class BFile;
23class BPopUpMenu;
24class PictureView;
25
26enum {
27	M_SAVE			= 'save',
28	M_REVERT		= 'rvrt',
29	M_SELECT		= 'slct',
30	M_GROUP_MENU	= 'grmn',
31};
32
33
34class PersonView : public BGridView {
35public:
36								PersonView(const char* name,
37									const char* categoryAttribute,
38									const entry_ref* ref);
39	virtual						~PersonView();
40
41	virtual	void				MakeFocus(bool focus = true);
42	virtual	void				MessageReceived(BMessage* message);
43	virtual void				Draw(BRect updateRect);
44
45			void				AddAttribute(const char* label,
46									const char* attribute);
47
48			void				BuildGroupMenu();
49
50			void				CreateFile(const entry_ref* ref);
51
52			bool				IsSaved() const;
53			void				Save();
54
55			const char*			AttributeValue(const char* attribute) const;
56			void				SetAttribute(const char* attribute, bool update);
57			void				SetAttribute(const char* attribute,
58									const char* value, bool update);
59
60			void				UpdatePicture(const entry_ref* ref);
61
62			bool				IsTextSelected() const;
63
64private:
65			const entry_ref*	fRef;
66			time_t				fLastModificationTime;
67			BPopUpMenu*			fGroups;
68			typedef BObjectList<AttributeTextControl> AttributeList;
69			AttributeList		fControls;
70
71			BString				fCategoryAttribute;
72			PictureView*		fPictureView;
73			bool				fSaving;
74};
75
76#endif // PERSON_VIEW_H
77