1/*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef IMAGE_LIST_VIEW_H
6#define IMAGE_LIST_VIEW_H
7
8#include <GroupView.h>
9
10#include "table/Table.h"
11#include "Team.h"
12
13
14class ImageListView : public BGroupView, private Team::Listener,
15	private TableListener {
16public:
17	class Listener;
18
19public:
20								ImageListView(Team* team, Listener* listener);
21								~ImageListView();
22
23	static	ImageListView*		Create(Team* team, Listener* listener);
24									// throws
25
26			void				UnsetListener();
27
28			void				SetImage(Image* image);
29
30	virtual	void				MessageReceived(BMessage* message);
31
32			void				LoadSettings(const BMessage& settings);
33			status_t			SaveSettings(BMessage& settings);
34
35private:
36			class ImagesTableModel;
37
38private:
39	// Team::Listener
40	virtual	void				ImageAdded(const Team::ImageEvent& event);
41	virtual	void				ImageRemoved(const Team::ImageEvent& event);
42
43	// TableListener
44	virtual	void				TableSelectionChanged(Table* table);
45
46			void				_Init();
47
48private:
49			Team*				fTeam;
50			Image*				fImage;
51			Table*				fImagesTable;
52			ImagesTableModel*	fImagesTableModel;
53			Listener*			fListener;
54};
55
56
57class ImageListView::Listener {
58public:
59	virtual						~Listener();
60
61	virtual	void				ImageSelectionChanged(Image* image) = 0;
62};
63
64
65#endif	// IMAGE_LIST_VIEW_H
66