xref: /haiku/src/add-ons/tracker/zipomatic/ZipOMaticWindow.h (revision 714236b8025ce5330711cd2a3d32b50d97ac5cef)
16e645865SJonas Sundström #ifndef _ZIPOMATIC_WINDOW_H
26e645865SJonas Sundström #define _ZIPOMATIC_WINDOW_H
3926f5ddfSshatty 
46e645865SJonas Sundström 
5f99cf572SJonas Sundström #include <Button.h>
6*714236b8SJonas Sundström #include <List.h>
7*714236b8SJonas Sundström #include <Rect.h>
8f99cf572SJonas Sundström #include <StringView.h>
96e645865SJonas Sundström #include <Window.h>
10926f5ddfSshatty 
11f99cf572SJonas Sundström #include "ZipOMaticActivity.h"
126e645865SJonas Sundström #include "ZipperThread.h"
136e645865SJonas Sundström 
14926f5ddfSshatty 
15*714236b8SJonas Sundström enum direction {
16*714236b8SJonas Sundström 	up,
17*714236b8SJonas Sundström 	down,
18*714236b8SJonas Sundström 	left,
19*714236b8SJonas Sundström 	right
20*714236b8SJonas Sundström };
21*714236b8SJonas Sundström 
22*714236b8SJonas Sundström 
23926f5ddfSshatty class ZippoWindow : public BWindow
24926f5ddfSshatty {
25926f5ddfSshatty public:
26*714236b8SJonas Sundström 							ZippoWindow(BList windowList,
27*714236b8SJonas Sundström 								bool keepOpen = false);
286e645865SJonas Sundström 							~ZippoWindow();
296e645865SJonas Sundström 
306e645865SJonas Sundström 	virtual	void			MessageReceived(BMessage* message);
316e645865SJonas Sundström 	virtual	bool			QuitRequested();
32926f5ddfSshatty 
336e645865SJonas Sundström 			bool			IsZipping();
342680698bSJonas Sundström 			void			StopZipping();
35926f5ddfSshatty 
36926f5ddfSshatty private:
37926f5ddfSshatty 
386e645865SJonas Sundström 			void			_StartZipping(BMessage* message);
396e645865SJonas Sundström 			void			_CloseWindowOrKeepOpen();
40926f5ddfSshatty 
41*714236b8SJonas Sundström 			void			_FindBestPlacement();
42*714236b8SJonas Sundström 			void			_OffsetRect(BRect* rect, direction whereTo);
43*714236b8SJonas Sundström 			void			_OffscreenBounceBack(BRect* rect,
44*714236b8SJonas Sundström 								direction* primaryDirection,
45*714236b8SJonas Sundström 								direction secondaryDirection);
46*714236b8SJonas Sundström 			BRect			_NearestRect(BRect goalRect, BRect a, BRect b);
47*714236b8SJonas Sundström 
48*714236b8SJonas Sundström 			BList			fWindowList;
49*714236b8SJonas Sundström 
50f99cf572SJonas Sundström 			Activity*		fActivityView;
51f99cf572SJonas Sundström 			BStringView*	fArchiveNameView;
52f99cf572SJonas Sundström 			BStringView*	fZipOutputView;
53f99cf572SJonas Sundström 			BButton*		fStopButton;
54f99cf572SJonas Sundström 
556e645865SJonas Sundström 			ZipperThread*	fThread;
56*714236b8SJonas Sundström 			BString			fArchiveName;
57926f5ddfSshatty 
58*714236b8SJonas Sundström 			bool			fKeepOpen;
596e645865SJonas Sundström 			bool			fZippingWasStopped;
604dc60882SJonas Sundström 			int32			fFileCount;
61926f5ddfSshatty 
626e645865SJonas Sundström 			BInvoker*		fWindowInvoker;
63926f5ddfSshatty };
64926f5ddfSshatty 
656e645865SJonas Sundström #endif	// _ZIPOMATIC_WINDOW_H
666e645865SJonas Sundström 
67