i2pd/qt/i2pd_qt/ClientTunnelPane.h

127 lines
4.3 KiB
C
Raw Normal View History

2017-03-14 12:34:01 +00:00
#ifndef CLIENTTUNNELPANE_H
#define CLIENTTUNNELPANE_H
#include "QGridLayout"
2017-06-02 14:59:13 +00:00
#include "QVBoxLayout"
2017-03-14 12:34:01 +00:00
#include "TunnelPane.h"
2017-04-02 19:39:24 +00:00
class ClientTunnelConfig;
2017-03-14 12:34:01 +00:00
class ServerTunnelPane;
class TunnelPane;
class ClientTunnelPane : public TunnelPane {
2017-04-02 19:39:24 +00:00
Q_OBJECT
2017-03-14 12:34:01 +00:00
public:
ClientTunnelPane(TunnelsPageUpdateListener* tunnelsPageUpdateListener, ClientTunnelConfig* tunconf, QWidget* wrongInputPane_, QLabel* wrongInputLabel_, MainWindow* mainWindow);
2017-04-02 19:39:24 +00:00
virtual ~ClientTunnelPane(){}
2017-03-14 12:34:01 +00:00
virtual ServerTunnelPane* asServerTunnelPane();
virtual ClientTunnelPane* asClientTunnelPane();
2017-06-02 14:59:13 +00:00
int appendClientTunnelForm(ClientTunnelConfig* tunnelConfig, QWidget *tunnelsFormGridLayoutWidget,
int tunnelsRow, int height);
void deleteClientTunnelForm();
2017-04-02 19:39:24 +00:00
private:
QGroupBox *clientTunnelNameGroupBox;
//tunnel
QWidget *gridLayoutWidget_2;
//destination
QHBoxLayout *horizontalLayout_2;
QLabel *destinationLabel;
QLineEdit *destinationLineEdit;
QSpacerItem *destinationHorizontalSpacer;
//port
QLabel * portLabel;
QLineEdit * portLineEdit;
//keys
QLabel * keysLabel;
QLineEdit * keysLineEdit;
//address
QLabel * addressLabel;
QLineEdit * addressLineEdit;
//destinationPort
QLabel * destinationPortLabel;
QLineEdit * destinationPortLineEdit;
//sigType
QLabel * sigTypeLabel;
QComboBox * sigTypeComboBox;
2020-10-07 15:16:06 +00:00
//cryptoType
QLabel * cryptoTypeLabel;
QLineEdit * cryptoTypeLineEdit;
2017-03-14 12:34:01 +00:00
protected slots:
2017-04-02 19:39:24 +00:00
virtual void setGroupBoxTitle(const QString & title);
private:
void retranslateClientTunnelForm(ClientTunnelPane& /*ui*/) {
typeLabel->setText(QApplication::translate("cltTunForm", "Client tunnel type:", 0));
destinationLabel->setText(QApplication::translate("cltTunForm", "Destination:", 0));
portLabel->setText(QApplication::translate("cltTunForm", "Port:", 0));
2020-10-07 15:16:06 +00:00
cryptoTypeLabel->setText(QApplication::translate("cltTunForm", "Crypto type:", 0));
keysLabel->setText(QApplication::translate("cltTunForm", "Keys:", 0));
destinationPortLabel->setText(QApplication::translate("cltTunForm", "Destination port:", 0));
addressLabel->setText(QApplication::translate("cltTunForm", "Address:", 0));
sigTypeLabel->setText(QApplication::translate("cltTunForm", "Signature type:", 0));
2017-04-02 19:39:24 +00:00
}
2017-06-02 14:59:13 +00:00
protected:
virtual bool applyDataFromUIToTunnelConfig() {
2017-09-08 09:57:15 +00:00
QString cannotSaveSettings = QApplication::tr("Cannot save settings.");
2017-06-02 14:59:13 +00:00
bool ok=TunnelPane::applyDataFromUIToTunnelConfig();
if(!ok)return false;
ClientTunnelConfig* ctc=tunnelConfig->asClientTunnelConfig();
assert(ctc!=nullptr);
2017-04-02 19:39:24 +00:00
2020-12-17 17:13:50 +00:00
if(!isValidSingleLine(destinationLineEdit))return false;
if(!isValidSingleLine(portLineEdit))return false;
if(!isValidSingleLine(cryptoTypeLineEdit))return false;
if(!isValidSingleLine(keysLineEdit))return false;
if(!isValidSingleLine(addressLineEdit))return false;
if(!isValidSingleLine(destinationPortLineEdit))return false;
2017-06-02 14:59:13 +00:00
//destination
ctc->setdest(destinationLineEdit->text().toStdString());
auto portStr=portLineEdit->text();
int portInt=portStr.toInt(&ok);
2017-09-08 09:57:15 +00:00
if(!ok){
highlightWrongInput(QApplication::tr("Bad port, must be int.")+" "+cannotSaveSettings,portLineEdit);
return false;
}
2017-06-02 14:59:13 +00:00
ctc->setport(portInt);
2020-10-07 15:16:06 +00:00
auto cryptoTypeStr=cryptoTypeLineEdit->text();
int cryptoTypeInt=cryptoTypeStr.toInt(&ok);
if(!ok){
highlightWrongInput(QApplication::tr("Bad crypto type, must be int.")+" "+cannotSaveSettings,cryptoTypeLineEdit);
return false;
}
ctc->setcryptoType(cryptoTypeInt);
2017-06-02 14:59:13 +00:00
ctc->setkeys(keysLineEdit->text().toStdString());
ctc->setaddress(addressLineEdit->text().toStdString());
2017-08-27 04:39:00 +00:00
auto dportStr=destinationPortLineEdit->text();
2017-06-02 14:59:13 +00:00
int dportInt=dportStr.toInt(&ok);
2017-09-08 09:57:15 +00:00
if(!ok){
highlightWrongInput(QApplication::tr("Bad destinationPort, must be int.")+" "+cannotSaveSettings,destinationPortLineEdit);
return false;
}
2017-06-02 14:59:13 +00:00
ctc->setdestinationPort(dportInt);
ctc->setsigType(readSigTypeComboboxUI(sigTypeComboBox));
2017-07-28 01:21:25 +00:00
return true;
2017-06-02 14:59:13 +00:00
}
2017-03-14 12:34:01 +00:00
};
#endif // CLIENTTUNNELPANE_H