123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- #include "TunnelPane.h"
- #include "QMessageBox"
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- TunnelPane::TunnelPane(TunnelsPageUpdateListener* tunnelsPageUpdateListener_, TunnelConfig* tunnelConfig_, QWidget* wrongInputPane_, QLabel* wrongInputLabel_, MainWindow* mainWindow_):
- QObject(),
- mainWindow(mainWindow_),
- wrongInputPane(wrongInputPane_),
- wrongInputLabel(wrongInputLabel_),
- tunnelConfig(tunnelConfig_),
- tunnelsPageUpdateListener(tunnelsPageUpdateListener_),
- gridLayoutWidget_2(nullptr) {}
- void TunnelPane::setupTunnelPane(
- TunnelConfig* tunnelConfig,
- QGroupBox *tunnelGroupBox,
- QWidget* gridLayoutWidget_2, QComboBox * tunnelTypeComboBox,
- QWidget *tunnelsFormGridLayoutWidget, int tunnelsRow, int height, int h) {
- tunnelGroupBox->setGeometry(0, tunnelsFormGridLayoutWidget->height(), gridLayoutWidget_2->width(), h);
- tunnelsFormGridLayoutWidget->resize(527, tunnelsFormGridLayoutWidget->height()+h);
- QObject::connect(tunnelTypeComboBox, SIGNAL(currentIndexChanged(int)),
- this, SLOT(updated()));
- this->tunnelGroupBox=tunnelGroupBox;
- gridLayoutWidget_2->setObjectName(QStringLiteral("gridLayoutWidget_2"));
- this->gridLayoutWidget_2=gridLayoutWidget_2;
- tunnelGridLayout = new QVBoxLayout(gridLayoutWidget_2);
- tunnelGridLayout->setObjectName(QStringLiteral("tunnelGridLayout"));
- tunnelGridLayout->setContentsMargins(5, 5, 5, 5);
- tunnelGridLayout->setSpacing(5);
- //header
- QHBoxLayout *headerHorizontalLayout = new QHBoxLayout();
- headerHorizontalLayout->setObjectName(QStringLiteral("headerHorizontalLayout"));
- nameLabel = new QLabel(gridLayoutWidget_2);
- nameLabel->setObjectName(QStringLiteral("nameLabel"));
- headerHorizontalLayout->addWidget(nameLabel);
- nameLineEdit = new QLineEdit(gridLayoutWidget_2);
- nameLineEdit->setObjectName(QStringLiteral("nameLineEdit"));
- const QString& tunnelName=tunnelConfig->getName().c_str();
- nameLineEdit->setText(tunnelName);
- setGroupBoxTitle(tunnelName);
- QObject::connect(nameLineEdit, SIGNAL(textChanged(const QString &)),
- this, SLOT(setGroupBoxTitle(const QString &)));
- QObject::connect(nameLineEdit, SIGNAL(textChanged(const QString &)),
- this, SLOT(updated()));
- headerHorizontalLayout->addWidget(nameLineEdit);
- headerHorizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- headerHorizontalLayout->addItem(headerHorizontalSpacer);
- deletePushButton = new QPushButton(gridLayoutWidget_2);
- deletePushButton->setObjectName(QStringLiteral("deletePushButton"));
- QObject::connect(deletePushButton, SIGNAL(released()),
- this, SLOT(deleteButtonReleased()));//MainWindow::DeleteTunnelNamed(std::string name) {
- headerHorizontalLayout->addWidget(deletePushButton);
- tunnelGridLayout->addLayout(headerHorizontalLayout);
- //type
- {
- const QString& type = tunnelConfig->getType();
- QHBoxLayout * horizontalLayout_ = new QHBoxLayout();
- horizontalLayout_->setObjectName(QStringLiteral("horizontalLayout_"));
- typeLabel = new QLabel(gridLayoutWidget_2);
- typeLabel->setObjectName(QStringLiteral("typeLabel"));
- horizontalLayout_->addWidget(typeLabel);
- horizontalLayout_->addWidget(tunnelTypeComboBox);
- QPushButton * lockButton1 = new QPushButton(gridLayoutWidget_2);
- horizontalLayout_->addWidget(lockButton1);
- widgetlocks.add(new widgetlock(tunnelTypeComboBox, lockButton1));
- this->tunnelTypeComboBox=tunnelTypeComboBox;
- QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalLayout_->addItem(horizontalSpacer);
- tunnelGridLayout->addLayout(horizontalLayout_);
- }
- retranslateTunnelForm(*this);
- }
- void TunnelPane::appendControlsForI2CPParameters(I2CPParameters& i2cpParameters, int& gridIndex) {
- {
- //number of hops of an inbound tunnel
- const QString& inbound_length=i2cpParameters.getInbound_length();
- QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
- horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
- inbound_lengthLabel = new QLabel(gridLayoutWidget_2);
- inbound_lengthLabel->setObjectName(QStringLiteral("inbound_lengthLabel"));
- horizontalLayout_2->addWidget(inbound_lengthLabel);
- inbound_lengthLineEdit = new QLineEdit(gridLayoutWidget_2);
- inbound_lengthLineEdit->setObjectName(QStringLiteral("inbound_lengthLineEdit"));
- inbound_lengthLineEdit->setText(inbound_length);
- inbound_lengthLineEdit->setMaximumWidth(80);
- QObject::connect(inbound_lengthLineEdit, SIGNAL(textChanged(const QString &)),
- this, SLOT(updated()));
- horizontalLayout_2->addWidget(inbound_lengthLineEdit);
- QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalLayout_2->addItem(horizontalSpacer);
- tunnelGridLayout->addLayout(horizontalLayout_2);
- }
- {
- //number of hops of an outbound tunnel
- const QString& outbound_length=i2cpParameters.getOutbound_length();
- QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
- horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
- outbound_lengthLabel = new QLabel(gridLayoutWidget_2);
- outbound_lengthLabel->setObjectName(QStringLiteral("outbound_lengthLabel"));
- horizontalLayout_2->addWidget(outbound_lengthLabel);
- outbound_lengthLineEdit = new QLineEdit(gridLayoutWidget_2);
- outbound_lengthLineEdit->setObjectName(QStringLiteral("outbound_lengthLineEdit"));
- outbound_lengthLineEdit->setText(outbound_length);
- outbound_lengthLineEdit->setMaximumWidth(80);
- QObject::connect(outbound_lengthLineEdit, SIGNAL(textChanged(const QString &)),
- this, SLOT(updated()));
- horizontalLayout_2->addWidget(outbound_lengthLineEdit);
- QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalLayout_2->addItem(horizontalSpacer);
- tunnelGridLayout->addLayout(horizontalLayout_2);
- }
- {
- //number of inbound tunnels
- const QString& inbound_quantity=i2cpParameters.getInbound_quantity();
- QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
- horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
- inbound_quantityLabel = new QLabel(gridLayoutWidget_2);
- inbound_quantityLabel->setObjectName(QStringLiteral("inbound_quantityLabel"));
- horizontalLayout_2->addWidget(inbound_quantityLabel);
- inbound_quantityLineEdit = new QLineEdit(gridLayoutWidget_2);
- inbound_quantityLineEdit->setObjectName(QStringLiteral("inbound_quantityLineEdit"));
- inbound_quantityLineEdit->setText(inbound_quantity);
- inbound_quantityLineEdit->setMaximumWidth(80);
- QObject::connect(inbound_quantityLineEdit, SIGNAL(textChanged(const QString &)),
- this, SLOT(updated()));
- horizontalLayout_2->addWidget(inbound_quantityLineEdit);
- QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalLayout_2->addItem(horizontalSpacer);
- tunnelGridLayout->addLayout(horizontalLayout_2);
- }
- {
- //number of outbound tunnels
- const QString& outbound_quantity=i2cpParameters.getOutbound_quantity();
- QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
- horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
- outbound_quantityLabel = new QLabel(gridLayoutWidget_2);
- outbound_quantityLabel->setObjectName(QStringLiteral("outbound_quantityLabel"));
- horizontalLayout_2->addWidget(outbound_quantityLabel);
- outbound_quantityLineEdit = new QLineEdit(gridLayoutWidget_2);
- outbound_quantityLineEdit->setObjectName(QStringLiteral("outbound_quantityLineEdit"));
- outbound_quantityLineEdit->setText(outbound_quantity);
- outbound_quantityLineEdit->setMaximumWidth(80);
- QObject::connect(outbound_quantityLineEdit, SIGNAL(textChanged(const QString &)),
- this, SLOT(updated()));
- horizontalLayout_2->addWidget(outbound_quantityLineEdit);
- QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalLayout_2->addItem(horizontalSpacer);
- tunnelGridLayout->addLayout(horizontalLayout_2);
- }
- {
- //number of ElGamal/AES tags to send
- const QString& crypto_tagsToSend=i2cpParameters.getCrypto_tagsToSend();
- QHBoxLayout *horizontalLayout_2 = new QHBoxLayout();
- horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
- crypto_tagsToSendLabel = new QLabel(gridLayoutWidget_2);
- crypto_tagsToSendLabel->setObjectName(QStringLiteral("crypto_tagsToSendLabel"));
- horizontalLayout_2->addWidget(crypto_tagsToSendLabel);
- crypto_tagsToSendLineEdit = new QLineEdit(gridLayoutWidget_2);
- crypto_tagsToSendLineEdit->setObjectName(QStringLiteral("crypto_tagsToSendLineEdit"));
- crypto_tagsToSendLineEdit->setText(crypto_tagsToSend);
- crypto_tagsToSendLineEdit->setMaximumWidth(80);
- QObject::connect(crypto_tagsToSendLineEdit, SIGNAL(textChanged(const QString &)),
- this, SLOT(updated()));
- horizontalLayout_2->addWidget(crypto_tagsToSendLineEdit);
- QSpacerItem * horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- horizontalLayout_2->addItem(horizontalSpacer);
- tunnelGridLayout->addLayout(horizontalLayout_2);
- }
- retranslateI2CPParameters();
- }
- void TunnelPane::updated() {
- std::string oldName=tunnelConfig->getName();
- //validate and show red if invalid
- hideWrongInputLabel();
- if(!mainWindow->applyTunnelsUiToConfigs())return;
- tunnelsPageUpdateListener->updated(oldName, tunnelConfig);
- }
- void TunnelPane::deleteButtonReleased() {
- QMessageBox msgBox;
- msgBox.setText(QApplication::tr("Are you sure to delete this tunnel?"));
- msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
- msgBox.setDefaultButton(QMessageBox::Cancel);
- int ret = msgBox.exec();
- switch (ret) {
- case QMessageBox::Ok:
- // OK was clicked
- hideWrongInputLabel();
- tunnelsPageUpdateListener->needsDeleting(tunnelConfig->getName());
- break;
- case QMessageBox::Cancel:
- // Cancel was clicked
- return;
- }
- }
- /*
- const char I2P_TUNNELS_SECTION_TYPE_CLIENT[] = "client";
- const char I2P_TUNNELS_SECTION_TYPE_SERVER[] = "server";
- const char I2P_TUNNELS_SECTION_TYPE_HTTP[] = "http";
- const char I2P_TUNNELS_SECTION_TYPE_IRC[] = "irc";
- const char I2P_TUNNELS_SECTION_TYPE_UDPCLIENT[] = "udpclient";
- const char I2P_TUNNELS_SECTION_TYPE_UDPSERVER[] = "udpserver";
- const char I2P_TUNNELS_SECTION_TYPE_SOCKS[] = "socks";
- const char I2P_TUNNELS_SECTION_TYPE_WEBSOCKS[] = "websocks";
- const char I2P_TUNNELS_SECTION_TYPE_HTTPPROXY[] = "httpproxy";
- */
- QString TunnelPane::readTunnelTypeComboboxData() {
- return tunnelTypeComboBox->currentData().toString();
- }
- i2p::data::SigningKeyType TunnelPane::readSigTypeComboboxUI(QComboBox* sigTypeComboBox) {
- return (i2p::data::SigningKeyType) sigTypeComboBox->currentData().toInt();
- }
- void TunnelPane::deleteTunnelForm() {
- widgetlocks.deleteListeners();
- }
- void TunnelPane::highlightWrongInput(QString warningText, QWidget* controlWithWrongInput) {
- wrongInputPane->setVisible(true);
- wrongInputLabel->setText(warningText);
- mainWindow->adjustSizesAccordingToWrongLabel();
- if(controlWithWrongInput){
- mainWindow->ui->tunnelsScrollArea->ensureWidgetVisible(controlWithWrongInput);
- controlWithWrongInput->setFocus();
- }
- mainWindow->showTunnelsPage();
- }
- void TunnelPane::hideWrongInputLabel() const {
- wrongInputPane->setVisible(false);
- mainWindow->adjustSizesAccordingToWrongLabel();
- }
|