author | zecke <zecke> | 2004-03-13 20:18:55 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-03-13 20:18:55 (UTC) |
commit | cf61e44678f1b74e97c61e57ffb63a7bcf794577 (patch) (side-by-side diff) | |
tree | 2a85e577d92a818447d866c70460196d2fc8c32f | |
parent | 6d08277737e22b7a1527124623f3571969073ddf (diff) | |
download | opie-cf61e44678f1b74e97c61e57ffb63a7bcf794577.zip opie-cf61e44678f1b74e97c61e57ffb63a7bcf794577.tar.gz opie-cf61e44678f1b74e97c61e57ffb63a7bcf794577.tar.bz2 |
Change OApplicationFactory to be in Opie::Core as well
-rw-r--r-- | libopie2/opiecore/oapplicationfactory.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/libopie2/opiecore/oapplicationfactory.h b/libopie2/opiecore/oapplicationfactory.h index 6e10552..4518174 100644 --- a/libopie2/opiecore/oapplicationfactory.h +++ b/libopie2/opiecore/oapplicationfactory.h @@ -42,32 +42,33 @@ The author or Addison-Welsey Longman make no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. ---- And KGenericFactor et all from Simon Hausmann <tronical@kde.org> */ #include <qstring.h> #include <qmetaobject.h> #include <qtopia/qcom.h> #include <qtopia/applicationinterface.h> namespace Opie { +namespace Core { struct NullType; template <class T, class U> struct Typelist { typedef T Head; typedef U Tail; }; template< typename T1 = NullType, typename T2 = NullType, typename T3 = NullType, typename T4 = NullType, typename T5 = NullType, typename T6 = NullType, typename T7 = NullType, typename T8 = NullType, typename T9 = NullType, typename T10 = NullType, typename T11 = NullType, typename T12 = NullType, typename T13 = NullType, typename T14 = NullType, typename T15 = NullType, typename T16 = NullType, typename T17 = NullType, typename T18 = NullType > @@ -81,33 +82,32 @@ namespace Opie { T11, T12, T13, T14, T15, T16, T17, T18 > ::Result TailResult; public: typedef Typelist<T1, TailResult> Result; }; template<> struct MakeTypelist<> { typedef NullType Result; }; -} /** * To allow your application to be quick launched some one needs * to create the QWidget. * This is this factory. Make surce your widget has static QString Widget::appName() * as one of its functions. * * This template takes one QWidget and initialized it in the form of * MyWidget::MyWidget( QWidget* parent, const char* name, WFlags f ); * * To use it on your app do that: * typedef OApplicationFactory<MyWidget> MyFactory; * OPIE_EXPORT_APP( MyFactory ) * */ template <class Product> @@ -150,58 +150,58 @@ struct OPrivate { inline static QWidget *multiFactory( const QString& appName, QWidget* parent, const char* name, Qt::WFlags fl ) { if ( appName == Product::appName() ) return new Product( parent, name, fl ); else return 0; } inline static QStringList multiString( const QStringList& _list ) { QStringList list = _list; list << Product::appName(); return list; } }; template <> -struct OPrivate<Opie::NullType > { +struct OPrivate<Opie::Core::NullType > { inline static QWidget* multiFactory ( const QString& , QWidget* , const char* , Qt::WFlags ) { return 0l; } inline static QStringList multiString( const QStringList& _list ) { return _list; } }; /* template <> struct OPrivate <Opie::NullType, Opie::NullType > { inline static QWidget* multiFactory( const QString& , QWidget* , const char* , Qt::WFlags ) { return 0l; } inline static QStringList multiString( const QStringList& _list ) { return _list; } }; */ template <class Product, class ProductListTail> -struct OPrivate< Opie::Typelist<Product, ProductListTail> > { +struct OPrivate< Opie::Core::Typelist<Product, ProductListTail> > { inline static QWidget* multiFactory( const QString& appName, QWidget* parent, const char* name, Qt::WFlags fl) { QWidget* wid = OPrivate<Product>::multiFactory( appName, parent, name, fl ); if (!wid ) wid = OPrivate<ProductListTail>::multiFactory( appName, parent, name, fl ); return wid; } inline static QStringList multiString( const QStringList& _list ) { QStringList list = _list; list = OPrivate<Product>::multiString( list ); list = OPrivate<ProductListTail>::multiString( list ); @@ -215,57 +215,59 @@ struct OPrivate< Opie::Typelist<Product, ProductListTail> > { /* Internal END */ /* * If you want to export more than one Widget use that function * Make sure all your Widgets provide the appName() static method * otherwise you'll get a compiler error * * typedef Opie::MakeTypeList<MyWidget, MyDialog, MyMediaPlayer >::Result MyTypes; * OPIE_EXPORT_APP( OApplicationFactory<MyTypes> ) */ template<class Product, class ProductListTail> -struct OApplicationFactory< Opie::Typelist<Product, ProductListTail > > +struct OApplicationFactory< Opie::Core::Typelist<Product, ProductListTail > > : ApplicationInterface { QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { *iface = 0; if ( uuid == IID_QUnknown ) *iface = this; else if ( uuid ==IID_QtopiaApplication ) *iface = this; else return QS_FALSE; (*iface)->addRef(); return QS_OK; } QWidget* createMainWindow ( const QString& appName, QWidget* parent, const char* name, Qt::WFlags fl ) { qWarning("StringList is %s", applications().join(":").latin1() ); - return OPrivate< Opie::Typelist<Product, ProductListTail > >::multiFactory( appName, parent, name, fl ); + return OPrivate< Opie::Core::Typelist<Product, ProductListTail > >::multiFactory( appName, parent, name, fl ); } QStringList applications()const { QStringList _list; - return OPrivate< Opie::Typelist<Product, ProductListTail> >::multiString( _list ); + return OPrivate< Opie::Core::Typelist<Product, ProductListTail> >::multiString( _list ); } Q_REFCOUNT }; +} +} /* If the library version should be build */ #ifdef OPIE_APP_INTERFACE #define OPIE_EXPORT_APP( factory ) Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( factory ) } #else #include <qpe/qpeapplication.h> #define OPIE_EXPORT_APP( Factory ) \ int main( int argc, char **argv ) { \ QPEApplication a(argc, argv ); \ QWidget *mw = 0;\ \ /* method from TT */ \ QString executableName = QString::fromLatin1( argv[0] ); \ executableName = executableName.right(executableName.length() \ |