xref: /haiku/src/apps/haikudepot/ui/ScreenshotWindow.h (revision 644fa5a93845dc4a1bc155f1fd0f94ebdf0b47bc)
1 /*
2  * Copyright 2014, Stephan Aßmus <superstippi@gmx.de>.
3  * All rights reserved. Distributed under the terms of the MIT License.
4  */
5 #ifndef SCREENSHOT_WINDOW_H
6 #define SCREENSHOT_WINDOW_H
7 
8 #include <Locker.h>
9 #include <Messenger.h>
10 #include <Window.h>
11 
12 #include "PackageInfo.h"
13 
14 
15 class BitmapView;
16 
17 
18 class ScreenshotWindow : public BWindow {
19 public:
20 								ScreenshotWindow(BWindow* parent, BRect frame);
21 	virtual						~ScreenshotWindow();
22 
23 	virtual bool				QuitRequested();
24 
25 	virtual	void				MessageReceived(BMessage* message);
26 
27 			void				SetOnCloseMessage(
28 									const BMessenger& messenger,
29 									const BMessage& message);
30 
31 			void				SetPackage(const PackageInfoRef& package);
32 
33 private:
34 			void				_DownloadScreenshot();
35 
36 			void				_SetWorkerThread(thread_id thread);
37 
38 	static	int32				_DownloadThreadEntry(void* data);
39 			void				_DownloadThread();
40 
41 			void				_ResizeToFitAndCenter();
42 
43 private:
44 			BMessenger			fOnCloseTarget;
45 			BMessage			fOnCloseMessage;
46 
47 			BitmapRef			fScreenshot;
48 			BitmapView*			fScreenshotView;
49 
50 			PackageInfoRef		fPackage;
51 			bool				fDownloadPending;
52 
53 			BLocker				fLock;
54 			thread_id			fWorkerThread;
55 };
56 
57 
58 #endif // SCREENSHOT_WINDOW_H
59