1/*
2 * Copyright 2013-2014, Stephan A��mus <superstippi@gmx.de>.
3 * Copyright 2020-2023, Andrew Lindesay <apl@lindesay.co.nz>
4 * All rights reserved. Distributed under the terms of the MIT License.
5 */
6#ifndef PACKAGE_INFO_VIEW_H
7#define PACKAGE_INFO_VIEW_H
8
9#include <GroupView.h>
10
11#include "Model.h"
12#include "PackageInfo.h"
13#include "PackageInfoListener.h"
14#include "ProcessCoordinator.h"
15
16
17class BCardLayout;
18class BLocker;
19class OnePackageMessagePackageListener;
20class PackageActionView;
21class PagesView;
22class TitleView;
23
24enum {
25	MSG_RATE_PACKAGE	= 'rate',
26	MSG_SHOW_SCREENSHOT = 'shws',
27};
28
29
30class PackageInfoView : public BView {
31public:
32								PackageInfoView(Model* model,
33									ProcessCoordinatorConsumer*
34										processCoordinatorConsumer);
35	virtual						~PackageInfoView();
36
37	virtual void				AttachedToWindow();
38	virtual	void				MessageReceived(BMessage* message);
39
40			void				SetPackage(const PackageInfoRef& package);
41			const PackageInfoRef& Package() const
42									{ return fPackage; }
43			void				Clear();
44
45			void				HandleScreenshotCached(const ScreenshotCoordinate& coordinate);
46
47private:
48	static const ScreenshotCoordinate
49								_ScreenshotThumbCoordinate(const PackageInfoRef& package);
50			void				_SetPackageScreenshotThumb(const PackageInfoRef& package);
51			void				_HandleScreenshotCached(const PackageInfoRef& package,
52									const ScreenshotCoordinate& coordinate);
53
54private:
55			Model*				fModel;
56
57			BCardLayout*		fCardLayout;
58			TitleView*			fTitleView;
59			PackageActionView*	fPackageActionView;
60			PagesView*			fPagesView;
61
62			PackageInfoRef		fPackage;
63			OnePackageMessagePackageListener*
64								fPackageListener;
65			ProcessCoordinatorConsumer*
66								fProcessCoordinatorConsumer;
67};
68
69#endif // PACKAGE_INFO_VIEW_H
70