From 32453d1b4382185bca6909383b97cc6aa7fd7044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Tue, 16 Apr 2013 20:23:43 +0200 Subject: [PATCH] fijado el ancho m?ximo del combo ip a?adido nuevo sistema para obtener las ips en sistemas posix --- YACReaderLibrary/server_config_dialog.cpp | 60 +++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/YACReaderLibrary/server_config_dialog.cpp b/YACReaderLibrary/server_config_dialog.cpp index dd4deb89..711f33b7 100644 --- a/YACReaderLibrary/server_config_dialog.cpp +++ b/YACReaderLibrary/server_config_dialog.cpp @@ -10,6 +10,46 @@ #include "startup.h" #include "yacreader_global.h" +#ifndef Q_WS_WIN + +#include +#include +#include +#include +#include + +QList addresses() +{ + struct ifaddrs * ifAddrStruct=NULL; + struct ifaddrs * ifa=NULL; + void * tmpAddrPtr=NULL; + + QList localAddreses; + + getifaddrs(&ifAddrStruct); + + for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa->ifa_next) { + if (ifa ->ifa_addr->sa_family==AF_INET) { // check it is IP4 + // is a valid IP4 Address + tmpAddrPtr=&((struct sockaddr_in *)ifa->ifa_addr)->sin_addr; + char addressBuffer[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN); + localAddreses.push_back(addressBuffer,INET_ADDRSTRLEN); + //printf("%s IP Address %s\n", ifa->ifa_name, addressBuffer); + } else if (ifa->ifa_addr->sa_family==AF_INET6) { // check it is IP6 + // is a valid IP6 Address + tmpAddrPtr=&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr; + char addressBuffer[INET6_ADDRSTRLEN]; + inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN); + //printf("%s IP Address %s\n", ifa->ifa_name, addressBuffer); + } + } + if (ifAddrStruct!=NULL) freeifaddrs(ifAddrStruct); + return 0; +} + +#endif + extern Startup * s; ServerConfigDialog::ServerConfigDialog(QWidget * parent) @@ -56,6 +96,7 @@ ServerConfigDialog::ServerConfigDialog(QWidget * parent) connect(ip,SIGNAL(activated(const QString &)),this,SLOT(regenerateQR(const QString &))); ip->move(531,71); ip->setSizeAdjustPolicy(QComboBox::AdjustToContents); + ip->setMaximumWidth(100); port = new QLineEdit("8080",this); port->setReadOnly(true); @@ -147,7 +188,9 @@ void ServerConfigDialog::generateQR() //} ip->clear(); QString dir; +#ifdef Q_WS_WIN QList list = QHostInfo::fromName( QHostInfo::localHostName() ).addresses(); + QList otherAddresses; foreach(QHostAddress add, list) { @@ -161,6 +204,23 @@ void ServerConfigDialog::generateQR() } } +#else + QList list = addresses(); + + QList otherAddresses; + foreach(QString add, list) + { + QString tmp = add; + if(tmp.contains(".") && tmp != "127.0.0.1") + { + if(dir.isEmpty()) + dir = tmp; + else + otherAddresses.push_back(tmp); + + } + } +#endif if(!dir.isEmpty()) { generateQR(dir+":"+s->getPort());