mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Moved logic to check fixed port is in use to ConfigWindow class.
refs #5751
This commit is contained in:
parent
98e86a8160
commit
76b0e3e9f7
@ -14,6 +14,8 @@
|
|||||||
#include "ui_ConfigWindow.h"
|
#include "ui_ConfigWindow.h"
|
||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
#include <QTcpSocket>
|
||||||
|
#include <QtWidgets>
|
||||||
|
|
||||||
ConfigWindow::ConfigWindow(QWidget *parent) :
|
ConfigWindow::ConfigWindow(QWidget *parent) :
|
||||||
QDialog(parent)
|
QDialog(parent)
|
||||||
@ -23,13 +25,18 @@ ConfigWindow::ConfigWindow(QWidget *parent) :
|
|||||||
|
|
||||||
void ConfigWindow::initConfigWindow()
|
void ConfigWindow::initConfigWindow()
|
||||||
{
|
{
|
||||||
QSettings settings;
|
|
||||||
|
|
||||||
ui = new Ui::ConfigWindow;
|
ui = new Ui::ConfigWindow;
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
m_needRestart = false;
|
m_needRestart = false;
|
||||||
|
|
||||||
|
setConfigValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigWindow::setConfigValues()
|
||||||
|
{
|
||||||
|
QSettings settings;
|
||||||
|
|
||||||
ui->browserCommandLineEdit->setText(settings.value("BrowserCommand").toString());
|
ui->browserCommandLineEdit->setText(settings.value("BrowserCommand").toString());
|
||||||
|
|
||||||
if(settings.value("FixedPort").toBool())
|
if(settings.value("FixedPort").toBool())
|
||||||
@ -70,19 +77,28 @@ void ConfigWindow::on_buttonBox_accepted()
|
|||||||
QString pythonpath = ui->pythonPathLineEdit->text();
|
QString pythonpath = ui->pythonPathLineEdit->text();
|
||||||
QString applicationpath = ui->applicationPathLineEdit->text();
|
QString applicationpath = ui->applicationPathLineEdit->text();
|
||||||
|
|
||||||
m_needRestart = (settings.value("FixedPort").toBool() != fixedport ||
|
if (fixedport && (settings.value("FixedPort").toBool() != fixedport ||
|
||||||
settings.value("PortNumber").toInt() != portnumber ||
|
settings.value("PortNumber").toInt() != portnumber) && isPortInUse(portnumber))
|
||||||
settings.value("PythonPath").toString() != pythonpath ||
|
{
|
||||||
settings.value("ApplicationPath").toString() != applicationpath);
|
QString error = QString(QWidget::tr("The specified fixed port is already in use. Please provide any other valid port."));
|
||||||
|
QMessageBox::critical(Q_NULLPTR, QString(QWidget::tr("Fatal Error")), error);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_needRestart = (settings.value("FixedPort").toBool() != fixedport ||
|
||||||
|
settings.value("PortNumber").toInt() != portnumber ||
|
||||||
|
settings.value("PythonPath").toString() != pythonpath ||
|
||||||
|
settings.value("ApplicationPath").toString() != applicationpath);
|
||||||
|
|
||||||
settings.setValue("BrowserCommand", browsercommand);
|
settings.setValue("BrowserCommand", browsercommand);
|
||||||
settings.setValue("FixedPort", fixedport);
|
settings.setValue("FixedPort", fixedport);
|
||||||
settings.setValue("PortNumber", portnumber);
|
settings.setValue("PortNumber", portnumber);
|
||||||
settings.setValue("OpenTabAtStartup", opentabatstartup);
|
settings.setValue("OpenTabAtStartup", opentabatstartup);
|
||||||
settings.setValue("PythonPath", pythonpath);
|
settings.setValue("PythonPath", pythonpath);
|
||||||
settings.setValue("ApplicationPath", applicationpath);
|
settings.setValue("ApplicationPath", applicationpath);
|
||||||
|
|
||||||
settings.sync();
|
settings.sync();
|
||||||
|
}
|
||||||
|
|
||||||
emit accepted(m_needRestart);
|
emit accepted(m_needRestart);
|
||||||
emit closing(true);
|
emit closing(true);
|
||||||
@ -104,3 +120,17 @@ void ConfigWindow::on_chkFixedPort_stateChanged(int state)
|
|||||||
ui->spinPortNumber->setEnabled(false);
|
ui->spinPortNumber->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ConfigWindow::isPortInUse(const quint16 port) const
|
||||||
|
{
|
||||||
|
QTcpSocket socket;
|
||||||
|
|
||||||
|
// Bind the socket on the specified port.
|
||||||
|
socket.bind(port, QTcpSocket::DontShareAddress);
|
||||||
|
|
||||||
|
// Returns the host port number of the local socket if available; otherwise returns 0
|
||||||
|
quint16 tmpPort = socket.localPort();
|
||||||
|
if (tmpPort == 0)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -24,6 +24,7 @@ class ConfigWindow : public QDialog
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ConfigWindow(QWidget *parent = Q_NULLPTR);
|
explicit ConfigWindow(QWidget *parent = Q_NULLPTR);
|
||||||
|
void setConfigValues();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void accepted(bool needRestart);
|
void accepted(bool needRestart);
|
||||||
@ -39,6 +40,7 @@ private:
|
|||||||
bool m_needRestart;
|
bool m_needRestart;
|
||||||
|
|
||||||
void initConfigWindow();
|
void initConfigWindow();
|
||||||
|
bool isPortInUse(const quint16 port) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CONFIGWINDOW_H
|
#endif // CONFIGWINDOW_H
|
||||||
|
@ -68,6 +68,7 @@ void MenuActions::onConfig()
|
|||||||
if (!m_configWindow)
|
if (!m_configWindow)
|
||||||
m_configWindow = new ConfigWindow();
|
m_configWindow = new ConfigWindow();
|
||||||
|
|
||||||
|
m_configWindow->setConfigValues();
|
||||||
m_configWindow->show();
|
m_configWindow->show();
|
||||||
m_configWindow->raise();
|
m_configWindow->raise();
|
||||||
m_configWindow->activateWindow();
|
m_configWindow->activateWindow();
|
||||||
|
@ -342,20 +342,6 @@ FloatingWindow * Runtime::createFloatingWindow(MenuActions *menuActions)
|
|||||||
return floatingWindow;
|
return floatingWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Runtime::isPortInUse(const quint16 port) const
|
|
||||||
{
|
|
||||||
QTcpSocket socket;
|
|
||||||
|
|
||||||
// Bind the socket on the specified port.
|
|
||||||
socket.bind(port, QTcpSocket::DontShareAddress);
|
|
||||||
|
|
||||||
// Returns the host port number of the local socket if available; otherwise returns 0
|
|
||||||
quint16 tmpPort = socket.localPort();
|
|
||||||
if (tmpPort == 0)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Runtime::openConfigureWindow(const QString errorMsg)
|
void Runtime::openConfigureWindow(const QString errorMsg)
|
||||||
{
|
{
|
||||||
@ -411,16 +397,6 @@ Server * Runtime::startServerLoop(QString key)
|
|||||||
|
|
||||||
while (!done)
|
while (!done)
|
||||||
{
|
{
|
||||||
if (isPortInUse(m_port))
|
|
||||||
{
|
|
||||||
QString error = QString(QWidget::tr("The specified port is already in use."));
|
|
||||||
|
|
||||||
// Open the configuration window
|
|
||||||
openConfigureWindow(error);
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
server = startServer(key);
|
server = startServer(key);
|
||||||
if (server == NULL)
|
if (server == NULL)
|
||||||
{
|
{
|
||||||
|
@ -60,7 +60,6 @@ private:
|
|||||||
void openBrowserTab(QString url) const;
|
void openBrowserTab(QString url) const;
|
||||||
QString serverRequest(QUrl url, QString path);
|
QString serverRequest(QUrl url, QString path);
|
||||||
bool pingServer(QUrl url);
|
bool pingServer(QUrl url);
|
||||||
bool isPortInUse(const quint16 port) const;
|
|
||||||
void openConfigureWindow(const QString errorMsg);
|
void openConfigureWindow(const QString errorMsg);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
Loading…
Reference in New Issue
Block a user