⛏️ index : haiku.git

/*
 * Copyright 2014, Stephan Aßmus <superstippi@gmx.de>.
 * Copyright 2018-2024, Andrew Lindesay <apl@lindesay.co.nz>.
 * All rights reserved. Distributed under the terms of the MIT License.
 */
#ifndef RATE_PACKAGE_WINDOW_H
#define RATE_PACKAGE_WINDOW_H

#include <vector>

#include <PopUpMenu.h>
#include <Window.h>

#include "Model.h"
#include "PackageInfo.h"
#include "TextDocument.h"
#include "TextEditor.h"


class BButton;
class BCheckBox;
class BMenuField;
class SetRatingView;
class TextDocumentView;


class RatePackageWindow : public BWindow {
public:
								RatePackageWindow(BWindow* parent, BRect frame,
									Model& model);
	virtual						~RatePackageWindow();

	virtual	void				MessageReceived(BMessage* message);

			void				SetPackage(const PackageInfoRef& package);

private:
			void				_InitLanguagesMenu(BPopUpMenu* menu);
			void				_InitStabilitiesMenu(BPopUpMenu* menu);
			void				_MarkStabilityInMenu(BString* code);

			void				_RelayServerDataToUI(BMessage& result);

			void				_SendRating();

			void				_SetWorkerThread(thread_id thread);

	static	int32				_QueryRatingThreadEntry(void* data);
			void				_QueryRatingThread();

	static	int32				_SendRatingThreadEntry(void* data);
			void				_SendRatingThread();

			void				_RefreshPackageData();

private:
			Model&				fModel;
			TextDocumentRef		fRatingText;
			TextEditorRef		fTextEditor;
			float				fRating;
			bool				fRatingDeterminate;
			BString				fStabilityCode;
			BString				fCommentLanguageId;
			BString				fRatingID;
			bool				fRatingActive;
			PackageInfoRef		fPackage;

			SetRatingView*		fSetRatingView;
			BCheckBox*			fRatingDeterminateCheckBox;
			BMenuField*			fStabilityField;
			BMenuField*			fCommentLanguageField;
			TextDocumentView*	fTextView;
			BCheckBox*			fRatingActiveCheckBox;
			BButton*			fCancelButton;
			BButton*			fSendButton;

			thread_id			fWorkerThread;
};


#endif // RATE_PACKAGE_WINDOW_H