Add IP Address to local settings and make IP Addresses in Combobox sorted

This commit is contained in:
Nikhil Tanwar 2021-12-05 11:09:21 +05:30
parent 11d6641415
commit cae216feeb
3 changed files with 29 additions and 8 deletions

View File

@ -25,18 +25,23 @@ LocalKiwixServer::LocalKiwixServer(QWidget *parent) :
connect(ui->KiwixServerButton, SIGNAL(clicked()), this, SLOT(runOrStopServer()));
connect(ui->OpenInBrowserButton, SIGNAL(clicked()), this, SLOT(openInBrowser()));
connect(KiwixApp::instance()->getSettingsManager(), &SettingsManager::portChanged,
this, [=](int port) { m_port = port; });
connect(ui->closeButton, &QPushButton::clicked, this, &LocalKiwixServer::close);
const auto interfacesMap = kiwix::getNetworkInterfaces();
for(auto interfacePair : interfacesMap) {
QVector<QString> interfaces;
interfaces.reserve(interfacesMap.size() + 1);
for (const auto &interfacePair : interfacesMap) {
QString ip = QString::fromStdString(interfacePair.second);
ui->IpChooser->addItem(ip);
interfaces.push_back(ip);
}
ui->IpChooser->addItem("0.0.0.0");
ui->IpChooser->setCurrentText(QString::fromStdString(mp_server->getBestPublicIp())); // put best Public Ip as default
interfaces.push_back(QString("0.0.0.0"));
std::sort(interfaces.begin(), interfaces.end());
for (const auto &interface : interfaces) {
ui->IpChooser->addItem(interface);
}
ui->IpChooser->setCurrentText(KiwixApp::instance()->getSettingsManager()->getKiwixServerIp());
ui->PortChooser->setText(QString::number(m_port));
ui->PortChooser->setValidator(new QIntValidator(0, 65535, this));
ui->KiwixServerButton->setStyleSheet("QPushButton {background-color: RoyalBlue;"
"color: white;"
"padding: 5px;"
@ -67,9 +72,15 @@ void LocalKiwixServer::runOrStopServer()
{
if (!m_active) {
m_port = ui->PortChooser->text().toInt();
m_ipAddress = (ui->IpChooser->currentText() != "0.0.0.0") ? ui->IpChooser->currentText() : QString::fromStdString(mp_server->getBestPublicIp());
if (m_port > 65535) {
m_port = 65535;
}
mp_server->setPort(m_port);
KiwixApp::instance()->getSettingsManager()->setKiwixServerPort(m_port);
m_ipAddress = ui->IpChooser->currentText();
auto settingsManager = KiwixApp::instance()->getSettingsManager();
settingsManager->setKiwixServerPort(m_port);
settingsManager->setKiwixServerIpAddress(m_ipAddress);
m_ipAddress = (m_ipAddress != "0.0.0.0") ? ui->IpChooser->currentText() : QString::fromStdString(kiwix::getBestPublicIp());
mp_server->setAddress(ui->IpChooser->currentText().toStdString());
ui->IpAddress->setText("http://" + m_ipAddress + ":" + QString::number(m_port));
ui->IpAddress->setReadOnly(true);

View File

@ -60,6 +60,12 @@ void SettingsManager::setKiwixServerPort(int port)
emit(portChanged(port));
}
void SettingsManager::setKiwixServerIp(QString ip)
{
m_kiwixServerIp = ip;
m_settings.setValue("localKiwixServer/ipAddress", ip);
}
void SettingsManager::setZoomFactor(qreal zoomFactor)
{
m_zoomFactor = zoomFactor;
@ -80,4 +86,5 @@ void SettingsManager::initSettings()
m_kiwixServerPort = m_settings.value("localKiwixServer/port", 8181).toInt();
m_zoomFactor = m_settings.value("view/zoomFactor", 1).toDouble();
m_downloadDir = m_settings.value("download/dir", QString::fromStdString(kiwix::getDataDirectory())).toString();
m_kiwixServerIp = m_settings.value("localKiwixServer/ipAddress", QString("0.0.0.0")).toString();
}

View File

@ -26,6 +26,8 @@ public:
public slots:
void setKiwixServerPort(int port);
int getKiwixServerPort() { return m_kiwixServerPort; };
void setKiwixServerIp(QString ip);
QString getKiwixServerIp() { return m_kiwixServerIp; };
void setZoomFactor(qreal zoomFactor);
qreal getZoomFactor() { return m_zoomFactor; };
bool setDownloadDir(QString downloadDir);
@ -42,6 +44,7 @@ private:
QSettings m_settings;
SettingsView *m_view;
int m_kiwixServerPort;
QString m_kiwixServerIp;
qreal m_zoomFactor;
QString m_downloadDir;
};