From ea7aa8c3779be1e5aadb550559b3a463859ba104 Mon Sep 17 00:00:00 2001 From: zecke Date: Wed, 27 Aug 2003 12:47:27 +0000 Subject: Opiefy it --- (limited to 'core/tools/quicklauncher/dropins.h') diff --git a/core/tools/quicklauncher/dropins.h b/core/tools/quicklauncher/dropins.h new file mode 100644 index 0000000..ac8d8cc --- a/dev/null +++ b/core/tools/quicklauncher/dropins.h @@ -0,0 +1,61 @@ + +#include +#include +#include +#include +#include + +#include + +#include +#include + +namespace Opie { + + struct PluginLoader { + PluginLoader( const char* ) { + } + + QRESULT queryInterface( const QString& app, const QUuid&, QUnknownInterface** ); + void releaseInterface( QUnknownInterface* ); + QMap libs; + }; + + /* + * We can skip installing a Translator here because Opies QPEApplication + * will do that in initApp for us as well + */ + QRESULT PluginLoader::queryInterface( const QString& libFile, const QUuid& uuid, QUnknownInterface** iface ) { + QRESULT res = QS_FALSE; + *iface = 0; + + // Below lines from TT then mine again + QString name = libFile; + if ( libFile.findRev(".so") == (int)libFile.length()-3 ) { + name = libFile.left( libFile.length()-3 ); + if ( name.find( "lib" ) == 0 ) + name = name.mid( 3 ); + } + QString path = QPEApplication::qpeDir() + "/plugins/applications/lib"+name+".so"; + + QLibrary *lib = new QLibrary( path ); + if ( lib->queryInterface( uuid, iface ) == QS_OK && iface ) { + libs.insert( *iface, lib ); + res = QS_OK; + } + + return res; + } + + void PluginLoader::releaseInterface( QUnknownInterface* iface ) { + if ( libs.contains( iface ) ) { + iface->release(); + delete libs[iface]; + libs.remove( iface ); // we only handle pointers so even if the object is not valid the address-space is + } + } + +} + +/* small hack ;) */ +using namespace Opie; -- cgit v0.9.0.2