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