20#ifndef ORES_QT_SYSTEM_PROVISIONER_WIZARD_HPP
21#define ORES_QT_SYSTEM_PROVISIONER_WIZARD_HPP
28#include <QRadioButton>
29#include <QButtonGroup>
30#include <QProgressBar>
34#include <boost/uuid/uuid.hpp>
35#include "ores.logging/make_logger.hpp"
36#include "ores.qt/ClientManager.hpp"
46 QString error_message;
47 boost::uuids::uuid admin_account_id;
48 QStringList log_messages;
66 inline static std::string_view logger_name =
"ores.qt.system_provisioner_wizard";
68 [[nodiscard]]
static auto& lg() {
70 static auto instance = make_logger(logger_name);
103 const std::vector<BootstrapBundleInfo>& bundles,
104 QWidget* parent =
nullptr);
109 ClientManager* clientManager()
const {
return clientManager_; }
112 QString adminUsername()
const {
return adminUsername_; }
113 QString adminEmail()
const {
return adminEmail_; }
114 QString adminPassword()
const {
return adminPassword_; }
115 void setAdminCredentials(
const QString& username,
const QString& email,
116 const QString& password);
119 const std::vector<BootstrapBundleInfo>& bundles()
const {
return bundles_; }
120 QString selectedBundleCode()
const {
return selectedBundleCode_; }
121 void setSelectedBundleCode(
const QString& code) { selectedBundleCode_ = code; }
124 boost::uuids::uuid adminAccountId()
const {
return adminAccountId_; }
125 void setAdminAccountId(
const boost::uuids::uuid&
id) { adminAccountId_ = id; }
130 ClientManager* clientManager_;
131 std::vector<BootstrapBundleInfo> bundles_;
132 QString adminUsername_;
134 QString adminPassword_;
135 QString selectedBundleCode_;
136 boost::uuids::uuid adminAccountId_;
141class AdminAccountPage;
142class BundleSelectionPage;
143class ApplyProvisioningPage;
168 bool validatePage()
override;
171 void onShowPasswordToggled(
bool checked);
172 void onPasswordChanged();
176 void updatePasswordMatchIndicator();
179 QLineEdit* usernameEdit_;
180 QLineEdit* emailEdit_;
181 QLineEdit* passwordEdit_;
182 QLineEdit* confirmPasswordEdit_;
183 QCheckBox* showPasswordCheckbox_;
184 QLabel* passwordMatchLabel_;
185 QLabel* validationLabel_;
196 void initializePage()
override;
197 bool validatePage()
override;
200 void onBundleChanged(
int index);
204 void populateBundles();
207 QComboBox* bundleCombo_;
208 QLabel* descriptionLabel_;
218 inline static std::string_view logger_name =
"ores.qt.apply_provisioning_page";
220 [[nodiscard]]
static auto& lg() {
222 static auto instance = make_logger(logger_name);
228 void initializePage()
override;
229 bool isComplete()
const override;
235 void startProvisioning();
237 void appendLog(
const QString& message);
238 void setStatus(
const QString& status);
241 QLabel* statusLabel_;
242 QProgressBar* progressBar_;
243 QTextEdit* logOutput_;
244 bool provisioningComplete_ =
false;
245 bool provisioningSuccess_ =
false;
Implements logging infrastructure for ORE Studio.
Definition boost_severity.hpp:28
Qt-based graphical user interface for ORE Studio.
Definition AboutDialog.hpp:35
Manages the lifecycle of the network client and IO context.
Definition ClientManager.hpp:90
Result of a provisioning operation.
Definition SystemProvisionerWizard.hpp:44
Wizard for initial system provisioning when in bootstrap mode.
Definition SystemProvisionerWizard.hpp:62
void provisioningFailed(const QString &errorMessage)
Emitted when provisioning fails.
void provisioningCompleted(const QString &username)
Emitted when provisioning is successfully completed.
Welcome page explaining bootstrap mode and system initialization.
Definition SystemProvisionerWizard.hpp:148
Page for creating the initial administrator account.
Definition SystemProvisionerWizard.hpp:163
Page for selecting a dataset bundle to provision.
Definition SystemProvisionerWizard.hpp:191
Page for applying provisioning and showing progress.
Definition SystemProvisionerWizard.hpp:214