Revision control
++ // Copyright (C) 2016 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++
++ #include <QtWidgets>
++ #include <QtNetwork>
++
++ #include <stdlib.h>
++
++ #include "dialog.h"
++ #include "fortuneserver.h"
++
++ Dialog::Dialog(QWidget *parent)
++ : QWidget(parent)
++ {
++ statusLabel = new QLabel;
++ statusLabel->setWordWrap(true);
++ quitButton = new QPushButton(tr("Quit"));
++ quitButton->setAutoDefault(false);
++
++ if (!server.listen()) {
++ QMessageBox::critical(this, tr("Threaded Fortune Server"),
++ tr("Unable to start the server: %1.")
++ .arg(server.errorString()));
++ close();
++ return;
++ }
++
++ QString ipAddress;
++ const QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();
++ // use the first non-localhost IPv4 address
++
++ for (const QHostAddress &entry : ipAddressesList) {
++ if (entry != QHostAddress::LocalHost && entry.toIPv4Address()) {
++ ipAddress = entry.toString();
++ break;
++ }
++ }
++ // if we did not find one, use IPv4 localhost
++ if (ipAddress.isEmpty())
++ ipAddress = QHostAddress(QHostAddress::LocalHost).toString();
++ statusLabel->setText(tr("The server is running on\n\nIP: %1\nport: %2\n\n"
++ "Run the Fortune Client example now.")
++ .arg(ipAddress).arg(server.serverPort()));
++
++ connect(quitButton, &QPushButton::clicked, this, &Dialog::close);
++
++ QHBoxLayout *buttonLayout = new QHBoxLayout;
++ buttonLayout->addStretch(1);
++ buttonLayout->addWidget(quitButton);
++ buttonLayout->addStretch(1);
++
++ QVBoxLayout *mainLayout = new QVBoxLayout;
++ mainLayout->addWidget(statusLabel);
++ mainLayout->addLayout(buttonLayout);
++ setLayout(mainLayout);
++ setWindowTitle(tr("Threaded Fortune Server"));
++ }