xref: /haiku/src/apps/haikudepot/ui/PackageListView.h (revision 46b7da1f4f40f7157d74fc7fb26ff9ec7f2416f2)
104c9d578SStephan Aßmus /*
204c9d578SStephan Aßmus  * Copyright 2013, Stephan Aßmus <superstippi@gmx.de>.
304c9d578SStephan Aßmus  * Copyright 2013, Rene Gollent <rene@gollent.com>.
4f0e491d3SAndrew Lindesay  * Copyright 2020, Andrew Lindesay <apl@lindesay.co.nz>
504c9d578SStephan Aßmus  * All rights reserved. Distributed under the terms of the MIT License.
604c9d578SStephan Aßmus  */
704c9d578SStephan Aßmus #ifndef PACKAGE_LIST_VIEW_H
804c9d578SStephan Aßmus #define PACKAGE_LIST_VIEW_H
904c9d578SStephan Aßmus 
1004c9d578SStephan Aßmus 
1104c9d578SStephan Aßmus #include <ColumnListView.h>
1204c9d578SStephan Aßmus #include <ColumnTypes.h>
1304c9d578SStephan Aßmus #include <Locker.h>
1497844417SJulian Harnath #include <util/OpenHashTable.h>
1504c9d578SStephan Aßmus 
16f0e491d3SAndrew Lindesay #include "Model.h"
1704c9d578SStephan Aßmus #include "PackageInfo.h"
1804c9d578SStephan Aßmus 
1904c9d578SStephan Aßmus 
2004c9d578SStephan Aßmus class PackageRow;
2104c9d578SStephan Aßmus class PackageListener;
22125d42d9SJulian Harnath class WorkStatusView;
23125d42d9SJulian Harnath 
2404c9d578SStephan Aßmus 
2504c9d578SStephan Aßmus class PackageListView : public BColumnListView {
2604c9d578SStephan Aßmus public:
27f0e491d3SAndrew Lindesay 								PackageListView(Model* model);
2804c9d578SStephan Aßmus 	virtual						~PackageListView();
2904c9d578SStephan Aßmus 
3004c9d578SStephan Aßmus 	virtual void				AttachedToWindow();
3104c9d578SStephan Aßmus 	virtual	void				AllAttached();
3204c9d578SStephan Aßmus 
3304c9d578SStephan Aßmus 	virtual	void				MessageReceived(BMessage* message);
3404c9d578SStephan Aßmus 
3504c9d578SStephan Aßmus 	virtual void				SelectionChanged();
3604c9d578SStephan Aßmus 
37ca747629SStephan Aßmus 	virtual void				Clear();
3804c9d578SStephan Aßmus 			void				AddPackage(const PackageInfoRef& package);
3915eb4c43SStephan Aßmus 			void				RemovePackage(const PackageInfoRef& package);
4004c9d578SStephan Aßmus 
41b2843daeSStephan Aßmus 			void				SelectPackage(const PackageInfoRef& package);
42b2843daeSStephan Aßmus 
43125d42d9SJulian Harnath 			void				AttachWorkStatusView(WorkStatusView* view);
44125d42d9SJulian Harnath 
4504c9d578SStephan Aßmus private:
4697844417SJulian Harnath 			PackageRow*			_FindRow(const PackageInfoRef& package);
4797844417SJulian Harnath 			PackageRow*			_FindRow(const BString& packageName);
4804c9d578SStephan Aßmus 
4904c9d578SStephan Aßmus private:
5004c9d578SStephan Aßmus 			class ItemCountView;
5197844417SJulian Harnath 			struct RowByNameHashDefinition;
5297844417SJulian Harnath 			typedef BOpenHashTable<RowByNameHashDefinition> RowByNameTable;
5304c9d578SStephan Aßmus 
54f0e491d3SAndrew Lindesay 			Model*				fModel;
5504c9d578SStephan Aßmus 			ItemCountView*		fItemCountView;
5604c9d578SStephan Aßmus 			PackageListener*	fPackageListener;
5797844417SJulian Harnath 			RowByNameTable*		fRowByNameTable;
58125d42d9SJulian Harnath 
59125d42d9SJulian Harnath 			WorkStatusView*		fWorkStatusView;
60*925b83a8SAugustin Cavalier 
61*925b83a8SAugustin Cavalier 			bool				fIgnoreSelectionChanged;
6204c9d578SStephan Aßmus };
6304c9d578SStephan Aßmus 
6404c9d578SStephan Aßmus #endif // PACKAGE_LIST_VIEW_H
65