summaryrefslogtreecommitdiff
authorwimpie <wimpie>2005-01-07 15:23:23 (UTC)
committer wimpie <wimpie>2005-01-07 15:23:23 (UTC)
commitb4eced64efad35beeb2004243ca26bf7eb20eaba (patch) (side-by-side diff)
tree14caf32705c787a8bffc917ecdf216ad40cfbdc0
parent7af7203a51ddcf85f9f60e39157fcad21f7d9e34 (diff)
downloadopie-b4eced64efad35beeb2004243ca26bf7eb20eaba.zip
opie-b4eced64efad35beeb2004243ca26bf7eb20eaba.tar.gz
opie-b4eced64efad35beeb2004243ca26bf7eb20eaba.tar.bz2
All NS2 libraries are now properly working plugins
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/networksettings2/bluetooth/bluetoothBNEP_NN.cpp21
-rw-r--r--noncore/settings/networksettings2/cable/cable_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/editconnection.cpp5
-rw-r--r--noncore/settings/networksettings2/gprs/GPRS_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/irda/irda_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/lancard/lancard_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/modem/modem_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/network/network_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/networksettings.cpp4
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.cpp37
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.h44
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnodeinterface.h18
-rw-r--r--noncore/settings/networksettings2/networksettings2/resources.cpp167
-rw-r--r--noncore/settings/networksettings2/networksettings2/resources.h60
-rw-r--r--noncore/settings/networksettings2/nsdata.cpp88
-rw-r--r--noncore/settings/networksettings2/ppp/ppp_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/profile/profile_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/usb/usb_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/usb/usbrun.cpp15
-rw-r--r--noncore/settings/networksettings2/vpn/vpn_NN.cpp19
-rw-r--r--noncore/settings/networksettings2/wlan/wlan_NN.cpp19
21 files changed, 186 insertions, 482 deletions
diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothBNEP_NN.cpp b/noncore/settings/networksettings2/bluetooth/bluetoothBNEP_NN.cpp
index 5e4d951..5c2b8b2 100644
--- a/noncore/settings/networksettings2/bluetooth/bluetoothBNEP_NN.cpp
+++ b/noncore/settings/networksettings2/bluetooth/bluetoothBNEP_NN.cpp
@@ -2,12 +2,8 @@
#include "bluetoothBNEP_NNI.h"
#include "bluetoothRFCOMM_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
//
//
// BLUETOOTH PAN/NAP node
@@ -75,20 +71,5 @@ void BluetoothBNEPNetNode::saveSpecificAttribute( QTextStream & TS) {
<< endl;
}
-#ifndef MYPLUGIN
-
-extern "C" {
-// create plugin registers both BT functions
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new BluetoothBNEPNetNode() );
- PNN.append( new BluetoothRFCOMMNetNode() );
-}
-
-#else
-
typedef Opie::Core::MakeTypelist<BluetoothBNEPNetNode, BluetoothRFCOMMNetNode>::Result BluetoothTypes;
-OPIE_NS2_PLUGIN( NetNodeInterface<BluetoothTypes> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<BluetoothTypes> )
diff --git a/noncore/settings/networksettings2/cable/cable_NN.cpp b/noncore/settings/networksettings2/cable/cable_NN.cpp
index 20299e4..58237a1 100644
--- a/noncore/settings/networksettings2/cable/cable_NN.cpp
+++ b/noncore/settings/networksettings2/cable/cable_NN.cpp
@@ -1,12 +1,8 @@
#include "cable_NN.h"
#include "cable_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * CableNeeds[] =
{ 0
};
@@ -53,17 +49,4 @@ void CableNetNode::setSpecificAttribute( QString & , QString & ) {
void CableNetNode::saveSpecificAttribute( QTextStream & ) {
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new CableNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<CableNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<CableNetNode> )
diff --git a/noncore/settings/networksettings2/editconnection.cpp b/noncore/settings/networksettings2/editconnection.cpp
index 3f8a53f..0c3ead6 100644
--- a/noncore/settings/networksettings2/editconnection.cpp
+++ b/noncore/settings/networksettings2/editconnection.cpp
@@ -321,11 +321,10 @@ void EditConnection::buildFullTree( void ) {
// find all Nodes that are toplevel nodes -> ie provide
// TCP/IP Connection
- for( QDictIterator<NetNode_t> Iter(NSResources->netNodes());
+ for( QDictIterator<ANetNode> Iter(NSResources->netNodes());
Iter.current();
++Iter ) {
-
- NN = Iter.current()->NetNode;
+ NN = Iter.current();
if( ! NN->isToplevel() ) {
continue;
diff --git a/noncore/settings/networksettings2/gprs/GPRS_NN.cpp b/noncore/settings/networksettings2/gprs/GPRS_NN.cpp
index 4415739..e9553a6 100644
--- a/noncore/settings/networksettings2/gprs/GPRS_NN.cpp
+++ b/noncore/settings/networksettings2/gprs/GPRS_NN.cpp
@@ -4,12 +4,8 @@
#include "GPRS_NN.h"
#include "GPRS_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * GPRSNeeds[] =
{ "GPRS",
0
@@ -79,17 +75,4 @@ QStringList GPRSNetNode::properFiles( void ) {
return SL;
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new GPRSNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<GPRSNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<GPRSNetNode> )
diff --git a/noncore/settings/networksettings2/irda/irda_NN.cpp b/noncore/settings/networksettings2/irda/irda_NN.cpp
index 6858157..a1ed686 100644
--- a/noncore/settings/networksettings2/irda/irda_NN.cpp
+++ b/noncore/settings/networksettings2/irda/irda_NN.cpp
@@ -1,12 +1,8 @@
#include "irda_NN.h"
#include "irda_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * IRDANeeds[] =
{ 0
};
@@ -53,17 +49,4 @@ void IRDANetNode::setSpecificAttribute( QString & , QString & ) {
void IRDANetNode::saveSpecificAttribute( QTextStream & ) {
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new IRDANetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<IRDANetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<IRDANetNode> )
diff --git a/noncore/settings/networksettings2/lancard/lancard_NN.cpp b/noncore/settings/networksettings2/lancard/lancard_NN.cpp
index fce3d29..520516c 100644
--- a/noncore/settings/networksettings2/lancard/lancard_NN.cpp
+++ b/noncore/settings/networksettings2/lancard/lancard_NN.cpp
@@ -1,12 +1,8 @@
#include "lancard_NN.h"
#include "lancard_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * LanCardNeeds[] =
{ 0
};
@@ -76,17 +72,4 @@ void LanCardNetNode::saveSpecificAttribute( QTextStream & TS) {
}
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new LanCardNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<LanCardNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<LanCardNetNode> )
diff --git a/noncore/settings/networksettings2/modem/modem_NN.cpp b/noncore/settings/networksettings2/modem/modem_NN.cpp
index c7f6e78..e91b45a 100644
--- a/noncore/settings/networksettings2/modem/modem_NN.cpp
+++ b/noncore/settings/networksettings2/modem/modem_NN.cpp
@@ -1,12 +1,8 @@
#include "modem_NN.h"
#include "modem_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * ModemNeeds[] =
{ "line",
0
@@ -54,17 +50,4 @@ void ModemNetNode::setSpecificAttribute( QString & , QString & ) {
void ModemNetNode::saveSpecificAttribute( QTextStream & ) {
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new ModemNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<ModemNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<ModemNetNode> )
diff --git a/noncore/settings/networksettings2/network/network_NN.cpp b/noncore/settings/networksettings2/network/network_NN.cpp
index 82d0c29..2fa31bd 100644
--- a/noncore/settings/networksettings2/network/network_NN.cpp
+++ b/noncore/settings/networksettings2/network/network_NN.cpp
@@ -4,12 +4,8 @@
#include "network_NN.h"
#include "network_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * NetworkNeeds[] =
{ "device",
0
@@ -96,17 +92,4 @@ void NetworkNetNode::setSpecificAttribute( QString & , QString & ) {
void NetworkNetNode::saveSpecificAttribute( QTextStream & ) {
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new NetworkNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<NetworkNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<NetworkNetNode> )
diff --git a/noncore/settings/networksettings2/networksettings.cpp b/noncore/settings/networksettings2/networksettings.cpp
index dca6631..9680a96 100644
--- a/noncore/settings/networksettings2/networksettings.cpp
+++ b/noncore/settings/networksettings2/networksettings.cpp
@@ -237,7 +237,7 @@ void NetworkSettings::SLOT_EditNode( QListBoxItem * LBI ) {
} // else new name
// new name -> remove item
NSResources->removeConnection( OldName );
- NSResources->addConnection( NC );
+ NSResources->addConnection( NC, 0 );
} // else not changed
// must add it here since change will trigger event
@@ -248,7 +248,7 @@ void NetworkSettings::SLOT_EditNode( QListBoxItem * LBI ) {
} else {
// new item
int ci = Profiles_LB->count();
- NSResources->addConnection( NC );
+ NSResources->addConnection( NC, 0 );
NC->setNumber( NSResources->assignConnectionNumber() );
Profiles_LB->insertItem( NC->devicePixmap(), NC->name() );
Profiles_LB->setSelected( ci, TRUE );
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.cpp b/noncore/settings/networksettings2/networksettings2/netnode.cpp
index f8f2d1e..f00e0b3 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.cpp
+++ b/noncore/settings/networksettings2/networksettings2/netnode.cpp
@@ -141,13 +141,17 @@ NodeCollection::NodeCollection( void ) : QList<ANetNodeInstance>() {
IsNew = 1;
CurrentState = Unchecked;
AssignedInterface = 0;
+ Number = -1;
+ Done = 0;
}
-NodeCollection::NodeCollection( QTextStream & TS ) :
+NodeCollection::NodeCollection( QTextStream & TS, bool & Dangling ) :
QList<ANetNodeInstance>() {
long idx;
- bool InError = 0;
QString S, A, N;
+
+ Number = -1;
+ Done = 0;
IsModified = 0;
Index = -1;
Name="";
@@ -155,13 +159,11 @@ NodeCollection::NodeCollection( QTextStream & TS ) :
AssignedInterface = 0;
CurrentState = Unchecked;
+ Dangling = 0; // by default node collection is ok
+
do {
S = TS.readLine();
if( S.isEmpty() ) {
- if( InError ) {
- // remove all nodes
- clear();
- }
// empty line
break;
}
@@ -181,11 +183,15 @@ NodeCollection::NodeCollection( QTextStream & TS ) :
} else if( A == "node" ) {
ANetNodeInstance * NNI = NSResources->findNodeInstance( N );
Log(( "Find node %s : %p\n", N.latin1(), NNI ));
- if( NNI && ! InError ) {
+ if( NNI ) {
append( NNI );
} else {
// could not find a node type -> collection invalid
- InError = 1;
+ Log(( "Node %s missing -> connection dangling\n",
+ N.latin1() ));
+ // create placeholder for this dangling NNI
+ NNI = new ErrorNNI( N );
+ Dangling = 1;
}
}
} while( 1 );
@@ -194,7 +200,6 @@ NodeCollection::NodeCollection( QTextStream & TS ) :
Name.latin1(), count() ));
}
-
NodeCollection::~NodeCollection( void ) {
}
@@ -229,11 +234,12 @@ ANetNodeInstance * NodeCollection::getToplevel( void ) {
it.current();
++it ) {
NNI = it.current();
- if( NNI->nodeClass()->isToplevel() )
- break;
- }
+ if( NNI->nodeClass()->isToplevel() ) {
return NNI;
}
+ }
+ return 0;
+}
ANetNodeInstance * NodeCollection::findByName( const QString & S ) {
ANetNodeInstance * NNI = 0;
@@ -241,11 +247,12 @@ ANetNodeInstance * NodeCollection::findByName( const QString & S ) {
it.current();
++it ) {
NNI = it.current();
- if( NNI->name() == S )
- break;
- }
+ if( NNI->name() == S ) {
return NNI;
}
+ }
+ return 0;
+}
ANetNodeInstance * NodeCollection::findNext( ANetNodeInstance * NNI ) {
ANetNodeInstance * NNNI;
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.h b/noncore/settings/networksettings2/networksettings2/netnode.h
index 4626381..151d546 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.h
+++ b/noncore/settings/networksettings2/networksettings2/netnode.h
@@ -319,12 +319,54 @@ protected :
NodeCollection * Connection;
QString Description;
bool IsModified;
+ // true if this nodeinstance was just created (and not
+ // loaded from file
bool IsNew;
int Done;
static long InstanceCounter;
};
+class ErrorNNI: public ANetNodeInstance {
+
+public:
+
+ ErrorNNI( const QString & _Name ) : ANetNodeInstance( 0 ) {
+ setName( _Name.latin1() );
+ }
+
+ RuntimeInfo * runtime( void ) {
+ return 0;
+ }
+
+ // create edit widget under parent
+ QWidget * edit( QWidget * parent ) {
+ return 0;
+ }
+
+ // is given data acceptable
+ QString acceptable( void ) {
+ return QString();
+ }
+
+ // get data from GUI and store in node
+ void commit( void ) {
+ }
+
+ // returns node specific data -> only useful for 'buddy'
+ void * data( void ) {
+ return 0;
+ }
+
+protected :
+
+ void setSpecificAttribute( QString & , QString & ) {
+ }
+
+ void saveSpecificAttribute( QTextStream & ) {
+ }
+};
+
class RuntimeInfo : public QObject {
Q_OBJECT
@@ -468,7 +510,7 @@ class NodeCollection : public QList<ANetNodeInstance> {
public :
NodeCollection( void );
- NodeCollection( QTextStream & TS );
+ NodeCollection( QTextStream & TS, bool & Dangling );
~NodeCollection( void );
inline int done( void )
diff --git a/noncore/settings/networksettings2/networksettings2/netnodeinterface.h b/noncore/settings/networksettings2/networksettings2/netnodeinterface.h
index 34f3bb5..06d1548 100644
--- a/noncore/settings/networksettings2/networksettings2/netnodeinterface.h
+++ b/noncore/settings/networksettings2/networksettings2/netnodeinterface.h
@@ -78,8 +78,18 @@ struct NS2PrivateFactory<Opie::Core::Typelist<Node, Tail> > {
};
+class NetNodeInterface : public QUnknownInterface {
+
+public :
+
+ virtual QRESULT queryInterface( const QUuid& uuid,
+ QUnknownInterface **iface ) = 0;
+
+ virtual void create_plugin( QList<ANetNode> & PNN ) = 0;
+};
+
template<class Node>
-struct NetNodeInterface : public QUnknownInterface {
+struct NetNodeInterface_T : public NetNodeInterface {
QRESULT queryInterface(const QUuid& uuid, QUnknownInterface **iface) {
*iface = 0;
@@ -107,8 +117,8 @@ struct NetNodeInterface : public QUnknownInterface {
};
template<class Node, class Tail>
-struct NetNodeInterface<Opie::Core::Typelist<Node, Tail> >
- : public QUnknownInterface {
+struct NetNodeInterface_T<Opie::Core::Typelist<Node, Tail> >
+ : public NetNodeInterface {
QRESULT queryInterface( const QUuid& uuid,
QUnknownInterface **iface) {
@@ -125,7 +135,7 @@ struct NetNodeInterface<Opie::Core::Typelist<Node, Tail> >
}
void create_plugin( QList<ANetNode> & PNN ) {
- NS2PrivateFactory<Opie::Core::Typelist<Node,Tail> >::createPlugin( PNN );
+ NS2PrivateFactory<Opie::Core::Typelist<Node,Tail> >::createPlugins( PNN );
}
Q_REFCOUNT
diff --git a/noncore/settings/networksettings2/networksettings2/resources.cpp b/noncore/settings/networksettings2/networksettings2/resources.cpp
index 79d41ea..3479abb 100644
--- a/noncore/settings/networksettings2/networksettings2/resources.cpp
+++ b/noncore/settings/networksettings2/networksettings2/resources.cpp
@@ -25,7 +25,7 @@
TheNSResources * _NSResources = 0;
TheNSResources::TheNSResources( void ) : NodeTypeNameMap(),
- ConnectionsMap() {
+ ConnectionsMap(), DanglingConnectionsMap() {
_NSResources = this;
@@ -33,50 +33,6 @@ TheNSResources::TheNSResources( void ) : NodeTypeNameMap(),
// load available netnodes
-#ifdef MYPLUGIN
-
- findAvailableNetNodes(QPEApplication::qpeDir() + PLUGINDIR );
-
- // compile provides and needs lists
- { const char ** NeedsRun;
- QDictIterator<NetNode_t> OuterIt( AllNodeTypes );
- bool Done;
-
- for ( ; OuterIt.current(); ++OuterIt ) {
- // find needs list
- ANetNode::NetNodeList * NNLP = new ANetNode::NetNodeList;
- ANetNode::NetNodeList & NNL = *(NNLP);
-
- // must iterate this way to avoid duplication pointers
- for ( QDictIterator<NetNode_t> InnerIt( AllNodeTypes );
- InnerIt.current(); ++InnerIt ) {
- if( InnerIt.current() == OuterIt.current() )
- // avoid recursive
- continue;
-
- const char ** Provides = InnerIt.current()->NetNode->provides();
- NeedsRun = OuterIt.current()->NetNode->needs();
-
- for( ; *NeedsRun; NeedsRun ++ ) {
- const char ** PRun;
- PRun = Provides;
- for( ; *PRun; PRun ++ ) {
- if( strcmp( *PRun, *NeedsRun ) == 0 ) {
- // inner provides what outer needs
- NNL.resize( NNL.size() + 1 );
- NNL[NNL.size()-1] = InnerIt.current()->NetNode;
- Done = 1; // break from 2 loops
- break;
- }
- }
- }
- }
- OuterIt.current()->NetNode->setAlternatives( NNLP );
- }
- }
-
-#else
-
Plugins = 0;
findAvailableNetNodes();
@@ -119,8 +75,6 @@ TheNSResources::TheNSResources( void ) : NodeTypeNameMap(),
}
}
-#endif
-
// define built in Node types to Description map
addNodeType( "device", tr( "Network Device" ),
tr( "<p>Devices that can handle IP packets</p>" ) );
@@ -140,12 +94,10 @@ TheNSResources::TheNSResources( void ) : NodeTypeNameMap(),
TheNSResources::~TheNSResources( void ) {
-#ifndef MYPLUGINS
if( Plugins ) {
delete Plugins;
delete PluginManager;
}
-#endif
delete TheSystem;
}
@@ -179,99 +131,6 @@ void TheNSResources::busy( bool ) {
*/
}
-#ifdef MYPLUGIN
-/**
- * Load all modules that are found in the path
- * @param path a directory that is scaned for any plugins that can be loaded
- * and attempts to load them
- */
-void TheNSResources::findAvailableNetNodes(const QString &path){
-
- Log(("Locate plugins in %s\n", path.latin1() ));
- QDir d(path);
- if(!d.exists())
- return;
-
- QString lang = ::getenv("LANG");
-
- // Don't want sym links
- d.setFilter( QDir::Files | QDir::NoSymLinks );
- const QFileInfoList *list = d.entryInfoList();
- QFileInfoListIterator it( *list );
- QFileInfo *fi;
-
- while ( (fi=it.current()) ) {
-
- if( fi->fileName().contains(".so")){
- /* if loaded install translation */
- if( loadNetNode(path + "/" + fi->fileName()) ) {
- Log(( "Loading plugin %s\n", fi->fileName().latin1()));
- QTranslator *trans = new QTranslator(qApp);
- QString fn = QPEApplication::qpeDir()+
- "/i18n/"+lang+"/"+
- fi->fileName().left( fi->fileName().find(".") )+
- ".qm";
-
- if( trans->load( fn ) )
- qApp->installTranslator( trans );
- else
- delete trans;
- } else {
- Log(( "Error loading plugin %s\n", fi->fileName().latin1()));
- }
- }
- ++it;
- }
-}
-
-/**
- * Attempt to load a function and resolve a function.
- * @param pluginFileName - the name of the file in which to attempt to load
- * @param resolveString - function pointer to resolve
- * @return true of loading is successful
- */
-bool TheNSResources::loadNetNode(
- const QString &pluginFileName, const QString &resolveString){
-
- QLibrary *lib = new QLibrary(pluginFileName);
- void * res = lib->resolve(resolveString);
- if( ! res ){
- delete lib;
- return 0;
- }
-
- GetNetNodeListFt_t getNetNodeList = (GetNetNodeListFt_t)res;
-
- // Try to get an object.
- QList<ANetNode> PNN;
-
- getNetNodeList( PNN );
- if( PNN.isEmpty() ) {
- delete lib;
- return 0;
- }
-
- ANetNode * NNP;
- for( QListIterator<ANetNode> it(PNN);
- it.current();
- ++it ) {
- NetNode_t * NN;
-
- NNP = it.current();
- NN = new NetNode_t;
- NN->NetNode = NNP;
- NN->TheLibrary = lib;
- NN->NodeCountInLib = PNN.count();
-
- // store mapping
- AllNodeTypes.insert( NN->NetNode->name(), NN );
- }
-
- return 1;
-}
-
-#else
-
void TheNSResources::findAvailableNetNodes( void ){
Plugins = new OPluginLoader( "networksettings2" );
@@ -293,6 +152,7 @@ void TheNSResources::findAvailableNetNodes( void ){
// Get All Plugins
OPluginLoader::List allplugins = Plugins->filtered();
+ QString lang = ::getenv("LANG");
for( OPluginLoader::List::Iterator it = allplugins.begin();
it != allplugins.end();
@@ -304,7 +164,7 @@ void TheNSResources::findAvailableNetNodes( void ){
if( ! interface ) {
Log(( "Plugin %s from %s does not support proper interface\n",
- it->name().latin1(), it->path().latin1() ));
+ (*it).name().latin1(), (*it).path().latin1() ));
continue;
}
@@ -315,7 +175,7 @@ void TheNSResources::findAvailableNetNodes( void ){
if( PNN.isEmpty() ) {
Log(( "Plugin %s from %s does offer any nodes\n",
- it->name().latin1(), it->path().latin1() ));
+ (*it).name().latin1(), (*it).path().latin1() ));
delete interface;
continue;
}
@@ -324,14 +184,14 @@ void TheNSResources::findAvailableNetNodes( void ){
for( QListIterator<ANetNode> it(PNN);
it.current();
++it ) {
- AllNodeTypes.insert( it->current()->name(), it->current() );
+ AllNodeTypes.insert( it.current()->name(), it.current() );
}
}
// load the translation
QTranslator *trans = new QTranslator(qApp);
QString fn = QPEApplication::qpeDir()+
- "/i18n/"+lang+"/"+ it->name() + ".qm";
+ "/i18n/"+lang+"/"+ (*it).name() + ".qm";
if( trans->load( fn ) )
qApp->installTranslator( trans );
@@ -341,8 +201,6 @@ void TheNSResources::findAvailableNetNodes( void ){
}
-#endif
-
// used to find unique connection number
int TheNSResources::assignConnectionNumber( void ) {
bool found = 1;
@@ -387,9 +245,14 @@ const QString & TheNSResources::netNode2Description( const char * s ) {
return NodeTypeDescriptionMap[s];
}
-void TheNSResources::addConnection( NodeCollection * NC ) {
+void TheNSResources::addConnection( NodeCollection * NC, bool Dangling ) {
ANetNodeInstance * NNI;
+ if( Dangling ) {
+ DanglingConnectionsMap.insert( NC->name(), NC );
+ } else {
ConnectionsMap.insert( NC->name(), NC );
+ }
+
// add (new) nodes to NodeList
for( QListIterator<ANetNodeInstance> it(*NC);
it.current();
@@ -412,9 +275,15 @@ void TheNSResources::removeConnection( const QString & N ) {
for( NNI = NC->first(); NNI != 0; NNI = NC->next() ) {
removeNodeInstance( NNI->name() );
}
+ if( ConnectionsMap.find( N ) ) {
ConnectionsMap.remove( N );
+ } else {
+ DanglingConnectionsMap.remove( N );
+ }
+
}
+// dangling connections are filtered out
NodeCollection * TheNSResources::findConnection( const QString & S ) {
return ConnectionsMap[ S ];
}
diff --git a/noncore/settings/networksettings2/networksettings2/resources.h b/noncore/settings/networksettings2/networksettings2/resources.h
index 421a433..b27cda1 100644
--- a/noncore/settings/networksettings2/networksettings2/resources.h
+++ b/noncore/settings/networksettings2/networksettings2/resources.h
@@ -38,21 +38,7 @@ public :
QArray<char *> EnvList;
};
-#ifdef MYPLUGIN
-
-typedef struct NetNode_S {
- ANetNode * NetNode;
- QLibrary * TheLibrary;
- long NodeCountInLib;
-} NetNode_t;
-typedef QDict<NetNode_t> Name2NetNode_t;
-
-#else
-
typedef QDict<ANetNode> Name2NetNode_t;
-
-#endif
-
typedef QDict<ANetNodeInstance > Name2Instance_t;
typedef QDict<NodeCollection> Name2Connection_t;
typedef QDict<SystemFile> Name2SystemFile_t;
@@ -77,16 +63,9 @@ public :
{ return AllNodeTypes; }
bool netNodeExists( const QString & X )
{ return AllNodeTypes.find(X)!=0; }
-#ifdef MYPLUGIN
- ANetNode * findNetNode( const QString & N )
- { NetNode_t * NNT = AllNodeTypes.find(N);
- return (NNT) ? NNT->NetNode : 0;
- }
-#else
ANetNode * findNetNode( const QString & N )
{ return AllNodeTypes.find(N);
}
-#endif
// define new plugin (=node)
void addNodeType( const QString & ID,
const QString & LongName,
@@ -99,21 +78,15 @@ public :
bool KDI );
ANetNodeInstance * createNodeInstance( const QString & S )
- { ANetNodeInstance * NNI = 0;
- printf( "Find node type %s\n", S.latin1() );
-#ifdef MYPLUGIN
- NetNode_t * NNT = AllNodeTypes[S];
- if( ! NNT ) {
- return 0;
- }
- NNI = NNT->NetNode->createInstance();
-#else
- ANetNode * NNT = AllNodeTypes[S];
- if( ! NNT ) {
+ { ANetNode * NN = findNetNode( S );
+
+ Log(( "Find node type %s : %p\n", S.latin1(), NN ));
+
+ if( NN == 0 )
+ // type of this instance not found
return 0;
- }
- NNI = NNT->createInstance();
-#endif
+
+ ANetNodeInstance * NNI = NN->createInstance();
NNI->initialize();
return NNI;
}
@@ -130,12 +103,14 @@ public :
const QString & netNode2Name( const char * Type );
const QString & netNode2Description( const char * Type );
- void addConnection( NodeCollection * NC );
+ void addConnection( NodeCollection * NC, bool Dangling );
void removeConnection( const QString & N );
NodeCollection * findConnection( const QString & N );
NodeCollection * getConnection( int nr );
Name2Connection_t & connections( void )
{ return ConnectionsMap; }
+ Name2Connection_t & danglingConnections( void )
+ { return ConnectionsMap; }
inline bool userKnown( void )
{ return CurrentUser.known(); }
@@ -147,18 +122,15 @@ private :
void detectCurrentUser( void );
QString tr( const char * path );
-#ifdef MYPLUGIN
- void findAvailableNetNodes( const QString &path );
- bool loadNetNode(
- const QString &pluginFileName,
- const QString &resolveString = "create_plugin");
-#else
void findAvailableNetNodes( void );
-#endif
QMap< QString, QString> NodeTypeNameMap;
QMap< QString, QString> NodeTypeDescriptionMap;
+ // list of connections that are valid
Name2Connection_t ConnectionsMap;
+ // list of connection configurations that are not valid
+ // e.g. because plugins are missing
+ Name2Connection_t DanglingConnectionsMap;
System * TheSystem;
Name2SystemFile_t SystemFiles;
@@ -170,10 +142,8 @@ private :
CurrentQPEUser CurrentUser;
-#ifndef MYPLUGIN
Opie::Core::OPluginLoader * Plugins;
Opie::Core::OPluginManager * PluginManager;
-#endif
};
diff --git a/noncore/settings/networksettings2/nsdata.cpp b/noncore/settings/networksettings2/nsdata.cpp
index 698a941..d76353a 100644
--- a/noncore/settings/networksettings2/nsdata.cpp
+++ b/noncore/settings/networksettings2/nsdata.cpp
@@ -116,8 +116,9 @@ void NetworkSettingsData::loadSettings( void ) {
if( S == "connection" ) {
// load connections -> collections of nodes
- NodeCollection * NC = new NodeCollection( TS );
- NSResources->addConnection( NC );
+ bool Dangling;
+ NodeCollection * NC = new NodeCollection( TS, Dangling );
+ NSResources->addConnection( NC, Dangling );
} else {
ANetNode * NN = 0;
ANetNodeInstance* NNI = 0;
@@ -133,12 +134,20 @@ void NetworkSettingsData::loadSettings( void ) {
if( NN == 0 && NNI == 0 ) {
LeftOvers.append( Line );
+ do {
+ Line = TS.readLine();
+ // store even delimiter
+ LeftOvers.append( Line );
+ } while ( ! Line.isEmpty() );
+
+ //next section
+ continue;
}
+ // read entries of this section
do {
S = Line = TS.readLine();
- if( NN || NNI ) {
if( S.isEmpty() ) {
// empty line
break;
@@ -165,14 +174,6 @@ void NetworkSettingsData::loadSettings( void ) {
// set the attribute
NNI->setAttribute( Attr, Value );
}
- } else {
- LeftOvers.append( Line );
- // add empty line too as delimiter
- if( S.isEmpty() ) {
- // empty line
- break;
- }
- }
} while( 1 );
if( NNI ) {
@@ -181,6 +182,7 @@ void NetworkSettingsData::loadSettings( void ) {
NNI->setNew( FALSE );
NSResources->addNodeInstance( NNI );
}
+
if( NN ) {
Log( ( "Node %s : %p\n", NN->name(), NN ) );
}
@@ -211,34 +213,29 @@ QString NetworkSettingsData::saveSettings( void ) {
QTextStream TS( &F );
- // save leftovers
- for ( QStringList::Iterator it = LeftOvers.begin();
- it != LeftOvers.end(); ++it ) {
- TS << (*it) << endl;
- }
-
// save global configs
- for( QDictIterator<NetNode_t> it( NSResources->netNodes() );
+ for( QDictIterator<ANetNode> it( NSResources->netNodes() );
it.current();
++it ) {
TS << "[nodetype "
- << quote( QString( it.current()->NetNode->name() ) )
+ << quote( QString( it.current()->name() ) )
<< "]"
<< endl;
- it.current()->NetNode->saveAttributes( TS );
+ it.current()->saveAttributes( TS );
TS << endl;
}
- { Name2Connection_t & M = NSResources->connections();
- ANetNodeInstance * NNI;
+ // save leftovers
+ for ( QStringList::Iterator it = LeftOvers.begin();
+ it != LeftOvers.end(); ++it ) {
+ TS << (*it) << endl;
+ }
- // for all connections
- for( QDictIterator<NodeCollection> it(M);
- it.current();
- ++it ) {
- // all nodes in those connections
- for( QListIterator<ANetNodeInstance> nit(*(it.current()));
+ // save all netnode instances
+ { ANetNodeInstance * NNI;
+ for( QDictIterator<ANetNodeInstance> nit(
+ NSResources->netNodeInstances());
nit.current();
++nit ) {
// header
@@ -250,7 +247,27 @@ QString NetworkSettingsData::saveSettings( void ) {
NNI->saveAttributes( TS );
TS << endl;
}
+ }
+ // good connections
+ { Name2Connection_t & M = NSResources->connections();
+
+ // for all connections
+ for( QDictIterator<NodeCollection> it(M);
+ it.current();
+ ++it ) {
+ TS << "[connection]" << endl;
+ it.current()->save(TS);
+ }
+ }
+
+ // save dangling connections
+ { Name2Connection_t & M = NSResources->danglingConnections();
+
+ // for all connections
+ for( QDictIterator<NodeCollection> it(M);
+ it.current();
+ ++it ) {
TS << "[connection]" << endl;
it.current()->save(TS);
}
@@ -289,14 +306,15 @@ QString NetworkSettingsData::generateSettings( void ) {
// regenerate system files
Log( ( "Generating settings from %s\n", CfgFile.latin1() ));
- for( QDictIterator<NetNode_t> nnit( NSResources->netNodes() );
+ for( QDictIterator<ANetNode> nnit( NSResources->netNodes() );
nnit.current();
++nnit ) {
- { QStringList SL;
bool FirstItem = 1;
bool Generated = 0;
- CurDevNN = nnit.current()->NetNode;
+ CurDevNN = nnit.current();
+
+ { QStringList SL;
SL = CurDevNN->properFiles();
for ( QStringList::Iterator it = SL.begin();
@@ -395,10 +413,10 @@ QString NetworkSettingsData::generateSettings( void ) {
SF = sfit.current();
// reset all
- for( QDictIterator<NetNode_t> nnit( NSResources->netNodes() );
+ for( QDictIterator<ANetNode> nnit( NSResources->netNodes() );
nnit.current();
++nnit ) {
- nnit.current()->NetNode->setDone(0);
+ nnit.current()->setDone(0);
}
for( QDictIterator<ANetNodeInstance> nniit(
@@ -420,11 +438,11 @@ QString NetworkSettingsData::generateSettings( void ) {
// are there netnodes that have instances and need
// to write data in this system file ?
- for( QDictIterator<NetNode_t> nnit( NSResources->netNodes() );
+ for( QDictIterator<ANetNode> nnit( NSResources->netNodes() );
! needToGenerate && nnit.current();
++nnit ) {
- NN = nnit.current()->NetNode;
+ NN = nnit.current();
if( NN->hasDataForFile( *SF ) ) {
// netnode can have data
diff --git a/noncore/settings/networksettings2/ppp/ppp_NN.cpp b/noncore/settings/networksettings2/ppp/ppp_NN.cpp
index bd13ab9..8c15e9c 100644
--- a/noncore/settings/networksettings2/ppp/ppp_NN.cpp
+++ b/noncore/settings/networksettings2/ppp/ppp_NN.cpp
@@ -4,12 +4,8 @@
#include "ppp_NN.h"
#include "ppp_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
QStringList * PPPNetNode::ProperFiles = 0;
static const char * PPPNeeds[] =
@@ -84,17 +80,4 @@ void PPPNetNode::setSpecificAttribute( QString & , QString & ) {
void PPPNetNode::saveSpecificAttribute( QTextStream & ) {
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new PPPNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<PPPNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<PPPNetNode> )
diff --git a/noncore/settings/networksettings2/profile/profile_NN.cpp b/noncore/settings/networksettings2/profile/profile_NN.cpp
index 6028ea5..1e6912e 100644
--- a/noncore/settings/networksettings2/profile/profile_NN.cpp
+++ b/noncore/settings/networksettings2/profile/profile_NN.cpp
@@ -2,12 +2,8 @@
#include "profile_NN.h"
#include "profile_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * ProfileNeeds[] =
{ "connection",
0
@@ -59,17 +55,4 @@ void ProfileNetNode::setSpecificAttribute( QString & , QString & ) {
void ProfileNetNode::saveSpecificAttribute( QTextStream & ) {
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new ProfileNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<ProfileNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<ProfileNetNode> )
diff --git a/noncore/settings/networksettings2/usb/usb_NN.cpp b/noncore/settings/networksettings2/usb/usb_NN.cpp
index 9c07b82..6d90ae0 100644
--- a/noncore/settings/networksettings2/usb/usb_NN.cpp
+++ b/noncore/settings/networksettings2/usb/usb_NN.cpp
@@ -2,12 +2,8 @@
#include "usb_NN.h"
#include "usb_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * USBNeeds[] =
{ 0
};
@@ -61,17 +57,4 @@ void USBNetNode::setSpecificAttribute( QString & , QString & ) {
void USBNetNode::saveSpecificAttribute( QTextStream & ) {
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new USBNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<USBNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<USBNetNode> )
diff --git a/noncore/settings/networksettings2/usb/usbrun.cpp b/noncore/settings/networksettings2/usb/usbrun.cpp
index 0a46642..eb439c1 100644
--- a/noncore/settings/networksettings2/usb/usbrun.cpp
+++ b/noncore/settings/networksettings2/usb/usbrun.cpp
@@ -5,9 +5,11 @@
#include "usbrun.h"
State_t USBRun::detectState( void ) {
+
// unavailable : no card found
// available : card found and assigned to us or free
// up : card found and assigned to us and up
+
NodeCollection * NC = nodeCollection();
QString S = QString( "/tmp/profile-%1.up" ).arg(NC->number());
System & Sys = NSResources->system();
@@ -64,7 +66,9 @@ State_t USBRun::detectState( void ) {
! Run->IsUp
) {
// proper type, and Not UP -> free
- return Off;
+ // usb cables are currently always available when requested
+ // until we can detect if we are plugged in
+ return Available;
}
}
@@ -75,15 +79,6 @@ QString USBRun::setMyState( NodeCollection * NC, Action_t A, bool ) {
// nothing needs to be done to 'activate' or 'deactivate'
// a cable
-
- // perhaps (later) we can figure out if the device is IN the
- // cradle
- if( A == Activate ) {
- NC->setCurrentState( Available );
- } else if ( A == Deactivate ) {
- NC->setCurrentState( Unavailable );
- }
-
return QString();
}
diff --git a/noncore/settings/networksettings2/vpn/vpn_NN.cpp b/noncore/settings/networksettings2/vpn/vpn_NN.cpp
index 6dd5332..96e9df2 100644
--- a/noncore/settings/networksettings2/vpn/vpn_NN.cpp
+++ b/noncore/settings/networksettings2/vpn/vpn_NN.cpp
@@ -1,12 +1,8 @@
#include "vpn_NN.h"
#include "vpn_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * VPNNeeds[] =
{ 0
};
@@ -53,17 +49,4 @@ void VPNNetNode::setSpecificAttribute( QString & , QString & ) {
void VPNNetNode::saveSpecificAttribute( QTextStream & ) {
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new VPNNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<VPNNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<VPNNetNode> )
diff --git a/noncore/settings/networksettings2/wlan/wlan_NN.cpp b/noncore/settings/networksettings2/wlan/wlan_NN.cpp
index c56da06..f7745be 100644
--- a/noncore/settings/networksettings2/wlan/wlan_NN.cpp
+++ b/noncore/settings/networksettings2/wlan/wlan_NN.cpp
@@ -2,12 +2,8 @@
#include "wlan_NN.h"
#include "wlan_NNI.h"
-#ifndef MYPLUGIN
-
#include "netnodeinterface.h"
-#endif
-
static const char * WLanNeeds[] =
{ 0
};
@@ -69,17 +65,4 @@ void WLanNetNode::saveSpecificAttribute( QTextStream & TS ) {
<< endl;
}
-#ifdef MYPLUGIN
-
-extern "C" {
-void create_plugin( QList<ANetNode> & PNN ) {
- PNN.append( new WLanNetNode() );
-}
-
-#else
-
-OPIE_NS2_PLUGIN( NetNodeInterface<WLanNetNode> )
-
-#endif
-
-}
+OPIE_NS2_PLUGIN( NetNodeInterface_T<WLanNetNode> )