-rw-r--r-- | libopie/oapplicationfactory.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libopie/oapplicationfactory.h b/libopie/oapplicationfactory.h index 418a82e..ab88d80 100644 --- a/libopie/oapplicationfactory.h +++ b/libopie/oapplicationfactory.h | |||
@@ -105,158 +105,160 @@ struct OApplicationFactory : public ApplicationInterface { | |||
105 | 105 | ||
106 | virtual QStringList applications()const { | 106 | virtual QStringList applications()const { |
107 | QStringList list; | 107 | QStringList list; |
108 | list << Product::appName() ; | 108 | list << Product::appName() ; |
109 | 109 | ||
110 | return list; | 110 | return list; |
111 | } | 111 | } |
112 | Q_REFCOUNT | 112 | Q_REFCOUNT |
113 | 113 | ||
114 | }; | 114 | }; |
115 | 115 | ||
116 | 116 | ||
117 | /* Internal */ | 117 | /* Internal */ |
118 | 118 | ||
119 | template< class Product > | 119 | template< class Product > |
120 | struct OPrivate { | 120 | struct OPrivate { |
121 | inline static QWidget *multiFactory( const QString& appName, QWidget* parent, | 121 | inline static QWidget *multiFactory( const QString& appName, QWidget* parent, |
122 | const char* name, Qt::WFlags fl ) { | 122 | const char* name, Qt::WFlags fl ) { |
123 | if ( appName == Product::appName() ) | 123 | if ( appName == Product::appName() ) |
124 | return new Product( parent, name, fl ); | 124 | return new Product( parent, name, fl ); |
125 | else | 125 | else |
126 | return 0; | 126 | return 0; |
127 | } | 127 | } |
128 | 128 | ||
129 | inline static QStringList multiString( const QStringList& _list ) { | 129 | inline static QStringList multiString( const QStringList& _list ) { |
130 | QStringList list = _list; | 130 | QStringList list = _list; |
131 | list << Product::appName(); | 131 | list << Product::appName(); |
132 | return list; | 132 | return list; |
133 | } | 133 | } |
134 | }; | 134 | }; |
135 | 135 | ||
136 | template <> | 136 | template <> |
137 | struct OPrivate<Opie::NullType > { | 137 | struct OPrivate<Opie::NullType > { |
138 | inline static QWidget* multiFactory ( const QString& , QWidget* , | 138 | inline static QWidget* multiFactory ( const QString& , QWidget* , |
139 | const char* , Qt::WFlags ) { | 139 | const char* , Qt::WFlags ) { |
140 | return 0l; | 140 | return 0l; |
141 | } | 141 | } |
142 | inline static QStringList multiString( const QStringList& _list ) { | 142 | inline static QStringList multiString( const QStringList& _list ) { |
143 | return _list; | 143 | return _list; |
144 | } | 144 | } |
145 | }; | 145 | }; |
146 | 146 | ||
147 | /* | 147 | /* |
148 | template <> | 148 | template <> |
149 | struct OPrivate <Opie::NullType, Opie::NullType > { | 149 | struct OPrivate <Opie::NullType, Opie::NullType > { |
150 | inline static QWidget* multiFactory( const QString& , QWidget* , | 150 | inline static QWidget* multiFactory( const QString& , QWidget* , |
151 | const char* , Qt::WFlags ) { | 151 | const char* , Qt::WFlags ) { |
152 | return 0l; | 152 | return 0l; |
153 | } | 153 | } |
154 | 154 | ||
155 | inline static QStringList multiString( const QStringList& _list ) { | 155 | inline static QStringList multiString( const QStringList& _list ) { |
156 | return _list; | 156 | return _list; |
157 | } | 157 | } |
158 | }; | 158 | }; |
159 | */ | 159 | */ |
160 | 160 | ||
161 | template <class Product, class ProductListTail> | 161 | template <class Product, class ProductListTail> |
162 | struct OPrivate< Opie::Typelist<Product, ProductListTail> > { | 162 | struct OPrivate< Opie::Typelist<Product, ProductListTail> > { |
163 | inline static QWidget* multiFactory( const QString& appName, QWidget* parent, | 163 | inline static QWidget* multiFactory( const QString& appName, QWidget* parent, |
164 | const char* name, Qt::WFlags fl) { | 164 | const char* name, Qt::WFlags fl) { |
165 | QWidget* wid = OPrivate<Product>::multiFactory( appName, parent, name, fl ); | 165 | QWidget* wid = OPrivate<Product>::multiFactory( appName, parent, name, fl ); |
166 | 166 | ||
167 | if (!wid ) | 167 | if (!wid ) |
168 | wid = OPrivate<ProductListTail>::multiFactory( appName, parent, name, fl ); | 168 | wid = OPrivate<ProductListTail>::multiFactory( appName, parent, name, fl ); |
169 | 169 | ||
170 | return wid; | 170 | return wid; |
171 | } | 171 | } |
172 | 172 | ||
173 | inline static QStringList multiString( const QStringList& _list ) { | 173 | inline static QStringList multiString( const QStringList& _list ) { |
174 | QStringList list = _list; | 174 | QStringList list = _list; |
175 | 175 | ||
176 | list = OPrivate<Product>::multiString( list ); | 176 | list = OPrivate<Product>::multiString( list ); |
177 | list = OPrivate<ProductListTail>::multiString( list ); | 177 | list = OPrivate<ProductListTail>::multiString( list ); |
178 | 178 | ||
179 | return list; | 179 | return list; |
180 | } | 180 | } |
181 | }; | 181 | }; |
182 | 182 | ||
183 | 183 | ||
184 | 184 | ||
185 | 185 | ||
186 | 186 | ||
187 | 187 | ||
188 | 188 | ||
189 | 189 | ||
190 | /* Internal END */ | 190 | /* Internal END */ |
191 | 191 | ||
192 | /* | 192 | /* |
193 | * If you want to export more than one Widget use that function | 193 | * If you want to export more than one Widget use that function |
194 | * Make sure all your Widgets provide the appName() static method | 194 | * Make sure all your Widgets provide the appName() static method |
195 | * otherwise you'll get a compiler error | 195 | * otherwise you'll get a compiler error |
196 | * | 196 | * |
197 | * typedef Opie::MakeTypeList<MyWidget, MyDialog, MyMediaPlayer >::Result MyTypes; | 197 | * typedef Opie::MakeTypeList<MyWidget, MyDialog, MyMediaPlayer >::Result MyTypes; |
198 | * OPIE_EXPORT_APP( OApplicationFactory<MyTypes> ) | 198 | * OPIE_EXPORT_APP( OApplicationFactory<MyTypes> ) |
199 | */ | 199 | */ |
200 | 200 | ||
201 | template<class Product, class ProductListTail> | 201 | template<class Product, class ProductListTail> |
202 | struct OApplicationFactory< Opie::Typelist<Product, ProductListTail > > | 202 | struct OApplicationFactory< Opie::Typelist<Product, ProductListTail > > |
203 | : ApplicationInterface { | 203 | : ApplicationInterface { |
204 | QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { | 204 | QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { |
205 | *iface = 0; | 205 | *iface = 0; |
206 | if ( uuid == IID_QUnknown ) *iface = this; | 206 | if ( uuid == IID_QUnknown ) *iface = this; |
207 | else if ( uuid ==IID_QtopiaApplication ) *iface = this; | 207 | else if ( uuid ==IID_QtopiaApplication ) *iface = this; |
208 | else return QS_FALSE; | 208 | else return QS_FALSE; |
209 | (*iface)->addRef(); | 209 | (*iface)->addRef(); |
210 | return QS_OK; | 210 | return QS_OK; |
211 | } | 211 | } |
212 | 212 | ||
213 | QWidget* createMainWindow ( const QString& appName, QWidget* parent, | 213 | QWidget* createMainWindow ( const QString& appName, QWidget* parent, |
214 | const char* name, Qt::WFlags fl ) { | 214 | const char* name, Qt::WFlags fl ) { |
215 | qWarning("StringList is %s", applications().join(":").latin1() ); | 215 | qWarning("StringList is %s", applications().join(":").latin1() ); |
216 | return OPrivate< Opie::Typelist<Product, ProductListTail > >::multiFactory( appName, parent, name, fl ); | 216 | return OPrivate< Opie::Typelist<Product, ProductListTail > >::multiFactory( appName, parent, name, fl ); |
217 | } | 217 | } |
218 | 218 | ||
219 | QStringList applications()const { | 219 | QStringList applications()const { |
220 | QStringList _list; | 220 | QStringList _list; |
221 | return OPrivate< Opie::Typelist<Product, ProductListTail> >::multiString( _list ); | 221 | return OPrivate< Opie::Typelist<Product, ProductListTail> >::multiString( _list ); |
222 | } | 222 | } |
223 | 223 | ||
224 | Q_REFCOUNT | 224 | Q_REFCOUNT |
225 | }; | 225 | }; |
226 | 226 | ||
227 | 227 | ||
228 | /* If the library version should be build */ | 228 | /* If the library version should be build */ |
229 | #ifdef OPIE_APP_INTERFACE | 229 | #ifdef OPIE_APP_INTERFACE |
230 | #define OPIE_EXPORT_APP( factory ) Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( factory ) } | 230 | #define OPIE_EXPORT_APP( factory ) Q_EXPORT_INTERFACE() { Q_CREATE_INSTANCE( factory ) } |
231 | #else | 231 | #else |
232 | 232 | ||
233 | #include <qpe/qpeapplication.h> | ||
234 | |||
233 | #define OPIE_EXPORT_APP( Factory ) \ | 235 | #define OPIE_EXPORT_APP( Factory ) \ |
234 | int main( int argc, char **argv ) { \ | 236 | int main( int argc, char **argv ) { \ |
235 | QPEApplication a(argc, argv ); \ | 237 | QPEApplication a(argc, argv ); \ |
236 | QWidget *mw = 0;\ | 238 | QWidget *mw = 0;\ |
237 | \ | 239 | \ |
238 | /* method from TT */ \ | 240 | /* method from TT */ \ |
239 | QString executableName = QString::fromLatin1( argv[0] ); \ | 241 | QString executableName = QString::fromLatin1( argv[0] ); \ |
240 | executableName = executableName.right(executableName.length() \ | 242 | executableName = executableName.right(executableName.length() \ |
241 | - executableName.findRev('/') - 1); \ | 243 | - executableName.findRev('/') - 1); \ |
242 | \ | 244 | \ |
243 | Factory f; \ | 245 | Factory f; \ |
244 | QStringList list = f.applications(); \ | 246 | QStringList list = f.applications(); \ |
245 | if (list.contains(executableName) ) \ | 247 | if (list.contains(executableName) ) \ |
246 | mw = f.createMainWindow(executableName, 0, 0, 0 ); \ | 248 | mw = f.createMainWindow(executableName, 0, 0, 0 ); \ |
247 | else \ | 249 | else \ |
248 | mw = f.createMainWindow( list[0], 0, 0, 0 ); \ | 250 | mw = f.createMainWindow( list[0], 0, 0, 0 ); \ |
249 | \ | 251 | \ |
250 | if( mw ) { \ | 252 | if( mw ) { \ |
251 | if ( mw->metaObject()->slotNames().contains("setDocument(const QString&)" ) ) \ | 253 | if ( mw->metaObject()->slotNames().contains("setDocument(const QString&)" ) ) \ |
252 | a.showMainDocumentWidget( mw ); \ | 254 | a.showMainDocumentWidget( mw ); \ |
253 | else \ | 255 | else \ |
254 | a.showMainWidget( mw ); \ | 256 | a.showMainWidget( mw ); \ |
255 | \ | 257 | \ |
256 | int rv = a.exec(); \ | 258 | int rv = a.exec(); \ |
257 | delete mw; \ | 259 | delete mw; \ |
258 | return rv; \ | 260 | return rv; \ |
259 | }else \ | 261 | }else \ |
260 | return -1; \ | 262 | return -1; \ |
261 | } | 263 | } |
262 | #endif | 264 | #endif |