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