#include "server_config_dialog.h" #include #include #include #include #include #include "startup.h" extern Startup * s; ServerConfigDialog::ServerConfigDialog(QWidget * parent) :QDialog(parent) { accept = new QPushButton(tr("Generar")); connect(accept,SIGNAL(clicked()),this,SLOT(generateQR())); qrCodeImage = new QPixmap(); qrCode = new QLabel("xxxx",this); QGridLayout * gridEdits = new QGridLayout; gridEdits->addWidget(new QLabel(tr("IP")),0,0); gridEdits->addWidget(new QLabel(tr("Port")),0,1); ip = new QLineEdit(". . ."); gridEdits->addWidget(ip,1,0); port = new QLineEdit("8080"); port->setMaximumWidth(50); gridEdits->addWidget(port,1,1); gridEdits->setColumnStretch(0,1); gridEdits->setColumnStretch(1,0); QHBoxLayout * codeLayout = new QHBoxLayout; codeLayout->addStretch(); QLabel * qrMessage = new QLabel(); qrMessage->setPixmap(QPixmap(":/images/qrMessage.png")); codeLayout->addWidget(qrMessage); codeLayout->addWidget(qrCode); QVBoxLayout * configLayout = new QVBoxLayout; configLayout->addLayout(gridEdits); configLayout->addLayout(codeLayout); configLayout->addStretch(); configLayout->setSpacing(5); QHBoxLayout * elementsLayout = new QHBoxLayout; QLabel * iphone = new QLabel(); iphone->setPixmap(QPixmap(":/images/iphoneConfig.png")); elementsLayout->setSpacing(40); elementsLayout->addWidget(iphone); elementsLayout->addStretch(); elementsLayout->addLayout(configLayout); QHBoxLayout * buttons = new QHBoxLayout; buttons->addStretch(); buttons->addWidget(accept); QVBoxLayout * mainLayout = new QVBoxLayout; mainLayout->addLayout(elementsLayout); mainLayout->addLayout(buttons); //mainLayout->addWidget(qrCode,0,1); this->setLayout(mainLayout); generateQR(); QPalette Pal(palette()); // set black background Pal.setColor(QPalette::Background, Qt::white); setAutoFillBackground(true); setPalette(Pal); } void ServerConfigDialog::generateQR() { //QString items; //foreach(QNetworkInterface interface, QNetworkInterface::allInterfaces()) //{ // if (~interface.flags() & QNetworkInterface::IsLoopBack)//interface.flags().testFlag(QNetworkInterface::IsRunning)) // foreach (QNetworkAddressEntry entry, interface.addressEntries()) // { // if ( interface.hardwareAddress() != "00:00:00:00:00:00" && entry.ip().toString().contains(".")) // items.append(interface.name() + entry.ip().toString()); // } //} QString dir; QList list = QHostInfo::fromName( QHostInfo::localHostName() ).addresses(); foreach(QHostAddress add, list) { QString tmp = add.toString(); if(tmp.contains(".") && tmp != "127.0.0.1") { dir = tmp; break; } } if(!dir.isEmpty()) { generateQR(dir+":"+s->getPort()); ip->setText(dir); port->setText(s->getPort()); } else { } //qrCode->setText(dir+":8080"); } void ServerConfigDialog::generateQR(const QString & serverAddress) { qrGenerator = new QProcess(); QStringList attributes; attributes << "-o" << "-" /*QCoreApplication::applicationDirPath()+"/utils/tmp.png"*/ << "-s" << "8" << "-l" << "H" << serverAddress; connect(qrGenerator,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(updateImage(void))); connect(qrGenerator,SIGNAL(error(QProcess::ProcessError)),this,SLOT(openingError(QProcess::ProcessError))); qrGenerator->start(QCoreApplication::applicationDirPath()+"/utils/qrencode",attributes); } void ServerConfigDialog::updateImage() { QByteArray imgBinary = qrGenerator->readAllStandardOutput(); //imgBinary = imgBinary.replace(0x0D0A,0x0A); if(!qrCodeImage->loadFromData(imgBinary)) qrCode->setText(tr("QR generator error!")); else qrCode->setPixmap(*qrCodeImage); delete qrGenerator; /* qrCodeImage->load(QCoreApplication::applicationDirPath()+"/utils/tmp.png"); qrCode->setPixmap(*qrCodeImage); delete qrGenerator;*/ }