1/*
2 * Copyright 2015, TigerKid001.
3 * Copyright 2020-2022, Andrew Lindesay <apl@lindesay.co.nz>
4 * All rights reserved. Distributed under the terms of the MIT License.
5 */
6#ifndef PACKAGE_CONTENTS_VIEW_H
7#define PACKAGE_CONTENTS_VIEW_H
8
9#include <Locker.h>
10#include <View.h>
11
12#include "PackageInfo.h"
13
14class BOutlineListView;
15
16
17class PackageContentsView : public BView {
18public:
19								PackageContentsView(const char* name);
20	virtual						~PackageContentsView();
21
22	virtual void				AttachedToWindow();
23	virtual	void				AllAttached();
24
25			void				SetPackage(const PackageInfoRef& package);
26			void	 			Clear();
27
28private:
29			void				_InitContentPopulator();
30	static	int32				_ContentPopulatorThread(void* arg);
31			bool				_PopulatePackageContents(
32									const PackageInfo& package);
33
34private:
35			BOutlineListView*	fContentListView;
36
37			thread_id			fContentPopulator;
38			sem_id				fContentPopulatorSem;
39			BLocker				fPackageLock;
40			PackageInfoRef		fPackage;
41			PackageState		fLastPackageState;
42};
43
44#endif // PACKAGE_CONTENTS_VIEW_H
45