summaryrefslogtreecommitdiff
path: root/library/network.cpp
Side-by-side diff
Diffstat (limited to 'library/network.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/network.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/network.cpp b/library/network.cpp
index 991e11a..df28857 100644
--- a/library/network.cpp
+++ b/library/network.cpp
@@ -68,194 +68,194 @@ void Network::start(const QString& choice, const QString& password)
/*!
\class Network network.h
\brief The Network class provides network access functionality.
\internal
*/
// copy the proxy settings of the active config over to the Proxies.conf file
/*!
\internal
*/
void Network::writeProxySettings( Config &cfg )
{
Config proxy( Network::settingsDir() + "/Proxies.conf", Config::File );
proxy.setGroup("Properties");
cfg.setGroup("Proxy");
proxy.writeEntry("type", cfg.readEntry("type") );
proxy.writeEntry("autoconfig", cfg.readEntry("autoconfig") );
proxy.writeEntry("httphost", cfg.readEntry("httphost") );
proxy.writeEntry("httpport", cfg.readEntry("httpport") );
proxy.writeEntry("ftphost", cfg.readEntry("ftphost") );
proxy.writeEntry("ftpport", cfg.readEntry("ftpport") );
proxy.writeEntry("noproxies", cfg.readEntry("noproxies") );
cfg.setGroup("Properties");
}
/*!
\internal
Stops the current network service.
*/
void Network::stop()
{
QCopEnvelope e("QPE/Network", "stop()");
}
static NetworkEmitter *emitter = 0;
/*!
\internal
*/
void Network::connectChoiceChange(QObject* receiver, const char* slot)
{
if ( !emitter )
emitter = new NetworkEmitter;
QObject::connect(emitter,SIGNAL(changed()),receiver,slot);
}
#endif // QT_NO_COP
/*!
\internal
*/
QString Network::settingsDir()
{
return Global::applicationFileName("Network", "modules");
}
#ifndef QT_NO_COP
/*!
\internal
*/
QStringList Network::choices(QListBox* lb, const QString& dir)
{
QStringList list;
if ( lb )
lb->clear();
QString adir = dir.isEmpty() ? settingsDir() : dir;
QDir settingsdir(adir);
settingsdir.mkdir(adir);
QStringList files = settingsdir.entryList("*.conf");
for (QStringList::ConstIterator it=files.begin(); it!=files.end(); ++it ) {
QString filename = settingsdir.filePath(*it);
Config cfg(filename, Config::File);
cfg.setGroup("Info");
if ( lb )
lb->insertItem(Resource::loadPixmap("Network/" + cfg.readEntry("Type")),
cfg.readEntry("Name"));
list.append(filename);
}
return list;
}
class NetworkServer : public QCopChannel {
Q_OBJECT
public:
NetworkServer(QObject* parent) : QCopChannel("QPE/Network",parent), wait(0)
{
up = FALSE;
examineNetworks( TRUE );
QCopChannel* card = new QCopChannel("QPE/Card",parent);
- connect(card,SIGNAL(received(const QCString &, const QByteArray&)),
- this,SLOT(cardMessage(const QCString &, const QByteArray&)));
+ connect(card,SIGNAL(received(const QCString&,const QByteArray&)),
+ this,SLOT(cardMessage(const QCString&,const QByteArray&)));
}
~NetworkServer()
{
stop();
}
bool networkOnline() const
{
return up;
}
private:
void receive(const QCString &msg, const QByteArray& data)
{
if ( msg == "start(QString,QString)" ) {
QDataStream stream(data,IO_ReadOnly);
QString file,password;
stream >> file >> password;
if ( file.isEmpty() ) {
QStringList l = Network::choices();
for (QStringList::ConstIterator i=l.begin(); i!=l.end(); ++i) {
Config cfg(*i,Config::File);
cfg.setGroup("Info");
QString type = cfg.readEntry("Type");
NetworkInterface* plugin = Network::loadPlugin(type);
cfg.setGroup("Properties");
if ( plugin && plugin->isAvailable(cfg) ) {
file = *i;
break;
}
}
if ( file.isEmpty() ) {
QCopEnvelope("QPE/Network", "failed()");
return;
}
}
start(file,password);
} else if ( msg == "stop()" ) {
stop();
} else if ( msg == "choicesChanged()" ) {
examineNetworks();
}
}
private slots:
void cardMessage(const QCString &msg, const QByteArray&)
{
if ( msg == "stabChanged()" )
examineNetworks();
}
private:
void examineNetworks( bool firstStart = FALSE )
{
QStringList l = Network::choices();
bool wasup = up; up=FALSE;
QStringList pavailable = available;
available.clear();
for (QStringList::ConstIterator it=l.begin(); it!=l.end(); ++it) {
Config cfg(*it,Config::File);
cfg.setGroup("Info");
QString type = cfg.readEntry("Type");
NetworkInterface* plugin = Network::loadPlugin(type);
cfg.setGroup("Properties");
if ( plugin ) {
if ( plugin->isActive(cfg) ) {
up = TRUE;
if ( firstStart )
plugin->start( cfg );
}
if ( plugin->isAvailable(cfg) )
available.append(*it);
}
}
// Try to work around unreproducible bug whereby
// the netmon applet shows wrong state.
bool reannounce = wait<0;
if ( available != pavailable || reannounce ) {
QCopEnvelope e("QPE/Network", "available(QStringList)");
e << available;
}
if ( up != wasup || reannounce ) {
QCopEnvelope("QPE/Network", up ? "up()" : "down()");
}
}
void start( const QString& file, const QString& password )
{
if ( !current.isEmpty() )
stop();
current = QString::null;
Config cfg(file, Config::File);
cfg.setGroup("Info");