1/*
2 * Copyright 2014, Stephan A��mus <superstippi@gmx.de>.
3 * Copyright 2018-2024, Andrew Lindesay <apl@lindesay.co.nz>.
4 * All rights reserved. Distributed under the terms of the MIT License.
5 */
6#ifndef RATE_PACKAGE_WINDOW_H
7#define RATE_PACKAGE_WINDOW_H
8
9#include <vector>
10
11#include <PopUpMenu.h>
12#include <Window.h>
13
14#include "Model.h"
15#include "PackageInfo.h"
16#include "TextDocument.h"
17#include "TextEditor.h"
18
19
20class BButton;
21class BCheckBox;
22class BMenuField;
23class SetRatingView;
24class TextDocumentView;
25
26
27class RatePackageWindow : public BWindow {
28public:
29								RatePackageWindow(BWindow* parent, BRect frame,
30									Model& model);
31	virtual						~RatePackageWindow();
32
33	virtual	void				DispatchMessage(BMessage* message,
34									BHandler *handler);
35	virtual	void				MessageReceived(BMessage* message);
36
37			void				SetPackage(const PackageInfoRef& package);
38
39private:
40			void				_InitLanguagesMenu(BPopUpMenu* menu);
41			void				_InitStabilitiesMenu(BPopUpMenu* menu);
42			void				_MarkStabilityInMenu(BString* code);
43
44			void				_RelayServerDataToUI(BMessage& result);
45
46			void				_SendRating();
47
48			void				_SetWorkerThread(thread_id thread);
49
50	static	int32				_QueryRatingThreadEntry(void* data);
51			void				_QueryRatingThread();
52
53	static	int32				_SendRatingThreadEntry(void* data);
54			void				_SendRatingThread();
55
56			void				_RefreshPackageData();
57
58private:
59			Model&				fModel;
60			TextDocumentRef		fRatingText;
61			TextEditorRef		fTextEditor;
62			float				fRating;
63			bool				fRatingDeterminate;
64			BString				fStabilityCode;
65			BString				fCommentLanguageId;
66			BString				fRatingID;
67			bool				fRatingActive;
68			PackageInfoRef		fPackage;
69
70			SetRatingView*		fSetRatingView;
71			BCheckBox*			fRatingDeterminateCheckBox;
72			BMenuField*			fStabilityField;
73			BMenuField*			fCommentLanguageField;
74			TextDocumentView*	fTextView;
75			BCheckBox*			fRatingActiveCheckBox;
76			BButton*			fCancelButton;
77			BButton*			fSendButton;
78
79			thread_id			fWorkerThread;
80};
81
82
83#endif // RATE_PACKAGE_WINDOW_H
84