summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Makefile263
-rw-r--r--kabc/kabc.pro4
-rw-r--r--kabc/plugins/dir/dir.pro29
-rw-r--r--kabc/plugins/dir/resourcedir.cpp6
-rw-r--r--kabc/plugins/file/file.pro30
-rw-r--r--kabc/plugins/file/resourcefile.cpp6
-rw-r--r--kaddressbook/kcmconfigs/addresseewidget.cpp1
-rw-r--r--kaddressbook/mainembedded.cpp7
-rw-r--r--kopi-desktop.pro2
-rw-r--r--kopiemail.control2
-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
15 files changed, 239 insertions, 146 deletions
diff --git a/Makefile b/Makefile
index d770a05..620581b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,118 +1,147 @@
1DISTPATH = $(shell pwd) 1#############################################################################
2DISTDIR = $(shell basename $(DISTPATH)) 2# Makefile for building: kopi-desktop
3 3# Generated by qmake (1.07a) (Qt 3.3.2) on: Wed Jul 7 13:43:59 2004
4SUBDIRS = libical/src/libical libical/src/libicalss qtcompat microkde \ 4# Project: kopi-desktop.pro
5 libkcal libkdepim kabc kabc/converter/opie kabc/formats/binary kabc/plugins/file kabc/plugins/dir \ 5# Template: subdirs
6 kabc/plugins/opie \ 6# Command: $(QMAKE) "CONFIG+=thread" "CONFIG+=debug" -o Makefile kopi-desktop.pro
7 korganizer kalarmd kaddressbook kmicromail/libetpan kmicromail/libmailwrapper kmicromail 7#############################################################################
8all: tmake 8
9 for i in $(SUBDIRS); do pushd $$i; \ 9 MAKEFILE =Makefile
10 make -f Makefile$(PLATFORM) || exit 1; popd; \ 10 QMAKE =qmake
11 done 11DEL_FILE = rm -f
12 12CHK_DIR_EXISTS= test -d
13objects: 13MKDIR = mkdir -p
14 for i in $(SUBDIRS); do mkdir -p $$i/obj/$(PLATFORM); done 14INSTALL_FILE=
15 for i in $(SUBDIRS); do mkdir -p $$i/moc/$(PLATFORM); done 15INSTALL_DIR =
16 mkdir -p libical/lib/$(PLATFORM) 16 SUBTARGETS = \
17 17 sub-libical \
18clean: 18 sub-libkcal \
19 rm -f libical/lib/$(PLATFORM)/*; 19 sub-microkde \
20 for i in $(SUBDIRS); do pushd $$i; make clean; rm -f *~;\ 20 sub-libkdepim \
21 rm -f obj/$(PLATFORM)/*; rm -f moc/$(PLATFORM)/*; rm Makefile$(PLATFORM); popd; \ 21 sub-kabc \
22 done 22 sub-korganizer \
23install: 23 sub-kaddressbook \
24 cd bin/kdepim; make install 24 sub-kabc-plugins-file \
25 cp db2file/db2file $(QPEDIR)/bin/db2file 25 sub-kabc-plugins-dir
26 cp korganizer/korganizer.desktop $(QPEDIR)/apps/Pim/korganizer.desktop 26
27 cp kmicromail/kmicromail.desktop $(QPEDIR)/apps/Pim/kmicromail.desktop 27first: all
28 cp kaddressbook/kaddressbook.desktop $(QPEDIR)/apps/Pim/kaddressbook.desktop 28
29 29all: Makefile $(SUBTARGETS)
30dist: 30
31 @echo Dont forget to do "make install" before "make dist" 31libical/$(MAKEFILE):
32 rm -f *arm.ipk 32 @$(CHK_DIR_EXISTS) "libical" || $(MKDIR) "libical"
33 rm -f *~ 33 cd libical && $(QMAKE) libical.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE)
34 cd ..; tar czf kdepim.src.tar.gz --exclude=obj --exclude=moc kdepim 34sub-libical: libical/$(MAKEFILE) FORCE
35 mkipks kmicrokdelibs.control 35 cd libical && $(MAKE) -f $(MAKEFILE)
36 mkipks korganizer.control 36
37 mkipks kaddressbook.control 37libkcal/$(MAKEFILE):
38 mkipks kopiemail.control 38 @$(CHK_DIR_EXISTS) "libkcal" || $(MKDIR) "libkcal"
39 mkipks korganizer-alarm.control 39 cd libkcal && $(QMAKE) libkcal.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE)
40 40sub-libkcal: libkcal/$(MAKEFILE) FORCE
41tmake: objects qtcompat/Makefile$(PLATFORM) microkde/Makefile$(PLATFORM) \ 41 cd libkcal && $(MAKE) -f $(MAKEFILE)
42 libkcal/Makefile$(PLATFORM) \ 42
43 libkdepim/Makefile$(PLATFORM) korganizer/Makefile$(PLATFORM) \ 43microkde/$(MAKEFILE):
44 kalarmd/Makefile$(PLATFORM) \ 44 @$(CHK_DIR_EXISTS) "microkde" || $(MKDIR) "microkde"
45 libical/src/libical/Makefile$(PLATFORM) \ 45 cd microkde && $(QMAKE) microkde.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE)
46 libical/src/libicalss/Makefile$(PLATFORM) \ 46sub-microkde: microkde/$(MAKEFILE) FORCE
47 kabc/Makefile$(PLATFORM) \ 47 cd microkde && $(MAKE) -f $(MAKEFILE)
48 kabc/converter/opie/Makefile$(PLATFORM) \ 48
49 kabc/formats/binary/Makefile$(PLATFORM) \ 49libkdepim/$(MAKEFILE):
50 kabc/plugins/file/Makefile$(PLATFORM) \ 50 @$(CHK_DIR_EXISTS) "libkdepim" || $(MKDIR) "libkdepim"
51 kabc/plugins/dir/Makefile$(PLATFORM) \ 51 cd libkdepim && $(QMAKE) libkdepim.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE)
52 kabc/plugins/ldap/Makefile$(PLATFORM) \ 52sub-libkdepim: libkdepim/$(MAKEFILE) FORCE
53 kabc/plugins/opie/Makefile$(PLATFORM) \ 53 cd libkdepim && $(MAKE) -f $(MAKEFILE)
54 kaddressbook/Makefile$(PLATFORM) \ 54
55 kmicromail/Makefile$(PLATFORM) \ 55kabc/$(MAKEFILE):
56 kmicromail/libetpan/Makefile$(PLATFORM) \ 56 @$(CHK_DIR_EXISTS) "kabc" || $(MKDIR) "kabc"
57 kmicromail/libmailwrapper/Makefile$(PLATFORM) 57 cd kabc && $(QMAKE) kabc.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE)
58 58sub-kabc: kabc/$(MAKEFILE) FORCE
59 59 cd kabc && $(MAKE) -f $(MAKEFILE)
60 60
61qtcompat/Makefile$(PLATFORM): qtcompat/qtcompat.pro 61korganizer/$(MAKEFILE):
62 cd qtcompat; tmake "CONFIG+=$(RELEASE_DEBUG)" qtcompat.pro -o Makefile$(PLATFORM) 62 @$(CHK_DIR_EXISTS) "korganizer" || $(MKDIR) "korganizer"
63 63 cd korganizer && $(QMAKE) korganizer.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE)
64microkde/Makefile$(PLATFORM): microkde/microkdeE.pro 64sub-korganizer: korganizer/$(MAKEFILE) FORCE
65 cd microkde; tmake "CONFIG+=$(RELEASE_DEBUG)" microkdeE.pro -o Makefile$(PLATFORM) 65 cd korganizer && $(MAKE) -f $(MAKEFILE)
66 66
67libkcal/Makefile$(PLATFORM): libkcal/libkcalE.pro 67kaddressbook/$(MAKEFILE):
68 cd libkcal; tmake "CONFIG+=$(RELEASE_DEBUG)" libkcalE.pro -o Makefile$(PLATFORM) 68 @$(CHK_DIR_EXISTS) "kaddressbook" || $(MKDIR) "kaddressbook"
69 69 cd kaddressbook && $(QMAKE) kaddressbook.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE)
70 70sub-kaddressbook: kaddressbook/$(MAKEFILE) FORCE
71libkdepim/Makefile$(PLATFORM): libkdepim/libkdepimE.pro 71 cd kaddressbook && $(MAKE) -f $(MAKEFILE)
72 cd libkdepim; tmake "CONFIG+=$(RELEASE_DEBUG)" libkdepimE.pro -o Makefile$(PLATFORM) 72
73 73kabc/plugins/file/$(MAKEFILE):
74kalarmd/Makefile$(PLATFORM): kalarmd/kalarmdE.pro 74 @$(CHK_DIR_EXISTS) "kabc/plugins/file" || $(MKDIR) "kabc/plugins/file"
75 cd kalarmd; tmake "CONFIG+=$(RELEASE_DEBUG)" kalarmdE.pro -o Makefile$(PLATFORM) 75 cd kabc/plugins/file && $(QMAKE) file.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE)
76 76sub-kabc-plugins-file: kabc/plugins/file/$(MAKEFILE) FORCE
77korganizer/Makefile$(PLATFORM): korganizer/korganizerE.pro 77 cd kabc/plugins/file && $(MAKE) -f $(MAKEFILE)
78 cd korganizer; tmake "CONFIG+=$(RELEASE_DEBUG)" korganizerE.pro -o Makefile$(PLATFORM) 78
79 79kabc/plugins/dir/$(MAKEFILE):
80libical/src/libical/Makefile$(PLATFORM): libical/src/libical/libicalE.pro 80 @$(CHK_DIR_EXISTS) "kabc/plugins/dir" || $(MKDIR) "kabc/plugins/dir"
81 cd libical/src/libical; tmake "CONFIG+=$(RELEASE_DEBUG)" libicalE.pro -o Makefile$(PLATFORM) 81 cd kabc/plugins/dir && $(QMAKE) dir.pro "CONFIG+=thread" "CONFIG+=debug" -o $(MAKEFILE)
82 82sub-kabc-plugins-dir: kabc/plugins/dir/$(MAKEFILE) FORCE
83libical/src/libicalss/Makefile$(PLATFORM): libical/src/libicalss/libicalssE.pro 83 cd kabc/plugins/dir && $(MAKE) -f $(MAKEFILE)
84 cd libical/src/libicalss; tmake "CONFIG+=$(RELEASE_DEBUG)" libicalssE.pro -o Makefile$(PLATFORM) 84
85 85Makefile: kopi-desktop.pro /usr/local/qtgcc/mkspecs/default/qmake.conf
86kabc/Makefile$(PLATFORM): kabc/kabcE.pro 86 $(QMAKE) "CONFIG+=thread" "CONFIG+=debug" -o Makefile kopi-desktop.pro
87 cd kabc; tmake "CONFIG+=$(RELEASE_DEBUG)" kabcE.pro -o Makefile$(PLATFORM) 87qmake: qmake_all
88 88 @$(QMAKE) "CONFIG+=thread" "CONFIG+=debug" -o Makefile kopi-desktop.pro
89kabc/converter/opie/Makefile$(PLATFORM): kabc/converter/opie/opieconverterE.pro 89
90 cd kabc/converter/opie; tmake "CONFIG+=$(RELEASE_DEBUG)" opieconverterE.pro -o Makefile$(PLATFORM) 90all: $(SUBTARGETS)
91 91qmake_all: libical/$(MAKEFILE) libkcal/$(MAKEFILE) microkde/$(MAKEFILE) libkdepim/$(MAKEFILE) kabc/$(MAKEFILE) korganizer/$(MAKEFILE) kaddressbook/$(MAKEFILE) kabc/plugins/file/$(MAKEFILE) kabc/plugins/dir/$(MAKEFILE)
92kabc/formats/binary/Makefile$(PLATFORM): kabc/formats/binary/kabcformat_binaryE.pro 92 ( [ -d libical ] && cd libical ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
93 cd kabc/formats/binary; tmake "CONFIG+=$(RELEASE_DEBUG)" kabcformat_binaryE.pro -o Makefile$(PLATFORM) 93 ( [ -d libkcal ] && cd libkcal ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
94 94 ( [ -d microkde ] && cd microkde ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
95kabc/plugins/file/Makefile$(PLATFORM): kabc/plugins/file/kabc_fileE.pro 95 ( [ -d libkdepim ] && cd libkdepim ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
96 cd kabc/plugins/file; tmake "CONFIG+=$(RELEASE_DEBUG)" kabc_fileE.pro -o Makefile$(PLATFORM) 96 ( [ -d kabc ] && cd kabc ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
97 97 ( [ -d korganizer ] && cd korganizer ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
98kabc/plugins/dir/Makefile$(PLATFORM): kabc/plugins/dir/kabc_dirE.pro 98 ( [ -d kaddressbook ] && cd kaddressbook ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
99 cd kabc/plugins/dir; tmake "CONFIG+=$(RELEASE_DEBUG)" kabc_dirE.pro -o Makefile$(PLATFORM) 99 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
100 100 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
101kabc/plugins/ldap/Makefile$(PLATFORM): kabc/plugins/ldap/kabc_ldapE.pro 101clean uicables mocables uiclean mocclean lexclean yaccclean : qmake_all FORCE
102 cd kabc/plugins/ldap; tmake "CONFIG+=$(RELEASE_DEBUG)" kabc_ldapE.pro -o Makefile$(PLATFORM) 102 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) $@; ) || true
103 103 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) $@; ) || true
104kabc/plugins/opie/Makefile$(PLATFORM): kabc/plugins/opie/kabc_opieE.pro 104 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) $@; ) || true
105 cd kabc/plugins/opie; tmake "CONFIG+=$(RELEASE_DEBUG)" kabc_opieE.pro -o Makefile$(PLATFORM) 105 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) $@; ) || true
106 106 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) $@; ) || true
107 107 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) $@; ) || true
108kaddressbook/Makefile$(PLATFORM): kaddressbook/kaddressbookE.pro 108 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) $@; ) || true
109 cd kaddressbook; tmake "CONFIG+=$(RELEASE_DEBUG)" kaddressbookE.pro -o Makefile$(PLATFORM) 109 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; ) || true
110 110 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) $@; ) || true
111 111uninstall_subdirs: qmake_all FORCE
112kmicromail/Makefile$(PLATFORM): kmicromail/kmicromailE.pro 112 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
113 cd kmicromail; tmake "CONFIG+=$(RELEASE_DEBUG)" kmicromailE.pro -o Makefile$(PLATFORM) 113 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
114kmicromail/libetpan/Makefile$(PLATFORM): kmicromail/libetpan/libetpanE.pro 114 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
115 cd kmicromail/libetpan; tmake "CONFIG+=$(RELEASE_DEBUG)" libetpanE.pro -o Makefile$(PLATFORM) 115 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
116kmicromail/libmailwrapper/Makefile$(PLATFORM): kmicromail/libmailwrapper/libmailwrapperE.pro 116 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
117 cd kmicromail/libmailwrapper; tmake "CONFIG+=$(RELEASE_DEBUG)" libmailwrapperE.pro -o Makefile$(PLATFORM) 117 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
118 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
119 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
120 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
121install_subdirs: qmake_all FORCE
122 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) install; ) || true
123 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) install; ) || true
124 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) install; ) || true
125 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) install; ) || true
126 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) install; ) || true
127 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) install; ) || true
128 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) install; ) || true
129 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) install; ) || true
130 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) install; ) || true
131distclean: qmake_all FORCE
132 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
133 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
134 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
135 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
136 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
137 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
138 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
139 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
140 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
141
142install: install_subdirs
143
144uninstall: uninstall_subdirs
145
146FORCE:
118 147
diff --git a/kabc/kabc.pro b/kabc/kabc.pro
index ea4bbb7..4a8d73a 100644
--- a/kabc/kabc.pro
+++ b/kabc/kabc.pro
@@ -1,214 +1,214 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3#release debug 3#release debug
4DESTDIR=../bin 4DESTDIR=../bin
5 5
6TARGET = microkabc 6TARGET = microkabc
7 7
8include( ../variables.pri ) 8include( ../variables.pri )
9 9
10INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kio/kfile ../qtcompat ../microkde/kdeui 10INCLUDEPATH += . ./vcard/include ./vcard/include/generated ../microkde ../microkde/kdecore ../microkde/kio/kfile ../qtcompat ../microkde/kdeui
11 11
12#LIBS += -lmicrokde -lldap 12#LIBS += -lmicrokde -lldap
13LIBS += -L$(QPEDIR)/lib 13LIBS += -L$(QPEDIR)/lib
14DEFINES += KAB_EMBEDDED DESKTOP_VERSION 14DEFINES += KAB_EMBEDDED DESKTOP_VERSION
15unix : { 15unix : {
16 16
17OBJECTS_DIR = obj/unix 17OBJECTS_DIR = obj/unix
18MOC_DIR = moc/unix 18MOC_DIR = moc/unix
19} 19}
20win32: { 20win32: {
21DEFINES += _WIN32_ 21DEFINES += _WIN32_
22OBJECTS_DIR = obj/win 22OBJECTS_DIR = obj/win
23MOC_DIR = moc/win 23MOC_DIR = moc/win
24} 24}
25INTERFACES = \ 25INTERFACES = \
26 26
27 27
28HEADERS = \ 28HEADERS = \
29 resource.h \ 29 resource.h \
30 stdaddressbook.h \ 30 stdaddressbook.h \
31 agent.h \ 31 agent.h \
32 geo.h \ 32 geo.h \
33 key.h \ 33 key.h \
34 field.h \ 34 field.h \
35 plugin.h \ 35 plugin.h \
36 address.h \ 36 address.h \
37 addresseelist.h \ 37 addresseelist.h \
38formatfactory.h \ 38formatfactory.h \
39 formatplugin.h \ 39 formatplugin.h \
40 phonenumber.h \ 40 phonenumber.h \
41distributionlist.h \ 41distributionlist.h \
42distributionlistdialog.h \ 42distributionlistdialog.h \
43distributionlisteditor.h \ 43distributionlisteditor.h \
44vcardformatplugin.h \ 44vcardformatplugin.h \
45formats/binaryformat.h \
46formats/vcardformatplugin2.h \ 45formats/vcardformatplugin2.h \
47 picture.h \ 46 picture.h \
48 secrecy.h \ 47 secrecy.h \
49 sound.h \ 48 sound.h \
50 addressbook.h \ 49 addressbook.h \
51 timezone.h \ 50 timezone.h \
52 addressee.h \ 51 addressee.h \
53 addresseedialog.h \ 52 addresseedialog.h \
54 vcardconverter.h \ 53 vcardconverter.h \
55 vcard21parser.h \ 54 vcard21parser.h \
56 vcardformatimpl.h \ 55 vcardformatimpl.h \
57 plugins/file/resourcefile.h \ 56 plugins/file/resourcefile.h \
58 plugins/file/resourcefileconfig.h \ 57 plugins/file/resourcefileconfig.h \
59 plugins/dir/resourcedir.h \ 58 plugins/dir/resourcedir.h \
60 plugins/dir/resourcedirconfig.h \ 59 plugins/dir/resourcedirconfig.h \
61 vcardparser/vcardline.h \ 60 vcardparser/vcardline.h \
62 vcardparser/vcard.h \ 61 vcardparser/vcard.h \
63 vcardparser/vcardtool.h \ 62 vcardparser/vcardtool.h \
64 vcardparser/vcardparser.h \ 63 vcardparser/vcardparser.h \
65vcard/include/VCardAdrParam.h \ 64vcard/include/VCardAdrParam.h \
66vcard/include/VCardAdrValue.h \ 65vcard/include/VCardAdrValue.h \
67vcard/include/VCardAgentParam.h \ 66vcard/include/VCardAgentParam.h \
68vcard/include/VCardContentLine.h \ 67vcard/include/VCardContentLine.h \
69vcard/include/VCardDateParam.h \ 68vcard/include/VCardDateParam.h \
70vcard/include/VCardDateValue.h \ 69vcard/include/VCardDateValue.h \
71vcard/include/VCardEmailParam.h \ 70vcard/include/VCardEmailParam.h \
72vcard/include/VCardGeoValue.h \ 71vcard/include/VCardGeoValue.h \
73vcard/include/VCardGroup.h \ 72vcard/include/VCardGroup.h \
74vcard/include/VCardImageParam.h \ 73vcard/include/VCardImageParam.h \
75vcard/include/VCardImageValue.h \ 74vcard/include/VCardImageValue.h \
76vcard/include/VCardLangValue.h \ 75vcard/include/VCardLangValue.h \
77vcard/include/VCardNValue.h \ 76vcard/include/VCardNValue.h \
78vcard/include/VCardParam.h \ 77vcard/include/VCardParam.h \
79vcard/include/VCardPhoneNumberValue.h \ 78vcard/include/VCardPhoneNumberValue.h \
80vcard/include/VCardSourceParam.h \ 79vcard/include/VCardSourceParam.h \
81vcard/include/VCardTelParam.h \ 80vcard/include/VCardTelParam.h \
82vcard/include/VCardTextParam.h \ 81vcard/include/VCardTextParam.h \
83vcard/include/VCardTextNSParam.h \ 82vcard/include/VCardTextNSParam.h \
84vcard/include/VCardTextValue.h \ 83vcard/include/VCardTextValue.h \
85vcard/include/VCardTextBinParam.h \ 84vcard/include/VCardTextBinParam.h \
86vcard/include/VCardURIValue.h \ 85vcard/include/VCardURIValue.h \
87vcard/include/VCardVCard.h \ 86vcard/include/VCardVCard.h \
88vcard/include/VCardEntity.h \ 87vcard/include/VCardEntity.h \
89vcard/include/VCardValue.h \ 88vcard/include/VCardValue.h \
90vcard/include/VCardSoundValue.h \ 89vcard/include/VCardSoundValue.h \
91vcard/include/VCardAgentValue.h \ 90vcard/include/VCardAgentValue.h \
92vcard/include/VCardTelValue.h \ 91vcard/include/VCardTelValue.h \
93vcard/include/VCardTextBinValue.h \ 92vcard/include/VCardTextBinValue.h \
94vcard/include/VCardOrgValue.h \ 93vcard/include/VCardOrgValue.h \
95vcard/include/VCardUTCValue.h \ 94vcard/include/VCardUTCValue.h \
96vcard/include/VCardClassValue.h \ 95vcard/include/VCardClassValue.h \
97vcard/include/VCardFloatValue.h \ 96vcard/include/VCardFloatValue.h \
98vcard/include/VCardTextListValue.h \ 97vcard/include/VCardTextListValue.h \
99vcard/include/generated/AdrParam-generated.h \ 98vcard/include/generated/AdrParam-generated.h \
100vcard/include/generated/AdrValue-generated.h \ 99vcard/include/generated/AdrValue-generated.h \
101vcard/include/generated/AgentParam-generated.h \ 100vcard/include/generated/AgentParam-generated.h \
102vcard/include/generated/ContentLine-generated.h \ 101vcard/include/generated/ContentLine-generated.h \
103vcard/include/generated/DateParam-generated.h \ 102vcard/include/generated/DateParam-generated.h \
104vcard/include/generated/DateValue-generated.h \ 103vcard/include/generated/DateValue-generated.h \
105vcard/include/generated/EmailParam-generated.h \ 104vcard/include/generated/EmailParam-generated.h \
106vcard/include/generated/GeoValue-generated.h \ 105vcard/include/generated/GeoValue-generated.h \
107vcard/include/generated/Group-generated.h \ 106vcard/include/generated/Group-generated.h \
108vcard/include/generated/ImageParam-generated.h \ 107vcard/include/generated/ImageParam-generated.h \
109vcard/include/generated/ImageValue-generated.h \ 108vcard/include/generated/ImageValue-generated.h \
110vcard/include/generated/LangValue-generated.h \ 109vcard/include/generated/LangValue-generated.h \
111vcard/include/generated/NValue-generated.h \ 110vcard/include/generated/NValue-generated.h \
112vcard/include/generated/Param-generated.h \ 111vcard/include/generated/Param-generated.h \
113vcard/include/generated/PhoneNumberValue-generated.h \ 112vcard/include/generated/PhoneNumberValue-generated.h \
114vcard/include/generated/SourceParam-generated.h \ 113vcard/include/generated/SourceParam-generated.h \
115vcard/include/generated/TelParam-generated.h \ 114vcard/include/generated/TelParam-generated.h \
116vcard/include/generated/TextParam-generated.h \ 115vcard/include/generated/TextParam-generated.h \
117vcard/include/generated/TextNSParam-generated.h \ 116vcard/include/generated/TextNSParam-generated.h \
118vcard/include/generated/TextValue-generated.h \ 117vcard/include/generated/TextValue-generated.h \
119vcard/include/generated/TextBinParam-generated.h \ 118vcard/include/generated/TextBinParam-generated.h \
120vcard/include/generated/URIValue-generated.h \ 119vcard/include/generated/URIValue-generated.h \
121vcard/include/generated/VCard-generated.h \ 120vcard/include/generated/VCard-generated.h \
122vcard/include/generated/VCardEntity-generated.h \ 121vcard/include/generated/VCardEntity-generated.h \
123vcard/include/generated/Value-generated.h \ 122vcard/include/generated/Value-generated.h \
124vcard/include/generated/SoundValue-generated.h \ 123vcard/include/generated/SoundValue-generated.h \
125vcard/include/generated/AgentValue-generated.h \ 124vcard/include/generated/AgentValue-generated.h \
126vcard/include/generated/TelValue-generated.h \ 125vcard/include/generated/TelValue-generated.h \
127vcard/include/generated/TextBinValue-generated.h \ 126vcard/include/generated/TextBinValue-generated.h \
128vcard/include/generated/OrgValue-generated.h \ 127vcard/include/generated/OrgValue-generated.h \
129vcard/include/generated/UTCValue-generated.h \ 128vcard/include/generated/UTCValue-generated.h \
130vcard/include/generated/ClassValue-generated.h \ 129vcard/include/generated/ClassValue-generated.h \
131vcard/include/generated/FloatValue-generated.h \ 130vcard/include/generated/FloatValue-generated.h \
132vcard/include/generated/TextListValue-generated.h 131vcard/include/generated/TextListValue-generated.h
133 132
134 133
135# plugins/ldap/resourceldap.h \ 134# plugins/ldap/resourceldap.h \
136# plugins/ldap/resourceldapconfig.h \ 135# plugins/ldap/resourceldapconfig.h \
136#formats/binary/binaryformat.h \
137 137
138 138
139SOURCES = \ 139SOURCES = \
140distributionlist.cpp \ 140distributionlist.cpp \
141distributionlistdialog.cpp \ 141distributionlistdialog.cpp \
142distributionlisteditor.cpp \ 142distributionlisteditor.cpp \
143vcardformatplugin.cpp \ 143vcardformatplugin.cpp \
144formats/binaryformat.cpp \
145formats/vcardformatplugin2.cpp \ 144formats/vcardformatplugin2.cpp \
146formatfactory.cpp \ 145formatfactory.cpp \
147 resource.cpp \ 146 resource.cpp \
148 stdaddressbook.cpp \ 147 stdaddressbook.cpp \
149 plugin.cpp \ 148 plugin.cpp \
150 agent.cpp \ 149 agent.cpp \
151 geo.cpp \ 150 geo.cpp \
152 key.cpp \ 151 key.cpp \
153 field.cpp \ 152 field.cpp \
154 address.cpp \ 153 address.cpp \
155 phonenumber.cpp \ 154 phonenumber.cpp \
156 picture.cpp \ 155 picture.cpp \
157 secrecy.cpp \ 156 secrecy.cpp \
158 sound.cpp \ 157 sound.cpp \
159 addressbook.cpp \ 158 addressbook.cpp \
160 timezone.cpp \ 159 timezone.cpp \
161 addressee.cpp \ 160 addressee.cpp \
162 addresseelist.cpp \ 161 addresseelist.cpp \
163 addresseedialog.cpp \ 162 addresseedialog.cpp \
164 vcardconverter.cpp \ 163 vcardconverter.cpp \
165 vcard21parser.cpp \ 164 vcard21parser.cpp \
166 vcardformatimpl.cpp \ 165 vcardformatimpl.cpp \
167 plugins/file/resourcefile.cpp \ 166 plugins/file/resourcefile.cpp \
168 plugins/file/resourcefileconfig.cpp \ 167 plugins/file/resourcefileconfig.cpp \
169 plugins/dir/resourcedir.cpp \ 168 plugins/dir/resourcedir.cpp \
170 plugins/dir/resourcedirconfig.cpp \ 169 plugins/dir/resourcedirconfig.cpp \
171 vcardparser/vcardline.cpp \ 170 vcardparser/vcardline.cpp \
172 vcardparser/vcard.cpp \ 171 vcardparser/vcard.cpp \
173 vcardparser/vcardtool.cpp \ 172 vcardparser/vcardtool.cpp \
174 vcardparser/vcardparser.cpp \ 173 vcardparser/vcardparser.cpp \
175vcard/AdrParam.cpp \ 174vcard/AdrParam.cpp \
176vcard/AdrValue.cpp \ 175vcard/AdrValue.cpp \
177vcard/AgentParam.cpp \ 176vcard/AgentParam.cpp \
178vcard/ContentLine.cpp \ 177vcard/ContentLine.cpp \
179vcard/DateParam.cpp \ 178vcard/DateParam.cpp \
180vcard/DateValue.cpp \ 179vcard/DateValue.cpp \
181vcard/EmailParam.cpp \ 180vcard/EmailParam.cpp \
182vcard/Entity.cpp \ 181vcard/Entity.cpp \
183vcard/Enum.cpp \ 182vcard/Enum.cpp \
184vcard/GeoValue.cpp \ 183vcard/GeoValue.cpp \
185vcard/ImageParam.cpp \ 184vcard/ImageParam.cpp \
186vcard/ImageValue.cpp \ 185vcard/ImageValue.cpp \
187vcard/LangValue.cpp \ 186vcard/LangValue.cpp \
188vcard/NValue.cpp \ 187vcard/NValue.cpp \
189vcard/Param.cpp \ 188vcard/Param.cpp \
190vcard/PhoneNumberValue.cpp \ 189vcard/PhoneNumberValue.cpp \
191vcard/RToken.cpp \ 190vcard/RToken.cpp \
192vcard/SourceParam.cpp \ 191vcard/SourceParam.cpp \
193vcard/TelParam.cpp \ 192vcard/TelParam.cpp \
194vcard/TextParam.cpp \ 193vcard/TextParam.cpp \
195vcard/TextValue.cpp \ 194vcard/TextValue.cpp \
196vcard/TextBinParam.cpp \ 195vcard/TextBinParam.cpp \
197vcard/URIValue.cpp \ 196vcard/URIValue.cpp \
198vcard/VCardv.cpp \ 197vcard/VCardv.cpp \
199vcard/VCardEntity.cpp \ 198vcard/VCardEntity.cpp \
200vcard/Value.cpp \ 199vcard/Value.cpp \
201vcard/SoundValue.cpp \ 200vcard/SoundValue.cpp \
202vcard/AgentValue.cpp \ 201vcard/AgentValue.cpp \
203vcard/TelValue.cpp \ 202vcard/TelValue.cpp \
204vcard/TextBinValue.cpp \ 203vcard/TextBinValue.cpp \
205vcard/OrgValue.cpp \ 204vcard/OrgValue.cpp \
206vcard/UTCValue.cpp \ 205vcard/UTCValue.cpp \
207vcard/ClassValue.cpp \ 206vcard/ClassValue.cpp \
208vcard/FloatValue.cpp \ 207vcard/FloatValue.cpp \
209vcard/TextListValue.cpp 208vcard/TextListValue.cpp
210 209
211 210
212# plugins/ldap/resourceldap.cpp \ 211# plugins/ldap/resourceldap.cpp \
213# plugins/ldap/resourceldapconfig.cpp \ 212# plugins/ldap/resourceldapconfig.cpp \
214 213
214#formats/binary/binaryformat.cpp \
diff --git a/kabc/plugins/dir/dir.pro b/kabc/plugins/dir/dir.pro
new file mode 100644
index 0000000..3db201f
--- a/dev/null
+++ b/kabc/plugins/dir/dir.pro
@@ -0,0 +1,29 @@
1 TEMPLATE= lib
2CONFIG += qt warn_on release
3#release debug
4
5TARGET = microkabc_dir
6INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat
7DESTDIR = ../../../bin
8#LIBS += -lmicrokde -lmicrokabc
9#LIBS += -L$(QPEDIR)/lib
10
11INTERFACES = \
12
13HEADERS = \
14 resourcedir.h \
15 resourcedirconfig.h
16
17SOURCES = \
18 resourcedir.cpp \
19 resourcedirconfig.cpp
20
21unix : {
22OBJECTS_DIR = obj/unix
23MOC_DIR = moc/unix
24}
25win32: {
26DEFINES += _WIN32_
27OBJECTS_DIR = obj/win
28MOC_DIR = moc/win
29} \ No newline at end of file
diff --git a/kabc/plugins/dir/resourcedir.cpp b/kabc/plugins/dir/resourcedir.cpp
index be19821..6ea2f4b 100644
--- a/kabc/plugins/dir/resourcedir.cpp
+++ b/kabc/plugins/dir/resourcedir.cpp
@@ -135,224 +135,226 @@ Ticket *ResourceDir::requestSaveTicket()
135 135
136 if ( !addressBook() ) return 0; 136 if ( !addressBook() ) return 0;
137 137
138 if ( !lock( mPath ) ) { 138 if ( !lock( mPath ) ) {
139 kdDebug(5700) << "ResourceDir::requestSaveTicket(): Unable to lock path '" 139 kdDebug(5700) << "ResourceDir::requestSaveTicket(): Unable to lock path '"
140 << mPath << "'" << endl; 140 << mPath << "'" << endl;
141 return 0; 141 return 0;
142 } 142 }
143 return createTicket( this ); 143 return createTicket( this );
144} 144}
145 145
146 146
147bool ResourceDir::doOpen() 147bool ResourceDir::doOpen()
148{ 148{
149 QDir dir( mPath ); 149 QDir dir( mPath );
150 if ( !dir.exists() ) { // no directory available 150 if ( !dir.exists() ) { // no directory available
151 return dir.mkdir( dir.path() ); 151 return dir.mkdir( dir.path() );
152 } else { 152 } else {
153 QString testName = dir.entryList( QDir::Files )[0]; 153 QString testName = dir.entryList( QDir::Files )[0];
154 if ( testName.isNull() || testName.isEmpty() ) // no file in directory 154 if ( testName.isNull() || testName.isEmpty() ) // no file in directory
155 return true; 155 return true;
156 156
157 QFile file( mPath + "/" + testName ); 157 QFile file( mPath + "/" + testName );
158 if ( file.open( IO_ReadOnly ) ) 158 if ( file.open( IO_ReadOnly ) )
159 return true; 159 return true;
160 160
161 if ( file.size() == 0 ) 161 if ( file.size() == 0 )
162 return true; 162 return true;
163 163
164 bool ok = mFormat->checkFormat( &file ); 164 bool ok = mFormat->checkFormat( &file );
165 file.close(); 165 file.close();
166 return ok; 166 return ok;
167 } 167 }
168} 168}
169 169
170void ResourceDir::doClose() 170void ResourceDir::doClose()
171{ 171{
172} 172}
173 173
174bool ResourceDir::load() 174bool ResourceDir::load()
175{ 175{
176 kdDebug(5700) << "ResourceDir::load(): '" << mPath << "'" << endl; 176 kdDebug(5700) << "ResourceDir::load(): '" << mPath << "'" << endl;
177 177
178 QDir dir( mPath ); 178 QDir dir( mPath );
179 QStringList files = dir.entryList( QDir::Files ); 179 QStringList files = dir.entryList( QDir::Files );
180 180
181 QStringList::Iterator it; 181 QStringList::Iterator it;
182 bool ok = true; 182 bool ok = true;
183 for ( it = files.begin(); it != files.end(); ++it ) { 183 for ( it = files.begin(); it != files.end(); ++it ) {
184 QFile file( mPath + "/" + (*it) ); 184 QFile file( mPath + "/" + (*it) );
185 185
186 if ( !file.open( IO_ReadOnly ) ) { 186 if ( !file.open( IO_ReadOnly ) ) {
187 addressBook()->error( i18n( "Unable to open file '%1' for reading" ).arg( file.name() ) ); 187 addressBook()->error( i18n( "Unable to open file '%1' for reading" ).arg( file.name() ) );
188 ok = false; 188 ok = false;
189 continue; 189 continue;
190 } 190 }
191 191
192 if ( !mFormat->loadAll( addressBook(), this, &file ) ) 192 if ( !mFormat->loadAll( addressBook(), this, &file ) )
193 ok = false; 193 ok = false;
194 194
195 file.close(); 195 file.close();
196 } 196 }
197 197
198 return ok; 198 return ok;
199} 199}
200 200
201bool ResourceDir::save( Ticket *ticket ) 201bool ResourceDir::save( Ticket *ticket )
202{ 202{
203 kdDebug(5700) << "ResourceDir::save(): '" << mPath << "'" << endl; 203 kdDebug(5700) << "ResourceDir::save(): '" << mPath << "'" << endl;
204 204
205 AddressBook::Iterator it; 205 AddressBook::Iterator it;
206 bool ok = true; 206 bool ok = true;
207 207
208 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) { 208 for ( it = addressBook()->begin(); it != addressBook()->end(); ++it ) {
209 if ( (*it).resource() != this || !(*it).changed() ) 209 if ( (*it).resource() != this || !(*it).changed() )
210 continue; 210 continue;
211 211
212 QFile file( mPath + "/" + (*it).uid() ); 212 QFile file( mPath + "/" + (*it).uid() );
213 if ( !file.open( IO_WriteOnly ) ) { 213 if ( !file.open( IO_WriteOnly ) ) {
214 addressBook()->error( i18n( "Unable to open file '%1' for writing" ).arg( file.name() ) ); 214 addressBook()->error( i18n( "Unable to open file '%1' for writing" ).arg( file.name() ) );
215 continue; 215 continue;
216 } 216 }
217 217
218 mFormat->save( *it, &file ); 218 mFormat->save( *it, &file );
219 219
220 // mark as unchanged 220 // mark as unchanged
221 (*it).setChanged( false ); 221 (*it).setChanged( false );
222 222
223 file.close(); 223 file.close();
224 } 224 }
225 225
226 delete ticket; 226 delete ticket;
227 unlock( mPath ); 227 unlock( mPath );
228 228
229 return ok; 229 return ok;
230} 230}
231 231
232bool ResourceDir::lock( const QString &path ) 232bool ResourceDir::lock( const QString &path )
233{ 233{
234 kdDebug(5700) << "ResourceDir::lock()" << endl; 234 kdDebug(5700) << "ResourceDir::lock()" << endl;
235 235
236 QString p = path; 236 QString p = path;
237//US change the implementation how the lockfilename is getting created 237//US change the implementation how the lockfilename is getting created
238//US p.replace( QRegExp("/"), "_" ); 238//US p.replace( QRegExp("/"), "_" );
239//US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" ); 239//US QString lockName = locateLocal( "data", "kabc/lock/" + p + ".lock" );
240 KURL url(p); 240 KURL url(p);
241 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 241 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
242 242
243 243
244 kdDebug(5700) << "-- lock name: " << lockName << endl; 244 kdDebug(5700) << "-- lock name: " << lockName << endl;
245 245
246 if ( QFile::exists( lockName ) ) return false; 246 if ( QFile::exists( lockName ) ) return false;
247 247
248 QString lockUniqueName; 248 QString lockUniqueName;
249 lockUniqueName = p + KApplication::randomString( 8 ); 249 lockUniqueName = p + KApplication::randomString( 8 );
250 250
251 url = lockUniqueName; 251 url = lockUniqueName;
252//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 252//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
253 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 253 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
254 254
255 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 255 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
256 256
257 // Create unique file 257 // Create unique file
258 QFile file( mLockUniqueName ); 258 QFile file( mLockUniqueName );
259 file.open( IO_WriteOnly ); 259 file.open( IO_WriteOnly );
260 file.close(); 260 file.close();
261 261
262 // Create lock file 262 // Create lock file
263 int result = ::link( QFile::encodeName( mLockUniqueName ), 263 int result = 0;
264#ifndef _WIN32_
265 result = ::link( QFile::encodeName( mLockUniqueName ),
264 QFile::encodeName( lockName ) ); 266 QFile::encodeName( lockName ) );
265 267#endif
266 if ( result == 0 ) { 268 if ( result == 0 ) {
267 addressBook()->emitAddressBookLocked(); 269 addressBook()->emitAddressBookLocked();
268 return true; 270 return true;
269 } 271 }
270 272
271 // TODO: check stat 273 // TODO: check stat
272 274
273 return false; 275 return false;
274} 276}
275 277
276void ResourceDir::unlock( const QString &path ) 278void ResourceDir::unlock( const QString &path )
277{ 279{
278 QString p = path; 280 QString p = path;
279//US change the implementation how the lockfilename is getting created 281//US change the implementation how the lockfilename is getting created
280//US p.replace( QRegExp( "/" ), "_" ); 282//US p.replace( QRegExp( "/" ), "_" );
281//US QString lockName = locate( "data", "kabc/lock/" + p + ".lock" ); 283//US QString lockName = locate( "data", "kabc/lock/" + p + ".lock" );
282 KURL url(p); 284 KURL url(p);
283 QString lockName = locate( "data", "kabc/lock/" + url.fileName() + ".lock" ); 285 QString lockName = locate( "data", "kabc/lock/" + url.fileName() + ".lock" );
284 286
285 ::unlink( QFile::encodeName( lockName ) ); 287 ::unlink( QFile::encodeName( lockName ) );
286 QFile::remove( mLockUniqueName ); 288 QFile::remove( mLockUniqueName );
287 addressBook()->emitAddressBookUnlocked(); 289 addressBook()->emitAddressBookUnlocked();
288} 290}
289 291
290void ResourceDir::setPath( const QString &path ) 292void ResourceDir::setPath( const QString &path )
291{ 293{
292/*US ToDo: no synchronization so far. Has to be changed in the future 294/*US ToDo: no synchronization so far. Has to be changed in the future
293 mDirWatch.stopScan(); 295 mDirWatch.stopScan();
294 mDirWatch.removeDir( mPath ); 296 mDirWatch.removeDir( mPath );
295*/ 297*/
296 mPath = path; 298 mPath = path;
297 299
298/*US ToDo: no synchronization so far. Has to be changed in the future 300/*US ToDo: no synchronization so far. Has to be changed in the future
299 mDirWatch.addDir( mPath, true ); 301 mDirWatch.addDir( mPath, true );
300 mDirWatch.startScan(); 302 mDirWatch.startScan();
301*/ 303*/
302 304
303//US simulate KDirWatch event 305//US simulate KDirWatch event
304 pathChanged(); 306 pathChanged();
305 307
306} 308}
307 309
308QString ResourceDir::path() const 310QString ResourceDir::path() const
309{ 311{
310 return mPath; 312 return mPath;
311} 313}
312 314
313void ResourceDir::setFormat( const QString &format ) 315void ResourceDir::setFormat( const QString &format )
314{ 316{
315 mFormatName = format; 317 mFormatName = format;
316 318
317 if ( mFormat ) 319 if ( mFormat )
318 delete mFormat; 320 delete mFormat;
319 321
320 FormatFactory *factory = FormatFactory::self(); 322 FormatFactory *factory = FormatFactory::self();
321 mFormat = factory->format( mFormatName ); 323 mFormat = factory->format( mFormatName );
322/*US 324/*US
323qDebug("ResourceDir::setFormat initialized with format %s ", format.latin1()); 325qDebug("ResourceDir::setFormat initialized with format %s ", format.latin1());
324 if (mFormatName == "vcard") 326 if (mFormatName == "vcard")
325 mFormat = new VCardFormatPlugin2(); 327 mFormat = new VCardFormatPlugin2();
326 else if (mFormatName == "binary") 328 else if (mFormatName == "binary")
327 mFormat = new BinaryFormat(); 329 mFormat = new BinaryFormat();
328 else 330 else
329 qDebug("ResourceDir::setFormat format unknown !!! %s ", format.latin1()); 331 qDebug("ResourceDir::setFormat format unknown !!! %s ", format.latin1());
330*/ 332*/
331 333
332} 334}
333 335
334QString ResourceDir::format() const 336QString ResourceDir::format() const
335{ 337{
336 return mFormatName; 338 return mFormatName;
337} 339}
338 340
339void ResourceDir::pathChanged() 341void ResourceDir::pathChanged()
340{ 342{
341 if ( !addressBook() ) 343 if ( !addressBook() )
342 return; 344 return;
343 345
344 load(); 346 load();
345 addressBook()->emitAddressBookChanged(); 347 addressBook()->emitAddressBookChanged();
346} 348}
347 349
348void ResourceDir::removeAddressee( const Addressee& addr ) 350void ResourceDir::removeAddressee( const Addressee& addr )
349{ 351{
350 QFile::remove( mPath + "/" + addr.uid() ); 352 QFile::remove( mPath + "/" + addr.uid() );
351} 353}
352 354
353void ResourceDir::cleanUp() 355void ResourceDir::cleanUp()
354{ 356{
355 unlock( mPath ); 357 unlock( mPath );
356} 358}
357 359
358//US #include "resourcedir.moc" 360//US #include "resourcedir.moc"
diff --git a/kabc/plugins/file/file.pro b/kabc/plugins/file/file.pro
new file mode 100644
index 0000000..a5ade93
--- a/dev/null
+++ b/kabc/plugins/file/file.pro
@@ -0,0 +1,30 @@
1 TEMPLATE= lib
2CONFIG += qt warn_on release
3#release debug
4
5TARGET = microkabc_file
6INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat
7
8DESTDIR = ../../../bin
9#LIBS += -lmicrokde -lmicrokabc
10#LIBS += -L$(QPEDIR)/lib
11
12INTERFACES = \
13
14HEADERS = \
15 resourcefile.h \
16 resourcefileconfig.h
17
18SOURCES = \
19 resourcefile.cpp \
20 resourcefileconfig.cpp
21
22unix : {
23OBJECTS_DIR = obj/unix
24MOC_DIR = moc/unix
25}
26win32: {
27DEFINES += _WIN32_
28OBJECTS_DIR = obj/win
29MOC_DIR = moc/win
30} \ No newline at end of file
diff --git a/kabc/plugins/file/resourcefile.cpp b/kabc/plugins/file/resourcefile.cpp
index 3920f69..4b4c935 100644
--- a/kabc/plugins/file/resourcefile.cpp
+++ b/kabc/plugins/file/resourcefile.cpp
@@ -161,229 +161,231 @@ Ticket *ResourceFile::requestSaveTicket()
161} 161}
162 162
163 163
164bool ResourceFile::doOpen() 164bool ResourceFile::doOpen()
165{ 165{
166 QFile file( mFileName ); 166 QFile file( mFileName );
167 167
168 if ( !file.exists() ) { 168 if ( !file.exists() ) {
169 // try to create the file 169 // try to create the file
170 bool ok = file.open( IO_WriteOnly ); 170 bool ok = file.open( IO_WriteOnly );
171 if ( ok ) 171 if ( ok )
172 file.close(); 172 file.close();
173 173
174 return ok; 174 return ok;
175 } else { 175 } else {
176 if ( !file.open( IO_ReadWrite ) ) 176 if ( !file.open( IO_ReadWrite ) )
177 return false; 177 return false;
178 178
179 if ( file.size() == 0 ) { 179 if ( file.size() == 0 ) {
180 file.close(); 180 file.close();
181 return true; 181 return true;
182 } 182 }
183 183
184 bool ok = mFormat->checkFormat( &file ); 184 bool ok = mFormat->checkFormat( &file );
185 file.close(); 185 file.close();
186 186
187 return ok; 187 return ok;
188 } 188 }
189} 189}
190 190
191void ResourceFile::doClose() 191void ResourceFile::doClose()
192{ 192{
193} 193}
194 194
195bool ResourceFile::load() 195bool ResourceFile::load()
196{ 196{
197 197
198 198
199 QFile file( mFileName ); 199 QFile file( mFileName );
200 if ( !file.open( IO_ReadOnly ) ) { 200 if ( !file.open( IO_ReadOnly ) ) {
201 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( mFileName ) ); 201 addressBook()->error( i18n( "Unable to open file '%1'." ).arg( mFileName ) );
202 return false; 202 return false;
203 } 203 }
204 204
205// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1()); 205// qDebug("ResourceFile::load format %s, %s", mFileName.latin1(), mFormatName.latin1());
206 206
207 return mFormat->loadAll( addressBook(), this, &file ); 207 return mFormat->loadAll( addressBook(), this, &file );
208} 208}
209 209
210bool ResourceFile::save( Ticket *ticket ) 210bool ResourceFile::save( Ticket *ticket )
211{ 211{
212// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1()); 212// qDebug("ResourceFile::save format %s, %s", mFileName.latin1(), mFormatName.latin1());
213 213
214 214
215 // create backup file 215 // create backup file
216 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() ); 216 QString extension = "_" + QString::number( QDate::currentDate().dayOfWeek() );
217 217
218/*US we use a simpler method to create a backupfile 218/*US we use a simpler method to create a backupfile
219 219
220 (void) KSaveFile::backupFile( mFileName, QString::null 220 (void) KSaveFile::backupFile( mFileName, QString::null
221 ,extension ); 221 ,extension );
222 222
223 KSaveFile saveFile( mFileName ); 223 KSaveFile saveFile( mFileName );
224 bool ok = false; 224 bool ok = false;
225 if ( saveFile.status() == 0 && saveFile.file() ) 225 if ( saveFile.status() == 0 && saveFile.file() )
226 { 226 {
227 mFormat->saveAll( addressBook(), this, saveFile.file() ); 227 mFormat->saveAll( addressBook(), this, saveFile.file() );
228 ok = saveFile.close(); 228 ok = saveFile.close();
229 } 229 }
230*/ 230*/
231 231
232//US ToDo: write backupfile 232//US ToDo: write backupfile
233 QFile info; 233 QFile info;
234 info.setName( mFileName ); 234 info.setName( mFileName );
235 bool ok = info.open( IO_WriteOnly ); 235 bool ok = info.open( IO_WriteOnly );
236 if ( ok ) { 236 if ( ok ) {
237 mFormat->saveAll( addressBook(), this, &info ); 237 mFormat->saveAll( addressBook(), this, &info );
238 238
239 info.close(); 239 info.close();
240 ok = true; 240 ok = true;
241 } 241 }
242 else { 242 else {
243 243
244 } 244 }
245 245
246 if ( !ok ) 246 if ( !ok )
247 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( mFileName ) ); 247 addressBook()->error( i18n( "Unable to save file '%1'." ).arg( mFileName ) );
248 248
249 delete ticket; 249 delete ticket;
250 unlock( mFileName ); 250 unlock( mFileName );
251 251
252 return ok; 252 return ok;
253 253
254 qDebug("ResourceFile::save has to be changed"); 254 qDebug("ResourceFile::save has to be changed");
255 return true; 255 return true;
256} 256}
257 257
258bool ResourceFile::lock( const QString &fileName ) 258bool ResourceFile::lock( const QString &fileName )
259{ 259{
260 260
261 261
262 QString fn = fileName; 262 QString fn = fileName;
263 263
264//US change the implementation how the lockfilename is getting created 264//US change the implementation how the lockfilename is getting created
265//US fn.replace( QRegExp("/"), "_" ); 265//US fn.replace( QRegExp("/"), "_" );
266//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" ); 266//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
267 267
268 KURL url(fn); 268 KURL url(fn);
269 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 269 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
270 270
271 271
272 272
273 if (QFile::exists( lockName )) return false; 273 if (QFile::exists( lockName )) return false;
274 274
275 QString lockUniqueName; 275 QString lockUniqueName;
276 lockUniqueName = fn + KApplication::randomString( 8 ); 276 lockUniqueName = fn + KApplication::randomString( 8 );
277 277
278 url = lockUniqueName; 278 url = lockUniqueName;
279//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName ); 279//US mLockUniqueName = locateLocal( "data", "kabc/lock/" + lockUniqueName );
280 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() ); 280 mLockUniqueName = locateLocal( "data", "kabc/lock/" + url.fileName() );
281 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl; 281 kdDebug(5700) << "-- lock unique name: " << mLockUniqueName << endl;
282 282
283 // Create unique file 283 // Create unique file
284 QFile file( mLockUniqueName ); 284 QFile file( mLockUniqueName );
285 file.open( IO_WriteOnly ); 285 file.open( IO_WriteOnly );
286 file.close(); 286 file.close();
287 287
288 // Create lock file 288 // Create lock file
289 int result = ::link( QFile::encodeName( mLockUniqueName ), 289 int result = 0;
290#ifndef _WIN32_
291 result = ::link( QFile::encodeName( mLockUniqueName ),
290 QFile::encodeName( lockName ) ); 292 QFile::encodeName( lockName ) );
291 293#endif
292 if ( result == 0 ) { 294 if ( result == 0 ) {
293 addressBook()->emitAddressBookLocked(); 295 addressBook()->emitAddressBookLocked();
294 return true; 296 return true;
295 } 297 }
296 298
297 // TODO: check stat 299 // TODO: check stat
298 300
299 return false; 301 return false;
300} 302}
301 303
302void ResourceFile::unlock( const QString &fileName ) 304void ResourceFile::unlock( const QString &fileName )
303{ 305{
304 QString fn = fileName; 306 QString fn = fileName;
305//US change the implementation how the lockfilename is getting created 307//US change the implementation how the lockfilename is getting created
306//US fn.replace( QRegExp( "/" ), "_" ); 308//US fn.replace( QRegExp( "/" ), "_" );
307//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" ); 309//US QString lockName = locateLocal( "data", "kabc/lock/" + fn + ".lock" );
308//US QString lockName = fn + ".lock"; 310//US QString lockName = fn + ".lock";
309 KURL url(fn); 311 KURL url(fn);
310 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" ); 312 QString lockName = locateLocal( "data", "kabc/lock/" + url.fileName() + ".lock" );
311 313
312 QFile::remove( lockName ); 314 QFile::remove( lockName );
313 QFile::remove( mLockUniqueName ); 315 QFile::remove( mLockUniqueName );
314 addressBook()->emitAddressBookUnlocked(); 316 addressBook()->emitAddressBookUnlocked();
315} 317}
316 318
317void ResourceFile::setFileName( const QString &fileName ) 319void ResourceFile::setFileName( const QString &fileName )
318{ 320{
319/*US ToDo: no synchronization so far. Has to be changed in the future 321/*US ToDo: no synchronization so far. Has to be changed in the future
320 mDirWatch.stopScan(); 322 mDirWatch.stopScan();
321 mDirWatch.removeFile( mFileName ); 323 mDirWatch.removeFile( mFileName );
322*/ 324*/
323 mFileName = fileName; 325 mFileName = fileName;
324 326
325 327
326/*US ToDo: no synchronization so far. Has to be changed in the future 328/*US ToDo: no synchronization so far. Has to be changed in the future
327 mDirWatch.addFile( mFileName ); 329 mDirWatch.addFile( mFileName );
328 mDirWatch.startScan(); 330 mDirWatch.startScan();
329*/ 331*/
330//US simulate KDirWatch event 332//US simulate KDirWatch event
331 fileChanged(); 333 fileChanged();
332} 334}
333 335
334QString ResourceFile::fileName() const 336QString ResourceFile::fileName() const
335{ 337{
336 return mFileName; 338 return mFileName;
337} 339}
338 340
339void ResourceFile::setFormat( const QString &format ) 341void ResourceFile::setFormat( const QString &format )
340{ 342{
341 mFormatName = format; 343 mFormatName = format;
342 delete mFormat; 344 delete mFormat;
343 345
344 FormatFactory *factory = FormatFactory::self(); 346 FormatFactory *factory = FormatFactory::self();
345 mFormat = factory->format( mFormatName ); 347 mFormat = factory->format( mFormatName );
346/*US 348/*US
347//qDebug("ResourceFile::setFormat initialized with format %s ", format.latin1()); 349//qDebug("ResourceFile::setFormat initialized with format %s ", format.latin1());
348 if (mFormatName == "vcard") { 350 if (mFormatName == "vcard") {
349 mFormat = new VCardFormatPlugin2(); 351 mFormat = new VCardFormatPlugin2();
350// qDebug("ResourceFile::setFormat format %s", mFormatName.latin1()); 352// qDebug("ResourceFile::setFormat format %s", mFormatName.latin1());
351 } 353 }
352 else if (mFormatName == "binary") { 354 else if (mFormatName == "binary") {
353 mFormat = new BinaryFormat(); 355 mFormat = new BinaryFormat();
354// qDebug("ResourceFile::setFormat format %s", mFormatName.latin1()); 356// qDebug("ResourceFile::setFormat format %s", mFormatName.latin1());
355 } 357 }
356 else 358 else
357 qDebug("ResourceFile::setFormat format unknown !!! %s ", format.latin1()); 359 qDebug("ResourceFile::setFormat format unknown !!! %s ", format.latin1());
358*/ 360*/
359 361
360} 362}
361 363
362QString ResourceFile::format() const 364QString ResourceFile::format() const
363{ 365{
364 return mFormatName; 366 return mFormatName;
365} 367}
366 368
367void ResourceFile::fileChanged() 369void ResourceFile::fileChanged()
368{ 370{
369 // There is a small theoretical chance that KDirWatch calls us before 371 // There is a small theoretical chance that KDirWatch calls us before
370 // we are fully constructed 372 // we are fully constructed
371 if (!addressBook()) 373 if (!addressBook())
372 return; 374 return;
373 load(); 375 load();
374 addressBook()->emitAddressBookChanged(); 376 addressBook()->emitAddressBookChanged();
375} 377}
376 378
377void ResourceFile::removeAddressee( const Addressee &addr ) 379void ResourceFile::removeAddressee( const Addressee &addr )
378{ 380{
379 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/photos/" ) + addr.uid() ) ); 381 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/photos/" ) + addr.uid() ) );
380 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/logos/" ) + addr.uid() ) ); 382 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/logos/" ) + addr.uid() ) );
381 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/sounds/" ) + addr.uid() ) ); 383 QFile::remove( QFile::encodeName( locateLocal( "data", "kabc/sounds/" ) + addr.uid() ) );
382} 384}
383 385
384void ResourceFile::cleanUp() 386void ResourceFile::cleanUp()
385{ 387{
386 unlock( mFileName ); 388 unlock( mFileName );
387} 389}
388 390
389//US #include "resourcefile.moc" 391//US #include "resourcefile.moc"
diff --git a/kaddressbook/kcmconfigs/addresseewidget.cpp b/kaddressbook/kcmconfigs/addresseewidget.cpp
index f84b2ba..eb5bdd9 100644
--- a/kaddressbook/kcmconfigs/addresseewidget.cpp
+++ b/kaddressbook/kcmconfigs/addresseewidget.cpp
@@ -1,156 +1,157 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program 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 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qgroupbox.h> 24#include <qgroupbox.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qlistbox.h> 27#include <qlistbox.h>
28#include <qpushbutton.h> 28#include <qpushbutton.h>
29#include <qapplication.h>
29 30
30#include <kbuttonbox.h> 31#include <kbuttonbox.h>
31#include <kcombobox.h> 32#include <kcombobox.h>
32#include <kconfig.h> 33#include <kconfig.h>
33#include <kdialog.h> 34#include <kdialog.h>
34#include <klocale.h> 35#include <klocale.h>
35#include <kglobal.h> 36#include <kglobal.h>
36#include <klineedit.h> 37#include <klineedit.h>
37#include <kstandarddirs.h> 38#include <kstandarddirs.h>
38 39
39#include "addresseewidget.h" 40#include "addresseewidget.h"
40 41
41NamePartWidget::NamePartWidget( const QString &title, QWidget *parent, 42NamePartWidget::NamePartWidget( const QString &title, QWidget *parent,
42 const char *name ) 43 const char *name )
43 : QWidget( parent, name ) 44 : QWidget( parent, name )
44{ 45{
45 if (KGlobal::getOrientation() == KGlobal::Portrait) 46 if (KGlobal::getOrientation() == KGlobal::Portrait)
46 { 47 {
47 QGridLayout* layout = new QGridLayout( this, 1, 1, KDialog::marginHintSmall(), 48 QGridLayout* layout = new QGridLayout( this, 1, 1, KDialog::marginHintSmall(),
48 KDialog::spacingHintSmall() ); 49 KDialog::spacingHintSmall() );
49 50
50 QLabel *label = new QLabel( i18n( title ), this ); 51 QLabel *label = new QLabel( i18n( title ), this );
51 layout->addWidget( label, 0, 1 ); 52 layout->addWidget( label, 0, 1 );
52 53
53 mBox = new QListBox( this ); 54 mBox = new QListBox( this );
54 mBox->setMaximumSize(70, 70); 55 mBox->setMaximumSize(70, 70);
55 layout->addMultiCellWidget( mBox, 0, 1, 0, 0 ); 56 layout->addMultiCellWidget( mBox, 0, 1, 0, 0 );
56 57
57 KButtonBox *bbox = new KButtonBox( this, Qt::Vertical ); 58 KButtonBox *bbox = new KButtonBox( this, Qt::Vertical );
58 mAddButton = bbox->addButton( i18n( "Add" ), this, SLOT( add() ) ); 59 mAddButton = bbox->addButton( i18n( "Add" ), this, SLOT( add() ) );
59 mRemoveButton = bbox->addButton( i18n( "Rem" ), this, SLOT( remove() ) ); 60 mRemoveButton = bbox->addButton( i18n( "Rem" ), this, SLOT( remove() ) );
60 bbox->layout(); 61 bbox->layout();
61 layout->addMultiCellWidget( bbox, 0, 1, 2,2); 62 layout->addMultiCellWidget( bbox, 0, 1, 2,2);
62 63
63 mEdit = new KLineEdit( this ); 64 mEdit = new KLineEdit( this );
64 layout->addWidget( mEdit, 1, 1 ); 65 layout->addWidget( mEdit, 1, 1 );
65 //mEdit->setMinimumWidth(50); 66 //mEdit->setMinimumWidth(50);
66 67
67// layout->addWidget( group ); 68// layout->addWidget( group );
68 69
69 } 70 }
70 else 71 else
71 { 72 {
72 QHBoxLayout *layout = new QHBoxLayout( this ); 73 QHBoxLayout *layout = new QHBoxLayout( this );
73 74
74 QGroupBox *group = new QGroupBox( 0, Qt::Vertical, title, this ); 75 QGroupBox *group = new QGroupBox( 0, Qt::Vertical, title, this );
75 QGridLayout *groupLayout = new QGridLayout( group->layout(), 2, 2, 76 QGridLayout *groupLayout = new QGridLayout( group->layout(), 2, 2,
76 KDialog::spacingHint() ); 77 KDialog::spacingHint() );
77 78
78 mBox = new QListBox( group ); 79 mBox = new QListBox( group );
79 80
80 groupLayout->addWidget( mBox, 0, 0 ); 81 groupLayout->addWidget( mBox, 0, 0 );
81 82
82 KButtonBox *bbox = new KButtonBox( group, Qt::Vertical ); 83 KButtonBox *bbox = new KButtonBox( group, Qt::Vertical );
83 mAddButton = bbox->addButton( i18n( "Add" ), this, SLOT( add() ) ); 84 mAddButton = bbox->addButton( i18n( "Add" ), this, SLOT( add() ) );
84 mRemoveButton = bbox->addButton( i18n( "Remove" ), this, SLOT( remove() ) ); 85 mRemoveButton = bbox->addButton( i18n( "Remove" ), this, SLOT( remove() ) );
85 bbox->layout(); 86 bbox->layout();
86 groupLayout->addWidget( bbox, 0, 1 ); 87 groupLayout->addWidget( bbox, 0, 1 );
87 88
88 mEdit = new KLineEdit( group ); 89 mEdit = new KLineEdit( group );
89 groupLayout->addMultiCellWidget( mEdit, 1, 1, 0, 1 ); 90 groupLayout->addMultiCellWidget( mEdit, 1, 1, 0, 1 );
90 91
91 layout->addWidget( group ); 92 layout->addWidget( group );
92 93
93 } 94 }
94 95
95 mAddButton->setEnabled( false ); 96 mAddButton->setEnabled( false );
96 mRemoveButton->setEnabled( false ); 97 mRemoveButton->setEnabled( false );
97 98
98 99
99 connect( mBox, SIGNAL( selectionChanged( QListBoxItem* ) ), 100 connect( mBox, SIGNAL( selectionChanged( QListBoxItem* ) ),
100 SLOT( selectionChanged( QListBoxItem* ) ) ); 101 SLOT( selectionChanged( QListBoxItem* ) ) );
101 connect( mEdit, SIGNAL( textChanged( const QString& ) ), 102 connect( mEdit, SIGNAL( textChanged( const QString& ) ),
102 SLOT( textChanged( const QString& ) ) ); 103 SLOT( textChanged( const QString& ) ) );
103 connect( mEdit, SIGNAL( returnPressed() ), SLOT( add() ) ); 104 connect( mEdit, SIGNAL( returnPressed() ), SLOT( add() ) );
104 105
105} 106}
106 107
107NamePartWidget::~NamePartWidget() 108NamePartWidget::~NamePartWidget()
108{ 109{
109} 110}
110 111
111void NamePartWidget::setNameParts( const QStringList &list ) 112void NamePartWidget::setNameParts( const QStringList &list )
112{ 113{
113 mBox->clear(); 114 mBox->clear();
114 mBox->insertStringList( list ); 115 mBox->insertStringList( list );
115} 116}
116 117
117QStringList NamePartWidget::nameParts() const 118QStringList NamePartWidget::nameParts() const
118{ 119{
119 QStringList parts; 120 QStringList parts;
120 for ( uint i = 0; i < mBox->count(); ++i ) 121 for ( uint i = 0; i < mBox->count(); ++i )
121 parts.append( mBox->text( i ) ); 122 parts.append( mBox->text( i ) );
122 123
123 return parts; 124 return parts;
124} 125}
125 126
126void NamePartWidget::add() 127void NamePartWidget::add()
127{ 128{
128 if ( !mEdit->text().isEmpty() ) { 129 if ( !mEdit->text().isEmpty() ) {
129 mBox->insertItem( mEdit->text() ); 130 mBox->insertItem( mEdit->text() );
130 emit modified(); 131 emit modified();
131 } 132 }
132 133
133 mEdit->setText( "" ); 134 mEdit->setText( "" );
134} 135}
135 136
136void NamePartWidget::remove() 137void NamePartWidget::remove()
137{ 138{
138 mBox->removeItem( mBox->currentItem() ); 139 mBox->removeItem( mBox->currentItem() );
139 if ( mBox->count() == 0 ) 140 if ( mBox->count() == 0 )
140 selectionChanged( 0 ); 141 selectionChanged( 0 );
141 142
142 emit modified(); 143 emit modified();
143} 144}
144 145
145void NamePartWidget::selectionChanged( QListBoxItem *item ) 146void NamePartWidget::selectionChanged( QListBoxItem *item )
146{ 147{
147 mRemoveButton->setEnabled( item != 0 ); 148 mRemoveButton->setEnabled( item != 0 );
148} 149}
149 150
150void NamePartWidget::textChanged( const QString& text ) 151void NamePartWidget::textChanged( const QString& text )
151{ 152{
152 mAddButton->setEnabled( !text.isEmpty() ); 153 mAddButton->setEnabled( !text.isEmpty() );
153} 154}
154 155
155 156
156AddresseeWidget::AddresseeWidget( QWidget *parent, const char *name ) 157AddresseeWidget::AddresseeWidget( QWidget *parent, const char *name )
diff --git a/kaddressbook/mainembedded.cpp b/kaddressbook/mainembedded.cpp
index dce6a88..cf1fd3e 100644
--- a/kaddressbook/mainembedded.cpp
+++ b/kaddressbook/mainembedded.cpp
@@ -1,189 +1,190 @@
1#ifndef DESKTOP_VERSION 1#ifndef DESKTOP_VERSION
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <stdlib.h> 3#include <stdlib.h>
4#else 4#else
5#include <qapplication.h> 5#include <qapplication.h>
6#include <qwindowsstyle.h> 6#include <qwindowsstyle.h>
7#include <qplatinumstyle.h> 7#include <qplatinumstyle.h>
8#include <qmainwindow.h> 8#include <qmainwindow.h>
9#endif 9#endif
10 10
11#include <kstandarddirs.h> 11#include <kstandarddirs.h>
12#include <kglobal.h> 12#include <kglobal.h>
13#include <stdio.h> 13#include <stdio.h>
14#include <qdir.h> 14#include <qdir.h>
15#include "kaddressbookmain.h" 15#include "kaddressbookmain.h"
16 16
17int main( int argc, char **argv ) 17int main( int argc, char **argv )
18{ 18{
19#ifndef DESKTOP_VERSION 19#ifndef DESKTOP_VERSION
20 QPEApplication a( argc, argv ); 20 QPEApplication a( argc, argv );
21 a.setKeepRunning (); 21 a.setKeepRunning ();
22#else 22#else
23 QApplication a( argc, argv ); 23 QApplication a( argc, argv );
24 QApplication::setStyle( new QPlatinumStyle ()); 24 QApplication::setStyle( new QPlatinumStyle ());
25#endif 25#endif
26 26
27 bool exitHelp = false; 27 bool exitHelp = false;
28 if ( argc > 1 ) { 28 if ( argc > 1 ) {
29 QString command = argv[1]; 29 QString command = argv[1];
30 if ( command == "-help" ){ 30 if ( command == "-help" ){
31 printf("KA/E command line commands:\n"); 31 printf("KA/E command line commands:\n");
32 printf(" no command: Start KA/E in usual way\n"); 32 printf(" no command: Start KA/E in usual way\n");
33 printf(" -help: This output\n"); 33 printf(" -help: This output\n");
34 printf(" KA/E is exiting now. Bye!\n"); 34 printf(" KA/E is exiting now. Bye!\n");
35 exitHelp = true; 35 exitHelp = true;
36 } 36 }
37 } 37 }
38 if ( ! exitHelp ) { 38 if ( ! exitHelp ) {
39 39
40 KGlobal::setAppName( "kaddressbook" ); 40 KGlobal::setAppName( "kaddressbook" );
41#ifndef DESKTOP_VERSION 41#ifndef DESKTOP_VERSION
42 if ( QApplication::desktop()->width() > 320 ) 42 if ( QApplication::desktop()->width() > 320 )
43 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons22/"); 43 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons22/");
44 else 44 else
45 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/"); 45 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/");
46#else 46#else
47 QString fileName ; 47 QString fileName ;
48 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/"; 48 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/icons22/";
49 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName)); 49 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName));
50 QApplication::addLibraryPath ( qApp->applicationDirPath () );
50 51
51#endif 52#endif
52 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook"))); 53 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook")));
53 KAddressBookMain m ; 54 KAddressBookMain m ;
54//US MainWindow m; 55//US MainWindow m;
55//US QObject::connect( &a, SIGNAL (appMessage ( const QCString &, const QByteArray & )),&m, SLOT(recieve( const QCString&, const QByteArray& ))); 56//US QObject::connect( &a, SIGNAL (appMessage ( const QCString &, const QByteArray & )),&m, SLOT(recieve( const QCString&, const QByteArray& )));
56 57
57#ifndef DESKTOP_VERSION 58#ifndef DESKTOP_VERSION
58 a.showMainWidget( &m ); 59 a.showMainWidget( &m );
59#else 60#else
60 a.setMainWidget(m ); 61 a.setMainWidget( &m );
61 m->show(); 62 m.show();
62#endif 63#endif
63 a.exec(); 64 a.exec();
64 65
65 } 66 }
66 qDebug("KA: Bye! "); 67 qDebug("KA: Bye! ");
67} 68}
68 69
69/* 70/*
70#include <stdlib.h> 71#include <stdlib.h>
71 72
72#include <qstring.h> 73#include <qstring.h>
73 74
74#include <kabc/stdaddressbook.h> 75#include <kabc/stdaddressbook.h>
75#include <kaboutdata.h> 76#include <kaboutdata.h>
76#include <kcmdlineargs.h> 77#include <kcmdlineargs.h>
77#include <kcrash.h> 78#include <kcrash.h>
78#include <kdebug.h> 79#include <kdebug.h>
79#include <klocale.h> 80#include <klocale.h>
80#include <kstartupinfo.h> 81#include <kstartupinfo.h>
81#include <kuniqueapplication.h> 82#include <kuniqueapplication.h>
82#include <kwin.h> 83#include <kwin.h>
83 84
84#include "kaddressbookmain.h" 85#include "kaddressbookmain.h"
85#include "kabcore.h" 86#include "kabcore.h"
86 87
87extern "C" { 88extern "C" {
88 89
89void crashHandler( int ) 90void crashHandler( int )
90{ 91{
91 KABC::StdAddressBook::handleCrash(); 92 KABC::StdAddressBook::handleCrash();
92 ::exit( 0 ); 93 ::exit( 0 );
93} 94}
94 95
95} 96}
96 97
97class KAddressBookApp : public KUniqueApplication { 98class KAddressBookApp : public KUniqueApplication {
98 public: 99 public:
99 KAddressBookApp() : mMainWin( 0 ) {} 100 KAddressBookApp() : mMainWin( 0 ) {}
100 ~KAddressBookApp() {} 101 ~KAddressBookApp() {}
101 102
102 int newInstance(); 103 int newInstance();
103 104
104 private: 105 private:
105 KAddressBookMain *mMainWin; 106 KAddressBookMain *mMainWin;
106}; 107};
107 108
108int KAddressBookApp::newInstance() 109int KAddressBookApp::newInstance()
109{ 110{
110 if ( isRestored() ) { 111 if ( isRestored() ) {
111 // There can only be one main window 112 // There can only be one main window
112 if ( KMainWindow::canBeRestored( 1 ) ) { 113 if ( KMainWindow::canBeRestored( 1 ) ) {
113 mMainWin = new KAddressBookMain; 114 mMainWin = new KAddressBookMain;
114 mMainWin->show(); 115 mMainWin->show();
115 mMainWin->restore( 1 ); 116 mMainWin->restore( 1 );
116 } 117 }
117 } else { 118 } else {
118 KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); 119 KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
119 120
120 QCString addrStr = args->getOption( "addr" ); 121 QCString addrStr = args->getOption( "addr" );
121 QCString uidStr = args->getOption( "uid" ); 122 QCString uidStr = args->getOption( "uid" );
122 QString addr; 123 QString addr;
123 QString uid; 124 QString uid;
124 if ( !addrStr.isEmpty() ) 125 if ( !addrStr.isEmpty() )
125 addr = QString::fromLocal8Bit( addrStr ); 126 addr = QString::fromLocal8Bit( addrStr );
126 if ( !uidStr.isEmpty() ) 127 if ( !uidStr.isEmpty() )
127 uid = QString::fromLocal8Bit( uidStr ); 128 uid = QString::fromLocal8Bit( uidStr );
128 129
129 130
130 if ( args->isSet( "editor-only" ) ) { 131 if ( args->isSet( "editor-only" ) ) {
131 if ( !mMainWin ) 132 if ( !mMainWin )
132 mMainWin = new KAddressBookMain; 133 mMainWin = new KAddressBookMain;
133 KStartupInfo::appStarted(); 134 KStartupInfo::appStarted();
134 mMainWin->hide(); 135 mMainWin->hide();
135 } else { 136 } else {
136 if ( mMainWin ) { 137 if ( mMainWin ) {
137 mMainWin->show(); 138 mMainWin->show();
138 KWin::setActiveWindow( mMainWin->winId() ); 139 KWin::setActiveWindow( mMainWin->winId() );
139 } else { 140 } else {
140 mMainWin = new KAddressBookMain; 141 mMainWin = new KAddressBookMain;
141 mMainWin->show(); 142 mMainWin->show();
142 } 143 }
143 } 144 }
144 // Can not see why anyone would pass both a uid and an email address, so I'll leave it that two contact editors will show if they do 145 // Can not see why anyone would pass both a uid and an email address, so I'll leave it that two contact editors will show if they do
145 if ( !addr.isEmpty() ) 146 if ( !addr.isEmpty() )
146 mMainWin->addEmail( addr ); 147 mMainWin->addEmail( addr );
147 148
148 if ( !uid.isEmpty() ) 149 if ( !uid.isEmpty() )
149 mMainWin->showContactEditor( uid ); 150 mMainWin->showContactEditor( uid );
150 if ( args->isSet( "new-contact" ) ) { 151 if ( args->isSet( "new-contact" ) ) {
151 mMainWin->newContact(); 152 mMainWin->newContact();
152 } 153 }
153 } 154 }
154 155
155 KCrash::setEmergencySaveFunction( crashHandler ); 156 KCrash::setEmergencySaveFunction( crashHandler );
156 157
157 return 0; 158 return 0;
158} 159}
159 160
160// the dummy argument is required, because KMail apparently sends an empty 161// the dummy argument is required, because KMail apparently sends an empty
161// argument. 162// argument.
162static KCmdLineOptions kmoptions[] = 163static KCmdLineOptions kmoptions[] =
163{ 164{
164 { "a", 0 , 0 }, 165 { "a", 0 , 0 },
165 { "addr <email>", I18N_NOOP( "Shows contact editor with given email address" ), 0 }, 166 { "addr <email>", I18N_NOOP( "Shows contact editor with given email address" ), 0 },
166 { "uid <uid>", I18N_NOOP( "Shows contact editor with given uid" ), 0 }, 167 { "uid <uid>", I18N_NOOP( "Shows contact editor with given uid" ), 0 },
167 { "editor-only", I18N_NOOP( "Launches in editor only mode" ), 0 }, 168 { "editor-only", I18N_NOOP( "Launches in editor only mode" ), 0 },
168 { "new-contact", I18N_NOOP( "Launches editor for the new contact" ), 0 }, 169 { "new-contact", I18N_NOOP( "Launches editor for the new contact" ), 0 },
169 { "+[argument]", I18N_NOOP( "dummy argument" ), 0}, 170 { "+[argument]", I18N_NOOP( "dummy argument" ), 0},
170 { 0, 0, 0} 171 { 0, 0, 0}
171}; 172};
172 173
173int main( int argc, char *argv[] ) 174int main( int argc, char *argv[] )
174{ 175{
175 KLocale::setMainCatalogue( "kaddressbook" ); 176 KLocale::setMainCatalogue( "kaddressbook" );
176 177
177 KCmdLineArgs::init( argc, argv, KABCore::createAboutData() ); 178 KCmdLineArgs::init( argc, argv, KABCore::createAboutData() );
178 KCmdLineArgs::addCmdLineOptions( kmoptions ); 179 KCmdLineArgs::addCmdLineOptions( kmoptions );
179 KUniqueApplication::addCmdLineOptions(); 180 KUniqueApplication::addCmdLineOptions();
180 181
181 if ( !KAddressBookApp::start() ) 182 if ( !KAddressBookApp::start() )
182 exit( 0 ); 183 exit( 0 );
183 184
184 KAddressBookApp app; 185 KAddressBookApp app;
185 KGlobal::locale()->insertCatalogue( "libkdepim" ); 186 KGlobal::locale()->insertCatalogue( "libkdepim" );
186 187
187 return app.exec(); 188 return app.exec();
188} 189}
189*/ 190*/
diff --git a/kopi-desktop.pro b/kopi-desktop.pro
index 1a5fabd..b255756 100644
--- a/kopi-desktop.pro
+++ b/kopi-desktop.pro
@@ -1,6 +1,6 @@
1 1
2 2
3TEMPLATE = subdirs 3TEMPLATE = subdirs
4SUBDIRS = libical libkcal microkde libkdepim kabc korganizer kaddressbook 4SUBDIRS = libical libkcal microkde libkdepim kabc korganizer kaddressbook kabc/plugins/file kabc/plugins/dir
5#kalarmd 5#kalarmd
6 6
diff --git a/kopiemail.control b/kopiemail.control
index 3d563f0..7a93a1b 100644
--- a/kopiemail.control
+++ b/kopiemail.control
@@ -1,14 +1,14 @@
1Files: bin/ompi apps/Pim/kmicromail.desktop pics/kdepim/kmicromail/* lib/libssl* lib/libcrypto.* lib/libkmicro* 1Files: bin/ompi apps/Pim/kmicromail.desktop pics/kdepim/kmicromail/* lib/libssl* lib/libcrypto.* lib/libkmicro*
2 2
3Priority: optional 3Priority: optional
4Section: qpe/pim 4Section: qpe/pim
5Maintainer: Lutz Rogowski <lutz@pi-sync.net> 5Maintainer: Lutz Rogowski <lutz@pi-sync.net>
6Architecture: arm 6Architecture: arm
7Version: 1.9.2a 7Version: 1.9.2b
8License: GPL 8License: GPL
9Depends: lib/libmicrokde.so 9Depends: lib/libmicrokde.so
10Description: KOrganizer/Pi and Kaddressbook/Pi 10Description: KOrganizer/Pi and Kaddressbook/Pi
11 The embedded version of KOrganizer/Platform-independend, 11 The embedded version of KOrganizer/Platform-independend,
12 the KDE calendar and scheduling program 12 the KDE calendar and scheduling program
13 optimized for 640x480 and 320x240 resolution 13 optimized for 640x480 and 320x240 resolution
14 on Zaurus PDA 14 on Zaurus PDA
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,323 +1,319 @@
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;
292/*US 288/*US
293 if (lt_dlsym(handle, "__kde_do_not_unload") != 0) { 289 if (lt_dlsym(handle, "__kde_do_not_unload") != 0) {
294// kdDebug(150) << "Will not unload " << name << endl; 290// kdDebug(150) << "Will not unload " << name << endl;
295 unload_mode = DONT_UNLOAD; 291 unload_mode = DONT_UNLOAD;
296 } else if (lt_dlsym(handle, "__kde_do_unload") != 0) { 292 } else if (lt_dlsym(handle, "__kde_do_unload") != 0) {
297 unload_mode = UNLOAD; 293 unload_mode = UNLOAD;
298 } 294 }
299*/ 295*/
300//US use instead: 296//US use instead:
301 if (h->resolve("__kde_do_not_unload") != 0) { 297 if (h->resolve("__kde_do_not_unload") != 0) {
302// kdDebug(150) << "Will not unload " << name << endl; 298// kdDebug(150) << "Will not unload " << name << endl;
303 unload_mode = DONT_UNLOAD; 299 unload_mode = DONT_UNLOAD;
304 } else if (h->resolve("__kde_do_unload") != 0) { 300 } else if (h->resolve("__kde_do_unload") != 0) {
305 unload_mode = UNLOAD; 301 unload_mode = UNLOAD;
306 } 302 }
307} 303}
308 304
309class KLibLoaderPrivate 305class KLibLoaderPrivate
310{ 306{
311public: 307public:
312 QPtrList<KLibWrapPrivate> loaded_stack; 308 QPtrList<KLibWrapPrivate> loaded_stack;
313 QPtrList<KLibWrapPrivate> pending_close; 309 QPtrList<KLibWrapPrivate> pending_close;
314 enum {UNKNOWN, UNLOAD, DONT_UNLOAD} unload_mode; 310 enum {UNKNOWN, UNLOAD, DONT_UNLOAD} unload_mode;
315 311
316 QString errorMessage; 312 QString errorMessage;
317}; 313};
318 314
319KLibLoader* KLibLoader::s_self = 0; 315KLibLoader* KLibLoader::s_self = 0;
320 316
321KLibLoader* KLibLoader::self() 317KLibLoader* KLibLoader::self()
322{ 318{
323 if ( !s_self ) 319 if ( !s_self )
@@ -352,296 +348,301 @@ KLibLoader::~KLibLoader()
352{ 348{
353// kdDebug(150) << "Deleting KLibLoader " << this << " " << name() << endl; 349// kdDebug(150) << "Deleting KLibLoader " << this << " " << name() << endl;
354 350
355 QAsciiDictIterator<KLibWrapPrivate> it( m_libs ); 351 QAsciiDictIterator<KLibWrapPrivate> it( m_libs );
356 for (; it.current(); ++it ) 352 for (; it.current(); ++it )
357 { 353 {
358 kdDebug(150) << "The KLibLoader contains the library " << it.current()->name 354 kdDebug(150) << "The KLibLoader contains the library " << it.current()->name
359 << " (" << it.current()->lib << ")" << endl; 355 << " (" << it.current()->lib << ")" << endl;
360 d->pending_close.append(it.current()); 356 d->pending_close.append(it.current());
361 } 357 }
362 358
363 close_pending(0); 359 close_pending(0);
364 360
365 delete d; 361 delete d;
366} 362}
367 363
368//static 364//static
369QString KLibLoader::findLibrary( const char * name/*US , const KInstance * instance*/ ) 365QString KLibLoader::findLibrary( const char * name/*US , const KInstance * instance*/ )
370{ 366{
371 QCString libname( name ); 367 QCString libname( name );
372 368
373 // only append ".la" if there is no extension 369 // only append ".la" if there is no extension
374 // this allows to load non-libtool libraries as well 370 // this allows to load non-libtool libraries as well
375 // (mhk, 20000228) 371 // (mhk, 20000228)
376 int pos = libname.findRev('/'); 372 int pos = libname.findRev('/');
377 if (pos < 0) 373 if (pos < 0)
378 pos = 0; 374 pos = 0;
379/*US 375/*US
380 if (libname.find('.', pos) < 0) { 376 if (libname.find('.', pos) < 0) {
381 libname += ".la"; 377 libname += ".la";
382 } 378 }
383*/ 379*/
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,174 +1,173 @@
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
143 key = "data_"+relPath; 142 key = "data_"+relPath;
144 143
145 if (d && d->restrictions[key.latin1()]) 144 if (d && d->restrictions[key.latin1()])
146 d->dataRestrictionActive = true; 145 d->dataRestrictionActive = true;
147} 146}
148 147
149 148
150QStringList KStandardDirs::allTypes() const 149QStringList KStandardDirs::allTypes() const
151{ 150{
152 QStringList list; 151 QStringList list;
153 for (int i = 0; types[i] != 0; ++i) 152 for (int i = 0; types[i] != 0; ++i)
154 list.append(QString::fromLatin1(types[i])); 153 list.append(QString::fromLatin1(types[i]));
155 return list; 154 return list;
156} 155}
157 156
158void KStandardDirs::addPrefix( const QString& _dir ) 157void KStandardDirs::addPrefix( const QString& _dir )
159{ 158{
160 if (_dir.isNull()) 159 if (_dir.isNull())
161 return; 160 return;
162 161
163 QString dir = _dir; 162 QString dir = _dir;
164 if (dir.at(dir.length() - 1) != '/') 163 if (dir.at(dir.length() - 1) != '/')
165 dir += '/'; 164 dir += '/';
166 165
167 if (!prefixes.contains(dir)) { 166 if (!prefixes.contains(dir)) {
168 prefixes.append(dir); 167 prefixes.append(dir);
169 dircache.clear(); 168 dircache.clear();
170 } 169 }
171} 170}
172 171
173void KStandardDirs::addXdgConfigPrefix( const QString& _dir ) 172void KStandardDirs::addXdgConfigPrefix( const QString& _dir )
174{ 173{
@@ -1100,257 +1099,257 @@ bool KStandardDirs::makeDir(const QString& dir2, int mode)
1100//US if (stat(baseEncoded, &st) != 0) 1099//US if (stat(baseEncoded, &st) != 0)
1101 QFileInfo baseEncodedInfo(baseEncoded); 1100 QFileInfo baseEncodedInfo(baseEncoded);
1102 if (!baseEncodedInfo.exists()) 1101 if (!baseEncodedInfo.exists())
1103 { 1102 {
1104 // Directory does not exist.... 1103 // Directory does not exist....
1105 // Or maybe a dangling symlink ? 1104 // Or maybe a dangling symlink ?
1106//US if (lstat(baseEncoded, &st) == 0) 1105//US if (lstat(baseEncoded, &st) == 0)
1107 if (baseEncodedInfo.isSymLink()) { 1106 if (baseEncodedInfo.isSymLink()) {
1108//US (void)unlink(baseEncoded); // try removing 1107//US (void)unlink(baseEncoded); // try removing
1109 QFile(baseEncoded).remove(); 1108 QFile(baseEncoded).remove();
1110 } 1109 }
1111 1110
1112 //US if ( mkdir(baseEncoded, (mode_t) mode) != 0) 1111 //US if ( mkdir(baseEncoded, (mode_t) mode) != 0)
1113 QDir dirObj; 1112 QDir dirObj;
1114 if ( dirObj.mkdir(baseEncoded) != true ) 1113 if ( dirObj.mkdir(baseEncoded) != true )
1115 { 1114 {
1116 //US perror("trying to create local folder"); 1115 //US perror("trying to create local folder");
1117 return false; // Couldn't create it :-( 1116 return false; // Couldn't create it :-(
1118 } 1117 }
1119 } 1118 }
1120 i = pos + 1; 1119 i = pos + 1;
1121 } 1120 }
1122 return true; 1121 return true;
1123#endif 1122#endif
1124 1123
1125 // ******************************************** 1124 // ********************************************
1126 // new code for WIN32 1125 // new code for WIN32
1127 QDir dirObj; 1126 QDir dirObj;
1128 1127
1129 1128
1130 // we want an absolute path 1129 // we want an absolute path
1131#ifndef _WIN32_ 1130#ifndef _WIN32_
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);
1325 1324
1326 for (QStringList::ConstIterator it = xdgdirList.begin(); 1325 for (QStringList::ConstIterator it = xdgdirList.begin();
1327 it != xdgdirList.end(); it++) 1326 it != xdgdirList.end(); it++)
1328 { 1327 {
1329 QString dir = KShell::tildeExpand(*it); 1328 QString dir = KShell::tildeExpand(*it);
1330 addXdgConfigPrefix(dir); 1329 addXdgConfigPrefix(dir);
1331 } 1330 }
1332 // end XDG_CONFIG_XXX 1331 // end XDG_CONFIG_XXX
1333 1332
1334 // begin XDG_DATA_XXX 1333 // begin XDG_DATA_XXX
1335 xdgdirs = readEnvPath("XDG_DATA_DIRS"); 1334 xdgdirs = readEnvPath("XDG_DATA_DIRS");
1336 if (!xdgdirs.isEmpty()) 1335 if (!xdgdirs.isEmpty())
1337 { 1336 {
1338 tokenize(xdgdirList, xdgdirs, ":"); 1337 tokenize(xdgdirList, xdgdirs, ":");
1339 } 1338 }
1340 else 1339 else
1341 { 1340 {
1342 xdgdirList.clear(); 1341 xdgdirList.clear();
1343 for (QStringList::ConstIterator it = kdedirList.begin(); 1342 for (QStringList::ConstIterator it = kdedirList.begin();
1344 it != kdedirList.end(); it++) 1343 it != kdedirList.end(); it++)
1345 { 1344 {
1346 QString dir = *it; 1345 QString dir = *it;
1347 if (dir.at(dir.length()-1) != '/') 1346 if (dir.at(dir.length()-1) != '/')
1348 dir += '/'; 1347 dir += '/';
1349 xdgdirList.append(dir+"share/"); 1348 xdgdirList.append(dir+"share/");
1350 } 1349 }
1351 1350
1352 xdgdirList.append("/usr/local/share/"); 1351 xdgdirList.append("/usr/local/share/");
1353 xdgdirList.append("/usr/share/"); 1352 xdgdirList.append("/usr/share/");
1354 } 1353 }
1355 1354
1356 localXdgDir = readEnvPath("XDG_DATA_HOME"); 1355 localXdgDir = readEnvPath("XDG_DATA_HOME");
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
@@ -899,257 +899,257 @@ bool KToolBar::enable(BarStatus stat)
899{ 899{
900 bool mystat = isVisible(); 900 bool mystat = isVisible();
901 901
902 if ( (stat == Toggle && mystat) || stat == Hide ) 902 if ( (stat == Toggle && mystat) || stat == Hide )
903 hide(); 903 hide();
904 else 904 else
905 show(); 905 show();
906 906
907 return isVisible() == mystat; 907 return isVisible() == mystat;
908} 908}
909 909
910 910
911void KToolBar::setMaxHeight ( int h ) 911void KToolBar::setMaxHeight ( int h )
912{ 912{
913 setMaximumHeight( h ); 913 setMaximumHeight( h );
914} 914}
915 915
916int KToolBar::maxHeight() 916int KToolBar::maxHeight()
917{ 917{
918 return maximumHeight(); 918 return maximumHeight();
919} 919}
920 920
921 921
922void KToolBar::setMaxWidth (int dw) 922void KToolBar::setMaxWidth (int dw)
923{ 923{
924 setMaximumWidth( dw ); 924 setMaximumWidth( dw );
925} 925}
926 926
927 927
928int KToolBar::maxWidth() 928int KToolBar::maxWidth()
929{ 929{
930 return maximumWidth(); 930 return maximumWidth();
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
1124 QString curname(elem.attribute( "name" )); 1124 QString curname(elem.attribute( "name" ));
1125 1125
1126 if ( curname == barname ) { 1126 if ( curname == barname ) {
1127 just_append = false; 1127 just_append = false;
1128 local.documentElement().replaceChild( current, elem ); 1128 local.documentElement().replaceChild( current, elem );
1129 break; 1129 break;
1130 } 1130 }
1131 } 1131 }
1132 1132
1133 if (just_append) 1133 if (just_append)
1134 local.documentElement().appendChild( current ); 1134 local.documentElement().appendChild( current );
1135 1135
1136 KXMLGUIFactory::saveConfigFile(local, d->m_xmlguiClient->localXMLFile(), d->m_xmlguiClient->instance() ); 1136 KXMLGUIFactory::saveConfigFile(local, d->m_xmlguiClient->localXMLFile(), d->m_xmlguiClient->instance() );
1137 1137
1138 return; 1138 return;
1139 } 1139 }
1140*/ 1140*/
1141 // if that didn't work, we save to the config file 1141 // if that didn't work, we save to the config file
1142 KConfig *config = KGlobal::config(); 1142 KConfig *config = KGlobal::config();
1143 saveSettings(config, QString::null); 1143 saveSettings(config, QString::null);
1144 config->sync(); 1144 config->sync();
1145} 1145}
1146 1146
1147QString KToolBar::settingsGroup() 1147QString KToolBar::settingsGroup()
1148{ 1148{
1149 QString configGroup; 1149 QString configGroup;
1150 if (!::qstrcmp(name(), "unnamed") || !::qstrcmp(name(), "mainToolBar")) 1150 if (!::qstrcmp(name(), "unnamed") || !::qstrcmp(name(), "mainToolBar"))
1151 configGroup = "Toolbar style"; 1151 configGroup = "Toolbar style";
1152 else 1152 else
1153 configGroup = QString(name()) + " Toolbar style"; 1153 configGroup = QString(name()) + " Toolbar style";
1154 if ( this->mainWindow() ) 1154 if ( this->mainWindow() )
1155 { 1155 {
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,158 +1,159 @@
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}
127 128
128QStringList Factory::typeNames() const 129QStringList Factory::typeNames() const
129{ 130{
130//US method QMap::keys() not available yet. SO collect the data manually 131//US method QMap::keys() not available yet. SO collect the data manually
131//US return mTypeMap.keys(); 132//US return mTypeMap.keys();
132 133
133 QStringList result; 134 QStringList result;
134 135
135 QMap<QString, PluginInfo*>::ConstIterator it; 136 QMap<QString, PluginInfo*>::ConstIterator it;
136 for( it = mTypeMap.begin(); it != mTypeMap.end(); ++it ) { 137 for( it = mTypeMap.begin(); it != mTypeMap.end(); ++it ) {
137 result << it.key().latin1(); 138 result << it.key().latin1();
138// qDebug("Factory::typeNames() : %s ", it.key().latin1()); 139// qDebug("Factory::typeNames() : %s ", it.key().latin1());
139 140
140 } 141 }
141 return result; 142 return result;
142} 143}
143 144
144ConfigWidget *Factory::configWidget( const QString& type, QWidget *parent ) 145ConfigWidget *Factory::configWidget( const QString& type, QWidget *parent )
145{ 146{
146 if ( type.isEmpty() || !mTypeMap.contains( type ) ) 147 if ( type.isEmpty() || !mTypeMap.contains( type ) )
147 return 0; 148 return 0;
148 149
149//US KService::Ptr ptr = mTypeMap[ type ]; 150//US KService::Ptr ptr = mTypeMap[ type ];
150//US KLibFactory *factory = KLibLoader::self()->factory( ptr->library().latin1() ); 151//US KLibFactory *factory = KLibLoader::self()->factory( ptr->library().latin1() );
151 PluginInfo* pi = mTypeMap[ type ]; 152 PluginInfo* pi = mTypeMap[ type ];
152 KLibFactory *factory = (KLibFactory *)KLibLoader::self()->factory( pi->library.latin1() ); 153 KLibFactory *factory = (KLibFactory *)KLibLoader::self()->factory( pi->library.latin1() );
153 if ( !factory ) { 154 if ( !factory ) {
154 qDebug("KRES::Factory::configWidget(): Factory creation failed for library %s", pi->library.latin1()); 155 qDebug("KRES::Factory::configWidget(): Factory creation failed for library %s", pi->library.latin1());
155 kdDebug() << "KRES::Factory::configWidget(): Factory creation failed" << endl; 156 kdDebug() << "KRES::Factory::configWidget(): Factory creation failed" << endl;
156 return 0; 157 return 0;
157 } 158 }
158 159
diff --git a/microkde/microkde.pro b/microkde/microkde.pro
index 1e9b022..05833a9 100644
--- a/microkde/microkde.pro
+++ b/microkde/microkde.pro
@@ -1,170 +1,168 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on 2 CONFIG += qt warn_on
3#INCLUDEPATH += $(QTDIR)/include . 3#INCLUDEPATH += $(QTDIR)/include .
4#DEPENDPATH += $(QTDIR)/include 4#DEPENDPATH += $(QTDIR)/include
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