summaryrefslogtreecommitdiffabout
path: root/microkde
authorzautrix <zautrix>2004-07-07 11:56:39 (UTC)
committer zautrix <zautrix>2004-07-07 11:56:39 (UTC)
commit56721aac86c9ae5253abac8962474c8d1a7e648a (patch) (unidiff)
treec12f41eba0d5724ee800cdb92727ffd6d3c1cf6c /microkde
parent13d88c91f2916090bd45e23b504d0b665c68126f (diff)
downloadkdepimpi-56721aac86c9ae5253abac8962474c8d1a7e648a.zip
kdepimpi-56721aac86c9ae5253abac8962474c8d1a7e648a.tar.gz
kdepimpi-56721aac86c9ae5253abac8962474c8d1a7e648a.tar.bz2
Changes for compiling on desktop
Diffstat (limited to 'microkde') (more/less context) (ignore whitespace changes)
-rw-r--r--microkde/kdecore/klibloader.cpp17
-rw-r--r--microkde/kdecore/kstandarddirs.cpp3
-rw-r--r--microkde/kdeui/ktoolbar.cpp2
-rw-r--r--microkde/kresources/factory.cpp3
-rw-r--r--microkde/microkde.pro10
5 files changed, 17 insertions, 18 deletions
diff --git a/microkde/kdecore/klibloader.cpp b/microkde/kdecore/klibloader.cpp
index c07d50f..c091e05 100644
--- a/microkde/kdecore/klibloader.cpp
+++ b/microkde/kdecore/klibloader.cpp
@@ -1,291 +1,287 @@
1/* This file is part of the KDE libraries 1/* This file is part of the KDE libraries
2 Copyright (C) 1999 Torben Weis <weis@kde.org> 2 Copyright (C) 1999 Torben Weis <weis@kde.org>
3 Copyright (C) 2000 Michael Matz <matz@kde.org> 3 Copyright (C) 2000 Michael Matz <matz@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License version 2 as published by the Free Software Foundation. 7 License version 2 as published by the Free Software Foundation.
8 8
9 This library is distributed in the hope that it will be useful, 9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details. 12 Library General Public License for more details.
13 13
14 You should have received a copy of the GNU Library General Public License 14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to 15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 16 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 Boston, MA 02111-1307, USA. 17 Boston, MA 02111-1307, USA.
18*/ 18*/
19//US #include <config.h> 19//US #include <config.h>
20#include <qclipboard.h> 20#include <qclipboard.h>
21#include <qfile.h> 21#include <qfile.h>
22#include <qtimer.h> 22#include <qtimer.h>
23#include <qobjectdict.h> 23#include <qobjectdict.h>
24#include <qwidgetlist.h> 24#include <qwidgetlist.h>
25#include <qwidget.h> 25#include <qwidget.h>
26 26
27#include "kapplication.h" 27#include "kapplication.h"
28#include "klibloader.h" 28#include "klibloader.h"
29#include "kstandarddirs.h" 29#include "kstandarddirs.h"
30#include "kdebug.h" 30#include "kdebug.h"
31#include "klocale.h" 31#include "klocale.h"
32 32
33/*US 33/*US
34#ifndef NDEBUG 34#ifndef NDEBUG
35#include "ltdl.h" 35#include "ltdl.h"
36#endif 36#endif
37*/ 37*/
38 38
39//US do everything through qlibrary 39//US do everything through qlibrary
40#ifndef DESKTOP_VERSION 40#ifndef DESKTOP_VERSION
41#include <qpe/qpeapplication.h> 41#include <qpe/qpeapplication.h>
42#include <qtopia/qlibrary.h> 42#include <qtopia/qlibrary.h>
43#else
44#include <qlibrary.h>
43#endif 45#endif
44 46
45/*US 47
46#ifdef Q_WS_X11
47#include <X11/Xlib.h>
48#include <X11/Xatom.h>
49#endif
50*/
51template class QAsciiDict<KLibrary>; 48template class QAsciiDict<KLibrary>;
52 49
53#include <stdlib.h> //getenv 50#include <stdlib.h> //getenv
54 51
55/*US 52/*US
56#if HAVE_DLFCN_H 53#if HAVE_DLFCN_H
57# include <dlfcn.h> 54# include <dlfcn.h>
58#endif 55#endif
59 56
60#ifdef RTLD_GLOBAL 57#ifdef RTLD_GLOBAL
61# define LT_GLOBAL RTLD_GLOBAL 58# define LT_GLOBAL RTLD_GLOBAL
62#else 59#else
63# ifdef DL_GLOBAL 60# ifdef DL_GLOBAL
64# define LT_GLOBAL DL_GLOBAL 61# define LT_GLOBAL DL_GLOBAL
65# endif 62# endif
66#endif 63#endif
67#ifndef LT_GLOBAL 64#ifndef LT_GLOBAL
68# define LT_GLOBAL 0 65# define LT_GLOBAL 0
69#endif 66#endif
70*/ 67*/
71 68
72/*US 69/*US
73extern "C" { 70extern "C" {
74extern int lt_dlopen_flag; 71extern int lt_dlopen_flag;
75} 72}
76*/ 73*/
77 74
78KLibFactory::KLibFactory( QObject* parent, const char* name ) 75KLibFactory::KLibFactory( QObject* parent, const char* name )
79 : QObject( parent, name ) 76 : QObject( parent, name )
80{ 77{
81} 78}
82 79
83KLibFactory::~KLibFactory() 80KLibFactory::~KLibFactory()
84{ 81{
85// kdDebug(150) << "Deleting KLibFactory " << this << endl; 82// kdDebug(150) << "Deleting KLibFactory " << this << endl;
86} 83}
87 84
88QObject* KLibFactory::create( QObject* parent, const char* name, const char* classname, const QStringList &args ) 85QObject* KLibFactory::create( QObject* parent, const char* name, const char* classname, const QStringList &args )
89{ 86{
90 QObject* obj = createObject( parent, name, classname, args ); 87 QObject* obj = createObject( parent, name, classname, args );
91 if ( obj ) 88 if ( obj )
92 emit objectCreated( obj ); 89 emit objectCreated( obj );
93 return obj; 90 return obj;
94} 91}
95 92
96 93
97QObject* KLibFactory::createObject( QObject*, const char*, const char*, const QStringList &) 94QObject* KLibFactory::createObject( QObject*, const char*, const char*, const QStringList &)
98{ 95{
99 return 0; 96 return 0;
100} 97}
101 98
102 99
103// ----------------------------------------------- 100// -----------------------------------------------
104 101
105//US KLibrary::KLibrary( const QString& libname, const QString& filename, void * handle ) 102//US KLibrary::KLibrary( const QString& libname, const QString& filename, void * handle )
106KLibrary::KLibrary( const QString& libname, const QString& filename, QLibrary* handle ) 103KLibrary::KLibrary( const QString& libname, const QString& filename, QLibrary* handle )
107{ 104{
108 /* Make sure, we have a KLibLoader */ 105 /* Make sure, we have a KLibLoader */
109 (void) KLibLoader::self(); 106 (void) KLibLoader::self();
110 m_libname = libname; 107 m_libname = libname;
111 m_filename = filename; 108 m_filename = filename;
112 m_handle = handle; 109 m_handle = handle;
113 m_factory = 0; 110 m_factory = 0;
114 m_timer = 0; 111 m_timer = 0;
115} 112}
116 113
117KLibrary::~KLibrary() 114KLibrary::~KLibrary()
118{ 115{
119// kdDebug(150) << "Deleting KLibrary " << this << " " << m_libname << endl; 116// kdDebug(150) << "Deleting KLibrary " << this << " " << m_libname << endl;
120 if ( m_timer && m_timer->isActive() ) 117 if ( m_timer && m_timer->isActive() )
121 m_timer->stop(); 118 m_timer->stop();
122 119
123 // If any object is remaining, delete 120 // If any object is remaining, delete
124 if ( m_objs.count() > 0 ) 121 if ( m_objs.count() > 0 )
125 { 122 {
126 QPtrListIterator<QObject> it( m_objs ); 123 QPtrListIterator<QObject> it( m_objs );
127 for ( ; it.current() ; ++it ) 124 for ( ; it.current() ; ++it )
128 { 125 {
129 kdDebug(150) << "Factory still has object " << it.current() << " " << it.current()->name () << " Library = " << m_libname << endl; 126 kdDebug(150) << "Factory still has object " << it.current() << " " << it.current()->name () << " Library = " << m_libname << endl;
130 disconnect( it.current(), SIGNAL( destroyed() ), 127 disconnect( it.current(), SIGNAL( destroyed() ),
131 this, SLOT( slotObjectDestroyed() ) ); 128 this, SLOT( slotObjectDestroyed() ) );
132 } 129 }
133 m_objs.setAutoDelete(true); 130 m_objs.setAutoDelete(true);
134 m_objs.clear(); 131 m_objs.clear();
135 } 132 }
136 133
137 if ( m_factory ) { 134 if ( m_factory ) {
138 //kdDebug(150) << " ... deleting the factory " << m_factory << endl; 135 //kdDebug(150) << " ... deleting the factory " << m_factory << endl;
139 delete m_factory; 136 delete m_factory;
140 } 137 }
141} 138}
142 139
143QString KLibrary::name() const 140QString KLibrary::name() const
144{ 141{
145 return m_libname; 142 return m_libname;
146} 143}
147 144
148QString KLibrary::fileName() const 145QString KLibrary::fileName() const
149{ 146{
150 return m_filename; 147 return m_filename;
151} 148}
152 149
153KLibFactory* KLibrary::factory() 150KLibFactory* KLibrary::factory()
154{ 151{
155 if ( m_factory ) 152 if ( m_factory )
156 return m_factory; 153 return m_factory;
157 154
158 QCString symname; 155 QCString symname;
159 symname.sprintf("init_%s", name().latin1() ); 156 symname.sprintf("init_%s", name().latin1() );
160 157
161 void* sym = symbol( symname ); 158 void* sym = symbol( symname );
162 if ( !sym ) 159 if ( !sym )
163 { 160 {
164 qDebug("KLibrary: The library %s does not offer an %s function", name().latin1(), symname.data()); 161 qDebug("KLibrary: The library %s does not offer an %s function", name().latin1(), symname.data());
165#ifndef NDEBUG 162#ifndef NDEBUG
166//US qDebug("KLibrary: errorcode: %s", lt_dlerror()); 163//US qDebug("KLibrary: errorcode: %s", lt_dlerror());
167#endif 164#endif
168 kdWarning(150) << "KLibrary: The library " << name().latin1() << " does not offer an init_" << name().latin1() << " function" << endl; 165 kdWarning(150) << "KLibrary: The library " << name().latin1() << " does not offer an init_" << name().latin1() << " function" << endl;
169 return 0; 166 return 0;
170 } 167 }
171 168
172 typedef KLibFactory* (*t_func)(); 169 typedef KLibFactory* (*t_func)();
173 t_func func = (t_func)sym; 170 t_func func = (t_func)sym;
174 m_factory = func(); 171 m_factory = func();
175 172
176 if( !m_factory ) 173 if( !m_factory )
177 { 174 {
178 kdWarning(150) << "KLibrary: The library " << name() << " does not offer a KDE compatible factory" << endl; 175 kdWarning(150) << "KLibrary: The library " << name() << " does not offer a KDE compatible factory" << endl;
179 return 0; 176 return 0;
180 } 177 }
181 178
182 connect( m_factory, SIGNAL( objectCreated( QObject * ) ), 179 connect( m_factory, SIGNAL( objectCreated( QObject * ) ),
183 this, SLOT( slotObjectCreated( QObject * ) ) ); 180 this, SLOT( slotObjectCreated( QObject * ) ) );
184 181
185 return m_factory; 182 return m_factory;
186} 183}
187 184
188void* KLibrary::symbol( const char* symname ) const 185void* KLibrary::symbol( const char* symname ) const
189{ 186{
190//US void* sym = lt_dlsym( (lt_dlhandle) m_handle, symname ); 187//US void* sym = lt_dlsym( (lt_dlhandle) m_handle, symname );
191 void* sym = m_handle->resolve( symname ); 188 void* sym = m_handle->resolve( symname );
192 if ( !sym ) 189 if ( !sym )
193 { 190 {
194//US kdWarning(150) << "KLibrary: " << lt_dlerror() << endl; 191//US kdWarning(150) << "KLibrary: " << lt_dlerror() << endl;
195 kdWarning(150) << "KLibrary: " << m_libname << ", symbol:" << symname << " not found " << endl;
196 return 0; 192 return 0;
197 } 193 }
198 194
199 return sym; 195 return sym;
200} 196}
201 197
202bool KLibrary::hasSymbol( const char* symname ) const 198bool KLibrary::hasSymbol( const char* symname ) const
203{ 199{
204//US void* sym = lt_dlsym( (lt_dlhandle) m_handle, symname ); 200//US void* sym = lt_dlsym( (lt_dlhandle) m_handle, symname );
205 void* sym = m_handle->resolve( symname ); 201 void* sym = m_handle->resolve( symname );
206 return (sym != 0L ); 202 return (sym != 0L );
207} 203}
208 204
209void KLibrary::unload() const 205void KLibrary::unload() const
210{ 206{
211 if (KLibLoader::s_self) 207 if (KLibLoader::s_self)
212 KLibLoader::s_self->unloadLibrary(QFile::encodeName(name())); 208 KLibLoader::s_self->unloadLibrary(QFile::encodeName(name()));
213} 209}
214 210
215void KLibrary::slotObjectCreated( QObject *obj ) 211void KLibrary::slotObjectCreated( QObject *obj )
216{ 212{
217 if ( !obj ) 213 if ( !obj )
218 return; 214 return;
219 215
220 if ( m_timer && m_timer->isActive() ) 216 if ( m_timer && m_timer->isActive() )
221 m_timer->stop(); 217 m_timer->stop();
222 218
223 if ( m_objs.containsRef( obj ) ) 219 if ( m_objs.containsRef( obj ) )
224 return; // we know this object already 220 return; // we know this object already
225 221
226 connect( obj, SIGNAL( destroyed() ), 222 connect( obj, SIGNAL( destroyed() ),
227 this, SLOT( slotObjectDestroyed() ) ); 223 this, SLOT( slotObjectDestroyed() ) );
228 224
229 m_objs.append( obj ); 225 m_objs.append( obj );
230} 226}
231 227
232void KLibrary::slotObjectDestroyed() 228void KLibrary::slotObjectDestroyed()
233{ 229{
234 m_objs.removeRef( sender() ); 230 m_objs.removeRef( sender() );
235 231
236 if ( m_objs.count() == 0 ) 232 if ( m_objs.count() == 0 )
237 { 233 {
238// kdDebug(150) << "KLibrary: shutdown timer for " << name() << " started!" 234// kdDebug(150) << "KLibrary: shutdown timer for " << name() << " started!"
239// << endl; 235// << endl;
240 236
241 if ( !m_timer ) 237 if ( !m_timer )
242 { 238 {
243 m_timer = new QTimer( this, "klibrary_shutdown_timer" ); 239 m_timer = new QTimer( this, "klibrary_shutdown_timer" );
244 connect( m_timer, SIGNAL( timeout() ), 240 connect( m_timer, SIGNAL( timeout() ),
245 this, SLOT( slotTimeout() ) ); 241 this, SLOT( slotTimeout() ) );
246 } 242 }
247 243
248 // as long as it's not stable make the timeout short, for debugging 244 // as long as it's not stable make the timeout short, for debugging
249 // pleasure (matz) 245 // pleasure (matz)
250 //m_timer->start( 1000*60, true ); 246 //m_timer->start( 1000*60, true );
251 m_timer->start( 1000*10, true ); 247 m_timer->start( 1000*10, true );
252 } 248 }
253} 249}
254 250
255void KLibrary::slotTimeout() 251void KLibrary::slotTimeout()
256{ 252{
257 if ( m_objs.count() != 0 ) 253 if ( m_objs.count() != 0 )
258 return; 254 return;
259 255
260 /* Don't go through KLibLoader::unloadLibrary(), because that uses the 256 /* Don't go through KLibLoader::unloadLibrary(), because that uses the
261 ref counter, but this timeout means to unconditionally close this library 257 ref counter, but this timeout means to unconditionally close this library
262 The destroyed() signal will take care to remove us from all lists. 258 The destroyed() signal will take care to remove us from all lists.
263 */ 259 */
264 delete this; 260 delete this;
265} 261}
266 262
267// ------------------------------------------------- 263// -------------------------------------------------
268 264
269/* This helper class is needed, because KLibraries can go away without 265/* This helper class is needed, because KLibraries can go away without
270 being unloaded. So we need some info about KLibraries even after its 266 being unloaded. So we need some info about KLibraries even after its
271 death. */ 267 death. */
272class KLibWrapPrivate 268class KLibWrapPrivate
273{ 269{
274public: 270public:
275//US KLibWrapPrivate(KLibrary *l, lt_dlhandle h); 271//US KLibWrapPrivate(KLibrary *l, lt_dlhandle h);
276 KLibWrapPrivate(KLibrary *l, QLibrary* h); 272 KLibWrapPrivate(KLibrary *l, QLibrary* h);
277 273
278 KLibrary *lib; 274 KLibrary *lib;
279 enum {UNKNOWN, UNLOAD, DONT_UNLOAD} unload_mode; 275 enum {UNKNOWN, UNLOAD, DONT_UNLOAD} unload_mode;
280 int ref_count; 276 int ref_count;
281//US lt_dlhandle handle; 277//US lt_dlhandle handle;
282 QLibrary *handle; 278 QLibrary *handle;
283 QString name; 279 QString name;
284 QString filename; 280 QString filename;
285}; 281};
286 282
287//US KLibWrapPrivate::KLibWrapPrivate(KLibrary *l, lt_dlhandle h) 283//US KLibWrapPrivate::KLibWrapPrivate(KLibrary *l, lt_dlhandle h)
288KLibWrapPrivate::KLibWrapPrivate(KLibrary *l, QLibrary* h) 284KLibWrapPrivate::KLibWrapPrivate(KLibrary *l, QLibrary* h)
289 : lib(l), ref_count(1), handle(h), name(l->name()), filename(l->fileName()) 285 : lib(l), ref_count(1), handle(h), name(l->name()), filename(l->fileName())
290{ 286{
291 unload_mode = UNKNOWN; 287 unload_mode = UNKNOWN;
@@ -384,264 +380,269 @@ QString KLibLoader::findLibrary( const char * name/*US , const KInstance * insta
384//US in the microedition we work only with shared libraries. 380//US in the microedition we work only with shared libraries.
385 if (libname.find('.', pos) < 0) { 381 if (libname.find('.', pos) < 0) {
386 libname += ".so"; 382 libname += ".so";
387 } 383 }
388 384
389 // only look up the file if it is not an absolute filename 385 // only look up the file if it is not an absolute filename
390 // (mhk, 20000228) 386 // (mhk, 20000228)
391 QString libfile; 387 QString libfile;
392 if (libname[0] == '/') 388 if (libname[0] == '/')
393 libfile = libname; 389 libfile = libname;
394 else 390 else
395 { 391 {
396//US at this point the libname must exist as real filesname. No expansions will be made later 392//US at this point the libname must exist as real filesname. No expansions will be made later
397// in findResources. Because of that we prepend the lib prefix here to the name 393// in findResources. Because of that we prepend the lib prefix here to the name
398//US I add also the "lib" prefix. I do not how could this could have worked before without it? 394//US I add also the "lib" prefix. I do not how could this could have worked before without it?
399 libname.insert(pos, "lib"); 395 libname.insert(pos, "lib");
400 396
401 397
402//US libfile = instance->dirs()->findResource( "module", libname ); 398//US libfile = instance->dirs()->findResource( "module", libname );
403 libfile = KGlobal::dirs()->findResource( "module", libname ); 399 libfile = KGlobal::dirs()->findResource( "module", libname );
404 if ( libfile.isEmpty() ) 400 if ( libfile.isEmpty() )
405 { 401 {
406//US libfile = instance->dirs()->findResource( "lib", libname ); 402//US libfile = instance->dirs()->findResource( "lib", libname );
407 libfile = KGlobal::dirs()->findResource( "lib", libname ); 403 libfile = KGlobal::dirs()->findResource( "lib", libname );
408#ifndef NDEBUG 404#ifndef NDEBUG
409 if ( !libfile.isEmpty() && libname.left(3) == "lib" ) // don't warn for kdeinit modules 405 if ( !libfile.isEmpty() && libname.left(3) == "lib" ) // don't warn for kdeinit modules
410 kdDebug(150) << "library " << libname << " not found under 'module' but under 'lib'" << endl; 406 kdDebug(150) << "library " << libname << " not found under 'module' but under 'lib'" << endl;
411#endif 407#endif
412 } 408 }
413 if ( libfile.isEmpty() ) 409 if ( libfile.isEmpty() )
414 { 410 {
415#ifndef NDEBUG 411#ifndef NDEBUG
416 kdDebug(150) << "library=" << libname << ": No file names " << libname.data() << " found in paths." << endl; 412 kdDebug(150) << "library=" << libname << ": No file names " << libname.data() << " found in paths." << endl;
417 self()->d->errorMessage = i18n("Library files for \"%1\" not found in paths").arg(libname); 413 self()->d->errorMessage = i18n("Library files for \"%1\" not found in paths").arg(libname);
418 414
419 qDebug("KLibLoader::library could not find library: %s", libname.data()); 415 qDebug("KLibLoader::library could not find library: %s", libname.data());
420#endif 416#endif
421 417
422 } 418 }
423 else 419 else
424 self()->d->errorMessage = QString::null; 420 self()->d->errorMessage = QString::null;
425 } 421 }
426 return libfile; 422 return libfile;
427} 423}
428 424
429 425
430KLibrary* KLibLoader::globalLibrary( const char *name ) 426KLibrary* KLibLoader::globalLibrary( const char *name )
431{ 427{
432KLibrary *tmp; 428KLibrary *tmp;
433/*US 429/*US
434int olt_dlopen_flag = lt_dlopen_flag; 430int olt_dlopen_flag = lt_dlopen_flag;
435 431
436 lt_dlopen_flag |= LT_GLOBAL; 432 lt_dlopen_flag |= LT_GLOBAL;
437 kdDebug(150) << "Loading the next library global with flag " 433 kdDebug(150) << "Loading the next library global with flag "
438 << lt_dlopen_flag 434 << lt_dlopen_flag
439 << "." << endl; 435 << "." << endl;
440*/ 436*/
441 tmp = library(name); 437 tmp = library(name);
442/*US 438/*US
443 lt_dlopen_flag = olt_dlopen_flag; 439 lt_dlopen_flag = olt_dlopen_flag;
444*/ 440*/
445return tmp; 441return tmp;
446} 442}
447 443
448 444
449KLibrary* KLibLoader::library( const char *name ) 445KLibrary* KLibLoader::library( const char *name )
450{ 446{
451 if (!name) 447 if (!name)
452 return 0; 448 return 0;
453 449
454 KLibWrapPrivate* wrap = m_libs[name]; 450 KLibWrapPrivate* wrap = m_libs[name];
455 if (wrap) { 451 if (wrap) {
456 /* Nothing to do to load the library. */ 452 /* Nothing to do to load the library. */
457 wrap->ref_count++; 453 wrap->ref_count++;
458 return wrap->lib; 454 return wrap->lib;
459 } 455 }
460 456
461 /* Test if this library was loaded at some time, but got 457 /* Test if this library was loaded at some time, but got
462 unloaded meanwhile, whithout being dlclose()'ed. */ 458 unloaded meanwhile, whithout being dlclose()'ed. */
463 QPtrListIterator<KLibWrapPrivate> it(d->loaded_stack); 459 QPtrListIterator<KLibWrapPrivate> it(d->loaded_stack);
464 for (; it.current(); ++it) { 460 for (; it.current(); ++it) {
465 if (it.current()->name == name) 461 if (it.current()->name == name)
466 wrap = it.current(); 462 wrap = it.current();
467 } 463 }
468 464
469 if (wrap) { 465 if (wrap) {
470 d->pending_close.removeRef(wrap); 466 d->pending_close.removeRef(wrap);
471 if (!wrap->lib) { 467 if (!wrap->lib) {
472 /* This lib only was in loaded_stack, but not in m_libs. */ 468 /* This lib only was in loaded_stack, but not in m_libs. */
473 wrap->lib = new KLibrary( name, wrap->filename, wrap->handle ); 469 wrap->lib = new KLibrary( name, wrap->filename, wrap->handle );
474 } 470 }
475 wrap->ref_count++; 471 wrap->ref_count++;
476 } else { 472 } else {
477 QString libfile = findLibrary( name ); 473 QString libfile = findLibrary( name );
478 if ( libfile.isEmpty() ) 474 if ( libfile.isEmpty() )
479 return 0; 475 return 0;
480 476#ifdef DESKTOP_VERSION
477 QLibrary *qlib = new QLibrary( libfile.latin1() );
478#else
481 QLibrary *qlib = new QLibrary( libfile.latin1(), QLibrary::Immediately ); 479 QLibrary *qlib = new QLibrary( libfile.latin1(), QLibrary::Immediately );
480#endif
482 481
483//US lt_dlhandle handle = lt_dlopen( libfile.latin1() ); 482//US lt_dlhandle handle = lt_dlopen( libfile.latin1() );
484//US if ( !handle ) 483//US if ( !handle )
485 if ( !qlib ) 484 if ( !qlib )
486 { 485 {
487//US const char* errmsg = lt_dlerror(); 486//US const char* errmsg = lt_dlerror();
488 char* errmsg; 487 char* errmsg;
489 sprintf(errmsg, "KLibLoader::library could not load library: %s", libfile.latin1()); 488 sprintf(errmsg, "KLibLoader::library could not load library: %s", libfile.latin1());
490 qDebug(errmsg); 489 qDebug(errmsg);
491 490
492 if(errmsg) 491 if(errmsg)
493 d->errorMessage = QString::fromLatin1(errmsg); 492 d->errorMessage = QString::fromLatin1(errmsg);
494 else 493 else
495 d->errorMessage = QString::null; 494 d->errorMessage = QString::null;
496 kdWarning(150) << "library=" << name << ": file=" << libfile << ": " << d->errorMessage << endl; 495 kdWarning(150) << "library=" << name << ": file=" << libfile << ": " << d->errorMessage << endl;
497 return 0; 496 return 0;
498 } 497 }
499 else 498 else
500 d->errorMessage = QString::null; 499 d->errorMessage = QString::null;
501 500
502 KLibrary *lib = new KLibrary( name, libfile, qlib ); 501 KLibrary *lib = new KLibrary( name, libfile, qlib );
503 wrap = new KLibWrapPrivate(lib, qlib); 502 wrap = new KLibWrapPrivate(lib, qlib);
504 d->loaded_stack.prepend(wrap); 503 d->loaded_stack.prepend(wrap);
505 } 504 }
506 m_libs.insert( name, wrap ); 505 m_libs.insert( name, wrap );
507 506
508 connect( wrap->lib, SIGNAL( destroyed() ), 507 connect( wrap->lib, SIGNAL( destroyed() ),
509 this, SLOT( slotLibraryDestroyed() ) ); 508 this, SLOT( slotLibraryDestroyed() ) );
510 509
511 return wrap->lib; 510 return wrap->lib;
512} 511}
513 512
514QString KLibLoader::lastErrorMessage() const 513QString KLibLoader::lastErrorMessage() const
515{ 514{
516 return d->errorMessage; 515 return d->errorMessage;
517} 516}
518 517
519void KLibLoader::unloadLibrary( const char *libname ) 518void KLibLoader::unloadLibrary( const char *libname )
520{ 519{
521 KLibWrapPrivate *wrap = m_libs[ libname ]; 520 KLibWrapPrivate *wrap = m_libs[ libname ];
522 if (!wrap) 521 if (!wrap)
523 return; 522 return;
524 if (--wrap->ref_count) 523 if (--wrap->ref_count)
525 return; 524 return;
526 525
527// kdDebug(150) << "closing library " << libname << endl; 526// kdDebug(150) << "closing library " << libname << endl;
528 527
529 m_libs.remove( libname ); 528 m_libs.remove( libname );
530 529
531 disconnect( wrap->lib, SIGNAL( destroyed() ), 530 disconnect( wrap->lib, SIGNAL( destroyed() ),
532 this, SLOT( slotLibraryDestroyed() ) ); 531 this, SLOT( slotLibraryDestroyed() ) );
533 close_pending( wrap ); 532 close_pending( wrap );
534} 533}
535 534
536KLibFactory* KLibLoader::factory( const char* name ) 535KLibFactory* KLibLoader::factory( const char* name )
537{ 536{
538 KLibrary* lib = library( name ); 537 KLibrary* lib = library( name );
539 if ( !lib ) 538 if ( !lib )
540 return 0; 539 return 0;
541 540
542 return lib->factory(); 541 return lib->factory();
543} 542}
544 543
545void KLibLoader::slotLibraryDestroyed() 544void KLibLoader::slotLibraryDestroyed()
546{ 545{
547 const KLibrary *lib = static_cast<const KLibrary *>( sender() ); 546 const KLibrary *lib = static_cast<const KLibrary *>( sender() );
548 547
549 QAsciiDictIterator<KLibWrapPrivate> it( m_libs ); 548 QAsciiDictIterator<KLibWrapPrivate> it( m_libs );
550 for (; it.current(); ++it ) 549 for (; it.current(); ++it )
551 if ( it.current()->lib == lib ) 550 if ( it.current()->lib == lib )
552 { 551 {
553 KLibWrapPrivate *wrap = it.current(); 552 KLibWrapPrivate *wrap = it.current();
554 wrap->lib = 0; /* the KLibrary object is already away */ 553 wrap->lib = 0; /* the KLibrary object is already away */
555 m_libs.remove( it.currentKey() ); 554 m_libs.remove( it.currentKey() );
556 close_pending( wrap ); 555 close_pending( wrap );
557 return; 556 return;
558 } 557 }
559} 558}
560 559
561void KLibLoader::close_pending(KLibWrapPrivate *wrap) 560void KLibLoader::close_pending(KLibWrapPrivate *wrap)
562{ 561{
563 if (wrap && !d->pending_close.containsRef( wrap )) 562 if (wrap && !d->pending_close.containsRef( wrap ))
564 d->pending_close.append( wrap ); 563 d->pending_close.append( wrap );
565 564
566 /* First delete all KLibrary objects in pending_close, but _don't_ unload 565 /* First delete all KLibrary objects in pending_close, but _don't_ unload
567 the DSO behind it. */ 566 the DSO behind it. */
568 QPtrListIterator<KLibWrapPrivate> it(d->pending_close); 567 QPtrListIterator<KLibWrapPrivate> it(d->pending_close);
569 for (; it.current(); ++it) { 568 for (; it.current(); ++it) {
570 wrap = it.current(); 569 wrap = it.current();
571 if (wrap->lib) { 570 if (wrap->lib) {
572 disconnect( wrap->lib, SIGNAL( destroyed() ), 571 disconnect( wrap->lib, SIGNAL( destroyed() ),
573 this, SLOT( slotLibraryDestroyed() ) ); 572 this, SLOT( slotLibraryDestroyed() ) );
574 delete wrap->lib; 573 delete wrap->lib;
575 wrap->lib = 0; 574 wrap->lib = 0;
576 } 575 }
577 } 576 }
578 577
579 if (d->unload_mode == KLibLoaderPrivate::DONT_UNLOAD) return; 578 if (d->unload_mode == KLibLoaderPrivate::DONT_UNLOAD) return;
580 579
581 bool deleted_one = false; 580 bool deleted_one = false;
582 while ((wrap = d->loaded_stack.first())) { 581 while ((wrap = d->loaded_stack.first())) {
583 /* Let's first see, if we want to try to unload this lib. 582 /* Let's first see, if we want to try to unload this lib.
584 If the env. var KDE_DOUNLOAD is set, we try to unload every lib. 583 If the env. var KDE_DOUNLOAD is set, we try to unload every lib.
585 If not, we look at the lib itself, and unload it only, if it exports 584 If not, we look at the lib itself, and unload it only, if it exports
586 the symbol __kde_do_unload. */ 585 the symbol __kde_do_unload. */
587 if (d->unload_mode != KLibLoaderPrivate::UNLOAD 586 if (d->unload_mode != KLibLoaderPrivate::UNLOAD
588 && wrap->unload_mode != KLibWrapPrivate::UNLOAD) 587 && wrap->unload_mode != KLibWrapPrivate::UNLOAD)
589 break; 588 break;
590 589
591 /* Now ensure, that the libs are only unloaded in the reverse direction 590 /* Now ensure, that the libs are only unloaded in the reverse direction
592 they were loaded. */ 591 they were loaded. */
593 if (!d->pending_close.containsRef( wrap )) { 592 if (!d->pending_close.containsRef( wrap )) {
594 if (!deleted_one) 593 if (!deleted_one)
595 /* Only diagnose, if we really haven't deleted anything. */ 594 /* Only diagnose, if we really haven't deleted anything. */
596// kdDebug(150) << "try to dlclose " << wrap->name << ": not yet" << endl; 595// kdDebug(150) << "try to dlclose " << wrap->name << ": not yet" << endl;
597 break; 596 break;
598 } 597 }
599 598
600// kdDebug(150) << "try to dlclose " << wrap->name << ": yes, done." << endl; 599// kdDebug(150) << "try to dlclose " << wrap->name << ": yes, done." << endl;
601 600
601#if 0
602#ifndef Q_WS_QWS 602#ifndef Q_WS_QWS
603 if ( !deleted_one ) { 603 if ( !deleted_one ) {
604 /* Only do the hack once in this loop. 604 /* Only do the hack once in this loop.
605 WABA: *HACK* 605 WABA: *HACK*
606 We need to make sure to clear the clipboard before unloading a DSO 606 We need to make sure to clear the clipboard before unloading a DSO
607 because the DSO could have defined an object derived from QMimeSource 607 because the DSO could have defined an object derived from QMimeSource
608 and placed that on the clipboard. */ 608 and placed that on the clipboard. */
609 /*kapp->clipboard()->clear();*/ 609 /*kapp->clipboard()->clear();*/
610 610
611 /* Well.. let's do something more subtle... convert the clipboard context 611 /* Well.. let's do something more subtle... convert the clipboard context
612 to text. That should be safe as it only uses objects defined by Qt. */ 612 to text. That should be safe as it only uses objects defined by Qt. */
613 613
614 QWidgetList *widgetlist = QApplication::topLevelWidgets(); 614 QWidgetList *widgetlist = QApplication::topLevelWidgets();
615 QWidget *co = widgetlist->first(); 615 QWidget *co = widgetlist->first();
616 while (co) { 616 while (co) {
617 if (qstrcmp(co->name(), "internal clipboard owner") == 0) { 617 if (qstrcmp(co->name(), "internal clipboard owner") == 0) {
618 if (XGetSelectionOwner(co->x11Display(), XA_PRIMARY) == co->winId()) 618 if (XGetSelectionOwner(co->x11Display(), XA_PRIMARY) == co->winId())
619 kapp->clipboard()->setText(kapp->clipboard()->text()); 619 kapp->clipboard()->setText(kapp->clipboard()->text());
620 620
621 break; 621 break;
622 } 622 }
623 co = widgetlist->next(); 623 co = widgetlist->next();
624 } 624 }
625 delete widgetlist; 625 delete widgetlist;
626 } 626 }
627#else 627#else
628 // FIXME(E): Implement in Qt Embedded 628 // FIXME(E): Implement in Qt Embedded
629#endif 629#endif
630 630
631#endif // 0
631 deleted_one = true; 632 deleted_one = true;
632//US lt_dlclose(wrap->handle); 633//US lt_dlclose(wrap->handle);
633 wrap->handle->unload(); 634 wrap->handle->unload();
634 635
635 d->pending_close.removeRef(wrap); 636 d->pending_close.removeRef(wrap);
636 /* loaded_stack is AutoDelete, so wrap is freed */ 637 /* loaded_stack is AutoDelete, so wrap is freed */
637 d->loaded_stack.remove(); 638 d->loaded_stack.remove();
638 } 639 }
639} 640}
640 641
641void KLibLoader::virtual_hook( int, void* ) 642void KLibLoader::virtual_hook( int, void* )
642{ /*BASE::virtual_hook( id, data );*/ } 643{ /*BASE::virtual_hook( id, data );*/ }
643 644
644void KLibFactory::virtual_hook( int, void* ) 645void KLibFactory::virtual_hook( int, void* )
645{ /*BASE::virtual_hook( id, data );*/ } 646{ /*BASE::virtual_hook( id, data );*/ }
646 647
647//US #include "klibloader.moc" 648//US #include "klibloader.moc"
diff --git a/microkde/kdecore/kstandarddirs.cpp b/microkde/kdecore/kstandarddirs.cpp
index 1a1e027..7f51d78 100644
--- a/microkde/kdecore/kstandarddirs.cpp
+++ b/microkde/kdecore/kstandarddirs.cpp
@@ -1,142 +1,141 @@
1/* This file is part of the KDE libraries 1/* This file is part of the KDE libraries
2 Copyright (C) 1999 Sirtaj Singh Kang <taj@kde.org> 2 Copyright (C) 1999 Sirtaj Singh Kang <taj@kde.org>
3 Copyright (C) 1999 Stephan Kulow <coolo@kde.org> 3 Copyright (C) 1999 Stephan Kulow <coolo@kde.org>
4 Copyright (C) 1999 Waldo Bastian <bastian@kde.org> 4 Copyright (C) 1999 Waldo Bastian <bastian@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License version 2 as published by the Free Software Foundation. 8 License version 2 as published by the Free Software Foundation.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21/* 21/*
22 * Author: Stephan Kulow <coolo@kde.org> and Sirtaj Singh Kang <taj@kde.org> 22 * Author: Stephan Kulow <coolo@kde.org> and Sirtaj Singh Kang <taj@kde.org>
23 * Version:$Id$ 23 * Version:$Id$
24 * Generated:Thu Mar 5 16:05:28 EST 1998 24 * Generated:Thu Mar 5 16:05:28 EST 1998
25 */ 25 */
26 26
27//US #include "config.h" 27//US #include "config.h"
28 28
29#include <stdlib.h> 29#include <stdlib.h>
30#include <assert.h> 30#include <assert.h>
31//US#include <errno.h> 31//US#include <errno.h>
32//US #ifdef HAVE_SYS_STAT_H 32//US #ifdef HAVE_SYS_STAT_H
33//US #include <sys/stat.h> 33//US #include <sys/stat.h>
34//US #endif 34//US #endif
35//US#include <sys/types.h> 35//US#include <sys/types.h>
36//US#include <dirent.h> 36//US#include <dirent.h>
37//US#include <pwd.h> 37//US#include <pwd.h>
38 38
39#include <qregexp.h> 39#include <qregexp.h>
40#include <qasciidict.h> 40#include <qasciidict.h>
41#include <qdict.h> 41#include <qdict.h>
42#include <qdir.h> 42#include <qdir.h>
43#include <qfileinfo.h> 43#include <qfileinfo.h>
44#include <qstring.h> 44#include <qstring.h>
45#include <qstringlist.h> 45#include <qstringlist.h>
46#include <qpe/qpeapplication.h>
47 46
48#include "kstandarddirs.h" 47#include "kstandarddirs.h"
49#include "kconfig.h" 48#include "kconfig.h"
50#include "kdebug.h" 49#include "kdebug.h"
51//US #include "kinstance.h" 50//US #include "kinstance.h"
52#include "kshell.h" 51#include "kshell.h"
53//US#include <sys/param.h> 52//US#include <sys/param.h>
54//US#include <unistd.h> 53//US#include <unistd.h>
55 54
56//US 55//US
57QString KStandardDirs::mAppDir = QString::null; 56QString KStandardDirs::mAppDir = QString::null;
58 57
59 58
60template class QDict<QStringList>; 59template class QDict<QStringList>;
61 60
62#if 0 61#if 0
63#include <qtextedit.h> 62#include <qtextedit.h>
64void ddd( QString op ) 63void ddd( QString op )
65{ 64{
66 static QTextEdit * dot = 0; 65 static QTextEdit * dot = 0;
67 if ( ! dot ) 66 if ( ! dot )
68 dot = new QTextEdit(); 67 dot = new QTextEdit();
69 68
70 dot->show(); 69 dot->show();
71 70
72 dot->append( op ); 71 dot->append( op );
73 72
74} 73}
75#endif 74#endif
76class KStandardDirs::KStandardDirsPrivate 75class KStandardDirs::KStandardDirsPrivate
77{ 76{
78public: 77public:
79 KStandardDirsPrivate() 78 KStandardDirsPrivate()
80 : restrictionsActive(false), 79 : restrictionsActive(false),
81 dataRestrictionActive(false) 80 dataRestrictionActive(false)
82 { } 81 { }
83 82
84 bool restrictionsActive; 83 bool restrictionsActive;
85 bool dataRestrictionActive; 84 bool dataRestrictionActive;
86 QAsciiDict<bool> restrictions; 85 QAsciiDict<bool> restrictions;
87 QStringList xdgdata_prefixes; 86 QStringList xdgdata_prefixes;
88 QStringList xdgconf_prefixes; 87 QStringList xdgconf_prefixes;
89}; 88};
90 89
91static const char* const types[] = {"html", "icon", "apps", "sound", 90static const char* const types[] = {"html", "icon", "apps", "sound",
92 "data", "locale", "services", "mime", 91 "data", "locale", "services", "mime",
93 "servicetypes", "config", "exe", 92 "servicetypes", "config", "exe",
94 "wallpaper", "lib", "pixmap", "templates", 93 "wallpaper", "lib", "pixmap", "templates",
95 "module", "qtplugins", 94 "module", "qtplugins",
96 "xdgdata-apps", "xdgdata-dirs", "xdgconf-menu", 0 }; 95 "xdgdata-apps", "xdgdata-dirs", "xdgconf-menu", 0 };
97 96
98static int tokenize( QStringList& token, const QString& str, 97static int tokenize( QStringList& token, const QString& str,
99 const QString& delim ); 98 const QString& delim );
100 99
101KStandardDirs::KStandardDirs( ) : addedCustoms(false) 100KStandardDirs::KStandardDirs( ) : addedCustoms(false)
102{ 101{
103 d = new KStandardDirsPrivate; 102 d = new KStandardDirsPrivate;
104 dircache.setAutoDelete(true); 103 dircache.setAutoDelete(true);
105 relatives.setAutoDelete(true); 104 relatives.setAutoDelete(true);
106 absolutes.setAutoDelete(true); 105 absolutes.setAutoDelete(true);
107 savelocations.setAutoDelete(true); 106 savelocations.setAutoDelete(true);
108 addKDEDefaults(); 107 addKDEDefaults();
109} 108}
110 109
111KStandardDirs::~KStandardDirs() 110KStandardDirs::~KStandardDirs()
112{ 111{
113 delete d; 112 delete d;
114} 113}
115 114
116bool KStandardDirs::isRestrictedResource(const char *type, const QString& relPath) const 115bool KStandardDirs::isRestrictedResource(const char *type, const QString& relPath) const
117{ 116{
118 if (!d || !d->restrictionsActive) 117 if (!d || !d->restrictionsActive)
119 return false; 118 return false;
120 119
121 if (d->restrictions[type]) 120 if (d->restrictions[type])
122 return true; 121 return true;
123 122
124 if (strcmp(type, "data")==0) 123 if (strcmp(type, "data")==0)
125 { 124 {
126 applyDataRestrictions(relPath); 125 applyDataRestrictions(relPath);
127 if (d->dataRestrictionActive) 126 if (d->dataRestrictionActive)
128 { 127 {
129 d->dataRestrictionActive = false; 128 d->dataRestrictionActive = false;
130 return true; 129 return true;
131 } 130 }
132 } 131 }
133 return false; 132 return false;
134} 133}
135 134
136void KStandardDirs::applyDataRestrictions(const QString &relPath) const 135void KStandardDirs::applyDataRestrictions(const QString &relPath) const
137{ 136{
138 QString key; 137 QString key;
139 int i = relPath.find('/'); 138 int i = relPath.find('/');
140 if (i != -1) 139 if (i != -1)
141 key = "data_"+relPath.left(i); 140 key = "data_"+relPath.left(i);
142 else 141 else
@@ -1132,193 +1131,193 @@ bool KStandardDirs::makeDir(const QString& dir2, int mode)
1132 if (dir.at(0) != '/') 1131 if (dir.at(0) != '/')
1133 return false; 1132 return false;
1134#endif 1133#endif
1135 1134
1136 QString target = dir; 1135 QString target = dir;
1137 uint len = target.length(); 1136 uint len = target.length();
1138#ifndef _WIN32_ 1137#ifndef _WIN32_
1139 // append trailing slash if missing 1138 // append trailing slash if missing
1140 if (dir.at(len - 1) != '/') 1139 if (dir.at(len - 1) != '/')
1141 target += '/'; 1140 target += '/';
1142#endif 1141#endif
1143 1142
1144 QString base(""); 1143 QString base("");
1145 uint i = 1; 1144 uint i = 1;
1146 1145
1147 while( i < len ) 1146 while( i < len )
1148 { 1147 {
1149//US struct stat st; 1148//US struct stat st;
1150#ifndef _WIN32_ 1149#ifndef _WIN32_
1151 int pos = target.find('/', i); 1150 int pos = target.find('/', i);
1152#else 1151#else
1153 int pos = target.find('\\', i); 1152 int pos = target.find('\\', i);
1154#endif 1153#endif
1155 if ( pos < 0 ) 1154 if ( pos < 0 )
1156 return true; 1155 return true;
1157 base += target.mid(i - 1, pos - i + 1); 1156 base += target.mid(i - 1, pos - i + 1);
1158 //QMessageBox::information( 0,"cap111", base, 1 ); 1157 //QMessageBox::information( 0,"cap111", base, 1 );
1159/*US 1158/*US
1160 QCString baseEncoded = QFile::encodeName(base); 1159 QCString baseEncoded = QFile::encodeName(base);
1161 // bail out if we encountered a problem 1160 // bail out if we encountered a problem
1162 if (stat(baseEncoded, &st) != 0) 1161 if (stat(baseEncoded, &st) != 0)
1163 { 1162 {
1164 // Directory does not exist.... 1163 // Directory does not exist....
1165 // Or maybe a dangling symlink ? 1164 // Or maybe a dangling symlink ?
1166 if (lstat(baseEncoded, &st) == 0) 1165 if (lstat(baseEncoded, &st) == 0)
1167 (void)unlink(baseEncoded); // try removing 1166 (void)unlink(baseEncoded); // try removing
1168 1167
1169 1168
1170 if ( mkdir(baseEncoded, (mode_t) mode) != 0) { 1169 if ( mkdir(baseEncoded, (mode_t) mode) != 0) {
1171 perror("trying to create local folder"); 1170 perror("trying to create local folder");
1172 return false; // Couldn't create it :-( 1171 return false; // Couldn't create it :-(
1173 } 1172 }
1174 } 1173 }
1175*/ 1174*/
1176 1175
1177 if (dirObj.exists(base) == false) 1176 if (dirObj.exists(base) == false)
1178 { 1177 {
1179 //qDebug("KStandardDirs::makeDir try to create : %s" , base.latin1()); 1178 //qDebug("KStandardDirs::makeDir try to create : %s" , base.latin1());
1180 if (dirObj.mkdir(base) != true) 1179 if (dirObj.mkdir(base) != true)
1181 { 1180 {
1182 qDebug("KStandardDirs::makeDir could not create: %s" , base.latin1()); 1181 qDebug("KStandardDirs::makeDir could not create: %s" , base.latin1());
1183 return false; 1182 return false;
1184 } 1183 }
1185 } 1184 }
1186 1185
1187 i = pos + 1; 1186 i = pos + 1;
1188 } 1187 }
1189 return true; 1188 return true;
1190 1189
1191} 1190}
1192 1191
1193static QString readEnvPath(const char *env) 1192static QString readEnvPath(const char *env)
1194{ 1193{
1195#ifdef _WIN32_ 1194#ifdef _WIN32_
1196 return ""; 1195 return "";
1197#else 1196#else
1198 QCString c_path = getenv(env); 1197 QCString c_path = getenv(env);
1199 if (c_path.isEmpty()) 1198 if (c_path.isEmpty())
1200 return QString::null; 1199 return QString::null;
1201 return QFile::decodeName(c_path); 1200 return QFile::decodeName(c_path);
1202#endif 1201#endif
1203} 1202}
1204 1203
1205void KStandardDirs::addKDEDefaults() 1204void KStandardDirs::addKDEDefaults()
1206{ 1205{
1207 //qDebug("ERROR: KStandardDirs::addKDEDefaults() called "); 1206 //qDebug("ERROR: KStandardDirs::addKDEDefaults() called ");
1208 //return; 1207 //return;
1209 QStringList kdedirList; 1208 QStringList kdedirList;
1210 1209
1211 // begin KDEDIRS 1210 // begin KDEDIRS
1212 QString kdedirs = readEnvPath("MICROKDEDIRS"); 1211 QString kdedirs = readEnvPath("MICROKDEDIRS");
1213 if (!kdedirs.isEmpty()) 1212 if (!kdedirs.isEmpty())
1214 { 1213 {
1215 tokenize(kdedirList, kdedirs, ":"); 1214 tokenize(kdedirList, kdedirs, ":");
1216 } 1215 }
1217 else 1216 else
1218 { 1217 {
1219 QString kdedir = readEnvPath("MICROKDEDIR"); 1218 QString kdedir = readEnvPath("MICROKDEDIR");
1220 if (!kdedir.isEmpty()) 1219 if (!kdedir.isEmpty())
1221 { 1220 {
1222 kdedir = KShell::tildeExpand(kdedir); 1221 kdedir = KShell::tildeExpand(kdedir);
1223 kdedirList.append(kdedir); 1222 kdedirList.append(kdedir);
1224 } 1223 }
1225 } 1224 }
1226//US kdedirList.append(KDEDIR); 1225//US kdedirList.append(KDEDIR);
1227//US for embedded, add qtopia dir as kdedir 1226//US for embedded, add qtopia dir as kdedir
1228 kdedirList.append(QPEApplication::qpeDir()); 1227 kdedirList.append(readEnvPath("QPEDIR" ));
1229 1228
1230#ifdef __KDE_EXECPREFIX 1229#ifdef __KDE_EXECPREFIX
1231 QString execPrefix(__KDE_EXECPREFIX); 1230 QString execPrefix(__KDE_EXECPREFIX);
1232 if (execPrefix!="NONE") 1231 if (execPrefix!="NONE")
1233 kdedirList.append(execPrefix); 1232 kdedirList.append(execPrefix);
1234#endif 1233#endif
1235 1234
1236 QString localKdeDir; 1235 QString localKdeDir;
1237 1236
1238//US if (getuid()) 1237//US if (getuid())
1239 if (true) 1238 if (true)
1240 { 1239 {
1241 localKdeDir = readEnvPath("MICROKDEHOME"); 1240 localKdeDir = readEnvPath("MICROKDEHOME");
1242 if (!localKdeDir.isEmpty()) 1241 if (!localKdeDir.isEmpty())
1243 { 1242 {
1244 if (localKdeDir.at(localKdeDir.length()-1) != '/') 1243 if (localKdeDir.at(localKdeDir.length()-1) != '/')
1245 localKdeDir += '/'; 1244 localKdeDir += '/';
1246 } 1245 }
1247 else 1246 else
1248 { 1247 {
1249 localKdeDir = QDir::homeDirPath() + "/kdepim/"; 1248 localKdeDir = QDir::homeDirPath() + "/kdepim/";
1250 } 1249 }
1251 } 1250 }
1252 else 1251 else
1253 { 1252 {
1254 // We treat root different to prevent root messing up the 1253 // We treat root different to prevent root messing up the
1255 // file permissions in the users home directory. 1254 // file permissions in the users home directory.
1256 localKdeDir = readEnvPath("MICROKDEROOTHOME"); 1255 localKdeDir = readEnvPath("MICROKDEROOTHOME");
1257 if (!localKdeDir.isEmpty()) 1256 if (!localKdeDir.isEmpty())
1258 { 1257 {
1259 if (localKdeDir.at(localKdeDir.length()-1) != '/') 1258 if (localKdeDir.at(localKdeDir.length()-1) != '/')
1260 localKdeDir += '/'; 1259 localKdeDir += '/';
1261 } 1260 }
1262 else 1261 else
1263 { 1262 {
1264//US struct passwd *pw = getpwuid(0); 1263//US struct passwd *pw = getpwuid(0);
1265//US localKdeDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.microkde/"; 1264//US localKdeDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.microkde/";
1266 qDebug("KStandardDirs::addKDEDefaults: 1 has to be fixed"); 1265 qDebug("KStandardDirs::addKDEDefaults: 1 has to be fixed");
1267 } 1266 }
1268 1267
1269 } 1268 }
1270 1269
1271//US localKdeDir = appDir(); 1270//US localKdeDir = appDir();
1272 1271
1273//US 1272//US
1274// qDebug("KStandardDirs::addKDEDefaults: localKdeDir=%s", localKdeDir.latin1()); 1273// qDebug("KStandardDirs::addKDEDefaults: localKdeDir=%s", localKdeDir.latin1());
1275 if (localKdeDir != "-/") 1274 if (localKdeDir != "-/")
1276 { 1275 {
1277 localKdeDir = KShell::tildeExpand(localKdeDir); 1276 localKdeDir = KShell::tildeExpand(localKdeDir);
1278 addPrefix(localKdeDir); 1277 addPrefix(localKdeDir);
1279 } 1278 }
1280 1279
1281 for (QStringList::ConstIterator it = kdedirList.begin(); 1280 for (QStringList::ConstIterator it = kdedirList.begin();
1282 it != kdedirList.end(); it++) 1281 it != kdedirList.end(); it++)
1283 { 1282 {
1284 QString dir = KShell::tildeExpand(*it); 1283 QString dir = KShell::tildeExpand(*it);
1285 addPrefix(dir); 1284 addPrefix(dir);
1286 } 1285 }
1287 // end KDEDIRS 1286 // end KDEDIRS
1288 1287
1289 // begin XDG_CONFIG_XXX 1288 // begin XDG_CONFIG_XXX
1290 QStringList xdgdirList; 1289 QStringList xdgdirList;
1291 QString xdgdirs = readEnvPath("XDG_CONFIG_DIRS"); 1290 QString xdgdirs = readEnvPath("XDG_CONFIG_DIRS");
1292 if (!xdgdirs.isEmpty()) 1291 if (!xdgdirs.isEmpty())
1293 { 1292 {
1294 tokenize(xdgdirList, xdgdirs, ":"); 1293 tokenize(xdgdirList, xdgdirs, ":");
1295 } 1294 }
1296 else 1295 else
1297 { 1296 {
1298 xdgdirList.clear(); 1297 xdgdirList.clear();
1299 xdgdirList.append("/etc/xdg"); 1298 xdgdirList.append("/etc/xdg");
1300 } 1299 }
1301 1300
1302 QString localXdgDir = readEnvPath("XDG_CONFIG_HOME"); 1301 QString localXdgDir = readEnvPath("XDG_CONFIG_HOME");
1303 if (!localXdgDir.isEmpty()) 1302 if (!localXdgDir.isEmpty())
1304 { 1303 {
1305 if (localXdgDir.at(localXdgDir.length()-1) != '/') 1304 if (localXdgDir.at(localXdgDir.length()-1) != '/')
1306 localXdgDir += '/'; 1305 localXdgDir += '/';
1307 } 1306 }
1308 else 1307 else
1309 { 1308 {
1310//US if (getuid()) 1309//US if (getuid())
1311 if (true) 1310 if (true)
1312 { 1311 {
1313 localXdgDir = QDir::homeDirPath() + "/.config/"; 1312 localXdgDir = QDir::homeDirPath() + "/.config/";
1314 } 1313 }
1315 else 1314 else
1316 { 1315 {
1317//US struct passwd *pw = getpwuid(0); 1316//US struct passwd *pw = getpwuid(0);
1318//US localXdgDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.config/"; 1317//US localXdgDir = QFile::decodeName((pw && pw->pw_dir) ? pw->pw_dir : "/root") + "/.config/";
1319 qDebug("KStandardDirs::addKDEDefaults: 2 has to be fixed"); 1318 qDebug("KStandardDirs::addKDEDefaults: 2 has to be fixed");
1320 } 1319 }
1321 } 1320 }
1322 1321
1323 localXdgDir = KShell::tildeExpand(localXdgDir); 1322 localXdgDir = KShell::tildeExpand(localXdgDir);
1324 addXdgConfigPrefix(localXdgDir); 1323 addXdgConfigPrefix(localXdgDir);
diff --git a/microkde/kdeui/ktoolbar.cpp b/microkde/kdeui/ktoolbar.cpp
index 92cb8d2..79b0f9d 100644
--- a/microkde/kdeui/ktoolbar.cpp
+++ b/microkde/kdeui/ktoolbar.cpp
@@ -931,193 +931,193 @@ int KToolBar::maxWidth()
931} 931}
932 932
933 933
934void KToolBar::setTitle (const QString& _title) 934void KToolBar::setTitle (const QString& _title)
935{ 935{
936 setLabel( _title ); 936 setLabel( _title );
937} 937}
938 938
939 939
940void KToolBar::enableFloating (bool ) 940void KToolBar::enableFloating (bool )
941{ 941{
942} 942}
943 943
944 944
945void KToolBar::setIconText(IconText it) 945void KToolBar::setIconText(IconText it)
946{ 946{
947 setIconText( it, true ); 947 setIconText( it, true );
948} 948}
949 949
950 950
951void KToolBar::setIconText(IconText icontext, bool update) 951void KToolBar::setIconText(IconText icontext, bool update)
952{ 952{
953 bool doUpdate=false; 953 bool doUpdate=false;
954 954
955 if (icontext != d->m_iconText) { 955 if (icontext != d->m_iconText) {
956 d->m_iconText = icontext; 956 d->m_iconText = icontext;
957 doUpdate=true; 957 doUpdate=true;
958 } 958 }
959 959
960 if (update == false) 960 if (update == false)
961 return; 961 return;
962 962
963 if (doUpdate) 963 if (doUpdate)
964 emit modechange(); // tell buttons what happened 964 emit modechange(); // tell buttons what happened
965 965
966 // ugly hack to force a QMainWindow::triggerLayout( TRUE ) 966 // ugly hack to force a QMainWindow::triggerLayout( TRUE )
967 if ( mainWindow() ) { 967 if ( mainWindow() ) {
968 QMainWindow *mw = mainWindow(); 968 QMainWindow *mw = mainWindow();
969 mw->setUpdatesEnabled( FALSE ); 969 mw->setUpdatesEnabled( FALSE );
970 mw->setToolBarsMovable( !mw->toolBarsMovable() ); 970 mw->setToolBarsMovable( !mw->toolBarsMovable() );
971 mw->setToolBarsMovable( !mw->toolBarsMovable() ); 971 mw->setToolBarsMovable( !mw->toolBarsMovable() );
972 mw->setUpdatesEnabled( TRUE ); 972 mw->setUpdatesEnabled( TRUE );
973 } 973 }
974} 974}
975 975
976 976
977KToolBar::IconText KToolBar::iconText() const 977KToolBar::IconText KToolBar::iconText() const
978{ 978{
979 return d->m_iconText; 979 return d->m_iconText;
980} 980}
981 981
982 982
983void KToolBar::setIconSize(int size) 983void KToolBar::setIconSize(int size)
984{ 984{
985 setIconSize( size, true ); 985 setIconSize( size, true );
986} 986}
987 987
988void KToolBar::setIconSize(int size, bool update) 988void KToolBar::setIconSize(int size, bool update)
989{ 989{
990 bool doUpdate=false; 990 bool doUpdate=false;
991 991
992 if ( size != d->m_iconSize ) { 992 if ( size != d->m_iconSize ) {
993 d->m_iconSize = size; 993 d->m_iconSize = size;
994 doUpdate=true; 994 doUpdate=true;
995 } 995 }
996 996
997 if (update == false) 997 if (update == false)
998 return; 998 return;
999 999
1000 if (doUpdate) 1000 if (doUpdate)
1001 emit modechange(); // tell buttons what happened 1001 emit modechange(); // tell buttons what happened
1002 1002
1003 // ugly hack to force a QMainWindow::triggerLayout( TRUE ) 1003 // ugly hack to force a QMainWindow::triggerLayout( TRUE )
1004 if ( mainWindow() ) { 1004 if ( mainWindow() ) {
1005 QMainWindow *mw = mainWindow(); 1005 QMainWindow *mw = mainWindow();
1006 mw->setUpdatesEnabled( FALSE ); 1006 mw->setUpdatesEnabled( FALSE );
1007 mw->setToolBarsMovable( !mw->toolBarsMovable() ); 1007 mw->setToolBarsMovable( !mw->toolBarsMovable() );
1008 mw->setToolBarsMovable( !mw->toolBarsMovable() ); 1008 mw->setToolBarsMovable( !mw->toolBarsMovable() );
1009 mw->setUpdatesEnabled( TRUE ); 1009 mw->setUpdatesEnabled( TRUE );
1010 } 1010 }
1011} 1011}
1012 1012
1013 1013
1014int KToolBar::iconSize() const 1014int KToolBar::iconSize() const
1015{ 1015{
1016/*US 1016/*US
1017 if ( !d->m_iconSize ) // default value? 1017 if ( !d->m_iconSize ) // default value?
1018 { 1018 {
1019 if (!::qstrcmp(QObject::name(), "mainToolBar")) 1019 if (!::qstrcmp(QObject::name(), "mainToolBar"))
1020 return KGlobal::iconLoader()->currentSize(KIcon::MainToolbar); 1020 return KGlobal::iconLoader()->currentSize(KIcon::MainToolbar);
1021 else 1021 else
1022 return KGlobal::iconLoader()->currentSize(KIcon::Toolbar); 1022 return KGlobal::iconLoader()->currentSize(KIcon::Toolbar);
1023 } 1023 }
1024 return d->m_iconSize; 1024 return d->m_iconSize;
1025*/ 1025*/
1026 int ret = 18; 1026 int ret = 18;
1027 if ( QApplication::desktop()->width() > 320 && QApplication::desktop()->width() < 650 ) 1027 if ( QApplication::desktop()->width() > 320 )
1028 ret = 30; 1028 ret = 30;
1029 return ret; 1029 return ret;
1030} 1030}
1031 1031
1032 1032
1033void KToolBar::setEnableContextMenu(bool enable ) 1033void KToolBar::setEnableContextMenu(bool enable )
1034{ 1034{
1035 d->m_enableContext = enable; 1035 d->m_enableContext = enable;
1036} 1036}
1037 1037
1038 1038
1039bool KToolBar::contextMenuEnabled() const 1039bool KToolBar::contextMenuEnabled() const
1040{ 1040{
1041 return d->m_enableContext; 1041 return d->m_enableContext;
1042} 1042}
1043 1043
1044 1044
1045void KToolBar::setItemNoStyle(int id, bool no_style ) 1045void KToolBar::setItemNoStyle(int id, bool no_style )
1046{ 1046{
1047 Id2WidgetMap::Iterator it = id2widget.find( id ); 1047 Id2WidgetMap::Iterator it = id2widget.find( id );
1048 if ( it == id2widget.end() ) 1048 if ( it == id2widget.end() )
1049 return; 1049 return;
1050//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it ); 1050//US KToolBarButton * button = dynamic_cast<KToolBarButton *>( *it );
1051 KToolBarButton * button = (KToolBarButton *)( *it ); 1051 KToolBarButton * button = (KToolBarButton *)( *it );
1052 if (button) 1052 if (button)
1053 button->setNoStyle( no_style ); 1053 button->setNoStyle( no_style );
1054} 1054}
1055 1055
1056 1056
1057void KToolBar::setFlat (bool flag) 1057void KToolBar::setFlat (bool flag)
1058{ 1058{
1059 if ( !mainWindow() ) 1059 if ( !mainWindow() )
1060 return; 1060 return;
1061 if ( flag ) 1061 if ( flag )
1062//US mainWindow()->moveDockWindow( this, DockMinimized ); 1062//US mainWindow()->moveDockWindow( this, DockMinimized );
1063 mainWindow()->moveToolBar( this, QMainWindow::Minimized ); 1063 mainWindow()->moveToolBar( this, QMainWindow::Minimized );
1064 else 1064 else
1065//US mainWindow()->moveDockWindow( this, DockTop ); 1065//US mainWindow()->moveDockWindow( this, DockTop );
1066 mainWindow()->moveToolBar( this, QMainWindow::Top ); 1066 mainWindow()->moveToolBar( this, QMainWindow::Top );
1067 // And remember to save the new look later 1067 // And remember to save the new look later
1068/*US 1068/*US
1069 if ( mainWindow()->inherits( "KMainWindow" ) ) 1069 if ( mainWindow()->inherits( "KMainWindow" ) )
1070 static_cast<KMainWindow *>(mainWindow())->setSettingsDirty(); 1070 static_cast<KMainWindow *>(mainWindow())->setSettingsDirty();
1071*/ 1071*/
1072} 1072}
1073 1073
1074 1074
1075int KToolBar::count() const 1075int KToolBar::count() const
1076{ 1076{
1077 return id2widget.count(); 1077 return id2widget.count();
1078} 1078}
1079 1079
1080 1080
1081void KToolBar::saveState() 1081void KToolBar::saveState()
1082{ 1082{
1083/*US 1083/*US
1084 // first, try to save to the xml file 1084 // first, try to save to the xml file
1085 if ( d->m_xmlguiClient && !d->m_xmlguiClient->xmlFile().isEmpty() ) { 1085 if ( d->m_xmlguiClient && !d->m_xmlguiClient->xmlFile().isEmpty() ) {
1086 // go down one level to get to the right tags 1086 // go down one level to get to the right tags
1087 QDomElement elem = d->m_xmlguiClient->domDocument().documentElement().toElement(); 1087 QDomElement elem = d->m_xmlguiClient->domDocument().documentElement().toElement();
1088 elem = elem.firstChild().toElement(); 1088 elem = elem.firstChild().toElement();
1089 QString barname(!::qstrcmp(name(), "unnamed") ? "mainToolBar" : name()); 1089 QString barname(!::qstrcmp(name(), "unnamed") ? "mainToolBar" : name());
1090 QDomElement current; 1090 QDomElement current;
1091 // now try to find our toolbar 1091 // now try to find our toolbar
1092 d->modified = false; 1092 d->modified = false;
1093 for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) { 1093 for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) {
1094 current = elem; 1094 current = elem;
1095 1095
1096 if ( current.tagName().lower() != "toolbar" ) 1096 if ( current.tagName().lower() != "toolbar" )
1097 continue; 1097 continue;
1098 1098
1099 QString curname(current.attribute( "name" )); 1099 QString curname(current.attribute( "name" ));
1100 1100
1101 if ( curname == barname ) { 1101 if ( curname == barname ) {
1102 saveState( current ); 1102 saveState( current );
1103 break; 1103 break;
1104 } 1104 }
1105 } 1105 }
1106 // if we didn't make changes, then just return 1106 // if we didn't make changes, then just return
1107 if ( !d->modified ) 1107 if ( !d->modified )
1108 return; 1108 return;
1109 1109
1110 // now we load in the (non-merged) local file 1110 // now we load in the (non-merged) local file
1111 QString local_xml(KXMLGUIFactory::readConfigFile(d->m_xmlguiClient->xmlFile(), true, d->m_xmlguiClient->instance())); 1111 QString local_xml(KXMLGUIFactory::readConfigFile(d->m_xmlguiClient->xmlFile(), true, d->m_xmlguiClient->instance()));
1112 QDomDocument local; 1112 QDomDocument local;
1113 local.setContent(local_xml); 1113 local.setContent(local_xml);
1114 1114
1115 // make sure we don't append if this toolbar already exists locally 1115 // make sure we don't append if this toolbar already exists locally
1116 bool just_append = true; 1116 bool just_append = true;
1117 elem = local.documentElement().toElement(); 1117 elem = local.documentElement().toElement();
1118 KXMLGUIFactory::removeDOMComments( elem ); 1118 KXMLGUIFactory::removeDOMComments( elem );
1119 elem = elem.firstChild().toElement(); 1119 elem = elem.firstChild().toElement();
1120 for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) { 1120 for( ; !elem.isNull(); elem = elem.nextSibling().toElement() ) {
1121 if ( elem.tagName().lower() != "toolbar" ) 1121 if ( elem.tagName().lower() != "toolbar" )
1122 continue; 1122 continue;
1123 1123
diff --git a/microkde/kresources/factory.cpp b/microkde/kresources/factory.cpp
index 827ec38..2253de4 100644
--- a/microkde/kresources/factory.cpp
+++ b/microkde/kresources/factory.cpp
@@ -1,126 +1,127 @@
1/* 1/*
2 This file is part of libkresources. 2 This file is part of libkresources.
3 3
4 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> 4 Copyright (c) 2002 Tobias Koenig <tokoe@kde.org>
5 Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org> 5 Copyright (c) 2002 Jan-Pascal van Best <janpascal@vanbest.org>
6 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org> 6 Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
7 7
8 This library is free software; you can redistribute it and/or 8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Library General Public 9 modify it under the terms of the GNU Library General Public
10 License as published by the Free Software Foundation; either 10 License as published by the Free Software Foundation; either
11 version 2 of the License, or (at your option) any later version. 11 version 2 of the License, or (at your option) any later version.
12 12
13 This library is distributed in the hope that it will be useful, 13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Library General Public License for more details. 16 Library General Public License for more details.
17 17
18 You should have received a copy of the GNU Library General Public License 18 You should have received a copy of the GNU Library General Public License
19 along with this library; see the file COPYING.LIB. If not, write to 19 along with this library; see the file COPYING.LIB. If not, write to
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 Boston, MA 02111-1307, USA. 21 Boston, MA 02111-1307, USA.
22*/ 22*/
23 23
24#include <kdebug.h> 24#include <kdebug.h>
25#include <klocale.h> 25#include <klocale.h>
26#include <ksimpleconfig.h> 26#include <ksimpleconfig.h>
27#include <kstandarddirs.h> 27#include <kstandarddirs.h>
28#include <kstaticdeleter.h> 28#include <kstaticdeleter.h>
29//#ifndef DESKTOP_VERSION
29#include <klibloader.h> 30#include <klibloader.h>
30 31//#endif
31#include <qfile.h> 32#include <qfile.h>
32 33
33#include "resource.h" 34#include "resource.h"
34#include "factory.h" 35#include "factory.h"
35 36
36using namespace KRES; 37using namespace KRES;
37 38
38QDict<Factory> *Factory::mSelves = 0; 39QDict<Factory> *Factory::mSelves = 0;
39static KStaticDeleter< QDict<Factory> > staticDeleter; 40static KStaticDeleter< QDict<Factory> > staticDeleter;
40 41
41Factory *Factory::self( const QString& resourceFamily ) 42Factory *Factory::self( const QString& resourceFamily )
42{ 43{
43 44
44 45
45 Factory *factory = 0; 46 Factory *factory = 0;
46 if ( !mSelves ) 47 if ( !mSelves )
47 { 48 {
48 mSelves = staticDeleter.setObject( new QDict<Factory> ); 49 mSelves = staticDeleter.setObject( new QDict<Factory> );
49 } 50 }
50 51
51 factory = mSelves->find( resourceFamily ); 52 factory = mSelves->find( resourceFamily );
52 53
53 if ( !factory ) { 54 if ( !factory ) {
54 factory = new Factory( resourceFamily ); 55 factory = new Factory( resourceFamily );
55 mSelves->insert( resourceFamily, factory ); 56 mSelves->insert( resourceFamily, factory );
56 } 57 }
57 58
58 return factory; 59 return factory;
59} 60}
60 61
61Factory::Factory( const QString& resourceFamily ) : 62Factory::Factory( const QString& resourceFamily ) :
62 mResourceFamily( resourceFamily ) 63 mResourceFamily( resourceFamily )
63{ 64{
64//US so far we have three types available for resourceFamily "contact" 65//US so far we have three types available for resourceFamily "contact"
65// and that are "file", "dir", "ldap" 66// and that are "file", "dir", "ldap"
66/*US 67/*US
67 68
68 KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin", QString( "[X-KDE-ResourceFamily] == '%1'" ) 69 KTrader::OfferList plugins = KTrader::self()->query( "KResources/Plugin", QString( "[X-KDE-ResourceFamily] == '%1'" )
69 .arg( resourceFamily ) ); 70 .arg( resourceFamily ) );
70 KTrader::OfferList::ConstIterator it; 71 KTrader::OfferList::ConstIterator it;
71 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 72 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
72 QVariant type = (*it)->property( "X-KDE-ResourceType" ); 73 QVariant type = (*it)->property( "X-KDE-ResourceType" );
73 if ( !type.toString().isEmpty() ) 74 if ( !type.toString().isEmpty() )
74 mTypeMap.insert( type.toString(), *it ); 75 mTypeMap.insert( type.toString(), *it );
75 } 76 }
76*/ 77*/
77 78
78//US new 79//US new
79 PluginInfo* info = new PluginInfo; 80 PluginInfo* info = new PluginInfo;
80 info->library = "microkabc_file"; 81 info->library = "microkabc_file";
81 info->nameLabel = i18n( "file" ); 82 info->nameLabel = i18n( "file" );
82 info->descriptionLabel = i18n( "Choose one file" ); 83 info->descriptionLabel = i18n( "Choose one file" );
83 mTypeMap.insert( "file", info ); 84 mTypeMap.insert( "file", info );
84 85
85 info = new PluginInfo; 86 info = new PluginInfo;
86 info->library = "microkabc_dir"; 87 info->library = "microkabc_dir";
87 info->nameLabel = i18n( "dir" ); 88 info->nameLabel = i18n( "dir" );
88 info->descriptionLabel = i18n( "Choose a directory with may files" ); 89 info->descriptionLabel = i18n( "Choose a directory with may files" );
89 mTypeMap.insert( "dir", info ); 90 mTypeMap.insert( "dir", info );
90 91
91 info = new PluginInfo; 92 info = new PluginInfo;
92 info->library = "microkabc_ldap"; 93 info->library = "microkabc_ldap";
93 info->nameLabel = i18n( "ldap" ); 94 info->nameLabel = i18n( "ldap" );
94 info->descriptionLabel = i18n( "No description available" ); 95 info->descriptionLabel = i18n( "No description available" );
95 mTypeMap.insert( "ldap", info ); 96 mTypeMap.insert( "ldap", info );
96 97
97 //US add opie plugin only, if the library exists 98 //US add opie plugin only, if the library exists
98 QString libname = "microkabc_opie"; 99 QString libname = "microkabc_opie";
99 QString path = KLibLoader::findLibrary( QFile::encodeName( libname ) ); 100 QString path = KLibLoader::findLibrary( QFile::encodeName( libname ) );
100 if ( !path.isEmpty() ) 101 if ( !path.isEmpty() )
101 { 102 {
102 info = new PluginInfo; 103 info = new PluginInfo;
103 info->library = libname; 104 info->library = libname;
104 info->nameLabel = i18n( "opie" ); 105 info->nameLabel = i18n( "opie" );
105 info->descriptionLabel = i18n( "Opie PIM Addressbook." ); 106 info->descriptionLabel = i18n( "Opie PIM Addressbook." );
106 mTypeMap.insert( "opie", info ); 107 mTypeMap.insert( "opie", info );
107 } 108 }
108 109
109 //US add qtopia plugin only, if the library exists 110 //US add qtopia plugin only, if the library exists
110 libname = "microkabc_qtopia"; 111 libname = "microkabc_qtopia";
111 path = KLibLoader::findLibrary( QFile::encodeName( libname ) ); 112 path = KLibLoader::findLibrary( QFile::encodeName( libname ) );
112 if ( !path.isEmpty() ) 113 if ( !path.isEmpty() )
113 { 114 {
114 info = new PluginInfo; 115 info = new PluginInfo;
115 info->library = libname; 116 info->library = libname;
116 info->nameLabel = i18n( "qtopia" ); 117 info->nameLabel = i18n( "qtopia" );
117 info->descriptionLabel = i18n( "Qtopia PIM Addressbook." ); 118 info->descriptionLabel = i18n( "Qtopia PIM Addressbook." );
118 mTypeMap.insert( "qtopia", info ); 119 mTypeMap.insert( "qtopia", info );
119 } 120 }
120 121
121 122
122} 123}
123 124
124Factory::~Factory() 125Factory::~Factory()
125{ 126{
126} 127}
diff --git a/microkde/microkde.pro b/microkde/microkde.pro
index 1e9b022..05833a9 100644
--- a/microkde/microkde.pro
+++ b/microkde/microkde.pro
@@ -5,166 +5,164 @@ CONFIG += qt warn_on
5INCLUDEPATH += . ../ ../kabc ./kdecore ./kdeui ./kio/kfile 5INCLUDEPATH += . ../ ../kabc ./kdecore ./kdeui ./kio/kfile
6#LIBS += -lqtcompat 6#LIBS += -lqtcompat
7 7
8 TARGET = microkde 8 TARGET = microkde
9DESTDIR= ../bin 9DESTDIR= ../bin
10DEFINES += DESKTOP_VERSION KDE_QT_ONLY 10DEFINES += DESKTOP_VERSION KDE_QT_ONLY
11unix : { 11unix : {
12OBJECTS_DIR = obj/unix 12OBJECTS_DIR = obj/unix
13MOC_DIR = moc/unix 13MOC_DIR = moc/unix
14} 14}
15win32: { 15win32: {
16DEFINES += _WIN32_ 16DEFINES += _WIN32_
17OBJECTS_DIR = obj/win 17OBJECTS_DIR = obj/win
18MOC_DIR = moc/win 18MOC_DIR = moc/win
19} 19}
20include( ../variables.pri ) 20include( ../variables.pri )
21 21
22 22
23 23
24HEADERS = \ 24HEADERS = \
25qlayoutengine_p.h \ 25qlayoutengine_p.h \
26KDGanttMinimizeSplitter.h \ 26KDGanttMinimizeSplitter.h \
27 kapplication.h \ 27 kapplication.h \
28 kaudioplayer.h \ 28 kaudioplayer.h \
29 kcalendarsystem.h \ 29 kcalendarsystem.h \
30 kcalendarsystemgregorian.h \ 30 kcalendarsystemgregorian.h \
31 kcolorbutton.h \ 31 kcolorbutton.h \
32 kcolordialog.h \ 32 kcolordialog.h \
33 kcombobox.h \ 33 kcombobox.h \
34 kconfig.h \ 34 kconfig.h \
35 kdatetbl.h \ 35 kdatetbl.h \
36 kdebug.h \ 36 kdebug.h \
37 kdialog.h \ 37 kdialog.h \
38 kdialogbase.h \ 38 kdialogbase.h \
39 kdirwatch.h \ 39 kdirwatch.h \
40 keditlistbox.h \ 40 keditlistbox.h \
41 kemailsettings.h \ 41 kemailsettings.h \
42 kfiledialog.h \ 42 kfiledialog.h \
43 kfontdialog.h \ 43 kfontdialog.h \
44 kglobal.h \ 44 kglobal.h \
45 kglobalsettings.h \ 45 kglobalsettings.h \
46 kiconloader.h \ 46 kiconloader.h \
47 klineedit.h \ 47 klineedit.h \
48 klineeditdlg.h \ 48 klineeditdlg.h \
49 kmessagebox.h \ 49 kmessagebox.h \
50 knotifyclient.h \ 50 knotifyclient.h \
51 kprinter.h \ 51 kprinter.h \
52 kprocess.h \ 52 kprocess.h \
53 krestrictedline.h \ 53 krestrictedline.h \
54 krun.h \ 54 krun.h \
55 ksimpleconfig.h \ 55 ksimpleconfig.h \
56 kstaticdeleter.h \ 56 kstaticdeleter.h \
57 ksystemtray.h \ 57 ksystemtray.h \
58 ktempfile.h \ 58 ktempfile.h \
59 ktextedit.h \ 59 ktextedit.h \
60 kunload.h \ 60 kunload.h \
61 kurl.h \ 61 kurl.h \
62 kdeui/kguiitem.h \ 62 kdeui/kguiitem.h \
63 kdeui/kcmodule.h \ 63 kdeui/kcmodule.h \
64 kdeui/kbuttonbox.h \ 64 kdeui/kbuttonbox.h \
65 kdeui/klistbox.h \ 65 kdeui/klistbox.h \
66 kdeui/klistview.h \ 66 kdeui/klistview.h \
67 kdeui/kjanuswidget.h \ 67 kdeui/kjanuswidget.h \
68 kdeui/kseparator.h \ 68 kdeui/kseparator.h \
69 kdeui/knuminput.h \ 69 kdeui/knuminput.h \
70 kdeui/knumvalidator.h \ 70 kdeui/knumvalidator.h \
71 kdeui/ksqueezedtextlabel.h \ 71 kdeui/ksqueezedtextlabel.h \
72 kio/job.h \ 72 kio/job.h \
73 kio/kfile/kurlrequester.h \ 73 kio/kfile/kurlrequester.h \
74 kresources/resource.h \ 74 kresources/resource.h \
75 kresources/factory.h \ 75 kresources/factory.h \
76 kresources/managerimpl.h \ 76 kresources/managerimpl.h \
77 kresources/manager.h \ 77 kresources/manager.h \
78 kresources/selectdialog.h \ 78 kresources/selectdialog.h \
79 kresources/configpage.h \ 79 kresources/configpage.h \
80 kresources/configwidget.h \ 80 kresources/configwidget.h \
81 kresources/configdialog.h \ 81 kresources/configdialog.h \
82 kresources/kcmkresources.h \ 82 kresources/kcmkresources.h \
83 kdecore/kmdcodec.h \ 83 kdecore/kmdcodec.h \
84 kdecore/kconfigbase.h \ 84 kdecore/kconfigbase.h \
85 kdecore/klocale.h \ 85 kdecore/klocale.h \
86 kdecore/kcatalogue.h \ 86 kdecore/kcatalogue.h \
87 kdecore/ksharedptr.h \ 87 kdecore/ksharedptr.h \
88 kdecore/kshell.h \ 88 kdecore/kshell.h \
89 kdecore/kstandarddirs.h \ 89 kdecore/kstandarddirs.h \
90 kdecore/kstringhandler.h \ 90 kdecore/kstringhandler.h \
91 kdecore/kshortcut.h \ 91 kdecore/kshortcut.h \
92 kutils/kcmultidialog.h \ 92 kutils/kcmultidialog.h \
93 kdeui/kxmlguiclient.h \ 93 kdeui/kxmlguiclient.h \
94 kdeui/kstdaction.h \ 94 kdeui/kstdaction.h \
95 kdeui/kmainwindow.h \ 95 kdeui/kmainwindow.h \
96 kdeui/ktoolbar.h \ 96 kdeui/ktoolbar.h \
97 kdeui/ktoolbarbutton.h \ 97 kdeui/ktoolbarbutton.h \
98 kdeui/ktoolbarhandler.h \ 98 kdeui/ktoolbarhandler.h \
99 kdeui/kaction.h \ 99 kdeui/kaction.h \
100 kdeui/kactionclasses.h \ 100 kdeui/kactionclasses.h \
101 kdeui/kactioncollection.h 101 kdeui/kactioncollection.h \
102 kdecore/klibloader.h
102 103
103 104
104# kdecore/klibloader.h \ 105# kdecore/klibloader.h \
105 106
106 107
107SOURCES = \ 108SOURCES = \
108KDGanttMinimizeSplitter.cpp \ 109KDGanttMinimizeSplitter.cpp \
109 kapplication.cpp \ 110 kapplication.cpp \
110 kcalendarsystem.cpp \ 111 kcalendarsystem.cpp \
111 kcalendarsystemgregorian.cpp \ 112 kcalendarsystemgregorian.cpp \
112 kcolorbutton.cpp \ 113 kcolorbutton.cpp \
113 kcolordialog.cpp \ 114 kcolordialog.cpp \
114 kconfig.cpp \ 115 kconfig.cpp \
115 kdatetbl.cpp \ 116 kdatetbl.cpp \
116 kdialog.cpp \ 117 kdialog.cpp \
117 kdialogbase.cpp \ 118 kdialogbase.cpp \
118 keditlistbox.cpp \ 119 keditlistbox.cpp \
119 kemailsettings.cpp \ 120 kemailsettings.cpp \
120 kfontdialog.cpp \ 121 kfontdialog.cpp \
121 kfiledialog.cpp \ 122 kfiledialog.cpp \
122 kglobal.cpp \ 123 kglobal.cpp \
123 kglobalsettings.cpp \ 124 kglobalsettings.cpp \
124 kiconloader.cpp \ 125 kiconloader.cpp \
125 kmessagebox.cpp \ 126 kmessagebox.cpp \
126 ktextedit.cpp \ 127 ktextedit.cpp \
127 kprocess.cpp \ 128 kprocess.cpp \
128 krun.cpp \ 129 krun.cpp \
129 ksystemtray.cpp \ 130 ksystemtray.cpp \
130 ktempfile.cpp \ 131 ktempfile.cpp \
131 kurl.cpp \ 132 kurl.cpp \
132 kdecore/kcatalogue.cpp \ 133 kdecore/kcatalogue.cpp \
133 kdecore/klocale.cpp \ 134 kdecore/klocale.cpp \
134 kdecore/kmdcodec.cpp \ 135 kdecore/kmdcodec.cpp \
135 kdecore/kshell.cpp \ 136 kdecore/kshell.cpp \
136 kdecore/kstandarddirs.cpp \ 137 kdecore/kstandarddirs.cpp \
137 kdecore/kstringhandler.cpp \ 138 kdecore/kstringhandler.cpp \
138 kdeui/kbuttonbox.cpp \ 139 kdeui/kbuttonbox.cpp \
139 kdeui/kcmodule.cpp \ 140 kdeui/kcmodule.cpp \
140 kdeui/kguiitem.cpp \ 141 kdeui/kguiitem.cpp \
141 kdeui/kjanuswidget.cpp \ 142 kdeui/kjanuswidget.cpp \
142 kdeui/klistbox.cpp \ 143 kdeui/klistbox.cpp \
143 kdeui/klistview.cpp \ 144 kdeui/klistview.cpp \
144 kdeui/knuminput.cpp \ 145 kdeui/knuminput.cpp \
145 kdeui/knumvalidator.cpp \ 146 kdeui/knumvalidator.cpp \
146 kdeui/kseparator.cpp \ 147 kdeui/kseparator.cpp \
147 kdeui/ksqueezedtextlabel.cpp \ 148 kdeui/ksqueezedtextlabel.cpp \
148 kio/kfile/kurlrequester.cpp \ 149 kio/kfile/kurlrequester.cpp \
149 kresources/configpage.cpp \ 150 kresources/configpage.cpp \
150 kresources/configdialog.cpp \ 151 kresources/configdialog.cpp \
151 kresources/configwidget.cpp \ 152 kresources/configwidget.cpp \
152 kresources/factory.cpp \ 153 kresources/factory.cpp \
153 kresources/kcmkresources.cpp \ 154 kresources/kcmkresources.cpp \
154 kresources/managerimpl.cpp \ 155 kresources/managerimpl.cpp \
155 kresources/resource.cpp \ 156 kresources/resource.cpp \
156 kresources/selectdialog.cpp \ 157 kresources/selectdialog.cpp \
157 kutils/kcmultidialog.cpp \ 158 kutils/kcmultidialog.cpp \
158 kdeui/kaction.cpp \ 159 kdeui/kaction.cpp \
159 kdeui/kactionclasses.cpp \ 160 kdeui/kactionclasses.cpp \
160 kdeui/kactioncollection.cpp \ 161 kdeui/kactioncollection.cpp \
161 kdeui/kmainwindow.cpp \ 162 kdeui/kmainwindow.cpp \
162 kdeui/ktoolbar.cpp \ 163 kdeui/ktoolbar.cpp \
163 kdeui/ktoolbarbutton.cpp \ 164 kdeui/ktoolbarbutton.cpp \
164 kdeui/ktoolbarhandler.cpp \ 165 kdeui/ktoolbarhandler.cpp \
165 kdeui/kstdaction.cpp \ 166 kdeui/kstdaction.cpp \
166 kdeui/kxmlguiclient.cpp 167 kdeui/kxmlguiclient.cpp \
167 168 kdecore/klibloader.cpp \ No newline at end of file
168
169
170# kdecore/klibloader.cpp \ \ No newline at end of file