void CloudDialog::on_okButton(bool checked) { AWSSettings awsSettings; std::string accessKey = m_amazonProviderWidget->m_accessKeyLineEdit->text().toStdString(); std::string secretKey = m_amazonProviderWidget->m_secretKeyLineEdit->text().toStdString(); if (accessKey.empty() || secretKey.empty()) { QString error("The Access Key and Secret Key cannot be empty"); QMessageBox::critical(this, "Authentication Failed", error); return; } bool validAccessKey = awsSettings.validAccessKey(accessKey); if(!validAccessKey){ QString error("You have entered an invalid Access Key"); QMessageBox::critical(this, "Authentication Failed", error); return; } bool validSecretKey = awsSettings.validSecretKey(secretKey); if(!validSecretKey){ QString error("You have entered an invalid Secret Key"); QMessageBox::critical(this, "Authentication Failed", error); return; } // Save data boost::optional<CloudProviderWidget *> cloudProviderWidget = this->getCurrentCloudProviderWidget(); if(cloudProviderWidget.is_initialized()){ cloudProviderWidget.get()->saveData(); } done(QDialog::Accepted); cloudResourceChanged(m_cloudResourceComboBox->currentText()); }
void CloudDialog::on_backButton(bool checked) { if(m_pageStackedWidget->currentIndex() == m_settingsPageIdx){ m_pageStackedWidget->setCurrentIndex(m_loginPageIdx); this->backButton()->setText("Continue"); } else if(m_pageStackedWidget->currentIndex() == m_loginPageIdx) { if( m_cloudResourceComboBox->currentText() == AMAZON_PROVIDER){ AWSSettings awsSettings; std::string accessKey = m_amazonProviderWidget->m_accessKeyLineEdit->text().toStdString(); std::string secretKey = m_amazonProviderWidget->m_secretKeyLineEdit->text().toStdString(); if (accessKey.empty() || secretKey.empty()) { QString error("The Access Key and Secret Key cannot be empty"); QMessageBox::critical(this, "Authentication Failed", error); return; } bool validAccessKey = awsSettings.validAccessKey(accessKey); if(!validAccessKey){ QString error("You have entered an invalid Access Key"); QMessageBox::critical(this, "Authentication Failed", error); return; } bool validSecretKey = awsSettings.validSecretKey(secretKey); if(!validSecretKey){ QString error("You have entered an invalid Secret Key"); QMessageBox::critical(this, "Authentication Failed", error); return; } m_pageStackedWidget->setCurrentIndex(m_settingsPageIdx); this->backButton()->setText("Back"); } } }
void AmazonProviderWidget::saveData() { AWSSettings awsSettings; bool validAccessKey = awsSettings.setAccessKey(m_accessKeyLineEdit->text().toStdString()); OS_ASSERT(validAccessKey); bool validSecretKey = awsSettings.setSecretKey(m_secretKeyLineEdit->text().toStdString()); OS_ASSERT(validSecretKey); awsSettings.signUserAgreement(m_cloudDialog->m_iAcceptCheckBox->isChecked()); awsSettings.setRegion(m_regionComboBox->currentText().toStdString()); awsSettings.setServerInstanceType(m_serverInstanceTypeComboBox->currentText().toStdString()); awsSettings.setWorkerInstanceType(m_workerInstanceTypeComboBox->currentText().toStdString()); QString temp; unsigned numWorkers = m_numberOfWorkerInstancesLineEdit->text().toUInt(); awsSettings.setNumWorkers(numWorkers); //awsSettings.setTerminationDelayEnabled(m_waitCheckBox->isChecked()); //unsigned wait = m_waitLineEdit->text().toUInt(); //awsSettings.setTerminationDelay(wait); awsSettings.saveToSettings(true); }
void CloudDialog::on_okButton(bool checked) { if( m_cloudResourceComboBox->currentText() == AMAZON_PROVIDER){ AWSSettings awsSettings; std::string accessKey = m_amazonProviderWidget->m_accessKeyLineEdit->text().toStdString(); std::string secretKey = m_amazonProviderWidget->m_secretKeyLineEdit->text().toStdString(); if (accessKey.empty() || secretKey.empty()) { QString error("The Access Key and Secret Key cannot be empty"); QMessageBox::critical(this, "Authentication Failed", error); return; } bool validAccessKey = awsSettings.validAccessKey(accessKey); if(!validAccessKey){ QString error("You have entered an invalid Access Key"); QMessageBox::critical(this, "Authentication Failed", error); return; } bool validSecretKey = awsSettings.validSecretKey(secretKey); if(!validSecretKey){ QString error("You have entered an invalid Secret Key"); QMessageBox::critical(this, "Authentication Failed", error); return; } }else if( m_cloudResourceComboBox->currentText() == VAGRANT_PROVIDER){ VagrantSettings vagrantSettings; std::string serverUsername = m_vagrantProviderWidget->m_serverUsernameLineEdit->text().toStdString(); std::string serverPassword = m_vagrantProviderWidget->m_serverPasswordLineEdit->text().toStdString(); if (serverUsername.empty() || serverPassword.empty()) { QString error("The User Name and Password cannot be empty"); QMessageBox::critical(this, "Authentication Failed", error); return; } std::string serverDir = m_vagrantProviderWidget->m_serverDirLineEdit->text().toStdString(); std::string serverAddress = m_vagrantProviderWidget->m_serverAddressIpLineEdit->text().toStdString(); std::string workerDir = m_vagrantProviderWidget->m_workerDirLineEdit->text().toStdString(); std::string workerAddress = m_vagrantProviderWidget->m_workerAddressIpLineEdit->text().toStdString(); if (serverDir.empty() || serverAddress.empty() || workerDir.empty() || workerAddress.empty()) { QString error("Server and Worker Directories and IP Addresses are required"); QMessageBox::critical(this, "Authentication Failed", error); return; } } // Save data boost::optional<CloudProviderWidget *> cloudProviderWidget = this->getCurrentCloudProviderWidget(); if(cloudProviderWidget.is_initialized()){ cloudProviderWidget.get()->saveData(); } done(QDialog::Accepted); cloudResourceChanged(m_cloudResourceComboBox->currentText()); }
void AmazonProviderWidget::loadData() { AWSSettings awsSettings; m_accessKeyLineEdit->setText(awsSettings.accessKey().c_str()); m_secretKeyLineEdit->setText(awsSettings.secretKey().c_str()); m_cloudDialog->m_iAcceptCheckBox->setChecked(awsSettings.userAgreementSigned()); if (!m_regionComboBox->count()) { Q_FOREACH(const std::string & region, AWSProvider::availableRegions()){ m_regionComboBox->addItem(region.c_str()); }
void AmazonProviderWidget::loadData() { AWSSettings awsSettings; m_accessKeyLineEdit->setText(awsSettings.accessKey().c_str()); m_secretKeyLineEdit->setText(awsSettings.secretKey().c_str()); m_cloudDialog->m_iAcceptCheckBox->setChecked(awsSettings.userAgreementSigned()); if (!m_regionComboBox->count()) { for (const std::string & region : AWSProvider::availableRegions()) { m_regionComboBox->addItem(region.c_str()); } } int index = m_regionComboBox->findText(awsSettings.region().c_str()); if(index == -1){ index = m_regionComboBox->findText(AWSProvider::defaultRegion().c_str()); } m_regionComboBox->setCurrentIndex(index); if (!m_serverInstanceTypeComboBox->count()) { for (const std::string & serverInstanceType : AWSProvider::serverInstanceTypes()) { m_serverInstanceTypeComboBox->addItem(serverInstanceType.c_str()); } } index = m_serverInstanceTypeComboBox->findText(awsSettings.serverInstanceType().c_str()); if(index == -1){ index = m_serverInstanceTypeComboBox->findText(AWSProvider::defaultServerInstanceType().c_str()); } m_serverInstanceTypeComboBox->setCurrentIndex(index); if (!m_workerInstanceTypeComboBox->count()) { for (const std::string & workerInstanceType : AWSProvider::workerInstanceTypes()) { m_workerInstanceTypeComboBox->addItem(workerInstanceType.c_str()); } } index = m_workerInstanceTypeComboBox->findText(awsSettings.workerInstanceType().c_str()); if(index == -1){ index = m_workerInstanceTypeComboBox->findText(AWSProvider::defaultWorkerInstanceType().c_str()); } m_workerInstanceTypeComboBox->setCurrentIndex(index); QString temp; m_numberOfWorkerInstancesLineEdit->setText(temp.setNum(awsSettings.numWorkers())); //m_waitCheckBox->setChecked(awsSettings.terminationDelayEnabled()); //m_waitLineEdit->setText(temp.setNum(awsSettings.terminationDelay())); }
AWSSettingsRecord_Impl::AWSSettingsRecord_Impl(const AWSSettings& awsSettings, ProjectDatabase& database) : CloudSettingsRecord_Impl(awsSettings, CloudSettingsRecordType::AWSSettingsRecord, database), m_userAgreementSigned(awsSettings.userAgreementSigned()), m_numWorkers(awsSettings.numWorkers()), m_terminationDelayEnabled(awsSettings.terminationDelayEnabled()), m_terminationDelay(awsSettings.terminationDelay()), m_region(awsSettings.region()), m_serverInstanceType(awsSettings.serverInstanceType()), m_workerInstanceType(awsSettings.workerInstanceType()) { }
void CloudDialog::createWidgets() { QLabel * label = nullptr; m_amazonProviderWidget = new AmazonProviderWidget(this); m_blankProviderWidget = new BlankProviderWidget(this); m_vagrantProviderWidget = new VagrantProviderWidget(this); // BLANK PAGE auto blankPageWidget = new QWidget(); // LOGIN PAGE auto mainLoginLayout = new QHBoxLayout; mainLoginLayout->setContentsMargins(QMargins(0,0,0,0)); mainLoginLayout->setSpacing(5); auto loginPageWidget = new QWidget; loginPageWidget->setLayout(mainLoginLayout); // LEFT LOGIN LAYOUT m_leftLoginLayout = new QVBoxLayout(); mainLoginLayout->addLayout(m_leftLoginLayout); label = new QLabel; label->setObjectName("H2"); label->setText("Cloud Resources"); m_leftLoginLayout->addWidget(label,0,Qt::AlignTop | Qt::AlignLeft); m_cloudResourceComboBox = new QComboBox(); m_leftLoginLayout->addWidget(m_cloudResourceComboBox,0,Qt::AlignTop | Qt::AlignLeft); //m_cloudResourceComboBox->addItem(NO_PROVIDER); if(showVagrant()) m_cloudResourceComboBox->addItem(VAGRANT_PROVIDER); m_cloudResourceComboBox->addItem(AMAZON_PROVIDER); connect(m_cloudResourceComboBox, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::currentIndexChanged), this, &CloudDialog::cloudResourceChanged); // LOGIN STACKED WIDGET m_loginStackedWidget = new QStackedWidget(); m_leftLoginLayout->addWidget(m_loginStackedWidget); m_loginStackedWidget->addWidget(m_blankProviderWidget->m_loginWidget); m_loginStackedWidget->addWidget(m_vagrantProviderWidget->m_loginWidget); m_loginStackedWidget->addWidget(m_amazonProviderWidget->m_loginWidget); m_loginStackedWidget->setCurrentIndex(m_blankProviderIdx); // RIGHT LOGIN LAYOUT m_rightLoginLayout = new QVBoxLayout(); mainLoginLayout->addLayout(m_rightLoginLayout); m_legalAgreement = new QLabel; m_legalAgreement->hide(); m_legalAgreement->setWordWrap(true); AWSSettings awsSettings; m_legalAgreement->setText(awsSettings.userAgreementText().c_str()); auto scrollArea = new QScrollArea(); scrollArea->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); scrollArea->setFixedWidth(TEXT_WIDTH + 15); scrollArea->setMinimumHeight(TEXT_HEIGHT); scrollArea->setStyleSheet("background-color:transparent;"); scrollArea->setWidget(m_legalAgreement); scrollArea->setWidgetResizable(true); scrollArea->setAlignment(Qt::AlignTop); scrollArea->setFrameShape(QFrame::NoFrame); m_rightLoginLayout->addWidget(scrollArea); m_iAcceptCheckBox = new QCheckBox("I Agree"); m_iAcceptCheckBox->hide(); m_rightLoginLayout->addWidget(m_iAcceptCheckBox,0,Qt::AlignTop | Qt::AlignLeft); m_rightLoginLayout->addSpacing(5); connect(m_iAcceptCheckBox, &QCheckBox::clicked, this, &CloudDialog::iAcceptClicked); m_rightLoginLayout->addSpacing(5); // SETTINGS PAGE m_mainSettingsLayout = new QVBoxLayout; m_mainSettingsLayout->setContentsMargins(QMargins(0,0,0,0)); m_mainSettingsLayout->setSpacing(5); auto settingsPageWidget = new QWidget; settingsPageWidget->setLayout(m_mainSettingsLayout); // SETTINGS STACKED WIDGET m_settingsStackedWidget = new QStackedWidget(); m_mainSettingsLayout->addWidget(m_settingsStackedWidget); auto widget = new QWidget(); auto hLayout = new QHBoxLayout; hLayout->setContentsMargins(QMargins(0,0,0,0)); hLayout->setSpacing(5); widget->setLayout(hLayout); hLayout->addWidget(m_blankProviderWidget->m_leftSettingsWidget); hLayout->addWidget(m_blankProviderWidget->m_rightSettingsWidget); m_settingsStackedWidget->addWidget(widget); widget = new QWidget(); hLayout = new QHBoxLayout; hLayout->setContentsMargins(QMargins(0,0,0,0)); hLayout->setSpacing(5); widget->setLayout(hLayout); hLayout->addWidget(m_vagrantProviderWidget->m_leftSettingsWidget); hLayout->addWidget(m_vagrantProviderWidget->m_rightSettingsWidget); m_settingsStackedWidget->addWidget(widget); widget = new QWidget(); hLayout = new QHBoxLayout; hLayout->setContentsMargins(QMargins(0,0,0,0)); hLayout->setSpacing(5); widget->setLayout(hLayout); hLayout->addWidget(m_amazonProviderWidget->m_leftSettingsWidget); hLayout->addWidget(m_amazonProviderWidget->m_rightSettingsWidget); m_settingsStackedWidget->addWidget(widget); m_settingsStackedWidget->setCurrentIndex(m_blankProviderIdx); // PAGE STACKED WIDGET m_pageStackedWidget = new QStackedWidget(); upperLayout()->addWidget(m_pageStackedWidget); m_blankPageIdx = m_pageStackedWidget->addWidget(blankPageWidget); m_loginPageIdx = m_pageStackedWidget->addWidget(loginPageWidget); m_settingsPageIdx = m_pageStackedWidget->addWidget(settingsPageWidget); m_pageStackedWidget->setCurrentIndex(m_loginPageIdx); // BUTTONS this->okButton()->setText("Save"); this->backButton()->setText("Continue"); this->backButton()->setEnabled(false); this->backButton()->show(); // OS SETTINGS #ifdef Q_OS_MAC setWindowFlags(Qt::FramelessWindowHint); #elif defined(Q_OS_WIN) setWindowFlags(Qt::WindowCloseButtonHint | Qt::MSWindowsFixedSizeDialogHint); #endif cloudResourceChanged(m_cloudResourceComboBox->currentText()); }