summaryrefslogtreecommitdiff
authoreilers <eilers>2003-11-03 16:52:18 (UTC)
committer eilers <eilers>2003-11-03 16:52:18 (UTC)
commitd34dc773591a2d467c68875a68a671d6a809f861 (patch) (unidiff)
treeb57e5ae15c51e3d87ca95d57aedfd1ca3db57bfe
parentce84f2d8bdd65c438821f0457cdad6bbbfa73380 (diff)
downloadopie-d34dc773591a2d467c68875a68a671d6a809f861.zip
opie-d34dc773591a2d467c68875a68a671d6a809f861.tar.gz
opie-d34dc773591a2d467c68875a68a671d6a809f861.tar.bz2
Porting Opie to MacOS-X.
The base system and all platform independent applications and platforms should work. Please see $OPIEDIR/development/macosx for details
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Vars.make3
-rw-r--r--config.in4
-rw-r--r--core/applets/batteryapplet/batteryapplet.pro2
-rw-r--r--core/applets/cardmon/cardmon.pro2
-rw-r--r--core/applets/clipboardapplet/clipboardapplet.pro2
-rw-r--r--core/applets/clockapplet/clockapplet.pro2
-rw-r--r--core/applets/homeapplet/homeapplet.pro2
-rw-r--r--core/applets/irdaapplet/irdaapplet.pro2
-rw-r--r--core/applets/logoutapplet/logoutapplet.pro2
-rw-r--r--core/applets/restartapplet/restartapplet.pro2
-rw-r--r--core/applets/restartapplet2/restartapplet.pro2
-rw-r--r--core/applets/rotateapplet/rotateapplet.pro2
-rw-r--r--core/applets/screenshotapplet/screenshotapplet.pro2
-rw-r--r--core/applets/suspendapplet/suspendapplet.pro2
-rw-r--r--core/applets/vmemo/vmemo.pro2
-rw-r--r--core/applets/volumeapplet/volumeapplet.pro2
-rw-r--r--core/launcher/applauncher.cpp4
-rw-r--r--core/launcher/inputmethods.cpp4
-rw-r--r--core/launcher/irserver.cpp4
-rw-r--r--core/launcher/main.cpp2
-rw-r--r--core/launcher/packageslave.cpp304
-rw-r--r--core/launcher/qprocess_unix.cpp3
-rw-r--r--core/launcher/server.pro7
-rw-r--r--core/launcher/startmenu.cpp4
-rw-r--r--core/launcher/systray.cpp5
-rw-r--r--core/launcher/transferserver.cpp3
-rw-r--r--core/multimedia/opieplayer/wavplugin/wavplugin.pro2
-rw-r--r--core/pim/today/plugins/addressbook/addressbook.pro2
-rw-r--r--core/pim/today/plugins/datebook/datebook.pro2
-rw-r--r--core/pim/today/plugins/mail/mail.pro2
-rw-r--r--core/pim/today/plugins/todolist/todolist.pro2
-rw-r--r--core/pim/today/today.cpp7
-rw-r--r--core/qws/transferserver.cpp31
-rw-r--r--core/settings/launcher/menusettings.cpp4
-rw-r--r--core/settings/launcher/taskbarsettings.cpp17
-rw-r--r--development/keyview/keyview.pro4
-rw-r--r--development/macosx/README_MACOSX91
-rw-r--r--development/macosx/config_macosx290
-rw-r--r--include.pro12
-rw-r--r--inputmethods/dasher/dasher.pro2
-rw-r--r--inputmethods/dvorak/dvorak.pro2
-rw-r--r--inputmethods/handwriting/handwriting.pro2
-rw-r--r--inputmethods/jumpx/jumpx.pro2
-rw-r--r--inputmethods/keyboard/keyboard.pro2
-rw-r--r--inputmethods/kjumpx/kjumpx.pro2
-rw-r--r--inputmethods/multikey/multikey.pro2
-rw-r--r--inputmethods/pickboard/pickboard.pro2
-rw-r--r--inputmethods/unikeyboard/unikeyboard.pro2
-rw-r--r--libopie/libopie.pro4
-rw-r--r--libopie/odevice.cpp2
-rw-r--r--library/filemanager.cpp67
-rw-r--r--library/fontdatabase.cpp4
-rw-r--r--library/global.cpp4
-rw-r--r--library/library.pro2
-rw-r--r--library/network.cpp4
-rw-r--r--library/qlibrary_unix.cpp113
-rw-r--r--library/qpeapplication.cpp29
-rw-r--r--library/qpedecoration_qws.cpp8
-rw-r--r--library/sound.cpp3
-rw-r--r--library/storage.cpp42
-rw-r--r--mkspecs/qws/macx-generic-g++/qmake.conf3
-rw-r--r--noncore/applets/networkapplet/networkapplet.pro2
-rw-r--r--noncore/applets/notesapplet/notesapplet.pro2
-rw-r--r--noncore/applets/wirelessapplet/wirelessapplet.pro2
-rw-r--r--noncore/decorations/flat/flat.pro2
-rw-r--r--noncore/decorations/liquid/liquid.pro2
-rw-r--r--noncore/decorations/polished/polished.pro2
-rw-r--r--noncore/net/opietooth/applet/applet.pro2
-rw-r--r--noncore/settings/networksettings/ppp/ppp.pro4
-rw-r--r--noncore/settings/networksettings/wlan/wlan.pro4
-rw-r--r--noncore/styles/flat/flat.pro2
-rw-r--r--noncore/styles/fresh/fresh.pro2
-rw-r--r--noncore/styles/liquid/liquid.pro2
-rw-r--r--noncore/styles/metal/metal.pro2
-rw-r--r--noncore/styles/theme/theme.pro2
-rw-r--r--noncore/todayplugins/fortune/fortune.pro2
-rw-r--r--noncore/todayplugins/stockticker/stocktickerlib/stocktickerlib.pro2
-rw-r--r--noncore/todayplugins/weather/weather.pro2
-rw-r--r--noncore/unsupported/mail2/bend/bend.pro2
-rw-r--r--plugins/Makefile6
-rw-r--r--qmake/include/qglobal.h9
-rw-r--r--qt/qt-2.3.7.patch/qte237-all-macosx.patch1161
-rw-r--r--rsync/config_linux.h2
-rw-r--r--rsync/trace.h40
-rw-r--r--scripts/kconfig/lkc_proto.h4
85 files changed, 2262 insertions, 144 deletions
diff --git a/Vars.make b/Vars.make
index ae54661..062094c 100644
--- a/Vars.make
+++ b/Vars.make
@@ -1,118 +1,121 @@
1ifndef QTDIR 1ifndef QTDIR
2$(error QTDIR not set) 2$(error QTDIR not set)
3endif 3endif
4 4
5prefix=/opt/QtPalmtop 5prefix=/opt/QtPalmtop
6 6
7ifeq ($(OPIEDIR),) 7ifeq ($(OPIEDIR),)
8 export OPIEDIR:=$(TOPDIR) 8 export OPIEDIR:=$(TOPDIR)
9endif 9endif
10ifeq ($(IPK_DIR),) 10ifeq ($(IPK_DIR),)
11 export IPK_DIR:=$(OPIEDIR) 11 export IPK_DIR:=$(OPIEDIR)
12endif 12endif
13 13
14ifneq ($(wildcard $(TOPDIR)/.config),) 14ifneq ($(wildcard $(TOPDIR)/.config),)
15 include $(TOPDIR)/.config 15 include $(TOPDIR)/.config
16endif 16endif
17 17
18ifdef CONFIG_TARGET_X86 18ifdef CONFIG_TARGET_X86
19 PLATFORM=x86-linux 19 PLATFORM=x86-linux
20endif 20endif
21ifdef CONFIG_TARGET_SHARP 21ifdef CONFIG_TARGET_SHARP
22 PLATFORM=sharp-linux 22 PLATFORM=sharp-linux
23endif 23endif
24ifdef CONFIG_TARGET_IPAQ 24ifdef CONFIG_TARGET_IPAQ
25 PLATFORM=ipaq-linux 25 PLATFORM=ipaq-linux
26endif 26endif
27ifdef CONFIG_TARGET_RAMSES 27ifdef CONFIG_TARGET_RAMSES
28 PLATFORM=ramses-linux 28 PLATFORM=ramses-linux
29endif 29endif
30ifdef CONFIG_TARGET_SIMPAD 30ifdef CONFIG_TARGET_SIMPAD
31 PLATFORM=simpad-linux 31 PLATFORM=simpad-linux
32endif 32endif
33 33
34ifdef CONFIG_TARGET_YOPY 34ifdef CONFIG_TARGET_YOPY
35 PLATFORM=yopy-linux 35 PLATFORM=yopy-linux
36endif 36endif
37ifdef CONFIG_TARGET_MACOSX
38 PLATFORM=macx-darwin
39endif
37 40
38export QMAKE:=$(OPIEDIR)/qmake/qmake 41export QMAKE:=$(OPIEDIR)/qmake/qmake
39export QMAKESPECSDIR=$(OPIEDIR)/mkspecs 42export QMAKESPECSDIR=$(OPIEDIR)/mkspecs
40 43
41ifeq ($(QPE_VERSION),) 44ifeq ($(QPE_VERSION),)
42 VERSION_MAJ:=$(shell echo $$(sed -n -e 's/.*QPE_VERSION "\([0-9]*\)\..*\..*".*/\1/p' <$(OPIEDIR)/library/version.h)) 45 VERSION_MAJ:=$(shell echo $$(sed -n -e 's/.*QPE_VERSION "\([0-9]*\)\..*\..*".*/\1/p' <$(OPIEDIR)/library/version.h))
43 VERSION_MIN:=$(shell echo $$(sed -n -e 's/.*QPE_VERSION ".*\.\([0-9]*\)\..*".*/\1/p' <$(OPIEDIR)/library/version.h)) 46 VERSION_MIN:=$(shell echo $$(sed -n -e 's/.*QPE_VERSION ".*\.\([0-9]*\)\..*".*/\1/p' <$(OPIEDIR)/library/version.h))
44 VERSION_PAT:=$(shell echo $$(sed -n -e 's/.*QPE_VERSION ".*\..*\.\([0-9]*\).*/\1/p' <$(OPIEDIR)/library/version.h)) 47 VERSION_PAT:=$(shell echo $$(sed -n -e 's/.*QPE_VERSION ".*\..*\.\([0-9]*\).*/\1/p' <$(OPIEDIR)/library/version.h))
45 QPE_VERSION:=$(VERSION_MAJ).$(VERSION_MIN).$(VERSION_PAT) 48 QPE_VERSION:=$(VERSION_MAJ).$(VERSION_MIN).$(VERSION_PAT)
46 49
47 ifeq ($(QPE_VERSION),..) 50 ifeq ($(QPE_VERSION),..)
48 QPE_VERSION=0.9.3 51 QPE_VERSION=0.9.3
49 endif 52 endif
50endif 53endif
51export QPE_VERSION 54export QPE_VERSION
52 55
53SUB_VERSION=$(shell echo $$(sed -n -e 's,.*SUB_VERSION \"\(.*\)\".*,\1,p' <$(OPIEDIR)/library/version.h)) 56SUB_VERSION=$(shell echo $$(sed -n -e 's,.*SUB_VERSION \"\(.*\)\".*,\1,p' <$(OPIEDIR)/library/version.h))
54ifeq ($(VERSION_CVS),) 57ifeq ($(VERSION_CVS),)
55 VERSION_CVS:=$(shell date +%Y%m%d) 58 VERSION_CVS:=$(shell date +%Y%m%d)
56endif 59endif
57ifneq ($(filter %snapshot",$(shell cat $(OPIEDIR)/library/version.h|grep QPE_VERSION)),) 60ifneq ($(filter %snapshot",$(shell cat $(OPIEDIR)/library/version.h|grep QPE_VERSION)),)
58 SUB_VERSION:=$(VERSION_CVS) 61 SUB_VERSION:=$(VERSION_CVS)
59endif 62endif
60export SUB_VERSION 63export SUB_VERSION
61 64
62ifneq ($(strip $(SUB_VERSION)),) 65ifneq ($(strip $(SUB_VERSION)),)
63EXTRAVERSION=-$(SUB_VERSION) 66EXTRAVERSION=-$(SUB_VERSION)
64endif 67endif
65 68
66ifeq ($(QTE_REVISION),) 69ifeq ($(QTE_REVISION),)
67 QTE_REVISION=5 70 QTE_REVISION=5
68endif 71endif
69export QTE_REVISION 72export QTE_REVISION
70 73
71export DEB_VERSION=2.0 74export DEB_VERSION=2.0
72 75
73ifeq ($(QTE_BASEVERSION),) 76ifeq ($(QTE_BASEVERSION),)
74 ifneq ($(shell ls $(QTDIR)/include/qglobal.h 2>/dev/null),) 77 ifneq ($(shell ls $(QTDIR)/include/qglobal.h 2>/dev/null),)
75 QTE_BASEVERSION:=$(shell cat $(QTDIR)/include/qglobal.h|grep '^\#define QT_VERSION'|grep -v STR|sed -e 's/\#define QT_VERSION\t*//; s/.*\([0-9]\)\([0-9]\)\([0-9]\).*/\1.\2.\3/;') 78 QTE_BASEVERSION:=$(shell cat $(QTDIR)/include/qglobal.h|grep '^\#define QT_VERSION'|grep -v STR|sed -e 's/\#define QT_VERSION\t*//; s/.*\([0-9]\)\([0-9]\)\([0-9]\).*/\1.\2.\3/;')
76 else 79 else
77 QTE_BASEVERSION=2.3.5 80 QTE_BASEVERSION=2.3.5
78 endif 81 endif
79endif 82endif
80export QTE_BASEVERSION 83export QTE_BASEVERSION
81 84
82ifeq ($(QTE_VERSION),) 85ifeq ($(QTE_VERSION),)
83 ifneq ($(shell ls $(QTDIR)/include/qglobal.h 2>/dev/null),) 86 ifneq ($(shell ls $(QTDIR)/include/qglobal.h 2>/dev/null),)
84 QTE_VERSION:=$(shell cat $(QTDIR)/include/qglobal.h|grep '^\#define QT_VERSION_STR'|sed -e 's/\#define QT_VERSION_STR\t*//;' -e 's/.*"\([^"]*\)".*/\1/;') 87 QTE_VERSION:=$(shell cat $(QTDIR)/include/qglobal.h|grep '^\#define QT_VERSION_STR'|sed -e 's/\#define QT_VERSION_STR\t*//;' -e 's/.*"\([^"]*\)".*/\1/;')
85 else 88 else
86 QTE_VERSION=2.3.5 89 QTE_VERSION=2.3.5
87 endif 90 endif
88endif 91endif
89export QTE_VERSION 92export QTE_VERSION
90 93
91export PATH:=$(OPIEDIR)/scripts:$(PATH) 94export PATH:=$(OPIEDIR)/scripts:$(PATH)
92export QMAKESPEC=$(QMAKESPECSDIR)/$(patsubst "%",%,$(CONFIG_SPECFILE)) 95export QMAKESPEC=$(QMAKESPECSDIR)/$(patsubst "%",%,$(CONFIG_SPECFILE))
93 96
94ifdef CONFIG_OPTIMIZATIONS 97ifdef CONFIG_OPTIMIZATIONS
95export CFLAGS_RELEASE=$(patsubst "%,%,$(CONFIG_OPTIMIZATIONS)) 98export CFLAGS_RELEASE=$(patsubst "%,%,$(CONFIG_OPTIMIZATIONS))
96export CFLAGS_RELEASE:=$(patsubst %",%,$(CFLAGS_RELEASE)) 99export CFLAGS_RELEASE:=$(patsubst %",%,$(CFLAGS_RELEASE))
97endif 100endif
98 101
99ifeq ($(STRIP),) 102ifeq ($(STRIP),)
100 ifneq ($(CONFIG_TARGET_X86),) 103 ifneq ($(CONFIG_TARGET_X86),)
101 STRIP=strip 104 STRIP=strip
102 endif 105 endif
103 ifneq ($(CONFIG_TARGET_IPAQ),) 106 ifneq ($(CONFIG_TARGET_IPAQ),)
104 STRIP=arm-linux-strip 107 STRIP=arm-linux-strip
105 endif 108 endif
106 ifneq ($(CONFIG_TARGET_SHARP),) 109 ifneq ($(CONFIG_TARGET_SHARP),)
107 STRIP=arm-linux-strip 110 STRIP=arm-linux-strip
108 endif 111 endif
109 ifneq ($(CONFIG_TARGET_RAMSES),) 112 ifneq ($(CONFIG_TARGET_RAMSES),)
110 STRIP=arm-linux-strip 113 STRIP=arm-linux-strip
111 endif 114 endif
112 ifneq ($(CONFIG_TARGET_SIMPAD),) 115 ifneq ($(CONFIG_TARGET_SIMPAD),)
113 STRIP=arm-linux-strip 116 STRIP=arm-linux-strip
114 endif 117 endif
115 ifneq ($(CONFIG_TARGET_YOPY),) 118 ifneq ($(CONFIG_TARGET_YOPY),)
116 STRIP=arm-linux-strip 119 STRIP=arm-linux-strip
117 endif 120 endif
118endif 121endif
diff --git a/config.in b/config.in
index 4db0204..20fcf56 100644
--- a/config.in
+++ b/config.in
@@ -1,190 +1,194 @@
1mainmenu "Opie Configuration" 1mainmenu "Opie Configuration"
2 2
3menu "Build Parameters" 3menu "Build Parameters"
4 4
5choice 5choice
6 prompt "Target Machine" 6 prompt "Target Machine"
7 default TARGET_X86 7 default TARGET_X86
8 help 8 help
9 Please select the architecture of the machine you will be 9 Please select the architecture of the machine you will be
10 building the OpenZaurus buildroot for. 10 building the OpenZaurus buildroot for.
11 11
12 config TARGET_X86 12 config TARGET_X86
13 boolean "Intel X86" 13 boolean "Intel X86"
14 14
15 config TARGET_MACOSX
16 boolean "Mac OS X (DARWIN)"
17
15 config TARGET_SHARP 18 config TARGET_SHARP
16 boolean "Sharp Zaurus" 19 boolean "Sharp Zaurus"
17 20
18 config TARGET_IPAQ 21 config TARGET_IPAQ
19 boolean "iPAQ" 22 boolean "iPAQ"
20 23
21 config TARGET_RAMSES 24 config TARGET_RAMSES
22 boolean "Ramses" 25 boolean "Ramses"
23 26
24 config TARGET_SIMPAD 27 config TARGET_SIMPAD
25 boolean "SIMpad" 28 boolean "SIMpad"
26 29
27 config TARGET_YOPY 30 config TARGET_YOPY
28 boolean "Yopy 3500/3700" 31 boolean "Yopy 3500/3700"
29 32
30endchoice 33endchoice
31 34
32config OPTIMIZE 35config OPTIMIZE
33 boolean "Use optimizations" 36 boolean "Use optimizations"
34 default "y" if ! TARGET_X86 37 default "y" if ! TARGET_X86
35 38
36config DEBUG 39config DEBUG
37 boolean "Enable debug builds" 40 boolean "Enable debug builds"
38 default n 41 default n
39config RELEASE 42config RELEASE
40 bool 43 bool
41 default y 44 default y
42 depends !DEBUG 45 depends !DEBUG
43 46
44config QUICK_LAUNCH 47config QUICK_LAUNCH
45 boolean "Enable Quick Launch" 48 boolean "Enable Quick Launch"
46 default n 49 default n
47 50
48config OPIE_NO_OVERRIDE_QT 51config OPIE_NO_OVERRIDE_QT
49 boolean "Build Opie against an unpatched version of Qt" 52 boolean "Build Opie against an unpatched version of Qt"
50 default n 53 default n
51 54
52config SPECFILE 55config SPECFILE
53 string 56 string
54 default "qws/linux-generic-g++" if TARGET_X86 && (! X11) 57 default "qws/linux-generic-g++" if TARGET_X86 && (! X11)
55 default "linux-g++" if TARGET_X86 && X11 58 default "linux-g++" if TARGET_X86 && X11
56 default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11) 59 default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11)
57 default "linux-g++" if TARGET_SHARP && X11 60 default "linux-g++" if TARGET_SHARP && X11
58 default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11) 61 default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11)
59 default "linux-g++" if TARGET_IPAQ && X11 62 default "linux-g++" if TARGET_IPAQ && X11
60 default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11) 63 default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11)
61 default "linux-g++" if TARGET_RAMSES && X11 64 default "linux-g++" if TARGET_RAMSES && X11
62 default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11) 65 default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11)
63 default "linux-g++" if TARGET_SIMPAD && X11 66 default "linux-g++" if TARGET_SIMPAD && X11
64 default "qws/linux-yopy-g++" if TARGET_YOPY && (! X11) 67 default "qws/linux-yopy-g++" if TARGET_YOPY && (! X11)
68 default "qws/macx-generic-g++" if TARGET_MACOSX && (! X11)
65 69
66config CUSTOMFILE 70config CUSTOMFILE
67 string 71 string
68 default "custom-ipaq.h" if TARGET_IPAQ 72 default "custom-ipaq.h" if TARGET_IPAQ
69 default "custom-sharp.h" if TARGET_SHARP 73 default "custom-sharp.h" if TARGET_SHARP
70 default "custom-ramses.h" if TARGET_RAMSES 74 default "custom-ramses.h" if TARGET_RAMSES
71 default "custom-ipaq.h" if TARGET_SIMPAD 75 default "custom-ipaq.h" if TARGET_SIMPAD
72 default "custom-yopy.h" if TARGET_YOPY 76 default "custom-yopy.h" if TARGET_YOPY
73 77
74config OPTIMIZATIONS 78config OPTIMIZATIONS
75 string "Optimization flags" 79 string "Optimization flags"
76 depends OPTIMIZE 80 depends OPTIMIZE
77 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ 81 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ
78 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_YOPY 82 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_YOPY
79 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP 83 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP
80 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES 84 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES
81 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD 85 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD
82 86
83config EXPERIMENTAL 87config EXPERIMENTAL
84 bool "Prompt for development and/or incomplete items" 88 bool "Prompt for development and/or incomplete items"
85 default y 89 default y
86 90
87endmenu 91endmenu
88 92
89menu "Base" 93menu "Base"
90 choice 94 choice
91 prompt "Qpe Library Selection" 95 prompt "Qpe Library Selection"
92 default LIBQPE 96 default LIBQPE
93 source library/config.in 97 source library/config.in
94 source x11/config.in 98 source x11/config.in
95 endchoice 99 endchoice
96 source libopie/config.in 100 source libopie/config.in
97 source core/opie-login/config.in 101 source core/opie-login/config.in
98 source core/opiealarm/config.in 102 source core/opiealarm/config.in
99 source core/launcher/config.in 103 source core/launcher/config.in
100 source core/qws/config.in 104 source core/qws/config.in
101endmenu 105endmenu
102 106
103comment "" 107comment ""
104 108
105menu "Applets" 109menu "Applets"
106 source core/applets/config.in 110 source core/applets/config.in
107 source noncore/applets/config.in 111 source noncore/applets/config.in
108endmenu 112endmenu
109 113
110menu "Apps" 114menu "Apps"
111 source core/apps/config.in 115 source core/apps/config.in
112 source noncore/apps/config.in 116 source noncore/apps/config.in
113endmenu 117endmenu
114 118
115menu "Communications and Networking" 119menu "Communications and Networking"
116 source noncore/comm/config.in 120 source noncore/comm/config.in
117 source noncore/mail/config.in 121 source noncore/mail/config.in
118 source noncore/net/config.in 122 source noncore/net/config.in
119endmenu 123endmenu
120 124
121menu "Games" 125menu "Games"
122 source noncore/games/config.in 126 source noncore/games/config.in
123endmenu 127endmenu
124 128
125menu "Graphics and Multimedia" 129menu "Graphics and Multimedia"
126 source freetype/config.in 130 source freetype/config.in
127 source noncore/graphics/config.in 131 source noncore/graphics/config.in
128 source core/multimedia/config.in 132 source core/multimedia/config.in
129 source noncore/multimedia/config.in 133 source noncore/multimedia/config.in
130endmenu 134endmenu
131 135
132menu "Input methods" 136menu "Input methods"
133 source inputmethods/config.in 137 source inputmethods/config.in
134endmenu 138endmenu
135 139
136menu "Pim" 140menu "Pim"
137 source core/pim/config.in 141 source core/pim/config.in
138 menu "Today Plugins" 142 menu "Today Plugins"
139 source noncore/todayplugins/config.in 143 source noncore/todayplugins/config.in
140 source core/pim/today/plugins/config.in 144 source core/pim/today/plugins/config.in
141 endmenu 145 endmenu
142endmenu 146endmenu
143 147
144menu "Settings" 148menu "Settings"
145 source core/settings/config.in 149 source core/settings/config.in
146 source noncore/settings/config.in 150 source noncore/settings/config.in
147endmenu 151endmenu
148 152
149menu "Theming" 153menu "Theming"
150 source noncore/decorations/config.in 154 source noncore/decorations/config.in
151 source noncore/styles/config.in 155 source noncore/styles/config.in
152endmenu 156endmenu
153 157
154menu "Tools" 158menu "Tools"
155 source noncore/tools/config.in 159 source noncore/tools/config.in
156endmenu 160endmenu
157 161
158menu "Development" 162menu "Development"
159 source development/keyview/config.in 163 source development/keyview/config.in
160 #source development/debugviewer/config.in 164 #source development/debugviewer/config.in
161endmenu 165endmenu
162 166
163menu "Examples" 167menu "Examples"
164 config EXAMPLES 168 config EXAMPLES
165 boolean "Compile Example Application" 169 boolean "Compile Example Application"
166 source examples/config.in 170 source examples/config.in
167endmenu 171endmenu
168 172
169comment "" 173comment ""
170 depends on EXPERIMENTAL 174 depends on EXPERIMENTAL
171menu "Experimental" 175menu "Experimental"
172 depends on EXPERIMENTAL 176 depends on EXPERIMENTAL
173 source libopie2/config.in 177 source libopie2/config.in
174 178
175 config SQL_PIM_BACKEND 179 config SQL_PIM_BACKEND
176 bool "Add SQL-Backend support (experimental)" 180 bool "Add SQL-Backend support (experimental)"
177 default n 181 default n
178 help 182 help
179 This adds the SQL-Support, using SQLite. Which database is used 183 This adds the SQL-Support, using SQLite. Which database is used
180 by the backends is defined by the file "pimaccess.conf" in the 184 by the backends is defined by the file "pimaccess.conf" in the
181 directory "Settings". 185 directory "Settings".
182 There currently do exist to groups "[contact]" and "[todo]". You can 186 There currently do exist to groups "[contact]" and "[todo]". You can
183 select the used backend by the variable "usebackend=<type>", where 187 select the used backend by the variable "usebackend=<type>", where
184 <type> is "sql" or "xml". "xml" is the default ! 188 <type> is "sql" or "xml". "xml" is the default !
185 Important: The SQLite-library "libsqlite.so" must be installed ! 189 Important: The SQLite-library "libsqlite.so" must be installed !
186 depends ( LIBOPIE2DB ) 190 depends ( LIBOPIE2DB )
187 191
188 comment "SQL-Support needs libopie2db!" 192 comment "SQL-Support needs libopie2db!"
189 depends !( LIBOPIE2DB ) 193 depends !( LIBOPIE2DB )
190endmenu 194endmenu
diff --git a/core/applets/batteryapplet/batteryapplet.pro b/core/applets/batteryapplet/batteryapplet.pro
index c68ceb7..1bc208b 100644
--- a/core/applets/batteryapplet/batteryapplet.pro
+++ b/core/applets/batteryapplet/batteryapplet.pro
@@ -1,33 +1,33 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= battery.h batterystatus.h batteryappletimpl.h 3 HEADERS= battery.h batterystatus.h batteryappletimpl.h
4 SOURCES= battery.cpp batterystatus.cpp batteryappletimpl.cpp 4 SOURCES= battery.cpp batterystatus.cpp batteryappletimpl.cpp
5 TARGET = batteryapplet 5 TARGET = batteryapplet
6 DESTDIR = $(OPIEDIR)/plugins/applets 6 DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += ../$(OPIEDIR)/include .. 8DEPENDPATH += ../$(OPIEDIR)/include ..
9LIBS += -lqpe -lopie 9LIBS += -lqpe -lopie
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libbatteryapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/libbatteryapplet.ts \
13 ../../../i18n/nl/libbatteryapplet.ts \ 13 ../../../i18n/nl/libbatteryapplet.ts \
14 ../../../i18n/da/libbatteryapplet.ts \ 14 ../../../i18n/da/libbatteryapplet.ts \
15 ../../../i18n/xx/libbatteryapplet.ts \ 15 ../../../i18n/xx/libbatteryapplet.ts \
16 ../../../i18n/en/libbatteryapplet.ts \ 16 ../../../i18n/en/libbatteryapplet.ts \
17 ../../../i18n/es/libbatteryapplet.ts \ 17 ../../../i18n/es/libbatteryapplet.ts \
18 ../../../i18n/fr/libbatteryapplet.ts \ 18 ../../../i18n/fr/libbatteryapplet.ts \
19 ../../../i18n/hu/libbatteryapplet.ts \ 19 ../../../i18n/hu/libbatteryapplet.ts \
20 ../../../i18n/ja/libbatteryapplet.ts \ 20 ../../../i18n/ja/libbatteryapplet.ts \
21 ../../../i18n/ko/libbatteryapplet.ts \ 21 ../../../i18n/ko/libbatteryapplet.ts \
22 ../../../i18n/no/libbatteryapplet.ts \ 22 ../../../i18n/no/libbatteryapplet.ts \
23 ../../../i18n/pl/libbatteryapplet.ts \ 23 ../../../i18n/pl/libbatteryapplet.ts \
24 ../../../i18n/pt/libbatteryapplet.ts \ 24 ../../../i18n/pt/libbatteryapplet.ts \
25 ../../../i18n/pt_BR/libbatteryapplet.ts \ 25 ../../../i18n/pt_BR/libbatteryapplet.ts \
26 ../../../i18n/sl/libbatteryapplet.ts \ 26 ../../../i18n/sl/libbatteryapplet.ts \
27 ../../../i18n/zh_CN/libbatteryapplet.ts \ 27 ../../../i18n/zh_CN/libbatteryapplet.ts \
28 ../../../i18n/zh_TW/libbatteryapplet.ts 28 ../../../i18n/zh_TW/libbatteryapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/applets/cardmon/cardmon.pro b/core/applets/cardmon/cardmon.pro
index 3907aa4..75facde 100644
--- a/core/applets/cardmon/cardmon.pro
+++ b/core/applets/cardmon/cardmon.pro
@@ -1,33 +1,33 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS =cardmon.h cardmonimpl.h 3 HEADERS =cardmon.h cardmonimpl.h
4 SOURCES =cardmon.cpp cardmonimpl.cpp 4 SOURCES =cardmon.cpp cardmonimpl.cpp
5 TARGET = cardmonapplet 5 TARGET = cardmonapplet
6 DESTDIR = $(OPIEDIR)/plugins/applets 6 DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include ../launcher 8DEPENDPATH += $(OPIEDIR)/include ../launcher
9LIBS += -lqpe -lopie 9LIBS += -lqpe -lopie
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libcardmonapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/libcardmonapplet.ts \
13 ../../../i18n/nl/libcardmonapplet.ts \ 13 ../../../i18n/nl/libcardmonapplet.ts \
14 ../../../i18n/da/libcardmonapplet.ts \ 14 ../../../i18n/da/libcardmonapplet.ts \
15 ../../../i18n/xx/libcardmonapplet.ts \ 15 ../../../i18n/xx/libcardmonapplet.ts \
16 ../../../i18n/en/libcardmonapplet.ts \ 16 ../../../i18n/en/libcardmonapplet.ts \
17 ../../../i18n/es/libcardmonapplet.ts \ 17 ../../../i18n/es/libcardmonapplet.ts \
18 ../../../i18n/fr/libcardmonapplet.ts \ 18 ../../../i18n/fr/libcardmonapplet.ts \
19 ../../../i18n/hu/libcardmonapplet.ts \ 19 ../../../i18n/hu/libcardmonapplet.ts \
20 ../../../i18n/ja/libcardmonapplet.ts \ 20 ../../../i18n/ja/libcardmonapplet.ts \
21 ../../../i18n/ko/libcardmonapplet.ts \ 21 ../../../i18n/ko/libcardmonapplet.ts \
22 ../../../i18n/no/libcardmonapplet.ts \ 22 ../../../i18n/no/libcardmonapplet.ts \
23 ../../../i18n/pl/libcardmonapplet.ts \ 23 ../../../i18n/pl/libcardmonapplet.ts \
24 ../../../i18n/pt/libcardmonapplet.ts \ 24 ../../../i18n/pt/libcardmonapplet.ts \
25 ../../../i18n/pt_BR/libcardmonapplet.ts \ 25 ../../../i18n/pt_BR/libcardmonapplet.ts \
26 ../../../i18n/sl/libcardmonapplet.ts \ 26 ../../../i18n/sl/libcardmonapplet.ts \
27 ../../../i18n/zh_CN/libcardmonapplet.ts \ 27 ../../../i18n/zh_CN/libcardmonapplet.ts \
28 ../../../i18n/zh_TW/libcardmonapplet.ts 28 ../../../i18n/zh_TW/libcardmonapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/applets/clipboardapplet/clipboardapplet.pro b/core/applets/clipboardapplet/clipboardapplet.pro
index 1e9cc4f..358d658 100644
--- a/core/applets/clipboardapplet/clipboardapplet.pro
+++ b/core/applets/clipboardapplet/clipboardapplet.pro
@@ -1,33 +1,33 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= clipboard.h clipboardappletimpl.h 3 HEADERS= clipboard.h clipboardappletimpl.h
4 SOURCES= clipboard.cpp clipboardappletimpl.cpp 4 SOURCES= clipboard.cpp clipboardappletimpl.cpp
5 TARGET = clipboardapplet 5 TARGET = clipboardapplet
6 DESTDIR = $(OPIEDIR)/plugins/applets 6 DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += ../$(OPIEDIR)/include 8DEPENDPATH += ../$(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libclipboardapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/libclipboardapplet.ts \
13 ../../../i18n/nl/libclipboardapplet.ts \ 13 ../../../i18n/nl/libclipboardapplet.ts \
14 ../../../i18n/da/libclipboardapplet.ts \ 14 ../../../i18n/da/libclipboardapplet.ts \
15 ../../../i18n/xx/libclipboardapplet.ts \ 15 ../../../i18n/xx/libclipboardapplet.ts \
16 ../../../i18n/en/libclipboardapplet.ts \ 16 ../../../i18n/en/libclipboardapplet.ts \
17 ../../../i18n/es/libclipboardapplet.ts \ 17 ../../../i18n/es/libclipboardapplet.ts \
18 ../../../i18n/fr/libclipboardapplet.ts \ 18 ../../../i18n/fr/libclipboardapplet.ts \
19 ../../../i18n/hu/libclipboardapplet.ts \ 19 ../../../i18n/hu/libclipboardapplet.ts \
20 ../../../i18n/ja/libclipboardapplet.ts \ 20 ../../../i18n/ja/libclipboardapplet.ts \
21 ../../../i18n/ko/libclipboardapplet.ts \ 21 ../../../i18n/ko/libclipboardapplet.ts \
22 ../../../i18n/no/libclipboardapplet.ts \ 22 ../../../i18n/no/libclipboardapplet.ts \
23 ../../../i18n/pl/libclipboardapplet.ts \ 23 ../../../i18n/pl/libclipboardapplet.ts \
24 ../../../i18n/pt/libclipboardapplet.ts \ 24 ../../../i18n/pt/libclipboardapplet.ts \
25 ../../../i18n/pt_BR/libclipboardapplet.ts \ 25 ../../../i18n/pt_BR/libclipboardapplet.ts \
26 ../../../i18n/sl/libclipboardapplet.ts \ 26 ../../../i18n/sl/libclipboardapplet.ts \
27 ../../../i18n/zh_CN/libclipboardapplet.ts \ 27 ../../../i18n/zh_CN/libclipboardapplet.ts \
28 ../../../i18n/zh_TW/libclipboardapplet.ts 28 ../../../i18n/zh_TW/libclipboardapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/applets/clockapplet/clockapplet.pro b/core/applets/clockapplet/clockapplet.pro
index 22c7b55..88092f5 100644
--- a/core/applets/clockapplet/clockapplet.pro
+++ b/core/applets/clockapplet/clockapplet.pro
@@ -1,33 +1,33 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= clock.h clockappletimpl.h 3 HEADERS= clock.h clockappletimpl.h
4 SOURCES= clock.cpp clockappletimpl.cpp 4 SOURCES= clock.cpp clockappletimpl.cpp
5 TARGET = clockapplet 5 TARGET = clockapplet
6 DESTDIR = $(OPIEDIR)/plugins/applets 6 DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += ../$(OPIEDIR)/include .. 8DEPENDPATH += ../$(OPIEDIR)/include ..
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libclockapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/libclockapplet.ts \
13 ../../../i18n/nl/libclockapplet.ts \ 13 ../../../i18n/nl/libclockapplet.ts \
14 ../../../i18n/da/libclockapplet.ts \ 14 ../../../i18n/da/libclockapplet.ts \
15 ../../../i18n/xx/libclockapplet.ts \ 15 ../../../i18n/xx/libclockapplet.ts \
16 ../../../i18n/en/libclockapplet.ts \ 16 ../../../i18n/en/libclockapplet.ts \
17 ../../../i18n/es/libclockapplet.ts \ 17 ../../../i18n/es/libclockapplet.ts \
18 ../../../i18n/fr/libclockapplet.ts \ 18 ../../../i18n/fr/libclockapplet.ts \
19 ../../../i18n/hu/libclockapplet.ts \ 19 ../../../i18n/hu/libclockapplet.ts \
20 ../../../i18n/ja/libclockapplet.ts \ 20 ../../../i18n/ja/libclockapplet.ts \
21 ../../../i18n/ko/libclockapplet.ts \ 21 ../../../i18n/ko/libclockapplet.ts \
22 ../../../i18n/no/libclockapplet.ts \ 22 ../../../i18n/no/libclockapplet.ts \
23 ../../../i18n/pl/libclockapplet.ts \ 23 ../../../i18n/pl/libclockapplet.ts \
24 ../../../i18n/pt/libclockapplet.ts \ 24 ../../../i18n/pt/libclockapplet.ts \
25 ../../../i18n/pt_BR/libclockapplet.ts \ 25 ../../../i18n/pt_BR/libclockapplet.ts \
26 ../../../i18n/sl/libclockapplet.ts \ 26 ../../../i18n/sl/libclockapplet.ts \
27 ../../../i18n/zh_CN/libclockapplet.ts \ 27 ../../../i18n/zh_CN/libclockapplet.ts \
28 ../../../i18n/zh_TW/libclockapplet.ts 28 ../../../i18n/zh_TW/libclockapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/applets/homeapplet/homeapplet.pro b/core/applets/homeapplet/homeapplet.pro
index ac7956b..854050f 100644
--- a/core/applets/homeapplet/homeapplet.pro
+++ b/core/applets/homeapplet/homeapplet.pro
@@ -1,33 +1,33 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = home.h 3HEADERS = home.h
4SOURCES = home.cpp 4SOURCES = home.cpp
5TARGET = homeapplet 5TARGET = homeapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libhomeapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/libhomeapplet.ts \
13 ../../../i18n/nl/libhomeapplet.ts \ 13 ../../../i18n/nl/libhomeapplet.ts \
14 ../../../i18n/da/libhomeapplet.ts \ 14 ../../../i18n/da/libhomeapplet.ts \
15 ../../../i18n/xx/libhomeapplet.ts \ 15 ../../../i18n/xx/libhomeapplet.ts \
16 ../../../i18n/en/libhomeapplet.ts \ 16 ../../../i18n/en/libhomeapplet.ts \
17 ../../../i18n/es/libhomeapplet.ts \ 17 ../../../i18n/es/libhomeapplet.ts \
18 ../../../i18n/fr/libhomeapplet.ts \ 18 ../../../i18n/fr/libhomeapplet.ts \
19 ../../../i18n/hu/libhomeapplet.ts \ 19 ../../../i18n/hu/libhomeapplet.ts \
20 ../../../i18n/ja/libhomeapplet.ts \ 20 ../../../i18n/ja/libhomeapplet.ts \
21 ../../../i18n/ko/libhomeapplet.ts \ 21 ../../../i18n/ko/libhomeapplet.ts \
22 ../../../i18n/no/libhomeapplet.ts \ 22 ../../../i18n/no/libhomeapplet.ts \
23 ../../../i18n/pl/libhomeapplet.ts \ 23 ../../../i18n/pl/libhomeapplet.ts \
24 ../../../i18n/pt/libhomeapplet.ts \ 24 ../../../i18n/pt/libhomeapplet.ts \
25 ../../../i18n/pt_BR/libhomeapplet.ts \ 25 ../../../i18n/pt_BR/libhomeapplet.ts \
26 ../../../i18n/sl/libhomeapplet.ts \ 26 ../../../i18n/sl/libhomeapplet.ts \
27 ../../../i18n/zh_CN/libhomeapplet.ts \ 27 ../../../i18n/zh_CN/libhomeapplet.ts \
28 ../../../i18n/zh_TW/libhomeapplet.ts 28 ../../../i18n/zh_TW/libhomeapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/applets/irdaapplet/irdaapplet.pro b/core/applets/irdaapplet/irdaapplet.pro
index 56632ed..be16bad 100644
--- a/core/applets/irdaapplet/irdaapplet.pro
+++ b/core/applets/irdaapplet/irdaapplet.pro
@@ -1,33 +1,33 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = irda.h irdaappletimpl.h 3HEADERS = irda.h irdaappletimpl.h
4SOURCES = irda.cpp irdaappletimpl.cpp 4SOURCES = irda.cpp irdaappletimpl.cpp
5TARGET = irdaapplet 5TARGET = irdaapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += ../$(OPIEDIR)/include 8DEPENDPATH += ../$(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libirdaapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/libirdaapplet.ts \
13 ../../../i18n/nl/libirdaapplet.ts \ 13 ../../../i18n/nl/libirdaapplet.ts \
14 ../../../i18n/da/libirdaapplet.ts \ 14 ../../../i18n/da/libirdaapplet.ts \
15 ../../../i18n/xx/libirdaapplet.ts \ 15 ../../../i18n/xx/libirdaapplet.ts \
16 ../../../i18n/en/libirdaapplet.ts \ 16 ../../../i18n/en/libirdaapplet.ts \
17 ../../../i18n/es/libirdaapplet.ts \ 17 ../../../i18n/es/libirdaapplet.ts \
18 ../../../i18n/fr/libirdaapplet.ts \ 18 ../../../i18n/fr/libirdaapplet.ts \
19 ../../../i18n/hu/libirdaapplet.ts \ 19 ../../../i18n/hu/libirdaapplet.ts \
20 ../../../i18n/ja/libirdaapplet.ts \ 20 ../../../i18n/ja/libirdaapplet.ts \
21 ../../../i18n/ko/libirdaapplet.ts \ 21 ../../../i18n/ko/libirdaapplet.ts \
22 ../../../i18n/no/libirdaapplet.ts \ 22 ../../../i18n/no/libirdaapplet.ts \
23 ../../../i18n/pl/libirdaapplet.ts \ 23 ../../../i18n/pl/libirdaapplet.ts \
24 ../../../i18n/pt/libirdaapplet.ts \ 24 ../../../i18n/pt/libirdaapplet.ts \
25 ../../../i18n/pt_BR/libirdaapplet.ts \ 25 ../../../i18n/pt_BR/libirdaapplet.ts \
26 ../../../i18n/sl/libirdaapplet.ts \ 26 ../../../i18n/sl/libirdaapplet.ts \
27 ../../../i18n/zh_CN/libirdaapplet.ts \ 27 ../../../i18n/zh_CN/libirdaapplet.ts \
28 ../../../i18n/zh_TW/libirdaapplet.ts 28 ../../../i18n/zh_TW/libirdaapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/applets/logoutapplet/logoutapplet.pro b/core/applets/logoutapplet/logoutapplet.pro
index a019303..7826bb3 100644
--- a/core/applets/logoutapplet/logoutapplet.pro
+++ b/core/applets/logoutapplet/logoutapplet.pro
@@ -1,33 +1,33 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = logout.h 3HEADERS = logout.h
4SOURCES = logout.cpp 4SOURCES = logout.cpp
5TARGET = logoutapplet 5TARGET = logoutapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/liblogoutapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/liblogoutapplet.ts \
13 ../../../i18n/nl/liblogoutapplet.ts \ 13 ../../../i18n/nl/liblogoutapplet.ts \
14 ../../../i18n/da/liblogoutapplet.ts \ 14 ../../../i18n/da/liblogoutapplet.ts \
15 ../../../i18n/xx/liblogoutapplet.ts \ 15 ../../../i18n/xx/liblogoutapplet.ts \
16 ../../../i18n/en/liblogoutapplet.ts \ 16 ../../../i18n/en/liblogoutapplet.ts \
17 ../../../i18n/es/liblogoutapplet.ts \ 17 ../../../i18n/es/liblogoutapplet.ts \
18 ../../../i18n/fr/liblogoutapplet.ts \ 18 ../../../i18n/fr/liblogoutapplet.ts \
19 ../../../i18n/hu/liblogoutapplet.ts \ 19 ../../../i18n/hu/liblogoutapplet.ts \
20 ../../../i18n/ja/liblogoutapplet.ts \ 20 ../../../i18n/ja/liblogoutapplet.ts \
21 ../../../i18n/ko/liblogoutapplet.ts \ 21 ../../../i18n/ko/liblogoutapplet.ts \
22 ../../../i18n/no/liblogoutapplet.ts \ 22 ../../../i18n/no/liblogoutapplet.ts \
23 ../../../i18n/pl/liblogoutapplet.ts \ 23 ../../../i18n/pl/liblogoutapplet.ts \
24 ../../../i18n/pt/liblogoutapplet.ts \ 24 ../../../i18n/pt/liblogoutapplet.ts \
25 ../../../i18n/pt_BR/liblogoutapplet.ts \ 25 ../../../i18n/pt_BR/liblogoutapplet.ts \
26 ../../../i18n/sl/liblogoutapplet.ts \ 26 ../../../i18n/sl/liblogoutapplet.ts \
27 ../../../i18n/zh_CN/liblogoutapplet.ts \ 27 ../../../i18n/zh_CN/liblogoutapplet.ts \
28 ../../../i18n/zh_TW/liblogoutapplet.ts 28 ../../../i18n/zh_TW/liblogoutapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/applets/restartapplet/restartapplet.pro b/core/applets/restartapplet/restartapplet.pro
index bd27b0a..368a0ea 100644
--- a/core/applets/restartapplet/restartapplet.pro
+++ b/core/applets/restartapplet/restartapplet.pro
@@ -1,17 +1,17 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = restart.h restartappletimpl.h 3HEADERS = restart.h restartappletimpl.h
4SOURCES = restart.cpp restartappletimpl.cpp 4SOURCES = restart.cpp restartappletimpl.cpp
5TARGET = restartapplet 5TARGET = restartapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += ../$(OPIEDIR)/include 8DEPENDPATH += ../$(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11MOC_DIR=opieobj 11MOC_DIR=opieobj
12OBJECTS_DIR=opieobj 12OBJECTS_DIR=opieobj
13 13
14 14
15 15
16include ( $(OPIEDIR)/include.pro ) 16include ( $(OPIEDIR)/include.pro )
17target.path = $$prefix/plugins/applets 17target.path = $$prefix/plugins/applets
diff --git a/core/applets/restartapplet2/restartapplet.pro b/core/applets/restartapplet2/restartapplet.pro
index 85a3b66..12a7922 100644
--- a/core/applets/restartapplet2/restartapplet.pro
+++ b/core/applets/restartapplet2/restartapplet.pro
@@ -1,17 +1,17 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = restart.h 3HEADERS = restart.h
4SOURCES = restart.cpp 4SOURCES = restart.cpp
5TARGET = restartapplet 5TARGET = restartapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11MOC_DIR=opieobj 11MOC_DIR=opieobj
12OBJECTS_DIR=opieobj 12OBJECTS_DIR=opieobj
13 13
14 14
15 15
16include ( $(OPIEDIR)/include.pro ) 16include ( $(OPIEDIR)/include.pro )
17target.path = $$prefix/plugins/applets 17target.path = $$prefix/plugins/applets
diff --git a/core/applets/rotateapplet/rotateapplet.pro b/core/applets/rotateapplet/rotateapplet.pro
index 9b39dba..2c8de8d 100644
--- a/core/applets/rotateapplet/rotateapplet.pro
+++ b/core/applets/rotateapplet/rotateapplet.pro
@@ -1,31 +1,31 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugn warn_on release
3HEADERS = rotate.h 3HEADERS = rotate.h
4SOURCES = rotate.cpp 4SOURCES = rotate.cpp
5TARGET = rotateapplet 5TARGET = rotateapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/librotateapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/librotateapplet.ts \
13 ../../../i18n/nl/librotateapplet.ts \ 13 ../../../i18n/nl/librotateapplet.ts \
14 ../../../i18n/da/librotateapplet.ts \ 14 ../../../i18n/da/librotateapplet.ts \
15 ../../../i18n/xx/librotateapplet.ts \ 15 ../../../i18n/xx/librotateapplet.ts \
16 ../../../i18n/en/librotateapplet.ts \ 16 ../../../i18n/en/librotateapplet.ts \
17 ../../../i18n/es/librotateapplet.ts \ 17 ../../../i18n/es/librotateapplet.ts \
18 ../../../i18n/fr/librotateapplet.ts \ 18 ../../../i18n/fr/librotateapplet.ts \
19 ../../../i18n/hu/librotateapplet.ts \ 19 ../../../i18n/hu/librotateapplet.ts \
20 ../../../i18n/ja/librotateapplet.ts \ 20 ../../../i18n/ja/librotateapplet.ts \
21 ../../../i18n/ko/librotateapplet.ts \ 21 ../../../i18n/ko/librotateapplet.ts \
22 ../../../i18n/no/librotateapplet.ts \ 22 ../../../i18n/no/librotateapplet.ts \
23 ../../../i18n/pl/librotateapplet.ts \ 23 ../../../i18n/pl/librotateapplet.ts \
24 ../../../i18n/pt/librotateapplet.ts \ 24 ../../../i18n/pt/librotateapplet.ts \
25 ../../../i18n/pt_BR/librotateapplet.ts \ 25 ../../../i18n/pt_BR/librotateapplet.ts \
26 ../../../i18n/sl/librotateapplet.ts \ 26 ../../../i18n/sl/librotateapplet.ts \
27 ../../../i18n/zh_CN/librotateapplet.ts \ 27 ../../../i18n/zh_CN/librotateapplet.ts \
28 ../../../i18n/zh_TW/librotateapplet.ts 28 ../../../i18n/zh_TW/librotateapplet.ts
29 29
30include ( $(OPIEDIR)/include.pro ) 30include ( $(OPIEDIR)/include.pro )
31target.path = $$prefix/plugins/applets 31target.path = $$prefix/plugins/applets
diff --git a/core/applets/screenshotapplet/screenshotapplet.pro b/core/applets/screenshotapplet/screenshotapplet.pro
index fe7b299..a86eff2 100644
--- a/core/applets/screenshotapplet/screenshotapplet.pro
+++ b/core/applets/screenshotapplet/screenshotapplet.pro
@@ -1,35 +1,35 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = screenshot.h inputDialog.h screenshotappletimpl.h 3HEADERS = screenshot.h inputDialog.h screenshotappletimpl.h
4SOURCES = screenshot.cpp inputDialog.cpp screenshotappletimpl.cpp 4SOURCES = screenshot.cpp inputDialog.cpp screenshotappletimpl.cpp
5TARGET = screenshotapplet 5TARGET = screenshotapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += ../$(OPIEDIR)/include 8DEPENDPATH += ../$(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11MOC_DIR=opieobj 11MOC_DIR=opieobj
12OBJECTS_DIR=opieobj 12OBJECTS_DIR=opieobj
13 13
14TRANSLATIONS = ../../../i18n/de/libscreenshotapplet.ts \ 14TRANSLATIONS = ../../../i18n/de/libscreenshotapplet.ts \
15 ../../../i18n/nl/libscreenshotapplet.ts \ 15 ../../../i18n/nl/libscreenshotapplet.ts \
16 ../../../i18n/da/libscreenshotapplet.ts \ 16 ../../../i18n/da/libscreenshotapplet.ts \
17 ../../../i18n/xx/libscreenshotapplet.ts \ 17 ../../../i18n/xx/libscreenshotapplet.ts \
18 ../../../i18n/en/libscreenshotapplet.ts \ 18 ../../../i18n/en/libscreenshotapplet.ts \
19 ../../../i18n/es/libscreenshotapplet.ts \ 19 ../../../i18n/es/libscreenshotapplet.ts \
20 ../../../i18n/fr/libscreenshotapplet.ts \ 20 ../../../i18n/fr/libscreenshotapplet.ts \
21 ../../../i18n/hu/libscreenshotapplet.ts \ 21 ../../../i18n/hu/libscreenshotapplet.ts \
22 ../../../i18n/ja/libscreenshotapplet.ts \ 22 ../../../i18n/ja/libscreenshotapplet.ts \
23 ../../../i18n/ko/libscreenshotapplet.ts \ 23 ../../../i18n/ko/libscreenshotapplet.ts \
24 ../../../i18n/no/libscreenshotapplet.ts \ 24 ../../../i18n/no/libscreenshotapplet.ts \
25 ../../../i18n/pl/libscreenshotapplet.ts \ 25 ../../../i18n/pl/libscreenshotapplet.ts \
26 ../../../i18n/pt/libscreenshotapplet.ts \ 26 ../../../i18n/pt/libscreenshotapplet.ts \
27 ../../../i18n/pt_BR/libscreenshotapplet.ts \ 27 ../../../i18n/pt_BR/libscreenshotapplet.ts \
28 ../../../i18n/sl/libscreenshotapplet.ts \ 28 ../../../i18n/sl/libscreenshotapplet.ts \
29 ../../../i18n/zh_CN/libscreenshotapplet.ts \ 29 ../../../i18n/zh_CN/libscreenshotapplet.ts \
30 ../../../i18n/zh_TW/libscreenshotapplet.ts 30 ../../../i18n/zh_TW/libscreenshotapplet.ts
31 31
32 32
33 33
34include ( $(OPIEDIR)/include.pro ) 34include ( $(OPIEDIR)/include.pro )
35target.path = $$prefix/plugins/applets 35target.path = $$prefix/plugins/applets
diff --git a/core/applets/suspendapplet/suspendapplet.pro b/core/applets/suspendapplet/suspendapplet.pro
index 7635d32..f58de63 100644
--- a/core/applets/suspendapplet/suspendapplet.pro
+++ b/core/applets/suspendapplet/suspendapplet.pro
@@ -1,33 +1,33 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = suspend.h 3HEADERS = suspend.h
4SOURCES = suspend.cpp 4SOURCES = suspend.cpp
5TARGET = suspendapplet 5TARGET = suspendapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libsuspendapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/libsuspendapplet.ts \
13 ../../../i18n/nl/libsuspendapplet.ts \ 13 ../../../i18n/nl/libsuspendapplet.ts \
14 ../../../i18n/da/libsuspendapplet.ts \ 14 ../../../i18n/da/libsuspendapplet.ts \
15 ../../../i18n/xx/libsuspendapplet.ts \ 15 ../../../i18n/xx/libsuspendapplet.ts \
16 ../../../i18n/en/libsuspendapplet.ts \ 16 ../../../i18n/en/libsuspendapplet.ts \
17 ../../../i18n/es/libsuspendapplet.ts \ 17 ../../../i18n/es/libsuspendapplet.ts \
18 ../../../i18n/fr/libsuspendapplet.ts \ 18 ../../../i18n/fr/libsuspendapplet.ts \
19 ../../../i18n/hu/libsuspendapplet.ts \ 19 ../../../i18n/hu/libsuspendapplet.ts \
20 ../../../i18n/ja/libsuspendapplet.ts \ 20 ../../../i18n/ja/libsuspendapplet.ts \
21 ../../../i18n/ko/libsuspendapplet.ts \ 21 ../../../i18n/ko/libsuspendapplet.ts \
22 ../../../i18n/no/libsuspendapplet.ts \ 22 ../../../i18n/no/libsuspendapplet.ts \
23 ../../../i18n/pl/libsuspendapplet.ts \ 23 ../../../i18n/pl/libsuspendapplet.ts \
24 ../../../i18n/pt/libsuspendapplet.ts \ 24 ../../../i18n/pt/libsuspendapplet.ts \
25 ../../../i18n/pt_BR/libsuspendapplet.ts \ 25 ../../../i18n/pt_BR/libsuspendapplet.ts \
26 ../../../i18n/sl/libsuspendapplet.ts \ 26 ../../../i18n/sl/libsuspendapplet.ts \
27 ../../../i18n/zh_CN/libsuspendapplet.ts \ 27 ../../../i18n/zh_CN/libsuspendapplet.ts \
28 ../../../i18n/zh_TW/libsuspendapplet.ts 28 ../../../i18n/zh_TW/libsuspendapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/applets/vmemo/vmemo.pro b/core/applets/vmemo/vmemo.pro
index 8cf1f07..43cb767 100644
--- a/core/applets/vmemo/vmemo.pro
+++ b/core/applets/vmemo/vmemo.pro
@@ -1,33 +1,33 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = vmemo.h vmemoimpl.h adpcm.h 3HEADERS = vmemo.h vmemoimpl.h adpcm.h
4SOURCES = vmemo.cpp vmemoimpl.cpp adpcm.c 4SOURCES = vmemo.cpp vmemoimpl.cpp adpcm.c
5TARGET = vmemoapplet 5TARGET = vmemoapplet
6DESTDIR =$(OPIEDIR)/plugins/applets 6DESTDIR =$(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libvmemoapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/libvmemoapplet.ts \
13 ../../../i18n/nl/libvmemoapplet.ts \ 13 ../../../i18n/nl/libvmemoapplet.ts \
14 ../../../i18n/da/libvmemoapplet.ts \ 14 ../../../i18n/da/libvmemoapplet.ts \
15 ../../../i18n/xx/libvmemoapplet.ts \ 15 ../../../i18n/xx/libvmemoapplet.ts \
16 ../../../i18n/en/libvmemoapplet.ts \ 16 ../../../i18n/en/libvmemoapplet.ts \
17 ../../../i18n/es/libvmemoapplet.ts \ 17 ../../../i18n/es/libvmemoapplet.ts \
18 ../../../i18n/fr/libvmemoapplet.ts \ 18 ../../../i18n/fr/libvmemoapplet.ts \
19 ../../../i18n/hu/libvmemoapplet.ts \ 19 ../../../i18n/hu/libvmemoapplet.ts \
20 ../../../i18n/ja/libvmemoapplet.ts \ 20 ../../../i18n/ja/libvmemoapplet.ts \
21 ../../../i18n/ko/libvmemoapplet.ts \ 21 ../../../i18n/ko/libvmemoapplet.ts \
22 ../../../i18n/no/libvmemoapplet.ts \ 22 ../../../i18n/no/libvmemoapplet.ts \
23 ../../../i18n/pl/libvmemoapplet.ts \ 23 ../../../i18n/pl/libvmemoapplet.ts \
24 ../../../i18n/pt/libvmemoapplet.ts \ 24 ../../../i18n/pt/libvmemoapplet.ts \
25 ../../../i18n/pt_BR/libvmemoapplet.ts \ 25 ../../../i18n/pt_BR/libvmemoapplet.ts \
26 ../../../i18n/sl/libvmemoapplet.ts \ 26 ../../../i18n/sl/libvmemoapplet.ts \
27 ../../../i18n/zh_CN/libvmemoapplet.ts \ 27 ../../../i18n/zh_CN/libvmemoapplet.ts \
28 ../../../i18n/zh_TW/libvmemoapplet.ts 28 ../../../i18n/zh_TW/libvmemoapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/applets/volumeapplet/volumeapplet.pro b/core/applets/volumeapplet/volumeapplet.pro
index d30567c..68d9eff 100644
--- a/core/applets/volumeapplet/volumeapplet.pro
+++ b/core/applets/volumeapplet/volumeapplet.pro
@@ -1,33 +1,33 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= volume.h volumeappletimpl.h oledbox.h 3 HEADERS= volume.h volumeappletimpl.h oledbox.h
4 SOURCES= volume.cpp volumeappletimpl.cpp oledbox.cpp 4 SOURCES= volume.cpp volumeappletimpl.cpp oledbox.cpp
5 TARGET = volumeapplet 5 TARGET = volumeapplet
6 DESTDIR = $(OPIEDIR)/plugins/applets 6 DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += ../$(OPIEDIR)/include 8DEPENDPATH += ../$(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libvolumeapplet.ts \ 12TRANSLATIONS = ../../../i18n/de/libvolumeapplet.ts \
13 ../../../i18n/nl/libvolumeapplet.ts \ 13 ../../../i18n/nl/libvolumeapplet.ts \
14 ../../../i18n/da/libvolumeapplet.ts \ 14 ../../../i18n/da/libvolumeapplet.ts \
15 ../../../i18n/xx/libvolumeapplet.ts \ 15 ../../../i18n/xx/libvolumeapplet.ts \
16 ../../../i18n/en/libvolumeapplet.ts \ 16 ../../../i18n/en/libvolumeapplet.ts \
17 ../../../i18n/es/libvolumeapplet.ts \ 17 ../../../i18n/es/libvolumeapplet.ts \
18 ../../../i18n/fr/libvolumeapplet.ts \ 18 ../../../i18n/fr/libvolumeapplet.ts \
19 ../../../i18n/hu/libvolumeapplet.ts \ 19 ../../../i18n/hu/libvolumeapplet.ts \
20 ../../../i18n/ja/libvolumeapplet.ts \ 20 ../../../i18n/ja/libvolumeapplet.ts \
21 ../../../i18n/ko/libvolumeapplet.ts \ 21 ../../../i18n/ko/libvolumeapplet.ts \
22 ../../../i18n/no/libvolumeapplet.ts \ 22 ../../../i18n/no/libvolumeapplet.ts \
23 ../../../i18n/pl/libvolumeapplet.ts \ 23 ../../../i18n/pl/libvolumeapplet.ts \
24 ../../../i18n/pt/libvolumeapplet.ts \ 24 ../../../i18n/pt/libvolumeapplet.ts \
25 ../../../i18n/pt_BR/libvolumeapplet.ts \ 25 ../../../i18n/pt_BR/libvolumeapplet.ts \
26 ../../../i18n/sl/libvolumeapplet.ts \ 26 ../../../i18n/sl/libvolumeapplet.ts \
27 ../../../i18n/zh_CN/libvolumeapplet.ts \ 27 ../../../i18n/zh_CN/libvolumeapplet.ts \
28 ../../../i18n/zh_TW/libvolumeapplet.ts 28 ../../../i18n/zh_TW/libvolumeapplet.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/applets 33target.path = $$prefix/plugins/applets
diff --git a/core/launcher/applauncher.cpp b/core/launcher/applauncher.cpp
index d6f93da..0ac043b 100644
--- a/core/launcher/applauncher.cpp
+++ b/core/launcher/applauncher.cpp
@@ -357,358 +357,362 @@ void AppLauncher::sigStopped(int sigPid, int sigStatus)
357 if ( !app ) return; // QCop messages processed to slow? 357 if ( !app ) return; // QCop messages processed to slow?
358 if ( crashed && app->isPreloaded() ) { 358 if ( crashed && app->isPreloaded() ) {
359 Config cfg("Launcher"); 359 Config cfg("Launcher");
360 cfg.setGroup("Preload"); 360 cfg.setGroup("Preload");
361 QStringList apps = cfg.readListEntry("Apps",','); 361 QStringList apps = cfg.readListEntry("Apps",',');
362 QString exe = app->exec(); 362 QString exe = app->exec();
363 apps.remove(exe); 363 apps.remove(exe);
364 cfg.writeEntry("Apps",apps,','); 364 cfg.writeEntry("Apps",apps,',');
365 preloadDisabled = TRUE; 365 preloadDisabled = TRUE;
366 } 366 }
367 367
368 // clean up 368 // clean up
369 if ( exitStatus ) { 369 if ( exitStatus ) {
370 QCopEnvelope e("QPE/System", "notBusy(QString)"); 370 QCopEnvelope e("QPE/System", "notBusy(QString)");
371 e << app->exec(); 371 e << app->exec();
372 } 372 }
373/* 373/*
374 // debug info 374 // debug info
375 for (it = runningApps.begin(); it != runningApps.end(); ++it) { 375 for (it = runningApps.begin(); it != runningApps.end(); ++it) {
376 qDebug("running according to internal list: %s, with pid %d", (*it).data(), it.key() ); 376 qDebug("running according to internal list: %s, with pid %d", (*it).data(), it.key() );
377 } 377 }
378*/ 378*/
379 379
380#ifdef QTOPIA_PROGRAM_MONITOR 380#ifdef QTOPIA_PROGRAM_MONITOR
381 if ( crashed ) { 381 if ( crashed ) {
382 QString sig; 382 QString sig;
383 switch( exitStatus ) { 383 switch( exitStatus ) {
384 case SIGABRT: sig = "SIGABRT"; break; 384 case SIGABRT: sig = "SIGABRT"; break;
385 case SIGALRM: sig = "SIGALRM"; break; 385 case SIGALRM: sig = "SIGALRM"; break;
386 case SIGBUS: sig = "SIGBUS"; break; 386 case SIGBUS: sig = "SIGBUS"; break;
387 case SIGFPE: sig = "SIGFPE"; break; 387 case SIGFPE: sig = "SIGFPE"; break;
388 case SIGHUP: sig = "SIGHUP"; break; 388 case SIGHUP: sig = "SIGHUP"; break;
389 case SIGILL: sig = "SIGILL"; break; 389 case SIGILL: sig = "SIGILL"; break;
390 case SIGKILL: sig = "SIGKILL"; break; 390 case SIGKILL: sig = "SIGKILL"; break;
391 case SIGPIPE: sig = "SIGPIPE"; break; 391 case SIGPIPE: sig = "SIGPIPE"; break;
392 case SIGQUIT: sig = "SIGQUIT"; break; 392 case SIGQUIT: sig = "SIGQUIT"; break;
393 case SIGSEGV: sig = "SIGSEGV"; break; 393 case SIGSEGV: sig = "SIGSEGV"; break;
394 case SIGTERM: sig = "SIGTERM"; break; 394 case SIGTERM: sig = "SIGTERM"; break;
395 case SIGTRAP: sig = "SIGTRAP"; break; 395 case SIGTRAP: sig = "SIGTRAP"; break;
396 default: sig = QString("Unkown %1").arg(exitStatus); 396 default: sig = QString("Unkown %1").arg(exitStatus);
397 } 397 }
398 if ( preloadDisabled ) 398 if ( preloadDisabled )
399 sig += tr("<qt><p>Fast loading has been disabled for this application. Tap and hold the application icon to reenable it.</qt>"); 399 sig += tr("<qt><p>Fast loading has been disabled for this application. Tap and hold the application icon to reenable it.</qt>");
400 400
401 QString str = tr("<qt><b>%1</b> was terminated due to signal code %2</qt>").arg( app->name() ).arg( sig ); 401 QString str = tr("<qt><b>%1</b> was terminated due to signal code %2</qt>").arg( app->name() ).arg( sig );
402 QMessageBox::information(0, tr("Application terminated"), str ); 402 QMessageBox::information(0, tr("Application terminated"), str );
403 } else { 403 } else {
404 if ( exitStatus == 255 ) { //could not find app (because global returns -1) 404 if ( exitStatus == 255 ) { //could not find app (because global returns -1)
405 QMessageBox::information(0, tr("Application not found"), tr("<qt>Could not locate application <b>%1</b></qt>").arg( app->exec() ) ); 405 QMessageBox::information(0, tr("Application not found"), tr("<qt>Could not locate application <b>%1</b></qt>").arg( app->exec() ) );
406 } else { 406 } else {
407 QFileInfo fi(Opie::Global::tempDir() + "qcop-msg-" + appName); 407 QFileInfo fi(Opie::Global::tempDir() + "qcop-msg-" + appName);
408 if ( fi.exists() && fi.size() ) { 408 if ( fi.exists() && fi.size() ) {
409 emit terminated(sigPid, appName); 409 emit terminated(sigPid, appName);
410 qWarning("Re executing obmitted for %s", appName.latin1() ); 410 qWarning("Re executing obmitted for %s", appName.latin1() );
411 // execute( appName, QString::null ); 411 // execute( appName, QString::null );
412 return; 412 return;
413 } 413 }
414 } 414 }
415 } 415 }
416 416
417#endif 417#endif
418 418
419 emit terminated(sigPid, appName); 419 emit terminated(sigPid, appName);
420} 420}
421#else 421#else
422void AppLauncher::sigStopped(int sigPid, int sigStatus) 422void AppLauncher::sigStopped(int sigPid, int sigStatus)
423{ 423{
424 qDebug("Unhandled signal : AppLauncher::sigStopped(int sigPid, int sigStatus)"); 424 qDebug("Unhandled signal : AppLauncher::sigStopped(int sigPid, int sigStatus)");
425} 425}
426#endif // Q_OS_WIN32 426#endif // Q_OS_WIN32
427 427
428bool AppLauncher::isRunning(const QString &app) 428bool AppLauncher::isRunning(const QString &app)
429{ 429{
430 for (QMap<int,QString>::ConstIterator it = runningApps.begin(); it != runningApps.end(); ++it) { 430 for (QMap<int,QString>::ConstIterator it = runningApps.begin(); it != runningApps.end(); ++it) {
431 if ( *it == app ) { 431 if ( *it == app ) {
432#ifdef Q_OS_UNIX 432#ifdef Q_OS_UNIX
433 pid_t t = ::__getpgid( it.key() ); 433 pid_t t = ::__getpgid( it.key() );
434 if ( t == -1 ) { 434 if ( t == -1 ) {
435 qDebug("appLauncher bug, %s believed running, but pid %d is not existing", app.data(), it.key() ); 435 qDebug("appLauncher bug, %s believed running, but pid %d is not existing", app.data(), it.key() );
436 runningApps.remove( it.key() ); 436 runningApps.remove( it.key() );
437 return FALSE; 437 return FALSE;
438 } 438 }
439#endif 439#endif
440 return TRUE; 440 return TRUE;
441 } 441 }
442 } 442 }
443 443
444 return FALSE; 444 return FALSE;
445} 445}
446 446
447bool AppLauncher::executeBuiltin(const QString &c, const QString &document) 447bool AppLauncher::executeBuiltin(const QString &c, const QString &document)
448{ 448{
449 Global::Command* builtin = Opie::Global::builtinCommands(); 449 Global::Command* builtin = Opie::Global::builtinCommands();
450 QGuardedPtr<QWidget> *running = Opie::Global::builtinRunning(); 450 QGuardedPtr<QWidget> *running = Opie::Global::builtinRunning();
451 451
452 // Attempt to execute the app using a builtin class for the app 452 // Attempt to execute the app using a builtin class for the app
453 if (builtin) { 453 if (builtin) {
454 for (int i = 0; builtin[i].file; i++) { 454 for (int i = 0; builtin[i].file; i++) {
455 if ( builtin[i].file == c ) { 455 if ( builtin[i].file == c ) {
456 if ( running[i] ) { 456 if ( running[i] ) {
457 if ( !document.isNull() && builtin[i].documentary ) 457 if ( !document.isNull() && builtin[i].documentary )
458 Global::setDocument(running[i], document); 458 Global::setDocument(running[i], document);
459 running[i]->raise(); 459 running[i]->raise();
460 running[i]->show(); 460 running[i]->show();
461 running[i]->setActiveWindow(); 461 running[i]->setActiveWindow();
462 } else { 462 } else {
463 running[i] = builtin[i].func( builtin[i].maximized ); 463 running[i] = builtin[i].func( builtin[i].maximized );
464 } 464 }
465#ifndef QT_NO_COP 465#ifndef QT_NO_COP
466 QCopEnvelope e("QPE/System", "notBusy(QString)" ); 466 QCopEnvelope e("QPE/System", "notBusy(QString)" );
467 e << c; // that was quick ;-) 467 e << c; // that was quick ;-)
468#endif 468#endif
469 return TRUE; 469 return TRUE;
470 } 470 }
471 } 471 }
472 } 472 }
473 473
474 // Convert the command line in to a list of arguments 474 // Convert the command line in to a list of arguments
475 QStringList list = QStringList::split(QRegExp(" *"),c); 475 QStringList list = QStringList::split(QRegExp(" *"),c);
476 QString ap=list[0]; 476 QString ap=list[0];
477 477
478 if ( ap == "suspend" ) { // No tr 478 if ( ap == "suspend" ) { // No tr
479 QWSServer::processKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 479 QWSServer::processKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
480 return TRUE; 480 return TRUE;
481 } 481 }
482 482
483 return FALSE; 483 return FALSE;
484} 484}
485 485
486bool AppLauncher::execute(const QString &c, const QString &docParam, bool noRaise) 486bool AppLauncher::execute(const QString &c, const QString &docParam, bool noRaise)
487{ 487{
488 qWarning("AppLauncher::execute"); 488 qWarning("AppLauncher::execute");
489 // Convert the command line in to a list of arguments 489 // Convert the command line in to a list of arguments
490 QStringList list = QStringList::split(QRegExp(" *"),c); 490 QStringList list = QStringList::split(QRegExp(" *"),c);
491 if ( !docParam.isEmpty() ) 491 if ( !docParam.isEmpty() )
492 list.append( docParam ); 492 list.append( docParam );
493 493
494 QString appName = list[0]; 494 QString appName = list[0];
495 if ( isRunning(appName) ) { 495 if ( isRunning(appName) ) {
496 QCString channel = "QPE/Application/"; 496 QCString channel = "QPE/Application/";
497 channel += appName.latin1(); 497 channel += appName.latin1();
498 498
499 // Need to lock it to avoid race conditions with QPEApplication::processQCopFile 499 // Need to lock it to avoid race conditions with QPEApplication::processQCopFile
500 QFile f(Opie::Global::tempDir() + "qcop-msg-" + appName); 500 QFile f(Opie::Global::tempDir() + "qcop-msg-" + appName);
501 if ( !noRaise && f.open(IO_WriteOnly | IO_Append) ) { 501 if ( !noRaise && f.open(IO_WriteOnly | IO_Append) ) {
502#ifndef Q_OS_WIN32 502#ifndef Q_OS_WIN32
503 flock(f.handle(), LOCK_EX); 503 flock(f.handle(), LOCK_EX);
504#endif 504#endif
505 505
506 QDataStream ds(&f); 506 QDataStream ds(&f);
507 QByteArray b; 507 QByteArray b;
508 QDataStream bstream(b, IO_WriteOnly); 508 QDataStream bstream(b, IO_WriteOnly);
509 if ( !f.size() ) { 509 if ( !f.size() ) {
510 ds << channel << QCString("raise()") << b; 510 ds << channel << QCString("raise()") << b;
511 if ( !waitingHeartbeat.contains( appName ) && appKillerName != appName ) { 511 if ( !waitingHeartbeat.contains( appName ) && appKillerName != appName ) {
512 int id = startTimer(RAISE_TIMEOUT_MS); 512 int id = startTimer(RAISE_TIMEOUT_MS);
513 waitingHeartbeat.insert( appName, id ); 513 waitingHeartbeat.insert( appName, id );
514 } 514 }
515 } 515 }
516 if ( !docParam.isEmpty() ) { 516 if ( !docParam.isEmpty() ) {
517 bstream << docParam; 517 bstream << docParam;
518 ds << channel << QCString("setDocument(QString)") << b; 518 ds << channel << QCString("setDocument(QString)") << b;
519 } 519 }
520 520
521 f.flush(); 521 f.flush();
522#ifndef Q_OS_WIN32 522#ifndef Q_OS_WIN32
523 flock(f.handle(), LOCK_UN); 523 flock(f.handle(), LOCK_UN);
524#endif 524#endif
525 f.close(); 525 f.close();
526 } 526 }
527 if ( QCopChannel::isRegistered(channel) ) // avoid unnecessary warnings 527 if ( QCopChannel::isRegistered(channel) ) // avoid unnecessary warnings
528 QCopChannel::send(channel,"QPEProcessQCop()"); 528 QCopChannel::send(channel,"QPEProcessQCop()");
529 529
530 return TRUE; 530 return TRUE;
531 } 531 }
532 532
533#ifdef QT_NO_QWS_MULTIPROCESS 533#ifdef QT_NO_QWS_MULTIPROCESS
534 QMessageBox::warning( 0, tr("Error"), tr("<qt>Could not find the application %1</qt>").arg(c), 534 QMessageBox::warning( 0, tr("Error"), tr("<qt>Could not find the application %1</qt>").arg(c),
535 tr("OK"), 0, 0, 0, 1 ); 535 tr("OK"), 0, 0, 0, 1 );
536#else 536#else
537 537
538 QStrList slist; 538 QStrList slist;
539 unsigned j; 539 unsigned j;
540 for ( j = 0; j < list.count(); j++ ) 540 for ( j = 0; j < list.count(); j++ )
541 slist.append( list[j].utf8() ); 541 slist.append( list[j].utf8() );
542 542
543 const char **args = new const char *[slist.count() + 1]; 543 const char **args = new const char *[slist.count() + 1];
544 for ( j = 0; j < slist.count(); j++ ) 544 for ( j = 0; j < slist.count(); j++ )
545 args[j] = slist.at(j); 545 args[j] = slist.at(j);
546 args[j] = NULL; 546 args[j] = NULL;
547 547
548#ifndef Q_OS_WIN32 548#ifndef Q_OS_WIN32
549#ifdef Q_OS_MACX
550 if ( qlPid && qlReady && QFile::exists( QPEApplication::qpeDir()+"plugins/application/lib"+args[0] + ".dylib" ) ) {
551#else
549 if ( qlPid && qlReady && QFile::exists( QPEApplication::qpeDir()+"plugins/application/lib"+args[0] + ".so" ) ) { 552 if ( qlPid && qlReady && QFile::exists( QPEApplication::qpeDir()+"plugins/application/lib"+args[0] + ".so" ) ) {
553#endif /* Q_OS_MACX */
550 qDebug( "Quick launching: %s", args[0] ); 554 qDebug( "Quick launching: %s", args[0] );
551 if ( getuid() == 0 ) 555 if ( getuid() == 0 )
552 setpriority( PRIO_PROCESS, qlPid, 0 ); 556 setpriority( PRIO_PROCESS, qlPid, 0 );
553 QCString qlch("QPE/QuickLauncher-"); 557 QCString qlch("QPE/QuickLauncher-");
554 qlch += QString::number(qlPid); 558 qlch += QString::number(qlPid);
555 QCopEnvelope env( qlch, "execute(QStrList)" ); 559 QCopEnvelope env( qlch, "execute(QStrList)" );
556 env << slist; 560 env << slist;
557 runningApps[qlPid] = QString(args[0]); 561 runningApps[qlPid] = QString(args[0]);
558 emit launched(qlPid, QString(args[0])); 562 emit launched(qlPid, QString(args[0]));
559 QCopEnvelope e("QPE/System", "busy()"); 563 QCopEnvelope e("QPE/System", "busy()");
560 qlPid = 0; 564 qlPid = 0;
561 qlReady = FALSE; 565 qlReady = FALSE;
562 QTimer::singleShot( getuid() == 0 ? 800 : 1500, this, SLOT(createQuickLauncher()) ); 566 QTimer::singleShot( getuid() == 0 ? 800 : 1500, this, SLOT(createQuickLauncher()) );
563 } else { 567 } else {
564 int pid = ::vfork(); 568 int pid = ::vfork();
565 if ( !pid ) { 569 if ( !pid ) {
566 for ( int fd = 3; fd < 100; fd++ ) 570 for ( int fd = 3; fd < 100; fd++ )
567 ::close( fd ); 571 ::close( fd );
568 ::setpgid( ::getpid(), ::getppid() ); 572 ::setpgid( ::getpid(), ::getppid() );
569 // Try bindir first, so that foo/bar works too 573 // Try bindir first, so that foo/bar works too
570 ::execv( QPEApplication::qpeDir()+"bin/"+args[0], (char * const *)args ); 574 ::execv( QPEApplication::qpeDir()+"bin/"+args[0], (char * const *)args );
571 ::execvp( args[0], (char * const *)args ); 575 ::execvp( args[0], (char * const *)args );
572 _exit( -1 ); 576 _exit( -1 );
573 } 577 }
574 578
575 runningApps[pid] = QString(args[0]); 579 runningApps[pid] = QString(args[0]);
576 emit launched(pid, QString(args[0])); 580 emit launched(pid, QString(args[0]));
577 QCopEnvelope e("QPE/System", "busy()"); 581 QCopEnvelope e("QPE/System", "busy()");
578 } 582 }
579#else 583#else
580 QProcess *proc = new QProcess(this); 584 QProcess *proc = new QProcess(this);
581 if (proc){ 585 if (proc){
582 for (int i=0; i < slist.count(); i++) 586 for (int i=0; i < slist.count(); i++)
583 proc->addArgument(args[i]); 587 proc->addArgument(args[i]);
584 connect(proc, SIGNAL(processExited()), this, SLOT(processExited())); 588 connect(proc, SIGNAL(processExited()), this, SLOT(processExited()));
585 if (!proc->start()){ 589 if (!proc->start()){
586 qDebug("Unable to start application %s", args[0]); 590 qDebug("Unable to start application %s", args[0]);
587 }else{ 591 }else{
588 PROCESS_INFORMATION *procInfo = (PROCESS_INFORMATION *)proc->processIdentifier(); 592 PROCESS_INFORMATION *procInfo = (PROCESS_INFORMATION *)proc->processIdentifier();
589 if (procInfo){ 593 if (procInfo){
590 DWORD pid = procInfo->dwProcessId; 594 DWORD pid = procInfo->dwProcessId;
591 runningApps[pid] = QString(args[0]); 595 runningApps[pid] = QString(args[0]);
592 runningAppsProc.append(proc); 596 runningAppsProc.append(proc);
593 emit launched(pid, QString(args[0])); 597 emit launched(pid, QString(args[0]));
594 QCopEnvelope e("QPE/System", "busy()"); 598 QCopEnvelope e("QPE/System", "busy()");
595 }else{ 599 }else{
596 qDebug("Unable to read process inforation #1 for %s", args[0]); 600 qDebug("Unable to read process inforation #1 for %s", args[0]);
597 } 601 }
598 } 602 }
599 }else{ 603 }else{
600 qDebug("Unable to create process for application %s", args[0]); 604 qDebug("Unable to create process for application %s", args[0]);
601 return FALSE; 605 return FALSE;
602 } 606 }
603#endif 607#endif
604#endif //QT_NO_QWS_MULTIPROCESS 608#endif //QT_NO_QWS_MULTIPROCESS
605 609
606 delete [] args; 610 delete [] args;
607 return TRUE; 611 return TRUE;
608} 612}
609 613
610void AppLauncher::kill( int pid ) 614void AppLauncher::kill( int pid )
611{ 615{
612#ifndef Q_OS_WIN32 616#ifndef Q_OS_WIN32
613 ::kill( pid, SIGTERM ); 617 ::kill( pid, SIGTERM );
614#else 618#else
615 for ( QProcess *proc = runningAppsProc.first(); proc; proc = runningAppsProc.next() ) { 619 for ( QProcess *proc = runningAppsProc.first(); proc; proc = runningAppsProc.next() ) {
616 if ( proc->processIdentifier() == pid ) { 620 if ( proc->processIdentifier() == pid ) {
617 proc->kill(); 621 proc->kill();
618 break; 622 break;
619 } 623 }
620 } 624 }
621#endif 625#endif
622} 626}
623 627
624int AppLauncher::pidForName( const QString &appName ) 628int AppLauncher::pidForName( const QString &appName )
625{ 629{
626 int pid = -1; 630 int pid = -1;
627 631
628 QMap<int, QString>::Iterator it; 632 QMap<int, QString>::Iterator it;
629 for (it = runningApps.begin(); it!= runningApps.end(); ++it) { 633 for (it = runningApps.begin(); it!= runningApps.end(); ++it) {
630 if (*it == appName) { 634 if (*it == appName) {
631 pid = it.key(); 635 pid = it.key();
632 break; 636 break;
633 } 637 }
634 } 638 }
635 639
636 return pid; 640 return pid;
637} 641}
638 642
639void AppLauncher::createQuickLauncher() 643void AppLauncher::createQuickLauncher()
640{ 644{
641 static bool disabled = FALSE; 645 static bool disabled = FALSE;
642 if (disabled) 646 if (disabled)
643 return; 647 return;
644 648
645 qlReady = FALSE; 649 qlReady = FALSE;
646 qlPid = ::vfork(); 650 qlPid = ::vfork();
647 if ( !qlPid ) { 651 if ( !qlPid ) {
648 char **args = new char *[2]; 652 char **args = new char *[2];
649 args[0] = "quicklauncher"; 653 args[0] = "quicklauncher";
650 args[1] = 0; 654 args[1] = 0;
651 for ( int fd = 3; fd < 100; fd++ ) 655 for ( int fd = 3; fd < 100; fd++ )
652 ::close( fd ); 656 ::close( fd );
653 ::setpgid( ::getpid(), ::getppid() ); 657 ::setpgid( ::getpid(), ::getppid() );
654 // Try bindir first, so that foo/bar works too 658 // Try bindir first, so that foo/bar works too
655 setenv( "LD_BIND_NOW", "1", 1 ); 659 setenv( "LD_BIND_NOW", "1", 1 );
656 ::execv( QPEApplication::qpeDir()+"bin/quicklauncher", args ); 660 ::execv( QPEApplication::qpeDir()+"bin/quicklauncher", args );
657 ::execvp( "quicklauncher", args ); 661 ::execvp( "quicklauncher", args );
658 delete []args; 662 delete []args;
659 disabled = TRUE; 663 disabled = TRUE;
660 _exit( -1 ); 664 _exit( -1 );
661 } else if ( qlPid == -1 ) { 665 } else if ( qlPid == -1 ) {
662 qlPid = 0; 666 qlPid = 0;
663 } else { 667 } else {
664 if ( getuid() == 0 ) 668 if ( getuid() == 0 )
665 setpriority( PRIO_PROCESS, qlPid, 19 ); 669 setpriority( PRIO_PROCESS, qlPid, 19 );
666 } 670 }
667} 671}
668 672
669// Used only by Win32 673// Used only by Win32
670void AppLauncher::processExited() 674void AppLauncher::processExited()
671{ 675{
672#ifdef Q_OS_WIN32 676#ifdef Q_OS_WIN32
673 qDebug("AppLauncher::processExited()"); 677 qDebug("AppLauncher::processExited()");
674 bool found = FALSE; 678 bool found = FALSE;
675 QProcess *proc = (QProcess *) sender(); 679 QProcess *proc = (QProcess *) sender();
676 if (!proc){ 680 if (!proc){
677 qDebug("Interanl error NULL proc"); 681 qDebug("Interanl error NULL proc");
678 return; 682 return;
679 } 683 }
680 684
681 QString appName = proc->arguments()[0]; 685 QString appName = proc->arguments()[0];
682 qDebug("Removing application %s", appName.latin1()); 686 qDebug("Removing application %s", appName.latin1());
683 runningAppsProc.remove(proc); 687 runningAppsProc.remove(proc);
684 688
685 QMap<QString,int>::Iterator hbit = waitingHeartbeat.find(appName); 689 QMap<QString,int>::Iterator hbit = waitingHeartbeat.find(appName);
686 if ( hbit != waitingHeartbeat.end() ) { 690 if ( hbit != waitingHeartbeat.end() ) {
687 killTimer( *hbit ); 691 killTimer( *hbit );
688 waitingHeartbeat.remove( hbit ); 692 waitingHeartbeat.remove( hbit );
689 } 693 }
690 if ( appName == appKillerName ) { 694 if ( appName == appKillerName ) {
691 appKillerName = QString::null; 695 appKillerName = QString::null;
692 delete appKillerBox; 696 delete appKillerBox;
693 appKillerBox = 0; 697 appKillerBox = 0;
694 } 698 }
695 699
696 // Search for the app to find its PID 700 // Search for the app to find its PID
697 QMap<int, QString>::Iterator it; 701 QMap<int, QString>::Iterator it;
698 for (it = runningApps.begin(); it!= runningApps.end(); ++it){ 702 for (it = runningApps.begin(); it!= runningApps.end(); ++it){
699 if (it.data() == appName){ 703 if (it.data() == appName){
700 found = TRUE; 704 found = TRUE;
701 break; 705 break;
702 } 706 }
703 } 707 }
704 708
705 if (found){ 709 if (found){
706 emit terminated(it.key(), it.data()); 710 emit terminated(it.key(), it.data());
707 runningApps.remove(it.key()); 711 runningApps.remove(it.key());
708 }else{ 712 }else{
709 qDebug("Internal error application %s not listed as running", appName.latin1()); 713 qDebug("Internal error application %s not listed as running", appName.latin1());
710 } 714 }
711 715
712#endif 716#endif
713} 717}
714 718
diff --git a/core/launcher/inputmethods.cpp b/core/launcher/inputmethods.cpp
index 8f3e812..62e316c 100644
--- a/core/launcher/inputmethods.cpp
+++ b/core/launcher/inputmethods.cpp
@@ -38,385 +38,389 @@
38#include <qtranslator.h> 38#include <qtranslator.h>
39#include <qtl.h> 39#include <qtl.h>
40 40
41#ifdef Q_WS_QWS 41#ifdef Q_WS_QWS
42#include <qwindowsystem_qws.h> 42#include <qwindowsystem_qws.h>
43#include <qwsevent_qws.h> 43#include <qwsevent_qws.h>
44#include <qcopchannel_qws.h> 44#include <qcopchannel_qws.h>
45#endif 45#endif
46 46
47/* ### SingleFloppy if someone is interested? */ 47/* ### SingleFloppy if someone is interested? */
48#if 0 48#if 0
49#ifdef QT_NO_COMPONENT 49#ifdef QT_NO_COMPONENT
50#include "../plugins/inputmethods/handwriting/handwritingimpl.h" 50#include "../plugins/inputmethods/handwriting/handwritingimpl.h"
51#include "../plugins/inputmethods/keyboard/keyboardimpl.h" 51#include "../plugins/inputmethods/keyboard/keyboardimpl.h"
52#include "../3rdparty/plugins/inputmethods/pickboard/pickboardimpl.h" 52#include "../3rdparty/plugins/inputmethods/pickboard/pickboardimpl.h"
53#endif 53#endif
54#endif 54#endif
55 55
56/* XPM */ 56/* XPM */
57static const char * tri_xpm[]={ 57static const char * tri_xpm[]={
58"9 9 2 1", 58"9 9 2 1",
59"a c #000000", 59"a c #000000",
60". c None", 60". c None",
61".........", 61".........",
62".........", 62".........",
63".........", 63".........",
64"....a....", 64"....a....",
65"...aaa...", 65"...aaa...",
66"..aaaaa..", 66"..aaaaa..",
67".aaaaaaa.", 67".aaaaaaa.",
68".........", 68".........",
69"........."}; 69"........."};
70 70
71int InputMethod::operator <(const InputMethod& o) const 71int InputMethod::operator <(const InputMethod& o) const
72{ 72{
73 return name() < o.name(); 73 return name() < o.name();
74} 74}
75int InputMethod::operator >(const InputMethod& o) const 75int InputMethod::operator >(const InputMethod& o) const
76{ 76{
77 return name() > o.name(); 77 return name() > o.name();
78} 78}
79int InputMethod::operator <=(const InputMethod& o) const 79int InputMethod::operator <=(const InputMethod& o) const
80{ 80{
81 return name() <= o.name(); 81 return name() <= o.name();
82} 82}
83 83
84 84
85/* 85/*
86 Slightly hacky: We use WStyle_Tool as a flag to say "this widget 86 Slightly hacky: We use WStyle_Tool as a flag to say "this widget
87 belongs to the IM system, so clicking it should not cause a reset". 87 belongs to the IM system, so clicking it should not cause a reset".
88 */ 88 */
89class IMToolButton : public QToolButton 89class IMToolButton : public QToolButton
90{ 90{
91public: 91public:
92 IMToolButton::IMToolButton( QWidget *parent ) : QToolButton( parent ) 92 IMToolButton::IMToolButton( QWidget *parent ) : QToolButton( parent )
93 { setWFlags( WStyle_Tool ); } 93 { setWFlags( WStyle_Tool ); }
94}; 94};
95 95
96 96
97InputMethods::InputMethods( QWidget *parent ) : 97InputMethods::InputMethods( QWidget *parent ) :
98 QWidget( parent, "InputMethods", WStyle_Tool | WStyle_Customize ), 98 QWidget( parent, "InputMethods", WStyle_Tool | WStyle_Customize ),
99 mkeyboard(0), imethod(0) 99 mkeyboard(0), imethod(0)
100{ 100{
101 Config cfg( "Launcher" ); 101 Config cfg( "Launcher" );
102 cfg.setGroup( "InputMethods" ); 102 cfg.setGroup( "InputMethods" );
103 inputWidgetStyle = QWidget::WStyle_Customize | QWidget::WStyle_StaysOnTop | QWidget::WGroupLeader | QWidget::WStyle_Tool; 103 inputWidgetStyle = QWidget::WStyle_Customize | QWidget::WStyle_StaysOnTop | QWidget::WGroupLeader | QWidget::WStyle_Tool;
104 inputWidgetStyle |= cfg.readBoolEntry( "Float", false ) ? QWidget::WStyle_DialogBorder : 0; 104 inputWidgetStyle |= cfg.readBoolEntry( "Float", false ) ? QWidget::WStyle_DialogBorder : 0;
105 inputWidgetWidth = cfg.readNumEntry( "Width", 100 ); 105 inputWidgetWidth = cfg.readNumEntry( "Width", 100 );
106 106
107 setBackgroundMode( PaletteBackground ); 107 setBackgroundMode( PaletteBackground );
108 QHBoxLayout *hbox = new QHBoxLayout( this ); 108 QHBoxLayout *hbox = new QHBoxLayout( this );
109 109
110 kbdButton = new IMToolButton( this); 110 kbdButton = new IMToolButton( this);
111 kbdButton->setFocusPolicy(NoFocus); 111 kbdButton->setFocusPolicy(NoFocus);
112 kbdButton->setToggleButton( TRUE ); 112 kbdButton->setToggleButton( TRUE );
113 if (parent->sizeHint().height() > 0) 113 if (parent->sizeHint().height() > 0)
114 kbdButton->setFixedHeight( parent->sizeHint().height() ); 114 kbdButton->setFixedHeight( parent->sizeHint().height() );
115 kbdButton->setFixedWidth( 32 ); 115 kbdButton->setFixedWidth( 32 );
116 kbdButton->setAutoRaise( TRUE ); 116 kbdButton->setAutoRaise( TRUE );
117 kbdButton->setUsesBigPixmap( TRUE ); 117 kbdButton->setUsesBigPixmap( TRUE );
118 hbox->addWidget( kbdButton ); 118 hbox->addWidget( kbdButton );
119 connect( kbdButton, SIGNAL(toggled(bool)), this, SLOT(showKbd(bool)) ); 119 connect( kbdButton, SIGNAL(toggled(bool)), this, SLOT(showKbd(bool)) );
120 120
121 kbdChoice = new IMToolButton( this ); 121 kbdChoice = new IMToolButton( this );
122 kbdChoice->setFocusPolicy(NoFocus); 122 kbdChoice->setFocusPolicy(NoFocus);
123 kbdChoice->setPixmap( QPixmap( (const char **)tri_xpm ) ); 123 kbdChoice->setPixmap( QPixmap( (const char **)tri_xpm ) );
124 if (parent->sizeHint().height() > 0) 124 if (parent->sizeHint().height() > 0)
125 kbdChoice->setFixedHeight( parent->sizeHint().height() ); 125 kbdChoice->setFixedHeight( parent->sizeHint().height() );
126 kbdChoice->setFixedWidth( 13 ); 126 kbdChoice->setFixedWidth( 13 );
127 kbdChoice->setAutoRaise( TRUE ); 127 kbdChoice->setAutoRaise( TRUE );
128 hbox->addWidget( kbdChoice ); 128 hbox->addWidget( kbdChoice );
129 connect( kbdChoice, SIGNAL(clicked()), this, SLOT(chooseKbd()) ); 129 connect( kbdChoice, SIGNAL(clicked()), this, SLOT(chooseKbd()) );
130 130
131 connect( (QPEApplication*)qApp, SIGNAL(clientMoused()), 131 connect( (QPEApplication*)qApp, SIGNAL(clientMoused()),
132 this, SLOT(resetStates()) ); 132 this, SLOT(resetStates()) );
133 133
134 134
135 imButton = new QWidgetStack( this ); // later a widget stack 135 imButton = new QWidgetStack( this ); // later a widget stack
136 imButton->setFocusPolicy(NoFocus); 136 imButton->setFocusPolicy(NoFocus);
137 if (parent->sizeHint().height() > 0) 137 if (parent->sizeHint().height() > 0)
138 imButton->setFixedHeight( parent->sizeHint().height() ); 138 imButton->setFixedHeight( parent->sizeHint().height() );
139 hbox->addWidget(imButton); 139 hbox->addWidget(imButton);
140 140
141 imChoice = new QToolButton( this ); 141 imChoice = new QToolButton( this );
142 imChoice->setFocusPolicy(NoFocus); 142 imChoice->setFocusPolicy(NoFocus);
143 imChoice->setPixmap( QPixmap( (const char **)tri_xpm ) ); 143 imChoice->setPixmap( QPixmap( (const char **)tri_xpm ) );
144 if (parent->sizeHint().height() > 0) 144 if (parent->sizeHint().height() > 0)
145 imChoice->setFixedHeight( parent->sizeHint().height() ); 145 imChoice->setFixedHeight( parent->sizeHint().height() );
146 imChoice->setFixedWidth( 13 ); 146 imChoice->setFixedWidth( 13 );
147 imChoice->setAutoRaise( TRUE ); 147 imChoice->setAutoRaise( TRUE );
148 hbox->addWidget( imChoice ); 148 hbox->addWidget( imChoice );
149 connect( imChoice, SIGNAL(clicked()), this, SLOT(chooseIm()) ); 149 connect( imChoice, SIGNAL(clicked()), this, SLOT(chooseIm()) );
150 150
151 loadInputMethods(); 151 loadInputMethods();
152 152
153 QCopChannel *channel = new QCopChannel( "QPE/IME", this ); 153 QCopChannel *channel = new QCopChannel( "QPE/IME", this );
154 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 154 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
155 this, SLOT(qcopReceive(const QCString&, const QByteArray&)) ); 155 this, SLOT(qcopReceive(const QCString&, const QByteArray&)) );
156} 156}
157 157
158InputMethods::~InputMethods() 158InputMethods::~InputMethods()
159{ 159{
160 Config cfg("qpe"); 160 Config cfg("qpe");
161 cfg.setGroup("InputMethod"); 161 cfg.setGroup("InputMethod");
162 if (imethod) 162 if (imethod)
163 cfg.writeEntry("im", imethod->name() ); 163 cfg.writeEntry("im", imethod->name() );
164 if (mkeyboard) 164 if (mkeyboard)
165 cfg.writeEntry("current", mkeyboard->name() ); 165 cfg.writeEntry("current", mkeyboard->name() );
166 166
167 unloadInputMethods(); 167 unloadInputMethods();
168} 168}
169 169
170void InputMethods::hideInputMethod() 170void InputMethods::hideInputMethod()
171{ 171{
172 kbdButton->setOn( FALSE ); 172 kbdButton->setOn( FALSE );
173} 173}
174 174
175void InputMethods::showInputMethod() 175void InputMethods::showInputMethod()
176{ 176{
177 kbdButton->setOn( TRUE ); 177 kbdButton->setOn( TRUE );
178} 178}
179 179
180void InputMethods::showInputMethod(const QString& name) 180void InputMethods::showInputMethod(const QString& name)
181{ 181{
182 int i = 0; 182 int i = 0;
183 QValueList<InputMethod>::Iterator it; 183 QValueList<InputMethod>::Iterator it;
184 InputMethod *im = 0; 184 InputMethod *im = 0;
185 for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) { 185 for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) {
186 QString lname = (*it).libName.mid((*it).libName.findRev('/') + 1); 186 QString lname = (*it).libName.mid((*it).libName.findRev('/') + 1);
187 if ( (*it).name() == name || lname == name ) { 187 if ( (*it).name() == name || lname == name ) {
188 im = &(*it); 188 im = &(*it);
189 break; 189 break;
190 } 190 }
191 } 191 }
192 if ( im ) 192 if ( im )
193 chooseKeyboard(im); 193 chooseKeyboard(im);
194} 194}
195 195
196void InputMethods::resetStates() 196void InputMethods::resetStates()
197{ 197{
198 if ( mkeyboard && !mkeyboard->newIM ) 198 if ( mkeyboard && !mkeyboard->newIM )
199 mkeyboard->interface->resetState(); 199 mkeyboard->interface->resetState();
200} 200}
201 201
202QRect InputMethods::inputRect() const 202QRect InputMethods::inputRect() const
203{ 203{
204 if ( !mkeyboard || !mkeyboard->widget || !mkeyboard->widget->isVisible() ) 204 if ( !mkeyboard || !mkeyboard->widget || !mkeyboard->widget->isVisible() )
205 return QRect(); 205 return QRect();
206 else 206 else
207 return mkeyboard->widget->geometry(); 207 return mkeyboard->widget->geometry();
208} 208}
209 209
210void InputMethods::unloadInputMethods() 210void InputMethods::unloadInputMethods()
211{ 211{
212 unloadMethod( inputMethodList ); 212 unloadMethod( inputMethodList );
213 unloadMethod( inputModifierList ); 213 unloadMethod( inputModifierList );
214 inputMethodList.clear(); 214 inputMethodList.clear();
215 inputModifierList.clear(); 215 inputModifierList.clear();
216 216
217} 217}
218 218
219void InputMethods::unloadMethod( QValueList<InputMethod>& list ) { 219void InputMethods::unloadMethod( QValueList<InputMethod>& list ) {
220 QValueList<InputMethod>::Iterator it; 220 QValueList<InputMethod>::Iterator it;
221 221
222 for (it = list.begin(); it != list.end(); ++it ) 222 for (it = list.begin(); it != list.end(); ++it )
223 (*it).releaseInterface(); 223 (*it).releaseInterface();
224 224
225} 225}
226 226
227 227
228QStringList InputMethods::plugins()const { 228QStringList InputMethods::plugins()const {
229 QString path = QPEApplication::qpeDir() + "/plugins/inputmethods"; 229 QString path = QPEApplication::qpeDir() + "/plugins/inputmethods";
230#ifdef Q_OS_MACX
231 QDir dir( path, "lib*.dylib" );
232#else
230 QDir dir( path, "lib*.so" ); 233 QDir dir( path, "lib*.so" );
234#endif /* Q_OS_MACX */
231 return dir.entryList(); 235 return dir.entryList();
232} 236}
233 237
234void InputMethods::installTranslator( const QString& type ) { 238void InputMethods::installTranslator( const QString& type ) {
235 QStringList langs = Global::languageList(); 239 QStringList langs = Global::languageList();
236 QStringList::ConstIterator lit; 240 QStringList::ConstIterator lit;
237 for ( lit= langs.begin(); lit!=langs.end(); ++lit) { 241 for ( lit= langs.begin(); lit!=langs.end(); ++lit) {
238 QString lang = *lit; 242 QString lang = *lit;
239 QTranslator * trans = new QTranslator(qApp); 243 QTranslator * trans = new QTranslator(qApp);
240 244
241 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; 245 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm";
242 246
243 if ( trans->load( tfn )) 247 if ( trans->load( tfn ))
244 qApp->installTranslator( trans ); 248 qApp->installTranslator( trans );
245 else 249 else
246 delete trans; 250 delete trans;
247 } 251 }
248} 252}
249 253
250void InputMethods::setPreferedHandlers() { 254void InputMethods::setPreferedHandlers() {
251 Config cfg("qpe"); 255 Config cfg("qpe");
252 cfg.setGroup("InputMethod"); 256 cfg.setGroup("InputMethod");
253 QString current = cfg.readEntry("current"); 257 QString current = cfg.readEntry("current");
254 QString im = cfg.readEntry("im"); 258 QString im = cfg.readEntry("im");
255 259
256 QValueList<InputMethod>::Iterator it; 260 QValueList<InputMethod>::Iterator it;
257 if (!inputModifierList.isEmpty() && !im.isEmpty() ) { 261 if (!inputModifierList.isEmpty() && !im.isEmpty() ) {
258 for (it = inputModifierList.begin(); it != inputModifierList.end(); ++it ) 262 for (it = inputModifierList.begin(); it != inputModifierList.end(); ++it )
259 if ( (*it).name() == im ) { 263 if ( (*it).name() == im ) {
260 imethod = &(*it); break; 264 imethod = &(*it); break;
261 } 265 }
262 266
263 } 267 }
264 if (!inputMethodList.isEmpty() && !current.isEmpty() ) { 268 if (!inputMethodList.isEmpty() && !current.isEmpty() ) {
265 for (it = inputMethodList.begin(); it != inputMethodList.end(); ++it ) 269 for (it = inputMethodList.begin(); it != inputMethodList.end(); ++it )
266 if ( (*it).name() == current ) { 270 if ( (*it).name() == current ) {
267 qWarning("preferred keyboard is %s", current.latin1() ); 271 qWarning("preferred keyboard is %s", current.latin1() );
268 mkeyboard = &(*it); 272 mkeyboard = &(*it);
269 kbdButton->setPixmap( *mkeyboard->icon() ); 273 kbdButton->setPixmap( *mkeyboard->icon() );
270 break; 274 break;
271 } 275 }
272 } 276 }
273 277
274} 278}
275 279
276void InputMethods::loadInputMethods() 280void InputMethods::loadInputMethods()
277{ 281{
278#ifndef QT_NO_COMPONENT 282#ifndef QT_NO_COMPONENT
279 hideInputMethod(); 283 hideInputMethod();
280 mkeyboard = 0; 284 mkeyboard = 0;
281 285
282 unloadInputMethods(); 286 unloadInputMethods();
283 287
284 QString path = QPEApplication::qpeDir() + "/plugins/inputmethods"; 288 QString path = QPEApplication::qpeDir() + "/plugins/inputmethods";
285 QStringList list = plugins(); 289 QStringList list = plugins();
286 QStringList::Iterator it; 290 QStringList::Iterator it;
287 for ( it = list.begin(); it != list.end(); ++it ) { 291 for ( it = list.begin(); it != list.end(); ++it ) {
288 InputMethodInterface *iface = 0; 292 InputMethodInterface *iface = 0;
289 ExtInputMethodInterface *eface = 0; 293 ExtInputMethodInterface *eface = 0;
290 QLibrary *lib = new QLibrary( path + "/" + *it ); 294 QLibrary *lib = new QLibrary( path + "/" + *it );
291 295
292 if ( lib->queryInterface( IID_InputMethod, (QUnknownInterface**)&iface ) == QS_OK ) { 296 if ( lib->queryInterface( IID_InputMethod, (QUnknownInterface**)&iface ) == QS_OK ) {
293 InputMethod input; 297 InputMethod input;
294 input.newIM = FALSE; 298 input.newIM = FALSE;
295 input.library = lib; 299 input.library = lib;
296 input.libName = *it; 300 input.libName = *it;
297 input.interface = iface; 301 input.interface = iface;
298 input.widget = input.interface->inputMethod( 0, inputWidgetStyle ); 302 input.widget = input.interface->inputMethod( 0, inputWidgetStyle );
299 input.interface->onKeyPress( this, SLOT(sendKey(ushort,ushort,ushort,bool,bool)) ); 303 input.interface->onKeyPress( this, SLOT(sendKey(ushort,ushort,ushort,bool,bool)) );
300 inputMethodList.append( input ); 304 inputMethodList.append( input );
301 } else if ( lib->queryInterface( IID_ExtInputMethod, (QUnknownInterface**)&eface ) == QS_OK ) { 305 } else if ( lib->queryInterface( IID_ExtInputMethod, (QUnknownInterface**)&eface ) == QS_OK ) {
302 InputMethod input; 306 InputMethod input;
303 input.newIM = TRUE; 307 input.newIM = TRUE;
304 input.library = lib; 308 input.library = lib;
305 input.libName = *it; 309 input.libName = *it;
306 input.extInterface = eface; 310 input.extInterface = eface;
307 input.widget = input.extInterface->keyboardWidget( 0, inputWidgetStyle ); 311 input.widget = input.extInterface->keyboardWidget( 0, inputWidgetStyle );
308 // may be either a simple, or advanced. 312 // may be either a simple, or advanced.
309 if (input.widget) { 313 if (input.widget) {
310 //qDebug("its a keyboard"); 314 //qDebug("its a keyboard");
311 inputMethodList.append( input ); 315 inputMethodList.append( input );
312 } else { 316 } else {
313 //qDebug("its a real im"); 317 //qDebug("its a real im");
314 input.widget = input.extInterface->statusWidget( 0, 0 ); 318 input.widget = input.extInterface->statusWidget( 0, 0 );
315 if (input.widget) { 319 if (input.widget) {
316 //qDebug("blah"); 320 //qDebug("blah");
317 inputModifierList.append( input ); 321 inputModifierList.append( input );
318 imButton->addWidget(input.widget, inputModifierList.count()); 322 imButton->addWidget(input.widget, inputModifierList.count());
319 } 323 }
320 } 324 }
321 }else{ 325 }else{
322 delete lib; 326 delete lib;
323 lib = 0l; 327 lib = 0l;
324 } 328 }
325 installTranslator( (*it).left( (*it).find(".") ) ); 329 installTranslator( (*it).left( (*it).find(".") ) );
326 } 330 }
327 qHeapSort( inputMethodList ); 331 qHeapSort( inputMethodList );
328#endif /* killed BUILT in cause they would not compile */ 332#endif /* killed BUILT in cause they would not compile */
329 333
330 QWSServer::setCurrentInputMethod( 0 ); 334 QWSServer::setCurrentInputMethod( 0 );
331 335
332 /* set the prefered IM + handler */ 336 /* set the prefered IM + handler */
333 setPreferedHandlers(); 337 setPreferedHandlers();
334 if ( !inputModifierList.isEmpty() ) { 338 if ( !inputModifierList.isEmpty() ) {
335 if (!imethod) 339 if (!imethod)
336 imethod = &inputModifierList[0]; 340 imethod = &inputModifierList[0];
337 imButton->raiseWidget(imethod->widget); 341 imButton->raiseWidget(imethod->widget);
338 QWSServer::setCurrentInputMethod( imethod->extInterface->inputMethod() ); 342 QWSServer::setCurrentInputMethod( imethod->extInterface->inputMethod() );
339 } else { 343 } else {
340 imethod = 0; 344 imethod = 0;
341 } 345 }
342 346
343 // we need to update keyboards afterwards, as some of them may not be compatible with 347 // we need to update keyboards afterwards, as some of them may not be compatible with
344 // the current input method 348 // the current input method
345 updateKeyboards(imethod); 349 updateKeyboards(imethod);
346 350
347 if ( !inputModifierList.isEmpty() ) 351 if ( !inputModifierList.isEmpty() )
348 imButton->show(); 352 imButton->show();
349 else 353 else
350 imButton->hide(); 354 imButton->hide();
351 355
352 if ( inputModifierList.count() > 1 ) 356 if ( inputModifierList.count() > 1 )
353 imChoice->show(); 357 imChoice->show();
354 else 358 else
355 imChoice->hide(); 359 imChoice->hide();
356} 360}
357 361
358void InputMethods::chooseKbd() 362void InputMethods::chooseKbd()
359{ 363{
360 QPopupMenu pop( this ); 364 QPopupMenu pop( this );
361 pop.setFocusPolicy( NoFocus ); //don't reset IM 365 pop.setFocusPolicy( NoFocus ); //don't reset IM
362 366
363 QString imname; 367 QString imname;
364 if (imethod) 368 if (imethod)
365 imname = imethod->libName.mid(imethod->libName.findRev('/') + 1); 369 imname = imethod->libName.mid(imethod->libName.findRev('/') + 1);
366 370
367 int i = 0; 371 int i = 0;
368 int firstDepKbd = 0; 372 int firstDepKbd = 0;
369 373
370 QValueList<InputMethod>::Iterator it; 374 QValueList<InputMethod>::Iterator it;
371 for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) { 375 for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) {
372 // add empty new items, all old items. 376 // add empty new items, all old items.
373 if (!(*it).newIM || (*it).extInterface->compatible().count() == 0 ) { 377 if (!(*it).newIM || (*it).extInterface->compatible().count() == 0 ) {
374 pop.insertItem( (*it).name(), i, firstDepKbd); 378 pop.insertItem( (*it).name(), i, firstDepKbd);
375 if ( mkeyboard == &(*it) ) 379 if ( mkeyboard == &(*it) )
376 pop.setItemChecked( i, TRUE ); 380 pop.setItemChecked( i, TRUE );
377 381
378 firstDepKbd++; 382 firstDepKbd++;
379 } else if ( (*it).extInterface->compatible().contains(imname)) { 383 } else if ( (*it).extInterface->compatible().contains(imname)) {
380 // check if we need to insert a sep. 384 // check if we need to insert a sep.
381 if (firstDepKbd == i) 385 if (firstDepKbd == i)
382 pop.insertSeparator(); 386 pop.insertSeparator();
383 pop.insertItem( (*it).name(), i, -1); 387 pop.insertItem( (*it).name(), i, -1);
384 if ( mkeyboard == &(*it) ) 388 if ( mkeyboard == &(*it) )
385 pop.setItemChecked( i, TRUE ); 389 pop.setItemChecked( i, TRUE );
386 } 390 }
387 } 391 }
388 392
389 QPoint pt = mapToGlobal(kbdChoice->geometry().topRight()); 393 QPoint pt = mapToGlobal(kbdChoice->geometry().topRight());
390 QSize s = pop.sizeHint(); 394 QSize s = pop.sizeHint();
391 pt.ry() -= s.height(); 395 pt.ry() -= s.height();
392 pt.rx() -= s.width(); 396 pt.rx() -= s.width();
393 i = pop.exec( pt ); 397 i = pop.exec( pt );
394 if ( i == -1 ) 398 if ( i == -1 )
395 return; 399 return;
396 InputMethod *im = &inputMethodList[i]; 400 InputMethod *im = &inputMethodList[i];
397 chooseKeyboard(im); 401 chooseKeyboard(im);
398} 402}
399 403
400void InputMethods::chooseIm() 404void InputMethods::chooseIm()
401{ 405{
402 QPopupMenu pop( this ); 406 QPopupMenu pop( this );
403 407
404 int i = 0; 408 int i = 0;
405 QValueList<InputMethod>::Iterator it; 409 QValueList<InputMethod>::Iterator it;
406 for ( it = inputModifierList.begin(); it != inputModifierList.end(); ++it, i++ ) { 410 for ( it = inputModifierList.begin(); it != inputModifierList.end(); ++it, i++ ) {
407 pop.insertItem( (*it).name(), i ); 411 pop.insertItem( (*it).name(), i );
408 if ( imethod == &(*it) ) 412 if ( imethod == &(*it) )
409 pop.setItemChecked( i, TRUE ); 413 pop.setItemChecked( i, TRUE );
410 } 414 }
411 415
412 QPoint pt = mapToGlobal(imChoice->geometry().topRight()); 416 QPoint pt = mapToGlobal(imChoice->geometry().topRight());
413 QSize s = pop.sizeHint(); 417 QSize s = pop.sizeHint();
414 pt.ry() -= s.height(); 418 pt.ry() -= s.height();
415 pt.rx() -= s.width(); 419 pt.rx() -= s.width();
416 i = pop.exec( pt ); 420 i = pop.exec( pt );
417 if ( i == -1 ) 421 if ( i == -1 )
418 return; 422 return;
419 InputMethod *im = &inputModifierList[i]; 423 InputMethod *im = &inputModifierList[i];
420 424
421 chooseMethod(im); 425 chooseMethod(im);
422} 426}
diff --git a/core/launcher/irserver.cpp b/core/launcher/irserver.cpp
index 579c78c..63f8d05 100644
--- a/core/launcher/irserver.cpp
+++ b/core/launcher/irserver.cpp
@@ -1,73 +1,77 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21 21
22#include "irserver.h" 22#include "irserver.h"
23 23
24#include <qtopia/qlibrary.h> 24#include <qtopia/qlibrary.h>
25#include <qtopia/qpeapplication.h> 25#include <qtopia/qpeapplication.h>
26 26
27#include <qtranslator.h> 27#include <qtranslator.h>
28 28
29#include "obexinterface.h" 29#include "obexinterface.h"
30 30
31#include <qdir.h> 31#include <qdir.h>
32 32
33IrServer::IrServer( QObject *parent, const char *name ) 33IrServer::IrServer( QObject *parent, const char *name )
34 : QObject( parent, name ), obexIface(0) 34 : QObject( parent, name ), obexIface(0)
35{ 35{
36 lib = 0; 36 lib = 0;
37 obexIface = 0; 37 obexIface = 0;
38 QString path = QPEApplication::qpeDir() + "/plugins/obex/"; 38 QString path = QPEApplication::qpeDir() + "/plugins/obex/";
39#ifdef Q_OS_MACX
40 QDir dir( path, "lib*.dylib" );
41#else
39 QDir dir( path, "lib*.so" ); 42 QDir dir( path, "lib*.so" );
43#endif /* Q_OS_MACX */
40 QStringList list = dir.entryList(); 44 QStringList list = dir.entryList();
41 QStringList::Iterator it; 45 QStringList::Iterator it;
42 for ( it = list.begin(); it != list.end(); ++it ) { 46 for ( it = list.begin(); it != list.end(); ++it ) {
43 QLibrary *trylib = new QLibrary( path + *it ); 47 QLibrary *trylib = new QLibrary( path + *it );
44 //qDebug("trying lib %s", (path + (*it)).latin1() ); 48 //qDebug("trying lib %s", (path + (*it)).latin1() );
45 if ( trylib->queryInterface( IID_ObexInterface, (QUnknownInterface**)&obexIface ) == QS_OK ) { 49 if ( trylib->queryInterface( IID_ObexInterface, (QUnknownInterface**)&obexIface ) == QS_OK ) {
46 lib = trylib; 50 lib = trylib;
47 //qDebug("found obex lib" ); 51 //qDebug("found obex lib" );
48 QString lang = getenv( "LANG" ); 52 QString lang = getenv( "LANG" );
49 QTranslator * trans = new QTranslator(qApp); 53 QTranslator * trans = new QTranslator(qApp);
50 QString type = (*it).left( (*it).find(".") ); 54 QString type = (*it).left( (*it).find(".") );
51 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; 55 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm";
52 //qDebug("tr fpr obex: %s", tfn.latin1() ); 56 //qDebug("tr fpr obex: %s", tfn.latin1() );
53 if ( trans->load( tfn )) 57 if ( trans->load( tfn ))
54 qApp->installTranslator( trans ); 58 qApp->installTranslator( trans );
55 else 59 else
56 delete trans; 60 delete trans;
57 61
58 break; 62 break;
59 } else { 63 } else {
60 delete lib; 64 delete lib;
61 } 65 }
62 } 66 }
63 if ( !lib ) 67 if ( !lib )
64 qDebug("could not load IR plugin" ); 68 qDebug("could not load IR plugin" );
65} 69}
66 70
67IrServer::~IrServer() 71IrServer::~IrServer()
68{ 72{
69 if ( obexIface ) 73 if ( obexIface )
70 obexIface->release(); 74 obexIface->release();
71 delete lib; 75 delete lib;
72} 76}
73 77
diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp
index 74965df..5416d33 100644
--- a/core/launcher/main.cpp
+++ b/core/launcher/main.cpp
@@ -87,268 +87,270 @@ static void refreshTimeZoneConfig()
87 // We need to help WorldTime in setting up its configuration for 87 // We need to help WorldTime in setting up its configuration for
88 // the current translation 88 // the current translation
89 // BEGIN no tr 89 // BEGIN no tr
90 const char *defaultTz[] = { 90 const char *defaultTz[] = {
91 "America/New_York", 91 "America/New_York",
92 "America/Los_Angeles", 92 "America/Los_Angeles",
93 "Europe/Oslo", 93 "Europe/Oslo",
94 "Asia/Tokyo", 94 "Asia/Tokyo",
95 "Asia/Hong_Kong", 95 "Asia/Hong_Kong",
96 "Australia/Brisbane", 96 "Australia/Brisbane",
97 0 97 0
98 }; 98 };
99 // END no tr 99 // END no tr
100 100
101 TimeZone curZone; 101 TimeZone curZone;
102 QString zoneID; 102 QString zoneID;
103 int zoneIndex; 103 int zoneIndex;
104 Config cfg = Config( "WorldTime" ); 104 Config cfg = Config( "WorldTime" );
105 cfg.setGroup( "TimeZones" ); 105 cfg.setGroup( "TimeZones" );
106 if (!cfg.hasKey( "Zone0" )){ 106 if (!cfg.hasKey( "Zone0" )){
107 // We have no existing timezones use the defaults which are untranslated strings 107 // We have no existing timezones use the defaults which are untranslated strings
108 QString currTz = TimeZone::current().id(); 108 QString currTz = TimeZone::current().id();
109 QStringList zoneDefaults; 109 QStringList zoneDefaults;
110 zoneDefaults.append( currTz ); 110 zoneDefaults.append( currTz );
111 for ( int i = 0; defaultTz[i] && zoneDefaults.count() < 6; i++ ) { 111 for ( int i = 0; defaultTz[i] && zoneDefaults.count() < 6; i++ ) {
112 if ( defaultTz[i] != currTz ) 112 if ( defaultTz[i] != currTz )
113 zoneDefaults.append( defaultTz[i] ); 113 zoneDefaults.append( defaultTz[i] );
114 } 114 }
115 zoneIndex = 0; 115 zoneIndex = 0;
116 for (QStringList::Iterator it = zoneDefaults.begin(); it != zoneDefaults.end() ; ++it){ 116 for (QStringList::Iterator it = zoneDefaults.begin(); it != zoneDefaults.end() ; ++it){
117 cfg.writeEntry( "Zone" + QString::number( zoneIndex ) , *it); 117 cfg.writeEntry( "Zone" + QString::number( zoneIndex ) , *it);
118 zoneIndex++; 118 zoneIndex++;
119 } 119 }
120 } 120 }
121 // We have an existing list of timezones refresh the 121 // We have an existing list of timezones refresh the
122 // translations of TimeZone name 122 // translations of TimeZone name
123 zoneIndex = 0; 123 zoneIndex = 0;
124 while (cfg.hasKey( "Zone"+ QString::number( zoneIndex ))){ 124 while (cfg.hasKey( "Zone"+ QString::number( zoneIndex ))){
125 zoneID = cfg.readEntry( "Zone" + QString::number( zoneIndex )); 125 zoneID = cfg.readEntry( "Zone" + QString::number( zoneIndex ));
126 curZone = TimeZone( zoneID ); 126 curZone = TimeZone( zoneID );
127 if ( !curZone.isValid() ){ 127 if ( !curZone.isValid() ){
128 qDebug( "initEnvironment() Invalid TimeZone %s", zoneID.latin1() ); 128 qDebug( "initEnvironment() Invalid TimeZone %s", zoneID.latin1() );
129 break; 129 break;
130 } 130 }
131 cfg.writeEntry( "ZoneName" + QString::number( zoneIndex ), curZone.city() ); 131 cfg.writeEntry( "ZoneName" + QString::number( zoneIndex ), curZone.city() );
132 zoneIndex++; 132 zoneIndex++;
133 } 133 }
134#endif 134#endif
135} 135}
136 136
137void initEnvironment() 137void initEnvironment()
138{ 138{
139#ifdef Q_OS_WIN32 139#ifdef Q_OS_WIN32
140 // Config file requires HOME dir which uses QDir which needs the winver 140 // Config file requires HOME dir which uses QDir which needs the winver
141 qt_init_winver(); 141 qt_init_winver();
142#endif 142#endif
143 Config config("locale"); 143 Config config("locale");
144 config.setGroup( "Location" ); 144 config.setGroup( "Location" );
145 QString tz = config.readEntry( "Timezone", getenv("TZ") ).stripWhiteSpace(); 145 QString tz = config.readEntry( "Timezone", getenv("TZ") ).stripWhiteSpace();
146 146
147 // if not timezone set, pick New York 147 // if not timezone set, pick New York
148 if (tz.isNull() || tz.isEmpty()) 148 if (tz.isNull() || tz.isEmpty())
149 tz = "America/New_York"; 149 tz = "America/New_York";
150 150
151 setenv( "TZ", tz, 1 ); 151 setenv( "TZ", tz, 1 );
152 config.writeEntry( "Timezone", tz); 152 config.writeEntry( "Timezone", tz);
153 153
154 config.setGroup( "Language" ); 154 config.setGroup( "Language" );
155 QString lang = config.readEntry( "Language", getenv("LANG") ).stripWhiteSpace(); 155 QString lang = config.readEntry( "Language", getenv("LANG") ).stripWhiteSpace();
156 if( lang.isNull() || lang.isEmpty()) 156 if( lang.isNull() || lang.isEmpty())
157 lang = "en_US"; 157 lang = "en_US";
158 158
159 setenv( "LANG", lang, 1 ); 159 setenv( "LANG", lang, 1 );
160 config.writeEntry("Language", lang); 160 config.writeEntry("Language", lang);
161 config.write(); 161 config.write();
162 162
163#if 0 163#if 0
164 setenv( "QWS_SIZE", "240x320", 0 ); 164 setenv( "QWS_SIZE", "240x320", 0 );
165#endif 165#endif
166 166
167 167
168 168
169 QString env(getenv("QWS_DISPLAY")); 169 QString env(getenv("QWS_DISPLAY"));
170 if (env.contains("Transformed")) { 170 if (env.contains("Transformed")) {
171 int rot; 171 int rot;
172 // transformed driver default rotation is controlled by the hardware. 172 // transformed driver default rotation is controlled by the hardware.
173 Config config("qpe"); 173 Config config("qpe");
174 config.setGroup( "Rotation" ); 174 config.setGroup( "Rotation" );
175 if ( ( rot = config.readNumEntry( "Rot", -1 ) ) == -1 ) 175 if ( ( rot = config.readNumEntry( "Rot", -1 ) ) == -1 )
176 rot = ODevice::inst ( )-> rotation ( ) * 90; 176 rot = ODevice::inst ( )-> rotation ( ) * 90;
177 177
178 setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(rot), 1); 178 setenv("QWS_DISPLAY", QString("Transformed:Rot%1:0").arg(rot), 1);
179 QPEApplication::defaultRotation ( ); /* to ensure deforient matches reality */ 179 QPEApplication::defaultRotation ( ); /* to ensure deforient matches reality */
180 } 180 }
181} 181}
182 182
183static void initKeyboard() 183static void initKeyboard()
184{ 184{
185 Config config("qpe"); 185 Config config("qpe");
186 186
187 config.setGroup( "Keyboard" ); 187 config.setGroup( "Keyboard" );
188 188
189 int ard = config.readNumEntry( "RepeatDelay" ); 189 int ard = config.readNumEntry( "RepeatDelay" );
190 int arp = config.readNumEntry( "RepeatPeriod" ); 190 int arp = config.readNumEntry( "RepeatPeriod" );
191 if ( ard > 0 && arp > 0 ) 191 if ( ard > 0 && arp > 0 )
192 qwsSetKeyboardAutoRepeat( ard, arp ); 192 qwsSetKeyboardAutoRepeat( ard, arp );
193 193
194 QString layout = config.readEntry( "Layout", "us101" ); 194 QString layout = config.readEntry( "Layout", "us101" );
195 Server::setKeyboardLayout( layout ); 195 Server::setKeyboardLayout( layout );
196} 196}
197 197
198static bool firstUse() 198static bool firstUse()
199{ 199{
200 bool needFirstUse = FALSE; 200 bool needFirstUse = FALSE;
201 if ( QWSServer::mouseHandler() && 201 if ( QWSServer::mouseHandler() &&
202 QWSServer::mouseHandler() ->inherits("QCalibratedMouseHandler") ) { 202 QWSServer::mouseHandler() ->inherits("QCalibratedMouseHandler") ) {
203 if ( !QFile::exists( "/etc/pointercal" ) ) 203 if ( !QFile::exists( "/etc/pointercal" ) )
204 needFirstUse = TRUE; 204 needFirstUse = TRUE;
205 } 205 }
206 206
207 { 207 {
208 Config config( "qpe" ); 208 Config config( "qpe" );
209 config.setGroup( "Startup" ); 209 config.setGroup( "Startup" );
210 needFirstUse |= config.readBoolEntry( "FirstUse", TRUE ); 210 needFirstUse |= config.readBoolEntry( "FirstUse", TRUE );
211 } 211 }
212 212
213 if ( !needFirstUse ) 213 if ( !needFirstUse )
214 return FALSE; 214 return FALSE;
215 215
216 FirstUse *fu = new FirstUse(); 216 FirstUse *fu = new FirstUse();
217 fu->exec(); 217 fu->exec();
218 bool rs = fu->restartNeeded(); 218 bool rs = fu->restartNeeded();
219 delete fu; 219 delete fu;
220 return rs; 220 return rs;
221} 221}
222 222
223int initApplication( int argc, char ** argv ) 223int initApplication( int argc, char ** argv )
224{ 224{
225 cleanup(); 225 cleanup();
226 226
227 227
228 initEnvironment(); 228 initEnvironment();
229 229
230 //Don't flicker at startup: 230 //Don't flicker at startup:
231#ifdef QWS 231#ifdef QWS
232 QWSServer::setDesktopBackground( QImage() ); 232 QWSServer::setDesktopBackground( QImage() );
233#endif 233#endif
234 ServerApplication a( argc, argv, QApplication::GuiServer ); 234 ServerApplication a( argc, argv, QApplication::GuiServer );
235 235
236 refreshTimeZoneConfig(); 236 refreshTimeZoneConfig();
237 237
238 initKeyboard(); 238 initKeyboard();
239 239
240 // Don't use first use under Windows 240 // Don't use first use under Windows
241 if ( firstUse() ) { 241 if ( firstUse() ) {
242 a.restart(); 242 a.restart();
243 return 0; 243 return 0;
244 } 244 }
245 245
246 ODevice::inst ( )-> setSoftSuspend ( true ); 246 ODevice::inst ( )-> setSoftSuspend ( true );
247 247
248 { 248 {
249 QCopEnvelope e("QPE/System", "setBacklight(int)" ); 249 QCopEnvelope e("QPE/System", "setBacklight(int)" );
250 e << -3; // Forced on 250 e << -3; // Forced on
251 } 251 }
252 252
253 AlarmServer::initialize(); 253 AlarmServer::initialize();
254 254
255 255
256 256
257 Server *s = new Server(); 257 Server *s = new Server();
258 258
259 (void)new SysFileMonitor(s); 259 (void)new SysFileMonitor(s);
260#ifdef QWS 260#ifdef QWS
261 Network::createServer(s); 261 Network::createServer(s);
262#endif 262#endif
263 263
264 s->show(); 264 s->show();
265 265
266 /* THE ARM rtc has problem holdings the time on reset */ 266 /* THE ARM rtc has problem holdings the time on reset */
267 if ( QDate::currentDate ( ). year ( ) < 2000 ) { 267 if ( QDate::currentDate ( ). year ( ) < 2000 ) {
268 if ( QMessageBox::information ( 0, ServerApplication::tr( "Information" ), ServerApplication::tr( "<p>The system date doesn't seem to be valid.\n(%1)</p><p>Do you want to correct the clock ?</p>" ). arg( TimeString::dateString ( QDate::currentDate ( ))), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) { 268 if ( QMessageBox::information ( 0, ServerApplication::tr( "Information" ), ServerApplication::tr( "<p>The system date doesn't seem to be valid.\n(%1)</p><p>Do you want to correct the clock ?</p>" ). arg( TimeString::dateString ( QDate::currentDate ( ))), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) {
269 QCopEnvelope e ( "QPE/Application/systemtime", "setDocument(QString)" ); 269 QCopEnvelope e ( "QPE/Application/systemtime", "setDocument(QString)" );
270 e << QString ( ); 270 e << QString ( );
271 } 271 }
272 } 272 }
273 273
274 int rv = a.exec(); 274 int rv = a.exec();
275 275
276 qDebug("exiting..."); 276 qDebug("exiting...");
277 delete s; 277 delete s;
278 278
279#ifndef Q_OS_MACX
279 ODevice::inst()->setSoftSuspend( false ); 280 ODevice::inst()->setSoftSuspend( false );
281#endif
280 282
281 return rv; 283 return rv;
282} 284}
283 285
284static const char *pidfile_path = "/var/run/opie.pid"; 286static const char *pidfile_path = "/var/run/opie.pid";
285 287
286void create_pidfile ( ) 288void create_pidfile ( )
287{ 289{
288 FILE *f; 290 FILE *f;
289 291
290 if (( f = ::fopen ( pidfile_path, "w" ))) { 292 if (( f = ::fopen ( pidfile_path, "w" ))) {
291 ::fprintf ( f, "%d", getpid ( )); 293 ::fprintf ( f, "%d", getpid ( ));
292 ::fclose ( f ); 294 ::fclose ( f );
293 } 295 }
294} 296}
295 297
296void remove_pidfile ( ) 298void remove_pidfile ( )
297{ 299{
298 ::unlink ( pidfile_path ); 300 ::unlink ( pidfile_path );
299} 301}
300 302
301void handle_sigterm ( int /* sig */ ) 303void handle_sigterm ( int /* sig */ )
302{ 304{
303 if ( qApp ) 305 if ( qApp )
304 qApp-> quit ( ); 306 qApp-> quit ( );
305} 307}
306 308
307#ifndef Q_OS_WIN32 309#ifndef Q_OS_WIN32
308int main( int argc, char ** argv ) 310int main( int argc, char ** argv )
309{ 311{
310 312
311 ::signal ( SIGCHLD, SIG_IGN ); 313 ::signal ( SIGCHLD, SIG_IGN );
312 314
313 ::signal ( SIGTERM, handle_sigterm ); 315 ::signal ( SIGTERM, handle_sigterm );
314 ::signal ( SIGINT, handle_sigterm ); 316 ::signal ( SIGINT, handle_sigterm );
315 317
316 ::setsid ( ); 318 ::setsid ( );
317 ::setpgid ( 0, 0 ); 319 ::setpgid ( 0, 0 );
318 320
319 ::atexit ( remove_pidfile ); 321 ::atexit ( remove_pidfile );
320 create_pidfile ( ); 322 create_pidfile ( );
321 323
322 int retVal = initApplication( argc, argv ); 324 int retVal = initApplication( argc, argv );
323 325
324 // Have we been asked to restart? 326 // Have we been asked to restart?
325 if ( ServerApplication::doRestart ) { 327 if ( ServerApplication::doRestart ) {
326 for ( int fd = 3; fd < 100; fd++ ) 328 for ( int fd = 3; fd < 100; fd++ )
327 close( fd ); 329 close( fd );
328 330
329 execl( (QPEApplication::qpeDir()+"bin/qpe").latin1(), "qpe", 0 ); 331 execl( (QPEApplication::qpeDir()+"bin/qpe").latin1(), "qpe", 0 );
330 } 332 }
331 333
332 // Kill them. Kill them all. 334 // Kill them. Kill them all.
333 ::kill ( 0, SIGTERM ); 335 ::kill ( 0, SIGTERM );
334 ::sleep ( 1 ); 336 ::sleep ( 1 );
335 ::kill ( 0, SIGKILL ); 337 ::kill ( 0, SIGKILL );
336 338
337 return retVal; 339 return retVal;
338} 340}
339#else 341#else
340 342
341int main( int argc, char ** argv ) 343int main( int argc, char ** argv )
342{ 344{
343 int retVal = initApplication( argc, argv ); 345 int retVal = initApplication( argc, argv );
344 346
345 if ( DesktopApplication::doRestart ) { 347 if ( DesktopApplication::doRestart ) {
346 qDebug("Trying to restart"); 348 qDebug("Trying to restart");
347 execl( (QPEApplication::qpeDir()+"bin\\qpe").latin1(), "qpe", 0 ); 349 execl( (QPEApplication::qpeDir()+"bin\\qpe").latin1(), "qpe", 0 );
348 } 350 }
349 351
350 return retVal; 352 return retVal;
351} 353}
352 354
353#endif 355#endif
354 356
diff --git a/core/launcher/packageslave.cpp b/core/launcher/packageslave.cpp
index 4f149a5..bf34368 100644
--- a/core/launcher/packageslave.cpp
+++ b/core/launcher/packageslave.cpp
@@ -1,97 +1,341 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "packageslave.h" 21#include "packageslave.h"
22#include <qtopia/qprocess.h>
22 23
23#include <qpe/process.h> 24#ifdef Q_WS_QWS
24#include <qpe/qcopenvelope_qws.h> 25#include <qtopia/qcopenvelope_qws.h>
26#endif
25 27
26#include <qdatastream.h> 28#include <qdatastream.h>
29#ifdef Q_WS_QWS
27#include <qcopchannel_qws.h> 30#include <qcopchannel_qws.h>
31#endif
28 32
33#include <qtextstream.h>
34#include <qdir.h>
35
36#include <stdlib.h>
37#include <sys/stat.h> // mkdir()
38
39#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
29#include <unistd.h> 40#include <unistd.h>
41#include <sys/vfs.h>
42#include <mntent.h>
43#elif defined(Q_OS_WIN32)
44#include <windows.h>
45#include <winbase.h>
46#elif defined(Q_OS_MACX)
47#include <unistd.h>
48#endif
49
30 50
31PackageSlave::PackageSlave( QObject *parent, char* name ) 51PackageHandler::PackageHandler( QObject *parent, char* name )
32 : QObject( parent, name ), packageChannel( 0 ) 52 : QObject( parent, name ), packageChannel( 0 ), currentProcess( 0 ), mNoSpaceLeft( FALSE )
33{ 53{
34 // setup qcop channel 54 // setup qcop channel
55#ifndef QT_NO_COP
35 packageChannel = new QCopChannel( "QPE/Package", this ); 56 packageChannel = new QCopChannel( "QPE/Package", this );
36 connect( packageChannel, SIGNAL( received(const QCString &, const QByteArray &) ), 57 connect( packageChannel, SIGNAL( received(const QCString &, const QByteArray &) ),
37 this, SLOT( qcopMessage( const QCString &, const QByteArray &) ) ); 58 this, SLOT( qcopMessage( const QCString &, const QByteArray &) ) );
59#endif
38} 60}
39 61
40void PackageSlave::qcopMessage( const QCString &msg, const QByteArray &data ) 62void PackageHandler::qcopMessage( const QCString &msg, const QByteArray &data )
41{ 63{
42 QDataStream stream( data, IO_ReadOnly ); 64 QDataStream stream( data, IO_ReadOnly );
43 65
44 if ( msg == "installPackage(QString)" ) { 66 if ( msg == "installPackage(QString)" ) {
45 QString file; 67 QString file;
46 stream >> file; 68 stream >> file;
47 installPackage( file ); 69 installPackage( file );
48 } 70 } else if ( msg == "removePackage(QString)" ) {
49 else if ( msg == "removePackage(QString)" ) {
50 QString file; 71 QString file;
51 stream >> file; 72 stream >> file;
52 removePackage( file ); 73 removePackage( file );
74 } else if ( msg == "addPackageFiles(QString,QString)" ) {
75 QString location, listfile;
76 stream >> location >> listfile;
77 addPackageFiles( location, listfile);
78 } else if ( msg == "addPackages(QString)" ) {
79 QString location;
80 stream >> location;
81 addPackages( location );
82 } else if ( msg == "cleanupPackageFiles(QString)" ) {
83 QString listfile;
84 stream >> listfile;
85 cleanupPackageFiles( listfile );
86 } else if ( msg == "cleanupPackages(QString)" ) {
87 QString location;
88 stream >> location;
89 cleanupPackages( location );
90 } else if ( msg == "prepareInstall(QString,QString)" ) {
91 QString size, path;
92 stream >> size;
93 stream >> path;
94 prepareInstall( size, path );
53 } 95 }
54} 96}
55 97
56void PackageSlave::installPackage( const QString &package ) 98void PackageHandler::installPackage( const QString &package )
57{ 99{
58 Process proc( QStringList() << "ipkg" << "install" << package ); 100 if ( mNoSpaceLeft ) {
101 mNoSpaceLeft = FALSE;
102 // Don't emit that for now, I still couldn't test it (Wener)
103 //sendReply( "installFailed(QString)", package );
104 //return;
105 }
106
107 currentProcess = new QProcess( QStringList() << "ipkg" << "install" << package ); // No tr
108 connect( currentProcess, SIGNAL( processExited() ), SLOT( iProcessExited() ) );
109 connect( currentProcess, SIGNAL( readyReadStdout() ), SLOT( readyReadStdout() ) );
110 connect( currentProcess, SIGNAL( readyReadStderr() ), SLOT( readyReadStderr() ) );
111 currentPackage = package;
59 112
113 currentProcessError="";
60 sendReply( "installStarted(QString)", package ); 114 sendReply( "installStarted(QString)", package );
115 currentProcess->start();
116}
117
118void PackageHandler::removePackage( const QString &package )
119{
120 currentProcess = new QProcess( QStringList() << "ipkg" << "remove" << package ); // No tr
121 connect( currentProcess, SIGNAL( processExited() ), SLOT( rmProcessExited() ) );
122 connect( currentProcess, SIGNAL( readyReadStdout() ), SLOT( readyReadStdout() ) );
123 connect( currentProcess, SIGNAL( readyReadStderr() ), SLOT( readyReadStderr() ) );
124 currentPackage = package;
125
126 currentProcessError="";
127 sendReply( "removeStarted(QString)", package );
128 currentProcess->start();
129}
130
131void PackageHandler::sendReply( const QCString& msg, const QString& arg )
132{
133#ifndef QT_NO_COP
134 QCopEnvelope e( "QPE/Desktop", msg );
135 e << arg;
136#endif
137}
138
139void PackageHandler::addPackageFiles( const QString &location,
140 const QString &listfile )
141{
142 QFile f(listfile);
143#ifndef Q_OS_WIN32
144 //make a copy so we can remove the symlinks later
145 mkdir( ("/usr/lib/ipkg/info/"+location).ascii(), 0777 );
146 system(("cp " + f.name() + " /usr/lib/ipkg/info/"+location).ascii());
147#else
148 QDir d;
149 //#### revise
150 qDebug("Copy file at %s: %s", __FILE__, __LINE__ );
151 d.mkdir(("/usr/lib/ipkg/info/" + location).ascii());
152 system(("copy " + f.name() + " /usr/lib/ipkg/info/"+location).ascii());
153#endif
154
155
156 if ( f.open(IO_ReadOnly) ) {
157 QTextStream ts(&f);
158
159 QString s;
160 while ( !ts.eof() ) { // until end of file...
161 s = ts.readLine(); // line of text excluding '\n'
162 // for s, do link/mkdir.
163 if ( s.right(1) == "/" ) {
164 qDebug("do mkdir for %s", s.ascii());
165#ifndef Q_OS_WIN32
166 mkdir( s.ascii(), 0777 );
167 //possible optimization: symlink directories
168 //that don't exist already. -- Risky.
169#else
170 d.mkdir( s.ascii());
171#endif
172
173 } else {
174#ifndef Q_OS_WIN32
175 qDebug("do symlink for %s", s.ascii());
176 symlink( (location + s).ascii(), s.ascii() );
177#else
178 qDebug("Copy file instead of a symlink for WIN32");
179 if (!CopyFile((TCHAR*)qt_winTchar((location + s), TRUE), (TCHAR*)qt_winTchar(s, TRUE), FALSE))
180 qWarning("Unable to create symlinkfor %s",
181 (location + s).ascii());
182#endif
183 }
184 }
185 f.close();
186 }
187}
61 188
62 QString output; 189void PackageHandler::addPackages( const QString &location )
63 if ( proc.exec( "", output ) ) { 190{
64 sendReply( "installDone(QString)", package ); 191 // get list of *.list in location/usr/lib/ipkg/info/*.list
192 QDir dir(location + "/usr/lib/ipkg/info", "*.list", // No tr
193 QDir::Name, QDir::Files);
194 if ( !dir.exists() )
195 return;
196
197 QStringList packages = dir.entryList();
198 for ( QStringList::Iterator it = packages.begin();
199 it != packages.end(); ++it ) {
200 addPackageFiles( location, *it );
65 } 201 }
202}
203
204
205void PackageHandler::cleanupPackageFiles( const QString &listfile )
206{
207 QFile f(listfile);
208
209 if ( f.open(IO_ReadOnly) ) {
210 QTextStream ts(&f);
211
212 QString s;
213 while ( !ts.eof() ) { // until end of file...
214 s = ts.readLine(); // line of text excluding '\n'
215 // for s, do link/mkdir.
216 if ( s.right(1) == "/" ) {
217 //should rmdir if empty, after all files have been removed
218 } else {
219#ifndef Q_OS_WIN32
220 qDebug("remove symlink for %s", s.ascii());
221 //check if it is a symlink first (don't remove /etc/passwd...)
222 char buf[10]; //we don't care about the contents
223 if ( ::readlink( s.ascii(),buf, 10 >= 0 ) )
224 ::unlink( s.ascii() );
225 #else
226 // ### revise
227 qWarning("Unable to remove symlink %s:%s", __FILE__, __LINE__);
228#endif
229 }
230 }
231 f.close();
232
233 //remove the list file
234 ::unlink( listfile.ascii() );
235
236 }
237}
238
239void PackageHandler::cleanupPackages( const QString &location )
240{
241 // get list of *.list in location/usr/lib/ipkg/info/*.list
242 QDir dir( "/usr/lib/ipkg/info/"+location, "*.list", // No tr
243 QDir::Name, QDir::Files);
244 if ( !dir.exists() )
245 return;
246
247 QStringList packages = dir.entryList();
248 for ( QStringList::Iterator it = packages.begin();
249 it != packages.end(); ++it ) {
250 cleanupPackageFiles( *it );
251 }
252
253 //remove the backup directory
254 //###
255}
256
257void PackageHandler::prepareInstall( const QString& size, const QString& path )
258{
259 // Check whether there will be enough space to install the next package.
260 bool ok;
261 unsigned int s = size.toUInt( &ok );
262
263 if ( !ok )
264 return;
265
266 // Shamelessly stolen from the sysinfo application (Werner)
267#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
268 struct statfs fs;
269 if ( statfs( path.latin1(), &fs ) == 0 )
270 if ( s > fs.f_bsize * fs.f_bavail ) {
271 //qDebug("############### Not enough space left ###############");
272 mNoSpaceLeft = TRUE;
273 }
274#endif
275}
276
277void PackageHandler::iProcessExited()
278{
279 if ( currentProcess->normalExit() && currentProcess->exitStatus() == 0 )
280 sendReply( "installDone(QString)", currentPackage );
66 else { 281 else {
67 sendReply( "installFailed(QString)", package ); 282#ifndef QT_NO_COP
283 QCopEnvelope e( "QPE/Desktop", "installFailed(QString,int,QString)" );
284 e << currentPackage << currentProcess->exitStatus()
285 << currentProcessError;
286#endif
68 } 287 }
288
289 delete currentProcess;
290 currentProcess = 0;
291
292#ifndef QT_NO_COP
69 QCopEnvelope e("QPE/System", "linkChanged(QString)"); 293 QCopEnvelope e("QPE/System", "linkChanged(QString)");
70 QString lf = QString::null; 294 QString lf = QString::null;
71 e << lf; 295 e << lf;
72 unlink( package ); 296#endif
297 unlink( currentPackage );
73} 298}
74 299
75void PackageSlave::removePackage( const QString &package ) 300void PackageHandler::rmProcessExited()
76{ 301{
77 Process proc( QStringList() << "ipkg" << "remove" << package ); 302 if ( currentProcess->normalExit() && currentProcess->exitStatus() == 0 )
303 sendReply( "removeDone(QString)", currentPackage );
304 else
305 sendReply( "removeFailed(QString)", currentPackage );
78 306
79 sendReply( "removeStarted(QString)", package ); 307#ifndef QT_NO_COP
80
81 QString output;
82 if ( proc.exec( "", output ) ) {
83 sendReply( "removeDone(QString)", package );
84 }
85 else {
86 sendReply( "removeFailed(QString)", package );
87 }
88 QCopEnvelope e("QPE/System", "linkChanged(QString)"); 308 QCopEnvelope e("QPE/System", "linkChanged(QString)");
89 QString lf = QString::null; 309 QString lf = QString::null;
90 e << lf; 310 e << lf;
311#endif
91} 312}
92 313
93void PackageSlave::sendReply( const QCString& msg, const QString& arg ) 314void PackageHandler::readyReadStdout()
94{ 315{
95 QCopEnvelope e( "QPE/Desktop", msg ); 316 while ( currentProcess->canReadLineStdout() ) {
96 e << arg; 317 QString line = currentProcess->readLineStdout();
318 currentProcessError.append("OUT:"+line);
319 if ( line.contains( "Unpacking" ) ) // No tr
320 sendReply( "installStep(QString)", "one" ); // No tr
321 else if ( line.contains( "Configuring" ) ) // No tr
322 sendReply( "installStep(QString)", "two" ); // No tr
323 }
324}
325
326void PackageHandler::readyReadStderr()
327{
328 while ( currentProcess->canReadLineStderr() ) {
329 QString line = currentProcess->readLineStderr();
330 currentProcessError.append("ERR:"+line);
331 }
332}
333
334void PackageHandler::redoPackages()
335{
336 //get list of filesystems
337
338 //call cleanupPackages for the ones that have disappeared
339
340 //call addPackageFiles for the new ones
97} 341}
diff --git a/core/launcher/qprocess_unix.cpp b/core/launcher/qprocess_unix.cpp
index a07bf64..19a8c93 100644
--- a/core/launcher/qprocess_unix.cpp
+++ b/core/launcher/qprocess_unix.cpp
@@ -1,244 +1,247 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21//#include "qplatformdefs.h" 21//#include "qplatformdefs.h"
22 22
23// Solaris redefines connect -> __xnet_connect with _XOPEN_SOURCE_EXTENDED. 23// Solaris redefines connect -> __xnet_connect with _XOPEN_SOURCE_EXTENDED.
24#if defined(connect) 24#if defined(connect)
25#undef connect 25#undef connect
26#endif 26#endif
27 27
28#include "qprocess.h" 28#include "qprocess.h"
29 29
30#ifndef QT_NO_PROCESS 30#ifndef QT_NO_PROCESS
31 31
32#include "qapplication.h" 32#include "qapplication.h"
33#include "qqueue.h" 33#include "qqueue.h"
34#include "qlist.h" 34#include "qlist.h"
35#include "qsocketnotifier.h" 35#include "qsocketnotifier.h"
36#include "qtimer.h" 36#include "qtimer.h"
37#include "qregexp.h" 37#include "qregexp.h"
38 38
39#include "qcleanuphandler_p.h" 39#include "qcleanuphandler_p.h"
40 40
41#include <stdlib.h> 41#include <stdlib.h>
42 42
43// ### FOR Qt 2.3 compat 43// ### FOR Qt 2.3 compat
44#include <unistd.h> 44#include <unistd.h>
45#include <signal.h> 45#include <signal.h>
46#include <sys/socket.h> 46#include <sys/socket.h>
47#include <sys/ioctl.h> 47#include <sys/ioctl.h>
48#include <sys/wait.h> 48#include <sys/wait.h>
49#include <sys/fcntl.h> 49#include <sys/fcntl.h>
50 50
51#include <errno.h> 51#include <errno.h>
52 52
53#ifdef Q_OS_MACX
54#include <sys/time.h>
55#endif
53#include <sys/resource.h> 56#include <sys/resource.h>
54 57
55#ifdef __MIPSEL__ 58#ifdef __MIPSEL__
56# ifndef SOCK_DGRAM 59# ifndef SOCK_DGRAM
57# define SOCK_DGRAM 1 60# define SOCK_DGRAM 1
58# endif 61# endif
59# ifndef SOCK_STREAM 62# ifndef SOCK_STREAM
60# define SOCK_STREAM 2 63# define SOCK_STREAM 2
61# endif 64# endif
62#endif 65#endif
63 66
64//#define QT_QPROCESS_DEBUG 67//#define QT_QPROCESS_DEBUG
65 68
66 69
67#ifdef Q_C_CALLBACKS 70#ifdef Q_C_CALLBACKS
68extern "C" { 71extern "C" {
69#endif // Q_C_CALLBACKS 72#endif // Q_C_CALLBACKS
70 73
71#define QT_SIGNAL_RETTYPE void 74#define QT_SIGNAL_RETTYPE void
72#define QT_SIGNAL_ARGS int 75#define QT_SIGNAL_ARGS int
73#define QT_SIGNAL_IGNORE SIG_IGN 76#define QT_SIGNAL_IGNORE SIG_IGN
74 77
75 QT_SIGNAL_RETTYPE qt_C_sigchldHnd(QT_SIGNAL_ARGS); 78 QT_SIGNAL_RETTYPE qt_C_sigchldHnd(QT_SIGNAL_ARGS);
76 QT_SIGNAL_RETTYPE qt_C_sigpipeHnd(QT_SIGNAL_ARGS); 79 QT_SIGNAL_RETTYPE qt_C_sigpipeHnd(QT_SIGNAL_ARGS);
77 80
78#ifdef Q_C_CALLBACKS 81#ifdef Q_C_CALLBACKS
79} 82}
80#endif // Q_C_CALLBACKS 83#endif // Q_C_CALLBACKS
81 84
82 85
83class QProc; 86class QProc;
84class QProcessManager; 87class QProcessManager;
85class QProcessPrivate 88class QProcessPrivate
86{ 89{
87public: 90public:
88 QProcessPrivate(); 91 QProcessPrivate();
89 ~QProcessPrivate(); 92 ~QProcessPrivate();
90 93
91 void closeOpenSocketsForChild(); 94 void closeOpenSocketsForChild();
92 void newProc( pid_t pid, QProcess *process ); 95 void newProc( pid_t pid, QProcess *process );
93 96
94 QByteArray bufStdout; 97 QByteArray bufStdout;
95 QByteArray bufStderr; 98 QByteArray bufStderr;
96 99
97 QQueue<QByteArray> stdinBuf; 100 QQueue<QByteArray> stdinBuf;
98 101
99 QSocketNotifier *notifierStdin; 102 QSocketNotifier *notifierStdin;
100 QSocketNotifier *notifierStdout; 103 QSocketNotifier *notifierStdout;
101 QSocketNotifier *notifierStderr; 104 QSocketNotifier *notifierStderr;
102 105
103 ssize_t stdinBufRead; 106 ssize_t stdinBufRead;
104 QProc *proc; 107 QProc *proc;
105 108
106 bool exitValuesCalculated; 109 bool exitValuesCalculated;
107 bool socketReadCalled; 110 bool socketReadCalled;
108 111
109 static QProcessManager *procManager; 112 static QProcessManager *procManager;
110}; 113};
111 114
112 115
113/*********************************************************************** 116/***********************************************************************
114 * 117 *
115 * QProc 118 * QProc
116 * 119 *
117 **********************************************************************/ 120 **********************************************************************/
118/* 121/*
119 The class QProcess does not necessarily map exactly to the running 122 The class QProcess does not necessarily map exactly to the running
120 child processes: if the process is finished, the QProcess class may still be 123 child processes: if the process is finished, the QProcess class may still be
121 there; furthermore a user can use QProcess to start more than one process. 124 there; furthermore a user can use QProcess to start more than one process.
122 125
123 The helper-class QProc has the semantics that one instance of this class maps 126 The helper-class QProc has the semantics that one instance of this class maps
124 directly to a running child process. 127 directly to a running child process.
125*/ 128*/
126class QProc 129class QProc
127{ 130{
128public: 131public:
129 QProc( pid_t p, QProcess *proc=0 ) : pid(p), process(proc) 132 QProc( pid_t p, QProcess *proc=0 ) : pid(p), process(proc)
130 { 133 {
131#if defined(QT_QPROCESS_DEBUG) 134#if defined(QT_QPROCESS_DEBUG)
132 qDebug( "QProc: Constructor for pid %d and QProcess %p", pid, process ); 135 qDebug( "QProc: Constructor for pid %d and QProcess %p", pid, process );
133#endif 136#endif
134 socketStdin = 0; 137 socketStdin = 0;
135 socketStdout = 0; 138 socketStdout = 0;
136 socketStderr = 0; 139 socketStderr = 0;
137 } 140 }
138 ~QProc() 141 ~QProc()
139 { 142 {
140#if defined(QT_QPROCESS_DEBUG) 143#if defined(QT_QPROCESS_DEBUG)
141 qDebug( "QProc: Destructor for pid %d and QProcess %p", pid, process ); 144 qDebug( "QProc: Destructor for pid %d and QProcess %p", pid, process );
142#endif 145#endif
143 if ( process != 0 ) { 146 if ( process != 0 ) {
144 if ( process->d->notifierStdin ) 147 if ( process->d->notifierStdin )
145 process->d->notifierStdin->setEnabled( FALSE ); 148 process->d->notifierStdin->setEnabled( FALSE );
146 if ( process->d->notifierStdout ) 149 if ( process->d->notifierStdout )
147 process->d->notifierStdout->setEnabled( FALSE ); 150 process->d->notifierStdout->setEnabled( FALSE );
148 if ( process->d->notifierStderr ) 151 if ( process->d->notifierStderr )
149 process->d->notifierStderr->setEnabled( FALSE ); 152 process->d->notifierStderr->setEnabled( FALSE );
150 process->d->proc = 0; 153 process->d->proc = 0;
151 } 154 }
152 if( socketStdin != 0 ) 155 if( socketStdin != 0 )
153 ::close( socketStdin ); 156 ::close( socketStdin );
154 // ### close these sockets even on parent exit or is it better only on 157 // ### close these sockets even on parent exit or is it better only on
155 // sigchld (but what do I have to do with them on exit then)? 158 // sigchld (but what do I have to do with them on exit then)?
156 if( socketStdout != 0 ) 159 if( socketStdout != 0 )
157 ::close( socketStdout ); 160 ::close( socketStdout );
158 if( socketStderr != 0 ) 161 if( socketStderr != 0 )
159 ::close( socketStderr ); 162 ::close( socketStderr );
160 } 163 }
161 164
162 pid_t pid; 165 pid_t pid;
163 int socketStdin; 166 int socketStdin;
164 int socketStdout; 167 int socketStdout;
165 int socketStderr; 168 int socketStderr;
166 QProcess *process; 169 QProcess *process;
167}; 170};
168 171
169/*********************************************************************** 172/***********************************************************************
170 * 173 *
171 * QProcessManager 174 * QProcessManager
172 * 175 *
173 **********************************************************************/ 176 **********************************************************************/
174class QProcessManager : public QObject 177class QProcessManager : public QObject
175{ 178{
176 Q_OBJECT 179 Q_OBJECT
177 180
178public: 181public:
179 QProcessManager(); 182 QProcessManager();
180 ~QProcessManager(); 183 ~QProcessManager();
181 184
182 void append( QProc *p ); 185 void append( QProc *p );
183 void remove( QProc *p ); 186 void remove( QProc *p );
184 187
185 void cleanup(); 188 void cleanup();
186 189
187public slots: 190public slots:
188 void removeMe(); 191 void removeMe();
189 void sigchldHnd( int ); 192 void sigchldHnd( int );
190 193
191public: 194public:
192 struct sigaction oldactChld; 195 struct sigaction oldactChld;
193 struct sigaction oldactPipe; 196 struct sigaction oldactPipe;
194 QList<QProc> *procList; 197 QList<QProc> *procList;
195 int sigchldFd[2]; 198 int sigchldFd[2];
196}; 199};
197 200
198QCleanupHandler<QProcessManager> qprocess_cleanup_procmanager; 201QCleanupHandler<QProcessManager> qprocess_cleanup_procmanager;
199 202
200QProcessManager::QProcessManager() 203QProcessManager::QProcessManager()
201{ 204{
202 procList = new QList<QProc>; 205 procList = new QList<QProc>;
203 procList->setAutoDelete( TRUE ); 206 procList->setAutoDelete( TRUE );
204 207
205 // The SIGCHLD handler writes to a socket to tell the manager that 208 // The SIGCHLD handler writes to a socket to tell the manager that
206 // something happened. This is done to get the processing in sync with the 209 // something happened. This is done to get the processing in sync with the
207 // event reporting. 210 // event reporting.
208 if ( ::socketpair( AF_UNIX, SOCK_STREAM, 0, sigchldFd ) ) { 211 if ( ::socketpair( AF_UNIX, SOCK_STREAM, 0, sigchldFd ) ) {
209 sigchldFd[0] = 0; 212 sigchldFd[0] = 0;
210 sigchldFd[1] = 0; 213 sigchldFd[1] = 0;
211 } else { 214 } else {
212#if defined(QT_QPROCESS_DEBUG) 215#if defined(QT_QPROCESS_DEBUG)
213 qDebug( "QProcessManager: install socket notifier (%d)", sigchldFd[1] ); 216 qDebug( "QProcessManager: install socket notifier (%d)", sigchldFd[1] );
214#endif 217#endif
215 QSocketNotifier *sn = new QSocketNotifier( sigchldFd[1], 218 QSocketNotifier *sn = new QSocketNotifier( sigchldFd[1],
216 QSocketNotifier::Read, this ); 219 QSocketNotifier::Read, this );
217 connect( sn, SIGNAL(activated(int)), 220 connect( sn, SIGNAL(activated(int)),
218 this, SLOT(sigchldHnd(int)) ); 221 this, SLOT(sigchldHnd(int)) );
219 sn->setEnabled( TRUE ); 222 sn->setEnabled( TRUE );
220 } 223 }
221 224
222 // install a SIGCHLD handler and ignore SIGPIPE 225 // install a SIGCHLD handler and ignore SIGPIPE
223 struct sigaction act; 226 struct sigaction act;
224 227
225#if defined(QT_QPROCESS_DEBUG) 228#if defined(QT_QPROCESS_DEBUG)
226 qDebug( "QProcessManager: install a SIGCHLD handler" ); 229 qDebug( "QProcessManager: install a SIGCHLD handler" );
227#endif 230#endif
228 act.sa_handler = qt_C_sigchldHnd; 231 act.sa_handler = qt_C_sigchldHnd;
229 sigemptyset( &(act.sa_mask) ); 232 sigemptyset( &(act.sa_mask) );
230 sigaddset( &(act.sa_mask), SIGCHLD ); 233 sigaddset( &(act.sa_mask), SIGCHLD );
231 act.sa_flags = SA_NOCLDSTOP; 234 act.sa_flags = SA_NOCLDSTOP;
232#if defined(SA_RESTART) 235#if defined(SA_RESTART)
233 act.sa_flags |= SA_RESTART; 236 act.sa_flags |= SA_RESTART;
234#endif 237#endif
235 if ( sigaction( SIGCHLD, &act, &oldactChld ) != 0 ) 238 if ( sigaction( SIGCHLD, &act, &oldactChld ) != 0 )
236 qWarning( "Error installing SIGCHLD handler" ); 239 qWarning( "Error installing SIGCHLD handler" );
237 240
238#if defined(QT_QPROCESS_DEBUG) 241#if defined(QT_QPROCESS_DEBUG)
239 qDebug( "QProcessManager: install a SIGPIPE handler (SIG_IGN)" ); 242 qDebug( "QProcessManager: install a SIGPIPE handler (SIG_IGN)" );
240#endif 243#endif
241 /* 244 /*
242 Using qt_C_sigpipeHnd rather than SIG_IGN is a workaround 245 Using qt_C_sigpipeHnd rather than SIG_IGN is a workaround
243 for a strange problem where GNU tar (called by backuprestore) 246 for a strange problem where GNU tar (called by backuprestore)
244 would hang on filesystem-full. Strangely, the qt_C_sigpipeHnd 247 would hang on filesystem-full. Strangely, the qt_C_sigpipeHnd
diff --git a/core/launcher/server.pro b/core/launcher/server.pro
index 93baeb4..0513536 100644
--- a/core/launcher/server.pro
+++ b/core/launcher/server.pro
@@ -1,120 +1,125 @@
1 TEMPLATE= app 1 TEMPLATE= app
2 2
3 CONFIG += qtopia warn_on release 3 CONFIG += qtopia warn_on release
4 4
5 DESTDIR = $$(OPIEDIR)/bin 5 DESTDIR = $$(OPIEDIR)/bin
6 6
7 HEADERS += server.h \ 7 HEADERS += server.h \
8 serverinterface.h \ 8 serverinterface.h \
9 launchertab.h \ 9 launchertab.h \
10 documentlist.h \ 10 documentlist.h \
11 appicons.h \ 11 appicons.h \
12 taskbar.h \ 12 taskbar.h \
13 runningappbar.h \ 13 runningappbar.h \
14 applauncher.h \ 14 applauncher.h \
15 stabmon.h \ 15 stabmon.h \
16 inputmethods.h \ 16 inputmethods.h \
17 systray.h \ 17 systray.h \
18 wait.h \ 18 wait.h \
19 shutdownimpl.h \ 19 shutdownimpl.h \
20 launcher.h \ 20 launcher.h \
21 launcherview.h \ 21 launcherview.h \
22 $$(OPIEDIR)/core/apps/calibrate/calibrate.h \ 22 $$(OPIEDIR)/core/apps/calibrate/calibrate.h \
23 startmenu.h \ 23 startmenu.h \
24 transferserver.h \ 24 transferserver.h \
25 qcopbridge.h \ 25 qcopbridge.h \
26 packageslave.h \ 26 packageslave.h \
27 irserver.h \ 27 irserver.h \
28 firstuse.h \ 28 firstuse.h \
29 $$(OPIEDIR)/rsync/buf.h \ 29 $$(OPIEDIR)/rsync/buf.h \
30 $$(OPIEDIR)/rsync/checksum.h \ 30 $$(OPIEDIR)/rsync/checksum.h \
31 $$(OPIEDIR)/rsync/command.h \ 31 $$(OPIEDIR)/rsync/command.h \
32 $$(OPIEDIR)/rsync/emit.h \ 32 $$(OPIEDIR)/rsync/emit.h \
33 $$(OPIEDIR)/rsync/job.h \ 33 $$(OPIEDIR)/rsync/job.h \
34 $$(OPIEDIR)/rsync/netint.h \ 34 $$(OPIEDIR)/rsync/netint.h \
35 $$(OPIEDIR)/rsync/protocol.h \ 35 $$(OPIEDIR)/rsync/protocol.h \
36 $$(OPIEDIR)/rsync/prototab.h \ 36 $$(OPIEDIR)/rsync/prototab.h \
37 $$(OPIEDIR)/rsync/rsync.h \ 37 $$(OPIEDIR)/rsync/rsync.h \
38 $$(OPIEDIR)/rsync/search.h \ 38 $$(OPIEDIR)/rsync/search.h \
39 $$(OPIEDIR)/rsync/stream.h \ 39 $$(OPIEDIR)/rsync/stream.h \
40 $$(OPIEDIR)/rsync/sumset.h \ 40 $$(OPIEDIR)/rsync/sumset.h \
41 $$(OPIEDIR)/rsync/trace.h \ 41 $$(OPIEDIR)/rsync/trace.h \
42 $$(OPIEDIR)/rsync/types.h \ 42 $$(OPIEDIR)/rsync/types.h \
43 $$(OPIEDIR)/rsync/util.h \ 43 $$(OPIEDIR)/rsync/util.h \
44 $$(OPIEDIR)/rsync/whole.h \ 44 $$(OPIEDIR)/rsync/whole.h \
45 $$(OPIEDIR)/rsync/config_rsync.h \ 45 $$(OPIEDIR)/rsync/config_rsync.h \
46 $$(OPIEDIR)/rsync/qrsync.h \ 46 $$(OPIEDIR)/rsync/qrsync.h \
47 syncdialog.h \ 47 syncdialog.h \
48 serverapp.h \ 48 serverapp.h \
49 launcherglobal.h \ 49 launcherglobal.h \
50 qprocess.h \ 50 qprocess.h \
51 screensaver.h 51 screensaver.h
52 52
53 SOURCES += server.cpp \ 53 SOURCES += server.cpp \
54 serverinterface.cpp \ 54 serverinterface.cpp \
55 launchertab.cpp \ 55 launchertab.cpp \
56 documentlist.cpp \ 56 documentlist.cpp \
57 appicons.cpp \ 57 appicons.cpp \
58 taskbar.cpp \ 58 taskbar.cpp \
59 runningappbar.cpp \ 59 runningappbar.cpp \
60 applauncher.cpp \ 60 applauncher.cpp \
61 stabmon.cpp \ 61 stabmon.cpp \
62 inputmethods.cpp \ 62 inputmethods.cpp \
63 systray.cpp \ 63 systray.cpp \
64 wait.cpp \ 64 wait.cpp \
65 shutdownimpl.cpp \ 65 shutdownimpl.cpp \
66 launcher.cpp \ 66 launcher.cpp \
67 launcherview.cpp \ 67 launcherview.cpp \
68 $$(OPIEDIR)/core/apps/calibrate/calibrate.cpp \ 68 $$(OPIEDIR)/core/apps/calibrate/calibrate.cpp \
69 transferserver.cpp \ 69 transferserver.cpp \
70 packageslave.cpp \ 70 packageslave.cpp \
71 irserver.cpp \ 71 irserver.cpp \
72 qcopbridge.cpp \ 72 qcopbridge.cpp \
73 startmenu.cpp \ 73 startmenu.cpp \
74 main.cpp \ 74 main.cpp \
75 firstuse.cpp \ 75 firstuse.cpp \
76 $$(OPIEDIR)/rsync/base64.c \ 76 $$(OPIEDIR)/rsync/base64.c \
77 $$(OPIEDIR)/rsync/buf.c \ 77 $$(OPIEDIR)/rsync/buf.c \
78 $$(OPIEDIR)/rsync/checksum.c \ 78 $$(OPIEDIR)/rsync/checksum.c \
79 $$(OPIEDIR)/rsync/command.c \ 79 $$(OPIEDIR)/rsync/command.c \
80 $$(OPIEDIR)/rsync/delta.c \ 80 $$(OPIEDIR)/rsync/delta.c \
81 $$(OPIEDIR)/rsync/emit.c \ 81 $$(OPIEDIR)/rsync/emit.c \
82 $$(OPIEDIR)/rsync/hex.c \ 82 $$(OPIEDIR)/rsync/hex.c \
83 $$(OPIEDIR)/rsync/job.c \ 83 $$(OPIEDIR)/rsync/job.c \
84 $$(OPIEDIR)/rsync/mdfour.c \ 84 $$(OPIEDIR)/rsync/mdfour.c \
85 $$(OPIEDIR)/rsync/mksum.c \ 85 $$(OPIEDIR)/rsync/mksum.c \
86 $$(OPIEDIR)/rsync/msg.c \ 86 $$(OPIEDIR)/rsync/msg.c \
87 $$(OPIEDIR)/rsync/netint.c \ 87 $$(OPIEDIR)/rsync/netint.c \
88 $$(OPIEDIR)/rsync/patch.c \ 88 $$(OPIEDIR)/rsync/patch.c \
89 $$(OPIEDIR)/rsync/prototab.c \ 89 $$(OPIEDIR)/rsync/prototab.c \
90 $$(OPIEDIR)/rsync/readsums.c \ 90 $$(OPIEDIR)/rsync/readsums.c \
91 $$(OPIEDIR)/rsync/scoop.c \ 91 $$(OPIEDIR)/rsync/scoop.c \
92 $$(OPIEDIR)/rsync/search.c \ 92 $$(OPIEDIR)/rsync/search.c \
93 $$(OPIEDIR)/rsync/stats.c \ 93 $$(OPIEDIR)/rsync/stats.c \
94 $$(OPIEDIR)/rsync/stream.c \ 94 $$(OPIEDIR)/rsync/stream.c \
95 $$(OPIEDIR)/rsync/sumset.c \ 95 $$(OPIEDIR)/rsync/sumset.c \
96 $$(OPIEDIR)/rsync/trace.c \ 96 $$(OPIEDIR)/rsync/trace.c \
97 $$(OPIEDIR)/rsync/tube.c \ 97 $$(OPIEDIR)/rsync/tube.c \
98 $$(OPIEDIR)/rsync/util.c \ 98 $$(OPIEDIR)/rsync/util.c \
99 $$(OPIEDIR)/rsync/version.c \ 99 $$(OPIEDIR)/rsync/version.c \
100 $$(OPIEDIR)/rsync/whole.c \ 100 $$(OPIEDIR)/rsync/whole.c \
101 $$(OPIEDIR)/rsync/qrsync.cpp \ 101 $$(OPIEDIR)/rsync/qrsync.cpp \
102 syncdialog.cpp \ 102 syncdialog.cpp \
103 serverapp.cpp \ 103 serverapp.cpp \
104 launcherglobal.cpp \ 104 launcherglobal.cpp \
105 qprocess.cpp \ 105 qprocess.cpp \
106 qprocess_unix.cpp \ 106 qprocess_unix.cpp \
107 screensaver.cpp 107 screensaver.cpp
108 108
109 109
110INCLUDEPATH += $(OPIEDIR)/core/apps/calibrate 110INCLUDEPATH += $(OPIEDIR)/core/apps/calibrate
111 DEPENDPATH+= $(OPIEDIR)/core/apps/calibrate 111 DEPENDPATH+= $(OPIEDIR)/core/apps/calibrate
112 112
113INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/rsync 113INCLUDEPATH += $(OPIEDIR)/include $(OPIEDIR)/rsync
114 DEPENDPATH+= $(OPIEDIR)/rsync 114 DEPENDPATH+= $(OPIEDIR)/rsync
115 115
116 TARGET = qpe 116 TARGET = qpe
117 117
118 LIBS+= -lcrypt -lqpe -lopie 118CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX )
119contains( CONFTEST, y ){
120 LIBS += -lqpe -lopie
121}else{
122 LIBS+= -lcrypt -lqpe -lopie
123}
119 124
120include ( $(OPIEDIR)/include.pro ) 125include ( $(OPIEDIR)/include.pro )
diff --git a/core/launcher/startmenu.cpp b/core/launcher/startmenu.cpp
index 014418d..08ae885 100644
--- a/core/launcher/startmenu.cpp
+++ b/core/launcher/startmenu.cpp
@@ -67,267 +67,271 @@ StartMenu::StartMenu(QWidget *parent) : QLabel( parent )
67 67
68void StartMenu::mousePressEvent( QMouseEvent * ) 68void StartMenu::mousePressEvent( QMouseEvent * )
69{ 69{
70 launch(); 70 launch();
71} 71}
72 72
73 73
74StartMenu::~StartMenu() 74StartMenu::~StartMenu()
75{ 75{
76 clearApplets(); 76 clearApplets();
77} 77}
78 78
79void StartMenu::createMenu() 79void StartMenu::createMenu()
80{ 80{
81 clearApplets(); 81 clearApplets();
82 delete launchMenu; 82 delete launchMenu;
83 83
84 launchMenu = new StartPopupMenu( this ); 84 launchMenu = new StartPopupMenu( this );
85 loadMenu( launchMenu ); 85 loadMenu( launchMenu );
86 loadApplets(); 86 loadApplets();
87 87
88 bool result = nother || ntabs || m_applets.count(); 88 bool result = nother || ntabs || m_applets.count();
89 if ( result ) 89 if ( result )
90 connect( launchMenu, SIGNAL(activated(int)), SLOT(itemSelected(int)) ); 90 connect( launchMenu, SIGNAL(activated(int)), SLOT(itemSelected(int)) );
91 91
92} 92}
93 93
94void StartMenu::refreshMenu() 94void StartMenu::refreshMenu()
95{ 95{
96 Config cfg("Taskbar"); 96 Config cfg("Taskbar");
97 cfg.setGroup("Menu"); 97 cfg.setGroup("Menu");
98 bool ltabs = cfg.readBoolEntry("LauncherTabs",TRUE); 98 bool ltabs = cfg.readBoolEntry("LauncherTabs",TRUE);
99 bool lot = cfg.readBoolEntry("LauncherOther",TRUE); 99 bool lot = cfg.readBoolEntry("LauncherOther",TRUE);
100 bool lt = ltabs || lot; 100 bool lt = ltabs || lot;
101 if ( launchMenu && !lt ) 101 if ( launchMenu && !lt )
102 return; // nothing to do 102 return; // nothing to do
103 103
104 if ( launchMenu ) { 104 if ( launchMenu ) {
105 int i; 105 int i;
106 /* find the first entry we want to remove */ 106 /* find the first entry we want to remove */
107 for (i=0; i<(int)launchMenu->count(); i++) { 107 for (i=0; i<(int)launchMenu->count(); i++) {
108 QMenuItem* item = launchMenu->findItem(launchMenu->idAt(i)); 108 QMenuItem* item = launchMenu->findItem(launchMenu->idAt(i));
109 if ( item && item->id() >= 0 && item->id() < ntabs ) { 109 if ( item && item->id() >= 0 && item->id() < ntabs ) {
110 break; 110 break;
111 } 111 }
112 if ( item && item->isSeparator() ) { 112 if ( item && item->isSeparator() ) {
113 i++; 113 i++;
114 break; 114 break;
115 } 115 }
116 } 116 }
117 /* remove them */ 117 /* remove them */
118 while (i<(int)launchMenu->count()) 118 while (i<(int)launchMenu->count())
119 launchMenu->removeItemAt(i); 119 launchMenu->removeItemAt(i);
120 loadMenu(launchMenu); 120 loadMenu(launchMenu);
121 addApplets(launchMenu); 121 addApplets(launchMenu);
122 } else { 122 } else {
123 createMenu(); 123 createMenu();
124 } 124 }
125} 125}
126 126
127void StartMenu::itemSelected( int id ) 127void StartMenu::itemSelected( int id )
128{ 128{
129 if ( id >= 0 && id < ntabs ) { 129 if ( id >= 0 && id < ntabs ) {
130 emit tabSelected(tabs[id]); 130 emit tabSelected(tabs[id]);
131 } else if ( id >= 20 && id < 20+nother ) { 131 } else if ( id >= 20 && id < 20+nother ) {
132 other.at(id-20)->execute(); 132 other.at(id-20)->execute();
133 }else { 133 }else {
134 MenuApplet *applet = m_applets.find ( id ); 134 MenuApplet *applet = m_applets.find ( id );
135 if ( applet ) { 135 if ( applet ) {
136 qWarning("activated"); 136 qWarning("activated");
137 applet-> iface-> activated(); 137 applet-> iface-> activated();
138 } 138 }
139 } 139 }
140} 140}
141 141
142bool StartMenu::loadMenu( QPopupMenu *menu ) 142bool StartMenu::loadMenu( QPopupMenu *menu )
143{ 143{
144 Config cfg("Taskbar"); 144 Config cfg("Taskbar");
145 cfg.setGroup("Menu"); 145 cfg.setGroup("Menu");
146 146
147 bool ltabs = cfg.readBoolEntry("LauncherTabs",TRUE); 147 bool ltabs = cfg.readBoolEntry("LauncherTabs",TRUE);
148 bool lot = cfg.readBoolEntry("LauncherOther",TRUE); 148 bool lot = cfg.readBoolEntry("LauncherOther",TRUE);
149 bool sepfirst = !ltabs && !lot; 149 bool sepfirst = !ltabs && !lot;
150 150
151 tabs.clear(); 151 tabs.clear();
152 other.setAutoDelete(TRUE); 152 other.setAutoDelete(TRUE);
153 other.clear(); 153 other.clear();
154 ntabs = 0; 154 ntabs = 0;
155 nother = 0; 155 nother = 0;
156 156
157 bool f=TRUE; 157 bool f=TRUE;
158 if ( ltabs || lot ) { 158 if ( ltabs || lot ) {
159 QDir dir( MimeType::appsFolderName(), QString::null, QDir::Name ); 159 QDir dir( MimeType::appsFolderName(), QString::null, QDir::Name );
160 for (int i=0; i<(int)dir.count(); i++) { 160 for (int i=0; i<(int)dir.count(); i++) {
161 QString d = dir[i]; 161 QString d = dir[i];
162 Config cfg(dir.path()+"/"+d+"/.directory",Config::File); 162 Config cfg(dir.path()+"/"+d+"/.directory",Config::File);
163 if ( cfg.isValid() ) { 163 if ( cfg.isValid() ) {
164 QString nm = cfg.readEntry("Name"); 164 QString nm = cfg.readEntry("Name");
165 QString ic = cfg.readEntry("Icon"); 165 QString ic = cfg.readEntry("Icon");
166 if ( !!nm && !!ic ) { 166 if ( !!nm && !!ic ) {
167 tabs.append(d); 167 tabs.append(d);
168 menu->insertItem( Resource::loadIconSet(ic), nm, ntabs++ ); 168 menu->insertItem( Resource::loadIconSet(ic), nm, ntabs++ );
169 } 169 }
170 } else if ( lot && d.right(8)==".desktop") { 170 } else if ( lot && d.right(8)==".desktop") {
171 AppLnk* applnk = new AppLnk(dir.path()+"/"+d); 171 AppLnk* applnk = new AppLnk(dir.path()+"/"+d);
172 if ( applnk->isValid() ) { 172 if ( applnk->isValid() ) {
173 if ( applnk->type() == "Separator" ) { // No tr 173 if ( applnk->type() == "Separator" ) { // No tr
174 if ( lot ) { 174 if ( lot ) {
175 menu->insertSeparator(); 175 menu->insertSeparator();
176 sepfirst = f && !ltabs; 176 sepfirst = f && !ltabs;
177 } 177 }
178 delete applnk; 178 delete applnk;
179 } else { 179 } else {
180 f = FALSE; 180 f = FALSE;
181 other.append(applnk); 181 other.append(applnk);
182 menu->insertItem( Resource::loadIconSet(applnk->icon()), 182 menu->insertItem( Resource::loadIconSet(applnk->icon()),
183 applnk->name(), 20+nother++ ); 183 applnk->name(), 20+nother++ );
184 } 184 }
185 } else { 185 } else {
186 delete applnk; 186 delete applnk;
187 } 187 }
188 } 188 }
189 } 189 }
190 190
191 if ( !menu->count() ) 191 if ( !menu->count() )
192 sepfirst = TRUE; 192 sepfirst = TRUE;
193 } 193 }
194 194
195 launchMenu->setName(sepfirst ? "accessories" : "accessories_need_sep"); // No tr 195 launchMenu->setName(sepfirst ? "accessories" : "accessories_need_sep"); // No tr
196 196
197 return (nother || ntabs ); 197 return (nother || ntabs );
198} 198}
199 199
200 200
201void StartMenu::launch() 201void StartMenu::launch()
202{ 202{
203 int y = mapToGlobal( QPoint() ).y() - launchMenu->sizeHint().height(); 203 int y = mapToGlobal( QPoint() ).y() - launchMenu->sizeHint().height();
204 204
205 if ( launchMenu->isVisible() ) 205 if ( launchMenu->isVisible() )
206 launchMenu->hide(); 206 launchMenu->hide();
207 else 207 else
208 launchMenu->popup( QPoint( 1, y ) ); 208 launchMenu->popup( QPoint( 1, y ) );
209} 209}
210 210
211 211
212 212
213 213
214static int compareAppletPositions(const void *a, const void *b) 214static int compareAppletPositions(const void *a, const void *b)
215{ 215{
216 const MenuApplet* aa = *(const MenuApplet**)a; 216 const MenuApplet* aa = *(const MenuApplet**)a;
217 const MenuApplet* ab = *(const MenuApplet**)b; 217 const MenuApplet* ab = *(const MenuApplet**)b;
218 int d = aa->iface->position() - ab->iface->position(); 218 int d = aa->iface->position() - ab->iface->position();
219 if ( d ) return d; 219 if ( d ) return d;
220 return QString::compare(aa->library->library(),ab->library->library()); 220 return QString::compare(aa->library->library(),ab->library->library());
221} 221}
222 222
223void StartMenu::clearApplets() 223void StartMenu::clearApplets()
224{ 224{
225 if (launchMenu ) 225 if (launchMenu )
226 launchMenu-> hide(); 226 launchMenu-> hide();
227 227
228 for ( QIntDictIterator<MenuApplet> it ( m_applets ); it. current ( ); ++it ) { 228 for ( QIntDictIterator<MenuApplet> it ( m_applets ); it. current ( ); ++it ) {
229 MenuApplet *applet = it. current ( ); 229 MenuApplet *applet = it. current ( );
230 if ( launchMenu ) { 230 if ( launchMenu ) {
231 launchMenu-> removeItem ( applet-> id ); 231 launchMenu-> removeItem ( applet-> id );
232 delete applet-> popup; 232 delete applet-> popup;
233 } 233 }
234 234
235 applet-> iface-> release(); 235 applet-> iface-> release();
236 applet-> library-> unload(); 236 applet-> library-> unload();
237 delete applet-> library; 237 delete applet-> library;
238 } 238 }
239 m_applets.clear(); 239 m_applets.clear();
240} 240}
241 241
242 242
243 243
244 244
245void StartMenu::loadApplets() 245void StartMenu::loadApplets()
246{ 246{
247 Config cfg( "StartMenu" ); 247 Config cfg( "StartMenu" );
248 cfg.setGroup( "Applets" ); 248 cfg.setGroup( "Applets" );
249 249
250 // SafeMode causes too much problems, so we disable it for now -- 250 // SafeMode causes too much problems, so we disable it for now --
251 // maybe we should reenable it for OPIE 1.0 - sandman 26.09.02 251 // maybe we should reenable it for OPIE 1.0 - sandman 26.09.02
252 // removed in the remerge PluginManager could handle it 252 // removed in the remerge PluginManager could handle it
253 // we don't currently use it -zecke 253 // we don't currently use it -zecke
254 254
255 QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' ); 255 QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' );
256 256
257 QString lang = getenv( "LANG" ); 257 QString lang = getenv( "LANG" );
258 QString path = QPEApplication::qpeDir() + "/plugins/applets"; 258 QString path = QPEApplication::qpeDir() + "/plugins/applets";
259#ifdef Q_OS_MACX
260 QDir dir( path, "lib*.dylib" );
261#else
259 QDir dir( path, "lib*.so" ); 262 QDir dir( path, "lib*.so" );
263#endif /* Q_OS_MACX */
260 QStringList list = dir.entryList(); 264 QStringList list = dir.entryList();
261 QStringList::Iterator it; 265 QStringList::Iterator it;
262 int napplets=0; 266 int napplets=0;
263 MenuApplet* *xapplets = new MenuApplet*[list.count()]; 267 MenuApplet* *xapplets = new MenuApplet*[list.count()];
264 for ( it = list.begin(); it != list.end(); ++it ) { 268 for ( it = list.begin(); it != list.end(); ++it ) {
265 if ( exclude.find( *it ) != exclude.end() ) 269 if ( exclude.find( *it ) != exclude.end() )
266 continue; 270 continue;
267 MenuAppletInterface *iface = 0; 271 MenuAppletInterface *iface = 0;
268 QLibrary *lib = new QLibrary( path + "/" + *it ); 272 QLibrary *lib = new QLibrary( path + "/" + *it );
269 if (( lib->queryInterface( IID_MenuApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) { 273 if (( lib->queryInterface( IID_MenuApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) {
270 MenuApplet *applet = new MenuApplet; 274 MenuApplet *applet = new MenuApplet;
271 xapplets[napplets++] = applet; 275 xapplets[napplets++] = applet;
272 applet->library = lib; 276 applet->library = lib;
273 applet->iface = iface; 277 applet->iface = iface;
274 278
275 QTranslator *trans = new QTranslator(qApp); 279 QTranslator *trans = new QTranslator(qApp);
276 QString type = (*it).left( (*it).find(".") ); 280 QString type = (*it).left( (*it).find(".") );
277 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; 281 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm";
278 if ( trans->load( tfn )) 282 if ( trans->load( tfn ))
279 qApp->installTranslator( trans ); 283 qApp->installTranslator( trans );
280 else 284 else
281 delete trans; 285 delete trans;
282 } else { 286 } else {
283 exclude += *it; 287 exclude += *it;
284 delete lib; 288 delete lib;
285 } 289 }
286 } 290 }
287 cfg.writeEntry( "ExcludeApplets", exclude, ',' ); 291 cfg.writeEntry( "ExcludeApplets", exclude, ',' );
288 qsort(xapplets,napplets,sizeof(m_applets[0]),compareAppletPositions); 292 qsort(xapplets,napplets,sizeof(m_applets[0]),compareAppletPositions);
289 293
290 294
291 int foo = ( launchMenu-> count ( )) ? launchMenu-> insertSeparator ( ) : 0; 295 int foo = ( launchMenu-> count ( )) ? launchMenu-> insertSeparator ( ) : 0;
292 296
293 while (napplets--) { 297 while (napplets--) {
294 MenuApplet *applet = xapplets[napplets]; 298 MenuApplet *applet = xapplets[napplets];
295 299
296 applet-> popup = applet-> iface-> popup ( this ); 300 applet-> popup = applet-> iface-> popup ( this );
297 301
298 if ( applet-> popup ) 302 if ( applet-> popup )
299 applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ), applet-> popup ); 303 applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ), applet-> popup );
300 else 304 else
301 applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ) ); 305 applet-> id = launchMenu-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ) );
302 306
303 307
304 m_applets.insert ( applet-> id, new MenuApplet(*applet)); 308 m_applets.insert ( applet-> id, new MenuApplet(*applet));
305 } 309 }
306 delete [] xapplets; 310 delete [] xapplets;
307 311
308} 312}
309 313
310 314
311/* 315/*
312 * Launcher calls loadMenu too often fix that 316 * Launcher calls loadMenu too often fix that
313 */ 317 */
314void StartMenu::addApplets(QPopupMenu* pop) { 318void StartMenu::addApplets(QPopupMenu* pop) {
315 QIntDict<MenuApplet> dict; 319 QIntDict<MenuApplet> dict;
316 if( pop-> count ( )) 320 if( pop-> count ( ))
317 pop-> insertSeparator ( ); 321 pop-> insertSeparator ( );
318 322
319 for ( QIntDictIterator<MenuApplet> it ( m_applets ); it. current ( ); ++it ) { 323 for ( QIntDictIterator<MenuApplet> it ( m_applets ); it. current ( ); ++it ) {
320 MenuApplet *applet = it. current ( ); 324 MenuApplet *applet = it. current ( );
321 if ( applet-> popup ) 325 if ( applet-> popup )
322 applet-> id = pop-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ), applet-> popup ); 326 applet-> id = pop-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ), applet-> popup );
323 else 327 else
324 applet-> id = pop-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ) ); 328 applet-> id = pop-> insertItem ( applet-> iface-> icon ( ), applet-> iface-> text ( ) );
325 329
326 dict.insert( applet->id, new MenuApplet(*applet) ); 330 dict.insert( applet->id, new MenuApplet(*applet) );
327 } 331 }
328 /* need to update the key */ 332 /* need to update the key */
329 m_applets.setAutoDelete( true ); 333 m_applets.setAutoDelete( true );
330 m_applets.clear(); 334 m_applets.clear();
331 m_applets.setAutoDelete( false ); 335 m_applets.setAutoDelete( false );
332 m_applets = dict; 336 m_applets = dict;
333} 337}
diff --git a/core/launcher/systray.cpp b/core/launcher/systray.cpp
index 6122770..691f6b8 100644
--- a/core/launcher/systray.cpp
+++ b/core/launcher/systray.cpp
@@ -1,149 +1,154 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qtopia/qpeapplication.h> 21#include <qtopia/qpeapplication.h>
22#include <qtopia/qlibrary.h> 22#include <qtopia/qlibrary.h>
23#include <qtopia/config.h> 23#include <qtopia/config.h>
24 24
25#include <qlayout.h> 25#include <qlayout.h>
26#include <qdir.h> 26#include <qdir.h>
27#include <qmessagebox.h> 27#include <qmessagebox.h>
28#include <qtranslator.h> 28#include <qtranslator.h>
29 29
30#include "systray.h" 30#include "systray.h"
31 31
32#include <stdlib.h> 32#include <stdlib.h>
33 33
34/* ### Single build floppies ### */ 34/* ### Single build floppies ### */
35#if 0 35#if 0
36#ifdef QT_NO_COMPONENTS 36#ifdef QT_NO_COMPONENTS
37#include "../plugins/applets/clockapplet/clockappletimpl.h" 37#include "../plugins/applets/clockapplet/clockappletimpl.h"
38#endif 38#endif
39#endif 39#endif
40 40
41SysTray::SysTray( QWidget *parent ) : QFrame( parent ), layout(0) 41SysTray::SysTray( QWidget *parent ) : QFrame( parent ), layout(0)
42{ 42{
43 //setFrameStyle( QFrame::Panel | QFrame::Sunken ); 43 //setFrameStyle( QFrame::Panel | QFrame::Sunken );
44 loadApplets(); 44 loadApplets();
45} 45}
46 46
47SysTray::~SysTray() 47SysTray::~SysTray()
48{ 48{
49 clearApplets(); 49 clearApplets();
50} 50}
51 51
52static int compareAppletPositions(const void *a, const void *b) 52static int compareAppletPositions(const void *a, const void *b)
53{ 53{
54 const TaskbarApplet* aa = *(const TaskbarApplet**)a; 54 const TaskbarApplet* aa = *(const TaskbarApplet**)a;
55 const TaskbarApplet* ab = *(const TaskbarApplet**)b; 55 const TaskbarApplet* ab = *(const TaskbarApplet**)b;
56 int d = ab->iface->position() - aa->iface->position(); 56 int d = ab->iface->position() - aa->iface->position();
57 if ( d ) return d; 57 if ( d ) return d;
58 return QString::compare(ab->name,aa->name); 58 return QString::compare(ab->name,aa->name);
59} 59}
60 60
61void SysTray::loadApplets() 61void SysTray::loadApplets()
62{ 62{
63 hide(); 63 hide();
64 clearApplets(); 64 clearApplets();
65 addApplets(); 65 addApplets();
66} 66}
67 67
68void SysTray::clearApplets() 68void SysTray::clearApplets()
69{ 69{
70#ifndef QT_NO_COMPONENTS 70#ifndef QT_NO_COMPONENTS
71 71
72 /* 72 /*
73 * Note on clearing. SOme applets delete their 73 * Note on clearing. SOme applets delete their
74 * applets themselves some don't do it 74 * applets themselves some don't do it
75 * and on restart this can crash. If we delete it 75 * and on restart this can crash. If we delete it
76 * here we might end up in a double deletion. We could 76 * here we might end up in a double deletion. We could
77 * use QGuardedPtr but that would be one QOBject 77 * use QGuardedPtr but that would be one QOBject
78 * for every applet more but only useful for restart 78 * for every applet more but only useful for restart
79 */ 79 */
80 QValueList<TaskbarApplet>::Iterator mit; 80 QValueList<TaskbarApplet>::Iterator mit;
81 for ( mit = appletList.begin(); mit != appletList.end(); ++mit ) { 81 for ( mit = appletList.begin(); mit != appletList.end(); ++mit ) {
82 (*mit).iface->release(); 82 (*mit).iface->release();
83 (*mit).library->unload(); 83 (*mit).library->unload();
84 delete (*mit).library; 84 delete (*mit).library;
85 } 85 }
86 86
87#endif 87#endif
88 appletList.clear(); 88 appletList.clear();
89 if ( layout ) 89 if ( layout )
90 delete layout; 90 delete layout;
91 layout = new QHBoxLayout( this, 0, 1 ); 91 layout = new QHBoxLayout( this, 0, 1 );
92 layout->setAutoAdd(TRUE); 92 layout->setAutoAdd(TRUE);
93} 93}
94 94
95void SysTray::addApplets() 95void SysTray::addApplets()
96{ 96{
97 hide(); 97 hide();
98#ifndef QT_NO_COMPONENTS 98#ifndef QT_NO_COMPONENTS
99 Config cfg( "Taskbar" ); 99 Config cfg( "Taskbar" );
100 cfg.setGroup( "Applets" ); 100 cfg.setGroup( "Applets" );
101 QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' ); 101 QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' );
102 102
103 QString lang = getenv( "LANG" ); 103 QString lang = getenv( "LANG" );
104 QString path = QPEApplication::qpeDir() + "/plugins/applets"; 104 QString path = QPEApplication::qpeDir() + "/plugins/applets";
105#ifdef Q_OS_MACX
106 QDir dir( path, "lib*.dylib" );
107#else
105 QDir dir( path, "lib*.so" ); 108 QDir dir( path, "lib*.so" );
109#endif /* Q_OS_MACX */
106 QStringList list = dir.entryList(); 110 QStringList list = dir.entryList();
107 QStringList::Iterator it; 111 QStringList::Iterator it;
108 int napplets=0; 112 int napplets=0;
109 TaskbarApplet* *applets = new TaskbarApplet*[list.count()]; 113 TaskbarApplet* *applets = new TaskbarApplet*[list.count()];
110 for ( it = list.begin(); it != list.end(); ++it ) { 114 for ( it = list.begin(); it != list.end(); ++it ) {
111 if ( exclude.find( *it ) != exclude.end() ) 115 if ( exclude.find( *it ) != exclude.end() )
112 continue; 116 continue;
117 qWarning( "Found Applet: %s", (*it).latin1() );
113 TaskbarAppletInterface *iface = 0; 118 TaskbarAppletInterface *iface = 0;
114 QLibrary *lib = new QLibrary( path + "/" + *it ); 119 QLibrary *lib = new QLibrary( path + "/" + *it );
115 if (( lib->queryInterface( IID_TaskbarApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) { 120 if (( lib->queryInterface( IID_TaskbarApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) {
116 TaskbarApplet *applet = new TaskbarApplet; 121 TaskbarApplet *applet = new TaskbarApplet;
117 applets[napplets++] = applet; 122 applets[napplets++] = applet;
118 applet->library = lib; 123 applet->library = lib;
119 applet->iface = iface; 124 applet->iface = iface;
120 125
121 QTranslator *trans = new QTranslator(qApp); 126 QTranslator *trans = new QTranslator(qApp);
122 QString type = (*it).left( (*it).find(".") ); 127 QString type = (*it).left( (*it).find(".") );
123 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; 128 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm";
124 if ( trans->load( tfn )) 129 if ( trans->load( tfn ))
125 qApp->installTranslator( trans ); 130 qApp->installTranslator( trans );
126 else 131 else
127 delete trans; 132 delete trans;
128 } else { 133 } else {
129 exclude += *it; 134 exclude += *it;
130 delete lib; 135 delete lib;
131 } 136 }
132 } 137 }
133 cfg.writeEntry( "ExcludeApplets", exclude, ',' ); 138 cfg.writeEntry( "ExcludeApplets", exclude, ',' );
134 qsort(applets,napplets,sizeof(applets[0]),compareAppletPositions); 139 qsort(applets,napplets,sizeof(applets[0]),compareAppletPositions);
135 while (napplets--) { 140 while (napplets--) {
136 TaskbarApplet *applet = applets[napplets]; 141 TaskbarApplet *applet = applets[napplets];
137 applet->applet = applet->iface->applet( this ); 142 applet->applet = applet->iface->applet( this );
138 appletList.append(*applet); 143 appletList.append(*applet);
139 } 144 }
140 delete [] applets; 145 delete [] applets;
141#else /* ## FIXME single app */ 146#else /* ## FIXME single app */
142 TaskbarApplet * const applet = new TaskbarApplet(); 147 TaskbarApplet * const applet = new TaskbarApplet();
143 applet->iface = new ClockAppletImpl(); 148 applet->iface = new ClockAppletImpl();
144 applet->applet = applet->iface->applet( this ); 149 applet->applet = applet->iface->applet( this );
145 appletList.append( applet ); 150 appletList.append( applet );
146#endif 151#endif
147 show(); 152 show();
148} 153}
149 154
diff --git a/core/launcher/transferserver.cpp b/core/launcher/transferserver.cpp
index c69df2d..439e110 100644
--- a/core/launcher/transferserver.cpp
+++ b/core/launcher/transferserver.cpp
@@ -1,224 +1,227 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20//#define _XOPEN_SOURCE 20//#define _XOPEN_SOURCE
21 21
22#include <qtopia/global.h> 22#include <qtopia/global.h>
23#include <qtopia/qpeapplication.h> 23#include <qtopia/qpeapplication.h>
24 24
25#ifndef Q_OS_WIN32 25#ifndef Q_OS_WIN32
26#include <pwd.h> 26#include <pwd.h>
27#include <sys/types.h> 27#include <sys/types.h>
28#include <unistd.h> 28#include <unistd.h>
29#include <stdlib.h> 29#include <stdlib.h>
30#include <time.h> 30#include <time.h>
31
32#ifndef Q_OS_MACX
31#include <shadow.h> 33#include <shadow.h>
32#include <crypt.h> 34#include <crypt.h>
35#endif /* Q_OS_MACX */
33 36
34#else 37#else
35#include <stdlib.h> 38#include <stdlib.h>
36#include <time.h> 39#include <time.h>
37#endif 40#endif
38 41
39 42
40#if defined(_OS_LINUX_) 43#if defined(_OS_LINUX_)
41#include <shadow.h> 44#include <shadow.h>
42#endif 45#endif
43 46
44#include <qdir.h> 47#include <qdir.h>
45#include <qfile.h> 48#include <qfile.h>
46#include <qtextstream.h> 49#include <qtextstream.h>
47#include <qdatastream.h> 50#include <qdatastream.h>
48#include <qmessagebox.h> 51#include <qmessagebox.h>
49#include <qstringlist.h> 52#include <qstringlist.h>
50#include <qfileinfo.h> 53#include <qfileinfo.h>
51#include <qregexp.h> 54#include <qregexp.h>
52//#include <qtopia/qcopchannel_qws.h> 55//#include <qtopia/qcopchannel_qws.h>
53#include <qtopia/process.h> 56#include <qtopia/process.h>
54#include <qtopia/global.h> 57#include <qtopia/global.h>
55#include <qtopia/config.h> 58#include <qtopia/config.h>
56#include <qtopia/private/contact.h> 59#include <qtopia/private/contact.h>
57#include <qtopia/quuid.h> 60#include <qtopia/quuid.h>
58#include <qtopia/version.h> 61#include <qtopia/version.h>
59#ifdef Q_WS_QWS 62#ifdef Q_WS_QWS
60#include <qtopia/qcopenvelope_qws.h> 63#include <qtopia/qcopenvelope_qws.h>
61#endif 64#endif
62 65
63#include "launcherglobal.h" 66#include "launcherglobal.h"
64 67
65#include "transferserver.h" 68#include "transferserver.h"
66#include <qtopia/qprocess.h> 69#include <qtopia/qprocess.h>
67 70
68const int block_size = 51200; 71const int block_size = 51200;
69 72
70TransferServer::TransferServer( Q_UINT16 port, QObject *parent, 73TransferServer::TransferServer( Q_UINT16 port, QObject *parent,
71 const char* name) 74 const char* name)
72 : QServerSocket( port, 1, parent, name ) 75 : QServerSocket( port, 1, parent, name )
73{ 76{
74 connections.setAutoDelete( TRUE ); 77 connections.setAutoDelete( TRUE );
75 if ( !ok() ) 78 if ( !ok() )
76 qWarning( "Failed to bind to port %d", port ); 79 qWarning( "Failed to bind to port %d", port );
77} 80}
78 81
79void TransferServer::authorizeConnections() 82void TransferServer::authorizeConnections()
80{ 83{
81 QListIterator<ServerPI> it(connections); 84 QListIterator<ServerPI> it(connections);
82 while ( it.current() ) { 85 while ( it.current() ) {
83 if ( !it.current()->verifyAuthorised() ) { 86 if ( !it.current()->verifyAuthorised() ) {
84 disconnect( it.current(), SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) ); 87 disconnect( it.current(), SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) );
85 connections.removeRef( it.current() ); 88 connections.removeRef( it.current() );
86 } else 89 } else
87 ++it; 90 ++it;
88 } 91 }
89} 92}
90 93
91void TransferServer::closed(ServerPI *item) 94void TransferServer::closed(ServerPI *item)
92{ 95{
93 connections.removeRef(item); 96 connections.removeRef(item);
94} 97}
95 98
96TransferServer::~TransferServer() 99TransferServer::~TransferServer()
97{ 100{
98} 101}
99 102
100void TransferServer::newConnection( int socket ) 103void TransferServer::newConnection( int socket )
101{ 104{
102 ServerPI *ptr = new ServerPI( socket, this ); 105 ServerPI *ptr = new ServerPI( socket, this );
103 connect( ptr, SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) ); 106 connect( ptr, SIGNAL(connectionClosed(ServerPI *)), this, SLOT( closed(ServerPI *)) );
104 connections.append( ptr ); 107 connections.append( ptr );
105} 108}
106 109
107QString SyncAuthentication::serverId() 110QString SyncAuthentication::serverId()
108{ 111{
109 Config cfg("Security"); 112 Config cfg("Security");
110 cfg.setGroup("Sync"); 113 cfg.setGroup("Sync");
111 QString r = cfg.readEntry("serverid"); 114 QString r = cfg.readEntry("serverid");
112 115
113 if ( r.isEmpty() ) { 116 if ( r.isEmpty() ) {
114 r = Opie::Global::uuid(); 117 r = Opie::Global::uuid();
115 cfg.writeEntry("serverid", r ); 118 cfg.writeEntry("serverid", r );
116 } 119 }
117 return r; 120 return r;
118} 121}
119 122
120QString SyncAuthentication::ownerName() 123QString SyncAuthentication::ownerName()
121{ 124{
122 QString vfilename = Global::applicationFileName("addressbook", 125 QString vfilename = Global::applicationFileName("addressbook",
123 "businesscard.vcf"); 126 "businesscard.vcf");
124 if (QFile::exists(vfilename)) { 127 if (QFile::exists(vfilename)) {
125 Contact c; 128 Contact c;
126 c = Contact::readVCard( vfilename )[0]; 129 c = Contact::readVCard( vfilename )[0];
127 return c.fullName(); 130 return c.fullName();
128 } 131 }
129 132
130 return QString::null; 133 return QString::null;
131} 134}
132 135
133QString SyncAuthentication::loginName() 136QString SyncAuthentication::loginName()
134{ 137{
135 struct passwd *pw = 0L; 138 struct passwd *pw = 0L;
136#ifndef Q_OS_WIN32 139#ifndef Q_OS_WIN32
137 pw = getpwuid( geteuid() ); 140 pw = getpwuid( geteuid() );
138 return QString::fromLocal8Bit( pw->pw_name ); 141 return QString::fromLocal8Bit( pw->pw_name );
139#else 142#else
140 //### revise 143 //### revise
141 return QString(); 144 return QString();
142#endif 145#endif
143} 146}
144 147
145int SyncAuthentication::isAuthorized(QHostAddress peeraddress) 148int SyncAuthentication::isAuthorized(QHostAddress peeraddress)
146{ 149{
147 Config cfg("Security"); 150 Config cfg("Security");
148 cfg.setGroup("Sync"); 151 cfg.setGroup("Sync");
149 // QString allowedstr = cfg.readEntry("auth_peer","192.168.1.0"); 152 // QString allowedstr = cfg.readEntry("auth_peer","192.168.1.0");
150 uint auth_peer = cfg.readNumEntry("auth_peer", 0xc0a80100); 153 uint auth_peer = cfg.readNumEntry("auth_peer", 0xc0a80100);
151 154
152 // QHostAddress allowed; 155 // QHostAddress allowed;
153 // allowed.setAddress(allowedstr); 156 // allowed.setAddress(allowedstr);
154 // uint auth_peer = allowed.ip4Addr(); 157 // uint auth_peer = allowed.ip4Addr();
155 uint auth_peer_bits = cfg.readNumEntry("auth_peer_bits", 24); 158 uint auth_peer_bits = cfg.readNumEntry("auth_peer_bits", 24);
156 uint mask = auth_peer_bits >= 32 // shifting by 32 is not defined 159 uint mask = auth_peer_bits >= 32 // shifting by 32 is not defined
157 ? 0xffffffff : (((1 << auth_peer_bits) - 1) << (32 - auth_peer_bits)); 160 ? 0xffffffff : (((1 << auth_peer_bits) - 1) << (32 - auth_peer_bits));
158 161
159 return (peeraddress.ip4Addr() & mask) == auth_peer; 162 return (peeraddress.ip4Addr() & mask) == auth_peer;
160} 163}
161 164
162bool SyncAuthentication::checkUser( const QString& user ) 165bool SyncAuthentication::checkUser( const QString& user )
163{ 166{
164 if ( user.isEmpty() ) return FALSE; 167 if ( user.isEmpty() ) return FALSE;
165 QString euser = loginName(); 168 QString euser = loginName();
166 return user == euser; 169 return user == euser;
167} 170}
168 171
169bool SyncAuthentication::checkPassword( const QString& password ) 172bool SyncAuthentication::checkPassword( const QString& password )
170{ 173{
171#ifdef ALLOW_UNIX_USER_FTP 174#ifdef ALLOW_UNIX_USER_FTP
172 // First, check system password... 175 // First, check system password...
173 176
174 struct passwd *pw = 0; 177 struct passwd *pw = 0;
175 struct spwd *spw = 0; 178 struct spwd *spw = 0;
176 179
177 pw = getpwuid( geteuid() ); 180 pw = getpwuid( geteuid() );
178 spw = getspnam( pw->pw_name ); 181 spw = getspnam( pw->pw_name );
179 182
180 QString cpwd = QString::fromLocal8Bit( pw->pw_passwd ); 183 QString cpwd = QString::fromLocal8Bit( pw->pw_passwd );
181 if ( cpwd == "x" && spw ) 184 if ( cpwd == "x" && spw )
182 cpwd = QString::fromLocal8Bit( spw->sp_pwdp ); 185 cpwd = QString::fromLocal8Bit( spw->sp_pwdp );
183 186
184 // Note: some systems use more than crypt for passwords. 187 // Note: some systems use more than crypt for passwords.
185 QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) ); 188 QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) );
186 if ( cpwd == cpassword ) 189 if ( cpwd == cpassword )
187 return TRUE; 190 return TRUE;
188#endif 191#endif
189 192
190 static int lastdenial=0; 193 static int lastdenial=0;
191 static int denials=0; 194 static int denials=0;
192 int now = time(0); 195 int now = time(0);
193 196
194 // Detect old Qtopia Desktop (no password) 197 // Detect old Qtopia Desktop (no password)
195 if ( password.isEmpty() ) { 198 if ( password.isEmpty() ) {
196 if ( denials < 1 || now > lastdenial+600 ) { 199 if ( denials < 1 || now > lastdenial+600 ) {
197 QMessageBox unauth( 200 QMessageBox unauth(
198 tr("Sync Connection"), 201 tr("Sync Connection"),
199 tr("<p>An unauthorized system is requesting access to this device." 202 tr("<p>An unauthorized system is requesting access to this device."
200 "<p>If you are using a version of Qtopia Desktop older than 1.5.1, " 203 "<p>If you are using a version of Qtopia Desktop older than 1.5.1, "
201 "please upgrade."), 204 "please upgrade."),
202 QMessageBox::Warning, 205 QMessageBox::Warning,
203 QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton, 206 QMessageBox::Cancel, QMessageBox::NoButton, QMessageBox::NoButton,
204 0, QString::null, TRUE, WStyle_StaysOnTop); 207 0, QString::null, TRUE, WStyle_StaysOnTop);
205 unauth.setButtonText(QMessageBox::Cancel, tr("Deny")); 208 unauth.setButtonText(QMessageBox::Cancel, tr("Deny"));
206 unauth.exec(); 209 unauth.exec();
207 210
208 denials++; 211 denials++;
209 lastdenial=now; 212 lastdenial=now;
210 } 213 }
211 return FALSE; 214 return FALSE;
212 } 215 }
213 216
214 // Second, check sync password... 217 // Second, check sync password...
215 218
216 static int lock=0; 219 static int lock=0;
217 if ( lock ) return FALSE; 220 if ( lock ) return FALSE;
218 221
219 ++lock; 222 ++lock;
220 223
221 /* 224 /*
222 * we need to support old Sync software and QtopiaDesktop 225 * we need to support old Sync software and QtopiaDesktop
223 */ 226 */
224 if ( password.left(6) == "Qtopia" || password.left(6) == "rootme" ) { 227 if ( password.left(6) == "Qtopia" || password.left(6) == "rootme" ) {
diff --git a/core/multimedia/opieplayer/wavplugin/wavplugin.pro b/core/multimedia/opieplayer/wavplugin/wavplugin.pro
index 0366542..db41ad4 100644
--- a/core/multimedia/opieplayer/wavplugin/wavplugin.pro
+++ b/core/multimedia/opieplayer/wavplugin/wavplugin.pro
@@ -1,32 +1,32 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS = wavplugin.h wavpluginimpl.h 3 HEADERS = wavplugin.h wavpluginimpl.h
4 SOURCES = wavplugin.cpp wavpluginimpl.cpp 4 SOURCES = wavplugin.cpp wavpluginimpl.cpp
5 TARGET = wavplugin 5 TARGET = wavplugin
6 DESTDIR = $(OPIEDIR)/plugins/codecs 6 DESTDIR = $(OPIEDIR)/plugins/codecs
7INCLUDEPATH += $(OPIEDIR)/include .. 7INCLUDEPATH += $(OPIEDIR)/include ..
8DEPENDPATH += ../$(OPIEDIR)/include .. 8DEPENDPATH += ../$(OPIEDIR)/include ..
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../../i18n/de/libwavplugin.ts \ 12TRANSLATIONS = ../../../../i18n/de/libwavplugin.ts \
13 ../../../../i18n/nl/libwavplugin.ts \ 13 ../../../../i18n/nl/libwavplugin.ts \
14 ../../../../i18n/da/libwavplugin.ts \ 14 ../../../../i18n/da/libwavplugin.ts \
15 ../../../../i18n/xx/libwavplugin.ts \ 15 ../../../../i18n/xx/libwavplugin.ts \
16 ../../../../i18n/en/libwavplugin.ts \ 16 ../../../../i18n/en/libwavplugin.ts \
17 ../../../../i18n/es/libwavplugin.ts \ 17 ../../../../i18n/es/libwavplugin.ts \
18 ../../../../i18n/fr/libwavplugin.ts \ 18 ../../../../i18n/fr/libwavplugin.ts \
19 ../../../../i18n/hu/libwavplugin.ts \ 19 ../../../../i18n/hu/libwavplugin.ts \
20 ../../../../i18n/ja/libwavplugin.ts \ 20 ../../../../i18n/ja/libwavplugin.ts \
21 ../../../../i18n/ko/libwavplugin.ts \ 21 ../../../../i18n/ko/libwavplugin.ts \
22 ../../../../i18n/no/libwavplugin.ts \ 22 ../../../../i18n/no/libwavplugin.ts \
23 ../../../../i18n/pl/libwavplugin.ts \ 23 ../../../../i18n/pl/libwavplugin.ts \
24 ../../../../i18n/pt/libwavplugin.ts \ 24 ../../../../i18n/pt/libwavplugin.ts \
25 ../../../../i18n/pt_BR/libwavplugin.ts \ 25 ../../../../i18n/pt_BR/libwavplugin.ts \
26 ../../../../i18n/sl/libwavplugin.ts \ 26 ../../../../i18n/sl/libwavplugin.ts \
27 ../../../../i18n/zh_CN/libwavplugin.ts \ 27 ../../../../i18n/zh_CN/libwavplugin.ts \
28 ../../../../i18n/zh_TW/libwavplugin.ts 28 ../../../../i18n/zh_TW/libwavplugin.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
diff --git a/core/pim/today/plugins/addressbook/addressbook.pro b/core/pim/today/plugins/addressbook/addressbook.pro
index 4ebbc9e..54aaff2 100644
--- a/core/pim/today/plugins/addressbook/addressbook.pro
+++ b/core/pim/today/plugins/addressbook/addressbook.pro
@@ -1,43 +1,43 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG -= moc 2CONFIG -= moc
3CONFIG += qt release 3CONFIG += qt plugin release
4 4
5# Input 5# Input
6HEADERS = addressplugin.h addresspluginimpl.h addresspluginconfig.h \ 6HEADERS = addressplugin.h addresspluginimpl.h addresspluginconfig.h \
7 addresspluginwidget.h 7 addresspluginwidget.h
8SOURCES = addressplugin.cpp addresspluginimpl.cpp addresspluginconfig.cpp \ 8SOURCES = addressplugin.cpp addresspluginimpl.cpp addresspluginconfig.cpp \
9 addresspluginwidget.cpp 9 addresspluginwidget.cpp
10 10
11INCLUDEPATH += $(OPIEDIR)/include \ 11INCLUDEPATH += $(OPIEDIR)/include \
12 ../ ../library 12 ../ ../library
13DEPENDPATH += $(OPIEDIR)/include \ 13DEPENDPATH += $(OPIEDIR)/include \
14 ../ ../library 14 ../ ../library
15 15
16LIBS+= -lqpe -lopie 16LIBS+= -lqpe -lopie
17 17
18DESTDIR = $(OPIEDIR)/plugins/today 18DESTDIR = $(OPIEDIR)/plugins/today
19TARGET = todayaddressbookplugin 19TARGET = todayaddressbookplugin
20 20
21TRANSLATIONS = ../../../../../i18n/de/libtodayaddressbookplugin.ts \ 21TRANSLATIONS = ../../../../../i18n/de/libtodayaddressbookplugin.ts \
22 ../../../../../i18n/nl/libtodayaddressbookplugin.ts \ 22 ../../../../../i18n/nl/libtodayaddressbookplugin.ts \
23 ../../../../../i18n/xx/libtodayaddressbookplugin.ts \ 23 ../../../../../i18n/xx/libtodayaddressbookplugin.ts \
24 ../../../../../i18n/en/libtodayaddressbookplugin.ts \ 24 ../../../../../i18n/en/libtodayaddressbookplugin.ts \
25 ../../../../../i18n/es/libtodayaddressbookplugin.ts \ 25 ../../../../../i18n/es/libtodayaddressbookplugin.ts \
26 ../../../../../i18n/fr/libtodayaddressbookplugin.ts \ 26 ../../../../../i18n/fr/libtodayaddressbookplugin.ts \
27 ../../../../../i18n/hu/libtodayaddressbookplugin.ts \ 27 ../../../../../i18n/hu/libtodayaddressbookplugin.ts \
28 ../../../../../i18n/ja/libtodayaddressbookplugin.ts \ 28 ../../../../../i18n/ja/libtodayaddressbookplugin.ts \
29 ../../../../../i18n/ko/libtodayaddressbookplugin.ts \ 29 ../../../../../i18n/ko/libtodayaddressbookplugin.ts \
30 ../../../../../i18n/no/libtodayaddressbookplugin.ts \ 30 ../../../../../i18n/no/libtodayaddressbookplugin.ts \
31 ../../../../../i18n/pl/libtodayaddressbookplugin.ts \ 31 ../../../../../i18n/pl/libtodayaddressbookplugin.ts \
32 ../../../../../i18n/pt/libtodayaddressbookplugin.ts \ 32 ../../../../../i18n/pt/libtodayaddressbookplugin.ts \
33 ../../../../../i18n/pt_BR/libtodayaddressbookplugin.ts \ 33 ../../../../../i18n/pt_BR/libtodayaddressbookplugin.ts \
34 ../../../../../i18n/sl/libtodayaddressbookplugin.ts \ 34 ../../../../../i18n/sl/libtodayaddressbookplugin.ts \
35 ../../../../../i18n/zh_CN/libtodayaddressbookplugin.ts \ 35 ../../../../../i18n/zh_CN/libtodayaddressbookplugin.ts \
36 ../../../../../i18n/zh_TW/libtodayaddressbookplugin.ts \ 36 ../../../../../i18n/zh_TW/libtodayaddressbookplugin.ts \
37 ../../../../../i18n/it/libtodayaddressbookplugin.ts \ 37 ../../../../../i18n/it/libtodayaddressbookplugin.ts \
38 ../../../../../i18n/da/libtodayaddressbookplugin.ts 38 ../../../../../i18n/da/libtodayaddressbookplugin.ts
39 39
40 40
41 41
42 42
43include ( $(OPIEDIR)/include.pro ) 43include ( $(OPIEDIR)/include.pro )
diff --git a/core/pim/today/plugins/datebook/datebook.pro b/core/pim/today/plugins/datebook/datebook.pro
index e0a1dcb..2139f63 100644
--- a/core/pim/today/plugins/datebook/datebook.pro
+++ b/core/pim/today/plugins/datebook/datebook.pro
@@ -1,39 +1,39 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG -= moc 2CONFIG -= moc
3CONFIG += qt release 3CONFIG += qt plugin release
4# Input 4# Input
5HEADERS = datebookplugin.h datebookpluginimpl.h datebookpluginconfig.h \ 5HEADERS = datebookplugin.h datebookpluginimpl.h datebookpluginconfig.h \
6 datebookevent.h datebookpluginwidget.h 6 datebookevent.h datebookpluginwidget.h
7SOURCES = datebookplugin.cpp datebookpluginimpl.cpp datebookpluginconfig.cpp \ 7SOURCES = datebookplugin.cpp datebookpluginimpl.cpp datebookpluginconfig.cpp \
8 datebookevent.cpp datebookpluginwidget.cpp 8 datebookevent.cpp datebookpluginwidget.cpp
9 9
10INCLUDEPATH += $(OPIEDIR)/include \ 10INCLUDEPATH += $(OPIEDIR)/include \
11 ../ ../library 11 ../ ../library
12DEPENDPATH += $(OPIEDIR)/include \ 12DEPENDPATH += $(OPIEDIR)/include \
13 ../ ../library 13 ../ ../library
14 14
15LIBS+= -lqpe -lopie 15LIBS+= -lqpe -lopie
16 16
17DESTDIR = $(OPIEDIR)/plugins/today 17DESTDIR = $(OPIEDIR)/plugins/today
18TARGET = todaydatebookplugin 18TARGET = todaydatebookplugin
19 19
20TRANSLATIONS = ../../../../../i18n/de/libtodaydatebookplugin.ts \ 20TRANSLATIONS = ../../../../../i18n/de/libtodaydatebookplugin.ts \
21 ../../../../../i18n/nl/libtodaydatebookplugin.ts \ 21 ../../../../../i18n/nl/libtodaydatebookplugin.ts \
22 ../../../../../i18n/xx/libtodaydatebookplugin.ts \ 22 ../../../../../i18n/xx/libtodaydatebookplugin.ts \
23 ../../../../../i18n/en/libtodaydatebookplugin.ts \ 23 ../../../../../i18n/en/libtodaydatebookplugin.ts \
24 ../../../../../i18n/es/libtodaydatebookplugin.ts \ 24 ../../../../../i18n/es/libtodaydatebookplugin.ts \
25 ../../../../../i18n/fr/libtodaydatebookplugin.ts \ 25 ../../../../../i18n/fr/libtodaydatebookplugin.ts \
26 ../../../../../i18n/hu/libtodaydatebookplugin.ts \ 26 ../../../../../i18n/hu/libtodaydatebookplugin.ts \
27 ../../../../../i18n/ja/libtodaydatebookplugin.ts \ 27 ../../../../../i18n/ja/libtodaydatebookplugin.ts \
28 ../../../../../i18n/ko/libtodaydatebookplugin.ts \ 28 ../../../../../i18n/ko/libtodaydatebookplugin.ts \
29 ../../../../../i18n/no/libtodaydatebookplugin.ts \ 29 ../../../../../i18n/no/libtodaydatebookplugin.ts \
30 ../../../../../i18n/pl/libtodaydatebookplugin.ts \ 30 ../../../../../i18n/pl/libtodaydatebookplugin.ts \
31 ../../../../../i18n/pt/libtodaydatebookplugin.ts \ 31 ../../../../../i18n/pt/libtodaydatebookplugin.ts \
32 ../../../../../i18n/pt_BR/libtodaydatebookplugin.ts \ 32 ../../../../../i18n/pt_BR/libtodaydatebookplugin.ts \
33 ../../../../../i18n/sl/libtodaydatebookplugin.ts \ 33 ../../../../../i18n/sl/libtodaydatebookplugin.ts \
34 ../../../../../i18n/zh_CN/libtodaydatebookplugin.ts \ 34 ../../../../../i18n/zh_CN/libtodaydatebookplugin.ts \
35 ../../../../../i18n/zh_TW/libtodaydatebookplugin.ts \ 35 ../../../../../i18n/zh_TW/libtodaydatebookplugin.ts \
36 ../../../../../i18n/it/libtodaydatebookplugin.ts \ 36 ../../../../../i18n/it/libtodaydatebookplugin.ts \
37 ../../../../../i18n/da/libtodaydatebookplugin.ts 37 ../../../../../i18n/da/libtodaydatebookplugin.ts
38 38
39include ( $(OPIEDIR)/include.pro ) 39include ( $(OPIEDIR)/include.pro )
diff --git a/core/pim/today/plugins/mail/mail.pro b/core/pim/today/plugins/mail/mail.pro
index 70c484d..421b3a5 100644
--- a/core/pim/today/plugins/mail/mail.pro
+++ b/core/pim/today/plugins/mail/mail.pro
@@ -1,37 +1,37 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG -= moc 2CONFIG -= moc
3CONFIG += qt release 3CONFIG += qt plugin release
4 4
5# Input 5# Input
6HEADERS = mailplugin.h mailpluginimpl.h mailpluginwidget.h 6HEADERS = mailplugin.h mailpluginimpl.h mailpluginwidget.h
7SOURCES = mailplugin.cpp mailpluginimpl.cpp mailpluginwidget.cpp 7SOURCES = mailplugin.cpp mailpluginimpl.cpp mailpluginwidget.cpp
8 8
9INCLUDEPATH += $(OPIEDIR)/include \ 9INCLUDEPATH += $(OPIEDIR)/include \
10 ../ ../library 10 ../ ../library
11DEPENDPATH += $(OPIEDIR)/include \ 11DEPENDPATH += $(OPIEDIR)/include \
12 ../ ../library 12 ../ ../library
13 13
14LIBS+= -lqpe -lopie 14LIBS+= -lqpe -lopie
15 15
16DESTDIR = $(OPIEDIR)/plugins/today 16DESTDIR = $(OPIEDIR)/plugins/today
17TARGET = todaymailplugin 17TARGET = todaymailplugin
18 18
19TRANSLATIONS = ../../../../../i18n/de/libtodaymailplugin.ts \ 19TRANSLATIONS = ../../../../../i18n/de/libtodaymailplugin.ts \
20 ../../../../../i18n/nl/libtodaymailplugin.ts \ 20 ../../../../../i18n/nl/libtodaymailplugin.ts \
21 ../../../../../i18n/xx/libtodaymailplugin.ts \ 21 ../../../../../i18n/xx/libtodaymailplugin.ts \
22 ../../../../../i18n/en/libtodaymailplugin.ts \ 22 ../../../../../i18n/en/libtodaymailplugin.ts \
23 ../../../../../i18n/es/libtodaymailplugin.ts \ 23 ../../../../../i18n/es/libtodaymailplugin.ts \
24 ../../../../../i18n/fr/libtodaymailplugin.ts \ 24 ../../../../../i18n/fr/libtodaymailplugin.ts \
25 ../../../../../i18n/hu/libtodaymailplugin.ts \ 25 ../../../../../i18n/hu/libtodaymailplugin.ts \
26 ../../../../../i18n/ja/libtodaymailplugin.ts \ 26 ../../../../../i18n/ja/libtodaymailplugin.ts \
27 ../../../../../i18n/ko/libtodaymailplugin.ts \ 27 ../../../../../i18n/ko/libtodaymailplugin.ts \
28 ../../../../../i18n/no/libtodaymailplugin.ts \ 28 ../../../../../i18n/no/libtodaymailplugin.ts \
29 ../../../../../i18n/pl/libtodaymailplugin.ts \ 29 ../../../../../i18n/pl/libtodaymailplugin.ts \
30 ../../../../../i18n/pt/libtodaymailplugin.ts \ 30 ../../../../../i18n/pt/libtodaymailplugin.ts \
31 ../../../../../i18n/pt_BR/libtodaymailplugin.ts \ 31 ../../../../../i18n/pt_BR/libtodaymailplugin.ts \
32 ../../../../../i18n/sl/libtodaymailplugin.ts \ 32 ../../../../../i18n/sl/libtodaymailplugin.ts \
33 ../../../../../i18n/zh_CN/libtodaymailplugin.ts \ 33 ../../../../../i18n/zh_CN/libtodaymailplugin.ts \
34 ../../../../../i18n/zh_TW/libtodaymailplugin.ts \ 34 ../../../../../i18n/zh_TW/libtodaymailplugin.ts \
35 ../../../../../i18n/it/libtodaymailplugin.ts \ 35 ../../../../../i18n/it/libtodaymailplugin.ts \
36 ../../../../../i18n/da/libtodaymailplugin.ts 36 ../../../../../i18n/da/libtodaymailplugin.ts
37include ( $(OPIEDIR)/include.pro ) 37include ( $(OPIEDIR)/include.pro )
diff --git a/core/pim/today/plugins/todolist/todolist.pro b/core/pim/today/plugins/todolist/todolist.pro
index 31a6a27..c8730bb 100644
--- a/core/pim/today/plugins/todolist/todolist.pro
+++ b/core/pim/today/plugins/todolist/todolist.pro
@@ -1,40 +1,40 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG -= moc 2CONFIG -= moc
3CONFIG += qt release 3CONFIG += qt plugin release
4 4
5# Input 5# Input
6HEADERS = todoplugin.h todopluginimpl.h todopluginconfig.h \ 6HEADERS = todoplugin.h todopluginimpl.h todopluginconfig.h \
7 todopluginwidget.h 7 todopluginwidget.h
8SOURCES = todoplugin.cpp todopluginimpl.cpp todopluginconfig.cpp \ 8SOURCES = todoplugin.cpp todopluginimpl.cpp todopluginconfig.cpp \
9 todopluginwidget.cpp 9 todopluginwidget.cpp
10 10
11INCLUDEPATH += $(OPIEDIR)/include \ 11INCLUDEPATH += $(OPIEDIR)/include \
12 ../ ../library 12 ../ ../library
13DEPENDPATH += $(OPIEDIR)/include \ 13DEPENDPATH += $(OPIEDIR)/include \
14 ../ ../library 14 ../ ../library
15 15
16LIBS+= -lqpe -lopie 16LIBS+= -lqpe -lopie
17 17
18DESTDIR = $(OPIEDIR)/plugins/today 18DESTDIR = $(OPIEDIR)/plugins/today
19TARGET = todaytodolistplugin 19TARGET = todaytodolistplugin
20 20
21TRANSLATIONS = ../../../../../i18n/de/libtodaytodolistplugin.ts \ 21TRANSLATIONS = ../../../../../i18n/de/libtodaytodolistplugin.ts \
22 ../../../../../i18n/nl/libtodaytodolistplugin.ts \ 22 ../../../../../i18n/nl/libtodaytodolistplugin.ts \
23 ../../../../../i18n/xx/libtodaytodolistplugin.ts \ 23 ../../../../../i18n/xx/libtodaytodolistplugin.ts \
24 ../../../../../i18n/en/libtodaytodolistplugin.ts \ 24 ../../../../../i18n/en/libtodaytodolistplugin.ts \
25 ../../../../../i18n/es/libtodaytodolistplugin.ts \ 25 ../../../../../i18n/es/libtodaytodolistplugin.ts \
26 ../../../../../i18n/fr/libtodaytodolistplugin.ts \ 26 ../../../../../i18n/fr/libtodaytodolistplugin.ts \
27 ../../../../../i18n/hu/libtodaytodolistplugin.ts \ 27 ../../../../../i18n/hu/libtodaytodolistplugin.ts \
28 ../../../../../i18n/ja/libtodaytodolistplugin.ts \ 28 ../../../../../i18n/ja/libtodaytodolistplugin.ts \
29 ../../../../../i18n/ko/libtodaytodolistplugin.ts \ 29 ../../../../../i18n/ko/libtodaytodolistplugin.ts \
30 ../../../../../i18n/no/libtodaytodolistplugin.ts \ 30 ../../../../../i18n/no/libtodaytodolistplugin.ts \
31 ../../../../../i18n/pl/libtodaytodolistplugin.ts \ 31 ../../../../../i18n/pl/libtodaytodolistplugin.ts \
32 ../../../../../i18n/pt/libtodaytodolistplugin.ts \ 32 ../../../../../i18n/pt/libtodaytodolistplugin.ts \
33 ../../../../../i18n/pt_BR/libtodaytodolistplugin.ts \ 33 ../../../../../i18n/pt_BR/libtodaytodolistplugin.ts \
34 ../../../../../i18n/sl/libtodaytodolistplugin.ts \ 34 ../../../../../i18n/sl/libtodaytodolistplugin.ts \
35 ../../../../../i18n/zh_CN/libtodaytodolistplugin.ts \ 35 ../../../../../i18n/zh_CN/libtodaytodolistplugin.ts \
36 ../../../../../i18n/zh_TW/libtodaytodolistplugin.ts \ 36 ../../../../../i18n/zh_TW/libtodaytodolistplugin.ts \
37 ../../../../../i18n/it/libtodaytodolistplugin.ts \ 37 ../../../../../i18n/it/libtodaytodolistplugin.ts \
38 ../../../../../i18n/da/libtodaytodolistplugin.ts 38 ../../../../../i18n/da/libtodaytodolistplugin.ts
39 39
40include ( $(OPIEDIR)/include.pro ) 40include ( $(OPIEDIR)/include.pro )
diff --git a/core/pim/today/today.cpp b/core/pim/today/today.cpp
index f213943..cb18c1c 100644
--- a/core/pim/today/today.cpp
+++ b/core/pim/today/today.cpp
@@ -1,373 +1,380 @@
1/* 1/*
2 * today.cpp 2 * today.cpp
3 * 3 *
4 * copyright : (c) 2002,2003 by Maximilian Reiß 4 * copyright : (c) 2002,2003 by Maximilian Reiß
5 * email : harlekin@handhelds.org 5 * email : harlekin@handhelds.org
6 * 6 *
7 */ 7 */
8/*************************************************************************** 8/***************************************************************************
9 * * 9 * *
10 * This program is free software; you can redistribute it and/or modify * 10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by * 11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or * 12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. * 13 * (at your option) any later version. *
14 * * 14 * *
15 ***************************************************************************/ 15 ***************************************************************************/
16 16
17 17
18 18
19#define QTOPIA_INTERNAL_LANGLIST 19#define QTOPIA_INTERNAL_LANGLIST
20 20
21#include "today.h" 21#include "today.h"
22 22
23#include <qpe/config.h> 23#include <qpe/config.h>
24#include <qpe/qcopenvelope_qws.h> 24#include <qpe/qcopenvelope_qws.h>
25#include <qpe/resource.h> 25#include <qpe/resource.h>
26#include <qpe/global.h> 26#include <qpe/global.h>
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qpe/contact.h> 28#include <qpe/contact.h>
29#include <qpe/timestring.h> 29#include <qpe/timestring.h>
30 30
31#include <qdir.h> 31#include <qdir.h>
32#include <qfile.h> 32#include <qfile.h>
33#include <qtimer.h> 33#include <qtimer.h>
34#include <qwhatsthis.h> 34#include <qwhatsthis.h>
35#include <qtranslator.h> 35#include <qtranslator.h>
36 36
37struct TodayPlugin { 37struct TodayPlugin {
38 TodayPlugin() : library( 0 ), iface( 0 ), guiPart( 0 ), guiBox( 0 ) {} 38 TodayPlugin() : library( 0 ), iface( 0 ), guiPart( 0 ), guiBox( 0 ) {}
39 QLibrary *library; 39 QLibrary *library;
40 QInterfacePtr<TodayPluginInterface> iface; 40 QInterfacePtr<TodayPluginInterface> iface;
41 TodayPluginObject *guiPart; 41 TodayPluginObject *guiPart;
42 QWidget *guiBox; 42 QWidget *guiBox;
43 QString name; 43 QString name;
44 bool active; 44 bool active;
45 bool excludeRefresh; 45 bool excludeRefresh;
46 int pos; 46 int pos;
47}; 47};
48 48
49static QValueList<TodayPlugin> pluginList; 49static QValueList<TodayPlugin> pluginList;
50 50
51Today::Today( QWidget* parent, const char* name, WFlags fl ) 51Today::Today( QWidget* parent, const char* name, WFlags fl )
52 : TodayBase( parent, name, fl ) { 52 : TodayBase( parent, name, fl ) {
53 53
54 QObject::connect( (QObject*)ConfigButton, SIGNAL( clicked() ), this, SLOT( startConfig() ) ); 54 QObject::connect( (QObject*)ConfigButton, SIGNAL( clicked() ), this, SLOT( startConfig() ) );
55 QObject::connect( (QObject*)OwnerField, SIGNAL( clicked() ), this, SLOT( editCard() ) ); 55 QObject::connect( (QObject*)OwnerField, SIGNAL( clicked() ), this, SLOT( editCard() ) );
56 56
57#if defined(Q_WS_QWS) 57#if defined(Q_WS_QWS)
58#if !defined(QT_NO_COP) 58#if !defined(QT_NO_COP)
59 QCopChannel *todayChannel = new QCopChannel( "QPE/Today" , this ); 59 QCopChannel *todayChannel = new QCopChannel( "QPE/Today" , this );
60 connect ( todayChannel, SIGNAL( received( const QCString &, const QByteArray &) ), 60 connect ( todayChannel, SIGNAL( received( const QCString &, const QByteArray &) ),
61 this, SLOT ( channelReceived( const QCString &, const QByteArray &) ) ); 61 this, SLOT ( channelReceived( const QCString &, const QByteArray &) ) );
62#endif 62#endif
63#endif 63#endif
64 64
65 setOwnerField(); 65 setOwnerField();
66 m_refreshTimer = new QTimer( this ); 66 m_refreshTimer = new QTimer( this );
67 connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); 67 connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
68 m_refreshTimer->start( 15000 ); 68 m_refreshTimer->start( 15000 );
69 //init(); 69 //init();
70 loadPlugins(); 70 loadPlugins();
71 showMaximized(); 71 showMaximized();
72} 72}
73 73
74/** 74/**
75 * Qcop receive method. 75 * Qcop receive method.
76 */ 76 */
77void Today::channelReceived( const QCString &msg, const QByteArray & data ) { 77void Today::channelReceived( const QCString &msg, const QByteArray & data ) {
78 QDataStream stream( data, IO_ReadOnly ); 78 QDataStream stream( data, IO_ReadOnly );
79 if ( msg == "message(QString)" ) { 79 if ( msg == "message(QString)" ) {
80 QString message; 80 QString message;
81 stream >> message; 81 stream >> message;
82 setOwnerField( message ); 82 setOwnerField( message );
83 } 83 }
84} 84}
85 85
86void Today::setRefreshTimer( int interval ) { 86void Today::setRefreshTimer( int interval ) {
87 87
88 disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); 88 disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
89 89
90 // 0 is "never" case 90 // 0 is "never" case
91 if ( !interval == 0 ) { 91 if ( !interval == 0 ) {
92 connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); 92 connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
93 m_refreshTimer->changeInterval( interval ); 93 m_refreshTimer->changeInterval( interval );
94 } 94 }
95} 95}
96 96
97 97
98/** 98/**
99 * Initialises the owner field with the default value, the username 99 * Initialises the owner field with the default value, the username
100 */ 100 */
101void Today::setOwnerField() { 101void Today::setOwnerField() {
102 QString file = Global::applicationFileName( "addressbook", "businesscard.vcf" ); 102 QString file = Global::applicationFileName( "addressbook", "businesscard.vcf" );
103 if ( QFile::exists( file ) ) { 103 if ( QFile::exists( file ) ) {
104 Contact cont = Contact::readVCard( file )[0]; 104 Contact cont = Contact::readVCard( file )[0];
105 QString returnString = cont.fullName(); 105 QString returnString = cont.fullName();
106 OwnerField->setText( "<b>" + tr ( "Owned by " ) + returnString + "</b>" ); 106 OwnerField->setText( "<b>" + tr ( "Owned by " ) + returnString + "</b>" );
107 } else { 107 } else {
108 OwnerField->setText( "<b>" + tr ( "Please fill out the business card" ) + " </b>" ); 108 OwnerField->setText( "<b>" + tr ( "Please fill out the business card" ) + " </b>" );
109 } 109 }
110} 110}
111 111
112/** 112/**
113 * Set the owner field with a given QString, for example per qcop. 113 * Set the owner field with a given QString, for example per qcop.
114 */ 114 */
115void Today::setOwnerField( QString &message ) { 115void Today::setOwnerField( QString &message ) {
116 if ( !message.isEmpty() ) { 116 if ( !message.isEmpty() ) {
117 OwnerField->setText( "<b>" + message + "</b>" ); 117 OwnerField->setText( "<b>" + message + "</b>" );
118 } 118 }
119} 119}
120 120
121/** 121/**
122 * Init stuff needed for today. Reads the config file. 122 * Init stuff needed for today. Reads the config file.
123 */ 123 */
124void Today::init() { 124void Today::init() {
125 // read config 125 // read config
126 Config cfg( "today" ); 126 Config cfg( "today" );
127 127
128 cfg.setGroup( "Plugins" ); 128 cfg.setGroup( "Plugins" );
129 m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' ); 129 m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' );
130 m_allApplets = cfg.readListEntry( "AllApplets", ',' ); 130 m_allApplets = cfg.readListEntry( "AllApplets", ',' );
131 131
132 cfg.setGroup( "General" ); 132 cfg.setGroup( "General" );
133 m_iconSize = cfg.readNumEntry( "IconSize", 18 ); 133 m_iconSize = cfg.readNumEntry( "IconSize", 18 );
134 m_hideBanner = cfg.readNumEntry( "HideBanner", 0 ); 134 m_hideBanner = cfg.readNumEntry( "HideBanner", 0 );
135 setRefreshTimer( cfg.readNumEntry( "checkinterval", 15000 ) ); 135 setRefreshTimer( cfg.readNumEntry( "checkinterval", 15000 ) );
136 136
137 // set the date in top label 137 // set the date in top label
138 QDate date = QDate::currentDate(); 138 QDate date = QDate::currentDate();
139 DateLabel->setText( QString( "<font color=#FFFFFF>" + TimeString::longDateString( date ) + "</font>" ) ); 139 DateLabel->setText( QString( "<font color=#FFFFFF>" + TimeString::longDateString( date ) + "</font>" ) );
140 140
141 if ( layout ) { 141 if ( layout ) {
142 delete layout; 142 delete layout;
143 } 143 }
144 144
145 if ( m_hideBanner ) { 145 if ( m_hideBanner ) {
146 Opiezilla->hide(); 146 Opiezilla->hide();
147 TodayLabel->hide(); 147 TodayLabel->hide();
148 } else { 148 } else {
149 Opiezilla->show(); 149 Opiezilla->show();
150 TodayLabel->show(); 150 TodayLabel->show();
151 } 151 }
152 152
153 layout = new QVBoxLayout( this ); 153 layout = new QVBoxLayout( this );
154 layout->addWidget( Frame ); 154 layout->addWidget( Frame );
155 layout->addWidget( OwnerField ); 155 layout->addWidget( OwnerField );
156} 156}
157 157
158/** 158/**
159 * Load the plugins 159 * Load the plugins
160 */ 160 */
161void Today::loadPlugins() { 161void Today::loadPlugins() {
162 162
163 init(); 163 init();
164 QValueList<TodayPlugin>::Iterator tit; 164 QValueList<TodayPlugin>::Iterator tit;
165 if ( !pluginList.isEmpty() ) { 165 if ( !pluginList.isEmpty() ) {
166 for ( tit = pluginList.begin(); tit != pluginList.end(); ++tit ) { 166 for ( tit = pluginList.begin(); tit != pluginList.end(); ++tit ) {
167 (*tit).guiBox->hide(); 167 (*tit).guiBox->hide();
168 (*tit).guiBox->reparent( 0, QPoint( 0, 0 ) ); 168 (*tit).guiBox->reparent( 0, QPoint( 0, 0 ) );
169 delete (*tit).guiBox; 169 delete (*tit).guiBox;
170 (*tit).library->unload(); 170 (*tit).library->unload();
171 delete (*tit).library; 171 delete (*tit).library;
172 } 172 }
173 pluginList.clear(); 173 pluginList.clear();
174 } 174 }
175 175
176 QString path = QPEApplication::qpeDir() + "/plugins/today"; 176 QString path = QPEApplication::qpeDir() + "/plugins/today";
177 qWarning("Searching for Plugins in: %s", path.latin1());
178#ifdef Q_OS_MACX
179 QDir dir( path, "lib*.dylib" );
180#else
177 QDir dir( path, "lib*.so" ); 181 QDir dir( path, "lib*.so" );
182#endif
178 183
179 QStringList list = dir.entryList(); 184 QStringList list = dir.entryList();
180 QStringList::Iterator it; 185 QStringList::Iterator it;
181 186
187 qWarning("Found: %d entries !", list.count() );
188
182 QMap<QString, TodayPlugin> tempList; 189 QMap<QString, TodayPlugin> tempList;
183 190
184 for ( it = list.begin(); it != list.end(); ++it ) { 191 for ( it = list.begin(); it != list.end(); ++it ) {
185 QInterfacePtr<TodayPluginInterface> iface; 192 QInterfacePtr<TodayPluginInterface> iface;
186 QLibrary *lib = new QLibrary( path + "/" + *it ); 193 QLibrary *lib = new QLibrary( path + "/" + *it );
187 194
188 qDebug( "querying: %s", QString( path + "/" + *it ).latin1() ); 195 qDebug( "querying: %s", QString( path + "/" + *it ).latin1() );
189 if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) { 196 if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) {
190 qDebug( "accepted: %s", QString( path + "/" + *it ).latin1() ); 197 qDebug( "accepted: %s", QString( path + "/" + *it ).latin1() );
191 qDebug( QString(*it) ); 198 qDebug( QString(*it) );
192 199
193 TodayPlugin plugin; 200 TodayPlugin plugin;
194 plugin.library = lib; 201 plugin.library = lib;
195 plugin.iface = iface; 202 plugin.iface = iface;
196 plugin.name = QString(*it); 203 plugin.name = QString(*it);
197 204
198 QString type = (*it).left( (*it).find(".") ); 205 QString type = (*it).left( (*it).find(".") );
199 206
200 // grr, sharp rom does not know Global::languageList(); 207 // grr, sharp rom does not know Global::languageList();
201 // QStringList langs = Global::languageList(); 208 // QStringList langs = Global::languageList();
202 QString tfn = QPEApplication::qpeDir() + "/i18n/"; 209 QString tfn = QPEApplication::qpeDir() + "/i18n/";
203 QDir langDir = tfn; 210 QDir langDir = tfn;
204 QStringList langs = langDir.entryList("*", QDir::Dirs ); 211 QStringList langs = langDir.entryList("*", QDir::Dirs );
205 212
206 for (QStringList::ConstIterator lit = langs.begin(); lit!=langs.end(); ++lit) { 213 for (QStringList::ConstIterator lit = langs.begin(); lit!=langs.end(); ++lit) {
207 QString lang = *lit; 214 QString lang = *lit;
208 qDebug( "Languages: " + lang ); 215 qDebug( "Languages: " + lang );
209 QTranslator * trans = new QTranslator( qApp ); 216 QTranslator * trans = new QTranslator( qApp );
210 QString tfn = QPEApplication::qpeDir()+"/i18n/" + lang + "/" + type + ".qm"; 217 QString tfn = QPEApplication::qpeDir()+"/i18n/" + lang + "/" + type + ".qm";
211 if ( trans->load( tfn ) ) { 218 if ( trans->load( tfn ) ) {
212 qApp->installTranslator( trans ); 219 qApp->installTranslator( trans );
213 } else { 220 } else {
214 delete trans; 221 delete trans;
215 } 222 }
216 } 223 }
217 224
218 // find out if plugins should be shown 225 // find out if plugins should be shown
219 if ( m_excludeApplets.grep( *it ).isEmpty() ) { 226 if ( m_excludeApplets.grep( *it ).isEmpty() ) {
220 plugin.active = true; 227 plugin.active = true;
221 } else { 228 } else {
222 plugin.active = false; 229 plugin.active = false;
223 } 230 }
224 231
225 plugin.guiPart = plugin.iface->guiPart(); 232 plugin.guiPart = plugin.iface->guiPart();
226 plugin.excludeRefresh = plugin.guiPart->excludeFromRefresh(); 233 plugin.excludeRefresh = plugin.guiPart->excludeFromRefresh();
227 234
228 // package the whole thing into a qwidget so it can be shown and hidden 235 // package the whole thing into a qwidget so it can be shown and hidden
229 plugin.guiBox = new QWidget( this ); 236 plugin.guiBox = new QWidget( this );
230 QHBoxLayout *boxLayout = new QHBoxLayout( plugin.guiBox ); 237 QHBoxLayout *boxLayout = new QHBoxLayout( plugin.guiBox );
231 QPixmap plugPix; 238 QPixmap plugPix;
232 plugPix.convertFromImage( Resource::loadImage( plugin.guiPart->pixmapNameWidget() ).smoothScale( m_iconSize, m_iconSize ), 0 ); 239 plugPix.convertFromImage( Resource::loadImage( plugin.guiPart->pixmapNameWidget() ).smoothScale( m_iconSize, m_iconSize ), 0 );
233 OClickableLabel* plugIcon = new OClickableLabel( plugin.guiBox ); 240 OClickableLabel* plugIcon = new OClickableLabel( plugin.guiBox );
234 plugIcon->setPixmap( plugPix ); 241 plugIcon->setPixmap( plugPix );
235 QWhatsThis::add( plugIcon, tr("Click here to launch the associated app") ); 242 QWhatsThis::add( plugIcon, tr("Click here to launch the associated app") );
236 plugIcon->setName( plugin.guiPart->appName() ); 243 plugIcon->setName( plugin.guiPart->appName() );
237 connect( plugIcon, SIGNAL( clicked() ), this, SLOT( startApplication() ) ); 244 connect( plugIcon, SIGNAL( clicked() ), this, SLOT( startApplication() ) );
238 // a scrollview for each plugin 245 // a scrollview for each plugin
239 QScrollView* sv = new QScrollView( plugin.guiBox ); 246 QScrollView* sv = new QScrollView( plugin.guiBox );
240 QWidget *plugWidget = plugin.guiPart->widget( sv->viewport() ); 247 QWidget *plugWidget = plugin.guiPart->widget( sv->viewport() );
241 // not sure if that is good .-) 248 // not sure if that is good .-)
242 sv->setMinimumHeight( 12 ); 249 sv->setMinimumHeight( 12 );
243 sv->setResizePolicy( QScrollView::AutoOneFit ); 250 sv->setResizePolicy( QScrollView::AutoOneFit );
244 sv->setHScrollBarMode( QScrollView::AlwaysOff ); 251 sv->setHScrollBarMode( QScrollView::AlwaysOff );
245 sv->setFrameShape( QFrame::NoFrame ); 252 sv->setFrameShape( QFrame::NoFrame );
246 sv->addChild( plugWidget ); 253 sv->addChild( plugWidget );
247 // make sure the icon is on the top alligned 254 // make sure the icon is on the top alligned
248 boxLayout->addWidget( plugIcon, 0, AlignTop ); 255 boxLayout->addWidget( plugIcon, 0, AlignTop );
249 boxLayout->addWidget( sv, 0, AlignTop ); 256 boxLayout->addWidget( sv, 0, AlignTop );
250 boxLayout->setStretchFactor( plugIcon, 1 ); 257 boxLayout->setStretchFactor( plugIcon, 1 );
251 boxLayout->setStretchFactor( sv, 9 ); 258 boxLayout->setStretchFactor( sv, 9 );
252 // "prebuffer" it in one more list, to get the sorting done 259 // "prebuffer" it in one more list, to get the sorting done
253 tempList.insert( plugin.name, plugin ); 260 tempList.insert( plugin.name, plugin );
254 261
255 // on first start the list is off course empty 262 // on first start the list is off course empty
256 if ( m_allApplets.isEmpty() ) { 263 if ( m_allApplets.isEmpty() ) {
257 layout->addWidget( plugin.guiBox ); 264 layout->addWidget( plugin.guiBox );
258 pluginList.append( plugin ); 265 pluginList.append( plugin );
259 } 266 }
260 267
261 // if plugin is not yet in the list, add it to the layout too 268 // if plugin is not yet in the list, add it to the layout too
262 else if ( !m_allApplets.contains( plugin.name ) ) { 269 else if ( !m_allApplets.contains( plugin.name ) ) {
263 layout->addWidget( plugin.guiBox ); 270 layout->addWidget( plugin.guiBox );
264 pluginList.append( plugin ); 271 pluginList.append( plugin );
265 } 272 }
266 } else { 273 } else {
267 qDebug( "could not recognize %s", QString( path + "/" + *it ).latin1() ); 274 qDebug( "could not recognize %s", QString( path + "/" + *it ).latin1() );
268 delete lib; 275 delete lib;
269 } 276 }
270 } 277 }
271 278
272 if ( !m_allApplets.isEmpty() ) { 279 if ( !m_allApplets.isEmpty() ) {
273 TodayPlugin tempPlugin; 280 TodayPlugin tempPlugin;
274 QStringList::Iterator stringit; 281 QStringList::Iterator stringit;
275 282
276 for( stringit = m_allApplets.begin(); stringit != m_allApplets.end(); ++stringit ) { 283 for( stringit = m_allApplets.begin(); stringit != m_allApplets.end(); ++stringit ) {
277 tempPlugin = ( tempList.find( *stringit ) ).data(); 284 tempPlugin = ( tempList.find( *stringit ) ).data();
278 if ( !( (tempPlugin.name).isEmpty() ) ) { 285 if ( !( (tempPlugin.name).isEmpty() ) ) {
279 layout->addWidget( tempPlugin.guiBox ); 286 layout->addWidget( tempPlugin.guiBox );
280 pluginList.append( tempPlugin ); 287 pluginList.append( tempPlugin );
281 } 288 }
282 } 289 }
283 } 290 }
284 draw(); 291 draw();
285} 292}
286 293
287 294
288/** 295/**
289 * Repaint method. Reread all fields. 296 * Repaint method. Reread all fields.
290 */ 297 */
291void Today::draw() { 298void Today::draw() {
292 299
293 if ( pluginList.count() == 0 ) { 300 if ( pluginList.count() == 0 ) {
294 QLabel *noPlugins = new QLabel( this ); 301 QLabel *noPlugins = new QLabel( this );
295 noPlugins->setText( tr( "No plugins found" ) ); 302 noPlugins->setText( tr( "No plugins found" ) );
296 layout->addWidget( noPlugins ); 303 layout->addWidget( noPlugins );
297 return; 304 return;
298 } 305 }
299 306
300 uint count = 0; 307 uint count = 0;
301 TodayPlugin plugin; 308 TodayPlugin plugin;
302 for ( uint i = 0; i < pluginList.count(); i++ ) { 309 for ( uint i = 0; i < pluginList.count(); i++ ) {
303 plugin = pluginList[i]; 310 plugin = pluginList[i];
304 311
305 if ( plugin.active ) { 312 if ( plugin.active ) {
306 // qDebug( plugin.name + " is ACTIVE " ); 313 // qDebug( plugin.name + " is ACTIVE " );
307 plugin.guiBox->show(); 314 plugin.guiBox->show();
308 } else { 315 } else {
309 // qDebug( plugin.name + " is INACTIVE" ); 316 // qDebug( plugin.name + " is INACTIVE" );
310 plugin.guiBox->hide(); 317 plugin.guiBox->hide();
311 } 318 }
312 count++; 319 count++;
313 } 320 }
314 321
315 if ( count == 0 ) { 322 if ( count == 0 ) {
316 QLabel *noPluginsActive = new QLabel( this ); 323 QLabel *noPluginsActive = new QLabel( this );
317 noPluginsActive->setText( tr( "No plugins activated" ) ); 324 noPluginsActive->setText( tr( "No plugins activated" ) );
318 layout->addWidget( noPluginsActive ); 325 layout->addWidget( noPluginsActive );
319 } 326 }
320 layout->addStretch(0); 327 layout->addStretch(0);
321} 328}
322 329
323 330
324/** 331/**
325 * The method for the configuration dialog. 332 * The method for the configuration dialog.
326 */ 333 */
327void Today::startConfig() { 334void Today::startConfig() {
328 335
329 // disconnect timer to prevent problems while being on config dialog 336 // disconnect timer to prevent problems while being on config dialog
330 disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); 337 disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
331 m_refreshTimer->stop( ); 338 m_refreshTimer->stop( );
332 339
333 TodayConfig conf( this, "dialog", true ); 340 TodayConfig conf( this, "dialog", true );
334 341
335 TodayPlugin plugin; 342 TodayPlugin plugin;
336 QList<TodayConfigWidget> configWidgetList; 343 QList<TodayConfigWidget> configWidgetList;
337 344
338 for ( int i = pluginList.count() - 1; i >= 0; i-- ) { 345 for ( int i = pluginList.count() - 1; i >= 0; i-- ) {
339 plugin = pluginList[i]; 346 plugin = pluginList[i];
340 347
341 // load the config widgets in the tabs 348 // load the config widgets in the tabs
342 if ( plugin.guiPart->configWidget( this ) != 0l ) { 349 if ( plugin.guiPart->configWidget( this ) != 0l ) {
343 TodayConfigWidget* widget = plugin.guiPart->configWidget( conf.TabWidget3 ); 350 TodayConfigWidget* widget = plugin.guiPart->configWidget( conf.TabWidget3 );
344 configWidgetList.append( widget ); 351 configWidgetList.append( widget );
345 conf.TabWidget3->addTab( widget, plugin.guiPart->pixmapNameConfig() 352 conf.TabWidget3->addTab( widget, plugin.guiPart->pixmapNameConfig()
346 , plugin.guiPart->appName() ); 353 , plugin.guiPart->appName() );
347 } 354 }
348 // set the order/activate tab 355 // set the order/activate tab
349 conf.pluginManagement( plugin.name, plugin.guiPart->pluginName(), 356 conf.pluginManagement( plugin.name, plugin.guiPart->pluginName(),
350 Resource::loadPixmap( plugin.guiPart->pixmapNameWidget() ) ); 357 Resource::loadPixmap( plugin.guiPart->pixmapNameWidget() ) );
351 } 358 }
352 359
353 if ( conf.exec() == QDialog::Accepted ) { 360 if ( conf.exec() == QDialog::Accepted ) {
354 conf.writeConfig(); 361 conf.writeConfig();
355 TodayConfigWidget *confWidget; 362 TodayConfigWidget *confWidget;
356 for ( confWidget = configWidgetList.first(); confWidget != 0; 363 for ( confWidget = configWidgetList.first(); confWidget != 0;
357 confWidget = configWidgetList.next() ) { 364 confWidget = configWidgetList.next() ) {
358 confWidget->writeConfig(); 365 confWidget->writeConfig();
359 } 366 }
360 loadPlugins(); 367 loadPlugins();
361 } else { 368 } else {
362 // since refresh is not called in that case , reconnect the signal 369 // since refresh is not called in that case , reconnect the signal
363 m_refreshTimer->start( 15000 ); // get the config value in here later 370 m_refreshTimer->start( 15000 ); // get the config value in here later
364 connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); 371 connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
365 } 372 }
366} 373}
367 374
368 375
369/** 376/**
370 * Refresh for the view. Reload all applets 377 * Refresh for the view. Reload all applets
371 * 378 *
372 */ 379 */
373void Today::refresh() { 380void Today::refresh() {
diff --git a/core/qws/transferserver.cpp b/core/qws/transferserver.cpp
index 0337a94..239c824 100644
--- a/core/qws/transferserver.cpp
+++ b/core/qws/transferserver.cpp
@@ -1,308 +1,327 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#define _XOPEN_SOURCE 20#define _XOPEN_SOURCE
21#include <pwd.h> 21#include <pwd.h>
22#include <sys/types.h> 22#include <sys/types.h>
23#include <unistd.h> 23#include <unistd.h>
24#include <stdlib.h> 24#include <stdlib.h>
25#include <time.h> 25#include <time.h>
26
27#ifndef Q_OS_MACX
26#include <shadow.h> 28#include <shadow.h>
29#endif /* Q_OS_MACX */
27 30
28/* we need the _OS_LINUX stuff first ! */ 31/* we need the _OS_LINUX stuff first ! */
29#include <qglobal.h> 32#include <qglobal.h>
30 33
31#ifndef _OS_LINUX_ 34#ifndef _OS_LINUX_
35// Is anybody able to review this ? The include "uuid/uuid.h" couldn't be found
36// anywhere ? Therfore I removed it completely..
37// I think it should be made permanentyl !? (eilers)
38#warning "Where should uuid/uuid.h be found ? Removed this part .. (eilers)"
39#if 0
32 40
33extern "C" 41extern "C"
34{ 42{
35#include <uuid/uuid.h> 43#include <uuid/uuid.h>
36#define UUID_H_INCLUDED 44#define UUID_H_INCLUDED
37} 45}
38 46
47#endif
48
39#endif // not defined linux 49#endif // not defined linux
40 50
41#if defined(_OS_LINUX_) 51#if defined(_OS_LINUX_)
42#include <shadow.h> 52#include <shadow.h>
53#elif defined(Q_OS_MACX)
54#include <stdlib.h>
43#endif 55#endif
44 56
45#include <qdir.h> 57#include <qdir.h>
46#include <qfile.h> 58#include <qfile.h>
47#include <qtextstream.h> 59#include <qtextstream.h>
48#include <qdatastream.h> 60#include <qdatastream.h>
49#include <qmessagebox.h> 61#include <qmessagebox.h>
50#include <qstringlist.h> 62#include <qstringlist.h>
51#include <qfileinfo.h> 63#include <qfileinfo.h>
52#include <qregexp.h> 64#include <qregexp.h>
53//#include <qpe/qcopchannel_qws.h> 65//#include <qpe/qcopchannel_qws.h>
54#include <qpe/process.h> 66#include <qpe/process.h>
55#include <qpe/global.h> 67#include <qpe/global.h>
56#include <qpe/config.h> 68#include <qpe/config.h>
57#include <qpe/contact.h> 69#include <qpe/contact.h>
58#include <qpe/quuid.h> 70#include <qpe/quuid.h>
59#include <qpe/version.h> 71#include <qpe/version.h>
60#include <qpe/qcopenvelope_qws.h> 72#include <qpe/qcopenvelope_qws.h>
61 73
62#include "transferserver.h" 74#include "transferserver.h"
63#include <opie/oprocess.h> 75#include <opie/oprocess.h>
64 76
65const int block_size = 51200; 77const int block_size = 51200;
66 78
67TransferServer::TransferServer( Q_UINT16 port, QObject *parent , 79TransferServer::TransferServer( Q_UINT16 port, QObject *parent ,
68 const char* name ) 80 const char* name )
69 : QServerSocket( port, 1, parent, name ) 81 : QServerSocket( port, 1, parent, name )
70{ 82{
71 if ( !ok() ) 83 if ( !ok() )
72 qWarning( "Failed to bind to port %d", port ); 84 qWarning( "Failed to bind to port %d", port );
73} 85}
74 86
75TransferServer::~TransferServer() 87TransferServer::~TransferServer()
76{ 88{
77} 89}
78 90
79void TransferServer::newConnection( int socket ) 91void TransferServer::newConnection( int socket )
80{ 92{
81 (void) new ServerPI( socket, this ); 93 (void) new ServerPI( socket, this );
82} 94}
83 95
84/* 96/*
85 * small class in anonymous namespace 97 * small class in anonymous namespace
86 * to generate a QUUid for us 98 * to generate a QUUid for us
87 */ 99 */
88namespace 100namespace
89{ 101{
90struct UidGen 102struct UidGen
91{ 103{
92 QString uuid(); 104 QString uuid();
93}; 105};
94#if !defined(_OS_LINUX_) 106#if defined(Q_OS_MACX)
95
96QString UidGen::uuid() 107QString UidGen::uuid()
97{ 108{
98 uuid_t uuid; 109 srandom( random() );
99 uuid_generate( uuid ); 110 QString numStr = QString::number( random() );
100 return QUUid( uuid ).toString(); 111
112 return "{" + numStr + "}";
101} 113}
102#else 114#elif defined(_OS_LINUX_)
103/* 115/*
104* linux got a /proc/sys/kernel/random/uuid file 116* linux got a /proc/sys/kernel/random/uuid file
105* it'll generate the uuids for us 117* it'll generate the uuids for us
106*/ 118*/
107QString UidGen::uuid() 119QString UidGen::uuid()
108{ 120{
109 QFile file( "/proc/sys/kernel/random/uuid" ); 121 QFile file( "/proc/sys/kernel/random/uuid" );
110 if (!file.open(IO_ReadOnly ) ) 122 if (!file.open(IO_ReadOnly ) )
111 return QString::null; 123 return QString::null;
112 124
113 QTextStream stream(&file); 125 QTextStream stream(&file);
114 126
115 return "{" + stream.read().stripWhiteSpace() + "}"; 127 return "{" + stream.read().stripWhiteSpace() + "}";
116} 128}
129#else
130QString UidGen::uuid()
131{
132 uuid_t uuid;
133 ::uuid_generate( uuid );
134 return QUUid( uuid ).toString();
135}
117#endif 136#endif
118} 137}
119 138
120QString SyncAuthentication::serverId() 139QString SyncAuthentication::serverId()
121{ 140{
122 Config cfg("Security"); 141 Config cfg("Security");
123 cfg.setGroup("Sync"); 142 cfg.setGroup("Sync");
124 QString r = cfg.readEntry("serverid"); 143 QString r = cfg.readEntry("serverid");
125 if ( r.isEmpty() ) { 144 if ( r.isEmpty() ) {
126 UidGen gen; 145 UidGen gen;
127 r = gen.uuid(); 146 r = gen.uuid();
128 cfg.writeEntry("serverid", r ); 147 cfg.writeEntry("serverid", r );
129 } 148 }
130 return r; 149 return r;
131} 150}
132 151
133QString SyncAuthentication::ownerName() 152QString SyncAuthentication::ownerName()
134{ 153{
135 QString vfilename = Global::applicationFileName("addressbook", 154 QString vfilename = Global::applicationFileName("addressbook",
136 "businesscard.vcf"); 155 "businesscard.vcf");
137 if (QFile::exists(vfilename)) { 156 if (QFile::exists(vfilename)) {
138 Contact c; 157 Contact c;
139 c = Contact::readVCard( vfilename )[0]; 158 c = Contact::readVCard( vfilename )[0];
140 return c.fullName(); 159 return c.fullName();
141 } 160 }
142 161
143 return ""; 162 return "";
144} 163}
145 164
146QString SyncAuthentication::loginName() 165QString SyncAuthentication::loginName()
147{ 166{
148 struct passwd *pw; 167 struct passwd *pw;
149 pw = getpwuid( geteuid() ); 168 pw = getpwuid( geteuid() );
150 return QString::fromLocal8Bit( pw->pw_name ); 169 return QString::fromLocal8Bit( pw->pw_name );
151} 170}
152 171
153int SyncAuthentication::isAuthorized(QHostAddress peeraddress) 172int SyncAuthentication::isAuthorized(QHostAddress peeraddress)
154{ 173{
155 Config cfg("Security"); 174 Config cfg("Security");
156 cfg.setGroup("Sync"); 175 cfg.setGroup("Sync");
157 // QString allowedstr = cfg.readEntry("auth_peer","192.168.1.0"); 176 // QString allowedstr = cfg.readEntry("auth_peer","192.168.1.0");
158 uint auth_peer = cfg.readNumEntry("auth_peer", 0xc0a80100); 177 uint auth_peer = cfg.readNumEntry("auth_peer", 0xc0a80100);
159 178
160 // QHostAddress allowed; 179 // QHostAddress allowed;
161 // allowed.setAddress(allowedstr); 180 // allowed.setAddress(allowedstr);
162 // uint auth_peer = allowed.ip4Addr(); 181 // uint auth_peer = allowed.ip4Addr();
163 uint auth_peer_bits = cfg.readNumEntry("auth_peer_bits", 24); 182 uint auth_peer_bits = cfg.readNumEntry("auth_peer_bits", 24);
164 uint mask = auth_peer_bits >= 32 // shifting by 32 is not defined 183 uint mask = auth_peer_bits >= 32 // shifting by 32 is not defined
165 ? 0xffffffff : (((1 << auth_peer_bits) - 1) << (32 - auth_peer_bits)); 184 ? 0xffffffff : (((1 << auth_peer_bits) - 1) << (32 - auth_peer_bits));
166 return (peeraddress.ip4Addr() & mask) == auth_peer; 185 return (peeraddress.ip4Addr() & mask) == auth_peer;
167} 186}
168 187
169bool SyncAuthentication::checkUser( const QString& user ) 188bool SyncAuthentication::checkUser( const QString& user )
170{ 189{
171 if ( user.isEmpty() ) 190 if ( user.isEmpty() )
172 return FALSE; 191 return FALSE;
173 QString euser = loginName(); 192 QString euser = loginName();
174 return user == euser; 193 return user == euser;
175} 194}
176 195
177bool SyncAuthentication::checkPassword( const QString& password ) 196bool SyncAuthentication::checkPassword( const QString& password )
178{ 197{
179#ifdef ALLOW_UNIX_USER_FTP 198#ifdef ALLOW_UNIX_USER_FTP
180 // First, check system password... 199 // First, check system password...
181 200
182 struct passwd *pw = 0; 201 struct passwd *pw = 0;
183 struct spwd *spw = 0; 202 struct spwd *spw = 0;
184 203
185 pw = getpwuid( geteuid() ); 204 pw = getpwuid( geteuid() );
186 spw = getspnam( pw->pw_name ); 205 spw = getspnam( pw->pw_name );
187 206
188 QString cpwd = QString::fromLocal8Bit( pw->pw_passwd ); 207 QString cpwd = QString::fromLocal8Bit( pw->pw_passwd );
189 if ( cpwd == "x" && spw ) 208 if ( cpwd == "x" && spw )
190 cpwd = QString::fromLocal8Bit( spw->sp_pwdp ); 209 cpwd = QString::fromLocal8Bit( spw->sp_pwdp );
191 210
192 // Note: some systems use more than crypt for passwords. 211 // Note: some systems use more than crypt for passwords.
193 QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) ); 212 QString cpassword = QString::fromLocal8Bit( crypt( password.local8Bit(), cpwd.local8Bit() ) );
194 if ( cpwd == cpassword ) 213 if ( cpwd == cpassword )
195 return TRUE; 214 return TRUE;
196#endif 215#endif
197 216
198 static int lastdenial = 0; 217 static int lastdenial = 0;
199 static int denials = 0; 218 static int denials = 0;
200 int now = time(0); 219 int now = time(0);
201 220
202 // Detect old Qtopia Desktop (no password) 221 // Detect old Qtopia Desktop (no password)
203 if ( password.isEmpty() ) { 222 if ( password.isEmpty() ) {
204 if ( denials < 1 || now > lastdenial + 600 ) { 223 if ( denials < 1 || now > lastdenial + 600 ) {
205 QMessageBox::warning( 0, tr("Sync Connection"), 224 QMessageBox::warning( 0, tr("Sync Connection"),
206 tr("<p>An unauthorized system is requesting access to this device." 225 tr("<p>An unauthorized system is requesting access to this device."
207 "<p>If you are using a version of Qtopia Desktop older than 1.5.1, " 226 "<p>If you are using a version of Qtopia Desktop older than 1.5.1, "
208 "please upgrade."), 227 "please upgrade."),
209 tr("Deny") ); 228 tr("Deny") );
210 denials++; 229 denials++;
211 lastdenial = now; 230 lastdenial = now;
212 } 231 }
213 return FALSE; 232 return FALSE;
214 } 233 }
215 234
216 // Second, check sync password... 235 // Second, check sync password...
217 QString pass = password.left(6); 236 QString pass = password.left(6);
218 /* old QtopiaDesktops are sending 237 /* old QtopiaDesktops are sending
219 * rootme newer versions got a Qtopia 238 * rootme newer versions got a Qtopia
220 * prefixed. Qtopia prefix will suceed 239 * prefixed. Qtopia prefix will suceed
221 * until the sync software syncs up 240 * until the sync software syncs up
222 * FIXME 241 * FIXME
223 */ 242 */
224 if ( pass == "rootme" || pass == "Qtopia") { 243 if ( pass == "rootme" || pass == "Qtopia") {
225 244
226 QString cpassword = QString::fromLocal8Bit( crypt( password.mid(8).local8Bit(), "qp" ) ); 245 QString cpassword = QString::fromLocal8Bit( crypt( password.mid(8).local8Bit(), "qp" ) );
227 Config cfg("Security"); 246 Config cfg("Security");
228 cfg.setGroup("Sync"); 247 cfg.setGroup("Sync");
229 QString pwds = cfg.readEntry("Passwords"); 248 QString pwds = cfg.readEntry("Passwords");
230 if ( QStringList::split(QChar(' '), pwds).contains(cpassword) ) 249 if ( QStringList::split(QChar(' '), pwds).contains(cpassword) )
231 return TRUE; 250 return TRUE;
232 251
233 // Unrecognized system. Be careful... 252 // Unrecognized system. Be careful...
234 253
235 if ( (denials > 2 && now < lastdenial + 600) 254 if ( (denials > 2 && now < lastdenial + 600)
236 || QMessageBox::warning(0, tr("Sync Connection"), 255 || QMessageBox::warning(0, tr("Sync Connection"),
237 tr("<p>An unrecognized system is requesting access to this device." 256 tr("<p>An unrecognized system is requesting access to this device."
238 "<p>If you have just initiated a Sync for the first time, this is normal."), 257 "<p>If you have just initiated a Sync for the first time, this is normal."),
239 tr("Allow"), tr("Deny"), 0, 1, 1 ) == 1 ) { 258 tr("Allow"), tr("Deny"), 0, 1, 1 ) == 1 ) {
240 denials++; 259 denials++;
241 lastdenial = now; 260 lastdenial = now;
242 return FALSE; 261 return FALSE;
243 } 262 }
244 else { 263 else {
245 denials = 0; 264 denials = 0;
246 cfg.writeEntry("Passwords", pwds + " " + cpassword); 265 cfg.writeEntry("Passwords", pwds + " " + cpassword);
247 return TRUE; 266 return TRUE;
248 } 267 }
249 } 268 }
250 269
251 return FALSE; 270 return FALSE;
252} 271}
253 272
254ServerPI::ServerPI( int socket, QObject *parent , const char* name ) 273ServerPI::ServerPI( int socket, QObject *parent , const char* name )
255 : QSocket( parent, name ) , dtp( 0 ), serversocket( 0 ), waitsocket( 0 ) 274 : QSocket( parent, name ) , dtp( 0 ), serversocket( 0 ), waitsocket( 0 )
256{ 275{
257 state = Connected; 276 state = Connected;
258 277
259 setSocket( socket ); 278 setSocket( socket );
260 279
261 peerport = peerPort(); 280 peerport = peerPort();
262 peeraddress = peerAddress(); 281 peeraddress = peerAddress();
263 282
264#ifndef INSECURE 283#ifndef INSECURE
265 284
266 if ( !SyncAuthentication::isAuthorized(peeraddress) ) { 285 if ( !SyncAuthentication::isAuthorized(peeraddress) ) {
267 state = Forbidden; 286 state = Forbidden;
268 startTimer( 0 ); 287 startTimer( 0 );
269 } 288 }
270 else 289 else
271#endif 290#endif
272 { 291 {
273 connect( this, SIGNAL( readyRead() ), SLOT( read() ) ); 292 connect( this, SIGNAL( readyRead() ), SLOT( read() ) );
274 connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) ); 293 connect( this, SIGNAL( connectionClosed() ), SLOT( connectionClosed() ) );
275 294
276 passiv = FALSE; 295 passiv = FALSE;
277 for ( int i = 0; i < 4; i++ ) 296 for ( int i = 0; i < 4; i++ )
278 wait[i] = FALSE; 297 wait[i] = FALSE;
279 298
280 send( "220 Qtopia " QPE_VERSION " FTP Server" ); 299 send( "220 Qtopia " QPE_VERSION " FTP Server" );
281 state = Wait_USER; 300 state = Wait_USER;
282 301
283 dtp = new ServerDTP( this ); 302 dtp = new ServerDTP( this );
284 connect( dtp, SIGNAL( completed() ), SLOT( dtpCompleted() ) ); 303 connect( dtp, SIGNAL( completed() ), SLOT( dtpCompleted() ) );
285 connect( dtp, SIGNAL( failed() ), SLOT( dtpFailed() ) ); 304 connect( dtp, SIGNAL( failed() ), SLOT( dtpFailed() ) );
286 connect( dtp, SIGNAL( error( int ) ), SLOT( dtpError( int ) ) ); 305 connect( dtp, SIGNAL( error( int ) ), SLOT( dtpError( int ) ) );
287 306
288 307
289 directory = QDir::currentDirPath(); 308 directory = QDir::currentDirPath();
290 309
291 static int p = 1024; 310 static int p = 1024;
292 311
293 while ( !serversocket || !serversocket->ok() ) { 312 while ( !serversocket || !serversocket->ok() ) {
294 delete serversocket; 313 delete serversocket;
295 serversocket = new ServerSocket( ++p, this ); 314 serversocket = new ServerSocket( ++p, this );
296 } 315 }
297 connect( serversocket, SIGNAL( newIncomming( int ) ), 316 connect( serversocket, SIGNAL( newIncomming( int ) ),
298 SLOT( newConnection( int ) ) ); 317 SLOT( newConnection( int ) ) );
299 } 318 }
300} 319}
301 320
302ServerPI::~ServerPI() 321ServerPI::~ServerPI()
303{ 322{
304} 323}
305 324
306void ServerPI::connectionClosed() 325void ServerPI::connectionClosed()
307{ 326{
308 // qDebug( "Debug: Connection closed" ); 327 // qDebug( "Debug: Connection closed" );
diff --git a/core/settings/launcher/menusettings.cpp b/core/settings/launcher/menusettings.cpp
index 5a9fada..6fca621 100644
--- a/core/settings/launcher/menusettings.cpp
+++ b/core/settings/launcher/menusettings.cpp
@@ -1,159 +1,163 @@
1/* 1/*
2                This file is part of the OPIE Project 2                This file is part of the OPIE Project
3 =. Copyright (c) 2002 Trolltech AS <info@trolltech.com> 3 =. Copyright (c) 2002 Trolltech AS <info@trolltech.com>
4             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> 4             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org>
5           .>+-= 5           .>+-=
6 _;:,     .>    :=|. This file is free software; you can 6 _;:,     .>    :=|. This file is free software; you can
7.> <`_,   >  .   <= redistribute it and/or modify it under 7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU General Public 8:`=1 )Y*s>-.--   : the terms of the GNU General Public
9.="- .-=="i,     .._ License as published by the Free Software 9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; either version 2 of the License, 10 - .   .-<_>     .<> Foundation; either version 2 of the License,
11     ._= =}       : or (at your option) any later version. 11     ._= =}       : or (at your option) any later version.
12    .%`+i>       _;_. 12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This file is distributed in the hope that 13    .i_,=:_.      -<s. This file is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of 15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
18..}^=.=       =       ; Public License for more details. 18..}^=.=       =       ; Public License for more details.
19++=   -.     .`     .: 19++=   -.     .`     .:
20 :     =  ...= . :.=- You should have received a copy of the GNU 20 :     =  ...= . :.=- You should have received a copy of the GNU
21 -.   .:....=;==+<; General Public License along with this file; 21 -.   .:....=;==+<; General Public License along with this file;
22  -_. . .   )=.  = see the file COPYING. If not, write to the 22  -_. . .   )=.  = see the file COPYING. If not, write to the
23    --        :-=` Free Software Foundation, Inc., 23    --        :-=` Free Software Foundation, Inc.,
24 59 Temple Place - Suite 330, 24 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29#include "menusettings.h" 29#include "menusettings.h"
30 30
31#include <qpe/config.h> 31#include <qpe/config.h>
32#include <qpe/qlibrary.h> 32#include <qpe/qlibrary.h>
33#include <qpe/qpeapplication.h> 33#include <qpe/qpeapplication.h>
34#include <qpe/menuappletinterface.h> 34#include <qpe/menuappletinterface.h>
35#include <qpe/qcopenvelope_qws.h> 35#include <qpe/qcopenvelope_qws.h>
36 36
37#include <qdir.h> 37#include <qdir.h>
38#include <qlistview.h> 38#include <qlistview.h>
39#include <qcheckbox.h> 39#include <qcheckbox.h>
40#include <qheader.h> 40#include <qheader.h>
41#include <qlayout.h> 41#include <qlayout.h>
42#include <qlabel.h> 42#include <qlabel.h>
43#include <qwhatsthis.h> 43#include <qwhatsthis.h>
44 44
45#include <stdlib.h> 45#include <stdlib.h>
46 46
47 47
48MenuSettings::MenuSettings ( QWidget *parent, const char *name ) 48MenuSettings::MenuSettings ( QWidget *parent, const char *name )
49 : QWidget ( parent, name ) 49 : QWidget ( parent, name )
50{ 50{
51 m_applets_changed = false; 51 m_applets_changed = false;
52 52
53 QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); 53 QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 );
54 54
55 QLabel *l = new QLabel ( tr( "Load applets in O-Menu:" ), this ); 55 QLabel *l = new QLabel ( tr( "Load applets in O-Menu:" ), this );
56 lay-> addWidget ( l ); 56 lay-> addWidget ( l );
57 57
58 m_list = new QListView ( this ); 58 m_list = new QListView ( this );
59 m_list-> addColumn ( "foobar" ); 59 m_list-> addColumn ( "foobar" );
60 m_list-> header ( )-> hide ( ); 60 m_list-> header ( )-> hide ( );
61 61
62 lay-> addWidget ( m_list ); 62 lay-> addWidget ( m_list );
63 63
64 m_menutabs = new QCheckBox ( tr( "Show Launcher tabs in O-Menu" ), this ); 64 m_menutabs = new QCheckBox ( tr( "Show Launcher tabs in O-Menu" ), this );
65 lay-> addWidget ( m_menutabs ); 65 lay-> addWidget ( m_menutabs );
66 66
67 QWhatsThis::add ( m_list, tr( "Check the applets that you want to have included in the O-Menu." )); 67 QWhatsThis::add ( m_list, tr( "Check the applets that you want to have included in the O-Menu." ));
68 QWhatsThis::add ( m_menutabs, tr( "Adds the contents of the Launcher Tabs as menus in the O-Menu." )); 68 QWhatsThis::add ( m_menutabs, tr( "Adds the contents of the Launcher Tabs as menus in the O-Menu." ));
69 69
70 connect ( m_list, SIGNAL( clicked ( QListViewItem * )), this, SLOT( appletChanged ( ))); 70 connect ( m_list, SIGNAL( clicked ( QListViewItem * )), this, SLOT( appletChanged ( )));
71 71
72 init ( ); 72 init ( );
73} 73}
74 74
75void MenuSettings::init ( ) 75void MenuSettings::init ( )
76{ 76{
77 Config cfg ( "StartMenu" ); 77 Config cfg ( "StartMenu" );
78 cfg. setGroup ( "Applets" ); 78 cfg. setGroup ( "Applets" );
79 QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); 79 QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' );
80 80
81 QString path = QPEApplication::qpeDir ( ) + "/plugins/applets"; 81 QString path = QPEApplication::qpeDir ( ) + "/plugins/applets";
82#ifdef Q_OS_MACX
83 QStringList list = QDir ( path, "lib*.dylib" ). entryList ( );
84#else
82 QStringList list = QDir ( path, "lib*.so" ). entryList ( ); 85 QStringList list = QDir ( path, "lib*.so" ). entryList ( );
86#endif /* Q_OS_MACX */
83 87
84 for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { 88 for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) {
85 QString name; 89 QString name;
86 QPixmap icon; 90 QPixmap icon;
87 MenuAppletInterface *iface = 0; 91 MenuAppletInterface *iface = 0;
88 92
89 QLibrary *lib = new QLibrary ( path + "/" + *it ); 93 QLibrary *lib = new QLibrary ( path + "/" + *it );
90 lib-> queryInterface ( IID_MenuApplet, (QUnknownInterface**) &iface ); 94 lib-> queryInterface ( IID_MenuApplet, (QUnknownInterface**) &iface );
91 if ( iface ) { 95 if ( iface ) {
92 QString lang = getenv( "LANG" ); 96 QString lang = getenv( "LANG" );
93 QTranslator *trans = new QTranslator ( qApp ); 97 QTranslator *trans = new QTranslator ( qApp );
94 QString type = (*it). left ((*it). find (".")); 98 QString type = (*it). left ((*it). find ("."));
95 QString tfn = QPEApplication::qpeDir ( ) + "/i18n/" + lang + "/" + type + ".qm"; 99 QString tfn = QPEApplication::qpeDir ( ) + "/i18n/" + lang + "/" + type + ".qm";
96 if ( trans-> load ( tfn )) 100 if ( trans-> load ( tfn ))
97 qApp-> installTranslator ( trans ); 101 qApp-> installTranslator ( trans );
98 else 102 else
99 delete trans; 103 delete trans;
100 name = iface-> name ( ); 104 name = iface-> name ( );
101 icon = iface-> icon ( ). pixmap ( QIconSet::Small, QIconSet::Normal ); 105 icon = iface-> icon ( ). pixmap ( QIconSet::Small, QIconSet::Normal );
102 iface-> release ( ); 106 iface-> release ( );
103 lib-> unload ( ); 107 lib-> unload ( );
104 108
105 QCheckListItem *item; 109 QCheckListItem *item;
106 item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); 110 item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox );
107 if ( !icon. isNull ( )) 111 if ( !icon. isNull ( ))
108 item-> setPixmap ( 0, icon ); 112 item-> setPixmap ( 0, icon );
109 item-> setOn ( exclude. find ( *it ) == exclude. end ( )); 113 item-> setOn ( exclude. find ( *it ) == exclude. end ( ));
110 m_applets [*it] = item; 114 m_applets [*it] = item;
111 } else { 115 } else {
112 delete lib; 116 delete lib;
113 } 117 }
114 } 118 }
115 119
116 cfg. setGroup ( "Menu" ); 120 cfg. setGroup ( "Menu" );
117 m_menutabs-> setChecked ( cfg. readBoolEntry ( "LauncherTabs", true )); 121 m_menutabs-> setChecked ( cfg. readBoolEntry ( "LauncherTabs", true ));
118} 122}
119 123
120void MenuSettings::appletChanged() 124void MenuSettings::appletChanged()
121{ 125{
122 m_applets_changed = true; 126 m_applets_changed = true;
123} 127}
124 128
125void MenuSettings::accept ( ) 129void MenuSettings::accept ( )
126{ 130{
127 bool apps_changed = false; 131 bool apps_changed = false;
128 132
129 Config cfg ( "StartMenu" ); 133 Config cfg ( "StartMenu" );
130 cfg. setGroup ( "Applets" ); 134 cfg. setGroup ( "Applets" );
131 if ( m_applets_changed ) { 135 if ( m_applets_changed ) {
132 QStringList exclude; 136 QStringList exclude;
133 QMap <QString, QCheckListItem *>::Iterator it; 137 QMap <QString, QCheckListItem *>::Iterator it;
134 for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { 138 for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) {
135 if ( !(*it)-> isOn ( )) 139 if ( !(*it)-> isOn ( ))
136 exclude << it. key ( ); 140 exclude << it. key ( );
137 } 141 }
138 cfg. writeEntry ( "ExcludeApplets", exclude, ',' ); 142 cfg. writeEntry ( "ExcludeApplets", exclude, ',' );
139 } 143 }
140 cfg. writeEntry ( "SafeMode", false ); 144 cfg. writeEntry ( "SafeMode", false );
141 145
142 cfg. setGroup ( "Menu" ); 146 cfg. setGroup ( "Menu" );
143 147
144 if ( m_menutabs-> isChecked ( ) != cfg. readBoolEntry ( "LauncherTabs", true )) { 148 if ( m_menutabs-> isChecked ( ) != cfg. readBoolEntry ( "LauncherTabs", true )) {
145 apps_changed = true; 149 apps_changed = true;
146 cfg. writeEntry ( "LauncherTabs", m_menutabs-> isChecked ( )); 150 cfg. writeEntry ( "LauncherTabs", m_menutabs-> isChecked ( ));
147 } 151 }
148 152
149 cfg. write ( ); 153 cfg. write ( );
150 154
151 if ( m_applets_changed ) { 155 if ( m_applets_changed ) {
152 QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" ); 156 QCopEnvelope ( "QPE/TaskBar", "reloadApplets()" );
153 m_applets_changed = false; 157 m_applets_changed = false;
154 } 158 }
155 if ( apps_changed ) { 159 if ( apps_changed ) {
156 QCopEnvelope ( "QPE/TaskBar", "reloadApps()" ); 160 QCopEnvelope ( "QPE/TaskBar", "reloadApps()" );
157 } 161 }
158} 162}
159 163
diff --git a/core/settings/launcher/taskbarsettings.cpp b/core/settings/launcher/taskbarsettings.cpp
index b3e302a..d03ea49 100644
--- a/core/settings/launcher/taskbarsettings.cpp
+++ b/core/settings/launcher/taskbarsettings.cpp
@@ -1,156 +1,173 @@
1/* 1/*
2                This file is part of the OPIE Project 2                This file is part of the OPIE Project
3 =. Copyright (c) 2002 Trolltech AS <info@trolltech.com> 3 =. Copyright (c) 2002 Trolltech AS <info@trolltech.com>
4             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org> 4             .=l. Copyright (c) 2002 Robert Griebl <sandman@handhelds.org>
5           .>+-= 5           .>+-=
6 _;:,     .>    :=|. This file is free software; you can 6 _;:,     .>    :=|. This file is free software; you can
7.> <`_,   >  .   <= redistribute it and/or modify it under 7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU General Public 8:`=1 )Y*s>-.--   : the terms of the GNU General Public
9.="- .-=="i,     .._ License as published by the Free Software 9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; either version 2 of the License, 10 - .   .-<_>     .<> Foundation; either version 2 of the License,
11     ._= =}       : or (at your option) any later version. 11     ._= =}       : or (at your option) any later version.
12    .%`+i>       _;_. 12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This file is distributed in the hope that 13    .i_,=:_.      -<s. This file is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of 15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
18..}^=.=       =       ; Public License for more details. 18..}^=.=       =       ; Public License for more details.
19++=   -.     .`     .: 19++=   -.     .`     .:
20 :     =  ...= . :.=- You should have received a copy of the GNU 20 :     =  ...= . :.=- You should have received a copy of the GNU
21 -.   .:....=;==+<; General Public License along with this file; 21 -.   .:....=;==+<; General Public License along with this file;
22  -_. . .   )=.  = see the file COPYING. If not, write to the 22  -_. . .   )=.  = see the file COPYING. If not, write to the
23    --        :-=` Free Software Foundation, Inc., 23    --        :-=` Free Software Foundation, Inc.,
24 59 Temple Place - Suite 330, 24 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29#include "taskbarsettings.h" 29#include "taskbarsettings.h"
30 30
31#include <qpe/config.h> 31#include <qpe/config.h>
32#include <qpe/qlibrary.h> 32#include <qpe/qlibrary.h>
33#include <qpe/qpeapplication.h> 33#include <qpe/qpeapplication.h>
34#include <qpe/taskbarappletinterface.h> 34#include <qpe/taskbarappletinterface.h>
35#include <qpe/qcopenvelope_qws.h> 35#include <qpe/qcopenvelope_qws.h>
36 36
37#include <qdir.h> 37#include <qdir.h>
38#include <qlistview.h> 38#include <qlistview.h>
39#include <qcheckbox.h> 39#include <qcheckbox.h>
40#include <qheader.h> 40#include <qheader.h>
41#include <qlayout.h> 41#include <qlayout.h>
42#include <qlabel.h> 42#include <qlabel.h>
43#include <qwhatsthis.h> 43#include <qwhatsthis.h>
44 44
45#include <stdlib.h> 45#include <stdlib.h>
46 46
47 47
48TaskbarSettings::TaskbarSettings ( QWidget *parent, const char *name ) 48TaskbarSettings::TaskbarSettings ( QWidget *parent, const char *name )
49 : QWidget ( parent, name ) 49 : QWidget ( parent, name )
50{ 50{
51 m_applets_changed = false; 51 m_applets_changed = false;
52 52
53 QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 ); 53 QBoxLayout *lay = new QVBoxLayout ( this, 4, 4 );
54 54
55 QLabel *l = new QLabel ( tr( "Load applets in Taskbar:" ), this ); 55 QLabel *l = new QLabel ( tr( "Load applets in Taskbar:" ), this );
56 lay-> addWidget ( l ); 56 lay-> addWidget ( l );
57 57
58 m_list = new QListView ( this ); 58 m_list = new QListView ( this );
59 m_list-> addColumn ( "foobar" ); 59 m_list-> addColumn ( "foobar" );
60 m_list-> header ( )-> hide ( ); 60 m_list-> header ( )-> hide ( );
61 61
62 lay-> addWidget ( m_list ); 62 lay-> addWidget ( m_list );
63 63
64 QWhatsThis::add ( m_list, tr( "Check the applets that you want displayed in the Taskbar." )); 64 QWhatsThis::add ( m_list, tr( "Check the applets that you want displayed in the Taskbar." ));
65 65
66 connect ( m_list, SIGNAL( clicked ( QListViewItem * )), this, SLOT( appletChanged ( ))); 66 connect ( m_list, SIGNAL( clicked ( QListViewItem * )), this, SLOT( appletChanged ( )));
67 67
68 init ( ); 68 init ( );
69} 69}
70 70
71void TaskbarSettings::init ( ) 71void TaskbarSettings::init ( )
72{ 72{
73 Config cfg ( "Taskbar" ); 73 Config cfg ( "Taskbar" );
74 cfg. setGroup ( "Applets" ); 74 cfg. setGroup ( "Applets" );
75 QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' ); 75 QStringList exclude = cfg. readListEntry ( "ExcludeApplets", ',' );
76 76
77 QString path = QPEApplication::qpeDir ( ) + "/plugins/applets"; 77 QString path = QPEApplication::qpeDir ( ) + "/plugins/applets";
78#ifdef Q_OS_MACX
79 QStringList list = QDir ( path, "lib*.dylib" ). entryList ( );
80#else
78 QStringList list = QDir ( path, "lib*.so" ). entryList ( ); 81 QStringList list = QDir ( path, "lib*.so" ). entryList ( );
82#endif /* Q_OS_MACX */
79 83
80 for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) { 84 for ( QStringList::Iterator it = list. begin ( ); it != list. end ( ); ++it ) {
81 QString name; 85 QString name;
82 QPixmap icon; 86 QPixmap icon;
83 TaskbarNamedAppletInterface *iface = 0; 87 TaskbarNamedAppletInterface *iface = 0;
84 88
89 qWarning("Load applet: %s", (*it).latin1() );
85 QLibrary *lib = new QLibrary ( path + "/" + *it ); 90 QLibrary *lib = new QLibrary ( path + "/" + *it );
86 lib-> queryInterface ( IID_TaskbarNamedApplet, (QUnknownInterface**) &iface ); 91 lib-> queryInterface ( IID_TaskbarNamedApplet, (QUnknownInterface**) &iface );
92 qWarning("<1>");
87 if ( iface ) { 93 if ( iface ) {
94 qWarning("<2>");
88 QString lang = getenv( "LANG" ); 95 QString lang = getenv( "LANG" );
89 QTranslator *trans = new QTranslator ( qApp ); 96 QTranslator *trans = new QTranslator ( qApp );
90 QString type = (*it). left ((*it). find (".")); 97 QString type = (*it). left ((*it). find ("."));
91 QString tfn = QPEApplication::qpeDir ( ) + "/i18n/" + lang + "/" + type + ".qm"; 98 QString tfn = QPEApplication::qpeDir ( ) + "/i18n/" + lang + "/" + type + ".qm";
92 if ( trans-> load ( tfn )) 99 if ( trans-> load ( tfn ))
93 qApp-> installTranslator ( trans ); 100 qApp-> installTranslator ( trans );
94 else 101 else
95 delete trans; 102 delete trans;
96 name = iface-> name ( ); 103 name = iface-> name ( );
97 icon = iface-> icon ( ); 104 icon = iface-> icon ( );
98 iface-> release ( ); 105 iface-> release ( );
99 } 106 }
107 qWarning("<3>");
100 if ( !iface ) { 108 if ( !iface ) {
109 qWarning("<4>");
101 lib-> queryInterface ( IID_TaskbarApplet, (QUnknownInterface**) &iface ); 110 lib-> queryInterface ( IID_TaskbarApplet, (QUnknownInterface**) &iface );
102 111
103 if ( iface ) { 112 if ( iface ) {
113 qWarning("<5>");
104 name = (*it). mid ( 3 ); 114 name = (*it). mid ( 3 );
115 qWarning("Found applet: %s", name.latin1() );
116#ifdef Q_OS_MACX
117 int sep = name. find( ".dylib" );
118#else
105 int sep = name. find( ".so" ); 119 int sep = name. find( ".so" );
120#endif /* Q_OS_MACX */
106 if ( sep > 0 ) 121 if ( sep > 0 )
107 name. truncate ( sep ); 122 name. truncate ( sep );
108 sep = name. find ( "applet" ); 123 sep = name. find ( "applet" );
109 if ( sep == (int) name.length ( ) - 6 ) 124 if ( sep == (int) name.length ( ) - 6 )
110 name. truncate ( sep ); 125 name. truncate ( sep );
111 name[0] = name[0]. upper ( ); 126 name[0] = name[0]. upper ( );
112 iface-> release ( ); 127 iface-> release ( );
113 } 128 }
114 } 129 }
130 qWarning("<6>");
115 131
116 if ( iface ) { 132 if ( iface ) {
133 qWarning("<7>");
117 QCheckListItem *item; 134 QCheckListItem *item;
118 item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox ); 135 item = new QCheckListItem ( m_list, name, QCheckListItem::CheckBox );
119 if ( !icon. isNull ( )) 136 if ( !icon. isNull ( ))
120 item-> setPixmap ( 0, icon ); 137 item-> setPixmap ( 0, icon );
121 item-> setOn ( exclude. find ( *it ) == exclude. end ( )); 138 item-> setOn ( exclude. find ( *it ) == exclude. end ( ));
122 m_applets [*it] = item; 139 m_applets [*it] = item;
123 } 140 }
124 lib-> unload ( ); 141 lib-> unload ( );
125 delete lib; 142 delete lib;
126 } 143 }
127} 144}
128 145
129void TaskbarSettings::appletChanged() 146void TaskbarSettings::appletChanged()
130{ 147{
131 m_applets_changed = true; 148 m_applets_changed = true;
132} 149}
133 150
134void TaskbarSettings::accept ( ) 151void TaskbarSettings::accept ( )
135{ 152{
136 Config cfg ( "Taskbar" ); 153 Config cfg ( "Taskbar" );
137 cfg. setGroup ( "Applets" ); 154 cfg. setGroup ( "Applets" );
138 155
139 if ( m_applets_changed ) { 156 if ( m_applets_changed ) {
140 QStringList exclude; 157 QStringList exclude;
141 QMap <QString, QCheckListItem *>::Iterator it; 158 QMap <QString, QCheckListItem *>::Iterator it;
142 for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) { 159 for ( it = m_applets. begin ( ); it != m_applets. end ( ); ++it ) {
143 if ( !(*it)-> isOn ( )) 160 if ( !(*it)-> isOn ( ))
144 exclude << it. key ( ); 161 exclude << it. key ( );
145 } 162 }
146 cfg. writeEntry ( "ExcludeApplets", exclude, ',' ); 163 cfg. writeEntry ( "ExcludeApplets", exclude, ',' );
147 } 164 }
148 cfg. writeEntry ( "SafeMode", false ); 165 cfg. writeEntry ( "SafeMode", false );
149 cfg. write ( ); 166 cfg. write ( );
150 167
151 if ( m_applets_changed ) { 168 if ( m_applets_changed ) {
152 QCopEnvelope e ( "QPE/TaskBar", "reloadApplets()" ); 169 QCopEnvelope e ( "QPE/TaskBar", "reloadApplets()" );
153 m_applets_changed = false; 170 m_applets_changed = false;
154 } 171 }
155} 172}
156 173
diff --git a/development/keyview/keyview.pro b/development/keyview/keyview.pro
index 70cc171..ca657bd 100644
--- a/development/keyview/keyview.pro
+++ b/development/keyview/keyview.pro
@@ -1,33 +1,33 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 #CONFIG = qt warn_on debug 2 #CONFIG = qt plugin warn_on debug
3 CONFIG = qt warn_on release 3 CONFIG = qt plugin warn_on release
4 HEADERS = keyview.h keyboardimpl.h 4 HEADERS = keyview.h keyboardimpl.h
5 SOURCES = keyview.cpp keyboardimpl.cpp 5 SOURCES = keyview.cpp keyboardimpl.cpp
6 INCLUDEPATH+= $(OPIEDIR)/include 6 INCLUDEPATH+= $(OPIEDIR)/include
7 DEPENDPATH+= $(OPIEDIR)/include ../../launcher 7 DEPENDPATH+= $(OPIEDIR)/include ../../launcher
8LIBS += -lqpe 8LIBS += -lqpe
9 INTERFACES= 9 INTERFACES=
10 TARGET = keyview 10 TARGET = keyview
11DESTDIR = $(OPIEDIR)/plugins/inputmethods 11DESTDIR = $(OPIEDIR)/plugins/inputmethods
12 12
13TRANSLATIONS = ../i18n/de/keyview.ts \ 13TRANSLATIONS = ../i18n/de/keyview.ts \
14 ../i18n/nl/keyview.ts \ 14 ../i18n/nl/keyview.ts \
15 ../i18n/da/keyview.ts \ 15 ../i18n/da/keyview.ts \
16 ../i18n/xx/keyview.ts \ 16 ../i18n/xx/keyview.ts \
17 ../i18n/en/keyview.ts \ 17 ../i18n/en/keyview.ts \
18 ../i18n/es/keyview.ts \ 18 ../i18n/es/keyview.ts \
19 ../i18n/fr/keyview.ts \ 19 ../i18n/fr/keyview.ts \
20 ../i18n/hu/keyview.ts \ 20 ../i18n/hu/keyview.ts \
21 ../i18n/ja/keyview.ts \ 21 ../i18n/ja/keyview.ts \
22 ../i18n/ko/keyview.ts \ 22 ../i18n/ko/keyview.ts \
23 ../i18n/no/keyview.ts \ 23 ../i18n/no/keyview.ts \
24 ../i18n/pl/keyview.ts \ 24 ../i18n/pl/keyview.ts \
25 ../i18n/pt/keyview.ts \ 25 ../i18n/pt/keyview.ts \
26 ../i18n/pt_BR/keyview.ts \ 26 ../i18n/pt_BR/keyview.ts \
27 ../i18n/sl/keyview.ts \ 27 ../i18n/sl/keyview.ts \
28 ../i18n/zh_CN/keyview.ts \ 28 ../i18n/zh_CN/keyview.ts \
29 ../i18n/zh_TW/keyview.ts 29 ../i18n/zh_TW/keyview.ts
30 30
31 31
32 32
33include ( $(OPIEDIR)/include.pro ) 33include ( $(OPIEDIR)/include.pro )
diff --git a/development/macosx/README_MACOSX b/development/macosx/README_MACOSX
new file mode 100644
index 0000000..e2ed15f
--- a/dev/null
+++ b/development/macosx/README_MACOSX
@@ -0,0 +1,91 @@
1Information about porting Opie to MacOS-X (eilers)
2==================================================
3
4Credits:
5--------
6
7Special thanks to xxxx for its patches for qt-X11 (2.3.2), QT/E (2.3.5) and qtopia (1.6.1).
8Without them, I wouldn't be able to provide the port for OPIE to MacOS-X that fast..
9
10Status:
11-------
12The basic system works quite well. But a lot of applications and plugins,
13which are platform specific, need some work to be compileable.
14
15What is ready:
16
17libqpe
18libopie1
19pim-applications (addressbook, todolist, datebook, today)
20A lot of applications and plugins which are not platform specific.
21
22What will follow soon:
23
24libopie2
25
26Remember: A lot of configuration-settings are not tested (as for instance
27the quicklauncher) and might fail to compile.
28If you want to avoid misconfigurations, you may want to start with
29the config-file in this directory. Just copy "config_macosx" to $OPIEDIR/.config
30to get a working configuration to start with.
31
32(The missing apps/plugins will be ported on demand.)
33
34How to compile Opie for MacOS-X:
35-------------------------------
36
37Before compiling for MacOS-X, you need the following:
38
391. X11-Server (Provided by Apple)
402. QT-2.3.2 for X11
413. QT/E-2.3.7
424. Patches for QT-2.3.2 for MacOSX
435. Patches for QT/E-2.3.7 for MacOSX
44
45Please follow the instructions by xxxx how to create a buildsystem
46for your Mac.
47What is different to the previous desciption:
48You don't need Qtopia !
49It is recommended to use QT/E in version 2.3.7 instead of 2.3.5 as described.
50The Patch for QT/E for Opie, including all other opie-patches is available in the
51qt-directory ($OPIEDIR/qt) and is called "qte237-all-macosx.patch"
52
53If your buildsystem is working correctly, you should be able to build
54opie. You have to enter "make menuconfig" and set
55"Build Parameters"->"Target Machine"->"Mac OS X (DARWIN)"
56activate the platform specific changes.
57
58You will see that a lot of applications and plugins/applets will not compile
59successfully, due to the fact that they are not ported to this platform.
60You may disable them to be able to compile the rest.
61
62
63Information for Developers:
64---------------------------
65
661. Platform specific code should be surrounded by
67#ifdef Q_OS_MACX
68MACOS-X CODE
69#else
70OTHER-CODE
71#endif
72
732. The Plugin-Handling by MacOS-X is different than it is by Linux.
74On linux-systems, shared libraries are not different to dynamic loaded libraries
75(aka plugins). They just are different whether they are loaded automatically
76at startup or manually by any application.
77On MacOS-X, the plugins are loaded by a special mechanism and must be in a special
78binary format. Therefore you have to add the term "plugin" to the CONFIG-clause, as
79for instance:
80
81TEMPLATE=lib
82CONFIG += qt plugin release
83
84If you don't add "plugin" you will get a shared library which is not loadable
85(Error-Code: NSObjectFileImageInappropriateFile (2))!
86
87
88
89For problems, help and flames, feel free to contact me at
90
91eilers.stefan@epost.de \ No newline at end of file
diff --git a/development/macosx/config_macosx b/development/macosx/config_macosx
new file mode 100644
index 0000000..eb0792f
--- a/dev/null
+++ b/development/macosx/config_macosx
@@ -0,0 +1,290 @@
1#
2# Automatically generated make config: don't edit
3#
4
5#
6# Build Parameters
7#
8# CONFIG_TARGET_X86 is not set
9CONFIG_TARGET_MACOSX=y
10# CONFIG_TARGET_SHARP is not set
11# CONFIG_TARGET_IPAQ is not set
12# CONFIG_TARGET_RAMSES is not set
13# CONFIG_TARGET_SIMPAD is not set
14# CONFIG_TARGET_YOPY is not set
15# CONFIG_OPTIMIZE is not set
16CONFIG_DEBUG=y
17CONFIG_QUICK_LAUNCH=y
18# CONFIG_OPIE_NO_OVERRIDE_QT is not set
19CONFIG_SPECFILE="qws/macx-generic-g++"
20CONFIG_EXPERIMENTAL=y
21
22#
23# Base
24#
25CONFIG_LIBQPE=y
26# CONFIG_X11 is not set
27CONFIG_LIBOPIE=y
28# CONFIG_OPIE-LOGIN is not set
29# CONFIG_OPIEALARM is not set
30CONFIG_LAUNCHER=y
31CONFIG_PRELOAD=y
32CONFIG_LAUNCHER_CORE=y
33CONFIG_QWS=y
34
35#
36#
37#
38
39#
40# Applets
41#
42CONFIG_BATTERYAPPLET=y
43# CONFIG_CARDMON is not set
44CONFIG_CLIPBOARDAPPLET=y
45CONFIG_CLOCKAPPLET=y
46CONFIG_HOMEAPPLET=y
47# CONFIG_IRDAAPPLET is not set
48# CONFIG_LOGOUTAPPLET is not set
49# CONFIG_OBEXAPPLET is not set
50# CONFIG_OBEX is not set
51# CONFIG_RESTARTAPPLET is not set
52# CONFIG_ROTATEAPPLET is not set
53# CONFIG_SCREENSHOTAPPLET is not set
54# CONFIG_SUSPENDAPPLET is not set
55# CONFIG_VMEMO is not set
56# CONFIG_VOLUMEAPPLET is not set
57# CONFIG_VTAPPLET is not set
58
59#
60# Network applet needs a libqpe and libopie2 (core, ui, net)
61#
62CONFIG_NOTESAPPLET=y
63# CONFIG_WIRELESSAPPLET is not set
64
65#
66# Apps
67#
68# CONFIG_CALIBRATE is not set
69# CONFIG_EMBEDDEDKONSOLE is not set
70CONFIG_FILEBROWSER=y
71CONFIG_HELPBROWSER=y
72# CONFIG_OAPP is not set
73CONFIG_OIPKG=y
74CONFIG_QCOP=y
75CONFIG_TEXTEDIT=y
76# CONFIG_ADVANCEDFM is not set
77# CONFIG_AQPKG is not set
78CONFIG_CHECKBOOK=y
79# CONFIG_ODICT is not set
80# CONFIG_BARTENDER is not set
81# CONFIG_OPIE-CONSOLE is not set
82# CONFIG_OPIE-READER is not set
83CONFIG_OPIE-SHEET=y
84CONFIG_OPIE-WRITE=y
85CONFIG_OXYGEN=y
86CONFIG_SYSINFO=y
87CONFIG_TABLEVIEWER=y
88CONFIG_TINYKATE=y
89CONFIG_LIBKATE=y
90# CONFIG_ZSAFE is not set
91
92#
93# Communications and Networking
94#
95# CONFIG_GSMTOOL is not set
96# CONFIG_KEYPEBBLE is not set
97# CONFIG_MOBILEMSG is not set
98# CONFIG_MAIL is not set
99# CONFIG_FTPLIB is not set
100# CONFIG_MAILIT is not set
101# CONFIG_OPIEIRC is not set
102# CONFIG_OPIE-RDESKTOP is not set
103# CONFIG_UBROWSER is not set
104
105#
106# wellenreiter needs libqpe, libopie1 and libopie2 (core+net+ui)
107#
108
109#
110# Games
111#
112CONFIG_BACKGAMMON=y
113CONFIG_BOUNCE=y
114CONFIG_BUZZWORD=y
115CONFIG_FIFTEEN=y
116CONFIG_GO=y
117CONFIG_KBILL=y
118CONFIG_KCHECKERS=y
119CONFIG_KPACMAN=y
120CONFIG_MINDBREAKER=y
121CONFIG_MINESWEEP=y
122# CONFIG_WORDGAME is not set
123CONFIG_PARASHOOT=y
124CONFIG_QASTEROIDS=y
125# CONFIG_SFCAVE is not set
126# CONFIG_SFCAVE-SDL is not set
127# CONFIG_SNAKE is not set
128CONFIG_SOLITAIRE=y
129# CONFIG_TETRIX is not set
130# CONFIG_TICTAC is not set
131
132#
133# Graphics and Multimedia
134#
135# CONFIG_FREETYPE is not set
136CONFIG_DRAWPAD=y
137# CONFIG_QPDF is not set
138# CONFIG_OPIEPLAYER is not set
139
140#
141# opie-camera needs a libqpe, libopie and libopie2core
142#
143# CONFIG_OPIEPLAYER2 is not set
144# CONFIG_OPIEREC is not set
145CONFIG_SHOWIMG=y
146
147#
148# Input methods
149#
150# CONFIG_DASHER is not set
151# CONFIG_DVORAK is not set
152CONFIG_HANDWRITING=y
153
154#
155# opie-handwriting-classicset automatically selected
156#
157
158#
159# opie-handwriting-graffitiset automatically selected
160#
161CONFIG_JUMPX=y
162# CONFIG_KEYBOARD is not set
163CONFIG_KJUMPX=y
164# CONFIG_MULTIKEY is not set
165CONFIG_PICKBOARD=y
166CONFIG_UNIKEYBOARD=y
167
168#
169# Pim
170#
171CONFIG_ADDRESSBOOK=y
172CONFIG_DATEBOOK=y
173CONFIG_OSEARCH=y
174CONFIG_TODAY=y
175CONFIG_TODO=y
176
177#
178# Today Plugins
179#
180# CONFIG_TODAY_FORTUNE is not set
181# CONFIG_TODAY_STOCKTICKER is not set
182# CONFIG_TODAY_WEATHER is not set
183CONFIG_TODAY_ADDRESSBOOK=y
184CONFIG_TODAY_DATEBOOK=y
185CONFIG_TODAY_MAIL=y
186CONFIG_TODAY_TODOLIST=y
187
188#
189# Settings
190#
191CONFIG_BUTTON-SETTINGS=y
192CONFIG_CITYTIME=y
193CONFIG_LAUNCHER-SETTINGS=y
194CONFIG_LIGHT-AND-POWER=y
195CONFIG_SECURITY=y
196CONFIG_APPEARANCE2=y
197CONFIG_BACKUP=y
198CONFIG_LANGUAGE=y
199CONFIG_MEDIUMMOUNT=y
200CONFIG_NETSYSTEMTIME=y
201# CONFIG_NETWORKSETUP is not set
202# CONFIG_SOUND is not set
203# CONFIG_SSHKEYS is not set
204CONFIG_TABMANAGER=y
205# CONFIG_USERMANAGER is not set
206
207#
208# Theming
209#
210
211#
212# Decorations
213#
214CONFIG_DECO_FLAT=y
215CONFIG_DECO_LIQUID=y
216CONFIG_DECO_POLISHED=y
217
218#
219# Styles
220#
221CONFIG_FLAT=y
222CONFIG_FRESH=y
223CONFIG_LIQUID=y
224CONFIG_METAL=y
225CONFIG_THEME=y
226
227#
228# Tools
229#
230CONFIG_CALCULATOR=y
231CONFIG_CLOCK=y
232CONFIG_EUROCONV=y
233# CONFIG_FORMATTER is not set
234CONFIG_OPIE-SH=y
235# CONFIG_REMOTE is not set
236
237#
238# Development
239#
240# CONFIG_KEYVIEW is not set
241
242#
243# Examples
244#
245# CONFIG_EXAMPLES is not set
246
247#
248#
249#
250
251#
252# Experimental
253#
254
255#
256# libopie2
257#
258# CONFIG_LIBOPIE2CORE is not set
259
260#
261# libopie2db needs a libqpe and libopie2core
262#
263
264#
265# libopie2net needs a libqpe and libopie2core
266#
267
268#
269# libopie2pim needs a libqpe and libopie2core
270#
271
272#
273# libopie2ui needs a libqpe and libopie2core
274#
275
276#
277# libopie2mm needs a libqpe and libopie2core
278#
279
280#
281#
282#
283
284#
285# the examples need a libqpe, libopie2core, libopie2db, libopie2net, libopie2pim, libopie2ui and libopie2mm
286#
287
288#
289# SQL-Support needs libopie2db!
290#
diff --git a/include.pro b/include.pro
index 70ed731..4bdcaa7 100644
--- a/include.pro
+++ b/include.pro
@@ -1,105 +1,115 @@
1include ( $(OPIEDIR)/gen.pro ) 1include ( $(OPIEDIR)/gen.pro )
2 2
3# base opie install path 3# base opie install path
4prefix = /opt/QtPalmtop 4# prefix = /opt/QtPalmtop ??? Why here (eilers) ???
5prefix = $(OPIEDIR)
5 6
6contains( CONFIG, quick-app-lib ) { 7contains( CONFIG, quick-app-lib ) {
7 TEMPLATE = lib 8 TEMPLATE = lib
8 DESTDIR = $(OPIEDIR)/plugins/application 9 DESTDIR = $(OPIEDIR)/plugins/application
9 DEFINES += OPIE_APP_INTERFACE 10 DEFINES += OPIE_APP_INTERFACE
10 !contains( TARGET, launcher ) { 11 !contains( TARGET, launcher ) {
11 message( Linking $$TARGET to quicklauncher ) 12 message( Linking $$TARGET to quicklauncher )
12 system( rm -f $$(OPIEDIR)/bin/$$TARGET ) 13 system( rm -f $$(OPIEDIR)/bin/$$TARGET )
13 system( ln -s quicklauncher $$(OPIEDIR)/bin/$$TARGET ) 14 system( ln -s quicklauncher $$(OPIEDIR)/bin/$$TARGET )
14 } 15 }
15} 16}
16 17
17contains ( CONFIG, quick-app-bin ) { 18contains ( CONFIG, quick-app-bin ) {
18 TEMPLATE = app 19 TEMPLATE = app
19 DESTDIR = $(OPIEDIR)/bin 20 DESTDIR = $(OPIEDIR)/bin
20 DEFINES -= OPIE_APP_INTERFACE 21 DEFINES -= OPIE_APP_INTERFACE
21 message( Touching plugins/application/lib$${TARGET}.so ) 22 message( Touching plugins/application/lib$${TARGET}.so )
22 system( touch $$(OPIEDIR)/plugins/application/lib$${TARGET}.so ) 23 system( touch $$(OPIEDIR)/plugins/application/lib$${TARGET}.so )
23} 24}
24 25
25 26
26contains( TEMPLATE, lib ) { 27contains( TEMPLATE, lib ) {
27 target.path = $$prefix/lib 28 target.path = $$prefix/lib
28} 29}
29!contains( TEMPLATE, lib ) { 30!contains( TEMPLATE, lib ) {
30 target.path = $$prefix/bin 31 target.path = $$prefix/bin
31} 32}
32INSTALLS += target 33INSTALLS += target
33 34
34# ipkg control files 35# ipkg control files
35control.path = /CONTROL 36control.path = /CONTROL
36control.files = control postinst prerm postrm preinst conffiles 37control.files = control postinst prerm postrm preinst conffiles
37INSTALLS += control 38INSTALLS += control
38 39
39# images, default is $$prefix/pics/$$TARGET 40# images, default is $$prefix/pics/$$TARGET
40pics.path = $$prefix/pics/$$TARGET 41pics.path = $$prefix/pics/$$TARGET
41pics.files = pics/* 42pics.files = pics/*
42INSTALLS += pics 43INSTALLS += pics
43 44
44# sounds, default path is $$prefix/sounds/$$TARGET 45# sounds, default path is $$prefix/sounds/$$TARGET
45sounds.path = $$prefix/sounds/$$TARGET 46sounds.path = $$prefix/sounds/$$TARGET
46sounds.files = sounds/* 47sounds.files = sounds/*
47INSTALLS += sounds 48INSTALLS += sounds
48 49
49# init scripts, default path is /etc/init.d 50# init scripts, default path is /etc/init.d
50init.path = /etc/init.d 51init.path = /etc/init.d
51init.files = init.d/* 52init.files = init.d/*
52INSTALLS += init 53INSTALLS += init
53 54
54# data, default path is /usr/share/$$TARGET 55# data, default path is /usr/share/$$TARGET
55data.path = /usr/share/$$TARGET 56data.path = /usr/share/$$TARGET
56data.files = share/* 57data.files = share/*
57INSTALLS += data 58INSTALLS += data
58 59
59etc.path = $$prefix/etc/ 60etc.path = $$prefix/etc/
60etc.files = etc/* 61etc.files = etc/*
61INSTALLS += etc 62INSTALLS += etc
62 63
63apps.path = $$prefix/apps/ 64apps.path = $$prefix/apps/
64apps.files = apps/* 65apps.files = apps/*
65INSTALLS += apps 66INSTALLS += apps
66 67
67# sounds, default path is $$prefix/sounds/$$TARGET 68# sounds, default path is $$prefix/sounds/$$TARGET
68sounds.path = $$prefix/sounds/$$TARGET 69sounds.path = $$prefix/sounds/$$TARGET
69sounds.files = sounds/* 70sounds.files = sounds/*
70INSTALLS += sounds 71INSTALLS += sounds
71 72
72# anything in nonstandard paths 73# anything in nonstandard paths
73root.path = / 74root.path = /
74root.files = root/* 75root.files = root/*
75INSTALLS += root 76INSTALLS += root
76 77
77# new targets 78# new targets
78opie-lupdate.target = opie-lupdate 79opie-lupdate.target = opie-lupdate
79opie-lupdate.commands = opie-lupdate $(PRO) 80opie-lupdate.commands = opie-lupdate $(PRO)
80 81
81opie-lrelease.target = opie-lrelease 82opie-lrelease.target = opie-lrelease
82opie-lrelease.commands = opie-lrelease $(PRO) 83opie-lrelease.commands = opie-lrelease $(PRO)
83 84
84lupdate.target = lupdate 85lupdate.target = lupdate
85lupdate.commands = lupdate -noobsolete $(PRO) 86lupdate.commands = lupdate -noobsolete $(PRO)
86 87
87lrelease.target = lrelease 88lrelease.target = lrelease
88lrelease.commands = lrelease $(PRO) 89lrelease.commands = lrelease $(PRO)
89 90
90# new message target to get all strings from the apps with and without tr 91# new message target to get all strings from the apps with and without tr
91messages.target = messages 92messages.target = messages
92messages.commands = xgettext -C -n -ktr -kQT_TRANSLATE_NOOP $$HEADERS $$SOURCES -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-tr.po' && xgettext -C -n -a $$HEADERS $$SOURCES -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-allstrings.po' 93messages.commands = xgettext -C -n -ktr -kQT_TRANSLATE_NOOP $$HEADERS $$SOURCES -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-tr.po' && xgettext -C -n -a $$HEADERS $$SOURCES -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-allstrings.po'
93 94
94ipk.target = ipk 95ipk.target = ipk
95ipk.commands = tmp=`mktemp -d /tmp/ipkg-opie.XXXXXXXXXX` && ( $(MAKE) INSTALL_ROOT="$$$$tmp" install && ipkg-build $$$$tmp; rm -rf $$$$tmp; ) 96ipk.commands = tmp=`mktemp -d /tmp/ipkg-opie.XXXXXXXXXX` && ( $(MAKE) INSTALL_ROOT="$$$$tmp" install && ipkg-build $$$$tmp; rm -rf $$$$tmp; )
96 97
97QMAKE_EXTRA_UNIX_TARGETS += lupdate lrelease ipk opie-lupdate opie-lrelease messages 98QMAKE_EXTRA_UNIX_TARGETS += lupdate lrelease ipk opie-lupdate opie-lrelease messages
99CONFTEST = $$system( echo $CONFIG_TARGET_MACOSX )
100contains( CONFTEST, y ){
101QMAKE_LFLAGS += -Wl
102}
103else {
98QMAKE_LFLAGS += -Wl,-rpath=$$prefix/lib 104QMAKE_LFLAGS += -Wl,-rpath=$$prefix/lib
105# I am not sure whether it is a good idea to change the way plugins is build
106# on linux. Therefore I remove the "plugin" term, which is needed by MacOS-X
107CONFIG -= plugin
108}
99QMAKE_LIBDIR += $(OPIEDIR)/lib 109QMAKE_LIBDIR += $(OPIEDIR)/lib
100 110
101MOC_DIR=.moc/$(PLATFORM) 111MOC_DIR=.moc/$(PLATFORM)
102OBJECTS_DIR=.obj/$(PLATFORM) 112OBJECTS_DIR=.obj/$(PLATFORM)
103 113
104#was here now at thetop 114#was here now at thetop
105#include ( $(OPIEDIR)/gen.pro ) 115#include ( $(OPIEDIR)/gen.pro )
diff --git a/inputmethods/dasher/dasher.pro b/inputmethods/dasher/dasher.pro
index 7b6def9..b7669a4 100644
--- a/inputmethods/dasher/dasher.pro
+++ b/inputmethods/dasher/dasher.pro
@@ -1,57 +1,57 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 3
4HEADERS = Alphabet.h \ 4HEADERS = Alphabet.h \
5 DasherModel.h \ 5 DasherModel.h \
6 FrameRate.h \ 6 FrameRate.h \
7 AlphabetMap.h \ 7 AlphabetMap.h \
8 DasherNode.h \ 8 DasherNode.h \
9 LanguageModel.h \ 9 LanguageModel.h \
10 AlphIO.h \ 10 AlphIO.h \
11 DasherScreen.h \ 11 DasherScreen.h \
12 PPMLanguageModel.h \ 12 PPMLanguageModel.h \
13 Context.h \ 13 Context.h \
14 DasherSettingsInterface.h \ 14 DasherSettingsInterface.h \
15 QtDasherImpl.h \ 15 QtDasherImpl.h \
16 CustomAlphabet.h \ 16 CustomAlphabet.h \
17 DasherTypes.h \ 17 DasherTypes.h \
18 QtDasherPlugin.h \ 18 QtDasherPlugin.h \
19 DashEdit.h \ 19 DashEdit.h \
20 DasherView.h \ 20 DasherView.h \
21 QtDasherScreen.h \ 21 QtDasherScreen.h \
22 DasherAppInterface.h \ 22 DasherAppInterface.h \
23 DasherViewSquare.h \ 23 DasherViewSquare.h \
24 SettingsStore.h \ 24 SettingsStore.h \
25 DasherInterface.h \ 25 DasherInterface.h \
26 DasherWidgetInterface.h 26 DasherWidgetInterface.h
27SOURCES = Alphabet.cpp \ 27SOURCES = Alphabet.cpp \
28 DasherModel.cpp \ 28 DasherModel.cpp \
29 LanguageModel.cpp \ 29 LanguageModel.cpp \
30 AlphabetMap.cpp \ 30 AlphabetMap.cpp \
31 DasherNode.cpp \ 31 DasherNode.cpp \
32 PPMLanguageModel.cpp \ 32 PPMLanguageModel.cpp \
33 AlphIO.cpp \ 33 AlphIO.cpp \
34 DasherSettingsInterface.cpp \ 34 DasherSettingsInterface.cpp \
35 SettingsStore.cpp \ 35 SettingsStore.cpp \
36 CustomAlphabet.cpp \ 36 CustomAlphabet.cpp \
37 DasherView.cpp \ 37 DasherView.cpp \
38 DasherInterface.cpp \ 38 DasherInterface.cpp \
39 DasherViewSquare.cpp \ 39 DasherViewSquare.cpp \
40 QtDasherImpl.cc \ 40 QtDasherImpl.cc \
41 QtDasherPlugin.cc \ 41 QtDasherPlugin.cc \
42 QtDasherScreen.cc 42 QtDasherScreen.cc
43 TARGET = qdasher 43 TARGET = qdasher
44 DESTDIR = ../../plugins/inputmethods 44 DESTDIR = ../../plugins/inputmethods
45INCLUDEPATH += $(OPIEDIR)/include 45INCLUDEPATH += $(OPIEDIR)/include
46DEPENDPATH += ../$(OPIEDIR)/include ../../launcher 46DEPENDPATH += ../$(OPIEDIR)/include ../../launcher
47LIBS += -lqpe 47LIBS += -lqpe
48 QMAKE_LFLAGS+= -Wl,-rpath,/opt/QtPalmtop/plugins/inputmethods 48 QMAKE_LFLAGS+= -Wl,-rpath,/opt/QtPalmtop/plugins/inputmethods
49 VERSION = 1.0.0 49 VERSION = 1.0.0
50 SUBDIRS = DasherCore 50 SUBDIRS = DasherCore
51 51
52 52
53include ( $(OPIEDIR)/include.pro ) 53include ( $(OPIEDIR)/include.pro )
54target.path = $$prefix/plugins/inputmethods 54target.path = $$prefix/plugins/inputmethods
55 55
56 56
57 57
diff --git a/inputmethods/dvorak/dvorak.pro b/inputmethods/dvorak/dvorak.pro
index cd30aa2..67fe4e6 100644
--- a/inputmethods/dvorak/dvorak.pro
+++ b/inputmethods/dvorak/dvorak.pro
@@ -1,36 +1,36 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= dvorak.h \ 3 HEADERS= dvorak.h \
4 dvorakimpl.h 4 dvorakimpl.h
5 SOURCES= dvorak.cpp \ 5 SOURCES= dvorak.cpp \
6 dvorakimpl.cpp 6 dvorakimpl.cpp
7 TARGET = qdvorak 7 TARGET = qdvorak
8 DESTDIR = ../../plugins/inputmethods 8 DESTDIR = ../../plugins/inputmethods
9INCLUDEPATH += $(OPIEDIR)/include 9INCLUDEPATH += $(OPIEDIR)/include
10DEPENDPATH += ../$(OPIEDIR)/include ../../launcher 10DEPENDPATH += ../$(OPIEDIR)/include ../../launcher
11LIBS += -lqpe -L$(OPIEDIR)/plugins/inputmethods -lqpickboard 11LIBS += -lqpe -L$(OPIEDIR)/plugins/inputmethods -lqpickboard
12 QMAKE_LFLAGS+= -Wl,-rpath,/opt/QtPalmtop/plugins/inputmethods 12 QMAKE_LFLAGS+= -Wl,-rpath,/opt/QtPalmtop/plugins/inputmethods
13 VERSION = 1.0.0 13 VERSION = 1.0.0
14 14
15TRANSLATIONS = ../../i18n/de/libqdvorak.ts \ 15TRANSLATIONS = ../../i18n/de/libqdvorak.ts \
16 ../../i18n/nl/libqdvorak.ts \ 16 ../../i18n/nl/libqdvorak.ts \
17 ../../i18n/da/libqdvorak.ts \ 17 ../../i18n/da/libqdvorak.ts \
18 ../../i18n/xx/libqdvorak.ts \ 18 ../../i18n/xx/libqdvorak.ts \
19 ../../i18n/en/libqdvorak.ts \ 19 ../../i18n/en/libqdvorak.ts \
20 ../../i18n/es/libqdvorak.ts \ 20 ../../i18n/es/libqdvorak.ts \
21 ../../i18n/fr/libqdvorak.ts \ 21 ../../i18n/fr/libqdvorak.ts \
22 ../../i18n/hu/libqdvorak.ts \ 22 ../../i18n/hu/libqdvorak.ts \
23 ../../i18n/ja/libqdvorak.ts \ 23 ../../i18n/ja/libqdvorak.ts \
24 ../../i18n/ko/libqdvorak.ts \ 24 ../../i18n/ko/libqdvorak.ts \
25 ../../i18n/no/libqdvorak.ts \ 25 ../../i18n/no/libqdvorak.ts \
26 ../../i18n/pl/libqdvorak.ts \ 26 ../../i18n/pl/libqdvorak.ts \
27 ../../i18n/pt/libqdvorak.ts \ 27 ../../i18n/pt/libqdvorak.ts \
28 ../../i18n/pt_BR/libqdvorak.ts \ 28 ../../i18n/pt_BR/libqdvorak.ts \
29 ../../i18n/sl/libqdvorak.ts \ 29 ../../i18n/sl/libqdvorak.ts \
30 ../../i18n/zh_CN/libqdvorak.ts \ 30 ../../i18n/zh_CN/libqdvorak.ts \
31 ../../i18n/zh_TW/libqdvorak.ts 31 ../../i18n/zh_TW/libqdvorak.ts
32 32
33 33
34 34
35include ( $(OPIEDIR)/include.pro ) 35include ( $(OPIEDIR)/include.pro )
36target.path = $$prefix/plugins/inputmethods 36target.path = $$prefix/plugins/inputmethods
diff --git a/inputmethods/handwriting/handwriting.pro b/inputmethods/handwriting/handwriting.pro
index 4ec5932..7a22208 100644
--- a/inputmethods/handwriting/handwriting.pro
+++ b/inputmethods/handwriting/handwriting.pro
@@ -1,54 +1,54 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= qimpenchar.h \ 3 HEADERS= qimpenchar.h \
4 qimpenprofile.h \ 4 qimpenprofile.h \
5 qimpencombining.h \ 5 qimpencombining.h \
6 qimpenhelp.h \ 6 qimpenhelp.h \
7 qimpeninput.h \ 7 qimpeninput.h \
8 qimpenmatch.h \ 8 qimpenmatch.h \
9 qimpensetup.h \ 9 qimpensetup.h \
10 qimpenstroke.h \ 10 qimpenstroke.h \
11 qimpenwidget.h \ 11 qimpenwidget.h \
12 qimpenwordpick.h \ 12 qimpenwordpick.h \
13 handwritingimpl.h 13 handwritingimpl.h
14 SOURCES= qimpenchar.cpp \ 14 SOURCES= qimpenchar.cpp \
15 qimpenprofile.cpp \ 15 qimpenprofile.cpp \
16 qimpencombining.cpp \ 16 qimpencombining.cpp \
17 qimpenhelp.cpp \ 17 qimpenhelp.cpp \
18 qimpeninput.cpp \ 18 qimpeninput.cpp \
19 qimpenmatch.cpp \ 19 qimpenmatch.cpp \
20 qimpensetup.cpp \ 20 qimpensetup.cpp \
21 qimpenstroke.cpp \ 21 qimpenstroke.cpp \
22 qimpenwidget.cpp \ 22 qimpenwidget.cpp \
23 qimpenwordpick.cpp \ 23 qimpenwordpick.cpp \
24 handwritingimpl.cpp 24 handwritingimpl.cpp
25INTERFACES = qimpenprefbase.ui 25INTERFACES = qimpenprefbase.ui
26 TARGET = qhandwriting 26 TARGET = qhandwriting
27 DESTDIR = ../../plugins/inputmethods 27 DESTDIR = ../../plugins/inputmethods
28INCLUDEPATH += $(OPIEDIR)/include 28INCLUDEPATH += $(OPIEDIR)/include
29DEPENDPATH += ../$(OPIEDIR)/include ../../launcher 29DEPENDPATH += ../$(OPIEDIR)/include ../../launcher
30LIBS += -lqpe 30LIBS += -lqpe
31 VERSION = 1.0.0 31 VERSION = 1.0.0
32 32
33TRANSLATIONS = ../../i18n/de/libqhandwriting.ts \ 33TRANSLATIONS = ../../i18n/de/libqhandwriting.ts \
34 ../../i18n/nl/libqhandwriting.ts \ 34 ../../i18n/nl/libqhandwriting.ts \
35 ../../i18n/da/libqhandwriting.ts \ 35 ../../i18n/da/libqhandwriting.ts \
36 ../../i18n/xx/libqhandwriting.ts \ 36 ../../i18n/xx/libqhandwriting.ts \
37 ../../i18n/en/libqhandwriting.ts \ 37 ../../i18n/en/libqhandwriting.ts \
38 ../../i18n/es/libqhandwriting.ts \ 38 ../../i18n/es/libqhandwriting.ts \
39 ../../i18n/fr/libqhandwriting.ts \ 39 ../../i18n/fr/libqhandwriting.ts \
40 ../../i18n/hu/libqhandwriting.ts \ 40 ../../i18n/hu/libqhandwriting.ts \
41 ../../i18n/ja/libqhandwriting.ts \ 41 ../../i18n/ja/libqhandwriting.ts \
42 ../../i18n/ko/libqhandwriting.ts \ 42 ../../i18n/ko/libqhandwriting.ts \
43 ../../i18n/no/libqhandwriting.ts \ 43 ../../i18n/no/libqhandwriting.ts \
44 ../../i18n/pl/libqhandwriting.ts \ 44 ../../i18n/pl/libqhandwriting.ts \
45 ../../i18n/pt/libqhandwriting.ts \ 45 ../../i18n/pt/libqhandwriting.ts \
46 ../../i18n/pt_BR/libqhandwriting.ts \ 46 ../../i18n/pt_BR/libqhandwriting.ts \
47 ../../i18n/sl/libqhandwriting.ts \ 47 ../../i18n/sl/libqhandwriting.ts \
48 ../../i18n/zh_CN/libqhandwriting.ts \ 48 ../../i18n/zh_CN/libqhandwriting.ts \
49 ../../i18n/zh_TW/libqhandwriting.ts 49 ../../i18n/zh_TW/libqhandwriting.ts
50 50
51 51
52 52
53include ( $(OPIEDIR)/include.pro ) 53include ( $(OPIEDIR)/include.pro )
54target.path = $$prefix/plugins/inputmethods 54target.path = $$prefix/plugins/inputmethods
diff --git a/inputmethods/jumpx/jumpx.pro b/inputmethods/jumpx/jumpx.pro
index eff4563..a75ffd5 100644
--- a/inputmethods/jumpx/jumpx.pro
+++ b/inputmethods/jumpx/jumpx.pro
@@ -1,35 +1,35 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = keyboard.h \ 3HEADERS = keyboard.h \
4 keyboardimpl.h 4 keyboardimpl.h
5SOURCES = keyboard.cpp \ 5SOURCES = keyboard.cpp \
6 keyboardimpl.cpp 6 keyboardimpl.cpp
7TARGET = qjumpx 7TARGET = qjumpx
8DESTDIR = ../../plugins/inputmethods 8DESTDIR = ../../plugins/inputmethods
9INCLUDEPATH += $(OPIEDIR)/include 9INCLUDEPATH += $(OPIEDIR)/include
10DEPENDPATH += $(OPIEDIR)/include 10DEPENDPATH += $(OPIEDIR)/include
11LIBS += -lqpe 11LIBS += -lqpe
12VERSION = 1.0.0 12VERSION = 1.0.0
13 13
14TRANSLATIONS = ../../i18n/de/libqjumpx.ts \ 14TRANSLATIONS = ../../i18n/de/libqjumpx.ts \
15 ../../i18n/nl/libqjumpx.ts \ 15 ../../i18n/nl/libqjumpx.ts \
16 ../../i18n/da/libqjumpx.ts \ 16 ../../i18n/da/libqjumpx.ts \
17 ../../i18n/xx/libqjumpx.ts \ 17 ../../i18n/xx/libqjumpx.ts \
18 ../../i18n/en/libqjumpx.ts \ 18 ../../i18n/en/libqjumpx.ts \
19 ../../i18n/es/libqjumpx.ts \ 19 ../../i18n/es/libqjumpx.ts \
20 ../../i18n/fr/libqjumpx.ts \ 20 ../../i18n/fr/libqjumpx.ts \
21 ../../i18n/hu/libqjumpx.ts \ 21 ../../i18n/hu/libqjumpx.ts \
22 ../../i18n/ja/libqjumpx.ts \ 22 ../../i18n/ja/libqjumpx.ts \
23 ../../i18n/ko/libqjumpx.ts \ 23 ../../i18n/ko/libqjumpx.ts \
24 ../../i18n/no/libqjumpx.ts \ 24 ../../i18n/no/libqjumpx.ts \
25 ../../i18n/pl/libqjumpx.ts \ 25 ../../i18n/pl/libqjumpx.ts \
26 ../../i18n/pt/libqjumpx.ts \ 26 ../../i18n/pt/libqjumpx.ts \
27 ../../i18n/pt_BR/libqjumpx.ts \ 27 ../../i18n/pt_BR/libqjumpx.ts \
28 ../../i18n/sl/libqjumpx.ts \ 28 ../../i18n/sl/libqjumpx.ts \
29 ../../i18n/zh_CN/libqjumpx.ts \ 29 ../../i18n/zh_CN/libqjumpx.ts \
30 ../../i18n/zh_TW/libqjumpx.ts 30 ../../i18n/zh_TW/libqjumpx.ts
31 31
32 32
33 33
34include ( $(OPIEDIR)/include.pro ) 34include ( $(OPIEDIR)/include.pro )
35target.path = $$prefix/plugins/inputmethods 35target.path = $$prefix/plugins/inputmethods
diff --git a/inputmethods/keyboard/keyboard.pro b/inputmethods/keyboard/keyboard.pro
index 5ca97f1..56e35b9 100644
--- a/inputmethods/keyboard/keyboard.pro
+++ b/inputmethods/keyboard/keyboard.pro
@@ -1,36 +1,36 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= keyboard.h \ 3 HEADERS= keyboard.h \
4 keyboardimpl.h 4 keyboardimpl.h
5 SOURCES= keyboard.cpp \ 5 SOURCES= keyboard.cpp \
6 keyboardimpl.cpp 6 keyboardimpl.cpp
7 TARGET = qkeyboard 7 TARGET = qkeyboard
8 DESTDIR = ../../plugins/inputmethods 8 DESTDIR = ../../plugins/inputmethods
9INCLUDEPATH += $(OPIEDIR)/include 9INCLUDEPATH += $(OPIEDIR)/include
10DEPENDPATH += ../$(OPIEDIR)/include ../../launcher 10DEPENDPATH += ../$(OPIEDIR)/include ../../launcher
11LIBS += -lqpe -L$(OPIEDIR)/plugins/inputmethods -lqpickboard 11LIBS += -lqpe -L$(OPIEDIR)/plugins/inputmethods -lqpickboard
12 QMAKE_LFLAGS+= -Wl,-rpath,/opt/QtPalmtop/plugins/inputmethods 12 QMAKE_LFLAGS+= -Wl,-rpath,/opt/QtPalmtop/plugins/inputmethods
13 VERSION = 1.0.0 13 VERSION = 1.0.0
14 14
15TRANSLATIONS = ../../i18n/de/libqkeyboard.ts \ 15TRANSLATIONS = ../../i18n/de/libqkeyboard.ts \
16 ../../i18n/nl/libqkeyboard.ts \ 16 ../../i18n/nl/libqkeyboard.ts \
17 ../../i18n/da/libqkeyboard.ts \ 17 ../../i18n/da/libqkeyboard.ts \
18 ../../i18n/xx/libqkeyboard.ts \ 18 ../../i18n/xx/libqkeyboard.ts \
19 ../../i18n/en/libqkeyboard.ts \ 19 ../../i18n/en/libqkeyboard.ts \
20 ../../i18n/es/libqkeyboard.ts \ 20 ../../i18n/es/libqkeyboard.ts \
21 ../../i18n/fr/libqkeyboard.ts \ 21 ../../i18n/fr/libqkeyboard.ts \
22 ../../i18n/hu/libqkeyboard.ts \ 22 ../../i18n/hu/libqkeyboard.ts \
23 ../../i18n/ja/libqkeyboard.ts \ 23 ../../i18n/ja/libqkeyboard.ts \
24 ../../i18n/ko/libqkeyboard.ts \ 24 ../../i18n/ko/libqkeyboard.ts \
25 ../../i18n/no/libqkeyboard.ts \ 25 ../../i18n/no/libqkeyboard.ts \
26 ../../i18n/pl/libqkeyboard.ts \ 26 ../../i18n/pl/libqkeyboard.ts \
27 ../../i18n/pt/libqkeyboard.ts \ 27 ../../i18n/pt/libqkeyboard.ts \
28 ../../i18n/pt_BR/libqkeyboard.ts \ 28 ../../i18n/pt_BR/libqkeyboard.ts \
29 ../../i18n/sl/libqkeyboard.ts \ 29 ../../i18n/sl/libqkeyboard.ts \
30 ../../i18n/zh_CN/libqkeyboard.ts \ 30 ../../i18n/zh_CN/libqkeyboard.ts \
31 ../../i18n/zh_TW/libqkeyboard.ts 31 ../../i18n/zh_TW/libqkeyboard.ts
32 32
33 33
34 34
35include ( $(OPIEDIR)/include.pro ) 35include ( $(OPIEDIR)/include.pro )
36target.path = $$prefix/plugins/inputmethods 36target.path = $$prefix/plugins/inputmethods
diff --git a/inputmethods/kjumpx/kjumpx.pro b/inputmethods/kjumpx/kjumpx.pro
index 0624583..2dd6ddf 100644
--- a/inputmethods/kjumpx/kjumpx.pro
+++ b/inputmethods/kjumpx/kjumpx.pro
@@ -1,35 +1,35 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = keyboard.h \ 3HEADERS = keyboard.h \
4 keyboardimpl.h 4 keyboardimpl.h
5SOURCES = keyboard.cpp \ 5SOURCES = keyboard.cpp \
6 keyboardimpl.cpp 6 keyboardimpl.cpp
7TARGET = qkjumpx 7TARGET = qkjumpx
8DESTDIR = ../../plugins/inputmethods 8DESTDIR = ../../plugins/inputmethods
9INCLUDEPATH += $(OPIEDIR)/include 9INCLUDEPATH += $(OPIEDIR)/include
10DEPENDPATH += $(OPIEDIR)/include 10DEPENDPATH += $(OPIEDIR)/include
11LIBS += -lqpe 11LIBS += -lqpe
12VERSION = 1.0.0 12VERSION = 1.0.0
13 13
14TRANSLATIONS = ../../i18n/de/libqkjumpx.ts \ 14TRANSLATIONS = ../../i18n/de/libqkjumpx.ts \
15 ../../i18n/nl/libqkjumpx.ts \ 15 ../../i18n/nl/libqkjumpx.ts \
16 ../../i18n/da/libqkjumpx.ts \ 16 ../../i18n/da/libqkjumpx.ts \
17 ../../i18n/xx/libqkjumpx.ts \ 17 ../../i18n/xx/libqkjumpx.ts \
18 ../../i18n/en/libqkjumpx.ts \ 18 ../../i18n/en/libqkjumpx.ts \
19 ../../i18n/es/libqkjumpx.ts \ 19 ../../i18n/es/libqkjumpx.ts \
20 ../../i18n/fr/libqkjumpx.ts \ 20 ../../i18n/fr/libqkjumpx.ts \
21 ../../i18n/hu/libqkjumpx.ts \ 21 ../../i18n/hu/libqkjumpx.ts \
22 ../../i18n/ja/libqkjumpx.ts \ 22 ../../i18n/ja/libqkjumpx.ts \
23 ../../i18n/ko/libqkjumpx.ts \ 23 ../../i18n/ko/libqkjumpx.ts \
24 ../../i18n/no/libqkjumpx.ts \ 24 ../../i18n/no/libqkjumpx.ts \
25 ../../i18n/pl/libqkjumpx.ts \ 25 ../../i18n/pl/libqkjumpx.ts \
26 ../../i18n/pt/libqkjumpx.ts \ 26 ../../i18n/pt/libqkjumpx.ts \
27 ../../i18n/pt_BR/libqkjumpx.ts \ 27 ../../i18n/pt_BR/libqkjumpx.ts \
28 ../../i18n/sl/libqkjumpx.ts \ 28 ../../i18n/sl/libqkjumpx.ts \
29 ../../i18n/zh_CN/libqkjumpx.ts \ 29 ../../i18n/zh_CN/libqkjumpx.ts \
30 ../../i18n/zh_TW/libqkjumpx.ts 30 ../../i18n/zh_TW/libqkjumpx.ts
31 31
32 32
33 33
34include ( $(OPIEDIR)/include.pro ) 34include ( $(OPIEDIR)/include.pro )
35target.path = $$prefix/plugins/inputmethods 35target.path = $$prefix/plugins/inputmethods
diff --git a/inputmethods/multikey/multikey.pro b/inputmethods/multikey/multikey.pro
index 424c000..82dcb94 100644
--- a/inputmethods/multikey/multikey.pro
+++ b/inputmethods/multikey/multikey.pro
@@ -1,36 +1,36 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= keyboard.h \ 3 HEADERS= keyboard.h \
4 configdlg.h \ 4 configdlg.h \
5 keyboardimpl.h 5 keyboardimpl.h
6 SOURCES= keyboard.cpp \ 6 SOURCES= keyboard.cpp \
7 configdlg.cpp \ 7 configdlg.cpp \
8 keyboardimpl.cpp 8 keyboardimpl.cpp
9 TARGET = qmultikey 9 TARGET = qmultikey
10 DESTDIR = $(OPIEDIR)/plugins/inputmethods 10 DESTDIR = $(OPIEDIR)/plugins/inputmethods
11INCLUDEPATH += $(OPIEDIR)/include 11INCLUDEPATH += $(OPIEDIR)/include
12DEPENDPATH += ../$(OPIEDIR)/include ../../launcher 12DEPENDPATH += ../$(OPIEDIR)/include ../../launcher
13LIBS += -lqpe -L$(OPIEDIR)/plugins/inputmethods -lqpickboard 13LIBS += -lqpe -L$(OPIEDIR)/plugins/inputmethods -lqpickboard
14 QMAKE_LFLAGS+= -Wl,-rpath,/opt/QtPalmtop/plugins/inputmethods 14 QMAKE_LFLAGS+= -Wl,-rpath,/opt/QtPalmtop/plugins/inputmethods
15 VERSION = 1.0.0 15 VERSION = 1.0.0
16 16
17TRANSLATIONS = ../../i18n/pt_BR/libqmultikey.ts \ 17TRANSLATIONS = ../../i18n/pt_BR/libqmultikey.ts \
18 ../../i18n/nl/libqmultikey.ts \ 18 ../../i18n/nl/libqmultikey.ts \
19 ../../i18n/de/libqmultikey.ts \ 19 ../../i18n/de/libqmultikey.ts \
20 ../../i18n/xx/libqmultikey.ts \ 20 ../../i18n/xx/libqmultikey.ts \
21 ../../i18n/en/libqmultikey.ts \ 21 ../../i18n/en/libqmultikey.ts \
22 ../../i18n/hu/libqmultikey.ts \ 22 ../../i18n/hu/libqmultikey.ts \
23 ../../i18n/sl/libqmultikey.ts \ 23 ../../i18n/sl/libqmultikey.ts \
24 ../../i18n/ja/libqmultikey.ts \ 24 ../../i18n/ja/libqmultikey.ts \
25 ../../i18n/ko/libqmultikey.ts \ 25 ../../i18n/ko/libqmultikey.ts \
26 ../../i18n/pl/libqmultikey.ts \ 26 ../../i18n/pl/libqmultikey.ts \
27 ../../i18n/no/libqmultikey.ts \ 27 ../../i18n/no/libqmultikey.ts \
28 ../../i18n/zh_CN/libqmultikey.ts \ 28 ../../i18n/zh_CN/libqmultikey.ts \
29 ../../i18n/zh_TW/libqmultikey.ts \ 29 ../../i18n/zh_TW/libqmultikey.ts \
30 ../../i18n/fr/libqmultikey.ts \ 30 ../../i18n/fr/libqmultikey.ts \
31 ../../i18n/da/libqmultikey.ts 31 ../../i18n/da/libqmultikey.ts
32 32
33 33
34 34
35include ( $(OPIEDIR)/include.pro ) 35include ( $(OPIEDIR)/include.pro )
36target.path = $$prefix/plugins/inputmethods 36target.path = $$prefix/plugins/inputmethods
diff --git a/inputmethods/pickboard/pickboard.pro b/inputmethods/pickboard/pickboard.pro
index 53ff8f0..b86c069 100644
--- a/inputmethods/pickboard/pickboard.pro
+++ b/inputmethods/pickboard/pickboard.pro
@@ -1,33 +1,33 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= pickboard.h pickboardcfg.h pickboardimpl.h pickboardpicks.h 3 HEADERS= pickboard.h pickboardcfg.h pickboardimpl.h pickboardpicks.h
4 SOURCES= pickboard.cpp pickboardcfg.cpp pickboardimpl.cpp pickboardpicks.cpp 4 SOURCES= pickboard.cpp pickboardcfg.cpp pickboardimpl.cpp pickboardpicks.cpp
5 TARGET = qpickboard 5 TARGET = qpickboard
6 DESTDIR = ../../plugins/inputmethods 6 DESTDIR = ../../plugins/inputmethods
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += ../$(OPIEDIR)/include ../../launcher 8DEPENDPATH += ../$(OPIEDIR)/include ../../launcher
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../i18n/de/libqpickboard.ts \ 12TRANSLATIONS = ../../i18n/de/libqpickboard.ts \
13 ../../i18n/nl/libqpickboard.ts \ 13 ../../i18n/nl/libqpickboard.ts \
14 ../../i18n/da/libqpickboard.ts \ 14 ../../i18n/da/libqpickboard.ts \
15 ../../i18n/xx/libqpickboard.ts \ 15 ../../i18n/xx/libqpickboard.ts \
16 ../../i18n/en/libqpickboard.ts \ 16 ../../i18n/en/libqpickboard.ts \
17 ../../i18n/es/libqpickboard.ts \ 17 ../../i18n/es/libqpickboard.ts \
18 ../../i18n/fr/libqpickboard.ts \ 18 ../../i18n/fr/libqpickboard.ts \
19 ../../i18n/hu/libqpickboard.ts \ 19 ../../i18n/hu/libqpickboard.ts \
20 ../../i18n/ja/libqpickboard.ts \ 20 ../../i18n/ja/libqpickboard.ts \
21 ../../i18n/ko/libqpickboard.ts \ 21 ../../i18n/ko/libqpickboard.ts \
22 ../../i18n/no/libqpickboard.ts \ 22 ../../i18n/no/libqpickboard.ts \
23 ../../i18n/pl/libqpickboard.ts \ 23 ../../i18n/pl/libqpickboard.ts \
24 ../../i18n/pt/libqpickboard.ts \ 24 ../../i18n/pt/libqpickboard.ts \
25 ../../i18n/pt_BR/libqpickboard.ts \ 25 ../../i18n/pt_BR/libqpickboard.ts \
26 ../../i18n/sl/libqpickboard.ts \ 26 ../../i18n/sl/libqpickboard.ts \
27 ../../i18n/zh_CN/libqpickboard.ts \ 27 ../../i18n/zh_CN/libqpickboard.ts \
28 ../../i18n/zh_TW/libqpickboard.ts 28 ../../i18n/zh_TW/libqpickboard.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/inputmethods 33target.path = $$prefix/plugins/inputmethods
diff --git a/inputmethods/unikeyboard/unikeyboard.pro b/inputmethods/unikeyboard/unikeyboard.pro
index 0732dc8..678f575 100644
--- a/inputmethods/unikeyboard/unikeyboard.pro
+++ b/inputmethods/unikeyboard/unikeyboard.pro
@@ -1,33 +1,33 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS= unikeyboard.h unikeyboardimpl.h 3 HEADERS= unikeyboard.h unikeyboardimpl.h
4 SOURCES= unikeyboard.cpp unikeyboardimpl.cpp 4 SOURCES= unikeyboard.cpp unikeyboardimpl.cpp
5 TARGET = qunikeyboard 5 TARGET = qunikeyboard
6 DESTDIR = ../../plugins/inputmethods 6 DESTDIR = ../../plugins/inputmethods
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += ../$(OPIEDIR)/include ../../launcher 8DEPENDPATH += ../$(OPIEDIR)/include ../../launcher
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../i18n/de/libqunikeyboard.ts \ 12TRANSLATIONS = ../../i18n/de/libqunikeyboard.ts \
13 ../../i18n/nl/libqunikeyboard.ts \ 13 ../../i18n/nl/libqunikeyboard.ts \
14 ../../i18n/da/libqunikeyboard.ts \ 14 ../../i18n/da/libqunikeyboard.ts \
15 ../../i18n/xx/libqunikeyboard.ts \ 15 ../../i18n/xx/libqunikeyboard.ts \
16 ../../i18n/en/libqunikeyboard.ts \ 16 ../../i18n/en/libqunikeyboard.ts \
17 ../../i18n/es/libqunikeyboard.ts \ 17 ../../i18n/es/libqunikeyboard.ts \
18 ../../i18n/fr/libqunikeyboard.ts \ 18 ../../i18n/fr/libqunikeyboard.ts \
19 ../../i18n/hu/libqunikeyboard.ts \ 19 ../../i18n/hu/libqunikeyboard.ts \
20 ../../i18n/ja/libqunikeyboard.ts \ 20 ../../i18n/ja/libqunikeyboard.ts \
21 ../../i18n/ko/libqunikeyboard.ts \ 21 ../../i18n/ko/libqunikeyboard.ts \
22 ../../i18n/no/libqunikeyboard.ts \ 22 ../../i18n/no/libqunikeyboard.ts \
23 ../../i18n/pl/libqunikeyboard.ts \ 23 ../../i18n/pl/libqunikeyboard.ts \
24 ../../i18n/pt/libqunikeyboard.ts \ 24 ../../i18n/pt/libqunikeyboard.ts \
25 ../../i18n/pt_BR/libqunikeyboard.ts \ 25 ../../i18n/pt_BR/libqunikeyboard.ts \
26 ../../i18n/sl/libqunikeyboard.ts \ 26 ../../i18n/sl/libqunikeyboard.ts \
27 ../../i18n/zh_CN/libqunikeyboard.ts \ 27 ../../i18n/zh_CN/libqunikeyboard.ts \
28 ../../i18n/zh_TW/libqunikeyboard.ts 28 ../../i18n/zh_TW/libqunikeyboard.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
33target.path = $$prefix/plugins/inputmethods 33target.path = $$prefix/plugins/inputmethods
diff --git a/libopie/libopie.pro b/libopie/libopie.pro
index 0398775..bf6b78f 100644
--- a/libopie/libopie.pro
+++ b/libopie/libopie.pro
@@ -1,136 +1,132 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qte warn_on release 2CONFIG += qte warn_on release
3HEADERS = ofontmenu.h \ 3HEADERS = ofontmenu.h \
4 ocolorbutton.h \ 4 ocolorbutton.h \
5 ofiledialog.h ofileselector.h \ 5 ofiledialog.h ofileselector.h \
6 ofileselector_p.h \ 6 ofileselector_p.h \
7 ocheckitem.h \ 7 ocheckitem.h \
8 xmltree.h \ 8 xmltree.h \
9 colordialog.h colorpopupmenu.h \ 9 colordialog.h colorpopupmenu.h \
10 oclickablelabel.h oprocctrl.h \ 10 oclickablelabel.h oprocctrl.h \
11 oprocess.h odevice.h odevicebutton.h \ 11 oprocess.h odevice.h odevicebutton.h \
12 otimepicker.h otabwidget.h \ 12 otimepicker.h otabwidget.h \
13 otabbar.h otabinfo.h \ 13 otabbar.h otabinfo.h \
14 ofontselector.h \ 14 ofontselector.h \
15 pim/opimrecord.h \ 15 pim/opimrecord.h \
16 pim/otodo.h \ 16 pim/otodo.h \
17 pim/orecordlist.h \ 17 pim/orecordlist.h \
18 pim/opimaccesstemplate.h \ 18 pim/opimaccesstemplate.h \
19 pim/opimaccessbackend.h \ 19 pim/opimaccessbackend.h \
20 pim/otodoaccess.h \ 20 pim/otodoaccess.h \
21 pim/otodoaccessbackend.h \ 21 pim/otodoaccessbackend.h \
22 pim/oconversion.h \ 22 pim/oconversion.h \
23 pim/ocontact.h \ 23 pim/ocontact.h \
24 pim/ocontactfields.h \ 24 pim/ocontactfields.h \
25 pim/ocontactaccess.h \ 25 pim/ocontactaccess.h \
26 pim/ocontactaccessbackend.h \ 26 pim/ocontactaccessbackend.h \
27 pim/ocontactaccessbackend_xml.h \ 27 pim/ocontactaccessbackend_xml.h \
28 pim/ocontactaccessbackend_vcard.h \ 28 pim/ocontactaccessbackend_vcard.h \
29 pim/obackendfactory.h \ 29 pim/obackendfactory.h \
30 pim/opimcache.h \ 30 pim/opimcache.h \
31 pim/otodoaccessvcal.h \ 31 pim/otodoaccessvcal.h \
32 pim/orecur.h \ 32 pim/orecur.h \
33 pim/opimstate.h \ 33 pim/opimstate.h \
34 pim/opimxrefpartner.h \ 34 pim/opimxrefpartner.h \
35 pim/opimxref.h \ 35 pim/opimxref.h \
36 pim/opimxrefmanager.h \ 36 pim/opimxrefmanager.h \
37 pim/opimmaintainer.h \ 37 pim/opimmaintainer.h \
38 pim/opimnotify.h \ 38 pim/opimnotify.h \
39 pim/opimnotifymanager.h \ 39 pim/opimnotifymanager.h \
40 pim/opimmainwindow.h \ 40 pim/opimmainwindow.h \
41 pim/opimresolver.h \ 41 pim/opimresolver.h \
42 pim/oevent.h \ 42 pim/oevent.h \
43 pim/otimezone.h \ 43 pim/otimezone.h \
44 pim/odatebookaccess.h \ 44 pim/odatebookaccess.h \
45 pim/odatebookaccessbackend.h \ 45 pim/odatebookaccessbackend.h \
46 pim/odatebookaccessbackend_xml.h \ 46 pim/odatebookaccessbackend_xml.h \
47 orecurrancewidget.h \ 47 orecurrancewidget.h \
48 oticker.h owait.h 48 oticker.h owait.h
49 49
50SOURCES = ofontmenu.cc \ 50SOURCES = ofontmenu.cc \
51 ocolorbutton.cpp \ 51 ocolorbutton.cpp \
52 sharp_compat.cpp \ 52 sharp_compat.cpp \
53 xmltree.cc \ 53 xmltree.cc \
54 ofiledialog.cc ofileselector.cpp \ 54 ofiledialog.cc ofileselector.cpp \
55 ocheckitem.cpp \ 55 ocheckitem.cpp \
56 colordialog.cpp \ 56 colordialog.cpp \
57 colorpopupmenu.cpp oclickablelabel.cpp \ 57 colorpopupmenu.cpp oclickablelabel.cpp \
58 oprocctrl.cpp oprocess.cpp \ 58 oprocctrl.cpp oprocess.cpp \
59 odevice.cpp odevicebutton.cpp otimepicker.cpp \ 59 odevice.cpp odevicebutton.cpp otimepicker.cpp \
60 otabwidget.cpp otabbar.cpp \ 60 otabwidget.cpp otabbar.cpp \
61 ofontselector.cpp \ 61 ofontselector.cpp \
62 pim/otodo.cpp \ 62 pim/otodo.cpp \
63 pim/opimrecord.cpp \ 63 pim/opimrecord.cpp \
64 pim/otodoaccess.cpp \ 64 pim/otodoaccess.cpp \
65 pim/otodoaccessbackend.cpp \ 65 pim/otodoaccessbackend.cpp \
66 pim/otodoaccessxml.cpp \ 66 pim/otodoaccessxml.cpp \
67 pim/oconversion.cpp \ 67 pim/oconversion.cpp \
68 pim/ocontact.cpp \ 68 pim/ocontact.cpp \
69 pim/ocontactfields.cpp \ 69 pim/ocontactfields.cpp \
70 pim/ocontactaccess.cpp \ 70 pim/ocontactaccess.cpp \
71 pim/ocontactaccessbackend_vcard.cpp \ 71 pim/ocontactaccessbackend_vcard.cpp \
72 pim/ocontactaccessbackend_xml.cpp \ 72 pim/ocontactaccessbackend_xml.cpp \
73 pim/otodoaccessvcal.cpp \ 73 pim/otodoaccessvcal.cpp \
74 pim/orecur.cpp \ 74 pim/orecur.cpp \
75 pim/opimstate.cpp \ 75 pim/opimstate.cpp \
76 pim/opimxrefpartner.cpp \ 76 pim/opimxrefpartner.cpp \
77 pim/opimxref.cpp \ 77 pim/opimxref.cpp \
78 pim/opimxrefmanager.cpp \ 78 pim/opimxrefmanager.cpp \
79 pim/opimmaintainer.cpp \ 79 pim/opimmaintainer.cpp \
80 pim/opimnotify.cpp \ 80 pim/opimnotify.cpp \
81 pim/opimnotifymanager.cpp \ 81 pim/opimnotifymanager.cpp \
82 pim/opimmainwindow.cpp \ 82 pim/opimmainwindow.cpp \
83 pim/opimresolver.cpp \ 83 pim/opimresolver.cpp \
84 pim/oevent.cpp \ 84 pim/oevent.cpp \
85 pim/otimezone.cpp \ 85 pim/otimezone.cpp \
86 pim/odatebookaccess.cpp \ 86 pim/odatebookaccess.cpp \
87 pim/odatebookaccessbackend.cpp \ 87 pim/odatebookaccessbackend.cpp \
88 pim/odatebookaccessbackend_xml.cpp \ 88 pim/odatebookaccessbackend_xml.cpp \
89 orecurrancewidget.cpp \ 89 orecurrancewidget.cpp \
90 oticker.cpp owait.cpp 90 oticker.cpp owait.cpp
91 91
92TARGET = opie 92TARGET = opie
93INCLUDEPATH += $(OPIEDIR)/include 93INCLUDEPATH += $(OPIEDIR)/include
94DESTDIR = $(OPIEDIR)/lib$(PROJMAK) 94DESTDIR = $(OPIEDIR)/lib$(PROJMAK)
95 95
96# The following is just for my Notebook !
97# It should never be committed !! (eilers)
98# QMAKE_CXXFLAGS += -DQT_NO_SOUND
99
100LIBS += -lqpe 96LIBS += -lqpe
101 97
102# Add SQL-Support if selected by config (eilers) 98# Add SQL-Support if selected by config (eilers)
103CONFTEST = $$system( echo $CONFIG_SQL_PIM_BACKEND ) 99CONFTEST = $$system( echo $CONFIG_SQL_PIM_BACKEND )
104contains( CONFTEST, y ){ 100contains( CONFTEST, y ){
105 101
106DEFINES += __USE_SQL 102DEFINES += __USE_SQL
107LIBS += -lopiedb2 -lsqlite 103LIBS += -lopiedb2 -lsqlite
108HEADERS += pim/otodoaccesssql.h pim/ocontactaccessbackend_sql.h 104HEADERS += pim/otodoaccesssql.h pim/ocontactaccessbackend_sql.h
109SOURCES += pim/otodoaccesssql.cpp pim/ocontactaccessbackend_sql.cpp 105SOURCES += pim/otodoaccesssql.cpp pim/ocontactaccessbackend_sql.cpp
110 106
111} 107}
112 108
113INTERFACES = otimepickerbase.ui orecurrancebase.ui 109INTERFACES = otimepickerbase.ui orecurrancebase.ui
114TARGET = opie 110TARGET = opie
115 111
116TRANSLATIONS = ../i18n/de/libopie.ts \ 112TRANSLATIONS = ../i18n/de/libopie.ts \
117 ../i18n/nl/libopie.ts \ 113 ../i18n/nl/libopie.ts \
118 ../i18n/xx/libopie.ts \ 114 ../i18n/xx/libopie.ts \
119 ../i18n/en/libopie.ts \ 115 ../i18n/en/libopie.ts \
120 ../i18n/es/libopie.ts \ 116 ../i18n/es/libopie.ts \
121 ../i18n/fr/libopie.ts \ 117 ../i18n/fr/libopie.ts \
122 ../i18n/hu/libopie.ts \ 118 ../i18n/hu/libopie.ts \
123 ../i18n/ja/libopie.ts \ 119 ../i18n/ja/libopie.ts \
124 ../i18n/ko/libopie.ts \ 120 ../i18n/ko/libopie.ts \
125 ../i18n/no/libopie.ts \ 121 ../i18n/no/libopie.ts \
126 ../i18n/pl/libopie.ts \ 122 ../i18n/pl/libopie.ts \
127 ../i18n/pt/libopie.ts \ 123 ../i18n/pt/libopie.ts \
128 ../i18n/pt_BR/libopie.ts \ 124 ../i18n/pt_BR/libopie.ts \
129 ../i18n/sl/libopie.ts \ 125 ../i18n/sl/libopie.ts \
130 ../i18n/zh_CN/libopie.ts \ 126 ../i18n/zh_CN/libopie.ts \
131 ../i18n/zh_TW/libopie.ts \ 127 ../i18n/zh_TW/libopie.ts \
132 ../i18n/da/libopie.ts 128 ../i18n/da/libopie.ts
133 129
134include ( big-screen/big-screen.pro ) 130include ( big-screen/big-screen.pro )
135 131
136include ( $(OPIEDIR)/include.pro ) 132include ( $(OPIEDIR)/include.pro )
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index 3edf8e7..fef623a 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -1,218 +1,220 @@
1/* This file is part of the OPIE libraries 1/* This file is part of the OPIE libraries
2 Copyright (C) 2002 Robert Griebl (sandman@handhelds.org) 2 Copyright (C) 2002 Robert Griebl (sandman@handhelds.org)
3 3
4 This library is free software; you can redistribute it and/or 4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public 5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either 6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version. 7 version 2 of the License, or (at your option) any later version.
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 19
20#include <stdlib.h> 20#include <stdlib.h>
21#include <unistd.h> 21#include <unistd.h>
22#include <fcntl.h> 22#include <fcntl.h>
23#include <sys/ioctl.h> 23#include <sys/ioctl.h>
24#include <signal.h> 24#include <signal.h>
25#include <sys/time.h> 25#include <sys/time.h>
26#ifndef QT_NO_SOUND
26#include <linux/soundcard.h> 27#include <linux/soundcard.h>
28#endif
27#include <math.h> 29#include <math.h>
28 30
29#include <qapplication.h> 31#include <qapplication.h>
30 32
31#include <qfile.h> 33#include <qfile.h>
32#include <qtextstream.h> 34#include <qtextstream.h>
33#include <qpe/sound.h> 35#include <qpe/sound.h>
34#include <qpe/resource.h> 36#include <qpe/resource.h>
35#include <qpe/config.h> 37#include <qpe/config.h>
36#include <qpe/qcopenvelope_qws.h> 38#include <qpe/qcopenvelope_qws.h>
37 39
38#include "odevice.h" 40#include "odevice.h"
39 41
40#include <qwindowsystem_qws.h> 42#include <qwindowsystem_qws.h>
41 43
42#ifndef ARRAY_SIZE 44#ifndef ARRAY_SIZE
43#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) 45#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
44#endif 46#endif
45 47
46// _IO and friends are only defined in kernel headers ... 48// _IO and friends are only defined in kernel headers ...
47 49
48#define OD_IOC(dir,type,number,size) (( dir << 30 ) | ( type << 8 ) | ( number ) | ( size << 16 )) 50#define OD_IOC(dir,type,number,size) (( dir << 30 ) | ( type << 8 ) | ( number ) | ( size << 16 ))
49 51
50#define OD_IO(type,number) OD_IOC(0,type,number,0) 52#define OD_IO(type,number) OD_IOC(0,type,number,0)
51#define OD_IOW(type,number,size) OD_IOC(1,type,number,sizeof(size)) 53#define OD_IOW(type,number,size) OD_IOC(1,type,number,sizeof(size))
52#define OD_IOR(type,number,size) OD_IOC(2,type,number,sizeof(size)) 54#define OD_IOR(type,number,size) OD_IOC(2,type,number,sizeof(size))
53#define OD_IORW(type,number,size) OD_IOC(3,type,number,sizeof(size)) 55#define OD_IORW(type,number,size) OD_IOC(3,type,number,sizeof(size))
54 56
55using namespace Opie; 57using namespace Opie;
56 58
57class ODeviceData { 59class ODeviceData {
58public: 60public:
59 QString m_vendorstr; 61 QString m_vendorstr;
60 OVendor m_vendor; 62 OVendor m_vendor;
61 63
62 QString m_modelstr; 64 QString m_modelstr;
63 OModel m_model; 65 OModel m_model;
64 66
65 QString m_systemstr; 67 QString m_systemstr;
66 OSystem m_system; 68 OSystem m_system;
67 69
68 QString m_sysverstr; 70 QString m_sysverstr;
69 71
70 Transformation m_rotation; 72 Transformation m_rotation;
71 ODirection m_direction; 73 ODirection m_direction;
72 74
73 QValueList <ODeviceButton> *m_buttons; 75 QValueList <ODeviceButton> *m_buttons;
74 uint m_holdtime; 76 uint m_holdtime;
75 QStrList *m_cpu_frequencies; 77 QStrList *m_cpu_frequencies;
76}; 78};
77 79
78class iPAQ : public ODevice, public QWSServer::KeyboardFilter { 80class iPAQ : public ODevice, public QWSServer::KeyboardFilter {
79protected: 81protected:
80 virtual void init ( ); 82 virtual void init ( );
81 virtual void initButtons ( ); 83 virtual void initButtons ( );
82 84
83public: 85public:
84 virtual bool setSoftSuspend ( bool soft ); 86 virtual bool setSoftSuspend ( bool soft );
85 87
86 virtual bool setDisplayBrightness ( int b ); 88 virtual bool setDisplayBrightness ( int b );
87 virtual int displayBrightnessResolution ( ) const; 89 virtual int displayBrightnessResolution ( ) const;
88 90
89 virtual void alarmSound ( ); 91 virtual void alarmSound ( );
90 92
91 virtual QValueList <OLed> ledList ( ) const; 93 virtual QValueList <OLed> ledList ( ) const;
92 virtual QValueList <OLedState> ledStateList ( OLed led ) const; 94 virtual QValueList <OLedState> ledStateList ( OLed led ) const;
93 virtual OLedState ledState ( OLed led ) const; 95 virtual OLedState ledState ( OLed led ) const;
94 virtual bool setLedState ( OLed led, OLedState st ); 96 virtual bool setLedState ( OLed led, OLedState st );
95 97
96 virtual bool hasLightSensor ( ) const; 98 virtual bool hasLightSensor ( ) const;
97 virtual int readLightSensor ( ); 99 virtual int readLightSensor ( );
98 virtual int lightSensorResolution ( ) const; 100 virtual int lightSensorResolution ( ) const;
99 101
100protected: 102protected:
101 virtual bool filter ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ); 103 virtual bool filter ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat );
102 virtual void timerEvent ( QTimerEvent *te ); 104 virtual void timerEvent ( QTimerEvent *te );
103 105
104 int m_power_timer; 106 int m_power_timer;
105 107
106 OLedState m_leds [2]; 108 OLedState m_leds [2];
107}; 109};
108 110
109class Jornada : public ODevice { 111class Jornada : public ODevice {
110protected: 112protected:
111 virtual void init ( ); 113 virtual void init ( );
112 //virtual void initButtons ( ); 114 //virtual void initButtons ( );
113public: 115public:
114 virtual bool setSoftSuspend ( bool soft ); 116 virtual bool setSoftSuspend ( bool soft );
115 virtual bool setDisplayBrightness ( int b ); 117 virtual bool setDisplayBrightness ( int b );
116 virtual int displayBrightnessResolution ( ) const; 118 virtual int displayBrightnessResolution ( ) const;
117 static bool isJornada(); 119 static bool isJornada();
118 120
119}; 121};
120 122
121class Zaurus : public ODevice { 123class Zaurus : public ODevice {
122protected: 124protected:
123 virtual void init ( ); 125 virtual void init ( );
124 virtual void initButtons ( ); 126 virtual void initButtons ( );
125 127
126public: 128public:
127 virtual bool setSoftSuspend ( bool soft ); 129 virtual bool setSoftSuspend ( bool soft );
128 130
129 virtual bool setDisplayBrightness ( int b ); 131 virtual bool setDisplayBrightness ( int b );
130 virtual int displayBrightnessResolution ( ) const; 132 virtual int displayBrightnessResolution ( ) const;
131 133
132 virtual void alarmSound ( ); 134 virtual void alarmSound ( );
133 virtual void keySound ( ); 135 virtual void keySound ( );
134 virtual void touchSound ( ); 136 virtual void touchSound ( );
135 137
136 virtual QValueList <OLed> ledList ( ) const; 138 virtual QValueList <OLed> ledList ( ) const;
137 virtual QValueList <OLedState> ledStateList ( OLed led ) const; 139 virtual QValueList <OLedState> ledStateList ( OLed led ) const;
138 virtual OLedState ledState ( OLed led ) const; 140 virtual OLedState ledState ( OLed led ) const;
139 virtual bool setLedState ( OLed led, OLedState st ); 141 virtual bool setLedState ( OLed led, OLedState st );
140 142
141 static bool isZaurus(); 143 static bool isZaurus();
142 144
143protected: 145protected:
144 virtual void buzzer ( int snd ); 146 virtual void buzzer ( int snd );
145 147
146 OLedState m_leds [1]; 148 OLedState m_leds [1];
147 bool m_embedix; 149 bool m_embedix;
148}; 150};
149 151
150class SIMpad : public ODevice, public QWSServer::KeyboardFilter { 152class SIMpad : public ODevice, public QWSServer::KeyboardFilter {
151protected: 153protected:
152 virtual void init ( ); 154 virtual void init ( );
153 virtual void initButtons ( ); 155 virtual void initButtons ( );
154 156
155public: 157public:
156 virtual bool setSoftSuspend ( bool soft ); 158 virtual bool setSoftSuspend ( bool soft );
157 virtual bool suspend(); 159 virtual bool suspend();
158 160
159 virtual bool setDisplayStatus( bool on ); 161 virtual bool setDisplayStatus( bool on );
160 virtual bool setDisplayBrightness ( int b ); 162 virtual bool setDisplayBrightness ( int b );
161 virtual int displayBrightnessResolution ( ) const; 163 virtual int displayBrightnessResolution ( ) const;
162 164
163 virtual void alarmSound ( ); 165 virtual void alarmSound ( );
164 166
165 virtual QValueList <OLed> ledList ( ) const; 167 virtual QValueList <OLed> ledList ( ) const;
166 virtual QValueList <OLedState> ledStateList ( OLed led ) const; 168 virtual QValueList <OLedState> ledStateList ( OLed led ) const;
167 virtual OLedState ledState ( OLed led ) const; 169 virtual OLedState ledState ( OLed led ) const;
168 virtual bool setLedState ( OLed led, OLedState st ); 170 virtual bool setLedState ( OLed led, OLedState st );
169 171
170protected: 172protected:
171 virtual bool filter ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ); 173 virtual bool filter ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat );
172 virtual void timerEvent ( QTimerEvent *te ); 174 virtual void timerEvent ( QTimerEvent *te );
173 175
174 int m_power_timer; 176 int m_power_timer;
175 177
176 OLedState m_leds [1]; //FIXME check if really only one 178 OLedState m_leds [1]; //FIXME check if really only one
177}; 179};
178 180
179class Ramses : public ODevice, public QWSServer::KeyboardFilter { 181class Ramses : public ODevice, public QWSServer::KeyboardFilter {
180protected: 182protected:
181 virtual void init ( ); 183 virtual void init ( );
182 184
183public: 185public:
184 virtual bool setSoftSuspend ( bool soft ); 186 virtual bool setSoftSuspend ( bool soft );
185 virtual bool suspend ( ); 187 virtual bool suspend ( );
186 188
187 virtual bool setDisplayStatus( bool on ); 189 virtual bool setDisplayStatus( bool on );
188 virtual bool setDisplayBrightness ( int b ); 190 virtual bool setDisplayBrightness ( int b );
189 virtual int displayBrightnessResolution ( ) const; 191 virtual int displayBrightnessResolution ( ) const;
190 virtual bool setDisplayContrast ( int b ); 192 virtual bool setDisplayContrast ( int b );
191 virtual int displayContrastResolution ( ) const; 193 virtual int displayContrastResolution ( ) const;
192 194
193protected: 195protected:
194 virtual bool filter ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ); 196 virtual bool filter ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat );
195 virtual void timerEvent ( QTimerEvent *te ); 197 virtual void timerEvent ( QTimerEvent *te );
196 198
197 int m_power_timer; 199 int m_power_timer;
198}; 200};
199 201
200struct i_button { 202struct i_button {
201 uint model; 203 uint model;
202 Qt::Key code; 204 Qt::Key code;
203 char *utext; 205 char *utext;
204 char *pix; 206 char *pix;
205 char *fpressedservice; 207 char *fpressedservice;
206 char *fpressedaction; 208 char *fpressedaction;
207 char *fheldservice; 209 char *fheldservice;
208 char *fheldaction; 210 char *fheldaction;
209} ipaq_buttons [] = { 211} ipaq_buttons [] = {
210 { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx, 212 { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx,
211 Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), 213 Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"),
212 "devicebuttons/ipaq_calendar", 214 "devicebuttons/ipaq_calendar",
213 "datebook", "nextView()", 215 "datebook", "nextView()",
214 "today", "raise()" }, 216 "today", "raise()" },
215 { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx, 217 { Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx,
216 Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), 218 Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"),
217 "devicebuttons/ipaq_contact", 219 "devicebuttons/ipaq_contact",
218 "addressbook", "raise()", 220 "addressbook", "raise()",
diff --git a/library/filemanager.cpp b/library/filemanager.cpp
index cc657fa..91986a0 100644
--- a/library/filemanager.cpp
+++ b/library/filemanager.cpp
@@ -1,341 +1,384 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "filemanager.h" 20#include "filemanager.h"
21#include "applnk.h" 21#include "applnk.h"
22 22
23#include <qdir.h> 23#include <qdir.h>
24#include <qfile.h> 24#include <qfile.h>
25#include <qfileinfo.h> 25#include <qfileinfo.h>
26#include <qtextstream.h> 26#include <qtextstream.h>
27#include <qtextcodec.h> 27#include <qtextcodec.h>
28 28
29#include <errno.h> 29#include <errno.h>
30#include <stdlib.h> 30#include <stdlib.h>
31#include <unistd.h> 31#include <unistd.h>
32#include <sys/stat.h> 32#include <sys/stat.h>
33#include <dirent.h> 33#include <dirent.h>
34#include <sys/sendfile.h> 34#ifdef Q_OS_MACX
35// MacOS X does not have sendfile.. :(
36// But maybe in the future.. !?
37# ifdef SENDFILE
38# include <sys/types.h>
39# include <sys/socket.h>
40# endif
41#else
42# include <sys/sendfile.h>
43#endif /* Q_OS_MACX */
35#include <fcntl.h> 44#include <fcntl.h>
36 45
37/*! 46/*!
38 \class FileManager 47 \class FileManager
39 \brief The FileManager class assists with AppLnk input/output. 48 \brief The FileManager class assists with AppLnk input/output.
40*/ 49*/
41 50
42/*! 51/*!
43 Constructs a FileManager. 52 Constructs a FileManager.
44*/ 53*/
45FileManager::FileManager() 54FileManager::FileManager()
46{ 55{
47} 56}
48 57
49/*! 58/*!
50 Destroys a FileManager. 59 Destroys a FileManager.
51*/ 60*/
52FileManager::~FileManager() 61FileManager::~FileManager()
53{ 62{
54 63
55} 64}
56 65
57/*! 66/*!
58 Saves \a data as the document specified by \a f. 67 Saves \a data as the document specified by \a f.
59 68
60 Returns whether the operation succeeded. 69 Returns whether the operation succeeded.
61*/ 70*/
62bool FileManager::saveFile( const DocLnk &f, const QByteArray &data ) 71bool FileManager::saveFile( const DocLnk &f, const QByteArray &data )
63{ 72{
64 QString fn = f.file() + ".new"; 73 QString fn = f.file() + ".new";
65 ensurePathExists( fn ); 74 ensurePathExists( fn );
66 QFile fl( fn ); 75 QFile fl( fn );
67 if ( !fl.open( IO_WriteOnly|IO_Raw ) ) { 76 if ( !fl.open( IO_WriteOnly|IO_Raw ) ) {
68 qWarning("open failed"); 77 qWarning("open failed");
69 return FALSE; 78 return FALSE;
70 } 79 }
71 int total_written = fl.writeBlock( data ); 80 int total_written = fl.writeBlock( data );
72 fl.close(); 81 fl.close();
73 if ( total_written != int(data.size()) || !f.writeLink() ) { 82 if ( total_written != int(data.size()) || !f.writeLink() ) {
74 QFile::remove( fn ); 83 QFile::remove( fn );
75 return FALSE; 84 return FALSE;
76 } 85 }
77 qDebug("total written %d out of %d", total_written, data.size()); 86 qDebug("total written %d out of %d", total_written, data.size());
78 // else rename the file... 87 // else rename the file...
79 if ( !renameFile( fn.latin1(), f.file().latin1() ) ) { 88 if ( !renameFile( fn.latin1(), f.file().latin1() ) ) {
80 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(), 89 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(),
81 f.file().latin1(), errno ); 90 f.file().latin1(), errno );
82 // remove the file... 91 // remove the file...
83 } 92 }
84 return TRUE; 93 return TRUE;
85} 94}
86 95
87/*! 96/*!
88 Saves \a text as the document specified by \a f. 97 Saves \a text as the document specified by \a f.
89 98
90 The text is saved in UTF8 format. 99 The text is saved in UTF8 format.
91 100
92 Returns whether the operation succeeded. 101 Returns whether the operation succeeded.
93*/ 102*/
94bool FileManager::saveFile( const DocLnk &f, const QString &text ) 103bool FileManager::saveFile( const DocLnk &f, const QString &text )
95{ 104{
96 QString fn = f.file() + ".new"; 105 QString fn = f.file() + ".new";
97 ensurePathExists( fn ); 106 ensurePathExists( fn );
98 QFile fl( fn ); 107 QFile fl( fn );
99 if ( !fl.open( IO_WriteOnly|IO_Raw ) ) { 108 if ( !fl.open( IO_WriteOnly|IO_Raw ) ) {
100 qWarning("open failed"); 109 qWarning("open failed");
101 return FALSE; 110 return FALSE;
102 } 111 }
103 112
104 QCString cstr = text.utf8(); 113 QCString cstr = text.utf8();
105 int total_written; 114 int total_written;
106 total_written = fl.writeBlock( cstr.data(), cstr.length() ); 115 total_written = fl.writeBlock( cstr.data(), cstr.length() );
107 fl.close(); 116 fl.close();
108 if ( total_written != int(cstr.length()) || !f.writeLink() ) { 117 if ( total_written != int(cstr.length()) || !f.writeLink() ) {
109 QFile::remove( fn ); 118 QFile::remove( fn );
110 return FALSE; 119 return FALSE;
111 } 120 }
112 // okay now rename the file.. 121 // okay now rename the file..
113 if ( !renameFile( fn.latin1(), f.file().latin1() ) ) { 122 if ( !renameFile( fn.latin1(), f.file().latin1() ) ) {
114 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(), 123 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(),
115 f.file().latin1(), errno ); 124 f.file().latin1(), errno );
116 125
117 } 126 }
118 return TRUE; 127 return TRUE;
119} 128}
120 129
121 130
122/*! 131/*!
123 Loads \a text from the document specified by \a f. 132 Loads \a text from the document specified by \a f.
124 133
125 The text is required to be in UTF8 format. 134 The text is required to be in UTF8 format.
126 135
127 Returns whether the operation succeeded. 136 Returns whether the operation succeeded.
128*/ 137*/
129bool FileManager::loadFile( const DocLnk &f, QString &text ) 138bool FileManager::loadFile( const DocLnk &f, QString &text )
130{ 139{
131 QString fn = f.file(); 140 QString fn = f.file();
132 QFile fl( fn ); 141 QFile fl( fn );
133 if ( !fl.open( IO_ReadOnly ) ) 142 if ( !fl.open( IO_ReadOnly ) )
134 return FALSE; 143 return FALSE;
135 QTextStream ts( &fl ); 144 QTextStream ts( &fl );
136#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 145#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
137 // The below should work, but doesn't in Qt 2.3.0 146 // The below should work, but doesn't in Qt 2.3.0
138 ts.setCodec( QTextCodec::codecForMib( 106 ) ); 147 ts.setCodec( QTextCodec::codecForMib( 106 ) );
139#else 148#else
140 ts.setEncoding( QTextStream::UnicodeUTF8 ); 149 ts.setEncoding( QTextStream::UnicodeUTF8 );
141#endif 150#endif
142 text = ts.read(); 151 text = ts.read();
143 fl.close(); 152 fl.close();
144 return TRUE; 153 return TRUE;
145} 154}
146 155
147 156
148/*! 157/*!
149 Loads \a ba from the document specified by \a f. 158 Loads \a ba from the document specified by \a f.
150 159
151 Returns whether the operation succeeded. 160 Returns whether the operation succeeded.
152*/ 161*/
153bool FileManager::loadFile( const DocLnk &f, QByteArray &ba ) 162bool FileManager::loadFile( const DocLnk &f, QByteArray &ba )
154{ 163{
155 QString fn = f.file(); 164 QString fn = f.file();
156 QFile fl( fn ); 165 QFile fl( fn );
157 if ( !fl.open( IO_ReadOnly ) ) 166 if ( !fl.open( IO_ReadOnly ) )
158 return FALSE; 167 return FALSE;
159 ba.resize( fl.size() ); 168 ba.resize( fl.size() );
160 if ( fl.size() > 0 ) 169 if ( fl.size() > 0 )
161 fl.readBlock( ba.data(), fl.size() ); 170 fl.readBlock( ba.data(), fl.size() );
162 fl.close(); 171 fl.close();
163 return TRUE; 172 return TRUE;
164} 173}
165 174
166/*! 175/*!
167 Copies the document specified by \a src to the document specified 176 Copies the document specified by \a src to the document specified
168 by \a dest. 177 by \a dest.
169 178
170 Returns whether the operation succeeded. 179 Returns whether the operation succeeded.
171*/ 180*/
172bool FileManager::copyFile( const AppLnk &src, const AppLnk &dest ) 181bool FileManager::copyFile( const AppLnk &src, const AppLnk &dest )
173{ 182{
174 QFile sf( src.file() ); 183 QFile sf( src.file() );
175 if ( !sf.open( IO_ReadOnly ) ) 184 if ( !sf.open( IO_ReadOnly ) )
176 return FALSE; 185 return FALSE;
177 186
178 QString fn = dest.file() + ".new"; 187 QString fn = dest.file() + ".new";
179 ensurePathExists( fn ); 188 ensurePathExists( fn );
180 QFile df( fn ); 189 QFile df( fn );
181 if ( !df.open( IO_WriteOnly|IO_Raw ) ) 190 if ( !df.open( IO_WriteOnly|IO_Raw ) )
182 return FALSE; 191 return FALSE;
183 192
184 const int bufsize = 16384; 193 const int bufsize = 16384;
185 char buffer[bufsize]; 194 char buffer[bufsize];
186 bool ok = TRUE; 195 bool ok = TRUE;
187 int bytesRead = 0; 196 int bytesRead = 0;
188 while ( ok && !sf.atEnd() ) { 197 while ( ok && !sf.atEnd() ) {
189 bytesRead = sf.readBlock( buffer, bufsize ); 198 bytesRead = sf.readBlock( buffer, bufsize );
190 if ( bytesRead < 0 ) 199 if ( bytesRead < 0 )
191 ok = FALSE; 200 ok = FALSE;
192 while ( ok && bytesRead > 0 ) { 201 while ( ok && bytesRead > 0 ) {
193 int bytesWritten = df.writeBlock( buffer, bytesRead ); 202 int bytesWritten = df.writeBlock( buffer, bytesRead );
194 if ( bytesWritten < 0 ) 203 if ( bytesWritten < 0 )
195 ok = FALSE; 204 ok = FALSE;
196 else 205 else
197 bytesRead -= bytesWritten; 206 bytesRead -= bytesWritten;
198 } 207 }
199 } 208 }
200 209
201 if ( ok ) 210 if ( ok )
202 ok = dest.writeLink(); 211 ok = dest.writeLink();
203 212
204 if ( ok ) { 213 if ( ok ) {
205 // okay now rename the file... 214 // okay now rename the file...
206 if ( !renameFile( fn.latin1(), dest.file().latin1() ) ) { 215 if ( !renameFile( fn.latin1(), dest.file().latin1() ) ) {
207 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(), 216 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(),
208 dest.file().latin1(), errno ); 217 dest.file().latin1(), errno );
209 // remove the tmp file, otherwise, it will just lay around... 218 // remove the tmp file, otherwise, it will just lay around...
210 QFile::remove( fn.latin1() ); 219 QFile::remove( fn.latin1() );
211 } 220 }
212 } else { 221 } else {
213 QFile::remove( fn.latin1() ); 222 QFile::remove( fn.latin1() );
214 } 223 }
215 224
216 return ok; 225 return ok;
217} 226}
218 227
228
229
219bool FileManager::copyFile( const QString & src, const QString & dest ) { 230bool FileManager::copyFile( const QString & src, const QString & dest ) {
220 bool success = true; 231 bool success = true;
221 struct stat status; 232 struct stat status;
222 int read_fd=0; 233 int read_fd=0;
223 int write_fd=0; 234 int write_fd=0;
224 struct stat stat_buf; 235 struct stat stat_buf;
225 off_t offset = 0; 236 off_t offset = 0;
226 QFile srcFile(src); 237 QFile srcFile(src);
227 QFile destFile(dest); 238 QFile destFile(dest);
228 239
229 if(!srcFile.open( IO_ReadOnly|IO_Raw)) { 240 if(!srcFile.open( IO_ReadOnly|IO_Raw)) {
230 return success = false; 241 return success = false;
231 } 242 }
232 read_fd = srcFile.handle(); 243 read_fd = srcFile.handle();
233 if(read_fd != -1) { 244 if(read_fd != -1) {
234 fstat (read_fd, &stat_buf); 245 fstat (read_fd, &stat_buf);
235 if( !destFile.open( IO_WriteOnly|IO_Raw ) ) 246 if( !destFile.open( IO_WriteOnly|IO_Raw ) )
236 return success = false; 247 return success = false;
237 write_fd = destFile.handle(); 248 write_fd = destFile.handle();
238 if(write_fd != -1) { 249 if(write_fd != -1) {
239 int err=0; 250 int err=0;
240 QString msg; 251 QString msg;
241 err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size); 252#ifdef Q_OS_MACX
242 if( err == -1) { 253#ifdef SENDMAIL
243 switch(err) { 254 /* FreeBSD does support a different kind of
244 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. "; 255 * sendfile. (eilers)
245 case EINVAL: msg = "Descriptor is not valid or locked. "; 256 * I took this from Very Secure FTPd
246 case ENOMEM: msg = "Insufficient memory to read from in_fd."; 257 * Licence: GPL
247 case EIO: msg = "Unspecified error while reading from in_fd."; 258 * Author: Chris Evans
248 }; 259 * sysdeputil.c
249 success = false; 260 */
250 } 261 /* XXX - start_pos will truncate on 32-bit machines - can we
251 } else { 262 * say "start from current pos"?
263 */
264 off_t written = 0;
265 int retval = 0;
266 retval = sendfile(read_fd, write_fd, offset, stat_buf.st_size, NULL,
267 &written, 0);
268 /* Translate to Linux-like retval */
269 if (written > 0)
270 {
271 err = (int) written;
272 }
273#else /* SENDMAIL */
274 err == -1;
275 msg = "FAILURE: Using unsupported function \"sendfile()\" Need Workaround !!";
276 success = false;
277# warning "Need workaround for sendfile!!(eilers)"
278#endif /* SENDMAIL */
279
280#else
281 err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size);
282 if( err == -1) {
283 switch(err) {
284 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. ";
285 case EINVAL: msg = "Descriptor is not valid or locked. ";
286 case ENOMEM: msg = "Insufficient memory to read from in_fd.";
287 case EIO: msg = "Unspecified error while reading from in_fd.";
288 };
289 success = false;
290 }
291#endif /* Q_OS_MACX */
292 if( !success )
293 qWarning( msg );
294 } else {
252 qWarning("open write failed %s, %s",src.latin1(), dest.latin1()); 295 qWarning("open write failed %s, %s",src.latin1(), dest.latin1());
253 success = false; 296 success = false;
254 } 297 }
255 } else { 298 } else {
256 qWarning("open read failed %s, %s",src.latin1(), dest.latin1()); 299 qWarning("open read failed %s, %s",src.latin1(), dest.latin1());
257 success = false; 300 success = false;
258 } 301 }
259 srcFile.close(); 302 srcFile.close();
260 destFile.close(); 303 destFile.close();
261 // Set file permissions 304 // Set file permissions
262 if( stat( (const char *) src, &status ) == 0 ) { 305 if( stat( (const char *) src, &status ) == 0 ) {
263 chmod( (const char *) dest, status.st_mode ); 306 chmod( (const char *) dest, status.st_mode );
264 } 307 }
265 308
266 return success; 309 return success;
267} 310}
268 311
269 312
270bool FileManager::renameFile( const QString & src, const QString & dest ) { 313bool FileManager::renameFile( const QString & src, const QString & dest ) {
271 if(copyFile( src, dest )) { 314 if(copyFile( src, dest )) {
272 if(QFile::remove(src) ) { 315 if(QFile::remove(src) ) {
273 return true; 316 return true;
274 } 317 }
275 } 318 }
276 return false; 319 return false;
277} 320}
278 321
279 322
280/*! 323/*!
281 Opens the document specified by \a f as a readable QIODevice. 324 Opens the document specified by \a f as a readable QIODevice.
282 The caller must delete the return value. 325 The caller must delete the return value.
283 326
284 Returns 0 if the operation fails. 327 Returns 0 if the operation fails.
285*/ 328*/
286QIODevice* FileManager::openFile( const DocLnk& f ) 329QIODevice* FileManager::openFile( const DocLnk& f )
287{ 330{
288 QString fn = f.file(); 331 QString fn = f.file();
289 QFile* fl = new QFile( fn ); 332 QFile* fl = new QFile( fn );
290 if ( !fl->open( IO_ReadOnly ) ) { 333 if ( !fl->open( IO_ReadOnly ) ) {
291 delete fl; 334 delete fl;
292 fl = 0; 335 fl = 0;
293 } 336 }
294 return fl; 337 return fl;
295} 338}
296 339
297/*! 340/*!
298 Opens the document specified by \a f as a writable QIODevice. 341 Opens the document specified by \a f as a writable QIODevice.
299 The caller must delete the return value. 342 The caller must delete the return value.
300 343
301 Returns 0 if the operation fails. 344 Returns 0 if the operation fails.
302*/ 345*/
303QIODevice* FileManager::saveFile( const DocLnk& f ) 346QIODevice* FileManager::saveFile( const DocLnk& f )
304{ 347{
305 QString fn = f.file(); 348 QString fn = f.file();
306 ensurePathExists( fn ); 349 ensurePathExists( fn );
307 QFile* fl = new QFile( fn ); 350 QFile* fl = new QFile( fn );
308 if ( fl->open( IO_WriteOnly ) ) { 351 if ( fl->open( IO_WriteOnly ) ) {
309 f.writeLink(); 352 f.writeLink();
310 } else { 353 } else {
311 delete fl; 354 delete fl;
312 fl = 0; 355 fl = 0;
313 } 356 }
314 return fl; 357 return fl;
315} 358}
316 359
317/*! 360/*!
318 Returns whether the document specified by \a f current exists 361 Returns whether the document specified by \a f current exists
319 as a file on disk. 362 as a file on disk.
320*/ 363*/
321bool FileManager::exists( const DocLnk &f ) 364bool FileManager::exists( const DocLnk &f )
322{ 365{
323 return QFile::exists(f.file()); 366 return QFile::exists(f.file());
324} 367}
325 368
326 369
327/*! 370/*!
328 Ensures that the path \a fn exists, by creating required directories. 371 Ensures that the path \a fn exists, by creating required directories.
329 Returns TRUE if successful. 372 Returns TRUE if successful.
330*/ 373*/
331bool FileManager::ensurePathExists( const QString &fn ) 374bool FileManager::ensurePathExists( const QString &fn )
332{ 375{
333 QFileInfo fi(fn); 376 QFileInfo fi(fn);
334 fi.setFile( fi.dirPath(TRUE) ); 377 fi.setFile( fi.dirPath(TRUE) );
335 if ( !fi.exists() ) { 378 if ( !fi.exists() ) {
336 if ( system(("mkdir -p "+fi.filePath())) ) 379 if ( system(("mkdir -p "+fi.filePath())) )
337 return FALSE; 380 return FALSE;
338 } 381 }
339 382
340 return TRUE; 383 return TRUE;
341} 384}
diff --git a/library/fontdatabase.cpp b/library/fontdatabase.cpp
index c7a5211..2ad8e95 100644
--- a/library/fontdatabase.cpp
+++ b/library/fontdatabase.cpp
@@ -1,249 +1,253 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qpe/qpeapplication.h> 21#include <qpe/qpeapplication.h>
22#include "fontfactoryinterface.h" 22#include "fontfactoryinterface.h"
23#include "fontdatabase.h" 23#include "fontdatabase.h"
24 24
25#include <qpe/qlibrary.h> 25#include <qpe/qlibrary.h>
26 26
27#include <qfontmanager_qws.h> 27#include <qfontmanager_qws.h>
28#include <qdir.h> 28#include <qdir.h>
29#include <qdict.h> 29#include <qdict.h>
30#include <stdio.h> 30#include <stdio.h>
31#include <stdlib.h> 31#include <stdlib.h>
32 32
33static QString fontDir() 33static QString fontDir()
34{ 34{
35 QString qtdir = getenv("QTDIR"); 35 QString qtdir = getenv("QTDIR");
36 if ( qtdir.isEmpty() ) qtdir = "/usr/local/qt-embedded"; 36 if ( qtdir.isEmpty() ) qtdir = "/usr/local/qt-embedded";
37 return qtdir+"/lib/fonts/"; 37 return qtdir+"/lib/fonts/";
38} 38}
39 39
40#ifdef QT_NO_FONTDATABASE 40#ifdef QT_NO_FONTDATABASE
41static QString fontFamily( const QString& key ) 41static QString fontFamily( const QString& key )
42{ 42{
43 int u0 = key.find('_'); 43 int u0 = key.find('_');
44 int u1 = key.find('_',u0+1); 44 int u1 = key.find('_',u0+1);
45 int u2 = key.find('_',u1+1); 45 int u2 = key.find('_',u1+1);
46 QString family = key.left(u0); 46 QString family = key.left(u0);
47 //int pointSize = key.mid(u0+1,u1-u0-1).toInt(); 47 //int pointSize = key.mid(u0+1,u1-u0-1).toInt();
48 //int weight = key.mid(u1+1,u2-u1-1).toInt(); 48 //int weight = key.mid(u1+1,u2-u1-1).toInt();
49 //bool italic = key.mid(u2-1,1) == "i"; 49 //bool italic = key.mid(u2-1,1) == "i";
50 // #### ignores _t and _I fields 50 // #### ignores _t and _I fields
51 return family; 51 return family;
52} 52}
53#endif 53#endif
54 54
55 55
56QValueList<FontFactory> *FontDatabase::factoryList = 0; 56QValueList<FontFactory> *FontDatabase::factoryList = 0;
57/*! 57/*!
58 \class FontDatabase fontdatabase.h 58 \class FontDatabase fontdatabase.h
59 \brief The FontDatabase class provides information about available fonts. 59 \brief The FontDatabase class provides information about available fonts.
60 60
61 Most often you will simply want to query the database for the 61 Most often you will simply want to query the database for the
62 available font families(). 62 available font families().
63 63
64 Use FontDatabase rather than QFontDatabase when you may need access 64 Use FontDatabase rather than QFontDatabase when you may need access
65 to fonts that are not normally available. For example, if the 65 to fonts that are not normally available. For example, if the
66 freetype library and the Qtopia freetype plugin are installed, 66 freetype library and the Qtopia freetype plugin are installed,
67 TrueType fonts will be available to your application. Font renderer 67 TrueType fonts will be available to your application. Font renderer
68 plugins have greater resource requirements than system fonts so they 68 plugins have greater resource requirements than system fonts so they
69 should be used only when necessary. You can force the loading of 69 should be used only when necessary. You can force the loading of
70 font renderer plugins with loadRenderers(). 70 font renderer plugins with loadRenderers().
71 71
72 \ingroup qtopiaemb 72 \ingroup qtopiaemb
73*/ 73*/
74 74
75/*! 75/*!
76 Constructs a FontDatabase object. 76 Constructs a FontDatabase object.
77*/ 77*/
78FontDatabase::FontDatabase() 78FontDatabase::FontDatabase()
79#ifndef QT_NO_FONTDATABASE 79#ifndef QT_NO_FONTDATABASE
80 : QFontDatabase() 80 : QFontDatabase()
81#endif 81#endif
82{ 82{
83 if ( !factoryList ) 83 if ( !factoryList )
84 loadRenderers(); 84 loadRenderers();
85} 85}
86 86
87/*! 87/*!
88 Returns a list of names of all the available font families. 88 Returns a list of names of all the available font families.
89*/ 89*/
90QStringList FontDatabase::families() const 90QStringList FontDatabase::families() const
91{ 91{
92#ifndef QT_NO_FONTDATABASE 92#ifndef QT_NO_FONTDATABASE
93 return QFontDatabase::families(); 93 return QFontDatabase::families();
94#else 94#else
95 95
96#ifndef QWS 96#ifndef QWS
97 QStringList list; 97 QStringList list;
98 return list; 98 return list;
99#else 99#else
100 QStringList list; 100 QStringList list;
101 QDict<void> familyDict; 101 QDict<void> familyDict;
102 QDiskFont *qdf; 102 QDiskFont *qdf;
103 for ( qdf=qt_fontmanager->diskfonts.first(); qdf!=0; 103 for ( qdf=qt_fontmanager->diskfonts.first(); qdf!=0;
104 qdf=qt_fontmanager->diskfonts.next()) { 104 qdf=qt_fontmanager->diskfonts.next()) {
105 QString familyname = qdf->name; 105 QString familyname = qdf->name;
106 if ( !familyDict.find( familyname ) ) { 106 if ( !familyDict.find( familyname ) ) {
107 familyDict.insert( familyname, (void *)1 ); 107 familyDict.insert( familyname, (void *)1 );
108 list.append( familyname ); 108 list.append( familyname );
109 } 109 }
110 } 110 }
111 111
112 QDir dir(fontDir(),"*.qpf"); 112 QDir dir(fontDir(),"*.qpf");
113 for (int i=0; i<(int)dir.count(); i++) { 113 for (int i=0; i<(int)dir.count(); i++) {
114 QString familyname = fontFamily(dir[i]); 114 QString familyname = fontFamily(dir[i]);
115 if ( !familyDict.find( familyname ) ) { 115 if ( !familyDict.find( familyname ) ) {
116 familyDict.insert( familyname, (void *)1 ); 116 familyDict.insert( familyname, (void *)1 );
117 list.append( familyname ); 117 list.append( familyname );
118 } 118 }
119 } 119 }
120 120
121 return list; 121 return list;
122#endif 122#endif
123#endif 123#endif
124} 124}
125 125
126#ifdef QT_NO_FONTDATABASE 126#ifdef QT_NO_FONTDATABASE
127/*! 127/*!
128 Returns a list of standard fontsizes. 128 Returns a list of standard fontsizes.
129*/ 129*/
130QValueList<int> FontDatabase::standardSizes() 130QValueList<int> FontDatabase::standardSizes()
131{ 131{
132 static int s[]={ 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 132 static int s[]={ 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28,
133 36, 48, 72, 0 }; 133 36, 48, 72, 0 };
134 static bool first = TRUE; 134 static bool first = TRUE;
135 static QValueList<int> sList; 135 static QValueList<int> sList;
136 if ( first ) { 136 if ( first ) {
137 first = FALSE; 137 first = FALSE;
138 int i = 0; 138 int i = 0;
139 while( s[i] ) 139 while( s[i] )
140 sList.append( s[i++] ); 140 sList.append( s[i++] );
141 } 141 }
142 return sList; 142 return sList;
143} 143}
144 144
145#endif 145#endif
146 146
147/*! 147/*!
148 Load any font renderer plugins that are available and make the fonts 148 Load any font renderer plugins that are available and make the fonts
149 that the plugins can read available. 149 that the plugins can read available.
150*/ 150*/
151void FontDatabase::loadRenderers() 151void FontDatabase::loadRenderers()
152{ 152{
153#ifndef QWS 153#ifndef QWS
154 return; 154 return;
155#else 155#else
156 156
157#ifndef QT_NO_COMPONENT 157#ifndef QT_NO_COMPONENT
158 if ( !factoryList ) 158 if ( !factoryList )
159 factoryList = new QValueList<FontFactory>; 159 factoryList = new QValueList<FontFactory>;
160 160
161 QValueList<FontFactory>::Iterator mit; 161 QValueList<FontFactory>::Iterator mit;
162 for ( mit = factoryList->begin(); mit != factoryList->end(); ++mit ) { 162 for ( mit = factoryList->begin(); mit != factoryList->end(); ++mit ) {
163 qt_fontmanager->factories.setAutoDelete( false ); 163 qt_fontmanager->factories.setAutoDelete( false );
164 qt_fontmanager->factories.removeRef( (*mit).factory ); 164 qt_fontmanager->factories.removeRef( (*mit).factory );
165 qt_fontmanager->factories.setAutoDelete( true ); 165 qt_fontmanager->factories.setAutoDelete( true );
166 (*mit).interface->release(); 166 (*mit).interface->release();
167 (*mit).library->unload(); 167 (*mit).library->unload();
168 delete (*mit).library; 168 delete (*mit).library;
169 } 169 }
170 factoryList->clear(); 170 factoryList->clear();
171 171
172 QString path = QPEApplication::qpeDir() + "/plugins/fontfactories"; 172 QString path = QPEApplication::qpeDir() + "/plugins/fontfactories";
173#ifdef Q_OS_MACX
174 QDir dir( path, "lib*.dylib" );
175#else
173 QDir dir( path, "lib*.so" ); 176 QDir dir( path, "lib*.so" );
177#endif
174 178
175 if ( !dir.exists()) 179 if ( !dir.exists())
176 return; 180 return;
177 181
178 QStringList list = dir.entryList(); 182 QStringList list = dir.entryList();
179 QStringList::Iterator it; 183 QStringList::Iterator it;
180 for ( it = list.begin(); it != list.end(); ++it ) { 184 for ( it = list.begin(); it != list.end(); ++it ) {
181 FontFactoryInterface *iface = 0; 185 FontFactoryInterface *iface = 0;
182 QLibrary *lib = new QLibrary( path + "/" + *it ); 186 QLibrary *lib = new QLibrary( path + "/" + *it );
183 if ( lib->queryInterface( IID_FontFactory, (QUnknownInterface**)&iface ) == QS_OK ) { 187 if ( lib->queryInterface( IID_FontFactory, (QUnknownInterface**)&iface ) == QS_OK ) {
184 FontFactory factory; 188 FontFactory factory;
185 factory.library = lib; 189 factory.library = lib;
186 factory.interface = iface; 190 factory.interface = iface;
187 factory.factory = factory.interface->fontFactory(); 191 factory.factory = factory.interface->fontFactory();
188 factoryList->append( factory ); 192 factoryList->append( factory );
189 qt_fontmanager->factories.append( factory.factory ); 193 qt_fontmanager->factories.append( factory.factory );
190 readFonts( factory.factory ); 194 readFonts( factory.factory );
191 } else { 195 } else {
192 delete lib; 196 delete lib;
193 } 197 }
194 } 198 }
195#endif 199#endif
196#endif 200#endif
197} 201}
198 202
199/*! 203/*!
200 \internal 204 \internal
201*/ 205*/
202void FontDatabase::readFonts( QFontFactory *factory ) 206void FontDatabase::readFonts( QFontFactory *factory )
203{ 207{
204#ifndef QWS 208#ifndef QWS
205return; 209return;
206#else 210#else
207 // Load in font definition file 211 // Load in font definition file
208 QString fn = fontDir() + "fontdir"; 212 QString fn = fontDir() + "fontdir";
209 FILE* fontdef=fopen(fn.local8Bit(),"r"); 213 FILE* fontdef=fopen(fn.local8Bit(),"r");
210 if(!fontdef) { 214 if(!fontdef) {
211 QCString temp=fn.local8Bit(); 215 QCString temp=fn.local8Bit();
212 qWarning("Cannot find font definition file %s - is $QTDIR set correctly?", 216 qWarning("Cannot find font definition file %s - is $QTDIR set correctly?",
213 temp.data()); 217 temp.data());
214 return; 218 return;
215 } 219 }
216 char buf[200]=""; 220 char buf[200]="";
217 char name[200]=""; 221 char name[200]="";
218 char render[200]=""; 222 char render[200]="";
219 char file[200]=""; 223 char file[200]="";
220 char flags[200]=""; 224 char flags[200]="";
221 char isitalic[10]=""; 225 char isitalic[10]="";
222 fgets(buf,200,fontdef); 226 fgets(buf,200,fontdef);
223 while(!feof(fontdef)) { 227 while(!feof(fontdef)) {
224 if ( buf[0] != '#' ) { 228 if ( buf[0] != '#' ) {
225 int weight=50; 229 int weight=50;
226 int size=0; 230 int size=0;
227 flags[0]=0; 231 flags[0]=0;
228 sscanf(buf,"%s %s %s %s %d %d %s",name,file,render,isitalic,&weight,&size,flags); 232 sscanf(buf,"%s %s %s %s %d %d %s",name,file,render,isitalic,&weight,&size,flags);
229 QString filename; 233 QString filename;
230 if ( file[0] != '/' ) 234 if ( file[0] != '/' )
231 filename = fontDir(); 235 filename = fontDir();
232 filename += file; 236 filename += file;
233 if ( QFile::exists(filename) ) { 237 if ( QFile::exists(filename) ) {
234 if( factory->name() == render ) { 238 if( factory->name() == render ) {
235 QDiskFont * qdf=new QDiskFont(factory,name,isitalic[0]=='y', 239 QDiskFont * qdf=new QDiskFont(factory,name,isitalic[0]=='y',
236 weight,size,flags,filename); 240 weight,size,flags,filename);
237 qt_fontmanager->diskfonts.append(qdf); 241 qt_fontmanager->diskfonts.append(qdf);
238#if QT_VERSION >= 232 242#if QT_VERSION >= 232
239 QFontDatabase::qwsAddDiskFont( qdf ); 243 QFontDatabase::qwsAddDiskFont( qdf );
240#endif 244#endif
241 } 245 }
242 } 246 }
243 } 247 }
244 fgets(buf,200,fontdef); 248 fgets(buf,200,fontdef);
245 } 249 }
246 fclose(fontdef); 250 fclose(fontdef);
247#endif 251#endif
248} 252}
249 253
diff --git a/library/global.cpp b/library/global.cpp
index 90954fe..05d23ac 100644
--- a/library/global.cpp
+++ b/library/global.cpp
@@ -415,385 +415,389 @@ QWidget *Global::shutdown( bool )
415{ 415{
416#if !defined(QT_NO_COP) 416#if !defined(QT_NO_COP)
417 QCopChannel::send( "QPE/System", "shutdown()" ); 417 QCopChannel::send( "QPE/System", "shutdown()" );
418#endif 418#endif
419 return 0; 419 return 0;
420} 420}
421 421
422/*! 422/*!
423 \internal 423 \internal
424*/ 424*/
425QWidget *Global::restart( bool ) 425QWidget *Global::restart( bool )
426{ 426{
427#if !defined(QT_NO_COP) 427#if !defined(QT_NO_COP)
428 QCopChannel::send( "QPE/System", "restart()" ); 428 QCopChannel::send( "QPE/System", "restart()" );
429#endif 429#endif
430 return 0; 430 return 0;
431} 431}
432 432
433/*! 433/*!
434 Explicitly show the current input method. 434 Explicitly show the current input method.
435 435
436 Input methods are indicated in the taskbar by a small icon. If the 436 Input methods are indicated in the taskbar by a small icon. If the
437 input method is activated (shown) then it takes up some proportion 437 input method is activated (shown) then it takes up some proportion
438 of the bottom of the screen, to allow the user to interact (input 438 of the bottom of the screen, to allow the user to interact (input
439 characters) with it. 439 characters) with it.
440 440
441 \sa hideInputMethod() 441 \sa hideInputMethod()
442*/ 442*/
443void Global::showInputMethod() 443void Global::showInputMethod()
444{ 444{
445#if !defined(QT_NO_COP) 445#if !defined(QT_NO_COP)
446 QCopChannel::send( "QPE/TaskBar", "showInputMethod()" ); 446 QCopChannel::send( "QPE/TaskBar", "showInputMethod()" );
447#endif 447#endif
448} 448}
449 449
450/*! 450/*!
451 Explicitly hide the current input method. 451 Explicitly hide the current input method.
452 452
453 The current input method is still indicated in the taskbar, but no 453 The current input method is still indicated in the taskbar, but no
454 longer takes up screen space, and can no longer be interacted with. 454 longer takes up screen space, and can no longer be interacted with.
455 455
456 \sa showInputMethod() 456 \sa showInputMethod()
457*/ 457*/
458void Global::hideInputMethod() 458void Global::hideInputMethod()
459{ 459{
460#if !defined(QT_NO_COP) 460#if !defined(QT_NO_COP)
461 QCopChannel::send( "QPE/TaskBar", "hideInputMethod()" ); 461 QCopChannel::send( "QPE/TaskBar", "hideInputMethod()" );
462#endif 462#endif
463} 463}
464 464
465 465
466/*! 466/*!
467 \internal 467 \internal
468*/ 468*/
469bool Global::isBuiltinCommand( const QString &name ) 469bool Global::isBuiltinCommand( const QString &name )
470{ 470{
471 if(!builtin) 471 if(!builtin)
472 return FALSE; // yes, it can happen 472 return FALSE; // yes, it can happen
473 for (int i = 0; builtin[i].file; i++) { 473 for (int i = 0; builtin[i].file; i++) {
474 if ( builtin[i].file == name ) { 474 if ( builtin[i].file == name ) {
475 return TRUE; 475 return TRUE;
476 } 476 }
477 } 477 }
478 return FALSE; 478 return FALSE;
479} 479}
480 480
481Global::Command* Global::builtin=0; 481Global::Command* Global::builtin=0;
482QGuardedPtr<QWidget> *Global::running=0; 482QGuardedPtr<QWidget> *Global::running=0;
483 483
484/*! 484/*!
485 \class Global::Command 485 \class Global::Command
486 \brief The Global::Command class is internal. 486 \brief The Global::Command class is internal.
487 \internal 487 \internal
488*/ 488*/
489 489
490/*! 490/*!
491 \internal 491 \internal
492*/ 492*/
493void Global::setBuiltinCommands( Command* list ) 493void Global::setBuiltinCommands( Command* list )
494{ 494{
495 if ( running ) 495 if ( running )
496 delete [] running; 496 delete [] running;
497 497
498 builtin = list; 498 builtin = list;
499 int count = 0; 499 int count = 0;
500 if (!builtin) 500 if (!builtin)
501 return; 501 return;
502 while ( builtin[count].file ) 502 while ( builtin[count].file )
503 count++; 503 count++;
504 504
505 running = new QGuardedPtr<QWidget> [ count ]; 505 running = new QGuardedPtr<QWidget> [ count ];
506} 506}
507 507
508/*! 508/*!
509 \internal 509 \internal
510*/ 510*/
511void Global::setDocument( QWidget* receiver, const QString& document ) 511void Global::setDocument( QWidget* receiver, const QString& document )
512{ 512{
513 Emitter emitter(receiver,document); 513 Emitter emitter(receiver,document);
514} 514}
515 515
516/*! 516/*!
517 \internal 517 \internal
518*/ 518*/
519bool Global::terminateBuiltin( const QString& n ) 519bool Global::terminateBuiltin( const QString& n )
520{ 520{
521 if (!builtin) 521 if (!builtin)
522 return FALSE; 522 return FALSE;
523 for (int i = 0; builtin[i].file; i++) { 523 for (int i = 0; builtin[i].file; i++) {
524 if ( builtin[i].file == n ) { 524 if ( builtin[i].file == n ) {
525 delete running[i]; 525 delete running[i];
526 return TRUE; 526 return TRUE;
527 } 527 }
528 } 528 }
529 return FALSE; 529 return FALSE;
530} 530}
531 531
532/*! 532/*!
533 \internal 533 \internal
534*/ 534*/
535void Global::terminate( const AppLnk* app ) 535void Global::terminate( const AppLnk* app )
536{ 536{
537 //if ( terminateBuiltin(app->exec()) ) return; // maybe? haven't tried this 537 //if ( terminateBuiltin(app->exec()) ) return; // maybe? haven't tried this
538 538
539#ifndef QT_NO_COP 539#ifndef QT_NO_COP
540 QCString channel = "QPE/Application/" + app->exec().utf8(); 540 QCString channel = "QPE/Application/" + app->exec().utf8();
541 if ( QCopChannel::isRegistered(channel) ) { 541 if ( QCopChannel::isRegistered(channel) ) {
542 QCopEnvelope e(channel, "quit()"); 542 QCopEnvelope e(channel, "quit()");
543 } 543 }
544#endif 544#endif
545} 545}
546 546
547/*! 547/*!
548 Low-level function to run command \a c. 548 Low-level function to run command \a c.
549 549
550 \warning Do not use this function. Use execute instead. 550 \warning Do not use this function. Use execute instead.
551 551
552 \sa execute() 552 \sa execute()
553*/ 553*/
554void Global::invoke(const QString &c) 554void Global::invoke(const QString &c)
555{ 555{
556 // Convert the command line in to a list of arguments 556 // Convert the command line in to a list of arguments
557 QStringList list = QStringList::split(QRegExp(" *"),c); 557 QStringList list = QStringList::split(QRegExp(" *"),c);
558 558
559#if !defined(QT_NO_COP) 559#if !defined(QT_NO_COP)
560 QString ap=list[0]; 560 QString ap=list[0];
561 // see if the application is already running 561 // see if the application is already running
562 // XXX should lock file /tmp/qcop-msg-ap 562 // XXX should lock file /tmp/qcop-msg-ap
563 if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) { 563 if ( QCopChannel::isRegistered( ("QPE/Application/" + ap).latin1() ) ) {
564 // If the channel is already register, the app is already running, so show it. 564 // If the channel is already register, the app is already running, so show it.
565 { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); } 565 { QCopEnvelope env( ("QPE/Application/" + ap).latin1(), "raise()" ); }
566 566
567 //QCopEnvelope e("QPE/System", "notBusy(QString)" ); 567 //QCopEnvelope e("QPE/System", "notBusy(QString)" );
568 //e << ap; 568 //e << ap;
569 return; 569 return;
570 } 570 }
571 // XXX should unlock file /tmp/qcop-msg-ap 571 // XXX should unlock file /tmp/qcop-msg-ap
572 //see if it is being started 572 //see if it is being started
573 if ( StartingAppList::isStarting( ap ) ) { 573 if ( StartingAppList::isStarting( ap ) ) {
574 // FIXME take it out for now, since it leads to a much to short showing of wait if 574 // FIXME take it out for now, since it leads to a much to short showing of wait if
575 // some entry is clicked. 575 // some entry is clicked.
576 // Real cause is that ::execute is called twice for document tab. But it would need some larger changes 576 // Real cause is that ::execute is called twice for document tab. But it would need some larger changes
577 // to fix that, and with future syncs with qtopia 1.6 it will change anyway big time since somebody there 577 // to fix that, and with future syncs with qtopia 1.6 it will change anyway big time since somebody there
578 // had the idea that an apploader belongs to the launcher ... 578 // had the idea that an apploader belongs to the launcher ...
579 //QCopEnvelope e("QPE/System", "notBusy(QString)" ); 579 //QCopEnvelope e("QPE/System", "notBusy(QString)" );
580 //e << ap; 580 //e << ap;
581 return; 581 return;
582 } 582 }
583 583
584#endif 584#endif
585 585
586#ifdef QT_NO_QWS_MULTIPROCESS 586#ifdef QT_NO_QWS_MULTIPROCESS
587 QMessageBox::warning( 0, "Error", "Could not find the application " + c, "Ok", 0, 0, 0, 1 ); 587 QMessageBox::warning( 0, "Error", "Could not find the application " + c, "Ok", 0, 0, 0, 1 );
588#else 588#else
589 589
590 QStrList slist; 590 QStrList slist;
591 unsigned int j; 591 unsigned int j;
592 for ( j = 0; j < list.count(); j++ ) 592 for ( j = 0; j < list.count(); j++ )
593 slist.append( list[j].utf8() ); 593 slist.append( list[j].utf8() );
594 594
595 const char **args = new (const char *)[slist.count() + 1]; 595 const char **args = new (const char *)[slist.count() + 1];
596 for ( j = 0; j < slist.count(); j++ ) 596 for ( j = 0; j < slist.count(); j++ )
597 args[j] = slist.at(j); 597 args[j] = slist.at(j);
598 args[j] = NULL; 598 args[j] = NULL;
599 599
600#if !defined(QT_NO_COP) 600#if !defined(QT_NO_COP)
601 // an attempt to show a wait... 601 // an attempt to show a wait...
602 // more logic should be used, but this will be fine for the moment... 602 // more logic should be used, but this will be fine for the moment...
603 QCopEnvelope ( "QPE/System", "busy()" ); 603 QCopEnvelope ( "QPE/System", "busy()" );
604#endif 604#endif
605 605
606#ifdef HAVE_QUICKEXEC 606#ifdef HAVE_QUICKEXEC
607#ifdef Q_OS_MACX
608 QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".dylib";
609#else
607 QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so"; 610 QString libexe = qpeDir()+"/binlib/lib"+args[0] + ".so";
611#endif
608 qDebug("libfile = %s", libexe.latin1() ); 612 qDebug("libfile = %s", libexe.latin1() );
609 if ( QFile::exists( libexe ) ) { 613 if ( QFile::exists( libexe ) ) {
610 qDebug("calling quickexec %s", libexe.latin1() ); 614 qDebug("calling quickexec %s", libexe.latin1() );
611 quickexecv( libexe.utf8().data(), (const char **)args ); 615 quickexecv( libexe.utf8().data(), (const char **)args );
612 } else 616 } else
613#endif 617#endif
614 { 618 {
615 bool success = false; 619 bool success = false;
616 int pfd [2]; 620 int pfd [2];
617 if ( ::pipe ( pfd ) < 0 ) 621 if ( ::pipe ( pfd ) < 0 )
618 pfd [0] = pfd [1] = -1; 622 pfd [0] = pfd [1] = -1;
619 623
620 pid_t pid = ::fork ( ); 624 pid_t pid = ::fork ( );
621 625
622 if ( pid == 0 ) { // child 626 if ( pid == 0 ) { // child
623 for ( int fd = 3; fd < 100; fd++ ) { 627 for ( int fd = 3; fd < 100; fd++ ) {
624 if ( fd != pfd [1] ) 628 if ( fd != pfd [1] )
625 ::close ( fd ); 629 ::close ( fd );
626 } 630 }
627 ::setpgid ( ::getpid ( ), ::getppid ( )); 631 ::setpgid ( ::getpid ( ), ::getppid ( ));
628 632
629 // Closing of fd[1] indicates that the execvp succeeded! 633 // Closing of fd[1] indicates that the execvp succeeded!
630 if ( pfd [1] >= 0 ) 634 if ( pfd [1] >= 0 )
631 ::fcntl ( pfd [1], F_SETFD, FD_CLOEXEC ); 635 ::fcntl ( pfd [1], F_SETFD, FD_CLOEXEC );
632 636
633 // Try bindir first, so that foo/bar works too 637 // Try bindir first, so that foo/bar works too
634 ::execv ( qpeDir ( ) + "/bin/" + args [0], (char * const *) args ); 638 ::execv ( qpeDir ( ) + "/bin/" + args [0], (char * const *) args );
635 ::execvp ( args [0], (char * const *) args ); 639 ::execvp ( args [0], (char * const *) args );
636 640
637 char resultByte = 1; 641 char resultByte = 1;
638 if ( pfd [1] >= 0 ) 642 if ( pfd [1] >= 0 )
639 ::write ( pfd [1], &resultByte, 1 ); 643 ::write ( pfd [1], &resultByte, 1 );
640 ::_exit ( -1 ); 644 ::_exit ( -1 );
641 } 645 }
642 else if ( pid > 0 ) { 646 else if ( pid > 0 ) {
643 success = true; 647 success = true;
644 648
645 if ( pfd [1] >= 0 ) 649 if ( pfd [1] >= 0 )
646 ::close ( pfd [1] ); 650 ::close ( pfd [1] );
647 if ( pfd [0] >= 0 ) { 651 if ( pfd [0] >= 0 ) {
648 while ( true ) { 652 while ( true ) {
649 char resultByte; 653 char resultByte;
650 int n = ::read ( pfd [0], &resultByte, 1 ); 654 int n = ::read ( pfd [0], &resultByte, 1 );
651 if ( n == 1 ) { 655 if ( n == 1 ) {
652 success = false; 656 success = false;
653 break; 657 break;
654 } 658 }
655 if (( n == -1 ) && (( errno == ECHILD ) || ( errno == EINTR ))) 659 if (( n == -1 ) && (( errno == ECHILD ) || ( errno == EINTR )))
656 continue; 660 continue;
657 661
658 break; // success 662 break; // success
659 } 663 }
660 ::close ( pfd [0] ); 664 ::close ( pfd [0] );
661 } 665 }
662 } 666 }
663 if ( success ) 667 if ( success )
664 StartingAppList::add( list[0] ); 668 StartingAppList::add( list[0] );
665 else 669 else
666 QMessageBox::warning( 0, "Error", "Could not start the application " + c, "Ok", 0, 0, 0, 1 ); 670 QMessageBox::warning( 0, "Error", "Could not start the application " + c, "Ok", 0, 0, 0, 1 );
667 } 671 }
668#endif //QT_NO_QWS_MULTIPROCESS 672#endif //QT_NO_QWS_MULTIPROCESS
669} 673}
670 674
671 675
672/*! 676/*!
673 Executes the application identfied by \a c, passing \a 677 Executes the application identfied by \a c, passing \a
674 document if it isn't null. 678 document if it isn't null.
675 679
676 Note that a better approach might be to send a QCop message to the 680 Note that a better approach might be to send a QCop message to the
677 application's QPE/Application/\e{appname} channel. 681 application's QPE/Application/\e{appname} channel.
678*/ 682*/
679void Global::execute( const QString &c, const QString& document ) 683void Global::execute( const QString &c, const QString& document )
680{ 684{
681 // ask the server to do the work 685 // ask the server to do the work
682#if !defined(QT_NO_COP) 686#if !defined(QT_NO_COP)
683 if ( document.isNull() ) { 687 if ( document.isNull() ) {
684 QCopEnvelope e( "QPE/System", "execute(QString)" ); 688 QCopEnvelope e( "QPE/System", "execute(QString)" );
685 e << c; 689 e << c;
686 } else { 690 } else {
687 QCopEnvelope e( "QPE/System", "execute(QString,QString)" ); 691 QCopEnvelope e( "QPE/System", "execute(QString,QString)" );
688 e << c << document; 692 e << c << document;
689 } 693 }
690#endif 694#endif
691 return; 695 return;
692} 696}
693 697
694/*! 698/*!
695 Returns the string \a s with the characters '\', '"', and '$' quoted 699 Returns the string \a s with the characters '\', '"', and '$' quoted
696 by a preceeding '\'. 700 by a preceeding '\'.
697 701
698 \sa stringQuote() 702 \sa stringQuote()
699*/ 703*/
700QString Global::shellQuote(const QString& s) 704QString Global::shellQuote(const QString& s)
701{ 705{
702 QString r="\""; 706 QString r="\"";
703 for (int i=0; i<(int)s.length(); i++) { 707 for (int i=0; i<(int)s.length(); i++) {
704 char c = s[i].latin1(); 708 char c = s[i].latin1();
705 switch (c) { 709 switch (c) {
706 case '\\': case '"': case '$': 710 case '\\': case '"': case '$':
707 r+="\\"; 711 r+="\\";
708 } 712 }
709 r += s[i]; 713 r += s[i];
710 } 714 }
711 r += "\""; 715 r += "\"";
712 return r; 716 return r;
713} 717}
714 718
715/*! 719/*!
716 Returns the string \a s with the characters '\' and '"' quoted by a 720 Returns the string \a s with the characters '\' and '"' quoted by a
717 preceeding '\'. 721 preceeding '\'.
718 722
719 \sa shellQuote() 723 \sa shellQuote()
720*/ 724*/
721QString Global::stringQuote(const QString& s) 725QString Global::stringQuote(const QString& s)
722{ 726{
723 QString r="\""; 727 QString r="\"";
724 for (int i=0; i<(int)s.length(); i++) { 728 for (int i=0; i<(int)s.length(); i++) {
725 char c = s[i].latin1(); 729 char c = s[i].latin1();
726 switch (c) { 730 switch (c) {
727 case '\\': case '"': 731 case '\\': case '"':
728 r+="\\"; 732 r+="\\";
729 } 733 }
730 r += s[i]; 734 r += s[i];
731 } 735 }
732 r += "\""; 736 r += "\"";
733 return r; 737 return r;
734} 738}
735 739
736/*! 740/*!
737 Finds all documents on the system's document directories which 741 Finds all documents on the system's document directories which
738 match the filter \a mimefilter, and appends the resulting DocLnk 742 match the filter \a mimefilter, and appends the resulting DocLnk
739 objects to \a folder. 743 objects to \a folder.
740*/ 744*/
741void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter) 745void Global::findDocuments(DocLnkSet* folder, const QString &mimefilter)
742{ 746{
743 QString homedocs = QString(getenv("HOME")) + "/Documents"; 747 QString homedocs = QString(getenv("HOME")) + "/Documents";
744 DocLnkSet d(homedocs,mimefilter); 748 DocLnkSet d(homedocs,mimefilter);
745 folder->appendFrom(d); 749 folder->appendFrom(d);
746 /** let's do intellegint way of searching these files 750 /** let's do intellegint way of searching these files
747 * a) the user don't want to check mediums global 751 * a) the user don't want to check mediums global
748 * b) the user wants to check but use the global options for it 752 * b) the user wants to check but use the global options for it
749 * c) the user wants to check it but not this medium 753 * c) the user wants to check it but not this medium
750 * d) the user wants to check and this medium as well 754 * d) the user wants to check and this medium as well
751 * 755 *
752 * In all cases we need to apply a different mimefilter to 756 * In all cases we need to apply a different mimefilter to
753 * the medium. 757 * the medium.
754 * a) mimefilter.isEmpty() we need to apply the responding filter 758 * a) mimefilter.isEmpty() we need to apply the responding filter
755 * either the global or the one on the medium 759 * either the global or the one on the medium
756 * 760 *
757 * b) mimefilter is set to an application we need to find out if the 761 * b) mimefilter is set to an application we need to find out if the
758 * mimetypes are included in the mime mask of the medium 762 * mimetypes are included in the mime mask of the medium
759 */ 763 */
760 StorageInfo storage; 764 StorageInfo storage;
761 const QList<FileSystem> &fs = storage.fileSystems(); 765 const QList<FileSystem> &fs = storage.fileSystems();
762 QListIterator<FileSystem> it ( fs ); 766 QListIterator<FileSystem> it ( fs );
763 for ( ; it.current(); ++it ) { 767 for ( ; it.current(); ++it ) {
764 if ( (*it)->isRemovable() ) { // let's find out if we should search on it 768 if ( (*it)->isRemovable() ) { // let's find out if we should search on it
765 // this is a candidate look at the cf and see if we should search on it 769 // this is a candidate look at the cf and see if we should search on it
766 QString path = (*it)->path(); 770 QString path = (*it)->path();
767 if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) ) 771 if( !checkStorage((*it)->path() + "/.opiestorage.cf" ) )
768 continue; 772 continue;
769 DocLnkSet ide( path, mimefilter ); 773 DocLnkSet ide( path, mimefilter );
770 folder->appendFrom(ide); 774 folder->appendFrom(ide);
771 } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) { 775 } else if ( (*it)->disk() == "/dev/mtdblock6" || (*it)->disk() == "tmpfs" ) {
772 QString path = (*it)->path() + "/Documents"; 776 QString path = (*it)->path() + "/Documents";
773 DocLnkSet ide( path, mimefilter ); 777 DocLnkSet ide( path, mimefilter );
774 folder->appendFrom(ide); 778 folder->appendFrom(ide);
775 } 779 }
776 } 780 }
777} 781}
778 782
779QStringList Global::languageList() 783QStringList Global::languageList()
780{ 784{
781 QString lang = getenv("LANG"); 785 QString lang = getenv("LANG");
782 QStringList langs; 786 QStringList langs;
783 langs.append(lang); 787 langs.append(lang);
784 int i = lang.find("."); 788 int i = lang.find(".");
785 if ( i > 0 ) 789 if ( i > 0 )
786 lang = lang.left( i ); 790 lang = lang.left( i );
787 i = lang.find( "_" ); 791 i = lang.find( "_" );
788 if ( i > 0 ) 792 if ( i > 0 )
789 langs.append(lang.left(i)); 793 langs.append(lang.left(i));
790 return langs; 794 return langs;
791} 795}
792 796
793QStringList Global::helpPath() 797QStringList Global::helpPath()
794{ 798{
795 QString qpeDir = QPEApplication::qpeDir(); 799 QString qpeDir = QPEApplication::qpeDir();
796 QStringList path; 800 QStringList path;
797 QStringList langs = Global::languageList(); 801 QStringList langs = Global::languageList();
798 for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) { 802 for (QStringList::ConstIterator it = langs.fromLast(); it!=langs.end(); --it) {
799 QString lang = *it; 803 QString lang = *it;
diff --git a/library/library.pro b/library/library.pro
index ab1f451..5acfc0c 100644
--- a/library/library.pro
+++ b/library/library.pro
@@ -1,157 +1,157 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 #CONFIG += qt warn_on release 2 #CONFIG += qt warn_on release
3 CONFIG += qt warn_on debug 3 CONFIG += qt warn_on debug
4 HEADERS= calendar.h \ 4 HEADERS= calendar.h \
5 global.h \ 5 global.h \
6 resource.h \ 6 resource.h \
7 xmlreader.h \ 7 xmlreader.h \
8 mimetype.h \ 8 mimetype.h \
9 menubutton.h \ 9 menubutton.h \
10 network.h \ 10 network.h \
11 networkinterface.h \ 11 networkinterface.h \
12 filemanager.h \ 12 filemanager.h \
13 fontmanager.h \ 13 fontmanager.h \
14 qdawg.h \ 14 qdawg.h \
15 datebookmonth.h \ 15 datebookmonth.h \
16 fileselector.h \ 16 fileselector.h \
17 fileselector_p.h \ 17 fileselector_p.h \
18 imageedit.h \ 18 imageedit.h \
19 qcopenvelope_qws.h \ 19 qcopenvelope_qws.h \
20 qpedecoration_qws.h \ 20 qpedecoration_qws.h \
21 qpeapplication.h \ 21 qpeapplication.h \
22 qpestyle.h \ 22 qpestyle.h \
23 qpedialog.h \ 23 qpedialog.h \
24 lightstyle.h \ 24 lightstyle.h \
25 config.h \ 25 config.h \
26 applnk.h \ 26 applnk.h \
27 sound.h \ 27 sound.h \
28 tzselect.h \ 28 tzselect.h \
29 qmath.h \ 29 qmath.h \
30 datebookdb.h \ 30 datebookdb.h \
31 alarmserver.h \ 31 alarmserver.h \
32 process.h \ 32 process.h \
33 password.h \ 33 password.h \
34 timestring.h \ 34 timestring.h \
35 fontfactoryinterface.h \ 35 fontfactoryinterface.h \
36 fontdatabase.h \ 36 fontdatabase.h \
37 power.h \ 37 power.h \
38 storage.h \ 38 storage.h \
39 qpemessagebox.h \ 39 qpemessagebox.h \
40 timeconversion.h \ 40 timeconversion.h \
41 qpedebug.h \ 41 qpedebug.h \
42 qpemenubar.h \ 42 qpemenubar.h \
43 qpetoolbar.h \ 43 qpetoolbar.h \
44 backend/categories.h \ 44 backend/categories.h \
45 stringutil.h \ 45 stringutil.h \
46 backend/palmtoprecord.h \ 46 backend/palmtoprecord.h \
47 backend/task.h \ 47 backend/task.h \
48 backend/event.h \ 48 backend/event.h \
49 backend/contact.h\ 49 backend/contact.h\
50 categorymenu.h \ 50 categorymenu.h \
51 categoryedit_p.h \ 51 categoryedit_p.h \
52 categoryselect.h \ 52 categoryselect.h \
53 categorywidget.h \ 53 categorywidget.h \
54 ir.h \ 54 ir.h \
55 backend/vobject_p.h \ 55 backend/vobject_p.h \
56 findwidget_p.h \ 56 findwidget_p.h \
57 finddialog.h \ 57 finddialog.h \
58 lnkproperties.h \ 58 lnkproperties.h \
59 windowdecorationinterface.h \ 59 windowdecorationinterface.h \
60 textcodecinterface.h \ 60 textcodecinterface.h \
61 imagecodecinterface.h \ 61 imagecodecinterface.h \
62 qt_override_p.h 62 qt_override_p.h
63 63
64 SOURCES= calendar.cpp \ 64 SOURCES= calendar.cpp \
65 global.cpp \ 65 global.cpp \
66 xmlreader.cpp \ 66 xmlreader.cpp \
67 mimetype.cpp \ 67 mimetype.cpp \
68 menubutton.cpp \ 68 menubutton.cpp \
69 network.cpp \ 69 network.cpp \
70 networkinterface.cpp \ 70 networkinterface.cpp \
71 filemanager.cpp \ 71 filemanager.cpp \
72 fontmanager.cpp \ 72 fontmanager.cpp \
73 qdawg.cpp \ 73 qdawg.cpp \
74 datebookmonth.cpp \ 74 datebookmonth.cpp \
75 fileselector.cpp \ 75 fileselector.cpp \
76 imageedit.cpp \ 76 imageedit.cpp \
77 resource.cpp \ 77 resource.cpp \
78 qpedecoration_qws.cpp \ 78 qpedecoration_qws.cpp \
79 qcopenvelope_qws.cpp \ 79 qcopenvelope_qws.cpp \
80 qpeapplication.cpp \ 80 qpeapplication.cpp \
81 qpestyle.cpp \ 81 qpestyle.cpp \
82 qpedialog.cpp \ 82 qpedialog.cpp \
83 lightstyle.cpp \ 83 lightstyle.cpp \
84 config.cpp \ 84 config.cpp \
85 applnk.cpp \ 85 applnk.cpp \
86 sound.cpp \ 86 sound.cpp \
87 tzselect.cpp \ 87 tzselect.cpp \
88 qmath.c \ 88 qmath.c \
89 datebookdb.cpp \ 89 datebookdb.cpp \
90 alarmserver.cpp \ 90 alarmserver.cpp \
91 password.cpp \ 91 password.cpp \
92 process.cpp \ 92 process.cpp \
93 process_unix.cpp \ 93 process_unix.cpp \
94 timestring.cpp \ 94 timestring.cpp \
95 fontdatabase.cpp \ 95 fontdatabase.cpp \
96 power.cpp \ 96 power.cpp \
97 storage.cpp \ 97 storage.cpp \
98 qpemessagebox.cpp \ 98 qpemessagebox.cpp \
99 backend/timeconversion.cpp \ 99 backend/timeconversion.cpp \
100 qpedebug.cpp \ 100 qpedebug.cpp \
101 qpemenubar.cpp \ 101 qpemenubar.cpp \
102 qpetoolbar.cpp \ 102 qpetoolbar.cpp \
103 backend/categories.cpp \ 103 backend/categories.cpp \
104 backend/stringutil.cpp \ 104 backend/stringutil.cpp \
105 backend/palmtoprecord.cpp \ 105 backend/palmtoprecord.cpp \
106 backend/task.cpp \ 106 backend/task.cpp \
107 backend/event.cpp \ 107 backend/event.cpp \
108 backend/contact.cpp \ 108 backend/contact.cpp \
109 categorymenu.cpp \ 109 categorymenu.cpp \
110 categoryedit_p.cpp \ 110 categoryedit_p.cpp \
111 categoryselect.cpp \ 111 categoryselect.cpp \
112 categorywidget.cpp \ 112 categorywidget.cpp \
113 ir.cpp \ 113 ir.cpp \
114 backend/vcc_yacc.cpp \ 114 backend/vcc_yacc.cpp \
115 backend/vobject.cpp \ 115 backend/vobject.cpp \
116 findwidget_p.cpp \ 116 findwidget_p.cpp \
117 finddialog.cpp \ 117 finddialog.cpp \
118 lnkproperties.cpp \ 118 lnkproperties.cpp \
119 qt_override.cpp 119 qt_override.cpp
120 120
121 121
122 122
123# Qt 3 compatibility 123# Qt 3 compatibility
124HEADERS += quuid.h qcom.h qlibrary.h qlibrary_p.h 124HEADERS += quuid.h qcom.h qlibrary.h qlibrary_p.h
125SOURCES += quuid.cpp qlibrary.cpp qlibrary_unix.cpp 125SOURCES += quuid.cpp qlibrary.cpp qlibrary_unix.cpp
126INCLUDEPATH += $(OPIEDIR)/include backend 126INCLUDEPATH += $(OPIEDIR)/include backend
127 LIBS += -ldl -lcrypt -lm 127 # LIBS += -ldl -lcrypt -lm
128INTERFACES = passwordbase_p.ui categoryeditbase_p.ui findwidgetbase_p.ui lnkpropertiesbase_p.ui 128INTERFACES = passwordbase_p.ui categoryeditbase_p.ui findwidgetbase_p.ui lnkpropertiesbase_p.ui
129 TARGET = qpe 129 TARGET = qpe
130 DESTDIR = $(OPIEDIR)/lib$(PROJMAK) 130 DESTDIR = $(OPIEDIR)/lib$(PROJMAK)
131 VERSION = 1.5.0.1 131 VERSION = 1.5.0.1
132 132
133TRANSLATIONS = ../i18n/de/libqpe.ts \ 133TRANSLATIONS = ../i18n/de/libqpe.ts \
134 ../i18n/nl/libqpe.ts \ 134 ../i18n/nl/libqpe.ts \
135 ../i18n/xx/libqpe.ts \ 135 ../i18n/xx/libqpe.ts \
136 ../i18n/en/libqpe.ts \ 136 ../i18n/en/libqpe.ts \
137 ../i18n/es/libqpe.ts \ 137 ../i18n/es/libqpe.ts \
138 ../i18n/fr/libqpe.ts \ 138 ../i18n/fr/libqpe.ts \
139 ../i18n/hu/libqpe.ts \ 139 ../i18n/hu/libqpe.ts \
140 ../i18n/ja/libqpe.ts \ 140 ../i18n/ja/libqpe.ts \
141 ../i18n/ko/libqpe.ts \ 141 ../i18n/ko/libqpe.ts \
142 ../i18n/no/libqpe.ts \ 142 ../i18n/no/libqpe.ts \
143 ../i18n/pl/libqpe.ts \ 143 ../i18n/pl/libqpe.ts \
144 ../i18n/pt/libqpe.ts \ 144 ../i18n/pt/libqpe.ts \
145 ../i18n/pt_BR/libqpe.ts \ 145 ../i18n/pt_BR/libqpe.ts \
146 ../i18n/sl/libqpe.ts \ 146 ../i18n/sl/libqpe.ts \
147 ../i18n/zh_CN/libqpe.ts \ 147 ../i18n/zh_CN/libqpe.ts \
148 ../i18n/it/libqpe.ts \ 148 ../i18n/it/libqpe.ts \
149 ../i18n/zh_TW/libqpe.ts \ 149 ../i18n/zh_TW/libqpe.ts \
150 ../i18n/da/libqpe.ts 150 ../i18n/da/libqpe.ts
151 151
152 152
153include ( $(OPIEDIR)/include.pro ) 153include ( $(OPIEDIR)/include.pro )
154 154
155contains( CONFIG, no-override ){ 155contains( CONFIG, no-override ){
156 DEFINES += OPIE_NO_OVERRIDE_QT 156 DEFINES += OPIE_NO_OVERRIDE_QT
157} 157}
diff --git a/library/network.cpp b/library/network.cpp
index 3568809..991e11a 100644
--- a/library/network.cpp
+++ b/library/network.cpp
@@ -229,216 +229,220 @@ private:
229 NetworkInterface* plugin = Network::loadPlugin(type); 229 NetworkInterface* plugin = Network::loadPlugin(type);
230 cfg.setGroup("Properties"); 230 cfg.setGroup("Properties");
231 if ( plugin ) { 231 if ( plugin ) {
232 if ( plugin->isActive(cfg) ) { 232 if ( plugin->isActive(cfg) ) {
233 up = TRUE; 233 up = TRUE;
234 if ( firstStart ) 234 if ( firstStart )
235 plugin->start( cfg ); 235 plugin->start( cfg );
236 } 236 }
237 if ( plugin->isAvailable(cfg) ) 237 if ( plugin->isAvailable(cfg) )
238 available.append(*it); 238 available.append(*it);
239 } 239 }
240 } 240 }
241 241
242 // Try to work around unreproducible bug whereby 242 // Try to work around unreproducible bug whereby
243 // the netmon applet shows wrong state. 243 // the netmon applet shows wrong state.
244 bool reannounce = wait<0; 244 bool reannounce = wait<0;
245 245
246 if ( available != pavailable || reannounce ) { 246 if ( available != pavailable || reannounce ) {
247 QCopEnvelope e("QPE/Network", "available(QStringList)"); 247 QCopEnvelope e("QPE/Network", "available(QStringList)");
248 e << available; 248 e << available;
249 } 249 }
250 if ( up != wasup || reannounce ) { 250 if ( up != wasup || reannounce ) {
251 QCopEnvelope("QPE/Network", up ? "up()" : "down()"); 251 QCopEnvelope("QPE/Network", up ? "up()" : "down()");
252 } 252 }
253 } 253 }
254 254
255 void start( const QString& file, const QString& password ) 255 void start( const QString& file, const QString& password )
256 { 256 {
257 if ( !current.isEmpty() ) 257 if ( !current.isEmpty() )
258 stop(); 258 stop();
259 current = QString::null; 259 current = QString::null;
260 Config cfg(file, Config::File); 260 Config cfg(file, Config::File);
261 cfg.setGroup("Info"); 261 cfg.setGroup("Info");
262 QString type = cfg.readEntry("Type"); 262 QString type = cfg.readEntry("Type");
263 NetworkInterface* plugin = Network::loadPlugin(type); 263 NetworkInterface* plugin = Network::loadPlugin(type);
264 bool started = FALSE; 264 bool started = FALSE;
265 if ( plugin ) { 265 if ( plugin ) {
266 cfg.setGroup("Properties"); 266 cfg.setGroup("Properties");
267 if ( plugin->start(cfg,password) ) { 267 if ( plugin->start(cfg,password) ) {
268 Network::writeProxySettings( cfg ); 268 Network::writeProxySettings( cfg );
269 current = file; 269 current = file;
270 wait=0; 270 wait=0;
271 startTimer(400); 271 startTimer(400);
272 started = TRUE; 272 started = TRUE;
273 } 273 }
274 } 274 }
275 if ( !started ) { 275 if ( !started ) {
276 QCopEnvelope("QPE/Network", "failed()"); 276 QCopEnvelope("QPE/Network", "failed()");
277 } 277 }
278 } 278 }
279 279
280 void stop() 280 void stop()
281 { 281 {
282 bool stopped = FALSE; 282 bool stopped = FALSE;
283 if ( !current.isEmpty() ) { 283 if ( !current.isEmpty() ) {
284 Config cfg(current, Config::File); 284 Config cfg(current, Config::File);
285 cfg.setGroup("Info"); 285 cfg.setGroup("Info");
286 QString type = cfg.readEntry("Type"); 286 QString type = cfg.readEntry("Type");
287 NetworkInterface* plugin = Network::loadPlugin(type); 287 NetworkInterface* plugin = Network::loadPlugin(type);
288 if ( plugin ) { 288 if ( plugin ) {
289 cfg.setGroup("Properties"); 289 cfg.setGroup("Properties");
290 if ( plugin->stop(cfg) ) { 290 if ( plugin->stop(cfg) ) {
291 current = QString::null; 291 current = QString::null;
292 wait=0; 292 wait=0;
293 startTimer(400); 293 startTimer(400);
294 stopped = TRUE; 294 stopped = TRUE;
295 } 295 }
296 } 296 }
297 } 297 }
298 if ( !stopped ) { 298 if ( !stopped ) {
299 QCopEnvelope("QPE/Network", "failed()"); 299 QCopEnvelope("QPE/Network", "failed()");
300 } 300 }
301 } 301 }
302 302
303 void timerEvent(QTimerEvent*) 303 void timerEvent(QTimerEvent*)
304 { 304 {
305 examineNetworks(); 305 examineNetworks();
306 if ( wait >= 0 ) { 306 if ( wait >= 0 ) {
307 if ( up == !current.isNull() ) { 307 if ( up == !current.isNull() ) {
308 // done 308 // done
309 killTimers(); 309 killTimers();
310 if ( up ) { 310 if ( up ) {
311 startTimer(3000); // monitor link 311 startTimer(3000); // monitor link
312 wait = -1; 312 wait = -1;
313 } 313 }
314 } else { 314 } else {
315 wait++; 315 wait++;
316 if ( wait == 600 ) { 316 if ( wait == 600 ) {
317 killTimers(); // forget about it after 240 s 317 killTimers(); // forget about it after 240 s
318 QCopEnvelope("QPE/Network", "failed()"); 318 QCopEnvelope("QPE/Network", "failed()");
319 up = !current.isNull(); 319 up = !current.isNull();
320 } 320 }
321 } 321 }
322 } else if ( !up ) { 322 } else if ( !up ) {
323 killTimers(); 323 killTimers();
324 } 324 }
325 } 325 }
326 326
327private: 327private:
328 QStringList available; 328 QStringList available;
329 QString current; 329 QString current;
330 bool up; 330 bool up;
331 int wait; 331 int wait;
332}; 332};
333 333
334static NetworkServer* ns=0; 334static NetworkServer* ns=0;
335 335
336/*! 336/*!
337 \internal 337 \internal
338*/ 338*/
339QString Network::serviceName(const QString& service) 339QString Network::serviceName(const QString& service)
340{ 340{
341 Config cfg(service, Config::File); 341 Config cfg(service, Config::File);
342 cfg.setGroup("Info"); 342 cfg.setGroup("Info");
343 return cfg.readEntry("Name"); 343 return cfg.readEntry("Name");
344} 344}
345 345
346/*! 346/*!
347 \internal 347 \internal
348*/ 348*/
349QString Network::serviceType(const QString& service) 349QString Network::serviceType(const QString& service)
350{ 350{
351 Config cfg(service, Config::File); 351 Config cfg(service, Config::File);
352 cfg.setGroup("Info"); 352 cfg.setGroup("Info");
353 return cfg.readEntry("Type"); 353 return cfg.readEntry("Type");
354} 354}
355 355
356/*! 356/*!
357 \internal 357 \internal
358*/ 358*/
359bool Network::serviceNeedsPassword(const QString& service) 359bool Network::serviceNeedsPassword(const QString& service)
360{ 360{
361 Config cfg(service,Config::File); 361 Config cfg(service,Config::File);
362 cfg.setGroup("Info"); 362 cfg.setGroup("Info");
363 QString type = cfg.readEntry("Type"); 363 QString type = cfg.readEntry("Type");
364 NetworkInterface* plugin = Network::loadPlugin(type); 364 NetworkInterface* plugin = Network::loadPlugin(type);
365 cfg.setGroup("Properties"); 365 cfg.setGroup("Properties");
366 return plugin ? plugin->needPassword(cfg) : FALSE; 366 return plugin ? plugin->needPassword(cfg) : FALSE;
367} 367}
368 368
369/*! 369/*!
370 \internal 370 \internal
371*/ 371*/
372bool Network::networkOnline() 372bool Network::networkOnline()
373{ 373{
374 return ns && ns->networkOnline(); 374 return ns && ns->networkOnline();
375} 375}
376 376
377/*! 377/*!
378 \internal 378 \internal
379*/ 379*/
380void Network::createServer(QObject* parent) 380void Network::createServer(QObject* parent)
381{ 381{
382 ns = new NetworkServer(parent); 382 ns = new NetworkServer(parent);
383} 383}
384 384
385/*! 385/*!
386 \internal 386 \internal
387*/ 387*/
388int Network::addStateWidgets(QWidget* parent) 388int Network::addStateWidgets(QWidget* parent)
389{ 389{
390 int n=0; 390 int n=0;
391 QStringList l = Network::choices(); 391 QStringList l = Network::choices();
392 QVBoxLayout* vb = new QVBoxLayout(parent); 392 QVBoxLayout* vb = new QVBoxLayout(parent);
393 for (QStringList::ConstIterator it=l.begin(); it!=l.end(); ++it) { 393 for (QStringList::ConstIterator it=l.begin(); it!=l.end(); ++it) {
394 Config cfg(*it,Config::File); 394 Config cfg(*it,Config::File);
395 cfg.setGroup("Info"); 395 cfg.setGroup("Info");
396 QString type = cfg.readEntry("Type"); 396 QString type = cfg.readEntry("Type");
397 NetworkInterface* plugin = Network::loadPlugin(type); 397 NetworkInterface* plugin = Network::loadPlugin(type);
398 cfg.setGroup("Properties"); 398 cfg.setGroup("Properties");
399 if ( plugin ) { 399 if ( plugin ) {
400 QWidget* w; 400 QWidget* w;
401 if ( (w=plugin->addStateWidget(parent,cfg)) ) { 401 if ( (w=plugin->addStateWidget(parent,cfg)) ) {
402 n++; 402 n++;
403 vb->addWidget(w); 403 vb->addWidget(w);
404 } 404 }
405 } 405 }
406 } 406 }
407 return n; 407 return n;
408} 408}
409 409
410static QDict<NetworkInterface> *ifaces; 410static QDict<NetworkInterface> *ifaces;
411 411
412/*! 412/*!
413 \internal 413 \internal
414*/ 414*/
415NetworkInterface* Network::loadPlugin(const QString& type) 415NetworkInterface* Network::loadPlugin(const QString& type)
416{ 416{
417#ifndef QT_NO_COMPONENT 417#ifndef QT_NO_COMPONENT
418 if ( !ifaces ) ifaces = new QDict<NetworkInterface>; 418 if ( !ifaces ) ifaces = new QDict<NetworkInterface>;
419 NetworkInterface *iface = ifaces->find(type); 419 NetworkInterface *iface = ifaces->find(type);
420 if ( !iface ) { 420 if ( !iface ) {
421#ifdef Q_OS_MACX
422 QString libfile = QPEApplication::qpeDir() + "/plugins/network/lib" + type + ".dylib";
423#else
421 QString libfile = QPEApplication::qpeDir() + "/plugins/network/lib" + type + ".so"; 424 QString libfile = QPEApplication::qpeDir() + "/plugins/network/lib" + type + ".so";
425#endif
422 QLibrary lib(libfile); 426 QLibrary lib(libfile);
423 if ( !lib.queryInterface( IID_Network, (QUnknownInterface**)&iface ) == QS_OK ) 427 if ( !lib.queryInterface( IID_Network, (QUnknownInterface**)&iface ) == QS_OK )
424 return 0; 428 return 0;
425 ifaces->insert(type,iface); 429 ifaces->insert(type,iface);
426 QStringList langs = Global::languageList(); 430 QStringList langs = Global::languageList();
427 for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) { 431 for (QStringList::ConstIterator it = langs.begin(); it!=langs.end(); ++it) {
428 QString lang = *it; 432 QString lang = *it;
429 QTranslator * trans = new QTranslator(qApp); 433 QTranslator * trans = new QTranslator(qApp);
430 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/lib"+type+".qm"; 434 QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/lib"+type+".qm";
431 if ( trans->load( tfn )) 435 if ( trans->load( tfn ))
432 qApp->installTranslator( trans ); 436 qApp->installTranslator( trans );
433 else 437 else
434 delete trans; 438 delete trans;
435 } 439 }
436 } 440 }
437 return iface; 441 return iface;
438#else 442#else
439 return 0; 443 return 0;
440#endif 444#endif
441} 445}
442 446
443#include "network.moc" 447#include "network.moc"
444 #endif// QT_NO_COP 448 #endif// QT_NO_COP
diff --git a/library/qlibrary_unix.cpp b/library/qlibrary_unix.cpp
index 7740321..0229b7b 100644
--- a/library/qlibrary_unix.cpp
+++ b/library/qlibrary_unix.cpp
@@ -1,132 +1,243 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "qlibrary_p.h" 21#include "qlibrary_p.h"
22 22
23#ifndef QT_NO_COMPONENT 23#ifndef QT_NO_COMPONENT
24 24
25/* 25/*
26 The platform dependent implementations of 26 The platform dependent implementations of
27 - loadLibrary 27 - loadLibrary
28 - freeLibrary 28 - freeLibrary
29 - resolveSymbol 29 - resolveSymbol
30 30
31 It's not too hard to guess what the functions do. 31 It's not too hard to guess what the functions do.
32*/ 32*/
33#if defined(Q_OS_HPUX) 33#if defined(Q_OS_HPUX)
34// for HP-UX < 11.x and 32 bit 34// for HP-UX < 11.x and 32 bit
35#include <dl.h> 35#include <dl.h>
36 36
37bool QLibraryPrivate::loadLibrary() 37bool QLibraryPrivate::loadLibrary()
38{ 38{
39 if ( pHnd ) 39 if ( pHnd )
40 return TRUE; 40 return TRUE;
41 41
42 QString filename = library->library(); 42 QString filename = library->library();
43 43
44 pHnd = (void*)shl_load( filename.latin1(), BIND_DEFERRED | BIND_NONFATAL | DYNAMIC_PATH, 0 ); 44 pHnd = (void*)shl_load( filename.latin1(), BIND_DEFERRED | BIND_NONFATAL | DYNAMIC_PATH, 0 );
45#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT) 45#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT)
46 if ( !pHnd ) 46 if ( !pHnd )
47 qDebug( "Failed to load library %s!", filename.latin1() ); 47 qDebug( "Failed to load library %s!", filename.latin1() );
48#endif 48#endif
49 return pHnd != 0; 49 return pHnd != 0;
50} 50}
51 51
52bool QLibraryPrivate::freeLibrary() 52bool QLibraryPrivate::freeLibrary()
53{ 53{
54 if ( !pHnd ) 54 if ( !pHnd )
55 return TRUE; 55 return TRUE;
56 56
57 if ( !shl_unload( (shl_t)pHnd ) ) { 57 if ( !shl_unload( (shl_t)pHnd ) ) {
58 pHnd = 0; 58 pHnd = 0;
59 return TRUE; 59 return TRUE;
60 } 60 }
61 return FALSE; 61 return FALSE;
62} 62}
63 63
64void* QLibraryPrivate::resolveSymbol( const char* symbol ) 64void* QLibraryPrivate::resolveSymbol( const char* symbol )
65{ 65{
66 if ( !pHnd ) 66 if ( !pHnd )
67 return 0; 67 return 0;
68 68
69 void* address = 0; 69 void* address = 0;
70 if ( shl_findsym( (shl_t*)&pHnd, symbol, TYPE_UNDEFINED, address ) < 0 ) { 70 if ( shl_findsym( (shl_t*)&pHnd, symbol, TYPE_UNDEFINED, address ) < 0 ) {
71#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT) 71#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT)
72 qDebug( "Couldn't resolve symbol \"%s\"", symbol ); 72 qDebug( "Couldn't resolve symbol \"%s\"", symbol );
73#endif 73#endif
74 return 0; 74 return 0;
75 } 75 }
76 return address; 76 return address;
77} 77}
78 78
79#else // Q_OS_HPUX 79#elif defined(_NULL_LIB_)
80
81bool QLibraryPrivate::loadLibrary()
82{
83 //qDebug("QLibraryPrivate::loadLibrary\n");
84 return FALSE;
85}
86bool QLibraryPrivate::freeLibrary()
87{
88 //qDebug("QLibraryPrivate::freeLibrary\n");
89 return FALSE;
90}
91void* QLibraryPrivate::resolveSymbol( const char* symbol )
92{
93 //qDebug("QLibraryPrivate::resolveSymbol\n");
94 return FALSE;
95}
96
97#elif defined(Q_OS_MACX)
98
99#define ENUM_DYLD_BOOL
100enum DYLD_BOOL {
101 DYLD_FALSE,
102 DYLD_TRUE
103};
104#include <mach-o/dyld.h>
105typedef struct {
106 NSObjectFileImage img;
107 NSModule mod;
108} DyldLibDesc;
109
110bool QLibraryPrivate::loadLibrary()
111{
112 // qDebug("QLibraryPrivate::loadLibrary\n");
113 // return FALSE;
114 if ( pHnd )
115 return TRUE;
116
117 QString filename = library->library();
118
119 NSObjectFileImage img = 0;
120 NSModule mod = 0;
121 NSObjectFileImageReturnCode ret = NSCreateObjectFileImageFromFile( filename.latin1() , &img );
122 if ( ret != NSObjectFileImageSuccess ) {
123 qWarning( "Error in NSCreateObjectFileImageFromFile(): %d; Filename: %s", ret, filename.latin1() );
124 if (ret == NSObjectFileImageAccess) {
125 qWarning ("(NSObjectFileImageAccess)" );
126 }
127 } else {
128 mod = NSLinkModule(img, filename.latin1(), NSLINKMODULE_OPTION_BINDNOW |
129 NSLINKMODULE_OPTION_PRIVATE |
130 NSLINKMODULE_OPTION_RETURN_ON_ERROR);
131 if (mod == 0) {
132 qWarning( "Error in NSLinkModule()" );
133 NSDestroyObjectFileImage(img);
134 }
135 }
136 DyldLibDesc* desc = 0;
137 if (img != 0 && mod != 0) {
138 desc = new DyldLibDesc;
139 desc->img = img;
140 desc->mod = mod;
141 }
142 pHnd = desc;
143 return pHnd != 0;
144}
145
146bool QLibraryPrivate::freeLibrary()
147{
148 //qDebug("QLibraryPrivate::freeLibrary\n");
149 //return FALSE;
150 if ( !pHnd )
151 return TRUE;
152
153 DyldLibDesc* desc = (DyldLibDesc*) pHnd;
154 NSModule mod = desc->mod;
155 NSObjectFileImage img = desc->img;
156 DYLD_BOOL success = NSUnLinkModule(mod, NSUNLINKMODULE_OPTION_NONE);
157 if ( success ) {
158 NSDestroyObjectFileImage(img);
159 delete desc;
160 pHnd = 0;
161 }
162#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT)
163 else {
164 qWarning( "Error in NSUnLinkModule(): %d", ret );
165 }
166#endif
167 return pHnd == 0;
168}
169
170void* QLibraryPrivate::resolveSymbol( const char* symbol )
171{
172 //qDebug("QLibraryPrivate::resolveSymbol\n");
173 //return FALSE;
174 if ( !pHnd )
175 return 0;
176
177 DyldLibDesc* desc = (DyldLibDesc*) pHnd;
178 NSSymbol sym = NSLookupSymbolInModule(desc->mod, symbol);
179 void* address = 0;
180 if (sym != 0) {
181 address = NSAddressOfSymbol(sym);
182 }
183#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT)
184 if ( address == 0 )
185 qWarning( "Cannot find symbol: %s", symbol );
186#endif
187 return address;
188}
189
190#else
80// Something else, assuming POSIX 191// Something else, assuming POSIX
81#include <dlfcn.h> 192#include <dlfcn.h>
82 193
83bool QLibraryPrivate::loadLibrary() 194bool QLibraryPrivate::loadLibrary()
84{ 195{
85 if ( pHnd ) 196 if ( pHnd )
86 return TRUE; 197 return TRUE;
87 198
88 QString filename = library->library(); 199 QString filename = library->library();
89 200
90 pHnd = dlopen( filename.latin1() , RTLD_LAZY ); 201 pHnd = dlopen( filename.latin1() , RTLD_LAZY );
91#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT) 202#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT)
92 if ( !pHnd ) 203 if ( !pHnd )
93 qWarning( "%s", dlerror() ); 204 qWarning( "%s", dlerror() );
94#endif 205#endif
95 return pHnd != 0; 206 return pHnd != 0;
96} 207}
97 208
98bool QLibraryPrivate::freeLibrary() 209bool QLibraryPrivate::freeLibrary()
99{ 210{
100 if ( !pHnd ) 211 if ( !pHnd )
101 return TRUE; 212 return TRUE;
102 213
103 int ec = dlclose( pHnd ); 214 int ec = dlclose( pHnd );
104 if ( !ec ) 215 if ( !ec )
105 pHnd = 0; 216 pHnd = 0;
106#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT) 217#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT)
107 else { 218 else {
108 const char* error = dlerror(); 219 const char* error = dlerror();
109 if ( error ) 220 if ( error )
110 qWarning( "%s", error ); 221 qWarning( "%s", error );
111 } 222 }
112#endif 223#endif
113 return pHnd == 0; 224 return pHnd == 0;
114} 225}
115 226
116void* QLibraryPrivate::resolveSymbol( const char* f ) 227void* QLibraryPrivate::resolveSymbol( const char* f )
117{ 228{
118 if ( !pHnd ) 229 if ( !pHnd )
119 return 0; 230 return 0;
120 231
121 void* address = dlsym( pHnd, f ); 232 void* address = dlsym( pHnd, f );
122#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT) 233#if defined(QT_DEBUG) || defined(QT_DEBUG_COMPONENT)
123 const char* error = dlerror(); 234 const char* error = dlerror();
124 if ( error ) 235 if ( error )
125 qWarning( "%s", error ); 236 qWarning( "%s", error );
126#endif 237#endif
127 return address; 238 return address;
128} 239}
129 240
130#endif // POSIX 241#endif // POSIX
131 242
132#endif // QT_NO_COMPONENT 243#endif // QT_NO_COMPONENT
diff --git a/library/qpeapplication.cpp b/library/qpeapplication.cpp
index d4734ae..a97efc0 100644
--- a/library/qpeapplication.cpp
+++ b/library/qpeapplication.cpp
@@ -1,604 +1,623 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19*/ 19*/
20#define QTOPIA_INTERNAL_LANGLIST 20#define QTOPIA_INTERNAL_LANGLIST
21#include <stdlib.h> 21#include <stdlib.h>
22#include <unistd.h> 22#include <unistd.h>
23#ifndef Q_OS_MACX
23#include <linux/limits.h> // needed for some toolchains (PATH_MAX) 24#include <linux/limits.h> // needed for some toolchains (PATH_MAX)
25#endif
24#include <qfile.h> 26#include <qfile.h>
25#include <qqueue.h> 27#include <qqueue.h>
26#ifdef Q_WS_QWS 28#ifdef Q_WS_QWS
27#ifndef QT_NO_COP 29#ifndef QT_NO_COP
28#if QT_VERSION <= 231 30#if QT_VERSION <= 231
29#define private public 31#define private public
30#define sendLocally processEvent 32#define sendLocally processEvent
31#include "qcopenvelope_qws.h" 33#include "qcopenvelope_qws.h"
32#undef private 34#undef private
33#else 35#else
34#include "qcopenvelope_qws.h" 36#include "qcopenvelope_qws.h"
35#endif 37#endif
36#endif 38#endif
37#include <qwindowsystem_qws.h> 39#include <qwindowsystem_qws.h>
38#endif 40#endif
39#include <qtextstream.h> 41#include <qtextstream.h>
40#include <qpalette.h> 42#include <qpalette.h>
41#include <qbuffer.h> 43#include <qbuffer.h>
42#include <qptrdict.h> 44#include <qptrdict.h>
43#include <qregexp.h> 45#include <qregexp.h>
44#include <qdir.h> 46#include <qdir.h>
45#include <qlabel.h> 47#include <qlabel.h>
46#include <qdialog.h> 48#include <qdialog.h>
47#include <qdragobject.h> 49#include <qdragobject.h>
48#include <qtextcodec.h> 50#include <qtextcodec.h>
49#include <qevent.h> 51#include <qevent.h>
50#include <qtooltip.h> 52#include <qtooltip.h>
51#include <qsignal.h> 53#include <qsignal.h>
52#include <qmainwindow.h> 54#include <qmainwindow.h>
53#include <qwidgetlist.h> 55#include <qwidgetlist.h>
54#include <qpixmapcache.h> 56#include <qpixmapcache.h>
55 57
56#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 58#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
57#define QTOPIA_INTERNAL_INITAPP 59#define QTOPIA_INTERNAL_INITAPP
58#include "qpeapplication.h" 60#include "qpeapplication.h"
59#include "qpestyle.h" 61#include "qpestyle.h"
60#include "styleinterface.h" 62#include "styleinterface.h"
61#if QT_VERSION >= 300 63#if QT_VERSION >= 300
62#include <qstylefactory.h> 64#include <qstylefactory.h>
63#else 65#else
64#include <qplatinumstyle.h> 66#include <qplatinumstyle.h>
65#include <qwindowsstyle.h> 67#include <qwindowsstyle.h>
66#include <qmotifstyle.h> 68#include <qmotifstyle.h>
67#include <qmotifplusstyle.h> 69#include <qmotifplusstyle.h>
68#include "lightstyle.h" 70#include "lightstyle.h"
69 71
70#include <qpe/qlibrary.h> 72#include <qpe/qlibrary.h>
71#endif 73#endif
72#include "global.h" 74#include "global.h"
73#include "resource.h" 75#include "resource.h"
74#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 76#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
75#include "qutfcodec.h" 77#include "qutfcodec.h"
76#endif 78#endif
77#include "config.h" 79#include "config.h"
78#include "network.h" 80#include "network.h"
79#ifdef QWS 81#ifdef QWS
80#include "fontmanager.h" 82#include "fontmanager.h"
81#endif 83#endif
82 84
83#include "alarmserver.h" 85#include "alarmserver.h"
84#include "applnk.h" 86#include "applnk.h"
85#include "qpemenubar.h" 87#include "qpemenubar.h"
86#include "textcodecinterface.h" 88#include "textcodecinterface.h"
87#include "imagecodecinterface.h" 89#include "imagecodecinterface.h"
88 90
89#include <unistd.h> 91#include <unistd.h>
90#include <sys/file.h> 92#include <sys/file.h>
91#include <sys/ioctl.h> 93#include <sys/ioctl.h>
94#ifndef QT_NO_SOUND
92#include <sys/soundcard.h> 95#include <sys/soundcard.h>
93 96#endif
94#include "qt_override_p.h" 97#include "qt_override_p.h"
95 98
96 99
97class QPEApplicationData 100class QPEApplicationData
98{ 101{
99public: 102public:
100 QPEApplicationData ( ) 103 QPEApplicationData ( )
101 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ), 104 : presstimer( 0 ), presswidget( 0 ), rightpressed( false ), kbgrabbed( false ),
102 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ), 105 notbusysent( false ), preloaded( false ), forceshow( false ), nomaximize( false ),
103 keep_running( true ), qcopQok( false ), qpe_main_widget( 0 ) 106 keep_running( true ), qcopQok( false ), qpe_main_widget( 0 )
104 107
105 {} 108 {}
106 109
107 int presstimer; 110 int presstimer;
108 QWidget* presswidget; 111 QWidget* presswidget;
109 QPoint presspos; 112 QPoint presspos;
110 113
111 bool rightpressed : 1; 114 bool rightpressed : 1;
112 bool kbgrabbed : 1; 115 bool kbgrabbed : 1;
113 bool notbusysent : 1; 116 bool notbusysent : 1;
114 bool preloaded : 1; 117 bool preloaded : 1;
115 bool forceshow : 1; 118 bool forceshow : 1;
116 bool nomaximize : 1; 119 bool nomaximize : 1;
117 bool keep_running : 1; 120 bool keep_running : 1;
118 bool qcopQok : 1; 121 bool qcopQok : 1;
119 122
120 123
121 QStringList langs; 124 QStringList langs;
122 QString appName; 125 QString appName;
123 struct QCopRec 126 struct QCopRec
124 { 127 {
125 QCopRec( const QCString &ch, const QCString &msg, 128 QCopRec( const QCString &ch, const QCString &msg,
126 const QByteArray &d ) : 129 const QByteArray &d ) :
127 channel( ch ), message( msg ), data( d ) 130 channel( ch ), message( msg ), data( d )
128 { } 131 { }
129 132
130 QCString channel; 133 QCString channel;
131 QCString message; 134 QCString message;
132 QByteArray data; 135 QByteArray data;
133 }; 136 };
134 QWidget* qpe_main_widget; 137 QWidget* qpe_main_widget;
135 QGuardedPtr<QWidget> lastraised; 138 QGuardedPtr<QWidget> lastraised;
136 QQueue<QCopRec> qcopq; 139 QQueue<QCopRec> qcopq;
137 QString styleName; 140 QString styleName;
138 QString decorationName; 141 QString decorationName;
139 142
140 void enqueueQCop( const QCString &ch, const QCString &msg, 143 void enqueueQCop( const QCString &ch, const QCString &msg,
141 const QByteArray &data ) 144 const QByteArray &data )
142 { 145 {
143 qcopq.enqueue( new QCopRec( ch, msg, data ) ); 146 qcopq.enqueue( new QCopRec( ch, msg, data ) );
144 } 147 }
145 void sendQCopQ() 148 void sendQCopQ()
146 { 149 {
147 if (!qcopQok ) 150 if (!qcopQok )
148 return; 151 return;
149 152
150 QCopRec * r; 153 QCopRec * r;
151 154
152 while((r=qcopq.dequeue())) { 155 while((r=qcopq.dequeue())) {
153 // remove from queue before sending... 156 // remove from queue before sending...
154 // event loop can come around again before getting 157 // event loop can come around again before getting
155 // back from sendLocally 158 // back from sendLocally
156#ifndef QT_NO_COP 159#ifndef QT_NO_COP
157 QCopChannel::sendLocally( r->channel, r->message, r->data ); 160 QCopChannel::sendLocally( r->channel, r->message, r->data );
158#endif 161#endif
159 162
160 delete r; 163 delete r;
161 } 164 }
162 } 165 }
163 static void show_mx(QWidget* mw, bool nomaximize, const QString & = QString::null ) 166 static void show_mx(QWidget* mw, bool nomaximize, const QString & = QString::null )
164 { 167 {
165 168
166 // ugly hack, remove that later after finding a sane solution 169 // ugly hack, remove that later after finding a sane solution
167 // Addendum: Only Sharp currently has models with high resolution but (physically) small displays, 170 // Addendum: Only Sharp currently has models with high resolution but (physically) small displays,
168 // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has 171 // so this is only useful if QT_QWS_SIMPAD is NOT defined. E.g. SIMpad has 800x600 but has
169 // a (physically) large enough display to use the small icons 172 // a (physically) large enough display to use the small icons
170#if defined(OPIE_HIGH_RES_SMALL_PHY) 173#if defined(OPIE_HIGH_RES_SMALL_PHY)
171 if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) { 174 if ( QPEApplication::desktop() ->width() >= 600 && ( mw->inherits("QMainWindow") || mw->isA("QMainWindow") ) ) {
172 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true ); 175 ( ( QMainWindow* ) mw )->setUsesBigPixmaps( true );
173 } 176 }
174#endif 177#endif
175 178
176 if ( mw->layout() && mw->inherits("QDialog") ) { 179 if ( mw->layout() && mw->inherits("QDialog") ) {
177 QPEApplication::showDialog((QDialog*)mw, nomaximize); 180 QPEApplication::showDialog((QDialog*)mw, nomaximize);
178 } 181 }
179 else { 182 else {
180#ifdef Q_WS_QWS 183#ifdef Q_WS_QWS
181 if ( !nomaximize ) 184 if ( !nomaximize )
182 mw->showMaximized(); 185 mw->showMaximized();
183 else 186 else
184#endif 187#endif
185 188
186 mw->show(); 189 mw->show();
187 } 190 }
188 } 191 }
189 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ ) 192 static bool setWidgetCaptionFromAppName( QWidget* /*mw*/, const QString& /*appName*/, const QString& /*appsPath*/ )
190 { 193 {
191 /* 194 /*
192 // This works but disable it for now until it is safe to apply 195 // This works but disable it for now until it is safe to apply
193 // What is does is scan the .desktop files of all the apps for 196 // What is does is scan the .desktop files of all the apps for
194 // the applnk that has the corresponding argv[0] as this program 197 // the applnk that has the corresponding argv[0] as this program
195 // then it uses the name stored in the .desktop file as the caption 198 // then it uses the name stored in the .desktop file as the caption
196 // for the main widget. This saves duplicating translations for 199 // for the main widget. This saves duplicating translations for
197 // the app name in the program and in the .desktop files. 200 // the app name in the program and in the .desktop files.
198 201
199 AppLnkSet apps( appsPath ); 202 AppLnkSet apps( appsPath );
200 203
201 QList<AppLnk> appsList = apps.children(); 204 QList<AppLnk> appsList = apps.children();
202 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) { 205 for ( QListIterator<AppLnk> it(appsList); it.current(); ++it ) {
203 if ( (*it)->exec() == appName ) { 206 if ( (*it)->exec() == appName ) {
204 mw->setCaption( (*it)->name() ); 207 mw->setCaption( (*it)->name() );
205 return TRUE; 208 return TRUE;
206 } 209 }
207 } 210 }
208 */ 211 */
209 return FALSE; 212 return FALSE;
210 } 213 }
211 214
212 215
213 void show(QWidget* mw, bool nomax) 216 void show(QWidget* mw, bool nomax)
214 { 217 {
215 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" ); 218 setWidgetCaptionFromAppName( mw, appName, QPEApplication::qpeDir() + "apps" );
216 nomaximize = nomax; 219 nomaximize = nomax;
217 qpe_main_widget = mw; 220 qpe_main_widget = mw;
218 qcopQok = TRUE; 221 qcopQok = TRUE;
219#ifndef QT_NO_COP 222#ifndef QT_NO_COP
220 223
221 sendQCopQ(); 224 sendQCopQ();
222#endif 225#endif
223 226
224 if ( preloaded ) { 227 if ( preloaded ) {
225 if (forceshow) 228 if (forceshow)
226 show_mx(mw, nomax); 229 show_mx(mw, nomax);
227 } 230 }
228 else if ( keep_running ) { 231 else if ( keep_running ) {
229 show_mx(mw, nomax); 232 show_mx(mw, nomax);
230 } 233 }
231 } 234 }
232 235
233 void loadTextCodecs() 236 void loadTextCodecs()
234 { 237 {
235 QString path = QPEApplication::qpeDir() + "/plugins/textcodecs"; 238 QString path = QPEApplication::qpeDir() + "/plugins/textcodecs";
239#ifdef Q_OS_MACX
240 QDir dir( path, "lib*.dylib" );
241#else
236 QDir dir( path, "lib*.so" ); 242 QDir dir( path, "lib*.so" );
243#endif
237 QStringList list; 244 QStringList list;
238 if ( dir. exists ( )) 245 if ( dir. exists ( ))
239 list = dir.entryList(); 246 list = dir.entryList();
240 QStringList::Iterator it; 247 QStringList::Iterator it;
241 for ( it = list.begin(); it != list.end(); ++it ) { 248 for ( it = list.begin(); it != list.end(); ++it ) {
242 TextCodecInterface *iface = 0; 249 TextCodecInterface *iface = 0;
243 QLibrary *lib = new QLibrary( path + "/" + *it ); 250 QLibrary *lib = new QLibrary( path + "/" + *it );
244 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 251 if ( lib->queryInterface( IID_QtopiaTextCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
245 QValueList<int> mibs = iface->mibEnums(); 252 QValueList<int> mibs = iface->mibEnums();
246 for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) { 253 for (QValueList<int>::ConstIterator i = mibs.begin(); i != mibs.end(); ++i) {
247 (void)iface->createForMib(*i); 254 (void)iface->createForMib(*i);
248 // ### it exists now; need to remember if we can delete it 255 // ### it exists now; need to remember if we can delete it
249 } 256 }
250 } 257 }
251 else { 258 else {
252 lib->unload(); 259 lib->unload();
253 delete lib; 260 delete lib;
254 } 261 }
255 } 262 }
256 } 263 }
257 264
258 void loadImageCodecs() 265 void loadImageCodecs()
259 { 266 {
260 QString path = QPEApplication::qpeDir() + "/plugins/imagecodecs"; 267 QString path = QPEApplication::qpeDir() + "/plugins/imagecodecs";
268#ifdef Q_OS_MACX
269 QDir dir( path, "lib*.dylib" );
270#else
261 QDir dir( path, "lib*.so" ); 271 QDir dir( path, "lib*.so" );
272#endif
262 QStringList list; 273 QStringList list;
263 if ( dir. exists ( )) 274 if ( dir. exists ( ))
264 list = dir.entryList(); 275 list = dir.entryList();
265 QStringList::Iterator it; 276 QStringList::Iterator it;
266 for ( it = list.begin(); it != list.end(); ++it ) { 277 for ( it = list.begin(); it != list.end(); ++it ) {
267 ImageCodecInterface *iface = 0; 278 ImageCodecInterface *iface = 0;
268 QLibrary *lib = new QLibrary( path + "/" + *it ); 279 QLibrary *lib = new QLibrary( path + "/" + *it );
269 if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 280 if ( lib->queryInterface( IID_QtopiaImageCodec, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
270 QStringList formats = iface->keys(); 281 QStringList formats = iface->keys();
271 for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) { 282 for (QStringList::ConstIterator i = formats.begin(); i != formats.end(); ++i) {
272 (void)iface->installIOHandler(*i); 283 (void)iface->installIOHandler(*i);
273 // ### it exists now; need to remember if we can delete it 284 // ### it exists now; need to remember if we can delete it
274 } 285 }
275 } 286 }
276 else { 287 else {
277 lib->unload(); 288 lib->unload();
278 delete lib; 289 delete lib;
279 } 290 }
280 } 291 }
281 } 292 }
282}; 293};
283 294
284class ResourceMimeFactory : public QMimeSourceFactory 295class ResourceMimeFactory : public QMimeSourceFactory
285{ 296{
286public: 297public:
287 ResourceMimeFactory() : resImage( 0 ) 298 ResourceMimeFactory() : resImage( 0 )
288 { 299 {
289 setFilePath( Global::helpPath() ); 300 setFilePath( Global::helpPath() );
290 setExtensionType( "html", "text/html;charset=UTF-8" ); 301 setExtensionType( "html", "text/html;charset=UTF-8" );
291 } 302 }
292 ~ResourceMimeFactory() { 303 ~ResourceMimeFactory() {
293 delete resImage; 304 delete resImage;
294 } 305 }
295 306
296 const QMimeSource* data( const QString& abs_name ) const 307 const QMimeSource* data( const QString& abs_name ) const
297 { 308 {
298 const QMimeSource * r = QMimeSourceFactory::data( abs_name ); 309 const QMimeSource * r = QMimeSourceFactory::data( abs_name );
299 if ( !r ) { 310 if ( !r ) {
300 int sl = abs_name.length(); 311 int sl = abs_name.length();
301 do { 312 do {
302 sl = abs_name.findRev( '/', sl - 1 ); 313 sl = abs_name.findRev( '/', sl - 1 );
303 QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name; 314 QString name = sl >= 0 ? abs_name.mid( sl + 1 ) : abs_name;
304 int dot = name.findRev( '.' ); 315 int dot = name.findRev( '.' );
305 if ( dot >= 0 ) 316 if ( dot >= 0 )
306 name = name.left( dot ); 317 name = name.left( dot );
307 QImage img = Resource::loadImage( name ); 318 QImage img = Resource::loadImage( name );
308 if ( !img.isNull() ) { 319 if ( !img.isNull() ) {
309 delete resImage; 320 delete resImage;
310 resImage = new QImageDrag( img ); 321 resImage = new QImageDrag( img );
311 r = resImage; 322 r = resImage;
312 } 323 }
313 } 324 }
314 while ( !r && sl > 0 ); 325 while ( !r && sl > 0 );
315 } 326 }
316 return r; 327 return r;
317 } 328 }
318private: 329private:
319 mutable QImageDrag *resImage; 330 mutable QImageDrag *resImage;
320}; 331};
321 332
322static int& hack(int& i) 333static int& hack(int& i)
323{ 334{
324#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 335#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
325 // These should be created, but aren't in Qt 2.3.0 336 // These should be created, but aren't in Qt 2.3.0
326 (void)new QUtf8Codec; 337 (void)new QUtf8Codec;
327 (void)new QUtf16Codec; 338 (void)new QUtf16Codec;
328#endif 339#endif
329 return i; 340 return i;
330} 341}
331 342
332static int muted = 0; 343static int muted = 0;
333static int micMuted = 0; 344static int micMuted = 0;
334 345
335static void setVolume( int t = 0, int percent = -1 ) 346static void setVolume( int t = 0, int percent = -1 )
336{ 347{
337 switch ( t ) { 348 switch ( t ) {
338 case 0: { 349 case 0: {
339 Config cfg( "qpe" ); 350 Config cfg( "qpe" );
340 cfg.setGroup( "Volume" ); 351 cfg.setGroup( "Volume" );
341 if ( percent < 0 ) 352 if ( percent < 0 )
342 percent = cfg.readNumEntry( "VolumePercent", 50 ); 353 percent = cfg.readNumEntry( "VolumePercent", 50 );
354#ifndef QT_NO_SOUND
343 int fd = 0; 355 int fd = 0;
344 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 356 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
345 int vol = muted ? 0 : percent; 357 int vol = muted ? 0 : percent;
346 // set both channels to same volume 358 // set both channels to same volume
347 vol |= vol << 8; 359 vol |= vol << 8;
348 ioctl( fd, MIXER_WRITE( 0 ), &vol ); 360 ioctl( fd, MIXER_WRITE( 0 ), &vol );
349 ::close( fd ); 361 ::close( fd );
350 } 362 }
363#endif
351 } 364 }
352 break; 365 break;
353 } 366 }
354} 367}
355 368
356static void setMic( int t = 0, int percent = -1 ) 369static void setMic( int t = 0, int percent = -1 )
357{ 370{
358 switch ( t ) { 371 switch ( t ) {
359 case 0: { 372 case 0: {
360 Config cfg( "qpe" ); 373 Config cfg( "qpe" );
361 cfg.setGroup( "Volume" ); 374 cfg.setGroup( "Volume" );
362 if ( percent < 0 ) 375 if ( percent < 0 )
363 percent = cfg.readNumEntry( "Mic", 50 ); 376 percent = cfg.readNumEntry( "Mic", 50 );
364 377
378#ifndef QT_NO_SOUND
365 int fd = 0; 379 int fd = 0;
366 int mic = micMuted ? 0 : percent; 380 int mic = micMuted ? 0 : percent;
367 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 381 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
368 ioctl( fd, MIXER_WRITE( SOUND_MIXER_MIC ), &mic ); 382 ioctl( fd, MIXER_WRITE( SOUND_MIXER_MIC ), &mic );
369 ::close( fd ); 383 ::close( fd );
370 } 384 }
385#endif
371 } 386 }
372 break; 387 break;
373 } 388 }
374} 389}
375 390
376 391
377static void setBass( int t = 0, int percent = -1 ) 392static void setBass( int t = 0, int percent = -1 )
378{ 393{
379 switch ( t ) { 394 switch ( t ) {
380 case 0: { 395 case 0: {
381 Config cfg( "qpe" ); 396 Config cfg( "qpe" );
382 cfg.setGroup( "Volume" ); 397 cfg.setGroup( "Volume" );
383 if ( percent < 0 ) 398 if ( percent < 0 )
384 percent = cfg.readNumEntry( "BassPercent", 50 ); 399 percent = cfg.readNumEntry( "BassPercent", 50 );
385 400
401#ifndef QT_NO_SOUND
386 int fd = 0; 402 int fd = 0;
387 int bass = percent; 403 int bass = percent;
388 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 404 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
389 ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass ); 405 ioctl( fd, MIXER_WRITE( SOUND_MIXER_BASS ), &bass );
390 ::close( fd ); 406 ::close( fd );
391 } 407 }
408#endif
392 } 409 }
393 break; 410 break;
394 } 411 }
395} 412}
396 413
397 414
398static void setTreble( int t = 0, int percent = -1 ) 415static void setTreble( int t = 0, int percent = -1 )
399{ 416{
400 switch ( t ) { 417 switch ( t ) {
401 case 0: { 418 case 0: {
402 Config cfg( "qpe" ); 419 Config cfg( "qpe" );
403 cfg.setGroup( "Volume" ); 420 cfg.setGroup( "Volume" );
404 if ( percent < 0 ) 421 if ( percent < 0 )
405 percent = cfg.readNumEntry( "TreblePercent", 50 ); 422 percent = cfg.readNumEntry( "TreblePercent", 50 );
406 423
424#ifndef QT_NO_SOUND
407 int fd = 0; 425 int fd = 0;
408 int treble = percent; 426 int treble = percent;
409 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) { 427 if ( ( fd = open( "/dev/mixer", O_RDWR ) ) >= 0 ) {
410 ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble ); 428 ioctl( fd, MIXER_WRITE( SOUND_MIXER_TREBLE ), &treble );
411 ::close( fd ); 429 ::close( fd );
412 } 430 }
431#endif
413 } 432 }
414 break; 433 break;
415 } 434 }
416} 435}
417 436
418 437
419/*! 438/*!
420 \class QPEApplication qpeapplication.h 439 \class QPEApplication qpeapplication.h
421 \brief The QPEApplication class implements various system services 440 \brief The QPEApplication class implements various system services
422 that are available to all Qtopia applications. 441 that are available to all Qtopia applications.
423 442
424 Simply by using QPEApplication instead of QApplication, a standard Qt 443 Simply by using QPEApplication instead of QApplication, a standard Qt
425 application becomes a Qtopia application. It automatically follows 444 application becomes a Qtopia application. It automatically follows
426 style changes, quits and raises, and in the 445 style changes, quits and raises, and in the
427 case of \link docwidget.html document-oriented\endlink applications, 446 case of \link docwidget.html document-oriented\endlink applications,
428 changes the currently displayed document in response to the environment. 447 changes the currently displayed document in response to the environment.
429 448
430 To create a \link docwidget.html document-oriented\endlink 449 To create a \link docwidget.html document-oriented\endlink
431 application use showMainDocumentWidget(); to create a 450 application use showMainDocumentWidget(); to create a
432 non-document-oriented application use showMainWidget(). The 451 non-document-oriented application use showMainWidget(). The
433 keepRunning() function indicates whether the application will 452 keepRunning() function indicates whether the application will
434 continue running after it's processed the last \link qcop.html 453 continue running after it's processed the last \link qcop.html
435 QCop\endlink message. This can be changed using setKeepRunning(). 454 QCop\endlink message. This can be changed using setKeepRunning().
436 455
437 A variety of signals are emitted when certain events occur, for 456 A variety of signals are emitted when certain events occur, for
438 example, timeChanged(), clockChanged(), weekChanged(), 457 example, timeChanged(), clockChanged(), weekChanged(),
439 dateFormatChanged() and volumeChanged(). If the application receives 458 dateFormatChanged() and volumeChanged(). If the application receives
440 a \link qcop.html QCop\endlink message on the application's 459 a \link qcop.html QCop\endlink message on the application's
441 QPE/Application/\e{appname} channel, the appMessage() signal is 460 QPE/Application/\e{appname} channel, the appMessage() signal is
442 emitted. There are also flush() and reload() signals, which 461 emitted. There are also flush() and reload() signals, which
443 are emitted when synching begins and ends respectively - upon these 462 are emitted when synching begins and ends respectively - upon these
444 signals, the application should save and reload any data 463 signals, the application should save and reload any data
445 files that are involved in synching. Most of these signals will initially 464 files that are involved in synching. Most of these signals will initially
446 be received and unfiltered through the appMessage() signal. 465 be received and unfiltered through the appMessage() signal.
447 466
448 This class also provides a set of useful static functions. The 467 This class also provides a set of useful static functions. The
449 qpeDir() and documentDir() functions return the respective paths. 468 qpeDir() and documentDir() functions return the respective paths.
450 The grabKeyboard() and ungrabKeyboard() functions are used to 469 The grabKeyboard() and ungrabKeyboard() functions are used to
451 control whether the application takes control of the device's 470 control whether the application takes control of the device's
452 physical buttons (e.g. application launch keys). The stylus' mode of 471 physical buttons (e.g. application launch keys). The stylus' mode of
453 operation is set with setStylusOperation() and retrieved with 472 operation is set with setStylusOperation() and retrieved with
454 stylusOperation(). There are also setInputMethodHint() and 473 stylusOperation(). There are also setInputMethodHint() and
455 inputMethodHint() functions. 474 inputMethodHint() functions.
456 475
457 \ingroup qtopiaemb 476 \ingroup qtopiaemb
458*/ 477*/
459 478
460/*! 479/*!
461 \fn void QPEApplication::clientMoused() 480 \fn void QPEApplication::clientMoused()
462 481
463 \internal 482 \internal
464*/ 483*/
465 484
466/*! 485/*!
467 \fn void QPEApplication::timeChanged(); 486 \fn void QPEApplication::timeChanged();
468 This signal is emitted when the time changes outside the normal 487 This signal is emitted when the time changes outside the normal
469 passage of time, i.e. if the time is set backwards or forwards. 488 passage of time, i.e. if the time is set backwards or forwards.
470*/ 489*/
471 490
472/*! 491/*!
473 \fn void QPEApplication::clockChanged( bool ampm ); 492 \fn void QPEApplication::clockChanged( bool ampm );
474 493
475 This signal is emitted when the user changes the clock's style. If 494 This signal is emitted when the user changes the clock's style. If
476 \a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise, 495 \a ampm is TRUE, the user wants a 12-hour AM/PM clock, otherwise,
477 they want a 24-hour clock. 496 they want a 24-hour clock.
478*/ 497*/
479 498
480/*! 499/*!
481 \fn void QPEApplication::volumeChanged( bool muted ) 500 \fn void QPEApplication::volumeChanged( bool muted )
482 501
483 This signal is emitted whenever the mute state is changed. If \a 502 This signal is emitted whenever the mute state is changed. If \a
484 muted is TRUE, then sound output has been muted. 503 muted is TRUE, then sound output has been muted.
485*/ 504*/
486 505
487/*! 506/*!
488 \fn void QPEApplication::weekChanged( bool startOnMonday ) 507 \fn void QPEApplication::weekChanged( bool startOnMonday )
489 508
490 This signal is emitted if the week start day is changed. If \a 509 This signal is emitted if the week start day is changed. If \a
491 startOnMonday is TRUE then the first day of the week is Monday; if 510 startOnMonday is TRUE then the first day of the week is Monday; if
492 \a startOnMonday is FALSE then the first day of the week is 511 \a startOnMonday is FALSE then the first day of the week is
493 Sunday. 512 Sunday.
494*/ 513*/
495 514
496/*! 515/*!
497 \fn void QPEApplication::dateFormatChanged(DateFormat) 516 \fn void QPEApplication::dateFormatChanged(DateFormat)
498 517
499 This signal is emitted whenever the date format is changed. 518 This signal is emitted whenever the date format is changed.
500*/ 519*/
501 520
502/*! 521/*!
503 \fn void QPEApplication::flush() 522 \fn void QPEApplication::flush()
504 523
505 ### 524 ###
506*/ 525*/
507 526
508/*! 527/*!
509 \fn void QPEApplication::reload() 528 \fn void QPEApplication::reload()
510 529
511*/ 530*/
512 531
513 532
514 533
515void QPEApplication::processQCopFile() 534void QPEApplication::processQCopFile()
516{ 535{
517 QString qcopfn("/tmp/qcop-msg-"); 536 QString qcopfn("/tmp/qcop-msg-");
518 qcopfn += d->appName; // append command name 537 qcopfn += d->appName; // append command name
519 538
520 QFile f(qcopfn); 539 QFile f(qcopfn);
521 if ( f.open(IO_ReadWrite) ) { 540 if ( f.open(IO_ReadWrite) ) {
522#ifndef Q_OS_WIN32 541#ifndef Q_OS_WIN32
523 flock(f.handle(), LOCK_EX); 542 flock(f.handle(), LOCK_EX);
524#endif 543#endif
525 QDataStream ds(&f); 544 QDataStream ds(&f);
526 QCString channel, message; 545 QCString channel, message;
527 QByteArray data; 546 QByteArray data;
528 while(!ds.atEnd()) { 547 while(!ds.atEnd()) {
529 ds >> channel >> message >> data; 548 ds >> channel >> message >> data;
530 d->enqueueQCop(channel,message,data); 549 d->enqueueQCop(channel,message,data);
531 } 550 }
532 ::ftruncate(f.handle(), 0); 551 ::ftruncate(f.handle(), 0);
533#ifndef Q_OS_WIN32 552#ifndef Q_OS_WIN32
534 f.flush(); 553 f.flush();
535 flock(f.handle(), LOCK_UN); 554 flock(f.handle(), LOCK_UN);
536#endif 555#endif
537 } 556 }
538#endif 557#endif
539} 558}
540 559
541 560
542/*! 561/*!
543 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data ) 562 \fn void QPEApplication::appMessage( const QCString& msg, const QByteArray& data )
544 563
545 This signal is emitted when a message is received on this 564 This signal is emitted when a message is received on this
546 application's QPE/Application/<i>appname</i> \link qcop.html 565 application's QPE/Application/<i>appname</i> \link qcop.html
547 QCop\endlink channel. 566 QCop\endlink channel.
548 567
549 The slot to which you connect this signal uses \a msg and \a data 568 The slot to which you connect this signal uses \a msg and \a data
550 in the following way: 569 in the following way:
551 570
552\code 571\code
553 void MyWidget::receive( const QCString& msg, const QByteArray& data ) 572 void MyWidget::receive( const QCString& msg, const QByteArray& data )
554 { 573 {
555 QDataStream stream( data, IO_ReadOnly ); 574 QDataStream stream( data, IO_ReadOnly );
556 if ( msg == "someMessage(int,int,int)" ) { 575 if ( msg == "someMessage(int,int,int)" ) {
557 int a,b,c; 576 int a,b,c;
558 stream >> a >> b >> c; 577 stream >> a >> b >> c;
559 ... 578 ...
560 } else if ( msg == "otherMessage(QString)" ) { 579 } else if ( msg == "otherMessage(QString)" ) {
561 ... 580 ...
562 } 581 }
563 } 582 }
564\endcode 583\endcode
565 584
566 \sa qcop.html 585 \sa qcop.html
567 Note that messages received here may be processed by qpe application 586 Note that messages received here may be processed by qpe application
568 and emitted as signals, such as flush() and reload(). 587 and emitted as signals, such as flush() and reload().
569*/ 588*/
570 589
571/*! 590/*!
572 Constructs a QPEApplication just as you would construct 591 Constructs a QPEApplication just as you would construct
573 a QApplication, passing \a argc, \a argv, and \a t. 592 a QApplication, passing \a argc, \a argv, and \a t.
574 593
575 For applications, \a t should be the default, GuiClient. Only 594 For applications, \a t should be the default, GuiClient. Only
576 the Qtopia server passes GuiServer. 595 the Qtopia server passes GuiServer.
577*/ 596*/
578QPEApplication::QPEApplication( int & argc, char **argv, Type t ) 597QPEApplication::QPEApplication( int & argc, char **argv, Type t )
579 : QApplication( hack(argc), argv, t ), pidChannel( 0 ) 598 : QApplication( hack(argc), argv, t ), pidChannel( 0 )
580{ 599{
581 QPixmapCache::setCacheLimit(256); // sensible default for smaller devices. 600 QPixmapCache::setCacheLimit(256); // sensible default for smaller devices.
582 601
583 d = new QPEApplicationData; 602 d = new QPEApplicationData;
584 d->loadTextCodecs(); 603 d->loadTextCodecs();
585 d->loadImageCodecs(); 604 d->loadImageCodecs();
586 int dw = desktop() ->width(); 605 int dw = desktop() ->width();
587 606
588 if ( dw < 200 ) { 607 if ( dw < 200 ) {
589 setFont( QFont( "vera", 8 ) ); 608 setFont( QFont( "vera", 8 ) );
590 AppLnk::setSmallIconSize( 10 ); 609 AppLnk::setSmallIconSize( 10 );
591 AppLnk::setBigIconSize( 28 ); 610 AppLnk::setBigIconSize( 28 );
592 } 611 }
593#if defined(OPIE_HIGH_RES_SMALL_PHY) 612#if defined(OPIE_HIGH_RES_SMALL_PHY)
594 else if ( dw > 600 ) { 613 else if ( dw > 600 ) {
595 setFont( QFont( "vera", 16 ) ); 614 setFont( QFont( "vera", 16 ) );
596 AppLnk::setSmallIconSize( 24 ); 615 AppLnk::setSmallIconSize( 24 );
597 AppLnk::setBigIconSize( 48 ); 616 AppLnk::setBigIconSize( 48 );
598 } 617 }
599#endif 618#endif
600 else if ( dw > 200 ) { 619 else if ( dw > 200 ) {
601 setFont( QFont( "vera", 10 ) ); 620 setFont( QFont( "vera", 10 ) );
602 AppLnk::setSmallIconSize( 14 ); 621 AppLnk::setSmallIconSize( 14 );
603 AppLnk::setBigIconSize( 32 ); 622 AppLnk::setBigIconSize( 32 );
604 } 623 }
@@ -1460,389 +1479,395 @@ bool QPEApplication::raiseAppropriateWindow()
1460 } 1479 }
1461 r = FALSE; 1480 r = FALSE;
1462 } 1481 }
1463 1482
1464 return r; 1483 return r;
1465} 1484}
1466 1485
1467 1486
1468void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data) 1487void QPEApplication::pidMessage( const QCString& msg, const QByteArray& data)
1469{ 1488{
1470#ifdef Q_WS_QWS 1489#ifdef Q_WS_QWS
1471 1490
1472 if ( msg == "quit()" ) { 1491 if ( msg == "quit()" ) {
1473 tryQuit(); 1492 tryQuit();
1474 } 1493 }
1475 else if ( msg == "quitIfInvisible()" ) { 1494 else if ( msg == "quitIfInvisible()" ) {
1476 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() ) 1495 if ( d->qpe_main_widget && !d->qpe_main_widget->isVisible() )
1477 quit(); 1496 quit();
1478 } 1497 }
1479 else if ( msg == "close()" ) { 1498 else if ( msg == "close()" ) {
1480 hideOrQuit(); 1499 hideOrQuit();
1481 } 1500 }
1482 else if ( msg == "disablePreload()" ) { 1501 else if ( msg == "disablePreload()" ) {
1483 d->preloaded = FALSE; 1502 d->preloaded = FALSE;
1484 d->keep_running = TRUE; 1503 d->keep_running = TRUE;
1485 /* so that quit will quit */ 1504 /* so that quit will quit */
1486 } 1505 }
1487 else if ( msg == "enablePreload()" ) { 1506 else if ( msg == "enablePreload()" ) {
1488 if (d->qpe_main_widget) 1507 if (d->qpe_main_widget)
1489 d->preloaded = TRUE; 1508 d->preloaded = TRUE;
1490 d->keep_running = TRUE; 1509 d->keep_running = TRUE;
1491 /* so next quit won't quit */ 1510 /* so next quit won't quit */
1492 } 1511 }
1493 else if ( msg == "raise()" ) { 1512 else if ( msg == "raise()" ) {
1494 d->keep_running = TRUE; 1513 d->keep_running = TRUE;
1495 d->notbusysent = FALSE; 1514 d->notbusysent = FALSE;
1496 raiseAppropriateWindow(); 1515 raiseAppropriateWindow();
1497 // Tell the system we're still chugging along... 1516 // Tell the system we're still chugging along...
1498 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1517 QCopEnvelope e("QPE/System", "appRaised(QString)");
1499 e << d->appName; 1518 e << d->appName;
1500 } 1519 }
1501 else if ( msg == "flush()" ) { 1520 else if ( msg == "flush()" ) {
1502 emit flush(); 1521 emit flush();
1503 // we need to tell the desktop 1522 // we need to tell the desktop
1504 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" ); 1523 QCopEnvelope e( "QPE/Desktop", "flushDone(QString)" );
1505 e << d->appName; 1524 e << d->appName;
1506 } 1525 }
1507 else if ( msg == "reload()" ) { 1526 else if ( msg == "reload()" ) {
1508 emit reload(); 1527 emit reload();
1509 } 1528 }
1510 else if ( msg == "setDocument(QString)" ) { 1529 else if ( msg == "setDocument(QString)" ) {
1511 d->keep_running = TRUE; 1530 d->keep_running = TRUE;
1512 QDataStream stream( data, IO_ReadOnly ); 1531 QDataStream stream( data, IO_ReadOnly );
1513 QString doc; 1532 QString doc;
1514 stream >> doc; 1533 stream >> doc;
1515 QWidget *mw = mainWidget(); 1534 QWidget *mw = mainWidget();
1516 if ( !mw ) 1535 if ( !mw )
1517 mw = d->qpe_main_widget; 1536 mw = d->qpe_main_widget;
1518 if ( mw ) 1537 if ( mw )
1519 Global::setDocument( mw, doc ); 1538 Global::setDocument( mw, doc );
1520 1539
1521 } else if ( msg == "QPEProcessQCop()" ) { 1540 } else if ( msg == "QPEProcessQCop()" ) {
1522 processQCopFile(); 1541 processQCopFile();
1523 d->sendQCopQ(); 1542 d->sendQCopQ();
1524 }else 1543 }else
1525 { 1544 {
1526 bool p = d->keep_running; 1545 bool p = d->keep_running;
1527 d->keep_running = FALSE; 1546 d->keep_running = FALSE;
1528 emit appMessage( msg, data); 1547 emit appMessage( msg, data);
1529 if ( d->keep_running ) { 1548 if ( d->keep_running ) {
1530 d->notbusysent = FALSE; 1549 d->notbusysent = FALSE;
1531 raiseAppropriateWindow(); 1550 raiseAppropriateWindow();
1532 if ( !p ) { 1551 if ( !p ) {
1533 // Tell the system we're still chugging along... 1552 // Tell the system we're still chugging along...
1534#ifndef QT_NO_COP 1553#ifndef QT_NO_COP
1535 QCopEnvelope e("QPE/System", "appRaised(QString)"); 1554 QCopEnvelope e("QPE/System", "appRaised(QString)");
1536 e << d->appName; 1555 e << d->appName;
1537#endif 1556#endif
1538 } 1557 }
1539 } 1558 }
1540 if ( p ) 1559 if ( p )
1541 d->keep_running = p; 1560 d->keep_running = p;
1542 } 1561 }
1543#endif 1562#endif
1544} 1563}
1545 1564
1546 1565
1547/*! 1566/*!
1548 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1567 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1549 consider passing TRUE for \a nomaximize rather than the default FALSE. 1568 consider passing TRUE for \a nomaximize rather than the default FALSE.
1550 1569
1551 \sa showMainDocumentWidget() 1570 \sa showMainDocumentWidget()
1552*/ 1571*/
1553void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize ) 1572void QPEApplication::showMainWidget( QWidget* mw, bool nomaximize )
1554{ 1573{
1555 d->show(mw, nomaximize ); 1574 d->show(mw, nomaximize );
1556} 1575}
1557 1576
1558/*! 1577/*!
1559 Sets widget \a mw as the mainWidget() and shows it. For small windows, 1578 Sets widget \a mw as the mainWidget() and shows it. For small windows,
1560 consider passing TRUE for \a nomaximize rather than the default FALSE. 1579 consider passing TRUE for \a nomaximize rather than the default FALSE.
1561 1580
1562 This calls designates the application as 1581 This calls designates the application as
1563 a \link docwidget.html document-oriented\endlink application. 1582 a \link docwidget.html document-oriented\endlink application.
1564 1583
1565 The \a mw widget \e must have this slot: setDocument(const QString&). 1584 The \a mw widget \e must have this slot: setDocument(const QString&).
1566 1585
1567 \sa showMainWidget() 1586 \sa showMainWidget()
1568*/ 1587*/
1569void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize ) 1588void QPEApplication::showMainDocumentWidget( QWidget* mw, bool nomaximize )
1570{ 1589{
1571 if ( mw && argc() == 2 ) 1590 if ( mw && argc() == 2 )
1572 Global::setDocument( mw, QString::fromUtf8(argv()[1]) ); 1591 Global::setDocument( mw, QString::fromUtf8(argv()[1]) );
1573 1592
1574 1593
1575 d->show(mw, nomaximize ); 1594 d->show(mw, nomaximize );
1576} 1595}
1577 1596
1578 1597
1579/*! 1598/*!
1580 If an application is started via a \link qcop.html QCop\endlink 1599 If an application is started via a \link qcop.html QCop\endlink
1581 message, the application will process the \link qcop.html 1600 message, the application will process the \link qcop.html
1582 QCop\endlink message and then quit. If the application calls this 1601 QCop\endlink message and then quit. If the application calls this
1583 function while processing a \link qcop.html QCop\endlink message, 1602 function while processing a \link qcop.html QCop\endlink message,
1584 after processing its outstanding \link qcop.html QCop\endlink 1603 after processing its outstanding \link qcop.html QCop\endlink
1585 messages the application will start 'properly' and show itself. 1604 messages the application will start 'properly' and show itself.
1586 1605
1587 \sa keepRunning() 1606 \sa keepRunning()
1588*/ 1607*/
1589void QPEApplication::setKeepRunning() 1608void QPEApplication::setKeepRunning()
1590{ 1609{
1591 if ( qApp && qApp->inherits( "QPEApplication" ) ) { 1610 if ( qApp && qApp->inherits( "QPEApplication" ) ) {
1592 QPEApplication * qpeApp = ( QPEApplication* ) qApp; 1611 QPEApplication * qpeApp = ( QPEApplication* ) qApp;
1593 qpeApp->d->keep_running = TRUE; 1612 qpeApp->d->keep_running = TRUE;
1594 } 1613 }
1595} 1614}
1596 1615
1597/*! 1616/*!
1598 Returns TRUE if the application will quit after processing the 1617 Returns TRUE if the application will quit after processing the
1599 current list of qcop messages; otherwise returns FALSE. 1618 current list of qcop messages; otherwise returns FALSE.
1600 1619
1601 \sa setKeepRunning() 1620 \sa setKeepRunning()
1602*/ 1621*/
1603bool QPEApplication::keepRunning() const 1622bool QPEApplication::keepRunning() const
1604{ 1623{
1605 return d->keep_running; 1624 return d->keep_running;
1606} 1625}
1607 1626
1608/*! 1627/*!
1609 \internal 1628 \internal
1610*/ 1629*/
1611void QPEApplication::internalSetStyle( const QString &style ) 1630void QPEApplication::internalSetStyle( const QString &style )
1612{ 1631{
1613#if QT_VERSION >= 300 1632#if QT_VERSION >= 300
1614 if ( style == "QPE" ) { 1633 if ( style == "QPE" ) {
1615 setStyle( new QPEStyle ); 1634 setStyle( new QPEStyle );
1616 } 1635 }
1617 else { 1636 else {
1618 QStyle *s = QStyleFactory::create( style ); 1637 QStyle *s = QStyleFactory::create( style );
1619 if ( s ) 1638 if ( s )
1620 setStyle( s ); 1639 setStyle( s );
1621 } 1640 }
1622#else 1641#else
1623 if ( style == "Windows" ) { 1642 if ( style == "Windows" ) {
1624 setStyle( new QWindowsStyle ); 1643 setStyle( new QWindowsStyle );
1625 } 1644 }
1626 else if ( style == "QPE" ) { 1645 else if ( style == "QPE" ) {
1627 setStyle( new QPEStyle ); 1646 setStyle( new QPEStyle );
1628 } 1647 }
1629 else if ( style == "Light" ) { 1648 else if ( style == "Light" ) {
1630 setStyle( new LightStyle ); 1649 setStyle( new LightStyle );
1631 } 1650 }
1632#ifndef QT_NO_STYLE_PLATINUM 1651#ifndef QT_NO_STYLE_PLATINUM
1633 else if ( style == "Platinum" ) { 1652 else if ( style == "Platinum" ) {
1634 setStyle( new QPlatinumStyle ); 1653 setStyle( new QPlatinumStyle );
1635 } 1654 }
1636#endif 1655#endif
1637#ifndef QT_NO_STYLE_MOTIF 1656#ifndef QT_NO_STYLE_MOTIF
1638 else if ( style == "Motif" ) { 1657 else if ( style == "Motif" ) {
1639 setStyle( new QMotifStyle ); 1658 setStyle( new QMotifStyle );
1640 } 1659 }
1641#endif 1660#endif
1642#ifndef QT_NO_STYLE_MOTIFPLUS 1661#ifndef QT_NO_STYLE_MOTIFPLUS
1643 else if ( style == "MotifPlus" ) { 1662 else if ( style == "MotifPlus" ) {
1644 setStyle( new QMotifPlusStyle ); 1663 setStyle( new QMotifPlusStyle );
1645 } 1664 }
1646#endif 1665#endif
1647 1666
1648 else { 1667 else {
1649 QStyle *sty = 0; 1668 QStyle *sty = 0;
1650 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/"; 1669 QString path = QPEApplication::qpeDir ( ) + "/plugins/styles/";
1651 1670
1671#ifdef Q_OS_MACX
1672 if ( style. find ( ".dylib" ) > 0 )
1673 path += style;
1674 else
1675 path = path + "lib" + style. lower ( ) + ".dylib"; // compatibility
1676#else
1652 if ( style. find ( ".so" ) > 0 ) 1677 if ( style. find ( ".so" ) > 0 )
1653 path += style; 1678 path += style;
1654 else 1679 else
1655 path = path + "lib" + style. lower ( ) + ".so"; // compatibility 1680 path = path + "lib" + style. lower ( ) + ".so"; // compatibility
1656 1681#endif
1657 static QLibrary *lastlib = 0; 1682 static QLibrary *lastlib = 0;
1658 static StyleInterface *lastiface = 0; 1683 static StyleInterface *lastiface = 0;
1659 1684
1660 QLibrary *lib = new QLibrary ( path ); 1685 QLibrary *lib = new QLibrary ( path );
1661 StyleInterface *iface = 0; 1686 StyleInterface *iface = 0;
1662 1687
1663 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface ) 1688 if (( lib-> queryInterface ( IID_Style, ( QUnknownInterface ** ) &iface ) == QS_OK ) && iface )
1664 sty = iface-> style ( ); 1689 sty = iface-> style ( );
1665 1690
1666 if ( sty ) { 1691 if ( sty ) {
1667 setStyle ( sty ); 1692 setStyle ( sty );
1668 1693
1669 if ( lastiface ) 1694 if ( lastiface )
1670 lastiface-> release ( ); 1695 lastiface-> release ( );
1671 lastiface = iface; 1696 lastiface = iface;
1672 1697
1673 if ( lastlib ) { 1698 if ( lastlib ) {
1674 lastlib-> unload ( ); 1699 lastlib-> unload ( );
1675 delete lastlib; 1700 delete lastlib;
1676 } 1701 }
1677 lastlib = lib; 1702 lastlib = lib;
1678 } 1703 }
1679 else { 1704 else {
1680 if ( iface ) 1705 if ( iface )
1681 iface-> release ( ); 1706 iface-> release ( );
1682 delete lib; 1707 delete lib;
1683 1708
1684 setStyle ( new LightStyle ( )); 1709 setStyle ( new LightStyle ( ));
1685 } 1710 }
1686 } 1711 }
1687#endif 1712#endif
1688} 1713}
1689 1714
1690/*! 1715/*!
1691 \internal 1716 \internal
1692*/ 1717*/
1693void QPEApplication::prepareForTermination( bool willrestart ) 1718void QPEApplication::prepareForTermination( bool willrestart )
1694{ 1719{
1695 if ( willrestart ) { 1720 if ( willrestart ) {
1696 // Draw a big wait icon, the image can be altered in later revisions 1721 // Draw a big wait icon, the image can be altered in later revisions
1697 // QWidget *d = QApplication::desktop(); 1722 // QWidget *d = QApplication::desktop();
1698 QImage img = Resource::loadImage( "launcher/new_wait" ); 1723 QImage img = Resource::loadImage( "launcher/new_wait" );
1699 QPixmap pix; 1724 QPixmap pix;
1700 pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) ); 1725 pix.convertFromImage( img.smoothScale( 1 * img.width(), 1 * img.height() ) );
1701 QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize | 1726 QLabel *lblWait = new QLabel( 0, "wait hack!", QWidget::WStyle_Customize |
1702 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool ); 1727 QWidget::WStyle_NoBorder | QWidget::WStyle_Tool );
1703 lblWait->setPixmap( pix ); 1728 lblWait->setPixmap( pix );
1704 lblWait->setAlignment( QWidget::AlignCenter ); 1729 lblWait->setAlignment( QWidget::AlignCenter );
1705 lblWait->show(); 1730 lblWait->show();
1706 lblWait->showMaximized(); 1731 lblWait->showMaximized();
1707 } 1732 }
1708#ifndef SINGLE_APP 1733#ifndef SINGLE_APP
1709 { QCopEnvelope envelope( "QPE/System", "forceQuit()" ); 1734 { QCopEnvelope envelope( "QPE/System", "forceQuit()" );
1710 } 1735 }
1711 processEvents(); // ensure the message goes out. 1736 processEvents(); // ensure the message goes out.
1712 sleep( 1 ); // You have 1 second to comply. 1737 sleep( 1 ); // You have 1 second to comply.
1713#endif 1738#endif
1714} 1739}
1715 1740
1716/*! 1741/*!
1717 \internal 1742 \internal
1718*/ 1743*/
1719void QPEApplication::shutdown() 1744void QPEApplication::shutdown()
1720{ 1745{
1721 // Implement in server's QPEApplication subclass 1746 // Implement in server's QPEApplication subclass
1722} 1747}
1723 1748
1724/*! 1749/*!
1725 \internal 1750 \internal
1726*/ 1751*/
1727void QPEApplication::restart() 1752void QPEApplication::restart()
1728{ 1753{
1729 // Implement in server's QPEApplication subclass 1754 // Implement in server's QPEApplication subclass
1730} 1755}
1731 1756
1732static QPtrDict<void>* stylusDict = 0; 1757static QPtrDict<void>* stylusDict = 0;
1733static void createDict() 1758static void createDict()
1734{ 1759{
1735 if ( !stylusDict ) 1760 if ( !stylusDict )
1736 stylusDict = new QPtrDict<void>; 1761 stylusDict = new QPtrDict<void>;
1737} 1762}
1738 1763
1739/*! 1764/*!
1740 Returns the current StylusMode for widget \a w. 1765 Returns the current StylusMode for widget \a w.
1741 1766
1742 \sa setStylusOperation() StylusMode 1767 \sa setStylusOperation() StylusMode
1743*/ 1768*/
1744QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w ) 1769QPEApplication::StylusMode QPEApplication::stylusOperation( QWidget* w )
1745{ 1770{
1746 if ( stylusDict ) 1771 if ( stylusDict )
1747 return ( StylusMode ) ( int ) stylusDict->find( w ); 1772 return ( StylusMode ) ( int ) stylusDict->find( w );
1748 return LeftOnly; 1773 return LeftOnly;
1749} 1774}
1750 1775
1751/*! 1776/*!
1752 \enum QPEApplication::StylusMode 1777 \enum QPEApplication::StylusMode
1753 1778
1754 \value LeftOnly the stylus only generates LeftButton 1779 \value LeftOnly the stylus only generates LeftButton
1755 events (the default). 1780 events (the default).
1756 \value RightOnHold the stylus generates RightButton events 1781 \value RightOnHold the stylus generates RightButton events
1757 if the user uses the press-and-hold gesture. 1782 if the user uses the press-and-hold gesture.
1758 1783
1759 \sa setStylusOperation() stylusOperation() 1784 \sa setStylusOperation() stylusOperation()
1760*/ 1785*/
1761 1786
1762/*! 1787/*!
1763 Causes widget \a w to receive mouse events according to the stylus 1788 Causes widget \a w to receive mouse events according to the stylus
1764 \a mode. 1789 \a mode.
1765 1790
1766 \sa stylusOperation() StylusMode 1791 \sa stylusOperation() StylusMode
1767*/ 1792*/
1768void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode ) 1793void QPEApplication::setStylusOperation( QWidget * w, StylusMode mode )
1769{ 1794{
1770 createDict(); 1795 createDict();
1771 if ( mode == LeftOnly ) { 1796 if ( mode == LeftOnly ) {
1772 stylusDict->remove 1797 stylusDict->remove
1773 ( w ); 1798 ( w );
1774 w->removeEventFilter( qApp ); 1799 w->removeEventFilter( qApp );
1775 } 1800 }
1776 else { 1801 else {
1777 stylusDict->insert( w, ( void* ) mode ); 1802 stylusDict->insert( w, ( void* ) mode );
1778 connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) ); 1803 connect( w, SIGNAL( destroyed() ), qApp, SLOT( removeSenderFromStylusDict() ) );
1779 w->installEventFilter( qApp ); 1804 w->installEventFilter( qApp );
1780 } 1805 }
1781} 1806}
1782 1807
1783 1808
1784/*! 1809/*!
1785 \reimp 1810 \reimp
1786*/ 1811*/
1787bool QPEApplication::eventFilter( QObject *o, QEvent *e ) 1812bool QPEApplication::eventFilter( QObject *o, QEvent *e )
1788{ 1813{
1789 if ( !o->isWidgetType() ) 1814 if ( !o->isWidgetType() )
1790 return FALSE; 1815 return FALSE;
1791 1816
1792 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) { 1817 if ( stylusDict && e->type() >= QEvent::MouseButtonPress && e->type() <= QEvent::MouseMove ) {
1793 QMouseEvent * me = ( QMouseEvent* ) e; 1818 QMouseEvent * me = ( QMouseEvent* ) e;
1794 StylusMode mode = (StylusMode)(int)stylusDict->find(o); 1819 StylusMode mode = (StylusMode)(int)stylusDict->find(o);
1795 switch (mode) { 1820 switch (mode) {
1796 case RightOnHold: 1821 case RightOnHold:
1797 switch ( me->type() ) { 1822 switch ( me->type() ) {
1798 case QEvent::MouseButtonPress: 1823 case QEvent::MouseButtonPress:
1799 if ( me->button() == LeftButton ) { 1824 if ( me->button() == LeftButton ) {
1800 if (!d->presstimer ) 1825 if (!d->presstimer )
1801 d->presstimer = startTimer(500); // #### pref. 1826 d->presstimer = startTimer(500); // #### pref.
1802 d->presswidget = (QWidget*)o; 1827 d->presswidget = (QWidget*)o;
1803 d->presspos = me->pos(); 1828 d->presspos = me->pos();
1804 d->rightpressed = FALSE; 1829 d->rightpressed = FALSE;
1805 } 1830 }
1806 break; 1831 break;
1807 case QEvent::MouseMove: 1832 case QEvent::MouseMove:
1808 if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) { 1833 if (d->presstimer && (me->pos() - d->presspos).manhattanLength() > 8) {
1809 killTimer(d->presstimer); 1834 killTimer(d->presstimer);
1810 d->presstimer = 0; 1835 d->presstimer = 0;
1811 } 1836 }
1812 break; 1837 break;
1813 case QEvent::MouseButtonRelease: 1838 case QEvent::MouseButtonRelease:
1814 if ( me->button() == LeftButton ) { 1839 if ( me->button() == LeftButton ) {
1815 if ( d->presstimer ) { 1840 if ( d->presstimer ) {
1816 killTimer(d->presstimer); 1841 killTimer(d->presstimer);
1817 d->presstimer = 0; 1842 d->presstimer = 0;
1818 } 1843 }
1819 if ( d->rightpressed && d->presswidget ) { 1844 if ( d->rightpressed && d->presswidget ) {
1820 // Right released 1845 // Right released
1821 postEvent( d->presswidget, 1846 postEvent( d->presswidget,
1822 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(), 1847 new QMouseEvent( QEvent::MouseButtonRelease, me->pos(),
1823 RightButton, LeftButton + RightButton ) ); 1848 RightButton, LeftButton + RightButton ) );
1824 // Left released, off-widget 1849 // Left released, off-widget
1825 postEvent( d->presswidget, 1850 postEvent( d->presswidget,
1826 new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1), 1851 new QMouseEvent( QEvent::MouseMove, QPoint( -1, -1),
1827 LeftButton, LeftButton ) ); 1852 LeftButton, LeftButton ) );
1828 postEvent( d->presswidget, 1853 postEvent( d->presswidget,
1829 new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1), 1854 new QMouseEvent( QEvent::MouseButtonRelease, QPoint( -1, -1),
1830 LeftButton, LeftButton ) ); 1855 LeftButton, LeftButton ) );
1831 d->rightpressed = FALSE; 1856 d->rightpressed = FALSE;
1832 return TRUE; // don't send the real Left release 1857 return TRUE; // don't send the real Left release
1833 } 1858 }
1834 } 1859 }
1835 break; 1860 break;
1836 default: 1861 default:
1837 break; 1862 break;
1838 } 1863 }
1839 break; 1864 break;
1840 default: 1865 default:
1841 ; 1866 ;
1842 } 1867 }
1843 } 1868 }
1844 else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { 1869 else if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
1845 QKeyEvent *ke = (QKeyEvent *)e; 1870 QKeyEvent *ke = (QKeyEvent *)e;
1846 if ( ke->key() == Key_Enter ) { 1871 if ( ke->key() == Key_Enter ) {
1847 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) { 1872 if ( o->isA( "QRadioButton" ) || o->isA( "QCheckBox" ) ) {
1848 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ', 1873 postEvent( o, new QKeyEvent( e->type(), Key_Space, ' ',
diff --git a/library/qpedecoration_qws.cpp b/library/qpedecoration_qws.cpp
index 933542d..bac1a75 100644
--- a/library/qpedecoration_qws.cpp
+++ b/library/qpedecoration_qws.cpp
@@ -323,389 +323,397 @@ static QImage *closeImage( int th )
323 323
324static QImage *helpImage( int th ) 324static QImage *helpImage( int th )
325{ 325{
326 static QImage *i = 0; 326 static QImage *i = 0;
327 if ( !i || i->height() != th ) { 327 if ( !i || i->height() != th ) {
328 delete i; 328 delete i;
329 i = new QImage(scaleButton(Resource::loadImage("HelpButton"),th)); 329 i = new QImage(scaleButton(Resource::loadImage("HelpButton"),th));
330 } 330 }
331 return i; 331 return i;
332} 332}
333 333
334static QImage *maximizeImage( int th ) 334static QImage *maximizeImage( int th )
335{ 335{
336 static QImage *i = 0; 336 static QImage *i = 0;
337 if ( !i || i->height() != th ) { 337 if ( !i || i->height() != th ) {
338 delete i; 338 delete i;
339 i = new QImage(scaleButton(Resource::loadImage("MaximizeButton"),th)); 339 i = new QImage(scaleButton(Resource::loadImage("MaximizeButton"),th));
340 } 340 }
341 return i; 341 return i;
342} 342}
343 343
344int WindowDecorationInterface::metric( Metric m, const WindowData *wd ) const 344int WindowDecorationInterface::metric( Metric m, const WindowData *wd ) const
345{ 345{
346 switch ( m ) { 346 switch ( m ) {
347 case TitleHeight: 347 case TitleHeight:
348 if ( QApplication::desktop()->height() > 320 ) 348 if ( QApplication::desktop()->height() > 320 )
349 return 19; 349 return 19;
350 else 350 else
351 return 15; 351 return 15;
352 case LeftBorder: 352 case LeftBorder:
353 case RightBorder: 353 case RightBorder:
354 case TopBorder: 354 case TopBorder:
355 case BottomBorder: 355 case BottomBorder:
356 return 4; 356 return 4;
357 case OKWidth: 357 case OKWidth:
358 return okImage(metric(TitleHeight,wd))->width(); 358 return okImage(metric(TitleHeight,wd))->width();
359 case CloseWidth: 359 case CloseWidth:
360 return closeImage(metric(TitleHeight,wd))->width(); 360 return closeImage(metric(TitleHeight,wd))->width();
361 case HelpWidth: 361 case HelpWidth:
362 return helpImage(metric(TitleHeight,wd))->width(); 362 return helpImage(metric(TitleHeight,wd))->width();
363 case MaximizeWidth: 363 case MaximizeWidth:
364 return maximizeImage(metric(TitleHeight,wd))->width(); 364 return maximizeImage(metric(TitleHeight,wd))->width();
365 case CornerGrabSize: 365 case CornerGrabSize:
366 return 16; 366 return 16;
367 } 367 }
368 368
369 return 0; 369 return 0;
370} 370}
371 371
372void WindowDecorationInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const 372void WindowDecorationInterface::drawArea( Area a, QPainter *p, const WindowData *wd ) const
373{ 373{
374 int th = metric( TitleHeight, wd ); 374 int th = metric( TitleHeight, wd );
375 QRect r = wd->rect; 375 QRect r = wd->rect;
376 376
377 switch ( a ) { 377 switch ( a ) {
378 case Border: 378 case Border:
379 { 379 {
380 const QColorGroup &cg = wd->palette.active(); 380 const QColorGroup &cg = wd->palette.active();
381 qDrawWinPanel(p, r.x()-metric(LeftBorder,wd), 381 qDrawWinPanel(p, r.x()-metric(LeftBorder,wd),
382 r.y()-th-metric(TopBorder,wd), 382 r.y()-th-metric(TopBorder,wd),
383 r.width()+metric(LeftBorder,wd)+metric(RightBorder,wd), 383 r.width()+metric(LeftBorder,wd)+metric(RightBorder,wd),
384 r.height()+th+metric(TopBorder,wd)+metric(BottomBorder,wd), 384 r.height()+th+metric(TopBorder,wd)+metric(BottomBorder,wd),
385 cg, FALSE, &cg.brush(QColorGroup::Background)); 385 cg, FALSE, &cg.brush(QColorGroup::Background));
386 } 386 }
387 break; 387 break;
388 case Title: 388 case Title:
389 { 389 {
390 const QColorGroup &cg = wd->palette.active(); 390 const QColorGroup &cg = wd->palette.active();
391 QBrush titleBrush; 391 QBrush titleBrush;
392 QPen titleLines; 392 QPen titleLines;
393 393
394 if ( wd->flags & WindowData::Active ) { 394 if ( wd->flags & WindowData::Active ) {
395 titleBrush = cg.brush(QColorGroup::Highlight); 395 titleBrush = cg.brush(QColorGroup::Highlight);
396 titleLines = titleBrush.color().dark(); 396 titleLines = titleBrush.color().dark();
397 } else { 397 } else {
398 titleBrush = cg.brush(QColorGroup::Background); 398 titleBrush = cg.brush(QColorGroup::Background);
399 titleLines = titleBrush.color(); 399 titleLines = titleBrush.color();
400 } 400 }
401 401
402 p->fillRect( r.x(), r.y()-th, r.width(), th, titleBrush); 402 p->fillRect( r.x(), r.y()-th, r.width(), th, titleBrush);
403 403
404 p->setPen( titleLines ); 404 p->setPen( titleLines );
405 for ( int i = r.y()-th; i < r.y(); i += 2 ) 405 for ( int i = r.y()-th; i < r.y(); i += 2 )
406 p->drawLine( r.left(), i, r.right(), i ); 406 p->drawLine( r.left(), i, r.right(), i );
407 } 407 }
408 break; 408 break;
409 case TitleText: 409 case TitleText:
410 p->drawText( r.x()+3+metric(HelpWidth,wd), r.top()-th, 410 p->drawText( r.x()+3+metric(HelpWidth,wd), r.top()-th,
411 r.width()-metric(OKWidth,wd)-metric(CloseWidth,wd), 411 r.width()-metric(OKWidth,wd)-metric(CloseWidth,wd),
412 th, QPainter::AlignVCenter, wd->caption); 412 th, QPainter::AlignVCenter, wd->caption);
413 break; 413 break;
414 } 414 }
415} 415}
416 416
417void WindowDecorationInterface::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int, int, QWSButton::State state ) const 417void WindowDecorationInterface::drawButton( Button b, QPainter *p, const WindowData *wd, int x, int y, int, int, QWSButton::State state ) const
418{ 418{
419 QImage *img = 0; 419 QImage *img = 0;
420 switch ( b ) { 420 switch ( b ) {
421 case OK: 421 case OK:
422 img = okImage(metric(TitleHeight,wd)); 422 img = okImage(metric(TitleHeight,wd));
423 break; 423 break;
424 case Close: 424 case Close:
425 img = closeImage(metric(TitleHeight,wd)); 425 img = closeImage(metric(TitleHeight,wd));
426 break; 426 break;
427 case Help: 427 case Help:
428 img = helpImage(metric(TitleHeight,wd)); 428 img = helpImage(metric(TitleHeight,wd));
429 break; 429 break;
430 case Maximize: 430 case Maximize:
431 img = maximizeImage(metric(TitleHeight,wd)); 431 img = maximizeImage(metric(TitleHeight,wd));
432 break; 432 break;
433 } 433 }
434 434
435 if ( img ) { 435 if ( img ) {
436 if ((state & QWSButton::MouseOver) && (state & QWSButton::Clicked)) 436 if ((state & QWSButton::MouseOver) && (state & QWSButton::Clicked))
437 p->drawImage(x+2, y+2, *img); 437 p->drawImage(x+2, y+2, *img);
438 else 438 else
439 p->drawImage(x+1, y+1, *img); 439 p->drawImage(x+1, y+1, *img);
440 } 440 }
441} 441}
442 442
443QRegion WindowDecorationInterface::mask( const WindowData *wd ) const 443QRegion WindowDecorationInterface::mask( const WindowData *wd ) const
444{ 444{
445 int th = metric(TitleHeight,wd); 445 int th = metric(TitleHeight,wd);
446 QRect rect( wd->rect ); 446 QRect rect( wd->rect );
447 QRect r(rect.left() - metric(LeftBorder,wd), 447 QRect r(rect.left() - metric(LeftBorder,wd),
448 rect.top() - th - metric(TopBorder,wd), 448 rect.top() - th - metric(TopBorder,wd),
449 rect.width() + metric(LeftBorder,wd) + metric(RightBorder,wd), 449 rect.width() + metric(LeftBorder,wd) + metric(RightBorder,wd),
450 rect.height() + th + metric(TopBorder,wd) + metric(BottomBorder,wd)); 450 rect.height() + th + metric(TopBorder,wd) + metric(BottomBorder,wd));
451 return QRegion(r) - rect; 451 return QRegion(r) - rect;
452} 452}
453 453
454class DefaultWindowDecoration : public WindowDecorationInterface 454class DefaultWindowDecoration : public WindowDecorationInterface
455{ 455{
456public: 456public:
457 DefaultWindowDecoration() : ref(0) {} 457 DefaultWindowDecoration() : ref(0) {}
458 QString name() const { 458 QString name() const {
459 return "Default"; 459 return "Default";
460 } 460 }
461 QPixmap icon() const { 461 QPixmap icon() const {
462 return QPixmap(); 462 return QPixmap();
463 } 463 }
464 QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) { 464 QRESULT queryInterface( const QUuid &uuid, QUnknownInterface **iface ) {
465 *iface = 0; 465 *iface = 0;
466 if ( uuid == IID_QUnknown ) 466 if ( uuid == IID_QUnknown )
467 *iface = this; 467 *iface = this;
468 else if ( uuid == IID_WindowDecoration ) 468 else if ( uuid == IID_WindowDecoration )
469 *iface = this; 469 *iface = this;
470 470
471 if ( *iface ) 471 if ( *iface )
472 (*iface)->addRef(); 472 (*iface)->addRef();
473 return QS_OK; 473 return QS_OK;
474 } 474 }
475 Q_REFCOUNT 475 Q_REFCOUNT
476 476
477private: 477private:
478 ulong ref; 478 ulong ref;
479}; 479};
480 480
481static WindowDecorationInterface *wdiface = 0; 481static WindowDecorationInterface *wdiface = 0;
482static QLibrary *wdlib = 0; 482static QLibrary *wdlib = 0;
483static QString libname; 483static QString libname;
484 484
485//=========================================================================== 485//===========================================================================
486 486
487QPEDecoration::QPEDecoration() 487QPEDecoration::QPEDecoration()
488 : QWSDefaultDecoration() 488 : QWSDefaultDecoration()
489{ 489{
490 init ( libname ); 490 init ( libname );
491} 491}
492 492
493QPEDecoration::QPEDecoration( const QString &plugin ) 493QPEDecoration::QPEDecoration( const QString &plugin )
494 : QWSDefaultDecoration() 494 : QWSDefaultDecoration()
495{ 495{
496 init ( plugin ); 496 init ( plugin );
497} 497}
498 498
499void QPEDecoration::init ( const QString &plugin ) 499void QPEDecoration::init ( const QString &plugin )
500{ 500{
501 libname = plugin; 501 libname = plugin;
502 502
503 if ( wdlib ) { 503 if ( wdlib ) {
504 wdiface->release(); 504 wdiface->release();
505 wdlib->unload(); 505 wdlib->unload();
506 delete wdlib; 506 delete wdlib;
507 wdlib = 0; 507 wdlib = 0;
508 } else { 508 } else {
509 delete wdiface; 509 delete wdiface;
510 } 510 }
511 511
512 WindowDecorationInterface *iface = 0; 512 WindowDecorationInterface *iface = 0;
513 QString path = QPEApplication::qpeDir() + "/plugins/decorations/"; 513 QString path = QPEApplication::qpeDir() + "/plugins/decorations/";
514 514
515#ifdef Q_OS_MACX
516 if ( plugin.find( ".dylib" ) > 0 ) {
517#else
515 if ( plugin.find( ".so" ) > 0 ) { 518 if ( plugin.find( ".so" ) > 0 ) {
519#endif
516 // full library name supplied 520 // full library name supplied
517 path += plugin; 521 path += plugin;
518 } else { 522 } else {
523#ifdef Q_OS_MACX
524 path += "lib" + plugin.lower() + ".dylib"; // compatibility
525#else
519 path += "lib" + plugin.lower() + ".so"; // compatibility 526 path += "lib" + plugin.lower() + ".so"; // compatibility
527#endif
520 } 528 }
521 529
522 QLibrary *lib = new QLibrary( path ); 530 QLibrary *lib = new QLibrary( path );
523 if ( lib->queryInterface( IID_WindowDecoration, (QUnknownInterface**)&iface ) == QS_OK && iface ) { 531 if ( lib->queryInterface( IID_WindowDecoration, (QUnknownInterface**)&iface ) == QS_OK && iface ) {
524 wdiface = iface; 532 wdiface = iface;
525 wdlib = lib; 533 wdlib = lib;
526 } else { 534 } else {
527 delete lib; 535 delete lib;
528 wdiface = new DefaultWindowDecoration; 536 wdiface = new DefaultWindowDecoration;
529 } 537 }
530 538
531 helpFile = QString(qApp->argv()[0]) + ".html"; 539 helpFile = QString(qApp->argv()[0]) + ".html";
532 QStringList helpPath = Global::helpPath(); 540 QStringList helpPath = Global::helpPath();
533 helpExists = FALSE; 541 helpExists = FALSE;
534 for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it) { 542 for (QStringList::ConstIterator it=helpPath.begin(); it!=helpPath.end() && !helpExists; ++it) {
535 helpExists = QFile::exists( *it + "/" + helpFile ); 543 helpExists = QFile::exists( *it + "/" + helpFile );
536 //qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists); 544 //qDebug ( "Checking %s/%s for help: %d", (*it).latin1(), helpFile.latin1(),helpExists);
537 } 545 }
538 qpeManager = new QPEManager( this ); 546 qpeManager = new QPEManager( this );
539 547
540 // Qtopia 1.5 compatibility 548 // Qtopia 1.5 compatibility
541 imageOk = *okImage ( 15 ); 549 imageOk = *okImage ( 15 );
542 imageClose = *closeImage ( 15 ); 550 imageClose = *closeImage ( 15 );
543 imageHelp = *helpImage ( 15 ); 551 imageHelp = *helpImage ( 15 );
544} 552}
545 553
546QPEDecoration::~QPEDecoration() 554QPEDecoration::~QPEDecoration()
547{ 555{
548 delete qpeManager; 556 delete qpeManager;
549} 557}
550 558
551const char **QPEDecoration::menuPixmap() 559const char **QPEDecoration::menuPixmap()
552{ 560{
553 return (const char **)0; 561 return (const char **)0;
554} 562}
555 563
556const char **QPEDecoration::closePixmap() 564const char **QPEDecoration::closePixmap()
557{ 565{
558 return (const char **)qpe_close_xpm; 566 return (const char **)qpe_close_xpm;
559} 567}
560 568
561const char **QPEDecoration::minimizePixmap() 569const char **QPEDecoration::minimizePixmap()
562{ 570{
563 return (const char **)qpe_accept_xpm; 571 return (const char **)qpe_accept_xpm;
564} 572}
565 573
566const char **QPEDecoration::maximizePixmap() 574const char **QPEDecoration::maximizePixmap()
567{ 575{
568 return (const char **)0; 576 return (const char **)0;
569} 577}
570 578
571const char **QPEDecoration::normalizePixmap() 579const char **QPEDecoration::normalizePixmap()
572{ 580{
573 return (const char **)0; 581 return (const char **)0;
574} 582}
575 583
576int QPEDecoration::getTitleHeight( const QWidget *w ) 584int QPEDecoration::getTitleHeight( const QWidget *w )
577{ 585{
578 WindowDecorationInterface::WindowData wd; 586 WindowDecorationInterface::WindowData wd;
579 windowData( w, wd ); 587 windowData( w, wd );
580 return wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); 588 return wdiface->metric(WindowDecorationInterface::TitleHeight,&wd);
581} 589}
582 590
583/* 591/*
584 If rect is empty, no frame is added. (a hack, really) 592 If rect is empty, no frame is added. (a hack, really)
585*/ 593*/
586QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecoration::Region type) 594QRegion QPEDecoration::region(const QWidget *widget, const QRect &rect, QWSDecoration::Region type)
587{ 595{
588 qpeManager->updateActive(); 596 qpeManager->updateActive();
589 597
590 WindowDecorationInterface::WindowData wd; 598 WindowDecorationInterface::WindowData wd;
591 windowData( widget, wd ); 599 windowData( widget, wd );
592 wd.rect = rect; 600 wd.rect = rect;
593 601
594 int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd); 602 int titleHeight = wdiface->metric(WindowDecorationInterface::TitleHeight,&wd);
595 int okWidth = wdiface->metric(WindowDecorationInterface::OKWidth,&wd); 603 int okWidth = wdiface->metric(WindowDecorationInterface::OKWidth,&wd);
596 int closeWidth = wdiface->metric(WindowDecorationInterface::CloseWidth,&wd); 604 int closeWidth = wdiface->metric(WindowDecorationInterface::CloseWidth,&wd);
597 int helpWidth = wdiface->metric(WindowDecorationInterface::HelpWidth,&wd); 605 int helpWidth = wdiface->metric(WindowDecorationInterface::HelpWidth,&wd);
598 int grab = wdiface->metric(WindowDecorationInterface::CornerGrabSize,&wd); 606 int grab = wdiface->metric(WindowDecorationInterface::CornerGrabSize,&wd);
599 607
600 QRegion region; 608 QRegion region;
601 609
602 switch ((int)type) { 610 switch ((int)type) {
603 case Menu: 611 case Menu:
604 break; 612 break;
605 case Maximize: 613 case Maximize:
606 if ( !widget->inherits( "QDialog" ) && qApp->desktop()->width() > 350 ) { 614 if ( !widget->inherits( "QDialog" ) && qApp->desktop()->width() > 350 ) {
607 int maximizeWidth = wdiface->metric(WindowDecorationInterface::MaximizeWidth,&wd); 615 int maximizeWidth = wdiface->metric(WindowDecorationInterface::MaximizeWidth,&wd);
608 int left = rect.right() - maximizeWidth - closeWidth; 616 int left = rect.right() - maximizeWidth - closeWidth;
609 if ( ((HackWidget *)widget)->needsOk() ) 617 if ( ((HackWidget *)widget)->needsOk() )
610 left -= okWidth; 618 left -= okWidth;
611 QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight); 619 QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight);
612 region = r; 620 region = r;
613 } 621 }
614 break; 622 break;
615 case Minimize: 623 case Minimize:
616 if ( ((HackWidget *)widget)->needsOk() ) { 624 if ( ((HackWidget *)widget)->needsOk() ) {
617 QRect r(rect.right() - okWidth, 625 QRect r(rect.right() - okWidth,
618 rect.top() - titleHeight, okWidth, titleHeight); 626 rect.top() - titleHeight, okWidth, titleHeight);
619 if (r.left() > rect.left() + titleHeight) 627 if (r.left() > rect.left() + titleHeight)
620 region = r; 628 region = r;
621 } 629 }
622 break; 630 break;
623 case Close: 631 case Close:
624 { 632 {
625 int left = rect.right() - closeWidth; 633 int left = rect.right() - closeWidth;
626 if ( ((HackWidget *)widget)->needsOk() ) 634 if ( ((HackWidget *)widget)->needsOk() )
627 left -= okWidth; 635 left -= okWidth;
628 QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight); 636 QRect r(left, rect.top() - titleHeight, closeWidth, titleHeight);
629 region = r; 637 region = r;
630 } 638 }
631 break; 639 break;
632 case Title: 640 case Title:
633 if ( !widget->isMaximized() ) { 641 if ( !widget->isMaximized() ) {
634 int width = rect.width() - helpWidth - closeWidth; 642 int width = rect.width() - helpWidth - closeWidth;
635 if ( ((HackWidget *)widget)->needsOk() ) 643 if ( ((HackWidget *)widget)->needsOk() )
636 width -= okWidth; 644 width -= okWidth;
637 QRect r(rect.left()+helpWidth, rect.top() - titleHeight, 645 QRect r(rect.left()+helpWidth, rect.top() - titleHeight,
638 width, titleHeight); 646 width, titleHeight);
639 if (r.width() > 0) 647 if (r.width() > 0)
640 region = r; 648 region = r;
641 } 649 }
642 break; 650 break;
643 case Help: 651 case Help:
644 if ( helpExists || widget->testWFlags(Qt::WStyle_ContextHelp) ) { 652 if ( helpExists || widget->testWFlags(Qt::WStyle_ContextHelp) ) {
645 QRect r(rect.left(), rect.top() - titleHeight, 653 QRect r(rect.left(), rect.top() - titleHeight,
646 helpWidth, titleHeight); 654 helpWidth, titleHeight);
647 region = r; 655 region = r;
648 } 656 }
649 break; 657 break;
650 case Top: 658 case Top:
651 if ( !widget->isMaximized() ) { 659 if ( !widget->isMaximized() ) {
652 QRegion m = wdiface->mask(&wd); 660 QRegion m = wdiface->mask(&wd);
653 QRect br = m.boundingRect(); 661 QRect br = m.boundingRect();
654 int b = wdiface->metric(WindowDecorationInterface::TopBorder,&wd); 662 int b = wdiface->metric(WindowDecorationInterface::TopBorder,&wd);
655 region = m & QRect( br.left()+grab, br.top(), 663 region = m & QRect( br.left()+grab, br.top(),
656 br.width()-2*grab, b ); 664 br.width()-2*grab, b );
657 } 665 }
658 break; 666 break;
659 case Left: 667 case Left:
660 if ( !widget->isMaximized() ) { 668 if ( !widget->isMaximized() ) {
661 QRegion m = wdiface->mask(&wd); 669 QRegion m = wdiface->mask(&wd);
662 QRect br = m.boundingRect(); 670 QRect br = m.boundingRect();
663 int b = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd); 671 int b = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd);
664 region = m & QRect( br.left(), br.top()+grab, 672 region = m & QRect( br.left(), br.top()+grab,
665 b, br.height()-2*grab ); 673 b, br.height()-2*grab );
666 } 674 }
667 break; 675 break;
668 case Right: 676 case Right:
669 if ( !widget->isMaximized() ) { 677 if ( !widget->isMaximized() ) {
670 QRegion m = wdiface->mask(&wd); 678 QRegion m = wdiface->mask(&wd);
671 QRect br = m.boundingRect(); 679 QRect br = m.boundingRect();
672 int b = wdiface->metric(WindowDecorationInterface::RightBorder,&wd); 680 int b = wdiface->metric(WindowDecorationInterface::RightBorder,&wd);
673 region = m & QRect( rect.right(), br.top()+grab, 681 region = m & QRect( rect.right(), br.top()+grab,
674 b, br.height()-2*grab ); 682 b, br.height()-2*grab );
675 } 683 }
676 break; 684 break;
677 case Bottom: 685 case Bottom:
678 if ( !widget->isMaximized() ) { 686 if ( !widget->isMaximized() ) {
679 QRegion m = wdiface->mask(&wd); 687 QRegion m = wdiface->mask(&wd);
680 QRect br = m.boundingRect(); 688 QRect br = m.boundingRect();
681 int b = wdiface->metric(WindowDecorationInterface::BottomBorder,&wd); 689 int b = wdiface->metric(WindowDecorationInterface::BottomBorder,&wd);
682 region = m & QRect( br.left()+grab, rect.bottom(), 690 region = m & QRect( br.left()+grab, rect.bottom(),
683 br.width()-2*grab, b ); 691 br.width()-2*grab, b );
684 } 692 }
685 break; 693 break;
686 case TopLeft: 694 case TopLeft:
687 if ( !widget->isMaximized() ) { 695 if ( !widget->isMaximized() ) {
688 QRegion m = wdiface->mask(&wd); 696 QRegion m = wdiface->mask(&wd);
689 QRect br = m.boundingRect(); 697 QRect br = m.boundingRect();
690 int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd); 698 int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd);
691 int lb = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd); 699 int lb = wdiface->metric(WindowDecorationInterface::LeftBorder,&wd);
692 QRegion crgn( br.left(), br.top(), grab, tb ); 700 QRegion crgn( br.left(), br.top(), grab, tb );
693 crgn |= QRect( br.left(), br.top(), lb, grab ); 701 crgn |= QRect( br.left(), br.top(), lb, grab );
694 region = m & crgn; 702 region = m & crgn;
695 } 703 }
696 break; 704 break;
697 case TopRight: 705 case TopRight:
698 if ( !widget->isMaximized() ) { 706 if ( !widget->isMaximized() ) {
699 QRegion m = wdiface->mask(&wd); 707 QRegion m = wdiface->mask(&wd);
700 QRect br = m.boundingRect(); 708 QRect br = m.boundingRect();
701 int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd); 709 int tb = wdiface->metric(WindowDecorationInterface::TopBorder,&wd);
702 int rb = wdiface->metric(WindowDecorationInterface::RightBorder,&wd); 710 int rb = wdiface->metric(WindowDecorationInterface::RightBorder,&wd);
703 QRegion crgn( br.right()-grab, br.top(), grab, tb ); 711 QRegion crgn( br.right()-grab, br.top(), grab, tb );
704 crgn |= QRect( br.right()-rb, br.top(), rb, grab ); 712 crgn |= QRect( br.right()-rb, br.top(), rb, grab );
705 region = m & crgn; 713 region = m & crgn;
706 } 714 }
707 break; 715 break;
708 case BottomLeft: 716 case BottomLeft:
709 if ( !widget->isMaximized() ) { 717 if ( !widget->isMaximized() ) {
710 QRegion m = wdiface->mask(&wd); 718 QRegion m = wdiface->mask(&wd);
711 QRect br = m.boundingRect(); 719 QRect br = m.boundingRect();
diff --git a/library/sound.cpp b/library/sound.cpp
index c8704f9..5b67995 100644
--- a/library/sound.cpp
+++ b/library/sound.cpp
@@ -1,221 +1,224 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include <qpe/resource.h> 21#include <qpe/resource.h>
22#include <qpe/sound.h> 22#include <qpe/sound.h>
23#include <qpe/qcopenvelope_qws.h> 23#include <qpe/qcopenvelope_qws.h>
24 24
25#include <qsound.h> 25#include <qsound.h>
26#include <qfile.h> 26#include <qfile.h>
27 27
28#include <unistd.h> 28#include <unistd.h>
29#include <fcntl.h> 29#include <fcntl.h>
30#include <sys/ioctl.h> 30#include <sys/ioctl.h>
31
32#ifndef QT_NO_SOUND
31#include <sys/soundcard.h> 33#include <sys/soundcard.h>
34#endif
32 35
33#include "config.h" 36#include "config.h"
34#include <qmessagebox.h> 37#include <qmessagebox.h>
35#ifndef QT_NO_SOUND 38#ifndef QT_NO_SOUND
36static int WAVsoundDuration(const QString& filename) 39static int WAVsoundDuration(const QString& filename)
37{ 40{
38 // bad solution 41 // bad solution
39 42
40 // most of this is copied from qsoundqss.cpp 43 // most of this is copied from qsoundqss.cpp
41 44
42 QFile input(filename); 45 QFile input(filename);
43 if ( !input.open(IO_ReadOnly) ) 46 if ( !input.open(IO_ReadOnly) )
44 return 0; 47 return 0;
45 48
46 struct QRiffChunk { 49 struct QRiffChunk {
47 char id[4]; 50 char id[4];
48 Q_UINT32 size; 51 Q_UINT32 size;
49 char data[4/*size*/]; 52 char data[4/*size*/];
50 } chunk; 53 } chunk;
51 54
52 struct { 55 struct {
53 Q_INT16 formatTag; 56 Q_INT16 formatTag;
54 Q_INT16 channels; 57 Q_INT16 channels;
55 Q_INT32 samplesPerSec; 58 Q_INT32 samplesPerSec;
56 Q_INT32 avgBytesPerSec; 59 Q_INT32 avgBytesPerSec;
57 Q_INT16 blockAlign; 60 Q_INT16 blockAlign;
58 Q_INT16 wBitsPerSample; 61 Q_INT16 wBitsPerSample;
59 } chunkdata; 62 } chunkdata;
60 63
61 int total = 0; 64 int total = 0;
62 65
63 while(1) { 66 while(1) {
64 // Keep reading chunks... 67 // Keep reading chunks...
65 const int n = sizeof(chunk)-sizeof(chunk.data); 68 const int n = sizeof(chunk)-sizeof(chunk.data);
66 if ( input.readBlock((char*)&chunk,n) != n ) 69 if ( input.readBlock((char*)&chunk,n) != n )
67 break; 70 break;
68 if ( qstrncmp(chunk.id,"data",4) == 0 ) { 71 if ( qstrncmp(chunk.id,"data",4) == 0 ) {
69 total += chunkdata.avgBytesPerSec ? 72 total += chunkdata.avgBytesPerSec ?
70 chunk.size * 1000 / chunkdata.avgBytesPerSec : 0; 73 chunk.size * 1000 / chunkdata.avgBytesPerSec : 0;
71//qDebug("%d bytes of PCM (%dms)", chunk.size,chunkdata.avgBytesPerSec ? chunk.size * 1000 / chunkdata.avgBytesPerSec : 0); 74//qDebug("%d bytes of PCM (%dms)", chunk.size,chunkdata.avgBytesPerSec ? chunk.size * 1000 / chunkdata.avgBytesPerSec : 0);
72 input.at(input.at()+chunk.size-4); 75 input.at(input.at()+chunk.size-4);
73 } else if ( qstrncmp(chunk.id,"RIFF",4) == 0 ) { 76 } else if ( qstrncmp(chunk.id,"RIFF",4) == 0 ) {
74 char d[4]; 77 char d[4];
75 if ( input.readBlock(d,4) != 4 ) 78 if ( input.readBlock(d,4) != 4 )
76 return 0; 79 return 0;
77 if ( qstrncmp(d,"WAVE",4) != 0 ) { 80 if ( qstrncmp(d,"WAVE",4) != 0 ) {
78 // skip 81 // skip
79//qDebug("skip %.4s RIFF chunk",d); 82//qDebug("skip %.4s RIFF chunk",d);
80 if ( chunk.size < 10000000 ) 83 if ( chunk.size < 10000000 )
81 (void)input.at(input.at()+chunk.size-4); 84 (void)input.at(input.at()+chunk.size-4);
82 } 85 }
83 } else if ( qstrncmp(chunk.id,"fmt ",4) == 0 ) { 86 } else if ( qstrncmp(chunk.id,"fmt ",4) == 0 ) {
84 if ( input.readBlock((char*)&chunkdata,sizeof(chunkdata)) != sizeof(chunkdata) ) 87 if ( input.readBlock((char*)&chunkdata,sizeof(chunkdata)) != sizeof(chunkdata) )
85 return 0; 88 return 0;
86#define WAVE_FORMAT_PCM 1 89#define WAVE_FORMAT_PCM 1
87 if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) { 90 if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) {
88 //qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag); 91 //qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag);
89 return 0; 92 return 0;
90 } 93 }
91 } else { 94 } else {
92//qDebug("skip %.4s chunk",chunk.id); 95//qDebug("skip %.4s chunk",chunk.id);
93 // ignored chunk 96 // ignored chunk
94 if ( chunk.size < 10000000 ) 97 if ( chunk.size < 10000000 )
95 (void)input.at(input.at()+chunk.size); 98 (void)input.at(input.at()+chunk.size);
96 } 99 }
97 } 100 }
98 101
99//qDebug("%dms",total); 102//qDebug("%dms",total);
100 return total; 103 return total;
101} 104}
102 105
103class SoundData : public QSound { 106class SoundData : public QSound {
104public: 107public:
105 SoundData ( const QString& name ) : 108 SoundData ( const QString& name ) :
106 QSound ( Resource::findSound ( name )), 109 QSound ( Resource::findSound ( name )),
107 filename ( Resource::findSound ( name )) 110 filename ( Resource::findSound ( name ))
108 { 111 {
109 loopsleft=0; 112 loopsleft=0;
110 ms = WAVsoundDuration(filename); 113 ms = WAVsoundDuration(filename);
111 } 114 }
112 115
113 void playLoop ( int loopcnt = -1 ) 116 void playLoop ( int loopcnt = -1 )
114 { 117 {
115 // needs server support 118 // needs server support
116 loopsleft = loopcnt; 119 loopsleft = loopcnt;
117 120
118 if ( ms ) 121 if ( ms )
119 startTimer ( ms > 50 ? ms-50 : 0 ); // 50 for latency 122 startTimer ( ms > 50 ? ms-50 : 0 ); // 50 for latency
120 play ( ); 123 play ( );
121 } 124 }
122 125
123 void timerEvent ( QTimerEvent *e ) 126 void timerEvent ( QTimerEvent *e )
124 { 127 {
125 if ( loopsleft >= 0 ) { 128 if ( loopsleft >= 0 ) {
126 if ( --loopsleft <= 0 ) { 129 if ( --loopsleft <= 0 ) {
127 killTimer ( e-> timerId ( )); 130 killTimer ( e-> timerId ( ));
128 loopsleft = 0; 131 loopsleft = 0;
129 return; 132 return;
130 } 133 }
131 } 134 }
132 play(); 135 play();
133 } 136 }
134 137
135 bool isFinished ( ) const 138 bool isFinished ( ) const
136 { 139 {
137 return ( loopsleft == 0 ); 140 return ( loopsleft == 0 );
138 } 141 }
139 142
140private: 143private:
141 QString filename; 144 QString filename;
142 int loopsleft; 145 int loopsleft;
143 int ms; 146 int ms;
144}; 147};
145 148
146#endif 149#endif
147 150
148/*! Opens a wave sound file \a name for playing 151/*! Opens a wave sound file \a name for playing
149 * Resource is used for finding the file 152 * Resource is used for finding the file
150 **/ 153 **/
151Sound::Sound(const QString& name) 154Sound::Sound(const QString& name)
152{ 155{
153#ifndef QT_NO_SOUND 156#ifndef QT_NO_SOUND
154 d = new SoundData(name); 157 d = new SoundData(name);
155#endif 158#endif
156} 159}
157 160
158/*! Destroys the sound */ 161/*! Destroys the sound */
159Sound::~Sound() 162Sound::~Sound()
160{ 163{
161#ifndef QT_NO_SOUND 164#ifndef QT_NO_SOUND
162 delete d; 165 delete d;
163#endif 166#endif
164} 167}
165 168
166/*! Play the sound once */ 169/*! Play the sound once */
167void Sound::play() 170void Sound::play()
168{ 171{
169#ifndef QT_NO_SOUND 172#ifndef QT_NO_SOUND
170 d->playLoop(1); 173 d->playLoop(1);
171#endif 174#endif
172} 175}
173 176
174/*! Play the sound, repeatedly until stop() is called */ 177/*! Play the sound, repeatedly until stop() is called */
175void Sound::playLoop() 178void Sound::playLoop()
176{ 179{
177#ifndef QT_NO_SOUND 180#ifndef QT_NO_SOUND
178 d->killTimers(); 181 d->killTimers();
179 d->playLoop(); 182 d->playLoop();
180#endif 183#endif
181} 184}
182 185
183/*! Do not repeat the sound after it finishes. This will end a playLoop() */ 186/*! Do not repeat the sound after it finishes. This will end a playLoop() */
184void Sound::stop() 187void Sound::stop()
185{ 188{
186#ifndef QT_NO_SOUND 189#ifndef QT_NO_SOUND
187 d->killTimers(); 190 d->killTimers();
188#endif 191#endif
189} 192}
190 193
191bool Sound::isFinished() const 194bool Sound::isFinished() const
192{ 195{
193#ifndef QT_NO_SOUND 196#ifndef QT_NO_SOUND
194 return d->isFinished(); 197 return d->isFinished();
195#else 198#else
196 return true; 199 return true;
197#endif 200#endif
198} 201}
199 202
200/*! Sounds the audible system alarm. This is used for applications such 203/*! Sounds the audible system alarm. This is used for applications such
201 as Calendar when it needs to alarm the user of an event. 204 as Calendar when it needs to alarm the user of an event.
202*/ 205*/
203void Sound::soundAlarm() 206void Sound::soundAlarm()
204{ 207{
205#ifndef QT_NO_COP 208#ifndef QT_NO_COP
206 QCopEnvelope( "QPE/TaskBar", "soundAlarm()" ); 209 QCopEnvelope( "QPE/TaskBar", "soundAlarm()" );
207#endif 210#endif
208} 211}
209 212
210 213
211/*! \class Sound 214/*! \class Sound
212 \brief The Sound class plays WAVE sound files and can invoke the audible alarm. 215 \brief The Sound class plays WAVE sound files and can invoke the audible alarm.
213 216
214 The Sound class is constructed with the .wav music file name. The Sound 217 The Sound class is constructed with the .wav music file name. The Sound
215 class retrieves the sound file from the shared Resource class. This class 218 class retrieves the sound file from the shared Resource class. This class
216 ties together QSound and the available sound resources. 219 ties together QSound and the available sound resources.
217 220
218 To sound an audible system alarm, call the static method soundAlarm() 221 To sound an audible system alarm, call the static method soundAlarm()
219 222
220 \ingroup qtopiaemb 223 \ingroup qtopiaemb
221*/ 224*/
diff --git a/library/storage.cpp b/library/storage.cpp
index dc5cc22..f8b75d0 100644
--- a/library/storage.cpp
+++ b/library/storage.cpp
@@ -1,344 +1,376 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org> 2** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org>
3** Copyright (C) Lorn Potter <llornkcor@handhelds.org> 3** Copyright (C) Lorn Potter <llornkcor@handhelds.org>
4** Copyright (C) 2000 Trolltech AS. All rights reserved. 4** Copyright (C) 2000 Trolltech AS. All rights reserved.
5** 5**
6** This file is part of Opie Environment. 6** This file is part of Opie Environment.
7** 7**
8** This file may be distributed and/or modified under the terms of the 8** This file may be distributed and/or modified under the terms of the
9** GNU General Public License version 2 as published by the Free Software 9** GNU General Public License version 2 as published by the Free Software
10** Foundation and appearing in the file LICENSE.GPL included in the 10** Foundation and appearing in the file LICENSE.GPL included in the
11** packaging of this file. 11** packaging of this file.
12** 12**
13** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 13** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
14** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 14** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
15** 15**
16** See http://www.trolltech.com/gpl/ for GPL licensing information. 16** See http://www.trolltech.com/gpl/ for GPL licensing information.
17** 17**
18** Contact info@trolltech.com if any conditions of this licensing are 18** Contact info@trolltech.com if any conditions of this licensing are
19** not clear to you. 19** not clear to you.
20** 20**
21**********************************************************************/ 21**********************************************************************/
22 22
23#include <qpe/storage.h> 23#include <qpe/storage.h>
24#include <qpe/custom.h> 24#include <qpe/custom.h>
25 25
26#include <qfile.h> 26#include <qfile.h>
27#include <qtimer.h> 27#include <qtimer.h>
28#include <qcopchannel_qws.h> 28#include <qcopchannel_qws.h>
29 29
30#include <stdio.h> 30#include <stdio.h>
31 31
32#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 32#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
33#include <sys/vfs.h> 33#include <sys/vfs.h>
34#include <mntent.h> 34#include <mntent.h>
35#endif 35#endif
36 36
37#ifdef Q_OS_MACX
38# include <sys/param.h>
39# include <sys/ucred.h>
40# include <sys/mount.h>
41# include <stdio.h> // For strerror()
42# include <errno.h>
43#endif /* Q_OS_MACX */
44
37#include <qstringlist.h> 45#include <qstringlist.h>
38 46
39#include <sys/vfs.h> 47// Shouldn't be here ! (eilers)
40#include <mntent.h> 48// #include <sys/vfs.h>
49// #include <mntent.h>
41 50
42 51
43static bool isCF(const QString& m) 52static bool isCF(const QString& m)
44{ 53{
54
55#ifndef Q_OS_MACX
45 FILE* f = fopen("/var/run/stab", "r"); 56 FILE* f = fopen("/var/run/stab", "r");
46 if (!f) f = fopen("/var/state/pcmcia/stab", "r"); 57 if (!f) f = fopen("/var/state/pcmcia/stab", "r");
47 if (!f) f = fopen("/var/lib/pcmcia/stab", "r"); 58 if (!f) f = fopen("/var/lib/pcmcia/stab", "r");
48 if ( f ) { 59 if ( f ) {
49 char line[1024]; 60 char line[1024];
50 char devtype[80]; 61 char devtype[80];
51 char devname[80]; 62 char devname[80];
52 while ( fgets( line, 1024, f ) ) { 63 while ( fgets( line, 1024, f ) ) {
53 // 0 ide ide-cs 0 hda 3 0 64 // 0 ide ide-cs 0 hda 3 0
54 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 ) 65 if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 )
55 { 66 {
56 if ( QString(devtype) == "ide" && m.find(devname)>0 ) { 67 if ( QString(devtype) == "ide" && m.find(devname)>0 ) {
57 fclose(f); 68 fclose(f);
58 return TRUE; 69 return TRUE;
59 } 70 }
60 } 71 }
61 } 72 }
62 fclose(f); 73 fclose(f);
63 } 74 }
75#endif /* Q_OS_MACX */
64 return FALSE; 76 return FALSE;
65} 77}
66 78
67/*! \class StorageInfo storage.h 79/*! \class StorageInfo storage.h
68 \brief The StorageInfo class describes the disks mounted on the file system. 80 \brief The StorageInfo class describes the disks mounted on the file system.
69 81
70 This class provides access to the mount information for the Linux 82 This class provides access to the mount information for the Linux
71 filesystem. Each mount point is represented by the FileSystem class. 83 filesystem. Each mount point is represented by the FileSystem class.
72 To ensure this class has the most up to date size information, call 84 To ensure this class has the most up to date size information, call
73 the update() method. Note that this will automatically be signaled 85 the update() method. Note that this will automatically be signaled
74 by the operating system when a disk has been mounted or unmounted. 86 by the operating system when a disk has been mounted or unmounted.
75 87
76 \ingroup qtopiaemb 88 \ingroup qtopiaemb
77*/ 89*/
78 90
79/*! Constructor that determines the current mount points of the filesystem. 91/*! Constructor that determines the current mount points of the filesystem.
80 The standard \a parent parameters is passed on to QObject. 92 The standard \a parent parameters is passed on to QObject.
81 */ 93 */
82StorageInfo::StorageInfo( QObject *parent ) 94StorageInfo::StorageInfo( QObject *parent )
83 : QObject( parent ) 95 : QObject( parent )
84{ 96{
85 mFileSystems.setAutoDelete( TRUE ); 97 mFileSystems.setAutoDelete( TRUE );
86 channel = new QCopChannel( "QPE/Card", this ); 98 channel = new QCopChannel( "QPE/Card", this );
87 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)), 99 connect( channel, SIGNAL(received(const QCString &, const QByteArray &)),
88 this, SLOT(cardMessage( const QCString &, const QByteArray &)) ); 100 this, SLOT(cardMessage( const QCString &, const QByteArray &)) );
89 update(); 101 update();
90} 102}
91 103
92/*! Returns the longest matching FileSystem that starts with the 104/*! Returns the longest matching FileSystem that starts with the
93 same prefix as \a filename as its mount point. 105 same prefix as \a filename as its mount point.
94*/ 106*/
95const FileSystem *StorageInfo::fileSystemOf( const QString &filename ) 107const FileSystem *StorageInfo::fileSystemOf( const QString &filename )
96{ 108{
97 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { 109 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
98 if ( filename.startsWith( (*i)->path() ) ) 110 if ( filename.startsWith( (*i)->path() ) )
99 return (*i); 111 return (*i);
100 } 112 }
101 return 0; 113 return 0;
102} 114}
103 115
104 116
105void StorageInfo::cardMessage( const QCString& msg, const QByteArray& ) 117void StorageInfo::cardMessage( const QCString& msg, const QByteArray& )
106{ 118{
107 if ( msg == "mtabChanged()" ) 119 if ( msg == "mtabChanged()" )
108 update(); 120 update();
109} 121}
110 122
111 123
112/*! Updates the mount and free space available information for each mount 124/*! Updates the mount and free space available information for each mount
113 point. This method is automatically called when a disk is mounted or 125 point. This method is automatically called when a disk is mounted or
114 unmounted. 126 unmounted.
115*/ 127*/
116// cause of the lack of a d pointer we need 128// cause of the lack of a d pointer we need
117// to store informations in a config file :( 129// to store informations in a config file :(
118void StorageInfo::update() 130void StorageInfo::update()
119{ 131{
120 //qDebug("StorageInfo::updating"); 132 //qDebug("StorageInfo::updating");
121#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 133#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
122 struct mntent *me; 134 struct mntent *me;
123 FILE *mntfp = setmntent( "/etc/mtab", "r" ); 135 FILE *mntfp = setmntent( "/etc/mtab", "r" );
124 136
125 QStringList curdisks; 137 QStringList curdisks;
126 QStringList curopts; 138 QStringList curopts;
127 QStringList curfs; 139 QStringList curfs;
128 bool rebuild = FALSE; 140 bool rebuild = FALSE;
129 int n=0; 141 int n=0;
130 if ( mntfp ) { 142 if ( mntfp ) {
131 while ( (me = getmntent( mntfp )) != 0 ) { 143 while ( (me = getmntent( mntfp )) != 0 ) {
132 QString fs = me->mnt_fsname; 144 QString fs = me->mnt_fsname;
133 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd" 145 if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd"
134 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" 146 || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd"
135 || fs.left( 14 ) == "/dev/mmc/part1" 147 || fs.left( 14 ) == "/dev/mmc/part1"
136 || fs.left(5)=="tmpfs" || fs.left(9)=="/dev/root" ) 148 || fs.left(5)=="tmpfs" || fs.left(9)=="/dev/root" )
137 { 149 {
138 n++; 150 n++;
139 curdisks.append(fs); 151 curdisks.append(fs);
140 curopts.append( me->mnt_opts ); 152 curopts.append( me->mnt_opts );
141 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts ); 153 //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts );
142 curfs.append( me->mnt_dir ); 154 curfs.append( me->mnt_dir );
143 bool found = FALSE; 155 bool found = FALSE;
144 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) { 156 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) {
145 if ( (*i)->disk() == fs ) { 157 if ( (*i)->disk() == fs ) {
146 found = TRUE; 158 found = TRUE;
147 break; 159 break;
148 } 160 }
149 } 161 }
150 if ( !found ) 162 if ( !found )
151 rebuild = TRUE; 163 rebuild = TRUE;
152 } 164 }
153 } 165 }
154 endmntent( mntfp ); 166 endmntent( mntfp );
155 } 167 }
156 if ( rebuild || n != (int)mFileSystems.count() ) { 168 if ( rebuild || n != (int)mFileSystems.count() ) {
157 mFileSystems.clear(); 169 mFileSystems.clear();
158 QStringList::ConstIterator it=curdisks.begin(); 170 QStringList::ConstIterator it=curdisks.begin();
159 QStringList::ConstIterator fsit=curfs.begin(); 171 QStringList::ConstIterator fsit=curfs.begin();
160 QStringList::ConstIterator optsIt=curopts.begin(); 172 QStringList::ConstIterator optsIt=curopts.begin();
161 for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt) { 173 for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt) {
162 QString opts = *optsIt; 174 QString opts = *optsIt;
163 175
164 QString disk = *it; 176 QString disk = *it;
165 QString humanname; 177 QString humanname;
166 bool removable = FALSE; 178 bool removable = FALSE;
167 if ( isCF(disk) ) { 179 if ( isCF(disk) ) {
168 humanname = tr("CF Card"); 180 humanname = tr("CF Card");
169 removable = TRUE; 181 removable = TRUE;
170 } else if ( disk == "/dev/hda1" ) { 182 } else if ( disk == "/dev/hda1" ) {
171 humanname = tr("Hard Disk"); 183 humanname = tr("Hard Disk");
172 } else if ( disk.left(9) == "/dev/mmcd" ) { 184 } else if ( disk.left(9) == "/dev/mmcd" ) {
173 humanname = tr("SD Card"); 185 humanname = tr("SD Card");
174 removable = TRUE; 186 removable = TRUE;
175 } else if ( disk.left( 14 ) == "/dev/mmc/part1" ) { 187 } else if ( disk.left( 14 ) == "/dev/mmc/part1" ) {
176 humanname = tr("MMC Card"); 188 humanname = tr("MMC Card");
177 removable = TRUE; 189 removable = TRUE;
178 } else if ( disk.left(7) == "/dev/hd" ) 190 } else if ( disk.left(7) == "/dev/hd" )
179 humanname = tr("Hard Disk") + " " + disk; 191 humanname = tr("Hard Disk") + " " + disk;
180 else if ( disk.left(7) == "/dev/sd" ) 192 else if ( disk.left(7) == "/dev/sd" )
181 humanname = tr("SCSI Hard Disk") + " " + disk; 193 humanname = tr("SCSI Hard Disk") + " " + disk;
182 else if ( disk.left(14) == "/dev/mtdblock6" ) //openzaurus ramfs 194 else if ( disk.left(14) == "/dev/mtdblock6" ) //openzaurus ramfs
183 humanname = tr("Internal Memory"); 195 humanname = tr("Internal Memory");
184 else if ( disk == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" ) 196 else if ( disk == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" )
185 humanname = tr("Internal Storage"); 197 humanname = tr("Internal Storage");
186 else if ( disk.left(14) == "/dev/mtdblock/" ) 198 else if ( disk.left(14) == "/dev/mtdblock/" )
187 humanname = tr("Internal Storage") + " " + disk; 199 humanname = tr("Internal Storage") + " " + disk;
188 else if ( disk.left(13) == "/dev/mtdblock" ) 200 else if ( disk.left(13) == "/dev/mtdblock" )
189 humanname = tr("Internal Storage") + " " + disk; 201 humanname = tr("Internal Storage") + " " + disk;
190 else if ( disk.left(9) == "/dev/root" ) 202 else if ( disk.left(9) == "/dev/root" )
191 humanname = tr("Internal Storage") + " " + disk; 203 humanname = tr("Internal Storage") + " " + disk;
192 else if ( disk.left(5) == "tmpfs" ) //ipaqs /mnt/ramfs 204 else if ( disk.left(5) == "tmpfs" ) //ipaqs /mnt/ramfs
193 humanname = tr("Internal Memory"); 205 humanname = tr("Internal Memory");
194 FileSystem *fs = new FileSystem( disk, *fsit, humanname, removable, opts ); 206 FileSystem *fs = new FileSystem( disk, *fsit, humanname, removable, opts );
195 mFileSystems.append( fs ); 207 mFileSystems.append( fs );
196 } 208 }
197 emit disksChanged(); 209 emit disksChanged();
198 } else { 210 } else {
199 // just update them 211 // just update them
200 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) 212 for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i)
201 i.current()->update(); 213 i.current()->update();
202 } 214 }
203#endif 215#endif
204} 216}
205 217
206bool deviceTab( const char *device) { 218bool deviceTab( const char *device) {
207 QString name = device; 219 QString name = device;
208 bool hasDevice=false; 220 bool hasDevice=false;
221
222#ifdef Q_OS_MACX
223 // Darwin (MacOS X)
224 struct statfs** mntbufp;
225 int count = 0;
226 if ( ( count = getmntinfo( mntbufp, MNT_WAIT ) ) == 0 ){
227 qWarning("deviceTab: Error in getmntinfo(): %s",strerror( errno ) );
228 hasDevice = false;
229 }
230 for( int i = 0; i < count; i++ ){
231 QString deviceName = mntbufp[i]->f_mntfromname;
232 qDebug(deviceName);
233 if( deviceName.left( name.length() ) == name )
234 hasDevice = true;
235 }
236#else
237 // Linux
209 struct mntent *me; 238 struct mntent *me;
210 FILE *mntfp = setmntent( "/etc/mtab", "r" ); 239 FILE *mntfp = setmntent( "/etc/mtab", "r" );
211 if ( mntfp ) { 240 if ( mntfp ) {
212 while ( (me = getmntent( mntfp )) != 0 ) { 241 while ( (me = getmntent( mntfp )) != 0 ) {
213 QString deviceName = me->mnt_fsname; 242 QString deviceName = me->mnt_fsname;
214// qDebug(deviceName); 243// qDebug(deviceName);
215 if( deviceName.left(name.length()) == name) { 244 if( deviceName.left(name.length()) == name) {
216 hasDevice = true; 245 hasDevice = true;
217 } 246 }
218 } 247 }
219 } 248 }
220 endmntent( mntfp ); 249 endmntent( mntfp );
250#endif /* Q_OS_MACX */
251
252
221 return hasDevice; 253 return hasDevice;
222} 254}
223 255
224/*! 256/*!
225 * @fn static bool StorageInfo::hasCf() 257 * @fn static bool StorageInfo::hasCf()
226 * @brief returns whether device has Cf mounted 258 * @brief returns whether device has Cf mounted
227 * 259 *
228 */ 260 */
229bool StorageInfo::hasCf() 261bool StorageInfo::hasCf()
230{ 262{
231 return deviceTab("/dev/hd"); 263 return deviceTab("/dev/hd");
232} 264}
233 265
234/*! 266/*!
235 * @fn static bool StorageInfo::hasSd() 267 * @fn static bool StorageInfo::hasSd()
236 * @brief returns whether device has SD mounted 268 * @brief returns whether device has SD mounted
237 * 269 *
238 */ 270 */
239bool StorageInfo::hasSd() 271bool StorageInfo::hasSd()
240{ 272{
241 return deviceTab("/dev/mmcd"); 273 return deviceTab("/dev/mmcd");
242} 274}
243 275
244/*! 276/*!
245 * @fn static bool StorageInfo::hasMmc() 277 * @fn static bool StorageInfo::hasMmc()
246 * @brief reutrns whether device has mmc mounted 278 * @brief reutrns whether device has mmc mounted
247 * 279 *
248 */ 280 */
249bool StorageInfo::hasMmc() 281bool StorageInfo::hasMmc()
250{ 282{
251 bool hasMmc=false; 283 bool hasMmc=false;
252 if( deviceTab("/dev/mmc/part")) 284 if( deviceTab("/dev/mmc/part"))
253 hasMmc=true; 285 hasMmc=true;
254 if( deviceTab("/dev/mmcd")) 286 if( deviceTab("/dev/mmcd"))
255 hasMmc=true; 287 hasMmc=true;
256 return hasMmc; 288 return hasMmc;
257} 289}
258 290
259/*! \fn const QList<FileSystem> &StorageInfo::fileSystems() const 291/*! \fn const QList<FileSystem> &StorageInfo::fileSystems() const
260 Returns a list of all available mounted file systems. 292 Returns a list of all available mounted file systems.
261 293
262 \warning This may change in Qtopia 3.x to return only relevant Qtopia file systems (and ignore mount points such as /tmp) 294 \warning This may change in Qtopia 3.x to return only relevant Qtopia file systems (and ignore mount points such as /tmp)
263*/ 295*/
264 296
265/*! \fn void StorageInfo::disksChanged() 297/*! \fn void StorageInfo::disksChanged()
266 Gets emitted when a disk has been mounted or unmounted, such as when 298 Gets emitted when a disk has been mounted or unmounted, such as when
267 a CF c 299 a CF c
268*/ 300*/
269//--------------------------------------------------------------------------- 301//---------------------------------------------------------------------------
270 302
271FileSystem::FileSystem( const QString &disk, const QString &path, const QString &name, bool rem, const QString &o ) 303FileSystem::FileSystem( const QString &disk, const QString &path, const QString &name, bool rem, const QString &o )
272 : fsdisk( disk ), fspath( path ), humanname( name ), blkSize(512), totalBlks(0), availBlks(0), removable( rem ), opts( o ) 304 : fsdisk( disk ), fspath( path ), humanname( name ), blkSize(512), totalBlks(0), availBlks(0), removable( rem ), opts( o )
273{ 305{
274 update(); 306 update();
275} 307}
276 308
277void FileSystem::update() 309void FileSystem::update()
278{ 310{
279#if defined(_OS_LINUX_) || defined(Q_OS_LINUX) 311#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
280 struct statfs fs; 312 struct statfs fs;
281 if ( !statfs( fspath.latin1(), &fs ) ) { 313 if ( !statfs( fspath.latin1(), &fs ) ) {
282 blkSize = fs.f_bsize; 314 blkSize = fs.f_bsize;
283 totalBlks = fs.f_blocks; 315 totalBlks = fs.f_blocks;
284 availBlks = fs.f_bavail; 316 availBlks = fs.f_bavail;
285 } else { 317 } else {
286 blkSize = 0; 318 blkSize = 0;
287 totalBlks = 0; 319 totalBlks = 0;
288 availBlks = 0; 320 availBlks = 0;
289 } 321 }
290#endif 322#endif
291} 323}
292 324
293/*! \class FileSystem storage.h 325/*! \class FileSystem storage.h
294 \brief The FileSystem class describes a single mount point. 326 \brief The FileSystem class describes a single mount point.
295 327
296 This class simply returns information about a mount point, including 328 This class simply returns information about a mount point, including
297 file system name, mount point, human readable name, size information 329 file system name, mount point, human readable name, size information
298 and mount options information. 330 and mount options information.
299 \ingroup qtopiaemb 331 \ingroup qtopiaemb
300 332
301 \sa StorageInfo 333 \sa StorageInfo
302*/ 334*/
303 335
304/*! \fn const QString &FileSystem::disk() const 336/*! \fn const QString &FileSystem::disk() const
305 Returns the file system name, such as /dev/hda3 337 Returns the file system name, such as /dev/hda3
306*/ 338*/
307 339
308/*! \fn const QString &FileSystem::path() const 340/*! \fn const QString &FileSystem::path() const
309 Returns the mount path, such as /home 341 Returns the mount path, such as /home
310*/ 342*/
311 343
312/*! \fn const QString &FileSystem::name() const 344/*! \fn const QString &FileSystem::name() const
313 Returns the translated, human readable name for the mount directory. 345 Returns the translated, human readable name for the mount directory.
314*/ 346*/
315 347
316/*! \fn const QString &FileSystem::options() const 348/*! \fn const QString &FileSystem::options() const
317 Returns the mount options 349 Returns the mount options
318*/ 350*/
319 351
320/*! \fn long FileSystem::blockSize() const 352/*! \fn long FileSystem::blockSize() const
321 Returns the size of each block on the file system. 353 Returns the size of each block on the file system.
322*/ 354*/
323 355
324/*! \fn long FileSystem::totalBlocks() const 356/*! \fn long FileSystem::totalBlocks() const
325 Returns the total number of blocks on the file system 357 Returns the total number of blocks on the file system
326*/ 358*/
327 359
328/*! \fn long FileSystem::availBlocks() const 360/*! \fn long FileSystem::availBlocks() const
329 Returns the number of available blocks on the file system 361 Returns the number of available blocks on the file system
330 */ 362 */
331 363
332/*! \fn bool FileSystem::isRemovable() const 364/*! \fn bool FileSystem::isRemovable() const
333 Returns flag whether the file system can be removed, such as a CF card 365 Returns flag whether the file system can be removed, such as a CF card
334 would be removable, but the internal memory wouldn't 366 would be removable, but the internal memory wouldn't
335*/ 367*/
336 368
337/*! \fn bool FileSystem::isWritable() const 369/*! \fn bool FileSystem::isWritable() const
338 Returns flag whether the file system is mounted as writable or read-only. 370 Returns flag whether the file system is mounted as writable or read-only.
339 Returns FALSE if read-only, TRUE if read and write. 371 Returns FALSE if read-only, TRUE if read and write.
340*/ 372*/
341 373
342/*! \fn QStringList StorageInfo::fileSystemNames() const 374/*! \fn QStringList StorageInfo::fileSystemNames() const
343 Returns a list of filesystem names. 375 Returns a list of filesystem names.
344*/ 376*/
diff --git a/mkspecs/qws/macx-generic-g++/qmake.conf b/mkspecs/qws/macx-generic-g++/qmake.conf
index 3460a40..04f1c8b 100644
--- a/mkspecs/qws/macx-generic-g++/qmake.conf
+++ b/mkspecs/qws/macx-generic-g++/qmake.conf
@@ -1,80 +1,81 @@
1# 1#
2# $Id$ 2# $Id$
3# 3#
4# qmake configuration for macx-g++ with Qt/Embedded 4# qmake configuration for macx-g++ with Qt/Embedded
5# 5#
6 6
7 MAKEFILE_GENERATOR= UNIX 7 MAKEFILE_GENERATOR= UNIX
8 TEMPLATE = app 8 TEMPLATE = app
9 CONFIG += qt warn_on release 9 CONFIG += qt warn_on release
10 QMAKE_EXTENSION_SHLIB= dylib 10 QMAKE_EXTENSION_SHLIB= dylib
11 11
12 QMAKE_CC = $(TB)cc 12 QMAKE_CC = $(TB)cc
13 QMAKE_LEX = flex 13 QMAKE_LEX = flex
14 QMAKE_LEXFLAGS = 14 QMAKE_LEXFLAGS =
15 QMAKE_YACC = yacc 15 QMAKE_YACC = yacc
16 QMAKE_YACCFLAGS = -d 16 QMAKE_YACCFLAGS = -d
17 QMAKE_CFLAGS = -pipe $(CFLAGS_EXTRA) 17 QMAKE_CFLAGS = -pipe $(CFLAGS_EXTRA)
18 QMAKE_CFLAGS_WARN_ON= -Wall -W 18 QMAKE_CFLAGS_WARN_ON= -Wall -W
19 QMAKE_CFLAGS_WARN_OFF= 19 QMAKE_CFLAGS_WARN_OFF=
20 QMAKE_CFLAGS_RELEASE= $(if $(CFLAGS_RELEASE),$(CFLAGS_RELEASE), -O2 -fno-default-inline) 20 QMAKE_CFLAGS_RELEASE= $(if $(CFLAGS_RELEASE),$(CFLAGS_RELEASE), -O2 -fno-default-inline)
21 QMAKE_CFLAGS_DEBUG= -g 21 QMAKE_CFLAGS_DEBUG= -g
22 QMAKE_CFLAGS_SHLIB= -fPIC 22 QMAKE_CFLAGS_SHLIB= -fPIC
23 QMAKE_CFLAGS_YACC= -Wno-unused -Wno-parentheses 23 QMAKE_CFLAGS_YACC= -Wno-unused -Wno-parentheses
24 QMAKE_CFLAGS_THREAD= -D_REENTRANT 24 QMAKE_CFLAGS_THREAD= -D_REENTRANT
25 25
26 QMAKE_CXX = $(TB)c++ 26 QMAKE_CXX = $(TB)c++
27 QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -DQT_NO_QWS_TRANSFORMED -DQWS -fno-exceptions -fno-rtti $(CXXFLAGS_EXTRA) 27 QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -DQT_NO_QWS_TRANSFORMED -DQWS -fno-exceptions -fno-rtti $(CXXFLAGS_EXTRA) -DQ_OS_MACX -DQT_NO_SOUND -DOPIE_NO_OVERRIDE_QT
28 QMAKE_CXXFLAGS_WARN_ON= $$QMAKE_CFLAGS_WARN_ON 28 QMAKE_CXXFLAGS_WARN_ON= $$QMAKE_CFLAGS_WARN_ON
29 QMAKE_CXXFLAGS_WARN_OFF= $$QMAKE_CFLAGS_WARN_OFF 29 QMAKE_CXXFLAGS_WARN_OFF= $$QMAKE_CFLAGS_WARN_OFF
30 QMAKE_CXXFLAGS_RELEASE= $$QMAKE_CFLAGS_RELEASE 30 QMAKE_CXXFLAGS_RELEASE= $$QMAKE_CFLAGS_RELEASE
31 QMAKE_CXXFLAGS_DEBUG= $$QMAKE_CFLAGS_DEBUG 31 QMAKE_CXXFLAGS_DEBUG= $$QMAKE_CFLAGS_DEBUG
32 QMAKE_CXXFLAGS_SHLIB= $$QMAKE_CFLAGS_SHLIB 32 QMAKE_CXXFLAGS_SHLIB= $$QMAKE_CFLAGS_SHLIB
33 QMAKE_CXXFLAGS_YACC= $$QMAKE_CFLAGS_YACC 33 QMAKE_CXXFLAGS_YACC= $$QMAKE_CFLAGS_YACC
34 QMAKE_CXXFLAGS_THREAD= $$QMAKE_CFLAGS_THREAD 34 QMAKE_CXXFLAGS_THREAD= $$QMAKE_CFLAGS_THREAD
35 35
36 QMAKE_INCDIR = 36 QMAKE_INCDIR =
37 QMAKE_LIBDIR = 37 QMAKE_LIBDIR =
38 QMAKE_INCDIR_X11= 38 QMAKE_INCDIR_X11=
39 QMAKE_LIBDIR_X11= 39 QMAKE_LIBDIR_X11=
40 QMAKE_INCDIR_QT = $(QTDIR)/include 40 QMAKE_INCDIR_QT = $(QTDIR)/include
41 QMAKE_LIBDIR_QT = $(QTDIR)/lib 41 QMAKE_LIBDIR_QT = $(QTDIR)/lib
42 QMAKE_INCDIR_OPENGL= /usr/X11R6/include 42 QMAKE_INCDIR_OPENGL= /usr/X11R6/include
43 QMAKE_LIBDIR_OPENGL= /usr/X11R6/lib 43 QMAKE_LIBDIR_OPENGL= /usr/X11R6/lib
44 44
45 QMAKE_LINK = $$QMAKE_CXX 45 QMAKE_LINK = $$QMAKE_CXX
46 QMAKE_LINK_SHLIB= $$QMAKE_CXX 46 QMAKE_LINK_SHLIB= $$QMAKE_CXX
47 QMAKE_LFLAGS = $(LFLAGS_EXTRA) 47 QMAKE_LFLAGS = $(LFLAGS_EXTRA)
48 QMAKE_LFLAGS_RELEASE= 48 QMAKE_LFLAGS_RELEASE=
49 QMAKE_LFLAGS_DEBUG= 49 QMAKE_LFLAGS_DEBUG=
50 QMAKE_LFLAGS_SHLIB= -dynamiclib 50 QMAKE_LFLAGS_SHLIB= -dynamiclib
51QMAKE_LFLAGS_INCREMENTAL = -undefined suppress -flat_namespace 51QMAKE_LFLAGS_INCREMENTAL = -undefined suppress -flat_namespace
52 QMAKE_LFLAGS_PLUGIN= -bundle 52 QMAKE_LFLAGS_PLUGIN= -bundle
53 QMAKE_LFLAGS_SONAME= 53 QMAKE_LFLAGS_SONAME=
54 QMAKE_LFLAGS_THREAD= 54 QMAKE_LFLAGS_THREAD=
55 QMAKE_RPATH = 55 QMAKE_RPATH =
56 56
57 QMAKE_LIBS = $(LIBS_EXTRA) 57 QMAKE_LIBS = $(LIBS_EXTRA)
58 QMAKE_LIBS_X11 = 58 QMAKE_LIBS_X11 =
59 QMAKE_LIBS_X11SM= 59 QMAKE_LIBS_X11SM=
60 QMAKE_LIBS_QT = -lqte 60 QMAKE_LIBS_QT = -lqte
61 #QMAKE_LIBS_QT = libqte.dylib
61 QMAKE_LIBS_QT_THREAD= -lqte-mt 62 QMAKE_LIBS_QT_THREAD= -lqte-mt
62 QMAKE_LIBS_QT_OPENGL= -lqgl 63 QMAKE_LIBS_QT_OPENGL= -lqgl
63 QMAKE_LIBS_THREAD= 64 QMAKE_LIBS_THREAD=
64 65
65 QMAKE_MOC = $(QTDIR)/bin/moc 66 QMAKE_MOC = $(QTDIR)/bin/moc
66 QMAKE_UIC = $(QTDIR)/bin/uic 67 QMAKE_UIC = $(QTDIR)/bin/uic
67 68
68 QMAKE_AR = ar cqs 69 QMAKE_AR = ar cqs
69 QMAKE_RANLIB = 70 QMAKE_RANLIB =
70 71
71 QMAKE_TAR = tar -cf 72 QMAKE_TAR = tar -cf
72 QMAKE_GZIP = gzip -9f 73 QMAKE_GZIP = gzip -9f
73 74
74 QMAKE_COPY = cp -f 75 QMAKE_COPY = cp -f
75 QMAKE_MOVE = mv -f 76 QMAKE_MOVE = mv -f
76 QMAKE_DEL_FILE = rm -f 77 QMAKE_DEL_FILE = rm -f
77 QMAKE_DEL_DIR = rmdir 78 QMAKE_DEL_DIR = rmdir
78 79
79 80
80 81
diff --git a/noncore/applets/networkapplet/networkapplet.pro b/noncore/applets/networkapplet/networkapplet.pro
index ec58455..368f80e 100644
--- a/noncore/applets/networkapplet/networkapplet.pro
+++ b/noncore/applets/networkapplet/networkapplet.pro
@@ -1,15 +1,15 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = networkapplet.h 3HEADERS = networkapplet.h
4SOURCES = networkapplet.cpp 4SOURCES = networkapplet.cpp
5TARGET = networkapplet 5TARGET = networkapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe -lopiecore2 -lopieui2 -lopienet2 9LIBS += -lqpe -lopiecore2 -lopieui2 -lopienet2
10VERSION = 0.1.0 10VERSION = 0.1.0
11MOC_DIR = moc 11MOC_DIR = moc
12OBJECTS_DIR = obj 12OBJECTS_DIR = obj
13 13
14 14
15include ( $(OPIEDIR)/include.pro ) 15include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/applets/notesapplet/notesapplet.pro b/noncore/applets/notesapplet/notesapplet.pro
index e4558f7..3075948 100644
--- a/noncore/applets/notesapplet/notesapplet.pro
+++ b/noncore/applets/notesapplet/notesapplet.pro
@@ -1,16 +1,16 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = notes.h notesappletimpl.h 3HEADERS = notes.h notesappletimpl.h
4SOURCES = notes.cpp notesappletimpl.cpp 4SOURCES = notes.cpp notesappletimpl.cpp
5TARGET = notesapplet 5TARGET = notesapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10VERSION = 1.0.0 10VERSION = 1.0.0
11MOC_DIR=opieobj 11MOC_DIR=opieobj
12OBJECTS_DIR=opieobj 12OBJECTS_DIR=opieobj
13 13
14 14
15 15
16include ( $(OPIEDIR)/include.pro ) 16include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/applets/wirelessapplet/wirelessapplet.pro b/noncore/applets/wirelessapplet/wirelessapplet.pro
index 501327d..aee89d7 100644
--- a/noncore/applets/wirelessapplet/wirelessapplet.pro
+++ b/noncore/applets/wirelessapplet/wirelessapplet.pro
@@ -1,33 +1,33 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = wireless.h wirelessappletimpl.h networkinfo.h mgraph.h advancedconfig.h 3HEADERS = wireless.h wirelessappletimpl.h networkinfo.h mgraph.h advancedconfig.h
4SOURCES = wireless.cpp wirelessappletimpl.cpp networkinfo.cpp mgraph.cpp advancedconfig.cpp 4SOURCES = wireless.cpp wirelessappletimpl.cpp networkinfo.cpp mgraph.cpp advancedconfig.cpp
5INTERFACES = advancedconfigbase.ui 5INTERFACES = advancedconfigbase.ui
6TARGET = wirelessapplet 6TARGET = wirelessapplet
7DESTDIR = $(OPIEDIR)/plugins/applets 7DESTDIR = $(OPIEDIR)/plugins/applets
8INCLUDEPATH += $(OPIEDIR)/include 8INCLUDEPATH += $(OPIEDIR)/include
9DEPENDPATH += ../$(OPIEDIR)/include 9DEPENDPATH += ../$(OPIEDIR)/include
10LIBS += -lqpe 10LIBS += -lqpe
11VERSION = 0.1.0 11VERSION = 0.1.0
12 12
13TRANSLATIONS = ../../../i18n/de/libwirelessapplet.ts \ 13TRANSLATIONS = ../../../i18n/de/libwirelessapplet.ts \
14 ../../../i18n/nl/libwirelessapplet.ts \ 14 ../../../i18n/nl/libwirelessapplet.ts \
15 ../../../i18n/da/libwirelessapplet.ts \ 15 ../../../i18n/da/libwirelessapplet.ts \
16 ../../../i18n/xx/libwirelessapplet.ts \ 16 ../../../i18n/xx/libwirelessapplet.ts \
17 ../../../i18n/en/libwirelessapplet.ts \ 17 ../../../i18n/en/libwirelessapplet.ts \
18 ../../../i18n/es/libwirelessapplet.ts \ 18 ../../../i18n/es/libwirelessapplet.ts \
19 ../../../i18n/fr/libwirelessapplet.ts \ 19 ../../../i18n/fr/libwirelessapplet.ts \
20 ../../../i18n/hu/libwirelessapplet.ts \ 20 ../../../i18n/hu/libwirelessapplet.ts \
21 ../../../i18n/ja/libwirelessapplet.ts \ 21 ../../../i18n/ja/libwirelessapplet.ts \
22 ../../../i18n/ko/libwirelessapplet.ts \ 22 ../../../i18n/ko/libwirelessapplet.ts \
23 ../../../i18n/no/libwirelessapplet.ts \ 23 ../../../i18n/no/libwirelessapplet.ts \
24 ../../../i18n/pl/libwirelessapplet.ts \ 24 ../../../i18n/pl/libwirelessapplet.ts \
25 ../../../i18n/pt/libwirelessapplet.ts \ 25 ../../../i18n/pt/libwirelessapplet.ts \
26 ../../../i18n/pt_BR/libwirelessapplet.ts \ 26 ../../../i18n/pt_BR/libwirelessapplet.ts \
27 ../../../i18n/sl/libwirelessapplet.ts \ 27 ../../../i18n/sl/libwirelessapplet.ts \
28 ../../../i18n/zh_CN/libwirelessapplet.ts \ 28 ../../../i18n/zh_CN/libwirelessapplet.ts \
29 ../../../i18n/zh_TW/libwirelessapplet.ts 29 ../../../i18n/zh_TW/libwirelessapplet.ts
30 30
31 31
32 32
33include ( $(OPIEDIR)/include.pro ) 33include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/decorations/flat/flat.pro b/noncore/decorations/flat/flat.pro
index e691339..f3d63ea 100644
--- a/noncore/decorations/flat/flat.pro
+++ b/noncore/decorations/flat/flat.pro
@@ -1,15 +1,15 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS = flat.h 3 HEADERS = flat.h
4 SOURCES = flat.cpp 4 SOURCES = flat.cpp
5 TARGET = flat 5 TARGET = flat
6 DESTDIR = $(OPIEDIR)/plugins/decorations 6 DESTDIR = $(OPIEDIR)/plugins/decorations
7 INCLUDEPATH+= $(OPIEDIR)/include 7 INCLUDEPATH+= $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12 12
13 13
14 14
15include ( $(OPIEDIR)/include.pro ) 15include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/decorations/liquid/liquid.pro b/noncore/decorations/liquid/liquid.pro
index 7c310a6..2afed26 100644
--- a/noncore/decorations/liquid/liquid.pro
+++ b/noncore/decorations/liquid/liquid.pro
@@ -1,14 +1,14 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG = qt embedded release warn_on 2CONFIG = qt plugin embedded release warn_on
3SOURCES = liquid.cpp 3SOURCES = liquid.cpp
4HEADERS = liquid.h 4HEADERS = liquid.h
5LIBS += -lqpe 5LIBS += -lqpe
6INCLUDEPATH += $(OPIEDIR)/include 6INCLUDEPATH += $(OPIEDIR)/include
7DESTDIR = $(OPIEDIR)/plugins/decorations 7DESTDIR = $(OPIEDIR)/plugins/decorations
8TARGET = liquid 8TARGET = liquid
9VERSION = 1.0.0 9VERSION = 1.0.0
10 10
11 11
12 12
13 13
14include ( $(OPIEDIR)/include.pro ) 14include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/decorations/polished/polished.pro b/noncore/decorations/polished/polished.pro
index 1ee940e..d3f3dcc 100644
--- a/noncore/decorations/polished/polished.pro
+++ b/noncore/decorations/polished/polished.pro
@@ -1,15 +1,15 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS = polished.h 3 HEADERS = polished.h
4 SOURCES = polished.cpp 4 SOURCES = polished.cpp
5 TARGET = polished 5 TARGET = polished
6 DESTDIR = $(OPIEDIR)/plugins/decorations 6 DESTDIR = $(OPIEDIR)/plugins/decorations
7 INCLUDEPATH+= $(OPIEDIR)/include 7 INCLUDEPATH+= $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12 12
13 13
14 14
15include ( $(OPIEDIR)/include.pro ) 15include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/net/opietooth/applet/applet.pro b/noncore/net/opietooth/applet/applet.pro
index 23c1d0a..4efcb42 100644
--- a/noncore/net/opietooth/applet/applet.pro
+++ b/noncore/net/opietooth/applet/applet.pro
@@ -1,33 +1,33 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on release 2CONFIG += qt plugin warn_on release
3HEADERS = bluezapplet.h bluezappletimpl.h 3HEADERS = bluezapplet.h bluezappletimpl.h
4SOURCES = bluezapplet.cpp bluezappletimpl.cpp 4SOURCES = bluezapplet.cpp bluezappletimpl.cpp
5TARGET = bluetoothapplet 5TARGET = bluetoothapplet
6DESTDIR = $(OPIEDIR)/plugins/applets 6DESTDIR = $(OPIEDIR)/plugins/applets
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8INCLUDEPATH += $(OPIEDIR)/noncore/net/opietooth/lib 8INCLUDEPATH += $(OPIEDIR)/noncore/net/opietooth/lib
9DEPENDPATH += $(OPIEDIR)/include 9DEPENDPATH += $(OPIEDIR)/include
10LIBS += -lqpe -lopietooth 10LIBS += -lqpe -lopietooth
11VERSION = 0.0.3 11VERSION = 0.0.3
12 12
13TRANSLATIONS = ../../../../i18n/de/libbluetoothapplet.ts \ 13TRANSLATIONS = ../../../../i18n/de/libbluetoothapplet.ts \
14 ../../../../i18n/nl/libbluetoothapplet.ts \ 14 ../../../../i18n/nl/libbluetoothapplet.ts \
15 ../../../../i18n/da/libbluetoothapplet.ts \ 15 ../../../../i18n/da/libbluetoothapplet.ts \
16 ../../../../i18n/xx/libbluetoothapplet.ts \ 16 ../../../../i18n/xx/libbluetoothapplet.ts \
17 ../../../../i18n/en/libbluetoothapplet.ts \ 17 ../../../../i18n/en/libbluetoothapplet.ts \
18 ../../../../i18n/es/libbluetoothapplet.ts \ 18 ../../../../i18n/es/libbluetoothapplet.ts \
19 ../../../../i18n/fr/libbluetoothapplet.ts \ 19 ../../../../i18n/fr/libbluetoothapplet.ts \
20 ../../../../i18n/hu/libbluetoothapplet.ts \ 20 ../../../../i18n/hu/libbluetoothapplet.ts \
21 ../../../../i18n/ja/libbluetoothapplet.ts \ 21 ../../../../i18n/ja/libbluetoothapplet.ts \
22 ../../../../i18n/ko/libbluetoothapplet.ts \ 22 ../../../../i18n/ko/libbluetoothapplet.ts \
23 ../../../../i18n/no/libbluetoothapplet.ts \ 23 ../../../../i18n/no/libbluetoothapplet.ts \
24 ../../../../i18n/pl/libbluetoothapplet.ts \ 24 ../../../../i18n/pl/libbluetoothapplet.ts \
25 ../../../../i18n/pt/libbluetoothapplet.ts \ 25 ../../../../i18n/pt/libbluetoothapplet.ts \
26 ../../../../i18n/pt_BR/libbluetoothapplet.ts \ 26 ../../../../i18n/pt_BR/libbluetoothapplet.ts \
27 ../../../../i18n/sl/libbluetoothapplet.ts \ 27 ../../../../i18n/sl/libbluetoothapplet.ts \
28 ../../../../i18n/zh_CN/libbluetoothapplet.ts \ 28 ../../../../i18n/zh_CN/libbluetoothapplet.ts \
29 ../../../../i18n/zh_TW/libbluetoothapplet.ts 29 ../../../../i18n/zh_TW/libbluetoothapplet.ts
30 30
31 31
32 32
33include ( $(OPIEDIR)/include.pro ) 33include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/settings/networksettings/ppp/ppp.pro b/noncore/settings/networksettings/ppp/ppp.pro
index 84acd0e..dc78eb1 100644
--- a/noncore/settings/networksettings/ppp/ppp.pro
+++ b/noncore/settings/networksettings/ppp/ppp.pro
@@ -1,17 +1,17 @@
1#TEMPLATE = app 1#TEMPLATE = app
2# 2#
3TEMPLATE = lib 3TEMPLATE = lib
4#CONFIG += qt warn_on release 4#CONFIG += qt plugin warn_on release
5 CONFIG += qt warn_on debug 5 CONFIG += qt plugin warn_on debug
6DESTDIR = $(OPIEDIR)/plugins/networksettings 6DESTDIR = $(OPIEDIR)/plugins/networksettings
7 HEADERS = pppmodule.h modem.h modeminfo.h pppdata.h kpppconfig.h pppdata.h runtests.h general.h modemcmds.h conwindow.h accounts.h connect.h edit.h scriptedit.h pppdargs.h iplined.h pwentry.h pppconfig.h interfaceinformationppp.h interfaceppp.h authwidget.h chooserwidget.h devices.h 7 HEADERS = pppmodule.h modem.h modeminfo.h pppdata.h kpppconfig.h pppdata.h runtests.h general.h modemcmds.h conwindow.h accounts.h connect.h edit.h scriptedit.h pppdargs.h iplined.h pwentry.h pppconfig.h interfaceinformationppp.h interfaceppp.h authwidget.h chooserwidget.h devices.h
8 SOURCES = pppmodule.cpp modem.cpp modeminfo.cpp pppdata.cpp runtests.cpp general.cpp modemcmds.cpp conwindow.cpp accounts.cpp connect.cpp edit.cpp scriptedit.cpp pppdargs.cpp iplined.cpp pwentry.cpp pppconfig.cpp interfaceinformationppp.cpp interfaceppp.cpp authwidget.cpp chooserwidget.cpp devices.cpp 8 SOURCES = pppmodule.cpp modem.cpp modeminfo.cpp pppdata.cpp runtests.cpp general.cpp modemcmds.cpp conwindow.cpp accounts.cpp connect.cpp edit.cpp scriptedit.cpp pppdargs.cpp iplined.cpp pwentry.cpp pppconfig.cpp interfaceinformationppp.cpp interfaceppp.cpp authwidget.cpp chooserwidget.cpp devices.cpp
9 INCLUDEPATH+= $(OPIEDIR)/include ../ ../interfaces/ 9 INCLUDEPATH+= $(OPIEDIR)/include ../ ../interfaces/
10 DEPENDPATH+= $(OPIEDIR)/include 10 DEPENDPATH+= $(OPIEDIR)/include
11LIBS += -lqpe -L../interfaces/ -linterfaces 11LIBS += -lqpe -L../interfaces/ -linterfaces
12 TARGET = kppp 12 TARGET = kppp
13 VERSION = 1.0.0 13 VERSION = 1.0.0
14 14
15 15
16 16
17include ( $(OPIEDIR)/include.pro ) 17include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/settings/networksettings/wlan/wlan.pro b/noncore/settings/networksettings/wlan/wlan.pro
index 82a5b2f..098ad1d 100644
--- a/noncore/settings/networksettings/wlan/wlan.pro
+++ b/noncore/settings/networksettings/wlan/wlan.pro
@@ -1,28 +1,28 @@
1# 1#
2TEMPLATE = lib 2TEMPLATE = lib
3#TEMPLATE = app 3#TEMPLATE = app
4CONFIG += qt warn_on release 4CONFIG += qt plugin warn_on release
5 #CONFIG += qt warn_on debug 5 #CONFIG += qt plugin warn_on debug
6DESTDIR = $(OPIEDIR)/plugins/networksettings 6DESTDIR = $(OPIEDIR)/plugins/networksettings
7 HEADERS = infoimp.h wlanmodule.h wextensions.h keyedit.h 7 HEADERS = infoimp.h wlanmodule.h wextensions.h keyedit.h
8 SOURCES = infoimp.cpp wlanmodule.cpp wextensions.cpp keyedit.cpp 8 SOURCES = infoimp.cpp wlanmodule.cpp wextensions.cpp keyedit.cpp
9 INCLUDEPATH+= $(OPIEDIR)/include ../ ../interfaces/ 9 INCLUDEPATH+= $(OPIEDIR)/include ../ ../interfaces/
10 DEPENDPATH+= $(OPIEDIR)/include 10 DEPENDPATH+= $(OPIEDIR)/include
11LIBS += -lqpe -L../interfaces/ -linterfaces -lopienet2 11LIBS += -lqpe -L../interfaces/ -linterfaces -lopienet2
12 INTERFACES= wlan.ui info.ui 12 INTERFACES= wlan.ui info.ui
13 TARGET = wlan 13 TARGET = wlan
14 VERSION = 1.0.0 14 VERSION = 1.0.0
15 15
16#CONFIG += wirelessopts 16#CONFIG += wirelessopts
17 17
18wirelessopts { 18wirelessopts {
19 HEADERS+= wlanimp.h 19 HEADERS+= wlanimp.h
20 SOURCES+= wlanimp.cpp 20 SOURCES+= wlanimp.cpp
21} 21}
22 22
23! wirelessopts { 23! wirelessopts {
24 HEADERS+= wlanimp2.h 24 HEADERS+= wlanimp2.h
25 SOURCES += wlanimp2.cpp 25 SOURCES += wlanimp2.cpp
26} 26}
27 27
28include ( $(OPIEDIR)/include.pro ) 28include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/styles/flat/flat.pro b/noncore/styles/flat/flat.pro
index ed25d5c..2721e14 100644
--- a/noncore/styles/flat/flat.pro
+++ b/noncore/styles/flat/flat.pro
@@ -1,15 +1,15 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS = flat.h 3 HEADERS = flat.h
4 SOURCES = flat.cpp 4 SOURCES = flat.cpp
5 TARGET = flatstyle 5 TARGET = flatstyle
6 DESTDIR = $(OPIEDIR)/plugins/styles 6 DESTDIR = $(OPIEDIR)/plugins/styles
7 INCLUDEPATH+= $(OPIEDIR)/include 7 INCLUDEPATH+= $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12 12
13 13
14 14
15include ( $(OPIEDIR)/include.pro ) 15include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/styles/fresh/fresh.pro b/noncore/styles/fresh/fresh.pro
index 88a8de3..564c5cd 100644
--- a/noncore/styles/fresh/fresh.pro
+++ b/noncore/styles/fresh/fresh.pro
@@ -1,15 +1,15 @@
1 TEMPLATE= lib 1 TEMPLATE= lib
2 CONFIG += qt warn_on release 2 CONFIG += qt plugin warn_on release
3 HEADERS = fresh.h 3 HEADERS = fresh.h
4 SOURCES = fresh.cpp 4 SOURCES = fresh.cpp
5 TARGET = freshstyle 5 TARGET = freshstyle
6 DESTDIR = $(OPIEDIR)/plugins/styles 6 DESTDIR = $(OPIEDIR)/plugins/styles
7 INCLUDEPATH+= $(OPIEDIR)/include 7 INCLUDEPATH+= $(OPIEDIR)/include
8DEPENDPATH += $(OPIEDIR)/include 8DEPENDPATH += $(OPIEDIR)/include
9LIBS += -lqpe 9LIBS += -lqpe
10 VERSION = 1.0.0 10 VERSION = 1.0.0
11 11
12 12
13 13
14 14
15include ( $(OPIEDIR)/include.pro ) 15include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/styles/liquid/liquid.pro b/noncore/styles/liquid/liquid.pro
index 9241eba..4e1c575 100644
--- a/noncore/styles/liquid/liquid.pro
+++ b/noncore/styles/liquid/liquid.pro
@@ -1,39 +1,39 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG = qt embedded release warn_on 2CONFIG = qt plugin embedded release warn_on
3SOURCES = liquid.cpp \ 3SOURCES = liquid.cpp \
4 effects.cpp \ 4 effects.cpp \
5 liquidset.cpp \ 5 liquidset.cpp \
6 plugin.cpp 6 plugin.cpp
7 7
8HEADERS = liquid.h \ 8HEADERS = liquid.h \
9 effects.h \ 9 effects.h \
10 liquidset.h \ 10 liquidset.h \
11 plugin.h 11 plugin.h
12 12
13LIBS += -lqpe -lopie 13LIBS += -lqpe -lopie
14INCLUDEPATH += $(OPIEDIR)/include 14INCLUDEPATH += $(OPIEDIR)/include
15DESTDIR = $(OPIEDIR)/plugins/styles 15DESTDIR = $(OPIEDIR)/plugins/styles
16TARGET = liquid 16TARGET = liquid
17VERSION = 1.0.0 17VERSION = 1.0.0
18 18
19TRANSLATIONS = ../../../i18n/de/libliquid.ts \ 19TRANSLATIONS = ../../../i18n/de/libliquid.ts \
20 ../../../i18n/nl/libliquid.ts \ 20 ../../../i18n/nl/libliquid.ts \
21 ../../../i18n/da/libliquid.ts \ 21 ../../../i18n/da/libliquid.ts \
22 ../../../i18n/xx/libliquid.ts \ 22 ../../../i18n/xx/libliquid.ts \
23 ../../../i18n/en/libliquid.ts \ 23 ../../../i18n/en/libliquid.ts \
24 ../../../i18n/es/libliquid.ts \ 24 ../../../i18n/es/libliquid.ts \
25 ../../../i18n/fr/libliquid.ts \ 25 ../../../i18n/fr/libliquid.ts \
26 ../../../i18n/hu/libliquid.ts \ 26 ../../../i18n/hu/libliquid.ts \
27 ../../../i18n/ja/libliquid.ts \ 27 ../../../i18n/ja/libliquid.ts \
28 ../../../i18n/ko/libliquid.ts \ 28 ../../../i18n/ko/libliquid.ts \
29 ../../../i18n/no/libliquid.ts \ 29 ../../../i18n/no/libliquid.ts \
30 ../../../i18n/pl/libliquid.ts \ 30 ../../../i18n/pl/libliquid.ts \
31 ../../../i18n/pt/libliquid.ts \ 31 ../../../i18n/pt/libliquid.ts \
32 ../../../i18n/pt_BR/libliquid.ts \ 32 ../../../i18n/pt_BR/libliquid.ts \
33 ../../../i18n/sl/libliquid.ts \ 33 ../../../i18n/sl/libliquid.ts \
34 ../../../i18n/zh_CN/libliquid.ts \ 34 ../../../i18n/zh_CN/libliquid.ts \
35 ../../../i18n/zh_TW/libliquid.ts 35 ../../../i18n/zh_TW/libliquid.ts
36 36
37 37
38 38
39include ( $(OPIEDIR)/include.pro ) 39include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/styles/metal/metal.pro b/noncore/styles/metal/metal.pro
index 3bb376d..8633284 100644
--- a/noncore/styles/metal/metal.pro
+++ b/noncore/styles/metal/metal.pro
@@ -1,32 +1,32 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG = qt embedded release warn_on 2CONFIG = qt plugin embedded release warn_on
3SOURCES = metal.cpp plugin.cpp 3SOURCES = metal.cpp plugin.cpp
4 4
5HEADERS = metal.h plugin.h 5HEADERS = metal.h plugin.h
6LIBS += -lqpe 6LIBS += -lqpe
7INCLUDEPATH += $(OPIEDIR)/include 7INCLUDEPATH += $(OPIEDIR)/include
8DESTDIR = $(OPIEDIR)/plugins/styles 8DESTDIR = $(OPIEDIR)/plugins/styles
9TARGET = metal 9TARGET = metal
10VERSION = 1.0.0 10VERSION = 1.0.0
11 11
12TRANSLATIONS = ../../../i18n/de/libmetal.ts \ 12TRANSLATIONS = ../../../i18n/de/libmetal.ts \
13 ../../../i18n/nl/libmetal.ts \ 13 ../../../i18n/nl/libmetal.ts \
14 ../../../i18n/da/libmetal.ts \ 14 ../../../i18n/da/libmetal.ts \
15 ../../../i18n/xx/libmetal.ts \ 15 ../../../i18n/xx/libmetal.ts \
16 ../../../i18n/en/libmetal.ts \ 16 ../../../i18n/en/libmetal.ts \
17 ../../../i18n/es/libmetal.ts \ 17 ../../../i18n/es/libmetal.ts \
18 ../../../i18n/fr/libmetal.ts \ 18 ../../../i18n/fr/libmetal.ts \
19 ../../../i18n/hu/libmetal.ts \ 19 ../../../i18n/hu/libmetal.ts \
20 ../../../i18n/ja/libmetal.ts \ 20 ../../../i18n/ja/libmetal.ts \
21 ../../../i18n/ko/libmetal.ts \ 21 ../../../i18n/ko/libmetal.ts \
22 ../../../i18n/no/libmetal.ts \ 22 ../../../i18n/no/libmetal.ts \
23 ../../../i18n/pl/libmetal.ts \ 23 ../../../i18n/pl/libmetal.ts \
24 ../../../i18n/pt/libmetal.ts \ 24 ../../../i18n/pt/libmetal.ts \
25 ../../../i18n/pt_BR/libmetal.ts \ 25 ../../../i18n/pt_BR/libmetal.ts \
26 ../../../i18n/sl/libmetal.ts \ 26 ../../../i18n/sl/libmetal.ts \
27 ../../../i18n/zh_CN/libmetal.ts \ 27 ../../../i18n/zh_CN/libmetal.ts \
28 ../../../i18n/zh_TW/libmetal.ts 28 ../../../i18n/zh_TW/libmetal.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/styles/theme/theme.pro b/noncore/styles/theme/theme.pro
index f7ed324..4f84f3f 100644
--- a/noncore/styles/theme/theme.pro
+++ b/noncore/styles/theme/theme.pro
@@ -1,42 +1,42 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG = qt embedded debug warn_on 2CONFIG = qt plugin embedded debug warn_on
3SOURCES = ogfxeffect.cpp \ 3SOURCES = ogfxeffect.cpp \
4 othemestyle.cpp \ 4 othemestyle.cpp \
5 othemebase.cpp \ 5 othemebase.cpp \
6 themeset.cpp \ 6 themeset.cpp \
7 plugin.cpp 7 plugin.cpp
8 8
9HEADERS = ogfxeffect.h \ 9HEADERS = ogfxeffect.h \
10 othemebase.h \ 10 othemebase.h \
11 othemestyle.h \ 11 othemestyle.h \
12 themeset.h \ 12 themeset.h \
13 plugin.h 13 plugin.h
14 14
15 15
16LIBS += -lqpe 16LIBS += -lqpe
17INCLUDEPATH += $(OPIEDIR)/include 17INCLUDEPATH += $(OPIEDIR)/include
18DESTDIR = $(OPIEDIR)/plugins/styles 18DESTDIR = $(OPIEDIR)/plugins/styles
19TARGET = theme 19TARGET = theme
20VERSION = 1.0.0 20VERSION = 1.0.0
21 21
22TRANSLATIONS = ../../../i18n/de/libtheme.ts \ 22TRANSLATIONS = ../../../i18n/de/libtheme.ts \
23 ../../../i18n/nl/libtheme.ts \ 23 ../../../i18n/nl/libtheme.ts \
24 ../../../i18n/da/libtheme.ts \ 24 ../../../i18n/da/libtheme.ts \
25 ../../../i18n/xx/libtheme.ts \ 25 ../../../i18n/xx/libtheme.ts \
26 ../../../i18n/en/libtheme.ts \ 26 ../../../i18n/en/libtheme.ts \
27 ../../../i18n/es/libtheme.ts \ 27 ../../../i18n/es/libtheme.ts \
28 ../../../i18n/fr/libtheme.ts \ 28 ../../../i18n/fr/libtheme.ts \
29 ../../../i18n/hu/libtheme.ts \ 29 ../../../i18n/hu/libtheme.ts \
30 ../../../i18n/ja/libtheme.ts \ 30 ../../../i18n/ja/libtheme.ts \
31 ../../../i18n/ko/libtheme.ts \ 31 ../../../i18n/ko/libtheme.ts \
32 ../../../i18n/no/libtheme.ts \ 32 ../../../i18n/no/libtheme.ts \
33 ../../../i18n/pl/libtheme.ts \ 33 ../../../i18n/pl/libtheme.ts \
34 ../../../i18n/pt/libtheme.ts \ 34 ../../../i18n/pt/libtheme.ts \
35 ../../../i18n/pt_BR/libtheme.ts \ 35 ../../../i18n/pt_BR/libtheme.ts \
36 ../../../i18n/sl/libtheme.ts \ 36 ../../../i18n/sl/libtheme.ts \
37 ../../../i18n/zh_CN/libtheme.ts \ 37 ../../../i18n/zh_CN/libtheme.ts \
38 ../../../i18n/zh_TW/libtheme.ts 38 ../../../i18n/zh_TW/libtheme.ts
39 39
40 40
41 41
42include ( $(OPIEDIR)/include.pro ) 42include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/todayplugins/fortune/fortune.pro b/noncore/todayplugins/fortune/fortune.pro
index 0a0d5b9..ac503c3 100644
--- a/noncore/todayplugins/fortune/fortune.pro
+++ b/noncore/todayplugins/fortune/fortune.pro
@@ -1,41 +1,41 @@
1TEMPLATE = lib 1TEMPLATE = lib
2#CONFIG -= moc 2#CONFIG -= moc
3CONFIG += qt release 3CONFIG += qt plugin release
4 4
5# Input 5# Input
6HEADERS = fortuneplugin.h fortunepluginimpl.h \ 6HEADERS = fortuneplugin.h fortunepluginimpl.h \
7 fortunepluginwidget.h 7 fortunepluginwidget.h
8SOURCES = fortuneplugin.cpp fortunepluginimpl.cpp \ 8SOURCES = fortuneplugin.cpp fortunepluginimpl.cpp \
9 fortunepluginwidget.cpp 9 fortunepluginwidget.cpp
10 10
11INCLUDEPATH += $(OPIEDIR)/include \ 11INCLUDEPATH += $(OPIEDIR)/include \
12 ../ ../library 12 ../ ../library
13DEPENDPATH += $(OPIEDIR)/include \ 13DEPENDPATH += $(OPIEDIR)/include \
14 ../ ../library 14 ../ ../library
15 15
16LIBS+= -lqpe -lopie 16LIBS+= -lqpe -lopie
17 17
18DESTDIR = $(OPIEDIR)/plugins/today 18DESTDIR = $(OPIEDIR)/plugins/today
19TARGET = todayfortuneplugin 19TARGET = todayfortuneplugin
20 20
21TRANSLATIONS = ../../../i18n/de/libtodayfortuneplugin.ts \ 21TRANSLATIONS = ../../../i18n/de/libtodayfortuneplugin.ts \
22 ../../../i18n/nl/libtodayfortuneplugin.ts \ 22 ../../../i18n/nl/libtodayfortuneplugin.ts \
23 ../../../i18n/xx/libtodayfortuneplugin.ts \ 23 ../../../i18n/xx/libtodayfortuneplugin.ts \
24 ../../../i18n/en/libtodayfortuneplugin.ts \ 24 ../../../i18n/en/libtodayfortuneplugin.ts \
25 ../../../i18n/es/libtodayfortuneplugin.ts \ 25 ../../../i18n/es/libtodayfortuneplugin.ts \
26 ../../../i18n/fr/libtodayfortuneplugin.ts \ 26 ../../../i18n/fr/libtodayfortuneplugin.ts \
27 ../../../i18n/hu/libtodayfortuneplugin.ts \ 27 ../../../i18n/hu/libtodayfortuneplugin.ts \
28 ../../../i18n/ja/libtodayfortuneplugin.ts \ 28 ../../../i18n/ja/libtodayfortuneplugin.ts \
29 ../../../i18n/ko/libtodayfortuneplugin.ts \ 29 ../../../i18n/ko/libtodayfortuneplugin.ts \
30 ../../../i18n/no/libtodayfortuneplugin.ts \ 30 ../../../i18n/no/libtodayfortuneplugin.ts \
31 ../../../i18n/pl/libtodayfortuneplugin.ts \ 31 ../../../i18n/pl/libtodayfortuneplugin.ts \
32 ../../../i18n/pt/libtodayfortuneplugin.ts \ 32 ../../../i18n/pt/libtodayfortuneplugin.ts \
33 ../../../i18n/pt_BR/libtodayfortuneplugin.ts \ 33 ../../../i18n/pt_BR/libtodayfortuneplugin.ts \
34 ../../../i18n/sl/libtodayfortuneplugin.ts \ 34 ../../../i18n/sl/libtodayfortuneplugin.ts \
35 ../../../i18n/zh_CN/libtodayfortuneplugin.ts \ 35 ../../../i18n/zh_CN/libtodayfortuneplugin.ts \
36 ../../../i18n/zh_TW/libtodayfortuneplugin.ts \ 36 ../../../i18n/zh_TW/libtodayfortuneplugin.ts \
37 ../../../i18n/it/libtodayfortuneplugin.ts \ 37 ../../../i18n/it/libtodayfortuneplugin.ts \
38 ../../../i18n/da/libtodayfortuneplugin.ts 38 ../../../i18n/da/libtodayfortuneplugin.ts
39 39
40 40
41include ( $(OPIEDIR)/include.pro ) 41include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerlib.pro b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerlib.pro
index c34be33..490a8f9 100644
--- a/noncore/todayplugins/stockticker/stocktickerlib/stocktickerlib.pro
+++ b/noncore/todayplugins/stockticker/stocktickerlib/stocktickerlib.pro
@@ -1,48 +1,48 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG -= moc 2CONFIG -= moc
3CONFIG += qt release 3CONFIG += qt plugin release
4 4
5HEADERS = stocktickerplugin.h stocktickerpluginimpl.h stocktickerpluginwidget.h stocktickerconfig.h \ 5HEADERS = stocktickerplugin.h stocktickerpluginimpl.h stocktickerpluginwidget.h stocktickerconfig.h \
6 ../libstocks/csv.h \ 6 ../libstocks/csv.h \
7 ../libstocks/http.h \ 7 ../libstocks/http.h \
8 ../libstocks/lists.h \ 8 ../libstocks/lists.h \
9 ../libstocks/stocks.h 9 ../libstocks/stocks.h
10SOURCES = stocktickerplugin.cpp stocktickerpluginimpl.cpp stocktickerpluginwidget.cpp stocktickerconfig.cpp \ 10SOURCES = stocktickerplugin.cpp stocktickerpluginimpl.cpp stocktickerpluginwidget.cpp stocktickerconfig.cpp \
11 ../libstocks/csv.c \ 11 ../libstocks/csv.c \
12 ../libstocks/currency.c \ 12 ../libstocks/currency.c \
13 ../libstocks/history.c \ 13 ../libstocks/history.c \
14 ../libstocks/http.c \ 14 ../libstocks/http.c \
15 ../libstocks/lists.c \ 15 ../libstocks/lists.c \
16 ../libstocks/stocks.c 16 ../libstocks/stocks.c
17 17
18INCLUDEPATH += $(OPIEDIR)/include \ 18INCLUDEPATH += $(OPIEDIR)/include \
19 ../ ../library 19 ../ ../library
20DEPENDPATH += $(OPIEDIR)/include \ 20DEPENDPATH += $(OPIEDIR)/include \
21 ../ ../library 21 ../ ../library
22 22
23LIBS+= -lqpe -lopie -lpthread 23LIBS+= -lqpe -lopie -lpthread
24TMAKE_CFLAGS += -D__UNIX__ 24TMAKE_CFLAGS += -D__UNIX__
25 25
26DESTDIR = $(OPIEDIR)/plugins/today 26DESTDIR = $(OPIEDIR)/plugins/today
27TARGET = todaystocktickerplugin 27TARGET = todaystocktickerplugin
28 28
29TRANSLATIONS = ../../../../i18n/de/libtodaystocktickerplugin.ts \ 29TRANSLATIONS = ../../../../i18n/de/libtodaystocktickerplugin.ts \
30 ../../../../i18n/nl/libtodaystocktickerplugin.ts \ 30 ../../../../i18n/nl/libtodaystocktickerplugin.ts \
31 ../../../../i18n/xx/libtodaystocktickerplugin.ts \ 31 ../../../../i18n/xx/libtodaystocktickerplugin.ts \
32 ../../../../i18n/en/libtodaystocktickerplugin.ts \ 32 ../../../../i18n/en/libtodaystocktickerplugin.ts \
33 ../../../../i18n/es/libtodaystocktickerplugin.ts \ 33 ../../../../i18n/es/libtodaystocktickerplugin.ts \
34 ../../../../i18n/fr/libtodaystocktickerplugin.ts \ 34 ../../../../i18n/fr/libtodaystocktickerplugin.ts \
35 ../../../../i18n/hu/libtodaystocktickerplugin.ts \ 35 ../../../../i18n/hu/libtodaystocktickerplugin.ts \
36 ../../../../i18n/ja/libtodaystocktickerplugin.ts \ 36 ../../../../i18n/ja/libtodaystocktickerplugin.ts \
37 ../../../../i18n/ko/libtodaystocktickerplugin.ts \ 37 ../../../../i18n/ko/libtodaystocktickerplugin.ts \
38 ../../../../i18n/no/libtodaystocktickerplugin.ts \ 38 ../../../../i18n/no/libtodaystocktickerplugin.ts \
39 ../../../../i18n/pl/libtodaystocktickerplugin.ts \ 39 ../../../../i18n/pl/libtodaystocktickerplugin.ts \
40 ../../../../i18n/pt/libtodaystocktickerplugin.ts \ 40 ../../../../i18n/pt/libtodaystocktickerplugin.ts \
41 ../../../../i18n/pt_BR/libtodaystocktickerplugin.ts \ 41 ../../../../i18n/pt_BR/libtodaystocktickerplugin.ts \
42 ../../../../i18n/sl/libtodaystocktickerplugin.ts \ 42 ../../../../i18n/sl/libtodaystocktickerplugin.ts \
43 ../../../../i18n/zh_CN/libtodaystocktickerplugin.ts \ 43 ../../../../i18n/zh_CN/libtodaystocktickerplugin.ts \
44 ../../../../i18n/zh_TW/libtodaystocktickerplugin.ts \ 44 ../../../../i18n/zh_TW/libtodaystocktickerplugin.ts \
45 ../../../../i18n/it/libtodaystocktickerplugin.ts \ 45 ../../../../i18n/it/libtodaystocktickerplugin.ts \
46 ../../../../i18n/da/libtodaystocktickerplugin.ts 46 ../../../../i18n/da/libtodaystocktickerplugin.ts
47 47
48include ( $(OPIEDIR)/include.pro ) 48include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/todayplugins/weather/weather.pro b/noncore/todayplugins/weather/weather.pro
index 2833e88..bd4b565 100644
--- a/noncore/todayplugins/weather/weather.pro
+++ b/noncore/todayplugins/weather/weather.pro
@@ -1,43 +1,43 @@
1TEMPLATE = lib 1TEMPLATE = lib
2#CONFIG -= moc 2#CONFIG -= moc
3CONFIG += qt release 3CONFIG += qt plugin release
4 4
5HEADERS = weatherplugin.h \ 5HEADERS = weatherplugin.h \
6 weatherpluginimpl.h \ 6 weatherpluginimpl.h \
7 weatherpluginwidget.h \ 7 weatherpluginwidget.h \
8 weatherconfig.h 8 weatherconfig.h
9 9
10SOURCES = weatherplugin.cpp \ 10SOURCES = weatherplugin.cpp \
11 weatherpluginimpl.cpp \ 11 weatherpluginimpl.cpp \
12 weatherpluginwidget.cpp \ 12 weatherpluginwidget.cpp \
13 weatherconfig.cpp 13 weatherconfig.cpp
14 14
15INCLUDEPATH += $(OPIEDIR)/include \ 15INCLUDEPATH += $(OPIEDIR)/include \
16 ../ ../library 16 ../ ../library
17DEPENDPATH += $(OPIEDIR)/include \ 17DEPENDPATH += $(OPIEDIR)/include \
18 ../ ../library 18 ../ ../library
19 19
20LIBS+= -lqpe -lopie 20LIBS+= -lqpe -lopie
21 21
22DESTDIR = $(OPIEDIR)/plugins/today 22DESTDIR = $(OPIEDIR)/plugins/today
23TARGET = todayweatherplugin 23TARGET = todayweatherplugin
24 24
25TRANSLATIONS = ../../../i18n/de/libtodayweatherplugin.ts \ 25TRANSLATIONS = ../../../i18n/de/libtodayweatherplugin.ts \
26 ../../../i18n/nl/libtodayweatherplugin.ts \ 26 ../../../i18n/nl/libtodayweatherplugin.ts \
27 ../../../i18n/xx/libtodayweatherplugin.ts \ 27 ../../../i18n/xx/libtodayweatherplugin.ts \
28 ../../../i18n/en/libtodayweatherplugin.ts \ 28 ../../../i18n/en/libtodayweatherplugin.ts \
29 ../../../i18n/es/libtodayweatherplugin.ts \ 29 ../../../i18n/es/libtodayweatherplugin.ts \
30 ../../../i18n/fr/libtodayweatherplugin.ts \ 30 ../../../i18n/fr/libtodayweatherplugin.ts \
31 ../../../i18n/hu/libtodayweatherplugin.ts \ 31 ../../../i18n/hu/libtodayweatherplugin.ts \
32 ../../../i18n/ja/libtodayweatherplugin.ts \ 32 ../../../i18n/ja/libtodayweatherplugin.ts \
33 ../../../i18n/ko/libtodayweatherplugin.ts \ 33 ../../../i18n/ko/libtodayweatherplugin.ts \
34 ../../../i18n/no/libtodayweatherplugin.ts \ 34 ../../../i18n/no/libtodayweatherplugin.ts \
35 ../../../i18n/pl/libtodayweatherplugin.ts \ 35 ../../../i18n/pl/libtodayweatherplugin.ts \
36 ../../../i18n/pt/libtodayweatherplugin.ts \ 36 ../../../i18n/pt/libtodayweatherplugin.ts \
37 ../../../i18n/pt_BR/libtodayweatherplugin.ts \ 37 ../../../i18n/pt_BR/libtodayweatherplugin.ts \
38 ../../../i18n/sl/libtodayweatherplugin.ts \ 38 ../../../i18n/sl/libtodayweatherplugin.ts \
39 ../../../i18n/zh_CN/libtodayweatherplugin.ts \ 39 ../../../i18n/zh_CN/libtodayweatherplugin.ts \
40 ../../../i18n/zh_TW/libtodayweatherplugin.ts \ 40 ../../../i18n/zh_TW/libtodayweatherplugin.ts \
41 ../../../i18n/it/libtodayweatherplugin.ts \ 41 ../../../i18n/it/libtodayweatherplugin.ts \
42 ../../../i18n/da/libtodayweatherplugin.ts 42 ../../../i18n/da/libtodayweatherplugin.ts
43include ( $(OPIEDIR)/include.pro ) 43include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/unsupported/mail2/bend/bend.pro b/noncore/unsupported/mail2/bend/bend.pro
index b03f652..61eea5f 100644
--- a/noncore/unsupported/mail2/bend/bend.pro
+++ b/noncore/unsupported/mail2/bend/bend.pro
@@ -1,32 +1,32 @@
1 TEMPLATE =lib 1 TEMPLATE =lib
2 CONFIG +=qt warn_on release 2 CONFIG +=qt plugin warn_on release
3 HEADERS +=bend.h \ 3 HEADERS +=bend.h \
4 bendimpl.h 4 bendimpl.h
5 SOURCES +=bend.cpp \ 5 SOURCES +=bend.cpp \
6 bendimpl.cpp 6 bendimpl.cpp
7 INCLUDEPATH +=$(OPIEDIR)/include ../libmail 7 INCLUDEPATH +=$(OPIEDIR)/include ../libmail
8 LIBS +=-lmail -lqpe 8 LIBS +=-lmail -lqpe
9 TARGET =bend 9 TARGET =bend
10 DESTDIR +=$(OPIEDIR)/plugins/applets/ 10 DESTDIR +=$(OPIEDIR)/plugins/applets/
11 11
12TRANSLATIONS = ../../../i18n/de/libbend.ts \ 12TRANSLATIONS = ../../../i18n/de/libbend.ts \
13 ../../../i18n/nl/libbend.ts \ 13 ../../../i18n/nl/libbend.ts \
14 ../../../i18n/da/libbend.ts \ 14 ../../../i18n/da/libbend.ts \
15 ../../../i18n/xx/libbend.ts \ 15 ../../../i18n/xx/libbend.ts \
16 ../../../i18n/en/libbend.ts \ 16 ../../../i18n/en/libbend.ts \
17 ../../../i18n/es/libbend.ts \ 17 ../../../i18n/es/libbend.ts \
18 ../../../i18n/fr/libbend.ts \ 18 ../../../i18n/fr/libbend.ts \
19 ../../../i18n/hu/libbend.ts \ 19 ../../../i18n/hu/libbend.ts \
20 ../../../i18n/ja/libbend.ts \ 20 ../../../i18n/ja/libbend.ts \
21 ../../../i18n/ko/libbend.ts \ 21 ../../../i18n/ko/libbend.ts \
22 ../../../i18n/no/libbend.ts \ 22 ../../../i18n/no/libbend.ts \
23 ../../../i18n/pl/libbend.ts \ 23 ../../../i18n/pl/libbend.ts \
24 ../../../i18n/pt/libbend.ts \ 24 ../../../i18n/pt/libbend.ts \
25 ../../../i18n/pt_BR/libbend.ts \ 25 ../../../i18n/pt_BR/libbend.ts \
26 ../../../i18n/sl/libbend.ts \ 26 ../../../i18n/sl/libbend.ts \
27 ../../../i18n/zh_CN/libbend.ts \ 27 ../../../i18n/zh_CN/libbend.ts \
28 ../../../i18n/zh_TW/libbend.ts 28 ../../../i18n/zh_TW/libbend.ts
29 29
30 30
31 31
32include ( $(OPIEDIR)/include.pro ) 32include ( $(OPIEDIR)/include.pro )
diff --git a/plugins/Makefile b/plugins/Makefile
index 4863bd0..2515903 100644
--- a/plugins/Makefile
+++ b/plugins/Makefile
@@ -1,4 +1,8 @@
1clean: 1clean:
2 find -name "*.so*" -print0 | xargs -0 rm -f 2ifeq ( CONFIG_TARGET_MACOSX, y )
3 find ./ -name "*.dylib*" -print0 | xargs -0 rm -f
4else
5 find ./ -name "*.so*" -print0 | xargs -0 rm -f
6endif
3 7
4all install ipk lupdate lrelease opie-lupdate opie-lrelease: 8all install ipk lupdate lrelease opie-lupdate opie-lrelease:
diff --git a/qmake/include/qglobal.h b/qmake/include/qglobal.h
index d212bff..94e5607 100644
--- a/qmake/include/qglobal.h
+++ b/qmake/include/qglobal.h
@@ -1,349 +1,356 @@
1/**************************************************************************** 1/****************************************************************************
2** $Id$ 2** $Id$
3** 3**
4** Global type declarations and definitions 4** Global type declarations and definitions
5** 5**
6** Created : 920529 6** Created : 920529
7** 7**
8** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. 8** Copyright (C) 1992-2002 Trolltech AS. All rights reserved.
9** 9**
10** This file is part of the tools module of the Qt GUI Toolkit. 10** This file is part of the tools module of the Qt GUI Toolkit.
11** 11**
12** This file may be distributed under the terms of the Q Public License 12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file 13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file. 14** LICENSE.QPL included in the packaging of this file.
15** 15**
16** This file may be distributed and/or modified under the terms of the 16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software 17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the 18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file. 19** packaging of this file.
20** 20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition 21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License 22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software. 23** Agreement provided with the Software.
24** 24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27** 27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements. 29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information. 30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information. 31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32** 32**
33** Contact info@trolltech.com if any conditions of this licensing are 33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you. 34** not clear to you.
35** 35**
36**********************************************************************/ 36**********************************************************************/
37 37
38#ifndef QGLOBAL_H 38#ifndef QGLOBAL_H
39#define QGLOBAL_H 39#define QGLOBAL_H
40 40
41#define QT_VERSION_STR "3.1.2" 41#define QT_VERSION_STR "3.1.2"
42/* 42/*
43 QT_VERSION is (major << 16) + (minor << 8) + patch. 43 QT_VERSION is (major << 16) + (minor << 8) + patch.
44 */ 44 */
45#define QT_VERSION 0x030102 45#define QT_VERSION 0x030102
46 46
47/* 47/*
48 The operating system, must be one of: (Q_OS_x) 48 The operating system, must be one of: (Q_OS_x)
49 49
50 MACX- Mac OS X 50 MACX- Mac OS X
51 MAC9- Mac OS 9 51 MAC9- Mac OS 9
52 MSDOS- MS-DOS and Windows 52 MSDOS- MS-DOS and Windows
53 OS2- OS/2 53 OS2- OS/2
54 OS2EMX- XFree86 on OS/2 (not PM) 54 OS2EMX- XFree86 on OS/2 (not PM)
55 WIN32- Win32 (Windows 95/98/ME and Windows NT/2000/XP) 55 WIN32- Win32 (Windows 95/98/ME and Windows NT/2000/XP)
56 CYGWIN- Cygwin 56 CYGWIN- Cygwin
57 SOLARIS- Sun Solaris 57 SOLARIS- Sun Solaris
58 HPUX- HP-UX 58 HPUX- HP-UX
59 ULTRIX- DEC Ultrix 59 ULTRIX- DEC Ultrix
60 LINUX- Linux 60 LINUX- Linux
61 FREEBSD- FreeBSD 61 FREEBSD- FreeBSD
62 NETBSD- NetBSD 62 NETBSD- NetBSD
63 OPENBSD- OpenBSD 63 OPENBSD- OpenBSD
64 BSDI- BSD/OS 64 BSDI- BSD/OS
65 IRIX- SGI Irix 65 IRIX- SGI Irix
66 OSF- HP Tru64 UNIX 66 OSF- HP Tru64 UNIX
67 SCO- SCO OpenServer 5 67 SCO- SCO OpenServer 5
68 UNIXWARE- UnixWare 7, Open UNIX 8 68 UNIXWARE- UnixWare 7, Open UNIX 8
69 AIX- AIX 69 AIX- AIX
70 HURD- GNU Hurd 70 HURD- GNU Hurd
71 DGUX- DG/UX 71 DGUX- DG/UX
72 RELIANT- Reliant UNIX 72 RELIANT- Reliant UNIX
73 DYNIX- DYNIX/ptx 73 DYNIX- DYNIX/ptx
74 QNX- QNX 74 QNX- QNX
75 QNX6- QNX RTP 6.1 75 QNX6- QNX RTP 6.1
76 LYNX- LynxOS 76 LYNX- LynxOS
77 BSD4- Any BSD 4.4 system 77 BSD4- Any BSD 4.4 system
78 UNIX- Any UNIX BSD/SYSV system 78 UNIX- Any UNIX BSD/SYSV system
79*/ 79*/
80 80
81#if defined(__APPLE__) && defined(__GNUC__) 81#if defined(__APPLE__) && defined(__GNUC__)
82# define Q_OS_MACX 82# define Q_OS_MACX
83#elif defined(__MACOSX__) 83#elif defined(__MACOSX__)
84# define Q_OS_MACX 84# define Q_OS_MACX
85#elif defined(macintosh) 85#elif defined(macintosh)
86# define Q_OS_MAC9 86# define Q_OS_MAC9
87#elif defined(__CYGWIN__) 87#elif defined(__CYGWIN__)
88# define Q_OS_CYGWIN 88# define Q_OS_CYGWIN
89#elif defined(MSDOS) || defined(_MSDOS) 89#elif defined(MSDOS) || defined(_MSDOS)
90# define Q_OS_MSDOS 90# define Q_OS_MSDOS
91#elif defined(__OS2__) 91#elif defined(__OS2__)
92# if defined(__EMX__) 92# if defined(__EMX__)
93# define Q_OS_OS2EMX 93# define Q_OS_OS2EMX
94# else 94# else
95# define Q_OS_OS2 95# define Q_OS_OS2
96# endif 96# endif
97#elif !defined(SAG_COM) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__)) 97#elif !defined(SAG_COM) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))
98# define Q_OS_WIN32 98# define Q_OS_WIN32
99# define Q_OS_WIN64 99# define Q_OS_WIN64
100#elif !defined(SAG_COM) && (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)) 100#elif !defined(SAG_COM) && (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__))
101# define Q_OS_WIN32 101# define Q_OS_WIN32
102#elif defined(__MWERKS__) && defined(__INTEL__) 102#elif defined(__MWERKS__) && defined(__INTEL__)
103# define Q_OS_WIN32 103# define Q_OS_WIN32
104#elif defined(__sun) || defined(sun) 104#elif defined(__sun) || defined(sun)
105# define Q_OS_SOLARIS 105# define Q_OS_SOLARIS
106#elif defined(hpux) || defined(__hpux) 106#elif defined(hpux) || defined(__hpux)
107# define Q_OS_HPUX 107# define Q_OS_HPUX
108#elif defined(__ultrix) || defined(ultrix) 108#elif defined(__ultrix) || defined(ultrix)
109# define Q_OS_ULTRIX 109# define Q_OS_ULTRIX
110#elif defined(sinix) 110#elif defined(sinix)
111# define Q_OS_RELIANT 111# define Q_OS_RELIANT
112#elif defined(__linux__) || defined(__linux) 112#elif defined(__linux__) || defined(__linux)
113# define Q_OS_LINUX 113# define Q_OS_LINUX
114#elif defined(__FreeBSD__) 114#elif defined(__FreeBSD__)
115# define Q_OS_FREEBSD 115# define Q_OS_FREEBSD
116# define Q_OS_BSD4 116# define Q_OS_BSD4
117#elif defined(__NetBSD__) 117#elif defined(__NetBSD__)
118# define Q_OS_NETBSD 118# define Q_OS_NETBSD
119# define Q_OS_BSD4 119# define Q_OS_BSD4
120#elif defined(__OpenBSD__) 120#elif defined(__OpenBSD__)
121# define Q_OS_OPENBSD 121# define Q_OS_OPENBSD
122# define Q_OS_BSD4 122# define Q_OS_BSD4
123#elif defined(__bsdi__) 123#elif defined(__bsdi__)
124# define Q_OS_BSDI 124# define Q_OS_BSDI
125# define Q_OS_BSD4 125# define Q_OS_BSD4
126#elif defined(__sgi) 126#elif defined(__sgi)
127# define Q_OS_IRIX 127# define Q_OS_IRIX
128#elif defined(__osf__) 128#elif defined(__osf__)
129# define Q_OS_OSF 129# define Q_OS_OSF
130#elif defined(_AIX) 130#elif defined(_AIX)
131# define Q_OS_AIX 131# define Q_OS_AIX
132#elif defined(__Lynx__) 132#elif defined(__Lynx__)
133# define Q_OS_LYNX 133# define Q_OS_LYNX
134#elif defined(__GNU_HURD__) 134#elif defined(__GNU_HURD__)
135# define Q_OS_HURD 135# define Q_OS_HURD
136#elif defined(__DGUX__) 136#elif defined(__DGUX__)
137# define Q_OS_DGUX 137# define Q_OS_DGUX
138#elif defined(__QNXNTO__) 138#elif defined(__QNXNTO__)
139# define Q_OS_QNX6 139# define Q_OS_QNX6
140#elif defined(__QNX__) 140#elif defined(__QNX__)
141# define Q_OS_QNX 141# define Q_OS_QNX
142#elif defined(_SEQUENT_) 142#elif defined(_SEQUENT_)
143# define Q_OS_DYNIX 143# define Q_OS_DYNIX
144#elif defined(_SCO_DS) /* SCO OpenServer 5 + GCC */ 144#elif defined(_SCO_DS) /* SCO OpenServer 5 + GCC */
145# define Q_OS_SCO 145# define Q_OS_SCO
146#elif defined(__USLC__) /* all SCO platforms + UDK or OUDK */ 146#elif defined(__USLC__) /* all SCO platforms + UDK or OUDK */
147# define Q_OS_UNIXWARE 147# define Q_OS_UNIXWARE
148# define Q_OS_UNIXWARE7 148# define Q_OS_UNIXWARE7
149#elif defined(__svr4__) && defined(i386) /* Open UNIX 8 + GCC */ 149#elif defined(__svr4__) && defined(i386) /* Open UNIX 8 + GCC */
150# define Q_OS_UNIXWARE 150# define Q_OS_UNIXWARE
151# define Q_OS_UNIXWARE7 151# define Q_OS_UNIXWARE7
152#else 152#else
153# error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com" 153# error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com"
154#endif 154#endif
155 155
156#if defined(Q_OS_MAC9) || defined(Q_OS_MACX) 156#if defined(Q_OS_MAC9) || defined(Q_OS_MACX)
157# define Q_OS_MAC 157/* This hack forces the generater to compile qmake not for maxosx native. It is
158 * compiled for Linux and generates usual makefiles..
159 * Does anyone has a better solution for this ? (eilers)
160 */
161// # define Q_OS_MAC
162#define Q_OS_LINUX
163#warning "boeser Hack !! (se)"
164#undef Q_OS_MACX
158#endif 165#endif
159 166
160#if defined(Q_OS_MAC9) || defined(Q_OS_MSDOS) || defined(Q_OS_OS2) || defined(Q_OS_WIN32) || defined(Q_OS_WIN64) 167#if defined(Q_OS_MAC9) || defined(Q_OS_MSDOS) || defined(Q_OS_OS2) || defined(Q_OS_WIN32) || defined(Q_OS_WIN64)
161# undef Q_OS_UNIX 168# undef Q_OS_UNIX
162#elif !defined(Q_OS_UNIX) 169#elif !defined(Q_OS_UNIX)
163# define Q_OS_UNIX 170# define Q_OS_UNIX
164#endif 171#endif
165 172
166 173
167/* 174/*
168 The compiler, must be one of: (Q_CC_x) 175 The compiler, must be one of: (Q_CC_x)
169 176
170 SYM- Symantec C++ for both PC and Macintosh 177 SYM- Symantec C++ for both PC and Macintosh
171 MPW- MPW C++ 178 MPW- MPW C++
172 MWERKS- Metrowerks CodeWarrior 179 MWERKS- Metrowerks CodeWarrior
173 MSVC- Microsoft Visual C/C++ 180 MSVC- Microsoft Visual C/C++
174 BOR- Borland/Turbo C++ 181 BOR- Borland/Turbo C++
175 WAT- Watcom C++ 182 WAT- Watcom C++
176 GNU- GNU C++ 183 GNU- GNU C++
177 COMEAU- Comeau C++ 184 COMEAU- Comeau C++
178 EDG- Edison Design Group C++ 185 EDG- Edison Design Group C++
179 OC - CenterLine C++ 186 OC - CenterLine C++
180 SUN- Sun WorkShop, Forte Developer, or Sun ONE Studio C++ 187 SUN- Sun WorkShop, Forte Developer, or Sun ONE Studio C++
181 MIPS- MIPSpro C++ 188 MIPS- MIPSpro C++
182 DEC- DEC C++ 189 DEC- DEC C++
183 HP - HPUX C++ 190 HP - HPUX C++
184 HPACC- HPUX ANSI C++ 191 HPACC- HPUX ANSI C++
185 USLC- SCO OUDK, UDK, and UnixWare 2.X C++ 192 USLC- SCO OUDK, UDK, and UnixWare 2.X C++
186 CDS- Reliant C++ 193 CDS- Reliant C++
187 KAI- KAI C++ 194 KAI- KAI C++
188 INTEL- Intel C++ 195 INTEL- Intel C++
189 HIGHC- MetaWare High C/C++ 196 HIGHC- MetaWare High C/C++
190 PGI- Portland Group C++ 197 PGI- Portland Group C++
191 GHS- Green Hills Optimizing C++ Compilers 198 GHS- Green Hills Optimizing C++ Compilers
192 199
193 Should be sorted most to least authoritative. 200 Should be sorted most to least authoritative.
194*/ 201*/
195 202
196/* Symantec C++ is now Digital Mars */ 203/* Symantec C++ is now Digital Mars */
197#if defined(__DMC__) || defined(__SC__) 204#if defined(__DMC__) || defined(__SC__)
198# define Q_CC_SYM 205# define Q_CC_SYM
199/* "explicit" semantics implemented in 8.1e but keyword recognized since 7.5 */ 206/* "explicit" semantics implemented in 8.1e but keyword recognized since 7.5 */
200# if defined(__SC__) && __SC__ < 0x750 207# if defined(__SC__) && __SC__ < 0x750
201# define Q_NO_EXPLICIT_KEYWORD 208# define Q_NO_EXPLICIT_KEYWORD
202# endif 209# endif
203# define Q_NO_USING_KEYWORD 210# define Q_NO_USING_KEYWORD
204# if !defined(_CPPUNWIND) 211# if !defined(_CPPUNWIND)
205# define Q_NO_EXCEPTIONS 212# define Q_NO_EXCEPTIONS
206# endif 213# endif
207 214
208#elif defined(applec) 215#elif defined(applec)
209# define Q_CC_MPW 216# define Q_CC_MPW
210# define Q_NO_BOOL_TYPE 217# define Q_NO_BOOL_TYPE
211# define Q_NO_EXPLICIT_KEYWORD 218# define Q_NO_EXPLICIT_KEYWORD
212# define Q_NO_USING_KEYWORD 219# define Q_NO_USING_KEYWORD
213 220
214#elif defined(__MWERKS__) 221#elif defined(__MWERKS__)
215# define Q_CC_MWERKS 222# define Q_CC_MWERKS
216/* "explicit" recognized since 4.0d1 */ 223/* "explicit" recognized since 4.0d1 */
217# define QMAC_PASCAL pascal 224# define QMAC_PASCAL pascal
218# define Q_NO_USING_KEYWORD /* ### check "using" status */ 225# define Q_NO_USING_KEYWORD /* ### check "using" status */
219 226
220#elif defined(_MSC_VER) 227#elif defined(_MSC_VER)
221# define Q_CC_MSVC 228# define Q_CC_MSVC
222/* proper support of bool for _MSC_VER >= 1100 */ 229/* proper support of bool for _MSC_VER >= 1100 */
223# define Q_CANNOT_DELETE_CONSTANT 230# define Q_CANNOT_DELETE_CONSTANT
224# define Q_INLINE_TEMPLATES inline 231# define Q_INLINE_TEMPLATES inline
225/* Visual C++.Net issues for _MSC_VER >= 1300 */ 232/* Visual C++.Net issues for _MSC_VER >= 1300 */
226# if _MSC_VER >= 1300 233# if _MSC_VER >= 1300
227# define Q_CC_MSVC_NET 234# define Q_CC_MSVC_NET
228# if _MSC_VER < 1310 235# if _MSC_VER < 1310
229# define Q_TYPENAME 236# define Q_TYPENAME
230# endif 237# endif
231# endif 238# endif
232# define Q_NO_USING_KEYWORD /* ### check "using" status */ 239# define Q_NO_USING_KEYWORD /* ### check "using" status */
233 240
234#elif defined(__BORLANDC__) || defined(__TURBOC__) 241#elif defined(__BORLANDC__) || defined(__TURBOC__)
235# define Q_CC_BOR 242# define Q_CC_BOR
236# if __BORLANDC__ < 0x502 243# if __BORLANDC__ < 0x502
237# define Q_NO_BOOL_TYPE 244# define Q_NO_BOOL_TYPE
238# define Q_NO_EXPLICIT_KEYWORD 245# define Q_NO_EXPLICIT_KEYWORD
239# endif 246# endif
240# define Q_NO_USING_KEYWORD /* ### check "using" status */ 247# define Q_NO_USING_KEYWORD /* ### check "using" status */
241 248
242#elif defined(__WATCOMC__) 249#elif defined(__WATCOMC__)
243# define Q_CC_WAT 250# define Q_CC_WAT
244# if defined(Q_OS_QNX4) 251# if defined(Q_OS_QNX4)
245/* compiler flags */ 252/* compiler flags */
246# define Q_TYPENAME 253# define Q_TYPENAME
247# define Q_NO_BOOL_TYPE 254# define Q_NO_BOOL_TYPE
248# define Q_CANNOT_DELETE_CONSTANT 255# define Q_CANNOT_DELETE_CONSTANT
249# define mutable 256# define mutable
250/* ??? */ 257/* ??? */
251# define Q_BROKEN_TEMPLATE_SPECIALIZATION 258# define Q_BROKEN_TEMPLATE_SPECIALIZATION
252/* no template classes in QVariant */ 259/* no template classes in QVariant */
253# define QT_NO_TEMPLATE_VARIANT 260# define QT_NO_TEMPLATE_VARIANT
254/* Wcc does not fill in functions needed by valuelists, maps, and 261/* Wcc does not fill in functions needed by valuelists, maps, and
255 valuestacks implicitly */ 262 valuestacks implicitly */
256# define Q_FULL_TEMPLATE_INSTANTIATION 263# define Q_FULL_TEMPLATE_INSTANTIATION
257/* can we just compare the structures? */ 264/* can we just compare the structures? */
258# define Q_FULL_TEMPLATE_INSTANTIATION_MEMCMP 265# define Q_FULL_TEMPLATE_INSTANTIATION_MEMCMP
259/* these are not useful to our customers */ 266/* these are not useful to our customers */
260# define QT_QWS_NO_SHM 267# define QT_QWS_NO_SHM
261# define QT_NO_QWS_MULTIPROCESS 268# define QT_NO_QWS_MULTIPROCESS
262# define QT_NO_SQL 269# define QT_NO_SQL
263# define QT_NO_QWS_CURSOR 270# define QT_NO_QWS_CURSOR
264# endif 271# endif
265 272
266#elif defined(__GNUC__) 273#elif defined(__GNUC__)
267# define Q_CC_GNU 274# define Q_CC_GNU
268# define Q_C_CALLBACKS 275# define Q_C_CALLBACKS
269# if __GNUC__ == 2 && __GNUC_MINOR__ <= 7 276# if __GNUC__ == 2 && __GNUC_MINOR__ <= 7
270# define Q_FULL_TEMPLATE_INSTANTIATION 277# define Q_FULL_TEMPLATE_INSTANTIATION
271# endif 278# endif
272/* GCC 2.95 knows "using" but does not support it correctly */ 279/* GCC 2.95 knows "using" but does not support it correctly */
273# if __GNUC__ == 2 && __GNUC_MINOR__ <= 95 280# if __GNUC__ == 2 && __GNUC_MINOR__ <= 95
274# define Q_NO_USING_KEYWORD 281# define Q_NO_USING_KEYWORD
275# endif 282# endif
276/* GCC 3.1 and GCC 3.2 wrongly define _SB_CTYPE_MACROS on HP-UX */ 283/* GCC 3.1 and GCC 3.2 wrongly define _SB_CTYPE_MACROS on HP-UX */
277# if defined(Q_OS_HPUX) && __GNUC__ == 3 && __GNUC_MINOR__ >= 1 284# if defined(Q_OS_HPUX) && __GNUC__ == 3 && __GNUC_MINOR__ >= 1
278# define Q_WRONG_SB_CTYPE_MACROS 285# define Q_WRONG_SB_CTYPE_MACROS
279# endif 286# endif
280# if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP) 287# if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
281# define Q_PACKED __attribute__ ((packed)) 288# define Q_PACKED __attribute__ ((packed))
282# endif 289# endif
283# if !defined(__EXCEPTIONS) 290# if !defined(__EXCEPTIONS)
284# define Q_NO_EXCEPTIONS 291# define Q_NO_EXCEPTIONS
285# endif 292# endif
286 293
287/* IBM compiler versions are a bit messy. There are actually two products: 294/* IBM compiler versions are a bit messy. There are actually two products:
288 the C product, and the C++ product. The C++ compiler is always packaged 295 the C product, and the C++ product. The C++ compiler is always packaged
289 with the latest version of the C compiler. Version numbers do not always 296 with the latest version of the C compiler. Version numbers do not always
290 match. This little table (I'm not sure it's accurate) should be helpful: 297 match. This little table (I'm not sure it's accurate) should be helpful:
291 298
292 C++ product C product 299 C++ product C product
293 300
294 C Set 3.1 C Compiler 3.0 301 C Set 3.1 C Compiler 3.0
295 ... ... 302 ... ...
296 C++ Compiler 3.6.6 C Compiler 4.3 303 C++ Compiler 3.6.6 C Compiler 4.3
297 ... ... 304 ... ...
298 Visual Age C++ 4.0 ... 305 Visual Age C++ 4.0 ...
299 ... ... 306 ... ...
300 Visual Age C++ 5.0 C Compiler 5.0 307 Visual Age C++ 5.0 C Compiler 5.0
301 308
302 Now: 309 Now:
303 __xlC__ is the version of the C compiler in hexadecimal notation 310 __xlC__ is the version of the C compiler in hexadecimal notation
304 is only an approximation of the C++ compiler version 311 is only an approximation of the C++ compiler version
305 __IBMCPP__ is the version of the C++ compiler in decimal notation 312 __IBMCPP__ is the version of the C++ compiler in decimal notation
306 but it is not defined on older compilers like C Set 3.1 */ 313 but it is not defined on older compilers like C Set 3.1 */
307#elif defined(__xlC__) 314#elif defined(__xlC__)
308# define Q_CC_XLC 315# define Q_CC_XLC
309# define Q_FULL_TEMPLATE_INSTANTIATION 316# define Q_FULL_TEMPLATE_INSTANTIATION
310# if __xlC__ < 0x400 317# if __xlC__ < 0x400
311# define Q_NO_BOOL_TYPE 318# define Q_NO_BOOL_TYPE
312# define Q_NO_EXPLICIT_KEYWORD 319# define Q_NO_EXPLICIT_KEYWORD
313# define Q_NO_USING_KEYWORD 320# define Q_NO_USING_KEYWORD
314# define Q_TYPENAME 321# define Q_TYPENAME
315# define Q_INLINE_TEMPLATES inline 322# define Q_INLINE_TEMPLATES inline
316# define Q_BROKEN_TEMPLATE_SPECIALIZATION 323# define Q_BROKEN_TEMPLATE_SPECIALIZATION
317# define Q_CANNOT_DELETE_CONSTANT 324# define Q_CANNOT_DELETE_CONSTANT
318# endif 325# endif
319 326
320/* Older versions of DEC C++ do not define __EDG__ or __EDG - observed 327/* Older versions of DEC C++ do not define __EDG__ or __EDG - observed
321 on DEC C++ V5.5-004. New versions do define __EDG__ - observed on 328 on DEC C++ V5.5-004. New versions do define __EDG__ - observed on
322 Compaq C++ V6.3-002. 329 Compaq C++ V6.3-002.
323 This compiler is different enough from other EDG compilers to handle 330 This compiler is different enough from other EDG compilers to handle
324 it separately anyway. */ 331 it separately anyway. */
325#elif defined(__DECCXX) 332#elif defined(__DECCXX)
326# define Q_CC_DEC 333# define Q_CC_DEC
327/* Compaq C++ V6 compilers are EDG-based but I'm not sure about older 334/* Compaq C++ V6 compilers are EDG-based but I'm not sure about older
328 DEC C++ V5 compilers. */ 335 DEC C++ V5 compilers. */
329# if defined(__EDG__) 336# if defined(__EDG__)
330# define Q_CC_EDG 337# define Q_CC_EDG
331# endif 338# endif
332/* Compaq have disabled EDG's _BOOL macro and use _BOOL_EXISTS instead 339/* Compaq have disabled EDG's _BOOL macro and use _BOOL_EXISTS instead
333 - observed on Compaq C++ V6.3-002. 340 - observed on Compaq C++ V6.3-002.
334 In any case versions prior to Compaq C++ V6.0-005 do not have bool. */ 341 In any case versions prior to Compaq C++ V6.0-005 do not have bool. */
335# if !defined(_BOOL_EXISTS) 342# if !defined(_BOOL_EXISTS)
336# define Q_NO_BOOL_TYPE 343# define Q_NO_BOOL_TYPE
337# endif 344# endif
338/* Spurious (?) error messages observed on Compaq C++ V6.5-014. */ 345/* Spurious (?) error messages observed on Compaq C++ V6.5-014. */
339# define Q_NO_USING_KEYWORD 346# define Q_NO_USING_KEYWORD
340/* Apply to all versions prior to Compaq C++ V6.0-000 - observed on 347/* Apply to all versions prior to Compaq C++ V6.0-000 - observed on
341 DEC C++ V5.5-004. */ 348 DEC C++ V5.5-004. */
342# if __DECCXX_VER < 60060000 349# if __DECCXX_VER < 60060000
343# define Q_TYPENAME 350# define Q_TYPENAME
344# define Q_BROKEN_TEMPLATE_SPECIALIZATION 351# define Q_BROKEN_TEMPLATE_SPECIALIZATION
345# define Q_CANNOT_DELETE_CONSTANT 352# define Q_CANNOT_DELETE_CONSTANT
346# endif 353# endif
347/* avoid undefined symbol problems with out-of-line template members */ 354/* avoid undefined symbol problems with out-of-line template members */
348# define Q_INLINE_TEMPLATES inline 355# define Q_INLINE_TEMPLATES inline
349 356
diff --git a/qt/qt-2.3.7.patch/qte237-all-macosx.patch b/qt/qt-2.3.7.patch/qte237-all-macosx.patch
new file mode 100644
index 0000000..82ed530
--- a/dev/null
+++ b/qt/qt-2.3.7.patch/qte237-all-macosx.patch
@@ -0,0 +1,1161 @@
1diff -ru qte-2.3.7_orig/include/qapplication.h qte-2.3.7/include/qapplication.h
2 --- qte-2.3.7_orig/include/qapplication.hThu Jul 17 03:20:25 2003
3 +++ qte-2.3.7/include/qapplication.hMon Oct 27 14:21:28 2003
4@@ -61,6 +61,10 @@
5 class QSemaphore;
6 #endif
7
8+#if !defined( QT_WEAK_SYMBOL )
9+#define QT_WEAK_SYMBOL
10+#endif
11+
12 // REMOVE IN 3.0 (just here for moc source compatibility)
13 #define QNonBaseApplication QApplication
14
15@@ -85,7 +89,10 @@
16
17 #ifndef QT_NO_STYLE
18 static QStyle &style();
19 - static void setStyle( QStyle* );
20 + static void setStyle( QStyle* ) QT_WEAK_SYMBOL;
21+private:
22 +static void setStyle_NonWeak( QStyle* );
23+public:
24 #endif
25 #if 1/* OBSOLETE */
26 enum ColorMode { NormalColors, CustomColors };
27@@ -106,11 +113,19 @@
28 #ifndef QT_NO_PALETTE
29 static QPalette palette( const QWidget* = 0 );
30 static void setPalette( const QPalette &, bool informWidgets=FALSE,
31 + const char* className = 0 ) QT_WEAK_SYMBOL;
32+private:
33 + static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE,
34 const char* className = 0 );
35+public:
36 #endif
37 static QFont font( const QWidget* = 0 );
38 static void setFont( const QFont &, bool informWidgets=FALSE,
39 + const char* className = 0 ) QT_WEAK_SYMBOL;
40+private:
41 + static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE,
42 const char* className = 0 );
43 +public:
44 static QFontMetrics fontMetrics();
45
46 QWidget *mainWidget() const;
47@@ -207,7 +222,10 @@
48 void qwsSetCustomColors( QRgb *colortable, int start, int numColors );
49 #ifndef QT_NO_QWS_MANAGER
50 static QWSDecoration &qwsDecoration();
51- static void qwsSetDecoration( QWSDecoration *);
52+ static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL;
53+private:
54+ static void qwsSetDecoration_NonWeak( QWSDecoration *);
55+public:
56 #endif
57 #endif
58
59Only in qte-2.3.7/include: qconfig-qpe.h
60diff -ru qte-2.3.7_orig/include/qconfig.h qte-2.3.7/include/qconfig.h
61 --- qte-2.3.7_orig/include/qconfig.hFri Jan 26 14:43:06 2001
62 +++ qte-2.3.7/include/qconfig.hWed Oct 29 22:13:16 2003
63@@ -1,3 +1,26 @@
64+// Copied from qconfig-qpe.h
65+/**********************************************************************
66+** Copyright (C) 2000 Trolltech AS. All rights reserved.
67+**
68+** This file is part of Qtopia Environment.
69+**
70+** This file may be distributed and/or modified under the terms of the
71+** GNU General Public License version 2 as published by the Free Software
72+** Foundation and appearing in the file LICENSE.GPL included in the
73+** packaging of this file.
74+**
75+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
76+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
77+**
78+** See http://www.trolltech.com/gpl/ for GPL licensing information.
79+**
80+** Contact info@trolltech.com if any conditions of this licensing are
81+** not clear to you.
82+**
83+**********************************************************************/
84+#ifndef QT_H
85+#endif // QT_H
86+
87 // Empty leaves all features enabled. See doc/html/features.html for choices.
88
89 // Note that disabling some features will produce a libqt that is not
90@@ -8,3 +31,69 @@
91 #ifndef QT_DLL
92 #define QT_DLL // Internal
93 #endif
94+
95+#if defined(QT_QWS_IPAQ) || defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_SL5XXX)
96+# define QT_NO_QWS_CURSOR
97+# define QT_NO_QWS_MOUSE_AUTO
98+#endif
99+#ifndef QT_NO_CODECS
100+#define QT_NO_CODECS
101+#endif
102+#define QT_NO_UNICODETABLES
103+//#define QT_NO_IMAGEIO_BMP
104+#define QT_NO_IMAGEIO_PPM
105+//#define QT_NO_ASYNC_IO
106+//#define QT_NO_ASYNC_IMAGE_IO
107+#define QT_NO_FREETYPE
108+#define QT_NO_BDF
109+//#define QT_NO_FONTDATABASE
110+#define QT_NO_DRAGANDDROP
111+//#define QT_NO_CLIPBOARD
112+#define QT_NO_PROPERTIES
113+#define QT_NO_NETWORKPROTOCOL
114+
115+#define QT_NO_IMAGE_TEXT
116+
117+//#define QT_NO_TOOLTIP
118+#define QT_NO_COLORNAMES
119+#define QT_NO_TRANSFORMATIONS
120+#define QT_NO_TRANSLATION_BUILDER
121+#define QT_NO_COMPLEXTEXT
122+#define QT_NO_PRINTER
123+#define QT_NO_PICTURE
124+//#define QT_NO_ICONVIEW
125+#define QT_NO_DIAL
126+#define QT_NO_SIZEGRIP
127+#define QT_NO_WORKSPACE
128+//#define QT_NO_TABLE
129+//#define QT_NO_ACTION
130+//#define QT_NO_SETTINGS
131+#define QT_NO_STYLE_POCKETPC
132+#ifndef QT_NO_STYLE_AQUA
133+# define QT_NO_STYLE_AQUA
134+#endif
135+#define QT_NO_STYLE_MOTIF
136+#define QT_NO_STYLE_PLATINUM
137+#define QT_NO_FILEDIALOG
138+#define QT_NO_FONTDIALOG
139+#define QT_NO_PRINTDIALOG
140+#define QT_NO_COLORDIALOG
141+#define QT_NO_INPUTDIALOG
142+//#define QT_NO_MESSAGEBOX
143+#define QT_NO_PROGRESSDIALOG
144+//#define QT_NO_TABDIALOG
145+#define QT_NO_WIZARD
146+#define QT_NO_EFFECTS
147+//#define QT_NO_COMPONENT
148+#define QT_NO_DOM
149+#define QT_NO_SEMIMODAL
150+//#define QT_NO_PROGRESSBAR
151+#define QT_NO_SPLITTER
152+
153+//#define QT_NO_QWS_SAVEFONTS
154+//#define QT_NO_QWS_PROPERTIES
155+
156+#define QT_NO_QWS_BEOS_WM_STYLE
157+#define QT_NO_QWS_KDE2_WM_STYLE
158+#define QT_NO_QWS_KDE_WM_STYLE
159+#define QT_NO_QWS_WINDOWS_WM_STYLE
160diff -ru qte-2.3.7_orig/include/qfontdatabase.h qte-2.3.7/include/qfontdatabase.h
161 --- qte-2.3.7_orig/include/qfontdatabase.hThu Jul 17 03:20:25 2003
162 +++ qte-2.3.7/include/qfontdatabase.hMon Oct 27 14:21:28 2003
163@@ -59,6 +59,10 @@
164 class QDiskFont;
165 #endif
166
167+#if !defined( QT_WEAK_SYMBOL )
168+#define QT_WEAK_SYMBOL
169+#endif
170+
171 class QFontDatabasePrivate;
172
173 class Q_EXPORT QFontDatabase
174@@ -67,9 +71,16 @@
175 QFontDatabase();
176
177 QStringList families( bool onlyForLocale = TRUE ) const;
178+
179+
180 QValueList<int> pointSizes( const QString &family,
181 const QString &style = QString::null,
182 - const QString &charSet = QString::null );
183 + const QString &charSet = QString::null ) QT_WEAK_SYMBOL;
184+private:
185+ QValueList<int> pointSizes_NonWeak( const QString &family,
186 + const QString &style,
187 + const QString &charSet );
188+public:
189 QStringList styles( const QString &family,
190 const QString &charSet = QString::null ) const;
191 QStringList charSets( const QString &familyName,
192Only in qte-2.3.7_orig/include: qgifimageformat_p.h
193diff -ru qte-2.3.7_orig/include/qmodules.h qte-2.3.7/include/qmodules.h
194 --- qte-2.3.7_orig/include/qmodules.hFri Aug 31 17:00:56 2001
195 +++ qte-2.3.7/include/qmodules.hWed Oct 29 21:57:53 2003
196@@ -1,14 +1,12 @@
197-#ifndef QT_H
198-#endif // QT_H
199-
200+// These modules are licensed to you
201 #define QT_MODULE_TOOLS
202 #define QT_MODULE_KERNEL
203 #define QT_MODULE_WIDGETS
204 #define QT_MODULE_DIALOGS
205-
206 #define QT_MODULE_ICONVIEW
207 #define QT_MODULE_WORKSPACE
208-#define QT_MODULE_TABLE
209+#define QT_MODULE_NETWORK
210 #define QT_MODULE_CANVAS
211+#define QT_MODULE_TABLE
212 #define QT_MODULE_XML
213-#define QT_MODULE_NETWORK
214+#define QT_MODULE_OPENGL
215Only in qte-2.3.7_orig/include: qxt.h
216Only in qte-2.3.7/lib: libqte.dylib
217Only in qte-2.3.7/lib: libqte.dylib.2
218Only in qte-2.3.7/lib: libqte.dylib.2.3
219Only in qte-2.3.7/lib: libqte.dylib.2.3.7
220Only in qte-2.3.7/src/3rdparty/kernel: qgifimageformat.o
221Only in qte-2.3.7/src/3rdparty/kernel: qpointarray.o
222Only in qte-2.3.7/src/3rdparty/kernel: qpolygonscanner.o
223Only in qte-2.3.7/src/3rdparty/kernel: qregion_qws.o
224Only in qte-2.3.7/src/3rdparty/libpng: png.o
225Only in qte-2.3.7/src/3rdparty/libpng: pngerror.o
226Only in qte-2.3.7/src/3rdparty/libpng: pngget.o
227Only in qte-2.3.7/src/3rdparty/libpng: pngmem.o
228Only in qte-2.3.7/src/3rdparty/libpng: pngpread.o
229Only in qte-2.3.7/src/3rdparty/libpng: pngread.o
230Only in qte-2.3.7/src/3rdparty/libpng: pngrio.o
231Only in qte-2.3.7/src/3rdparty/libpng: pngrtran.o
232Only in qte-2.3.7/src/3rdparty/libpng: pngrutil.o
233Only in qte-2.3.7/src/3rdparty/libpng: pngset.o
234Only in qte-2.3.7/src/3rdparty/libpng: pngtrans.o
235Only in qte-2.3.7/src/3rdparty/libpng: pngwio.o
236Only in qte-2.3.7/src/3rdparty/libpng: pngwrite.o
237Only in qte-2.3.7/src/3rdparty/libpng: pngwtran.o
238Only in qte-2.3.7/src/3rdparty/libpng: pngwutil.o
239Only in qte-2.3.7/src/3rdparty/tools: qbig5codec.o
240Only in qte-2.3.7/src/3rdparty/tools: qeucjpcodec.o
241Only in qte-2.3.7/src/3rdparty/tools: qeuckrcodec.o
242Only in qte-2.3.7/src/3rdparty/tools: qgbkcodec.o
243Only in qte-2.3.7/src/3rdparty/tools: qjiscodec.o
244Only in qte-2.3.7/src/3rdparty/tools: qjpunicode.o
245Only in qte-2.3.7/src/3rdparty/tools: qrtlcodec.o
246Only in qte-2.3.7/src/3rdparty/tools: qsjiscodec.o
247Only in qte-2.3.7/src/3rdparty/tools: qtsciicodec.o
248Only in qte-2.3.7/src/3rdparty/zlib: Makefile
249Only in qte-2.3.7/src/3rdparty/zlib: adler32.o
250Only in qte-2.3.7/src/3rdparty/zlib: compress.o
251Only in qte-2.3.7/src/3rdparty/zlib: crc32.o
252Only in qte-2.3.7/src/3rdparty/zlib: deflate.o
253Only in qte-2.3.7/src/3rdparty/zlib: gzio.o
254Only in qte-2.3.7/src/3rdparty/zlib: infblock.o
255Only in qte-2.3.7/src/3rdparty/zlib: infcodes.o
256Only in qte-2.3.7/src/3rdparty/zlib: inffast.o
257Only in qte-2.3.7/src/3rdparty/zlib: inflate.o
258Only in qte-2.3.7/src/3rdparty/zlib: inftrees.o
259Only in qte-2.3.7/src/3rdparty/zlib: infutil.o
260Only in qte-2.3.7/src/3rdparty/zlib: trees.o
261Only in qte-2.3.7/src/3rdparty/zlib: uncompr.o
262Only in qte-2.3.7/src/3rdparty/zlib: zutil.o
263Only in qte-2.3.7/src: Makefile
264Only in qte-2.3.7/src: allmoc.cpp
265Only in qte-2.3.7/src: allmoc.o
266Only in qte-2.3.7/src/canvas: qcanvas.o
267Only in qte-2.3.7/src/dialogs: qcolordialog.moc
268Only in qte-2.3.7/src/dialogs: qcolordialog.o
269Only in qte-2.3.7/src/dialogs: qfiledialog.moc
270Only in qte-2.3.7/src/dialogs: qfiledialog.o
271Only in qte-2.3.7/src/dialogs: qfontdialog.o
272Only in qte-2.3.7/src/dialogs: qinputdialog.o
273Only in qte-2.3.7/src/dialogs: qmessagebox.o
274Only in qte-2.3.7/src/dialogs: qprintdialog.o
275Only in qte-2.3.7/src/dialogs: qprogressdialog.o
276Only in qte-2.3.7/src/dialogs: qtabdialog.o
277Only in qte-2.3.7/src/dialogs: qwizard.o
278Only in qte-2.3.7/src/iconview: qiconview.o
279Only in qte-2.3.7/src/kernel: qabstractlayout.o
280Only in qte-2.3.7/src/kernel: qaccel.o
281diff -ru qte-2.3.7_orig/src/kernel/qapplication.cpp qte-2.3.7/src/kernel/qapplication.cpp
282 --- qte-2.3.7_orig/src/kernel/qapplication.cppThu Jul 17 03:20:25 2003
283 +++ qte-2.3.7/src/kernel/qapplication.cppMon Oct 27 14:21:28 2003
284@@ -35,6 +35,8 @@
285 **
286 **********************************************************************/
287
288 +#define QT_WEAK_SYMBOL__attribute__(( weak ))
289+
290 #include "qobjectlist.h"
291 #include "qobjectdict.h"
292 #include "qapplication.h"
293@@ -933,11 +935,16 @@
294 #ifndef QT_NO_STYLE
295 void QApplication::setStyle( QStyle *style )
296 {
297 +setStyle_NonWeak ( style );
298+}
299+
300+void QApplication::setStyle_NonWeak( QStyle *style )
301+{
302 QStyle* old = app_style;
303- app_style = style;
304
305 if ( startingUp() ) {
306 delete old;
307 +app_style = style;
308 return;
309 }
310
311@@ -958,6 +965,8 @@
312 old->unPolish( qApp );
313 }
314
315+ app_style = style;
316+
317 // take care of possible palette requirements of certain gui
318 // styles. Do it before polishing the application since the style
319 // might call QApplication::setStyle() itself
320@@ -1184,13 +1193,30 @@
321 \sa QWidget::setPalette(), palette(), QStyle::polish()
322 */
323
324-void QApplication::setPalette( const QPalette &palette, bool informWidgets,
325+void QApplication::setPalette ( const QPalette &palette, bool informWidgets,
326 + const char* className )
327+{
328 +setPalette_NonWeak ( palette, informWidgets, className );
329+}
330+
331+void QApplication::setPalette_NonWeak ( const QPalette &palette, bool informWidgets,
332 const char* className )
333 {
334 QPalette pal = palette;
335 #ifndef QT_NO_STYLE
336- if ( !startingUp() )
337+ if ( !startingUp() ) {
338 qApp->style().polish( pal );// NB: non-const reference
339 +if ( className ) {
340 + // if we just polished a class specific palette (this normally
341 + // only called by qt_fix_tooltips - see below), we better re-
342 + // polish the global palette. Some styles like liquid can get
343 + // confused, because they can not detect if the polished palette
344 + // is the global one or only a class specific one.
345 + // (liquid uses this palette to calculate blending pixmaps)
346 + QPalette p = qApp-> palette ( );
347 + qApp->style().polish ( p );
348 +}
349+ }
350 #endif
351 bool all = FALSE;
352 if ( !className ) {
353@@ -1273,6 +1299,12 @@
354 */
355
356 void QApplication::setFont( const QFont &font, bool informWidgets,
357 + const char* className )
358+{
359 +setFont_NonWeak ( font, informWidgets, className );
360+}
361+
362+void QApplication::setFont_NonWeak( const QFont &font, bool informWidgets,
363 const char* className )
364 {
365 bool all = FALSE;
366diff -ru qte-2.3.7_orig/src/kernel/qapplication.h qte-2.3.7/src/kernel/qapplication.h
367 --- qte-2.3.7_orig/src/kernel/qapplication.hThu Jul 17 03:20:25 2003
368 +++ qte-2.3.7/src/kernel/qapplication.hMon Oct 27 14:21:28 2003
369@@ -61,6 +61,10 @@
370 class QSemaphore;
371 #endif
372
373+#if !defined( QT_WEAK_SYMBOL )
374+#define QT_WEAK_SYMBOL
375+#endif
376+
377 // REMOVE IN 3.0 (just here for moc source compatibility)
378 #define QNonBaseApplication QApplication
379
380@@ -85,7 +89,10 @@
381
382 #ifndef QT_NO_STYLE
383 static QStyle &style();
384 - static void setStyle( QStyle* );
385 + static void setStyle( QStyle* ) QT_WEAK_SYMBOL;
386+private:
387 +static void setStyle_NonWeak( QStyle* );
388+public:
389 #endif
390 #if 1/* OBSOLETE */
391 enum ColorMode { NormalColors, CustomColors };
392@@ -106,11 +113,19 @@
393 #ifndef QT_NO_PALETTE
394 static QPalette palette( const QWidget* = 0 );
395 static void setPalette( const QPalette &, bool informWidgets=FALSE,
396 + const char* className = 0 ) QT_WEAK_SYMBOL;
397+private:
398 + static void setPalette_NonWeak( const QPalette &, bool informWidgets=FALSE,
399 const char* className = 0 );
400+public:
401 #endif
402 static QFont font( const QWidget* = 0 );
403 static void setFont( const QFont &, bool informWidgets=FALSE,
404 + const char* className = 0 ) QT_WEAK_SYMBOL;
405+private:
406 + static void setFont_NonWeak( const QFont &, bool informWidgets=FALSE,
407 const char* className = 0 );
408 +public:
409 static QFontMetrics fontMetrics();
410
411 QWidget *mainWidget() const;
412@@ -207,7 +222,10 @@
413 void qwsSetCustomColors( QRgb *colortable, int start, int numColors );
414 #ifndef QT_NO_QWS_MANAGER
415 static QWSDecoration &qwsDecoration();
416- static void qwsSetDecoration( QWSDecoration *);
417+ static void qwsSetDecoration( QWSDecoration *) QT_WEAK_SYMBOL;
418+private:
419+ static void qwsSetDecoration_NonWeak( QWSDecoration *);
420+public:
421 #endif
422 #endif
423
424Only in qte-2.3.7/src/kernel: qapplication.o
425diff -ru qte-2.3.7_orig/src/kernel/qapplication_qws.cpp qte-2.3.7/src/kernel/qapplication_qws.cpp
426 --- qte-2.3.7_orig/src/kernel/qapplication_qws.cppThu Jul 17 03:20:25 2003
427 +++ qte-2.3.7/src/kernel/qapplication_qws.cppMon Oct 27 14:21:28 2003
428@@ -2804,6 +2804,11 @@
429 */
430 void QApplication::qwsSetDecoration( QWSDecoration *d )
431 {
432 +qwsSetDecoration_NonWeak ( d );
433+}
434+
435+void QApplication::qwsSetDecoration_NonWeak( QWSDecoration *d )
436+{
437 if ( d ) {
438 delete qws_decoration;
439 qws_decoration = d;
440Only in qte-2.3.7/src/kernel: qapplication_qws.cpp~
441Only in qte-2.3.7/src/kernel: qapplication_qws.o
442Only in qte-2.3.7/src/kernel: qasyncimageio.o
443Only in qte-2.3.7/src/kernel: qasyncio.o
444Only in qte-2.3.7/src/kernel: qbitmap.o
445Only in qte-2.3.7/src/kernel: qclipboard.o
446Only in qte-2.3.7/src/kernel: qclipboard_qws.o
447Only in qte-2.3.7/src/kernel: qcolor.o
448Only in qte-2.3.7/src/kernel: qcolor_p.o
449Only in qte-2.3.7/src/kernel: qcolor_qws.o
450Only in qte-2.3.7/src/kernel: qconnection.o
451Only in qte-2.3.7/src/kernel: qcopchannel_qws.moc
452Only in qte-2.3.7/src/kernel: qcopchannel_qws.o
453Only in qte-2.3.7/src/kernel: qcursor.o
454Only in qte-2.3.7/src/kernel: qcursor_qws.o
455Only in qte-2.3.7/src/kernel: qdialog.o
456Only in qte-2.3.7/src/kernel: qdirectpainter_qws.o
457Only in qte-2.3.7/src/kernel: qdnd_qws.o
458Only in qte-2.3.7/src/kernel: qdragobject.o
459Only in qte-2.3.7/src/kernel: qdrawutil.o
460Only in qte-2.3.7/src/kernel: qdropsite.o
461Only in qte-2.3.7/src/kernel: qevent.o
462Only in qte-2.3.7/src/kernel: qfocusdata.o
463Only in qte-2.3.7/src/kernel: qfont.o
464Only in qte-2.3.7/src/kernel: qfont_qws.o
465diff -ru qte-2.3.7_orig/src/kernel/qfontdatabase.cpp qte-2.3.7/src/kernel/qfontdatabase.cpp
466 --- qte-2.3.7_orig/src/kernel/qfontdatabase.cppThu Jul 17 03:20:25 2003
467 +++ qte-2.3.7/src/kernel/qfontdatabase.cppMon Oct 27 14:21:28 2003
468@@ -35,6 +35,8 @@
469 **
470 **********************************************************************/
471
472+#define QT_WEAK_SYMBOL __attribute__(( weak ))
473+
474 #include "qfontdatabase.h"
475
476 #ifndef QT_NO_FONTDATABASE
477@@ -2421,6 +2423,13 @@
478 */
479
480 QValueList<int> QFontDatabase::pointSizes( const QString &family,
481+ const QString &style,
482+ const QString &charSet )
483+{
484 +return pointSizes_NonWeak ( family, style, charSet );
485+}
486+
487+QValueList<int> QFontDatabase::pointSizes_NonWeak ( const QString &family,
488 const QString &style,
489 const QString &charSet )
490 {
491diff -ru qte-2.3.7_orig/src/kernel/qfontdatabase.h qte-2.3.7/src/kernel/qfontdatabase.h
492 --- qte-2.3.7_orig/src/kernel/qfontdatabase.hThu Jul 17 03:20:25 2003
493 +++ qte-2.3.7/src/kernel/qfontdatabase.hMon Oct 27 14:21:28 2003
494@@ -59,6 +59,10 @@
495 class QDiskFont;
496 #endif
497
498+#if !defined( QT_WEAK_SYMBOL )
499+#define QT_WEAK_SYMBOL
500+#endif
501+
502 class QFontDatabasePrivate;
503
504 class Q_EXPORT QFontDatabase
505@@ -67,9 +71,16 @@
506 QFontDatabase();
507
508 QStringList families( bool onlyForLocale = TRUE ) const;
509+
510+
511 QValueList<int> pointSizes( const QString &family,
512 const QString &style = QString::null,
513 - const QString &charSet = QString::null );
514 + const QString &charSet = QString::null ) QT_WEAK_SYMBOL;
515+private:
516+ QValueList<int> pointSizes_NonWeak( const QString &family,
517 + const QString &style,
518 + const QString &charSet );
519+public:
520 QStringList styles( const QString &family,
521 const QString &charSet = QString::null ) const;
522 QStringList charSets( const QString &familyName,
523Only in qte-2.3.7/src/kernel: qfontdatabase.o
524Only in qte-2.3.7/src/kernel: qfontfactorybdf_qws.o
525Only in qte-2.3.7/src/kernel: qfontfactoryttf_qws.o
526Only in qte-2.3.7/src/kernel: qfontmanager_qws.o
527diff -ru qte-2.3.7_orig/src/kernel/qgfx_qws.cpp qte-2.3.7/src/kernel/qgfx_qws.cpp
528 --- qte-2.3.7_orig/src/kernel/qgfx_qws.cppThu Jul 17 03:20:25 2003
529 +++ qte-2.3.7/src/kernel/qgfx_qws.cppMon Oct 27 14:27:25 2003
530@@ -32,7 +32,7 @@
531 #include "qgfx_qws.h"
532
533 #include <stdio.h>
534-#include <dlfcn.h>
535+//#include <dlfcn.h>
536 #include <sys/types.h>
537 #include <dirent.h>
538 #include <stdlib.h>
539Only in qte-2.3.7/src/kernel: qgfx_qws.o
540diff -ru qte-2.3.7_orig/src/kernel/qgfxraster_qws.cpp qte-2.3.7/src/kernel/qgfxraster_qws.cpp
541 --- qte-2.3.7_orig/src/kernel/qgfxraster_qws.cppThu Jul 17 03:20:25 2003
542 +++ qte-2.3.7/src/kernel/qgfxraster_qws.cppMon Oct 27 14:27:25 2003
543@@ -75,7 +75,11 @@
544 # if __BYTE_ORDER == __BIG_ENDIAN
545 # define QWS_BIG_ENDIAN
546 # endif
547+#elif defined(__APPLE__)
548+# define QWS_BIG_ENDIAN
549 #endif
550+// AJ: the above (test for __APPLE__) is very hacky, but I can't
551+// think of something better at the moment.
552
553 // Pull this private function in from qglobal.cpp
554 extern unsigned int qt_int_sqrt( unsigned int n );
555@@ -3770,6 +3774,19 @@
556 b = srcval & 0xff;
557
558 unsigned char * tmp=(unsigned char *)&alphabuf[loopc];
559+# ifdef QWS_BIG_ENDIAN
560 + if(av==255) {
561 + // Do nothing - we already have source values in r,g,b
562 + } else if(av==0) {
563 + r = *(tmp+1);
564 + g = *(tmp+2);
565 + b = *(tmp+3);
566 + } else {
567 + r = ((r-*(tmp+1)) * av) / 256 + *(tmp+1);
568 + g = ((g-*(tmp+2)) * av) / 256 + *(tmp+2);
569 + b = ((b-*(tmp+3)) * av) / 256 + *(tmp+3);
570 + }
571+# else
572 if(av==255) {
573 // Do nothing - we already have source values in r,g,b
574 } else if(av==0) {
575@@ -3781,6 +3798,7 @@
576 g = ((g-*(tmp+1)) * av) / 256 + *(tmp+1);
577 b = ((b-*(tmp+0)) * av) / 256 + *(tmp+0);
578 }
579+# endif
580 *(alphaptr++) = (r << 16) | (g << 8) | b;
581 }
582
583@@ -4204,7 +4222,7 @@
584
585 } else if ( depth == 1 ) {
586 if (srctype==SourceImage) {
587 - static int warn;
588 + static int warn = 0;
589 if ( warn++ < 5 )
590 qDebug( "bitmap alpha-image not implemented" );
591 hImageLineUnclipped( x1, x2, l, srcdata, FALSE );
592@@ -4237,7 +4255,7 @@
593 setAlphaType(IgnoreAlpha);
594 if ( w <= 0 || h <= 0 || !ncliprect ) return;
595 GFX_START(QRect(rx+xoffs, ry+yoffs, w+1, h+1))
596-#ifdef QWS_EXPERIMENTAL_FASTPATH
597+#if 0 // def QWS_EXPERIMENTAL_FASTPATH !! this is crashing HancomWord on OZ !!
598 // ### fix for 8bpp
599 // This seems to be reliable now, at least for 16bpp
600
601Only in qte-2.3.7/src/kernel: qgfxraster_qws.cpp~
602Only in qte-2.3.7/src/kernel: qgfxraster_qws.o
603Only in qte-2.3.7/src/kernel: qguardedptr.o
604Only in qte-2.3.7/src/kernel: qiconset.o
605Only in qte-2.3.7/src/kernel: qimage.o
606Only in qte-2.3.7/src/kernel: qinputcontext_qws.o
607Only in qte-2.3.7/src/kernel: qjpegio.o
608diff -ru qte-2.3.7_orig/src/kernel/qkeyboard_qws.cpp qte-2.3.7/src/kernel/qkeyboard_qws.cpp
609 --- qte-2.3.7_orig/src/kernel/qkeyboard_qws.cppThu Jul 17 03:20:25 2003
610 +++ qte-2.3.7/src/kernel/qkeyboard_qws.cppMon Oct 27 14:42:11 2003
611@@ -69,7 +69,7 @@
612 #if !defined(_OS_QNX6_)
613
614 #include <termios.h>
615-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
616+#if !defined(_OS_MACX_) && !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
617 #include <sys/kd.h>
618 #include <sys/vt.h>
619 #endif
620@@ -468,10 +468,12 @@
621 void QWSPC101KeyboardHandler::restoreLeds()
622 {
623 char leds;
624+#if !defined(_OS_MACX_)
625 ioctl(0, KDGETLED, &leds);
626 leds = leds & ~LED_CAP;
627 if ( caps ) leds |= LED_CAP;
628 ioctl(0, KDSETLED, leds);
629+#endif
630 }
631
632 class QWSTtyKeyboardHandler : public QWSPC101KeyboardHandler
633@@ -547,7 +549,7 @@
634
635 static void vtSwitchHandler(int /*sig*/)
636 {
637-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
638+#if !defined(_OS_MACX_) && !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
639 if (vtActive) {
640 qwsServer->enablePainting(false);
641 qt_screen->save();
642@@ -880,7 +882,7 @@
643 if (term && !release) {
644 ctrl = false;
645 alt = false;
646-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
647+#if !defined(_OS_MACX_) && !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
648 ioctl(kbdFD, VT_ACTIVATE, term);
649 #endif
650 return;
651@@ -1031,7 +1033,7 @@
652 struct termios termdata;
653 tcgetattr( kbdFD, &termdata );
654
655-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
656+#if !defined(_OS_MACX_) && !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
657 ioctl(kbdFD, KDSKBMODE, K_RAW);
658 #endif
659
660@@ -1047,7 +1049,7 @@
661
662 signal(VTSWITCHSIG, vtSwitchHandler);
663
664-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
665+#if !defined(_OS_MACX_) && !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
666 struct vt_mode vtMode;
667 ioctl(kbdFD, VT_GETMODE, &vtMode);
668
669@@ -1068,7 +1070,7 @@
670 {
671 if (kbdFD >= 0)
672 {
673-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
674+#if !defined(_OS_MACX_) && !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
675 ioctl(kbdFD, KDSKBMODE, K_XLATE);
676 #endif
677 tcsetattr(kbdFD, TCSANOW, &origTermData);
678Only in qte-2.3.7/src/kernel: qkeyboard_qws.cpp.rej
679Only in qte-2.3.7/src/kernel: qkeyboard_qws.cpp~
680Only in qte-2.3.7/src/kernel: qkeyboard_qws.moc
681Only in qte-2.3.7/src/kernel: qkeyboard_qws.o
682Only in qte-2.3.7/src/kernel: qlayout.o
683Only in qte-2.3.7/src/kernel: qlayoutengine.o
684Only in qte-2.3.7/src/kernel: qlocalfs.o
685diff -ru qte-2.3.7_orig/src/kernel/qlock_qws.cpp qte-2.3.7/src/kernel/qlock_qws.cpp
686 --- qte-2.3.7_orig/src/kernel/qlock_qws.cppThu Jul 17 03:20:25 2003
687 +++ qte-2.3.7/src/kernel/qlock_qws.cppMon Oct 27 14:27:25 2003
688@@ -38,7 +38,7 @@
689 #include <errno.h>
690
691 #if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED) \
692- || defined _OS_FREEBSD_
693+ || defined(_OS_FREEBSD_) || defined(_OS_MACX_)
694 /* union semun is defined by including <sys/sem.h> */
695 #else
696 /* according to X/OPEN we have to define it ourselves */
697Only in qte-2.3.7/src/kernel: qlock_qws.o
698Only in qte-2.3.7/src/kernel: qmemorymanager_qws.o
699Only in qte-2.3.7/src/kernel: qmetaobject.o
700Only in qte-2.3.7/src/kernel: qmime.o
701Only in qte-2.3.7/src/kernel: qmngio.o
702Only in qte-2.3.7/src/kernel: qmovie.moc
703Only in qte-2.3.7/src/kernel: qmovie.o
704Only in qte-2.3.7/src/kernel: qnetworkprotocol.o
705Only in qte-2.3.7/src/kernel: qobject.o
706Only in qte-2.3.7/src/kernel: qpaintdevice_qws.o
707Only in qte-2.3.7/src/kernel: qpaintdevicemetrics.o
708Only in qte-2.3.7/src/kernel: qpainter.o
709Only in qte-2.3.7/src/kernel: qpainter_qws.o
710Only in qte-2.3.7/src/kernel: qpalette.o
711Only in qte-2.3.7/src/kernel: qpicture.o
712Only in qte-2.3.7/src/kernel: qpixmap.o
713Only in qte-2.3.7/src/kernel: qpixmap_qws.o
714Only in qte-2.3.7/src/kernel: qpixmapcache.o
715Only in qte-2.3.7/src/kernel: qpngio.o
716Only in qte-2.3.7/src/kernel: qpoint.o
717Only in qte-2.3.7/src/kernel: qprinter.o
718Only in qte-2.3.7/src/kernel: qprinter_qws.o
719Only in qte-2.3.7/src/kernel: qpsprinter.o
720Only in qte-2.3.7/src/kernel: qrect.o
721Only in qte-2.3.7/src/kernel: qregion.o
722Only in qte-2.3.7/src/kernel: qrichtext.o
723Only in qte-2.3.7/src/kernel: qsemimodal.o
724Only in qte-2.3.7/src/kernel: qsharedmemory.o
725Only in qte-2.3.7/src/kernel: qsignal.o
726Only in qte-2.3.7/src/kernel: qsignalmapper.o
727Only in qte-2.3.7/src/kernel: qsimplerichtext.o
728Only in qte-2.3.7/src/kernel: qsize.o
729Only in qte-2.3.7/src/kernel: qsizegrip.o
730Only in qte-2.3.7/src/kernel: qsocketnotifier.o
731Only in qte-2.3.7/src/kernel: qsound.o
732Only in qte-2.3.7/src/kernel: qsound_qws.o
733Only in qte-2.3.7/src/kernel: qsoundqss_qws.moc
734Only in qte-2.3.7/src/kernel: qsoundqss_qws.o
735Only in qte-2.3.7/src/kernel: qstyle.o
736Only in qte-2.3.7/src/kernel: qstylesheet.o
737Only in qte-2.3.7/src/kernel: qthread_unix.moc
738Only in qte-2.3.7/src/kernel: qthread_unix.o
739Only in qte-2.3.7/src/kernel: qtimer.o
740Only in qte-2.3.7/src/kernel: qtranslator.o
741Only in qte-2.3.7/src/kernel: qurl.o
742Only in qte-2.3.7/src/kernel: qurlinfo.o
743Only in qte-2.3.7/src/kernel: qurloperator.o
744Only in qte-2.3.7/src/kernel: qvariant.o
745Only in qte-2.3.7/src/kernel: qwidget.o
746Only in qte-2.3.7/src/kernel: qwidget_qws.o
747diff -ru qte-2.3.7_orig/src/kernel/qwindowsystem_qws.cpp qte-2.3.7/src/kernel/qwindowsystem_qws.cpp
748 --- qte-2.3.7_orig/src/kernel/qwindowsystem_qws.cppThu Jul 17 03:20:26 2003
749 +++ qte-2.3.7/src/kernel/qwindowsystem_qws.cppMon Oct 27 14:27:25 2003
750@@ -844,6 +844,18 @@
751 {
752 }
753
754+static void catchSegvSignal( int )
755+{
756+#ifndef QT_NO_QWS_KEYBOARD
757+ if ( qwsServer )
758 +qwsServer->closeKeyboard();
759+#endif
760+ QWSServer::closedown();
761+ fprintf(stderr, "Segmentation fault.\n");
762+ exit(1);
763+}
764+
765+
766 /*!
767 \class QWSServer qwindowsystem_qws.h
768 \brief Server-specific functionality in Qt/Embedded
769@@ -936,6 +948,7 @@
770 }
771
772 signal(SIGPIPE, ignoreSignal); //we get it when we read
773+ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
774 #endif
775 focusw = 0;
776 mouseGrabber = 0;
777@@ -950,7 +963,7 @@
778
779 #ifndef QT_NO_QWS_MULTIPROCESS
780 if ( !geteuid() ) {
781-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
782+#if !defined(_OS_MACX_) && !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
783 if( mount(0, "/var/shm", "shm", 0, 0) ) {
784 /* This just confuses people with 2.2 kernels
785 if ( errno != EBUSY )
786Only in qte-2.3.7/src/kernel: qwindowsystem_qws.cpp~
787Only in qte-2.3.7/src/kernel: qwindowsystem_qws.o
788Only in qte-2.3.7/src/kernel: qwmatrix.o
789Only in qte-2.3.7/src/kernel: qwsbeosdecoration_qws.o
790Only in qte-2.3.7/src/kernel: qwscommand_qws.o
791Only in qte-2.3.7/src/kernel: qwscursor_qws.o
792Only in qte-2.3.7/src/kernel: qwsdecoration_qws.o
793Only in qte-2.3.7/src/kernel: qwsdefaultdecoration_qws.o
794Only in qte-2.3.7/src/kernel: qwsevent_qws.o
795Only in qte-2.3.7/src/kernel: qwshydrodecoration_qws.o
796Only in qte-2.3.7/src/kernel: qwskde2decoration_qws.o
797Only in qte-2.3.7/src/kernel: qwskdedecoration_qws.o
798Only in qte-2.3.7/src/kernel: qwsmanager_qws.o
799diff -ru qte-2.3.7_orig/src/kernel/qwsmouse_qws.cpp qte-2.3.7/src/kernel/qwsmouse_qws.cpp
800 --- qte-2.3.7_orig/src/kernel/qwsmouse_qws.cppThu Jul 17 03:20:26 2003
801 +++ qte-2.3.7/src/kernel/qwsmouse_qws.cppMon Oct 27 14:27:25 2003
802@@ -336,7 +336,7 @@
803 tty.c_oflag = 0;
804 tty.c_lflag = 0;
805 tty.c_cflag = f | CREAD | CLOCAL | HUPCL;
806-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
807+#if !defined(_OS_MACX_) && !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
808 tty.c_line = 0;
809 #endif
810 tty.c_cc[VTIME] = 0;
811@@ -889,7 +889,7 @@
812 tty.c_iflag = IGNBRK | IGNPAR;
813 tty.c_oflag = 0;
814 tty.c_lflag = 0;
815-#if !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
816+#if !defined(_OS_MACX_) && !defined(_OS_FREEBSD_) && !defined(_OS_SOLARIS_)
817 tty.c_line = 0;
818 #endif // _OS_FREEBSD_
819 tty.c_cc[VTIME] = 0;
820Only in qte-2.3.7/src/kernel: qwsmouse_qws.moc
821Only in qte-2.3.7/src/kernel: qwsmouse_qws.o
822Only in qte-2.3.7/src/kernel: qwsproperty_qws.o
823Only in qte-2.3.7/src/kernel: qwsregionmanager_qws.o
824Only in qte-2.3.7/src/kernel: qwssocket_qws.o
825Only in qte-2.3.7/src/kernel: qwswindowsdecoration_qws.o
826Only in qte-2.3.7/src/moc: Makefile
827Only in qte-2.3.7/src/moc: moc
828Only in qte-2.3.7/src/moc: mocgen.o
829Only in qte-2.3.7/src/moc: qbuffer.o
830Only in qte-2.3.7/src/moc: qcollection.o
831Only in qte-2.3.7/src/moc: qcstring.o
832Only in qte-2.3.7/src/moc: qdatastream.o
833Only in qte-2.3.7/src/moc: qdatetime.o
834Only in qte-2.3.7/src/moc: qfile.o
835Only in qte-2.3.7/src/moc: qfile_unix.o
836Only in qte-2.3.7/src/moc: qgarray.o
837Only in qte-2.3.7/src/moc: qgdict.o
838Only in qte-2.3.7/src/moc: qglist.o
839Only in qte-2.3.7/src/moc: qglobal.o
840Only in qte-2.3.7/src/moc: qgvector.o
841Only in qte-2.3.7/src/moc: qiodevice.o
842Only in qte-2.3.7/src/moc: qregexp.o
843Only in qte-2.3.7/src/moc: qstring.o
844Only in qte-2.3.7/src/moc: qtextcodec.o
845Only in qte-2.3.7/src/moc: qtextstream.o
846Only in qte-2.3.7/src/moc: qutfcodec.o
847Only in qte-2.3.7/src/network: qdns.o
848Only in qte-2.3.7/src/network: qftp.o
849Only in qte-2.3.7/src/network: qhostaddress.o
850Only in qte-2.3.7/src/network: qnetwork.o
851Only in qte-2.3.7/src/network: qserversocket.o
852Only in qte-2.3.7/src/network: qsocket.o
853Only in qte-2.3.7/src/network: qsocketdevice.o
854Only in qte-2.3.7/src/network: qsocketdevice_unix.o
855Only in qte-2.3.7/src/table: qtable.o
856Only in qte-2.3.7/src/tools: qbitarray.o
857Only in qte-2.3.7/src/tools: qbuffer.o
858Only in qte-2.3.7/src/tools: qcollection.o
859Only in qte-2.3.7/src/tools: qconfig-qpe.h
860Only in qte-2.3.7/src/tools: qconfig-qpe.h~
861diff -ru qte-2.3.7_orig/src/tools/qconfig.h qte-2.3.7/src/tools/qconfig.h
862 --- qte-2.3.7_orig/src/tools/qconfig.hFri Jan 26 14:43:06 2001
863 +++ qte-2.3.7/src/tools/qconfig.hWed Oct 29 22:13:16 2003
864@@ -1,3 +1,26 @@
865+// Copied from qconfig-qpe.h
866+/**********************************************************************
867+** Copyright (C) 2000 Trolltech AS. All rights reserved.
868+**
869+** This file is part of Qtopia Environment.
870+**
871+** This file may be distributed and/or modified under the terms of the
872+** GNU General Public License version 2 as published by the Free Software
873+** Foundation and appearing in the file LICENSE.GPL included in the
874+** packaging of this file.
875+**
876+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
877+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
878+**
879+** See http://www.trolltech.com/gpl/ for GPL licensing information.
880+**
881+** Contact info@trolltech.com if any conditions of this licensing are
882+** not clear to you.
883+**
884+**********************************************************************/
885+#ifndef QT_H
886+#endif // QT_H
887+
888 // Empty leaves all features enabled. See doc/html/features.html for choices.
889
890 // Note that disabling some features will produce a libqt that is not
891@@ -8,3 +31,69 @@
892 #ifndef QT_DLL
893 #define QT_DLL // Internal
894 #endif
895+
896+#if defined(QT_QWS_IPAQ) || defined(QT_QWS_CASSIOPEIA) || defined(QT_QWS_SL5XXX)
897+# define QT_NO_QWS_CURSOR
898+# define QT_NO_QWS_MOUSE_AUTO
899+#endif
900+#ifndef QT_NO_CODECS
901+#define QT_NO_CODECS
902+#endif
903+#define QT_NO_UNICODETABLES
904+//#define QT_NO_IMAGEIO_BMP
905+#define QT_NO_IMAGEIO_PPM
906+//#define QT_NO_ASYNC_IO
907+//#define QT_NO_ASYNC_IMAGE_IO
908+#define QT_NO_FREETYPE
909+#define QT_NO_BDF
910+//#define QT_NO_FONTDATABASE
911+#define QT_NO_DRAGANDDROP
912+//#define QT_NO_CLIPBOARD
913+#define QT_NO_PROPERTIES
914+#define QT_NO_NETWORKPROTOCOL
915+
916+#define QT_NO_IMAGE_TEXT
917+
918+//#define QT_NO_TOOLTIP
919+#define QT_NO_COLORNAMES
920+#define QT_NO_TRANSFORMATIONS
921+#define QT_NO_TRANSLATION_BUILDER
922+#define QT_NO_COMPLEXTEXT
923+#define QT_NO_PRINTER
924+#define QT_NO_PICTURE
925+//#define QT_NO_ICONVIEW
926+#define QT_NO_DIAL
927+#define QT_NO_SIZEGRIP
928+#define QT_NO_WORKSPACE
929+//#define QT_NO_TABLE
930+//#define QT_NO_ACTION
931+//#define QT_NO_SETTINGS
932+#define QT_NO_STYLE_POCKETPC
933+#ifndef QT_NO_STYLE_AQUA
934+# define QT_NO_STYLE_AQUA
935+#endif
936+#define QT_NO_STYLE_MOTIF
937+#define QT_NO_STYLE_PLATINUM
938+#define QT_NO_FILEDIALOG
939+#define QT_NO_FONTDIALOG
940+#define QT_NO_PRINTDIALOG
941+#define QT_NO_COLORDIALOG
942+#define QT_NO_INPUTDIALOG
943+//#define QT_NO_MESSAGEBOX
944+#define QT_NO_PROGRESSDIALOG
945+//#define QT_NO_TABDIALOG
946+#define QT_NO_WIZARD
947+#define QT_NO_EFFECTS
948+//#define QT_NO_COMPONENT
949+#define QT_NO_DOM
950+#define QT_NO_SEMIMODAL
951+//#define QT_NO_PROGRESSBAR
952+#define QT_NO_SPLITTER
953+
954+//#define QT_NO_QWS_SAVEFONTS
955+//#define QT_NO_QWS_PROPERTIES
956+
957+#define QT_NO_QWS_BEOS_WM_STYLE
958+#define QT_NO_QWS_KDE2_WM_STYLE
959+#define QT_NO_QWS_KDE_WM_STYLE
960+#define QT_NO_QWS_WINDOWS_WM_STYLE
961Only in qte-2.3.7/src/tools: qconfig.h~
962Only in qte-2.3.7/src/tools: qcstring.o
963Only in qte-2.3.7/src/tools: qdatastream.o
964Only in qte-2.3.7/src/tools: qdatetime.o
965Only in qte-2.3.7/src/tools: qdir.o
966Only in qte-2.3.7/src/tools: qdir_unix.o
967Only in qte-2.3.7/src/tools: qfile.o
968Only in qte-2.3.7/src/tools: qfile_unix.o
969Only in qte-2.3.7/src/tools: qfileinfo.o
970Only in qte-2.3.7/src/tools: qfileinfo_unix.o
971Only in qte-2.3.7/src/tools: qgarray.o
972Only in qte-2.3.7/src/tools: qgcache.o
973Only in qte-2.3.7/src/tools: qgdict.o
974Only in qte-2.3.7/src/tools: qglist.o
975Only in qte-2.3.7/src/tools: qglobal.o
976Only in qte-2.3.7/src/tools: qgvector.o
977Only in qte-2.3.7/src/tools: qiodevice.o
978Only in qte-2.3.7/src/tools: qmap.o
979diff -ru qte-2.3.7_orig/src/tools/qmodules.h qte-2.3.7/src/tools/qmodules.h
980 --- qte-2.3.7_orig/src/tools/qmodules.hFri Aug 31 17:00:56 2001
981 +++ qte-2.3.7/src/tools/qmodules.hWed Oct 29 21:57:53 2003
982@@ -1,14 +1,12 @@
983-#ifndef QT_H
984-#endif // QT_H
985-
986+// These modules are licensed to you
987 #define QT_MODULE_TOOLS
988 #define QT_MODULE_KERNEL
989 #define QT_MODULE_WIDGETS
990 #define QT_MODULE_DIALOGS
991-
992 #define QT_MODULE_ICONVIEW
993 #define QT_MODULE_WORKSPACE
994-#define QT_MODULE_TABLE
995+#define QT_MODULE_NETWORK
996 #define QT_MODULE_CANVAS
997+#define QT_MODULE_TABLE
998 #define QT_MODULE_XML
999-#define QT_MODULE_NETWORK
1000+#define QT_MODULE_OPENGL
1001Only in qte-2.3.7/src/tools: qregexp.o
1002Only in qte-2.3.7/src/tools: qstring.o
1003Only in qte-2.3.7/src/tools: qstringlist.o
1004Only in qte-2.3.7/src/tools: qtextcodec.o
1005Only in qte-2.3.7/src/tools: qtextstream.o
1006Only in qte-2.3.7/src/tools: qutfcodec.o
1007Only in qte-2.3.7/src/widgets: qaction.o
1008Only in qte-2.3.7/src/widgets: qbutton.o
1009Only in qte-2.3.7/src/widgets: qbuttongroup.o
1010Only in qte-2.3.7/src/widgets: qcdestyle.o
1011Only in qte-2.3.7/src/widgets: qcheckbox.o
1012Only in qte-2.3.7/src/widgets: qcombobox.o
1013diff -ru qte-2.3.7_orig/src/widgets/qcommonstyle.cpp qte-2.3.7/src/widgets/qcommonstyle.cpp
1014 --- qte-2.3.7_orig/src/widgets/qcommonstyle.cppThu Jul 17 03:20:26 2003
1015 +++ qte-2.3.7/src/widgets/qcommonstyle.cppMon Oct 27 14:21:28 2003
1016@@ -566,7 +566,7 @@
1017 bool enabled, bool active )
1018 {
1019 #ifndef QT_NO_MENUBAR
1020-#ifndef QT_NO_STYLE_SGI
1021+#if 1 // #ifndef QT_NO_STYLE_SGI
1022 if (draw_menu_bar_impl != 0) {
1023 QDrawMenuBarItemImpl impl = draw_menu_bar_impl;
1024 (this->*impl)(p, x, y, w, h, mi, g, enabled, active);
1025Only in qte-2.3.7/src/widgets: qcommonstyle.o
1026Only in qte-2.3.7/src/widgets: qcompactstyle.o
1027Only in qte-2.3.7/src/widgets: qdial.o
1028Only in qte-2.3.7/src/widgets: qeffects.moc
1029Only in qte-2.3.7/src/widgets: qeffects.o
1030Only in qte-2.3.7/src/widgets: qframe.o
1031Only in qte-2.3.7/src/widgets: qgrid.o
1032Only in qte-2.3.7/src/widgets: qgroupbox.o
1033Only in qte-2.3.7/src/widgets: qhbox.o
1034Only in qte-2.3.7/src/widgets: qhbuttongroup.o
1035Only in qte-2.3.7/src/widgets: qheader.o
1036Only in qte-2.3.7/src/widgets: qhgroupbox.o
1037Only in qte-2.3.7/src/widgets: qinterlacestyle.o
1038Only in qte-2.3.7/src/widgets: qlabel.o
1039Only in qte-2.3.7/src/widgets: qlcdnumber.o
1040Only in qte-2.3.7/src/widgets: qlineedit.o
1041Only in qte-2.3.7/src/widgets: qlistbox.o
1042diff -ru qte-2.3.7_orig/src/widgets/qlistview.cpp qte-2.3.7/src/widgets/qlistview.cpp
1043 --- qte-2.3.7_orig/src/widgets/qlistview.cppThu Jul 17 03:20:26 2003
1044 +++ qte-2.3.7/src/widgets/qlistview.cppMon Oct 27 14:21:28 2003
1045@@ -4968,9 +4968,9 @@
1046 l = l->childItem ? l->childItem : l->siblingItem;
1047
1048 if ( l && l->height() )
1049 -s.setHeight( s.height() + 10 * l->height() );
1050- else
1051 -s.setHeight( s.height() + 140 );
1052 +s.setHeight( s.height() + 4 /*10*/ * l->height() );
1053+ else // ^v much too big for handhelds
1054 +s.setHeight( s.height() + 30 /*140*/ );
1055
1056 if ( s.width() > s.height() * 3 )
1057 s.setHeight( s.width() / 3 );
1058Only in qte-2.3.7/src/widgets: qlistview.o
1059Only in qte-2.3.7/src/widgets: qmainwindow.moc
1060Only in qte-2.3.7/src/widgets: qmainwindow.o
1061Only in qte-2.3.7/src/widgets: qmenubar.o
1062Only in qte-2.3.7/src/widgets: qmenudata.o
1063Only in qte-2.3.7/src/widgets: qmotifplusstyle.o
1064Only in qte-2.3.7/src/widgets: qmotifstyle.o
1065Only in qte-2.3.7/src/widgets: qmultilineedit.o
1066Only in qte-2.3.7/src/widgets: qplatinumstyle.o
1067Only in qte-2.3.7/src/widgets: qpopupmenu.o
1068Only in qte-2.3.7/src/widgets: qprogressbar.o
1069Only in qte-2.3.7/src/widgets: qpushbutton.o
1070Only in qte-2.3.7/src/widgets: qradiobutton.o
1071Only in qte-2.3.7/src/widgets: qrangecontrol.o
1072Only in qte-2.3.7/src/widgets: qscrollbar.o
1073Only in qte-2.3.7/src/widgets: qscrollview.o
1074Only in qte-2.3.7/src/widgets: qsgistyle.o
1075Only in qte-2.3.7/src/widgets: qslider.o
1076Only in qte-2.3.7/src/widgets: qspinbox.o
1077Only in qte-2.3.7/src/widgets: qsplitter.o
1078Only in qte-2.3.7/src/widgets: qstatusbar.o
1079Only in qte-2.3.7/src/widgets: qtabbar.o
1080Only in qte-2.3.7/src/widgets: qtableview.o
1081Only in qte-2.3.7/src/widgets: qtabwidget.o
1082Only in qte-2.3.7/src/widgets: qtextbrowser.o
1083Only in qte-2.3.7/src/widgets: qtextview.o
1084Only in qte-2.3.7/src/widgets: qtoolbar.moc
1085Only in qte-2.3.7/src/widgets: qtoolbar.o
1086diff -ru qte-2.3.7_orig/src/widgets/qtoolbutton.cpp qte-2.3.7/src/widgets/qtoolbutton.cpp
1087 --- qte-2.3.7_orig/src/widgets/qtoolbutton.cppThu Jul 17 03:20:27 2003
1088 +++ qte-2.3.7/src/widgets/qtoolbutton.cppMon Oct 27 14:21:28 2003
1089@@ -230,7 +230,7 @@
1090 else
1091 QToolTip::add( this, textLabel );
1092 }
1093 -#endif
1094+#endif
1095 }
1096
1097
1098@@ -324,12 +324,12 @@
1099 QPixmap pm = iconSet(TRUE).pixmap(QIconSet::Large, QIconSet::Normal);
1100 w = pm.width();
1101 h = pm.height();
1102 -if ( w < 32 )
1103 - w = 32;
1104 -if ( h < 32 )
1105 - h = 32;
1106 +if ( w < 24 )
1107 + w = 24;
1108 +if ( h < 24 )
1109 + h = 24;
1110 } else {
1111 -w = h = 16;
1112 +w = h = 14;
1113 QPixmap pm = iconSet(TRUE).pixmap(QIconSet::Small, QIconSet::Normal);
1114 w = pm.width();
1115 h = pm.height();
1116Only in qte-2.3.7/src/widgets: qtoolbutton.o
1117Only in qte-2.3.7/src/widgets: qtooltip.moc
1118Only in qte-2.3.7/src/widgets: qtooltip.o
1119Only in qte-2.3.7/src/widgets: qvalidator.o
1120Only in qte-2.3.7/src/widgets: qvbox.o
1121Only in qte-2.3.7/src/widgets: qvbuttongroup.o
1122Only in qte-2.3.7/src/widgets: qvgroupbox.o
1123Only in qte-2.3.7/src/widgets: qwhatsthis.moc
1124Only in qte-2.3.7/src/widgets: qwhatsthis.o
1125Only in qte-2.3.7/src/widgets: qwidgetstack.o
1126Only in qte-2.3.7/src/widgets: qwindowsstyle.o
1127Only in qte-2.3.7/src/workspace: qworkspace.moc
1128Only in qte-2.3.7/src/workspace: qworkspace.o
1129Only in qte-2.3.7/src/xml: qdom.o
1130Only in qte-2.3.7/src/xml: qxml.o
1131Only in qte-2.3.7: src-mt.mk
1132Only in qte-2.3.7: stamp-headers
1133Only in qte-2.3.7/tools: Makefile
1134Only in qte-2.3.7/tools/designer: Makefile
1135Only in qte-2.3.7/tools/designer/designer: Makefile
1136Only in qte-2.3.7/tools/designer/examples/walkthrough: Makefile
1137Only in qte-2.3.7/tools/designer/integration/rc2ui: Makefile
1138Only in qte-2.3.7/tools/designer/tools/createcw: Makefile
1139Only in qte-2.3.7/tools/designer/uic: Makefile
1140Only in qte-2.3.7/tools/designer/util: Makefile
1141Only in qte-2.3.7/tools/makeqpf: Makefile
1142Only in qte-2.3.7/tools/mergetr: Makefile
1143Only in qte-2.3.7/tools/msg2qm: Makefile
1144Only in qte-2.3.7/tools/qconfig: Makefile
1145Only in qte-2.3.7/tools/qembed: Makefile
1146Only in qte-2.3.7/tools/qvfb: Makefile
1147Only in qte-2.3.7/tutorial: Makefile
1148Only in qte-2.3.7/tutorial/t1: Makefile
1149Only in qte-2.3.7/tutorial/t10: Makefile
1150Only in qte-2.3.7/tutorial/t11: Makefile
1151Only in qte-2.3.7/tutorial/t12: Makefile
1152Only in qte-2.3.7/tutorial/t13: Makefile
1153Only in qte-2.3.7/tutorial/t14: Makefile
1154Only in qte-2.3.7/tutorial/t2: Makefile
1155Only in qte-2.3.7/tutorial/t3: Makefile
1156Only in qte-2.3.7/tutorial/t4: Makefile
1157Only in qte-2.3.7/tutorial/t5: Makefile
1158Only in qte-2.3.7/tutorial/t6: Makefile
1159Only in qte-2.3.7/tutorial/t7: Makefile
1160Only in qte-2.3.7/tutorial/t8: Makefile
1161Only in qte-2.3.7/tutorial/t9: Makefile
diff --git a/rsync/config_linux.h b/rsync/config_linux.h
index e5ff3e4..f488b78 100644
--- a/rsync/config_linux.h
+++ b/rsync/config_linux.h
@@ -1,115 +1,115 @@
1/* config.h. Generated automatically by configure. */ 1/* config.h. Generated automatically by configure. */
2/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */ 2/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */
3 3
4/* Define to empty if the keyword does not work. */ 4/* Define to empty if the keyword does not work. */
5/* #undef const */ 5/* #undef const */
6 6
7/* Define to `long' if <sys/types.h> doesn't define. */ 7/* Define to `long' if <sys/types.h> doesn't define. */
8/* #undef off_t */ 8/* #undef off_t */
9 9
10/* Define to `unsigned' if <sys/types.h> doesn't define. */ 10/* Define to `unsigned' if <sys/types.h> doesn't define. */
11/* #undef size_t */ 11/* #undef size_t */
12 12
13/* Define if you have the ANSI C header files. */ 13/* Define if you have the ANSI C header files. */
14#define STDC_HEADERS 1 14#define STDC_HEADERS 1
15 15
16/* Define this if your sockaddr structure contains sin_len */ 16/* Define this if your sockaddr structure contains sin_len */
17/* #undef HAVE_SOCK_SIN_LEN */ 17/* #undef HAVE_SOCK_SIN_LEN */
18 18
19/* How many bits would you like to have in an off_t? */ 19/* How many bits would you like to have in an off_t? */
20#define _FILE_OFFSET_BITS 64 20#define _FILE_OFFSET_BITS 64
21 21
22/* Define to include GNU C library extensions. */ 22/* Define to include GNU C library extensions. */
23#define _GNU_SOURCE 1 23#define _GNU_SOURCE 1
24 24
25/* GNU extension of saving argv[0] to program_invocation_short_name */ 25/* GNU extension of saving argv[0] to program_invocation_short_name */
26#define HAVE_PROGRAM_INVOCATION_NAME 1 26/* #define HAVE_PROGRAM_INVOCATION_NAME 1 */
27 27
28/* Define to a replacement type if intmax_t is not a builtin, or in 28/* Define to a replacement type if intmax_t is not a builtin, or in
29 sys/types.h or stdlib.h or stddef.h */ 29 sys/types.h or stdlib.h or stddef.h */
30/* #undef intmax_t */ 30/* #undef intmax_t */
31 31
32/* The number of bytes in a int. */ 32/* The number of bytes in a int. */
33#define SIZEOF_INT 4 33#define SIZEOF_INT 4
34 34
35/* The number of bytes in a long. */ 35/* The number of bytes in a long. */
36#define SIZEOF_LONG 4 36#define SIZEOF_LONG 4
37 37
38/* The number of bytes in a off_t. */ 38/* The number of bytes in a off_t. */
39#define SIZEOF_OFF_T 8 39#define SIZEOF_OFF_T 8
40 40
41/* The number of bytes in a short. */ 41/* The number of bytes in a short. */
42#define SIZEOF_SHORT 2 42#define SIZEOF_SHORT 2
43 43
44/* The number of bytes in a size_t. */ 44/* The number of bytes in a size_t. */
45#define SIZEOF_SIZE_T 4 45#define SIZEOF_SIZE_T 4
46 46
47/* The number of bytes in a unsigned char. */ 47/* The number of bytes in a unsigned char. */
48#define SIZEOF_UNSIGNED_CHAR 1 48#define SIZEOF_UNSIGNED_CHAR 1
49 49
50/* The number of bytes in a unsigned int. */ 50/* The number of bytes in a unsigned int. */
51#define SIZEOF_UNSIGNED_INT 4 51#define SIZEOF_UNSIGNED_INT 4
52 52
53/* The number of bytes in a unsigned long. */ 53/* The number of bytes in a unsigned long. */
54#define SIZEOF_UNSIGNED_LONG 4 54#define SIZEOF_UNSIGNED_LONG 4
55 55
56/* The number of bytes in a unsigned short. */ 56/* The number of bytes in a unsigned short. */
57#define SIZEOF_UNSIGNED_SHORT 2 57#define SIZEOF_UNSIGNED_SHORT 2
58 58
59/* Define if you have the mtrace function. */ 59/* Define if you have the mtrace function. */
60#define HAVE_MTRACE 1 60#define HAVE_MTRACE 1
61 61
62/* Define if you have the snprintf function. */ 62/* Define if you have the snprintf function. */
63#define HAVE_SNPRINTF 1 63#define HAVE_SNPRINTF 1
64 64
65/* Define if you have the strerror function. */ 65/* Define if you have the strerror function. */
66#define HAVE_STRERROR 1 66#define HAVE_STRERROR 1
67 67
68/* Define if you have the vsnprintf function. */ 68/* Define if you have the vsnprintf function. */
69#define HAVE_VSNPRINTF 1 69#define HAVE_VSNPRINTF 1
70 70
71/* Define if you have the <alloca.h> header file. */ 71/* Define if you have the <alloca.h> header file. */
72#define HAVE_ALLOCA_H 1 72#define HAVE_ALLOCA_H 1
73 73
74/* Define if you have the <bzlib.h> header file. */ 74/* Define if you have the <bzlib.h> header file. */
75#define HAVE_BZLIB_H 1 75#define HAVE_BZLIB_H 1
76 76
77/* Define if you have the <config.h> header file. */ 77/* Define if you have the <config.h> header file. */
78/* #undef HAVE_CONFIG_H */ 78/* #undef HAVE_CONFIG_H */
79 79
80/* Define if you have the <dlfcn.h> header file. */ 80/* Define if you have the <dlfcn.h> header file. */
81#define HAVE_DLFCN_H 1 81#define HAVE_DLFCN_H 1
82 82
83/* Define if you have the <libintl.h> header file. */ 83/* Define if you have the <libintl.h> header file. */
84#define HAVE_LIBINTL_H 1 84#define HAVE_LIBINTL_H 1
85 85
86/* Define if you have the <mcheck.h> header file. */ 86/* Define if you have the <mcheck.h> header file. */
87#define HAVE_MCHECK_H 1 87#define HAVE_MCHECK_H 1
88 88
89/* Define if you have the <stdint.h> header file. */ 89/* Define if you have the <stdint.h> header file. */
90#define HAVE_STDINT_H 1 90#define HAVE_STDINT_H 1
91 91
92/* Define if you have the <unistd.h> header file. */ 92/* Define if you have the <unistd.h> header file. */
93#define HAVE_UNISTD_H 1 93#define HAVE_UNISTD_H 1
94 94
95/* Define if you have the popt library (-lpopt). */ 95/* Define if you have the popt library (-lpopt). */
96#define HAVE_LIBPOPT 1 96#define HAVE_LIBPOPT 1
97 97
98/* Name of package */ 98/* Name of package */
99#define PACKAGE "librsync" 99#define PACKAGE "librsync"
100 100
101/* Version number of package */ 101/* Version number of package */
102#define VERSION "0.9.5" 102#define VERSION "0.9.5"
103 103
104/* Number of bits in a file offset, on hosts where this is settable. */ 104/* Number of bits in a file offset, on hosts where this is settable. */
105#define _FILE_OFFSET_BITS 64 105#define _FILE_OFFSET_BITS 64
106 106
107/* Define to make ftello visible on some hosts (e.g. HP-UX 10.20). */ 107/* Define to make ftello visible on some hosts (e.g. HP-UX 10.20). */
108/* #undef _LARGEFILE_SOURCE */ 108/* #undef _LARGEFILE_SOURCE */
109 109
110/* Define for large files, on AIX-style hosts. */ 110/* Define for large files, on AIX-style hosts. */
111/* #undef _LARGE_FILES */ 111/* #undef _LARGE_FILES */
112 112
113/* Define to make ftello visible on some hosts (e.g. glibc 2.1.3). */ 113/* Define to make ftello visible on some hosts (e.g. glibc 2.1.3). */
114/* #undef _XOPEN_SOURCE */ 114/* #undef _XOPEN_SOURCE */
115 115
diff --git a/rsync/trace.h b/rsync/trace.h
index 60a6477..2bb8552 100644
--- a/rsync/trace.h
+++ b/rsync/trace.h
@@ -1,122 +1,112 @@
1/*= -*- c-basic-offset: 4; indent-tabs-mode: nil; -*- 1/*= -*- c-basic-offset: 4; indent-tabs-mode: nil; -*-
2 * 2 *
3 * librsync -- generate and apply network deltas 3 * librsync -- generate and apply network deltas
4 * $Id$ 4 * $Id$
5 * 5 *
6 * Copyright (C) 2000, 2001 by Martin Pool <mbp@samba.org> 6 * Copyright (C) 2000, 2001 by Martin Pool <mbp@samba.org>
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU Lesser General Public License as published by 9 * it under the terms of the GNU Lesser General Public License as published by
10 * the Free Software Foundation; either version 2.1 of the License, or 10 * the Free Software Foundation; either version 2.1 of the License, or
11 * (at your option) any later version. 11 * (at your option) any later version.
12 * 12 *
13 * This program is distributed in the hope that it will be useful, 13 * This program 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 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Lesser General Public License for more details. 16 * GNU Lesser General Public License for more details.
17 * 17 *
18 * You should have received a copy of the GNU Lesser General Public License 18 * You should have received a copy of the GNU Lesser General Public License
19 * along with this program; if not, write to the Free Software 19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 */ 21 */
22 22
23 23
24/* 24/*
25 * TODO: A function like perror that includes strerror output. Apache 25 * TODO: A function like perror that includes strerror output. Apache
26 * does this by adding flags as well as the severity level which say 26 * does this by adding flags as well as the severity level which say
27 * whether such information should be included. 27 * whether such information should be included.
28 */ 28 */
29 29
30 30
31/* 31/*
32 * trace may be turned off. 32 * trace may be turned off.
33 * 33 *
34 * error is always on, but you can return and continue in some way 34 * error is always on, but you can return and continue in some way
35 * 35 *
36 * fatal terminates the whole process 36 * fatal terminates the whole process
37 */ 37 */
38 38
39void rs_fatal0(char const *s, ...); 39#if defined(HAVE_VARARG_MACROS) && defined(__GNUC__)
40void rs_error0(char const *s, ...); 40/*
41void rs_trace0(char const *s, ...); 41 * TODO: Don't assume this is a gcc thing; rather test in autoconf for
42 42 * support for __FUNCTION__. One simple way might just be to try compiling
43void rs_log0_nofn(int level, char const *fmt, ...); 43 * the definition of one of these functions!
44 44 *
45#ifdef __GNUC__ 45 * TODO: Also look for the C9X predefined identifier `_function', or
46 * whatever it's called.
47 */
46 48
47void rs_log0(int level, char const *fn, char const *fmt, ...) 49void rs_log0(int level, char const *fn, char const *fmt, ...)
48 __attribute__ ((format(printf, 3, 4))); 50 __attribute__ ((format(printf, 3, 4)));
49 51
50#ifdef DO_RS_TRACE 52#ifdef DO_RS_TRACE
51# define rs_trace(fmt, arg...) \ 53# define rs_trace(fmt, arg...) \
52 do { rs_log0(RS_LOG_DEBUG, __FUNCTION__, fmt , ##arg); \ 54 do { rs_log0(RS_LOG_DEBUG, __FUNCTION__, fmt , ##arg); \
53 } while (0) 55 } while (0)
54#else 56#else
55# define rs_trace(s, str...) 57# define rs_trace(fmt, arg...)
56 #endif/* !DO_RS_TRACE */ 58 #endif/* !DO_RS_TRACE */
57 59
58/*
59 * TODO: Don't assume this is a gcc thing; rather test in autoconf for
60 * support for __FUNCTION__ and varargs macros. One simple way might
61 * just be to try compiling the definition of one of these functions!
62 *
63 * TODO: Also look for the C9X predefined identifier `_function', or
64 * whatever it's called.
65 */
66
67#define rs_log(l, s, str...) do { \ 60#define rs_log(l, s, str...) do { \
68 rs_log0((l), __FUNCTION__, (s) , ##str); \ 61 rs_log0((l), __FUNCTION__, (s) , ##str); \
69 } while (0) 62 } while (0)
70 63
71 64
72#define rs_error(s, str...) do { \ 65#define rs_error(s, str...) do { \
73 rs_log0(RS_LOG_ERR, __FUNCTION__, (s) , ##str); \ 66 rs_log0(RS_LOG_ERR, __FUNCTION__, (s) , ##str); \
74 } while (0) 67 } while (0)
75 68
76 69
77#define rs_fatal(s, str...) do { \ 70#define rs_fatal(s, str...) do { \
78 rs_log0(RS_LOG_CRIT, __FUNCTION__, \ 71 rs_log0(RS_LOG_CRIT, __FUNCTION__, \
79 (s) , ##str); \ 72 (s) , ##str); \
80 abort(); \ 73 abort(); \
81 } while (0) 74 } while (0)
82 75
83 76
84#else /************************* ! __GNUC__ */ 77#else /************************* ! __GNUC__ */
85 78# define rs_trace rs_trace0
86# define rs_fatal rs_fatal0 79# define rs_fatal rs_fatal0
87# define rs_error rs_error0 80# define rs_error rs_error0
88# define rs_log rs_log0_nofn 81# define rs_log rs_log0_nofn
89
90# ifdef DO_RS_TRACE
91# define rs_trace rs_trace0
92 # endif /* DO_RS_TRACE */
93 #endif /* ! __GNUC__ */ 82 #endif /* ! __GNUC__ */
94 83
95 84void rs_trace0(char const *s, ...);
85void rs_fatal0(char const *s, ...);
86void rs_error0(char const *s, ...);
96void rs_log0(int level, char const *fn, char const *fmt, ...); 87void rs_log0(int level, char const *fn, char const *fmt, ...);
97 88void rs_log0_nofn(int level, char const *fmt, ...);
98 89
99enum { 90enum {
100 RS_LOG_PRIMASK = 7, /**< Mask to extract priority 91 RS_LOG_PRIMASK = 7, /**< Mask to extract priority
101 part. \internal */ 92 part. \internal */
102 93
103 RS_LOG_NONAME = 8 /**< \b Don't show function name in 94 RS_LOG_NONAME = 8 /**< \b Don't show function name in
104 message. */ 95 message. */
105}; 96};
106 97
107 98
108
109/** 99/**
110 * \macro rs_trace_enabled() 100 * \macro rs_trace_enabled()
111 * 101 *
112 * Call this before putting too much effort into generating trace 102 * Call this before putting too much effort into generating trace
113 * messages. 103 * messages.
114 */ 104 */
115 105
116extern int rs_trace_level; 106extern int rs_trace_level;
117 107
118#ifdef DO_RS_TRACE 108#ifdef DO_RS_TRACE
119# define rs_trace_enabled() ((rs_trace_level & RS_LOG_PRIMASK) >= RS_LOG_DEBUG) 109# define rs_trace_enabled() ((rs_trace_level & RS_LOG_PRIMASK) >= RS_LOG_DEBUG)
120#else 110#else
121# define rs_trace_enabled() 0 111# define rs_trace_enabled() 0
122#endif 112#endif
diff --git a/scripts/kconfig/lkc_proto.h b/scripts/kconfig/lkc_proto.h
index 97c7917..e438bd8 100644
--- a/scripts/kconfig/lkc_proto.h
+++ b/scripts/kconfig/lkc_proto.h
@@ -1,39 +1,39 @@
1 1
2/* confdata.c */ 2/* confdata.c */
3P(conf_parse,void,(const char *name)); 3P(conf_parse,void,(const char *name));
4P(conf_read,int,(const char *name)); 4P(conf_read,int,(const char *name));
5P(conf_write,int,(const char *name)); 5P(conf_write,int,(const char *name));
6 6
7/* menu.c */ 7/* menu.c */
8P(rootmenu,struct menu,); 8extern struct menu rootmenu;
9 9
10P(menu_is_visible,bool,(struct menu *menu)); 10P(menu_is_visible,bool,(struct menu *menu));
11P(menu_get_prompt,const char *,(struct menu *menu)); 11P(menu_get_prompt,const char *,(struct menu *menu));
12P(menu_get_root_menu,struct menu *,(struct menu *menu)); 12P(menu_get_root_menu,struct menu *,(struct menu *menu));
13P(menu_get_parent_menu,struct menu *,(struct menu *menu)); 13P(menu_get_parent_menu,struct menu *,(struct menu *menu));
14 14
15/* symbol.c */ 15/* symbol.c */
16P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]); 16P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
17P(sym_change_count,int,); 17extern int sym_change_count;
18 18
19P(sym_lookup,struct symbol *,(const char *name, int isconst)); 19P(sym_lookup,struct symbol *,(const char *name, int isconst));
20P(sym_find,struct symbol *,(const char *name)); 20P(sym_find,struct symbol *,(const char *name));
21P(sym_type_name,const char *,(enum symbol_type type)); 21P(sym_type_name,const char *,(enum symbol_type type));
22P(sym_calc_value,void,(struct symbol *sym)); 22P(sym_calc_value,void,(struct symbol *sym));
23P(sym_get_type,enum symbol_type,(struct symbol *sym)); 23P(sym_get_type,enum symbol_type,(struct symbol *sym));
24P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri)); 24P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri));
25P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri)); 25P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri));
26P(sym_toggle_tristate_value,tristate,(struct symbol *sym)); 26P(sym_toggle_tristate_value,tristate,(struct symbol *sym));
27P(sym_string_valid,bool,(struct symbol *sym, const char *newval)); 27P(sym_string_valid,bool,(struct symbol *sym, const char *newval));
28P(sym_string_within_range,bool,(struct symbol *sym, const char *str)); 28P(sym_string_within_range,bool,(struct symbol *sym, const char *str));
29P(sym_set_string_value,bool,(struct symbol *sym, const char *newval)); 29P(sym_set_string_value,bool,(struct symbol *sym, const char *newval));
30P(sym_is_changable,bool,(struct symbol *sym)); 30P(sym_is_changable,bool,(struct symbol *sym));
31P(sym_get_choice_prop,struct property *,(struct symbol *sym)); 31P(sym_get_choice_prop,struct property *,(struct symbol *sym));
32P(sym_get_default_prop,struct property *,(struct symbol *sym)); 32P(sym_get_default_prop,struct property *,(struct symbol *sym));
33P(sym_get_string_value,const char *,(struct symbol *sym)); 33P(sym_get_string_value,const char *,(struct symbol *sym));
34 34
35P(prop_get_type_name,const char *,(enum prop_type type)); 35P(prop_get_type_name,const char *,(enum prop_type type));
36 36
37/* expr.c */ 37/* expr.c */
38P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2)); 38P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2));
39P(expr_print,void,(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken)); 39P(expr_print,void,(struct expr *e, void (*fn)(void *, const char *), void *data, int prevtoken));