summaryrefslogtreecommitdiff
Unidiff
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
@@ -46,24 +46,25 @@
46 46
47 And KGenericFactor et all from Simon Hausmann <tronical@kde.org> 47 And KGenericFactor et all from Simon Hausmann <tronical@kde.org>
48 48
49*/ 49*/
50 50
51#include <qstring.h> 51#include <qstring.h>
52#include <qmetaobject.h> 52#include <qmetaobject.h>
53 53
54#include <qtopia/qcom.h> 54#include <qtopia/qcom.h>
55#include <qtopia/applicationinterface.h> 55#include <qtopia/applicationinterface.h>
56 56
57namespace Opie { 57namespace Opie {
58namespace Core {
58 struct NullType; 59 struct NullType;
59 60
60 template <class T, class U> 61 template <class T, class U>
61 struct Typelist 62 struct Typelist
62 { 63 {
63 typedef T Head; 64 typedef T Head;
64 typedef U Tail; 65 typedef U Tail;
65 }; 66 };
66 template< 67 template<
67 typename T1 = NullType, typename T2 = NullType, typename T3 = NullType, 68 typename T1 = NullType, typename T2 = NullType, typename T3 = NullType,
68 typename T4 = NullType, typename T5 = NullType, typename T6 = NullType, 69 typename T4 = NullType, typename T5 = NullType, typename T6 = NullType,
69 typename T7 = NullType, typename T8 = NullType, typename T9 = NullType, 70 typename T7 = NullType, typename T8 = NullType, typename T9 = NullType,
@@ -85,25 +86,24 @@ namespace Opie {
85 ::Result TailResult; 86 ::Result TailResult;
86 87
87public: 88public:
88 typedef Typelist<T1, TailResult> Result; 89 typedef Typelist<T1, TailResult> Result;
89}; 90};
90 91
91template<> 92template<>
92struct MakeTypelist<> 93struct MakeTypelist<>
93{ 94{
94 typedef NullType Result; 95 typedef NullType Result;
95}; 96};
96 97
97}
98 98
99/** 99/**
100 * To allow your application to be quick launched some one needs 100 * To allow your application to be quick launched some one needs
101 * to create the QWidget. 101 * to create the QWidget.
102 * This is this factory. Make surce your widget has static QString Widget::appName() 102 * This is this factory. Make surce your widget has static QString Widget::appName()
103 * as one of its functions. 103 * as one of its functions.
104 * 104 *
105 * This template takes one QWidget and initialized it in the form of 105 * This template takes one QWidget and initialized it in the form of
106 * MyWidget::MyWidget( QWidget* parent, const char* name, WFlags f ); 106 * MyWidget::MyWidget( QWidget* parent, const char* name, WFlags f );
107 * 107 *
108 * To use it on your app do that: 108 * To use it on your app do that:
109 * typedef OApplicationFactory<MyWidget> MyFactory; 109 * typedef OApplicationFactory<MyWidget> MyFactory;
@@ -154,50 +154,50 @@ struct OPrivate {
154 else 154 else
155 return 0; 155 return 0;
156 } 156 }
157 157
158 inline static QStringList multiString( const QStringList& _list ) { 158 inline static QStringList multiString( const QStringList& _list ) {
159 QStringList list = _list; 159 QStringList list = _list;
160 list << Product::appName(); 160 list << Product::appName();
161 return list; 161 return list;
162 } 162 }
163}; 163};
164 164
165template <> 165template <>
166struct OPrivate<Opie::NullType > { 166struct OPrivate<Opie::Core::NullType > {
167 inline static QWidget* multiFactory ( const QString& , QWidget* , 167 inline static QWidget* multiFactory ( const QString& , QWidget* ,
168 const char* , Qt::WFlags ) { 168 const char* , Qt::WFlags ) {
169 return 0l; 169 return 0l;
170 } 170 }
171 inline static QStringList multiString( const QStringList& _list ) { 171 inline static QStringList multiString( const QStringList& _list ) {
172 return _list; 172 return _list;
173 } 173 }
174}; 174};
175 175
176/* 176/*
177template <> 177template <>
178struct OPrivate <Opie::NullType, Opie::NullType > { 178struct OPrivate <Opie::NullType, Opie::NullType > {
179 inline static QWidget* multiFactory( const QString& , QWidget* , 179 inline static QWidget* multiFactory( const QString& , QWidget* ,
180 const char* , Qt::WFlags ) { 180 const char* , Qt::WFlags ) {
181 return 0l; 181 return 0l;
182 } 182 }
183 183
184 inline static QStringList multiString( const QStringList& _list ) { 184 inline static QStringList multiString( const QStringList& _list ) {
185 return _list; 185 return _list;
186 } 186 }
187}; 187};
188*/ 188*/
189 189
190template <class Product, class ProductListTail> 190template <class Product, class ProductListTail>
191struct OPrivate< Opie::Typelist<Product, ProductListTail> > { 191struct OPrivate< Opie::Core::Typelist<Product, ProductListTail> > {
192 inline static QWidget* multiFactory( const QString& appName, QWidget* parent, 192 inline static QWidget* multiFactory( const QString& appName, QWidget* parent,
193 const char* name, Qt::WFlags fl) { 193 const char* name, Qt::WFlags fl) {
194 QWidget* wid = OPrivate<Product>::multiFactory( appName, parent, name, fl ); 194 QWidget* wid = OPrivate<Product>::multiFactory( appName, parent, name, fl );
195 195
196 if (!wid ) 196 if (!wid )
197 wid = OPrivate<ProductListTail>::multiFactory( appName, parent, name, fl ); 197 wid = OPrivate<ProductListTail>::multiFactory( appName, parent, name, fl );
198 198
199 return wid; 199 return wid;
200 } 200 }
201 201
202 inline static QStringList multiString( const QStringList& _list ) { 202 inline static QStringList multiString( const QStringList& _list ) {
203 QStringList list = _list; 203 QStringList list = _list;
@@ -219,49 +219,51 @@ struct OPrivate< Opie::Typelist<Product, ProductListTail> > {
219/* Internal END */ 219/* Internal END */
220 220
221/* 221/*
222 * If you want to export more than one Widget use that function 222 * If you want to export more than one Widget use that function
223 * Make sure all your Widgets provide the appName() static method 223 * Make sure all your Widgets provide the appName() static method
224 * otherwise you'll get a compiler error 224 * otherwise you'll get a compiler error
225 * 225 *
226 * typedef Opie::MakeTypeList<MyWidget, MyDialog, MyMediaPlayer >::Result MyTypes; 226 * typedef Opie::MakeTypeList<MyWidget, MyDialog, MyMediaPlayer >::Result MyTypes;
227 * OPIE_EXPORT_APP( OApplicationFactory<MyTypes> ) 227 * OPIE_EXPORT_APP( OApplicationFactory<MyTypes> )
228 */ 228 */
229 229
230template<class Product, class ProductListTail> 230template<class Product, class ProductListTail>
231struct OApplicationFactory< Opie::Typelist<Product, ProductListTail > > 231struct OApplicationFactory< Opie::Core::Typelist<Product, ProductListTail > >
232 : ApplicationInterface { 232 : ApplicationInterface {
233 QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { 233 QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) {
234 *iface = 0; 234 *iface = 0;
235 if ( uuid == IID_QUnknown ) *iface = this; 235 if ( uuid == IID_QUnknown ) *iface = this;
236 else if ( uuid ==IID_QtopiaApplication ) *iface = this; 236 else if ( uuid ==IID_QtopiaApplication ) *iface = this;
237 else return QS_FALSE; 237 else return QS_FALSE;
238 (*iface)->addRef(); 238 (*iface)->addRef();
239 return QS_OK; 239 return QS_OK;
240 } 240 }
241 241
242 QWidget* createMainWindow ( const QString& appName, QWidget* parent, 242 QWidget* createMainWindow ( const QString& appName, QWidget* parent,
243 const char* name, Qt::WFlags fl ) { 243 const char* name, Qt::WFlags fl ) {
244 qWarning("StringList is %s", applications().join(":").latin1() ); 244 qWarning("StringList is %s", applications().join(":").latin1() );
245 return OPrivate< Opie::Typelist<Product, ProductListTail > >::multiFactory( appName, parent, name, fl ); 245 return OPrivate< Opie::Core::Typelist<Product, ProductListTail > >::multiFactory( appName, parent, name, fl );
246 } 246 }
247 247
248 QStringList applications()const { 248 QStringList applications()const {
249 QStringList _list; 249 QStringList _list;
250 return OPrivate< Opie::Typelist<Product, ProductListTail> >::multiString( _list ); 250 return OPrivate< Opie::Core::Typelist<Product, ProductListTail> >::multiString( _list );
251 } 251 }
252 252
253 Q_REFCOUNT 253 Q_REFCOUNT
254}; 254};
255 255
256}
257}
256 258
257/* If the library version should be build */ 259/* If the library version should be build */
258#ifdef OPIE_APP_INTERFACE 260#ifdef OPIE_APP_INTERFACE
259#define OPIE_EXPORT_APP( factory ) Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( factory ) } 261#define OPIE_EXPORT_APP( factory ) Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( factory ) }
260#else 262#else
261 263
262#include <qpe/qpeapplication.h> 264#include <qpe/qpeapplication.h>
263 265
264#define OPIE_EXPORT_APP( Factory ) \ 266#define OPIE_EXPORT_APP( Factory ) \
265int main( int argc, char **argv ) { \ 267int main( int argc, char **argv ) { \
266 QPEApplication a(argc, argv ); \ 268 QPEApplication a(argc, argv ); \
267 QWidget *mw = 0;\ 269 QWidget *mw = 0;\