summaryrefslogtreecommitdiff
authorzecke <zecke>2004-03-13 20:18:55 (UTC)
committer zecke <zecke>2004-03-13 20:18:55 (UTC)
commitcf61e44678f1b74e97c61e57ffb63a7bcf794577 (patch) (side-by-side diff)
tree2a85e577d92a818447d866c70460196d2fc8c32f
parent6d08277737e22b7a1527124623f3571969073ddf (diff)
downloadopie-cf61e44678f1b74e97c61e57ffb63a7bcf794577.zip
opie-cf61e44678f1b74e97c61e57ffb63a7bcf794577.tar.gz
opie-cf61e44678f1b74e97c61e57ffb63a7bcf794577.tar.bz2
Change OApplicationFactory to be in Opie::Core as well
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/oapplicationfactory.h14
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() \