summaryrefslogtreecommitdiffstats
path: root/application/setupwizard/JavaWizardPage.h
blob: 56a4045318cee6a60ccf49d31b9a3bc7edb65026 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#pragma once

#include "BaseWizardPage.h"
#include <BaseVersion.h>
#include <QObjectPtr.h>
#include <java/JavaChecker.h>
#include <QIcon>

class QLineEdit;
class VersionSelectWidget;
class QSpinBox;
class QPushButton;
class QVBoxLayout;
class QHBoxLayout;
class QGroupBox;
class QGridLayout;
class QLabel;
class QToolButton;

class JavaWizardPage : public BaseWizardPage
{
	Q_OBJECT;
public:
	explicit JavaWizardPage(QWidget *parent = Q_NULLPTR);

	virtual ~JavaWizardPage()
	{
	};

	bool wantsRefreshButton() override;
	void refresh() override;
	void initializePage() override;
	bool validatePage() override;
	static bool isRequired();

	enum class JavaStatus
	{
		NotSet,
		Pending,
		Good,
		DoesNotExist,
		DoesNotStart,
		ReturnedInvalidData
	} javaStatus = JavaStatus::NotSet;

protected slots:
	void memoryValueChanged(int);
	void javaPathEdited(const QString &path);
	void javaVersionSelected(BaseVersionPtr version);
	void on_javaBrowseBtn_clicked();
	void on_javaStatusBtn_clicked();
	void checkFinished(JavaCheckResult result);

protected: /* methods */
	void checkJavaPath(const QString &path);
	void setJavaStatus(JavaStatus status);
	void setupUi();
	void retranslate() override;

private: /* data */
	VersionSelectWidget *m_versionWidget = nullptr;
	QVBoxLayout *m_verticalLayout = nullptr;

	QLineEdit * m_javaPathTextBox = nullptr;
	QPushButton * m_javaBrowseBtn = nullptr;
	QToolButton * m_javaStatusBtn = nullptr;
	QHBoxLayout *m_horizontalLayout = nullptr;

	QGroupBox *m_memoryGroupBox = nullptr;
	QGridLayout *m_gridLayout_2 = nullptr;
	QSpinBox *m_maxMemSpinBox = nullptr;
	QLabel *m_labelMinMem = nullptr;
	QLabel *m_labelMaxMem = nullptr;
	QSpinBox *m_minMemSpinBox = nullptr;
	QLabel *m_labelPermGen = nullptr;
	QSpinBox *m_permGenSpinBox = nullptr;
	QIcon goodIcon;
	QIcon yellowIcon;
	QIcon badIcon;

	int observedMinMemory = 0;
	int observedMaxMemory = 0;
	int observedPermGenMemory = 0;
	QString queuedCheck;
	uint64_t m_availableMemory = 0ull;
	shared_qobject_ptr<JavaChecker> m_checker;
	JavaCheckResult m_result;
};