45 files changed, 576 insertions, 77 deletions
diff --git a/noncore/settings/networksettings2/bluetooth/bluetooth.pro b/noncore/settings/networksettings2/bluetooth/bluetooth.pro index 2e3b5bb..053a6cb 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetooth.pro +++ b/noncore/settings/networksettings2/bluetooth/bluetooth.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = bluetoothBNEP_NN.h \ bluetoothBNEP_NNI.h \ bluetoothRFCOMM_NN.h \ diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothBNEP_NN.cpp b/noncore/settings/networksettings2/bluetooth/bluetoothBNEP_NN.cpp index ee3e92b..5e4d951 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothBNEP_NN.cpp +++ b/noncore/settings/networksettings2/bluetooth/bluetoothBNEP_NN.cpp @@ -1,8 +1,14 @@ #include "bluetoothBNEP_NN.h" #include "bluetoothBNEP_NNI.h" #include "bluetoothRFCOMM_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + // // // BLUETOOTH PAN/NAP node // @@ -68,11 +74,21 @@ void BluetoothBNEPNetNode::saveSpecificAttribute( QTextStream & TS) { << InstanceCount << 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 + } diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.cpp b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.cpp index 9d4ae97..5c937a1 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.cpp +++ b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.cpp @@ -3,8 +3,12 @@ #include <qtextstream.h> #include <resources.h> #include "bluetoothBNEPrun.h" +using Opietooth2::OTGateway; +using Opietooth2::OTPANConnection; +using Opietooth2::PANConnectionVector; + BluetoothBNEPRun::BluetoothBNEPRun( ANetNodeInstance * NNI, BluetoothBNEPData & D ) : RuntimeInfo( NNI ), Data( D), diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h index a05a7a2..8551a2e 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h +++ b/noncore/settings/networksettings2/bluetooth/bluetoothBNEPrun.h @@ -1,9 +1,8 @@ #include <netnode.h> #include "bluetoothBNEPdata.h" #include <OTGateway.h> -using namespace Opietooth2; class BluetoothBNEPRun : public RuntimeInfo { public : @@ -29,7 +28,7 @@ private : bool hasFreePANConnection( bool Grab = 0 ); BluetoothBNEPData & Data; - OTGateway * OT; - QRegExp Pat; + Opietooth2::OTGateway * OT; + QRegExp Pat; }; diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMedit.h b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMedit.h index 9ad8f2a..fe474fc 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMedit.h +++ b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMedit.h @@ -1,9 +1,8 @@ #include "bluetoothRFCOMMdata.h" #include "bluetoothRFCOMMGUI.h" #include <Opietooth.h> -using namespace Opietooth2; class BluetoothRFCOMMEdit : public BluetoothRFCOMMGUI { public : @@ -14,10 +13,10 @@ public : QString acceptable( void ); void showData( BluetoothRFCOMMData & Data ); bool commit( BluetoothRFCOMMData & Data ); - bool Modified; - OTGateway * OT; + bool Modified; + Opietooth2::OTGateway * OT; public slots : void SLOT_AddServer( void ); diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp index 1e91ed1..ef6878a 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp +++ b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp @@ -3,9 +3,11 @@ #include <OTDevice.h> #include <OTGateway.h> #include "bluetoothRFCOMMrun.h" -using namespace Opietooth2; +using Opietooth2::OTGateway; +using Opietooth2::OTDevice; +using Opietooth2::OTDeviceAddress; BluetoothRFCOMMRun::~BluetoothRFCOMMRun( void ) { if( OT ) { OTGateway::releaseOTGateway(); diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h index 24e3dae..5a31a94 100644 --- a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h +++ b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.h @@ -1,9 +1,8 @@ #include <netnode.h> #include "bluetoothRFCOMMdata.h" #include <OTGateway.h> -using namespace Opietooth2; class BluetoothRFCOMMRun : public RuntimeInfo { public : @@ -26,8 +25,8 @@ protected : private : int deviceNrOfConnection( void ); RFCOMMChannel * getChannel( void ); - BluetoothRFCOMMData * Data; + BluetoothRFCOMMData * Data; Opietooth2::OTGateway * OT; - int DeviceNr; // cached from detection + int DeviceNr; // cached from detection }; diff --git a/noncore/settings/networksettings2/cable/cable.pro b/noncore/settings/networksettings2/cable/cable.pro index 8a046b7..660f95e 100644 --- a/noncore/settings/networksettings2/cable/cable.pro +++ b/noncore/settings/networksettings2/cable/cable.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = cable_NN.h \ cable_NNI.h \ cableedit.h diff --git a/noncore/settings/networksettings2/cable/cable_NN.cpp b/noncore/settings/networksettings2/cable/cable_NN.cpp index dc4205c..20299e4 100644 --- a/noncore/settings/networksettings2/cable/cable_NN.cpp +++ b/noncore/settings/networksettings2/cable/cable_NN.cpp @@ -1,7 +1,13 @@ #include "cable_NN.h" #include "cable_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * CableNeeds[] = { 0 }; @@ -46,9 +52,18 @@ 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 + } diff --git a/noncore/settings/networksettings2/gprs/GPRS.pro b/noncore/settings/networksettings2/gprs/GPRS.pro index 7818415..480c872 100644 --- a/noncore/settings/networksettings2/gprs/GPRS.pro +++ b/noncore/settings/networksettings2/gprs/GPRS.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = GPRS_NN.h \ GPRS_NNI.h \ GPRSedit.h diff --git a/noncore/settings/networksettings2/gprs/GPRS_NN.cpp b/noncore/settings/networksettings2/gprs/GPRS_NN.cpp index 5393324..4415739 100644 --- a/noncore/settings/networksettings2/gprs/GPRS_NN.cpp +++ b/noncore/settings/networksettings2/gprs/GPRS_NN.cpp @@ -3,8 +3,14 @@ #include <netnode.h> #include "GPRS_NN.h" #include "GPRS_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * GPRSNeeds[] = { "GPRS", 0 }; @@ -72,9 +78,18 @@ QStringList GPRSNetNode::properFiles( void ) { SL << "extra"; return SL; } +#ifdef MYPLUGIN + extern "C" { void create_plugin( QList<ANetNode> & PNN ) { PNN.append( new GPRSNetNode() ); } + +#else + +OPIE_NS2_PLUGIN( NetNodeInterface<GPRSNetNode> ) + +#endif + } diff --git a/noncore/settings/networksettings2/irda/irda.pro b/noncore/settings/networksettings2/irda/irda.pro index 4613abe..87f7a62 100644 --- a/noncore/settings/networksettings2/irda/irda.pro +++ b/noncore/settings/networksettings2/irda/irda.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = irda_NN.h \ irda_NNI.h \ irdaedit.h diff --git a/noncore/settings/networksettings2/irda/irda_NN.cpp b/noncore/settings/networksettings2/irda/irda_NN.cpp index 485cad3..6858157 100644 --- a/noncore/settings/networksettings2/irda/irda_NN.cpp +++ b/noncore/settings/networksettings2/irda/irda_NN.cpp @@ -1,7 +1,13 @@ #include "irda_NN.h" #include "irda_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * IRDANeeds[] = { 0 }; @@ -46,9 +52,18 @@ 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 + } diff --git a/noncore/settings/networksettings2/lancard/lancard.pro b/noncore/settings/networksettings2/lancard/lancard.pro index 6f04e01..05f0fa0 100644 --- a/noncore/settings/networksettings2/lancard/lancard.pro +++ b/noncore/settings/networksettings2/lancard/lancard.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = lancard_NN.h \ lancard_NNI.h \ lancardedit.h diff --git a/noncore/settings/networksettings2/lancard/lancard_NN.cpp b/noncore/settings/networksettings2/lancard/lancard_NN.cpp index e36f757..fce3d29 100644 --- a/noncore/settings/networksettings2/lancard/lancard_NN.cpp +++ b/noncore/settings/networksettings2/lancard/lancard_NN.cpp @@ -1,7 +1,13 @@ #include "lancard_NN.h" #include "lancard_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * LanCardNeeds[] = { 0 }; @@ -69,9 +75,18 @@ void LanCardNetNode::saveSpecificAttribute( QTextStream & TS) { << endl; } } +#ifdef MYPLUGIN + extern "C" { void create_plugin( QList<ANetNode> & PNN ) { PNN.append( new LanCardNetNode() ); } + +#else + +OPIE_NS2_PLUGIN( NetNodeInterface<LanCardNetNode> ) + +#endif + } diff --git a/noncore/settings/networksettings2/modem/modem.pro b/noncore/settings/networksettings2/modem/modem.pro index 25e29d4..4511e07 100644 --- a/noncore/settings/networksettings2/modem/modem.pro +++ b/noncore/settings/networksettings2/modem/modem.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = modem_NN.h \ modem_NNI.h \ modemedit.h diff --git a/noncore/settings/networksettings2/modem/modem_NN.cpp b/noncore/settings/networksettings2/modem/modem_NN.cpp index 06f417c..c7f6e78 100644 --- a/noncore/settings/networksettings2/modem/modem_NN.cpp +++ b/noncore/settings/networksettings2/modem/modem_NN.cpp @@ -1,7 +1,13 @@ #include "modem_NN.h" #include "modem_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * ModemNeeds[] = { "line", 0 }; @@ -47,9 +53,18 @@ 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 + } diff --git a/noncore/settings/networksettings2/network/network.pro b/noncore/settings/networksettings2/network/network.pro index 05df007..5ca78b9 100644 --- a/noncore/settings/networksettings2/network/network.pro +++ b/noncore/settings/networksettings2/network/network.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = network_NN.h \ network_NNI.h \ networkedit.h diff --git a/noncore/settings/networksettings2/network/network_NN.cpp b/noncore/settings/networksettings2/network/network_NN.cpp index 23b3d44..82d0c29 100644 --- a/noncore/settings/networksettings2/network/network_NN.cpp +++ b/noncore/settings/networksettings2/network/network_NN.cpp @@ -3,8 +3,14 @@ #include <netnode.h> #include "network_NN.h" #include "network_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * NetworkNeeds[] = { "device", 0 }; @@ -89,9 +95,18 @@ 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 + } diff --git a/noncore/settings/networksettings2/networksettings2/netnodeinterface.h b/noncore/settings/networksettings2/networksettings2/netnodeinterface.h new file mode 100644 index 0000000..34f3bb5 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/netnodeinterface.h @@ -0,0 +1,139 @@ +/* + This file is part of the Opie Project + + Copyright (C) 2005 Holger Hans Peter Freyther <freyther@handhelds.org> + =. + .=l. + .>+-= + _;:, .> :=|. This program is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU Library General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This program is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU +..}^=.= = ; Library General Public License for more +++= -. .` .: details. + : = ...= . :.=- + -. .:....=;==+<; You should have received a copy of the GNU + -_. . . )=. = Library General Public License along with + -- :-=` this library; see the file COPYING.LIB. + If not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#ifndef ANET_NODE_INTERFACE_H +#define ANET_NODE_INTERFACE_H + +#include <opie2/oapplicationfactory.h> +#include <qpe/qcom.h> + +// {A215A785-FB73-4F74-84B0-053BCC77DB87} +#ifndef IID_NetworkSettings2 + +#define IID_NetworkSettings2 QUuid( 0xa215a785, 0xfb73, 0x4f74, 0x84, 0xb0, 0x05, 0x3b, 0xcc, 0x77, 0xdb, 0x87) + +#endif + + + +/** + * Multiple Types + */ +template <class Node > +struct NS2PrivateFactory { + + inline static void createPlugins( QList<ANetNode> & PNN) { + PNN.append( new Node()); + } + +}; + +/* + * Stop recursion here + */ +template <> +struct NS2PrivateFactory<Opie::Core::NullType> { + + inline static void createPlugins( QList<ANetNode> &) { + + } + +}; + +template <class Node, class Tail> +struct NS2PrivateFactory<Opie::Core::Typelist<Node, Tail> > { + + inline static void createPlugins( QList<ANetNode> & PNN ) { + NS2PrivateFactory<Node>::createPlugins(PNN); + NS2PrivateFactory<Tail>::createPlugins(PNN); + } + +}; + +template<class Node> +struct NetNodeInterface : public QUnknownInterface { + + QRESULT queryInterface(const QUuid& uuid, QUnknownInterface **iface) { + *iface = 0; + + if( uuid == IID_QUnknown ) + *iface = this; + else if( uuid == IID_NetworkSettings2 ) + *iface = this; + else + return QS_FALSE; + + (*iface)->addRef(); + + return QS_OK; + + } + + void create_plugin( QList<ANetNode> & PNN ) { + + PNN.append( new Node()); + + } + + Q_REFCOUNT +}; + +template<class Node, class Tail> +struct NetNodeInterface<Opie::Core::Typelist<Node, Tail> > + : public QUnknownInterface { + + QRESULT queryInterface( const QUuid& uuid, + QUnknownInterface **iface) { + + *iface = 0; + + if( uuid == IID_QUnknown ) *iface = this; + else if( uuid == IID_NetworkSettings2 ) *iface = this; + else return QS_FALSE; + + (*iface)->addRef(); + return QS_OK; + + } + + void create_plugin( QList<ANetNode> & PNN ) { + NS2PrivateFactory<Opie::Core::Typelist<Node,Tail> >::createPlugin( PNN ); + } + + Q_REFCOUNT + +}; + +#define OPIE_NS2_PLUGIN( factory ) \ + Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( factory) } + +#endif + diff --git a/noncore/settings/networksettings2/networksettings2/resources.cpp b/noncore/settings/networksettings2/networksettings2/resources.cpp index 50fb15a..79d41ea 100644 --- a/noncore/settings/networksettings2/networksettings2/resources.cpp +++ b/noncore/settings/networksettings2/networksettings2/resources.cpp @@ -3,15 +3,21 @@ #include <fcntl.h> #include <pwd.h> #include <qpixmap.h> #include <qdir.h> +#include <qmessagebox.h> + #include <qpe/qlibrary.h> #include <qpe/qpeapplication.h> + #include <opie2/odebug.h> +#include <opie2/opluginloader.h> + #include <qtopia/resource.h> #include "netnode.h" #include "resources.h" +#include "netnodeinterface.h" #define PLUGINDIR "plugins/networksettings2" #define ICONDIR "/pics/networksettings2/" @@ -25,8 +31,11 @@ TheNSResources::TheNSResources( void ) : NodeTypeNameMap(), detectCurrentUser(); // load available netnodes + +#ifdef MYPLUGIN + findAvailableNetNodes(QPEApplication::qpeDir() + PLUGINDIR ); // compile provides and needs lists { const char ** NeedsRun; @@ -65,8 +74,54 @@ TheNSResources::TheNSResources( void ) : NodeTypeNameMap(), OuterIt.current()->NetNode->setAlternatives( NNLP ); } } +#else + + Plugins = 0; + findAvailableNetNodes(); + + // compile provides and needs lists + { const char ** NeedsRun; + QDictIterator<ANetNode> 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<ANetNode> InnerIt( AllNodeTypes ); + InnerIt.current(); ++InnerIt ) { + + if( InnerIt.current() == OuterIt.current() ) + // avoid recursive + continue; + + const char ** Provides = InnerIt.current()->provides(); + NeedsRun = OuterIt.current()->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(); + Done = 1; // break from 2 loops + break; + } + } + } + } + OuterIt.current()->setAlternatives( NNLP ); + } + } + +#endif + // define built in Node types to Description map addNodeType( "device", tr( "Network Device" ), tr( "<p>Devices that can handle IP packets</p>" ) ); addNodeType( "line", tr( "Character device" ), @@ -83,9 +138,17 @@ TheNSResources::TheNSResources( void ) : NodeTypeNameMap(), } TheNSResources::~TheNSResources( void ) { + +#ifndef MYPLUGINS + if( Plugins ) { + delete Plugins; + delete PluginManager; + } +#endif delete TheSystem; + } void TheNSResources::addNodeType( const QString & ID, const QString & Name, @@ -115,8 +178,9 @@ 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 @@ -159,29 +223,8 @@ void TheNSResources::findAvailableNetNodes(const QString &path){ ++it; } } -// used to find unique connection number -int TheNSResources::assignConnectionNumber( void ) { - bool found = 1; - for( int trial = 0; ; trial ++ ) { - found = 1; - for( QDictIterator<NodeCollection> it(ConnectionsMap); - it.current(); - ++it ) { - if( it.current()->number() == trial ) { - found = 0; - break; - } - } - - if( found ) { - Log(("Assign profile number %d\n", trial )); - return trial; - } - } -} - /** * 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 @@ -226,8 +269,102 @@ bool TheNSResources::loadNetNode( return 1; } +#else + +void TheNSResources::findAvailableNetNodes( void ){ + + Plugins = new OPluginLoader( "networksettings2" ); + Plugins->setAutoDelete( true ); + + PluginManager = new OPluginManager( Plugins ); + PluginManager->load(); + + if( Plugins->isInSafeMode() ) { + QMessageBox::information( + 0, + tr( "Today Error"), + tr( "<qt>The plugin '%1' caused Today to crash." + " It could be that the plugin is not properly" + " installed.<br>Today tries to continue loading" + " plugins.</qt>" ) + .arg( PluginManager->crashedPlugin().name())); + } + + // Get All Plugins + OPluginLoader::List allplugins = Plugins->filtered(); + + for( OPluginLoader::List::Iterator it = allplugins.begin(); + it != allplugins.end(); + ++it ) { + + // check if this plugin supports the proper interface + NetNodeInterface * interface = + Plugins->load<NetNodeInterface>( *it, IID_NetworkSettings2 ); + + if( ! interface ) { + Log(( "Plugin %s from %s does not support proper interface\n", + it->name().latin1(), it->path().latin1() )); + continue; + } + + // add the nodes in this plugin to the dictionary + { QList<ANetNode> PNN; + + interface->create_plugin( PNN ); + + if( PNN.isEmpty() ) { + Log(( "Plugin %s from %s does offer any nodes\n", + it->name().latin1(), it->path().latin1() )); + delete interface; + continue; + } + + // merge this node with global node + for( QListIterator<ANetNode> it(PNN); + it.current(); + ++it ) { + AllNodeTypes.insert( it->current()->name(), it->current() ); + } + } + + // load the translation + QTranslator *trans = new QTranslator(qApp); + QString fn = QPEApplication::qpeDir()+ + "/i18n/"+lang+"/"+ it->name() + ".qm"; + + if( trans->load( fn ) ) + qApp->installTranslator( trans ); + else + delete trans; + } + +} + +#endif + +// used to find unique connection number +int TheNSResources::assignConnectionNumber( void ) { + bool found = 1; + for( int trial = 0; ; trial ++ ) { + found = 1; + for( QDictIterator<NodeCollection> it(ConnectionsMap); + it.current(); + ++it ) { + if( it.current()->number() == trial ) { + found = 0; + break; + } + } + + if( found ) { + Log(("Assign profile number %d\n", trial )); + return trial; + } + } +} + QPixmap TheNSResources::getPixmap( const QString & QS ) { QPixmap P; QString S("networksettings2/"); S += QS; diff --git a/noncore/settings/networksettings2/networksettings2/resources.h b/noncore/settings/networksettings2/networksettings2/resources.h index 5d90286..421a433 100644 --- a/noncore/settings/networksettings2/networksettings2/resources.h +++ b/noncore/settings/networksettings2/networksettings2/resources.h @@ -13,15 +13,16 @@ class QLibrary; class QPixmap; class ANetNode; class ANetNodeInstance; -typedef void (*GetNetNodeListFt_t)(QList<ANetNode>& PNN ); +namespace Opie { + namespace Core { + class OPluginLoader; + class OPluginManager; + } +} -typedef struct NetNode_S { - ANetNode * NetNode; - QLibrary * TheLibrary; - long NodeCountInLib; -} NetNode_t; +typedef void (*GetNetNodeListFt_t)(QList<ANetNode>& PNN ); class CurrentQPEUser { public : @@ -36,9 +37,23 @@ public : int Gid; 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; @@ -61,13 +76,18 @@ public : Name2NetNode_t & netNodes( void ) { 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, const QString & Description ); @@ -80,13 +100,21 @@ public : 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 ) { + return 0; + } + NNI = NNT->createInstance(); +#endif NNI->initialize(); return NNI; } @@ -117,26 +145,37 @@ public : 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; - Name2Connection_t ConnectionsMap; - System * TheSystem; - Name2SystemFile_t SystemFiles; + Name2Connection_t ConnectionsMap; + System * TheSystem; + Name2SystemFile_t SystemFiles; // all node type classes - Name2NetNode_t AllNodeTypes; + Name2NetNode_t AllNodeTypes; // all nodes - Name2Instance_t AllNodes; + Name2Instance_t AllNodes; + + CurrentQPEUser CurrentUser; + +#ifndef MYPLUGIN + Opie::Core::OPluginLoader * Plugins; + Opie::Core::OPluginManager * PluginManager; +#endif - CurrentQPEUser CurrentUser; }; extern TheNSResources * _NSResources; #define NSResources _NSResources diff --git a/noncore/settings/networksettings2/opietooth2/OTDevice.h b/noncore/settings/networksettings2/opietooth2/OTDevice.h index cf1c4b6..09de7ee 100644 --- a/noncore/settings/networksettings2/opietooth2/OTDevice.h +++ b/noncore/settings/networksettings2/opietooth2/OTDevice.h @@ -15,10 +15,10 @@ class QTimerEvent; namespace Opie { namespace Core { class OProcess; - }; -}; + } +} namespace Opietooth2 { /** @@ -110,7 +110,7 @@ namespace Opietooth2 { // backpointer OTGateway * OT; bool NeedsAttach; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTDeviceAddress.h b/noncore/settings/networksettings2/opietooth2/OTDeviceAddress.h index 50f28fc..8395f37 100644 --- a/noncore/settings/networksettings2/opietooth2/OTDeviceAddress.h +++ b/noncore/settings/networksettings2/opietooth2/OTDeviceAddress.h @@ -102,7 +102,7 @@ protected: bool IsValid; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTDriver.h b/noncore/settings/networksettings2/opietooth2/OTDriver.h index f249cf7..b54ffdf 100644 --- a/noncore/settings/networksettings2/opietooth2/OTDriver.h +++ b/noncore/settings/networksettings2/opietooth2/OTDriver.h @@ -227,6 +227,6 @@ private: // backpointer to opietooth system OTGateway * OT; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTGateway.h b/noncore/settings/networksettings2/opietooth2/OTGateway.h index a47cefb..d97ef35 100644 --- a/noncore/settings/networksettings2/opietooth2/OTGateway.h +++ b/noncore/settings/networksettings2/opietooth2/OTGateway.h @@ -194,7 +194,7 @@ private : bool AllPeersModified; PeerVector AllPeers; LinkKeyArray AllKeys; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTHCISocket.h b/noncore/settings/networksettings2/opietooth2/OTHCISocket.h index d508078..a004989 100644 --- a/noncore/settings/networksettings2/opietooth2/OTHCISocket.h +++ b/noncore/settings/networksettings2/opietooth2/OTHCISocket.h @@ -110,7 +110,7 @@ private slots: void slotConnectionClosed(); }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTIcons.h b/noncore/settings/networksettings2/opietooth2/OTIcons.h index 966ed24..ee10831 100644 --- a/noncore/settings/networksettings2/opietooth2/OTIcons.h +++ b/noncore/settings/networksettings2/opietooth2/OTIcons.h @@ -48,7 +48,7 @@ private: UUIDVector Modems; UUIDVector Networks; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTInquiry.h b/noncore/settings/networksettings2/opietooth2/OTInquiry.h index 2682499..f7bdeec 100644 --- a/noncore/settings/networksettings2/opietooth2/OTInquiry.h +++ b/noncore/settings/networksettings2/opietooth2/OTInquiry.h @@ -173,6 +173,6 @@ private slots: void slotHCIEvent(unsigned char eventCode, QByteArray buf); }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTPeer.h b/noncore/settings/networksettings2/opietooth2/OTPeer.h index 9cd0dc7..c09af15 100644 --- a/noncore/settings/networksettings2/opietooth2/OTPeer.h +++ b/noncore/settings/networksettings2/opietooth2/OTPeer.h @@ -129,7 +129,7 @@ private: int ProbePhase; // see OTDriver long ProbeTimeout; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTSDPAttribute.h b/noncore/settings/networksettings2/opietooth2/OTSDPAttribute.h index 86b5623..e79e33d 100644 --- a/noncore/settings/networksettings2/opietooth2/OTSDPAttribute.h +++ b/noncore/settings/networksettings2/opietooth2/OTSDPAttribute.h @@ -134,7 +134,7 @@ private: } Value; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTSDPService.h b/noncore/settings/networksettings2/opietooth2/OTSDPService.h index 21d7344..4831df0 100644 --- a/noncore/settings/networksettings2/opietooth2/OTSDPService.h +++ b/noncore/settings/networksettings2/opietooth2/OTSDPService.h @@ -69,7 +69,7 @@ private: QArray<AttributeEntry> attributeList; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/OTUUID.h b/noncore/settings/networksettings2/opietooth2/OTUUID.h index 97df114..aebd9b9 100644 --- a/noncore/settings/networksettings2/opietooth2/OTUUID.h +++ b/noncore/settings/networksettings2/opietooth2/OTUUID.h @@ -53,6 +53,6 @@ public : uint64_t hi; uint64_t lo; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/opietooth2/Opietooth.h b/noncore/settings/networksettings2/opietooth2/Opietooth.h index e66787f..f077dd7 100644 --- a/noncore/settings/networksettings2/opietooth2/Opietooth.h +++ b/noncore/settings/networksettings2/opietooth2/Opietooth.h @@ -10,11 +10,11 @@ namespace Opie { namespace Ui { class OLedBox; - }; + } -}; +} #include <OTSniffGUI.h> namespace Opietooth2 { @@ -50,9 +50,9 @@ private : OTGateway * OT; MyProcess * HciDump; }; -}; +} #include <OTPairingGUI.h> namespace Opietooth2 { @@ -79,9 +79,9 @@ private : bool MyIcons; OTIcons * Icons; OTGateway * OT; }; -}; +} #include <OTScanGUI.h> namespace Opietooth2 { @@ -157,9 +157,9 @@ private : OTPeer * SelectedPeer; int SelectedChannel; }; -}; +} #include <OTManageGUI.h> namespace Opietooth2 { @@ -195,9 +195,9 @@ private : OTIcons * Icons; OTGateway * OT; OTInquiry * Scanning; }; -}; +} #include <OTMainGUI.h> namespace Opietooth2 { @@ -233,6 +233,6 @@ private : OTIcons * Icons; OTGateway * OT; QDialog * SnifWindow; }; -}; +} #endif diff --git a/noncore/settings/networksettings2/ppp/ppp.pro b/noncore/settings/networksettings2/ppp/ppp.pro index dd3408c..10d0f1b 100644 --- a/noncore/settings/networksettings2/ppp/ppp.pro +++ b/noncore/settings/networksettings2/ppp/ppp.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = ppp_NN.h \ ppp_NNI.h \ PPPedit.h \ diff --git a/noncore/settings/networksettings2/ppp/ppp_NN.cpp b/noncore/settings/networksettings2/ppp/ppp_NN.cpp index 51ba27d..bd13ab9 100644 --- a/noncore/settings/networksettings2/ppp/ppp_NN.cpp +++ b/noncore/settings/networksettings2/ppp/ppp_NN.cpp @@ -3,8 +3,14 @@ #include <qtextstream.h> #include "ppp_NN.h" #include "ppp_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + QStringList * PPPNetNode::ProperFiles = 0; static const char * PPPNeeds[] = { "modem", @@ -77,9 +83,18 @@ 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 + } diff --git a/noncore/settings/networksettings2/profile/profile.pro b/noncore/settings/networksettings2/profile/profile.pro index f980034..4db7a5d 100644 --- a/noncore/settings/networksettings2/profile/profile.pro +++ b/noncore/settings/networksettings2/profile/profile.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = profile_NN.h \ profile_NNI.h \ profileedit.h diff --git a/noncore/settings/networksettings2/profile/profile_NN.cpp b/noncore/settings/networksettings2/profile/profile_NN.cpp index b7d8aa0..6028ea5 100644 --- a/noncore/settings/networksettings2/profile/profile_NN.cpp +++ b/noncore/settings/networksettings2/profile/profile_NN.cpp @@ -1,8 +1,14 @@ #include <resources.h> #include "profile_NN.h" #include "profile_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * ProfileNeeds[] = { "connection", 0 }; @@ -52,9 +58,18 @@ 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 + } diff --git a/noncore/settings/networksettings2/usb/usb.pro b/noncore/settings/networksettings2/usb/usb.pro index 37c1bde..d9890b6 100644 --- a/noncore/settings/networksettings2/usb/usb.pro +++ b/noncore/settings/networksettings2/usb/usb.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = usb_NN.h \ usb_NNI.h \ usbedit.h diff --git a/noncore/settings/networksettings2/usb/usb_NN.cpp b/noncore/settings/networksettings2/usb/usb_NN.cpp index bd9ae2b..9c07b82 100644 --- a/noncore/settings/networksettings2/usb/usb_NN.cpp +++ b/noncore/settings/networksettings2/usb/usb_NN.cpp @@ -1,8 +1,14 @@ #include <resources.h> #include "usb_NN.h" #include "usb_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * USBNeeds[] = { 0 }; @@ -54,9 +60,18 @@ 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 + } diff --git a/noncore/settings/networksettings2/usb/usb_NNI.cpp b/noncore/settings/networksettings2/usb/usb_NNI.cpp index 600b771..424845c 100644 --- a/noncore/settings/networksettings2/usb/usb_NNI.cpp +++ b/noncore/settings/networksettings2/usb/usb_NNI.cpp @@ -44,9 +44,9 @@ short AUSB::generateFileEmbedded( SystemFile & SF, Log(("Generate USB for %s\n", SF.name().latin1() )); // generate mapping stanza for this interface SF << " pre-up " << QPEApplication::qpeDir() - << "bin/setmacaddress.sh " + << "bin/NS2SetMac.sh " << NIC << " || true" << endl; rvl = 0; diff --git a/noncore/settings/networksettings2/vpn/vpn.pro b/noncore/settings/networksettings2/vpn/vpn.pro index a131a1f..349571e 100644 --- a/noncore/settings/networksettings2/vpn/vpn.pro +++ b/noncore/settings/networksettings2/vpn/vpn.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = vpn_NN.h \ vpn_NNI.h \ vpnedit.h diff --git a/noncore/settings/networksettings2/vpn/vpn_NN.cpp b/noncore/settings/networksettings2/vpn/vpn_NN.cpp index 23ec04a..6dd5332 100644 --- a/noncore/settings/networksettings2/vpn/vpn_NN.cpp +++ b/noncore/settings/networksettings2/vpn/vpn_NN.cpp @@ -1,7 +1,13 @@ #include "vpn_NN.h" #include "vpn_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * VPNNeeds[] = { 0 }; @@ -46,9 +52,18 @@ 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 + } diff --git a/noncore/settings/networksettings2/wlan/wlan.pro b/noncore/settings/networksettings2/wlan/wlan.pro index f4c55df..a08cbbb 100644 --- a/noncore/settings/networksettings2/wlan/wlan.pro +++ b/noncore/settings/networksettings2/wlan/wlan.pro @@ -1,6 +1,6 @@ TEMPLATE = lib -CONFIG += qt warn_on release +CONFIG += qt warn_on release plugin DESTDIR = $(OPIEDIR)/plugins/networksettings2 HEADERS = wlan_NN.h \ wlan_NNI.h \ wlanedit.h diff --git a/noncore/settings/networksettings2/wlan/wlan_NN.cpp b/noncore/settings/networksettings2/wlan/wlan_NN.cpp index 36a5c33..c56da06 100644 --- a/noncore/settings/networksettings2/wlan/wlan_NN.cpp +++ b/noncore/settings/networksettings2/wlan/wlan_NN.cpp @@ -1,8 +1,14 @@ #include <resources.h> #include "wlan_NN.h" #include "wlan_NNI.h" +#ifndef MYPLUGIN + +#include "netnodeinterface.h" + +#endif + static const char * WLanNeeds[] = { 0 }; @@ -62,9 +68,18 @@ void WLanNetNode::saveSpecificAttribute( QTextStream & TS ) { << InstanceCount << endl; } +#ifdef MYPLUGIN + extern "C" { void create_plugin( QList<ANetNode> & PNN ) { PNN.append( new WLanNetNode() ); } + +#else + +OPIE_NS2_PLUGIN( NetNodeInterface<WLanNetNode> ) + +#endif + } |