summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--Rules.make3
-rw-r--r--config.in5
-rw-r--r--core/launcher/launcher.cpp20
-rw-r--r--core/launcher/launcher.h3
-rw-r--r--core/launcher/taskbar.cpp2
5 files changed, 9 insertions, 24 deletions
diff --git a/Rules.make b/Rules.make
index 8511422..e08e5c1 100644
--- a/Rules.make
+++ b/Rules.make
@@ -1,273 +1,276 @@
1.phony: force 1.phony: force
2force: 2force:
3 3
4$(configs) : 4$(configs) :
5 $(call makecfg,$@) 5 $(call makecfg,$@)
6 6
7$(TOPDIR)/gen.pro : $(TOPDIR)/.config 7$(TOPDIR)/gen.pro : $(TOPDIR)/.config
8 echo > $@ 8 echo > $@
9# added for threaded version 9# added for threaded version
10ifneq ($(CONFIG_THREADED),) 10ifneq ($(CONFIG_THREADED),)
11 echo CONFIG += thread >> $@ 11 echo CONFIG += thread >> $@
12else 12else
13 echo CONFIG -= thread >> $@ 13 echo CONFIG -= thread >> $@
14endif 14endif
15ifneq ($(CONFIG_DEBUG),) 15ifneq ($(CONFIG_DEBUG),)
16 echo CONFIG += debug >> $@ 16 echo CONFIG += debug >> $@
17 echo CONFIG -= release >> $@ 17 echo CONFIG -= release >> $@
18 echo DEFINES += "QT_COMPONENT_DEBUG=2" >> $@ 18 echo DEFINES += "QT_COMPONENT_DEBUG=2" >> $@
19 echo DEFINES += QT_DEBUG >> $@ 19 echo DEFINES += QT_DEBUG >> $@
20else 20else
21 echo CONFIG -= debug >> $@ 21 echo CONFIG -= debug >> $@
22 echo CONFIG += release >> $@ 22 echo CONFIG += release >> $@
23 echo DEFINES += "OPIE_NO_DEBUG" >> $@ 23 echo DEFINES += "OPIE_NO_DEBUG" >> $@
24endif 24endif
25ifeq ($(CONFIG_STATIC),y) 25ifeq ($(CONFIG_STATIC),y)
26 echo CONFIG += staticlib >> $@ 26 echo CONFIG += staticlib >> $@
27endif 27endif
28ifeq ($(filter 3.%,$(QTE_VERSION)),) # not qt3 28ifeq ($(filter 3.%,$(QTE_VERSION)),) # not qt3
29 echo CONFIG -= qt3 >> $@ 29 echo CONFIG -= qt3 >> $@
30else 30else
31 echo CONFIG += qt3 >> $@ 31 echo CONFIG += qt3 >> $@
32endif 32endif
33ifneq ($(CONFIG_QUICK_LAUNCH),) 33ifneq ($(CONFIG_QUICK_LAUNCH),)
34 echo contains\( CONFIG, quick-app \) \{ >> $@ 34 echo contains\( CONFIG, quick-app \) \{ >> $@
35 echo CONFIG -= staticlib >> $@ 35 echo CONFIG -= staticlib >> $@
36 echo CONFIG -= quick-app >> $@ 36 echo CONFIG -= quick-app >> $@
37 echo CONFIG += quick-app-lib >> $@ 37 echo CONFIG += quick-app-lib >> $@
38 echo QUICKLAUNCH_PATH = $(CONFIG_QUICKLAUNCH_PATH) >> $@ 38 echo QUICKLAUNCH_PATH = $(CONFIG_QUICKLAUNCH_PATH) >> $@
39 echo \} >> $@ 39 echo \} >> $@
40else 40else
41 echo contains\( CONFIG, quick-app \) \{ >> $@ 41 echo contains\( CONFIG, quick-app \) \{ >> $@
42 echo CONFIG -= quick-app >> $@ 42 echo CONFIG -= quick-app >> $@
43 echo CONFIG += quick-app-bin >> $@ 43 echo CONFIG += quick-app-bin >> $@
44 echo \} >> $@ 44 echo \} >> $@
45endif 45endif
46ifeq ($(CONFIG_SQL_PIM_BACKEND),y) 46ifeq ($(CONFIG_SQL_PIM_BACKEND),y)
47 echo ENABLE_SQL_PIM_BACKEND=$(CONFIG_SQL_PIM_BACKEND) >> $@ 47 echo ENABLE_SQL_PIM_BACKEND=$(CONFIG_SQL_PIM_BACKEND) >> $@
48else 48else
49 echo ENABLE_SQL_PIM_BACKEND=n >> $@ 49 echo ENABLE_SQL_PIM_BACKEND=n >> $@
50endif 50endif
51ifeq ($(CONFIG_OPIE_NO_OVERRIDE_QT),y) 51ifeq ($(CONFIG_OPIE_NO_OVERRIDE_QT),y)
52 echo CONFIG += no-override >> $@ 52 echo CONFIG += no-override >> $@
53endif 53endif
54ifeq ($(CONFIG_OPIE_NO_ERASERECT_FIX),y) 54ifeq ($(CONFIG_OPIE_NO_ERASERECT_FIX),y)
55 echo DEFINES += OPIE_NO_ERASE_RECT_HACKFIX >> $@ 55 echo DEFINES += OPIE_NO_ERASE_RECT_HACKFIX >> $@
56endif 56endif
57ifeq ($(CONFIG_OPIE_NO_BUILTIN_SHUTDOWN),y) 57ifeq ($(CONFIG_OPIE_NO_BUILTIN_SHUTDOWN),y)
58 echo DEFINES += OPIE_NO_BUILTIN_SHUTDOWN >> $@ 58 echo DEFINES += OPIE_NO_BUILTIN_SHUTDOWN >> $@
59endif 59endif
60ifeq ($(CONFIG_OPIE_NO_BUILTIN_CALIBRATE),y) 60ifeq ($(CONFIG_OPIE_NO_BUILTIN_CALIBRATE),y)
61 echo DEFINES += OPIE_NO_BUILTIN_CALIBRATE >> $@ 61 echo DEFINES += OPIE_NO_BUILTIN_CALIBRATE >> $@
62endif 62endif
63ifeq ($(CONFIG_USE_REALTIME_AUDIO_THREAD),y) 63ifeq ($(CONFIG_USE_REALTIME_AUDIO_THREAD),y)
64 echo DEFINES += USE_REALTIME_AUDIO_THREAD >> $@ 64 echo DEFINES += USE_REALTIME_AUDIO_THREAD >> $@
65endif 65endif
66ifeq ($(CONFIG_USE_FILE_NOTIFICATION),y) 66ifeq ($(CONFIG_USE_FILE_NOTIFICATION),y)
67 echo DEFINES += USE_FILE_NOTIFICATION >> $@ 67 echo DEFINES += USE_FILE_NOTIFICATION >> $@
68endif 68endif
69ifeq ($(CONFIG_QT_QWS_ALLOW_CLOCK),y) 69ifeq ($(CONFIG_QT_QWS_ALLOW_CLOCK),y)
70 echo DEFINES += QT_QWS_ALLOW_OVERCLOCK >> $@ 70 echo DEFINES += QT_QWS_ALLOW_OVERCLOCK >> $@
71endif 71endif
72ifeq ($(CONFIG_OPIE_NEW_ALLOC),y) 72ifeq ($(CONFIG_OPIE_NEW_ALLOC),y)
73 echo DEFINES += OPIE_NEW_MALLOC >> $@ 73 echo DEFINES += OPIE_NEW_MALLOC >> $@
74endif 74endif
75ifeq ($(CONFIG_OPIE_NO_SOUND_PCM_READ_BITS),y) 75ifeq ($(CONFIG_OPIE_NO_SOUND_PCM_READ_BITS),y)
76 echo DEFINES += OPIE_NO_SOUND_PCM_READ_BITS >> $@ 76 echo DEFINES += OPIE_NO_SOUND_PCM_READ_BITS >> $@
77endif 77endif
78 echo DEFINES += OPIE_SOUND_FRAGMENT_SHIFT=$(CONFIG_OPIE_SOUND_FRAGMENT_SHIFT) >> $@ 78 echo DEFINES += OPIE_SOUND_FRAGMENT_SHIFT=$(CONFIG_OPIE_SOUND_FRAGMENT_SHIFT) >> $@
79ifeq ($(CONFIG_OPIE_WE_VERSION_OVERRIDE),y) 79ifeq ($(CONFIG_OPIE_WE_VERSION_OVERRIDE),y)
80 echo DEFINES += OPIE_WE_VERSION=$(CONFIG_OPIE_WE_VERSION) >> $@ 80 echo DEFINES += OPIE_WE_VERSION=$(CONFIG_OPIE_WE_VERSION) >> $@
81endif 81endif
82ifeq ($(CONFIG_OPIE_TASKBAR_LOCK_KEY_STATE),y)
83 echo DEFINES += OPIE_TASKBAR_LOCK_KEY_STATE >> $@
84 endif
82# Write LIB dirs and INC dirs... 85# Write LIB dirs and INC dirs...
83ifeq ($(CONFIG_LIBETPAN_DEP),y) 86ifeq ($(CONFIG_LIBETPAN_DEP),y)
84 echo LIBETPAN_LIB_DIR = $(CONFIG_LIBETPAN_LIB_DIR) >> $@ 87 echo LIBETPAN_LIB_DIR = $(CONFIG_LIBETPAN_LIB_DIR) >> $@
85 echo LIBETPAN_INC_DIR = $(CONFIG_LIBETPAN_INC_DIR) >> $@ 88 echo LIBETPAN_INC_DIR = $(CONFIG_LIBETPAN_INC_DIR) >> $@
86endif 89endif
87ifeq ($(CONFIG_LIBPCAP_DEP),y) 90ifeq ($(CONFIG_LIBPCAP_DEP),y)
88 echo LIBPCAP_LIB_DIR = $(CONFIG_LIBPCAP_LIB_DIR) >> $@ 91 echo LIBPCAP_LIB_DIR = $(CONFIG_LIBPCAP_LIB_DIR) >> $@
89 echo LIBPCAP_INC_DIR = $(CONFIG_LIBPCAP_INC_DIR) >> $@ 92 echo LIBPCAP_INC_DIR = $(CONFIG_LIBPCAP_INC_DIR) >> $@
90endif 93endif
91ifeq ($(CONFIG_LIBSQLITE_DEP),y) 94ifeq ($(CONFIG_LIBSQLITE_DEP),y)
92 echo LIBSQLITE_LIB_DIR = $(CONFIG_LIBSQLITE_LIB_DIR) >> $@ 95 echo LIBSQLITE_LIB_DIR = $(CONFIG_LIBSQLITE_LIB_DIR) >> $@
93 echo LIBSQLITE_INC_DIR = $(CONFIG_LIBSQLITE_INC_DIR) >> $@ 96 echo LIBSQLITE_INC_DIR = $(CONFIG_LIBSQLITE_INC_DIR) >> $@
94endif 97endif
95ifeq ($(CONFIG_LIBXINE_DEP),y) 98ifeq ($(CONFIG_LIBXINE_DEP),y)
96 echo LIBXINE_LIB_DIR = $(CONFIG_LIBXINE_LIB_DIR) >> $@ 99 echo LIBXINE_LIB_DIR = $(CONFIG_LIBXINE_LIB_DIR) >> $@
97 echo LIBXINE_INC_DIR = $(CONFIG_LIBXINE_INC_DIR) >> $@ 100 echo LIBXINE_INC_DIR = $(CONFIG_LIBXINE_INC_DIR) >> $@
98endif 101endif
99ifeq ($(CONFIG_LIBIPK_DEP),y) 102ifeq ($(CONFIG_LIBIPK_DEP),y)
100 echo LIBIPK_LIB_DIR = $(CONFIG_LIBIPK_LIB_DIR) >> $@ 103 echo LIBIPK_LIB_DIR = $(CONFIG_LIBIPK_LIB_DIR) >> $@
101 echo LIBIPK_INC_DIR = $(CONFIG_LIBIPK_INC_DIR) >> $@ 104 echo LIBIPK_INC_DIR = $(CONFIG_LIBIPK_INC_DIR) >> $@
102endif 105endif
103ifeq ($(CONFIG_LIBSDK_DEP),y) 106ifeq ($(CONFIG_LIBSDK_DEP),y)
104 echo LIBSDL_LIB_DIR = $(CONFIG_LIBSDL_LIB_DIR) >> $@ 107 echo LIBSDL_LIB_DIR = $(CONFIG_LIBSDL_LIB_DIR) >> $@
105 echo LIBSDL_INC_DIR = $(CONFIG_LIBSDL_INC_DIR) >> $@ 108 echo LIBSDL_INC_DIR = $(CONFIG_LIBSDL_INC_DIR) >> $@
106endif 109endif
107ifeq ($(CONFIG_LIBSWORD_DEP),y) 110ifeq ($(CONFIG_LIBSWORD_DEP),y)
108 echo LIBSWORD_LIB_DIR = $(CONFIG_LIBSWORD_LIB_DIR) >> $@ 111 echo LIBSWORD_LIB_DIR = $(CONFIG_LIBSWORD_LIB_DIR) >> $@
109 echo LIBSWORD_INC_DIR = $(CONFIG_LIBSWORD_INC_DIR) >> $@ 112 echo LIBSWORD_INC_DIR = $(CONFIG_LIBSWORD_INC_DIR) >> $@
110endif 113endif
111$(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) $(TOPDIR)/.config $(TOPDIR)/packages 114$(TOPDIR)/.depends : $(shell if [ -e $(TOPDIR)/config.in ]\; then echo $(TOPDIR)/config.in\; fi\;) $(TOPDIR)/.config $(TOPDIR)/packages
112 @echo Generating dependency information... 115 @echo Generating dependency information...
113# add to subdir-y, and add descend rules 116# add to subdir-y, and add descend rules
114 @cat $(TOPDIR)/packages | grep -v '^#' | \ 117 @cat $(TOPDIR)/packages | grep -v '^#' | \
115 awk '{print \ 118 awk '{print \
116 ".PHONY : " $$2 "\n" \ 119 ".PHONY : " $$2 "\n" \
117 "subdir-$$(" $$1 ") += " $$2 "\n\n"; \ 120 "subdir-$$(" $$1 ") += " $$2 "\n\n"; \
118 print $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@,$(filter-out $$@,$$(filter-out $$@,$$(MAKECMDGOALS))))\n"; }' > $(TOPDIR)/.depends 121 print $$2 " : " $$2 "/Makefile\n\t$$(call descend,$$@,$(filter-out $$@,$$(filter-out $$@,$$(MAKECMDGOALS))))\n"; }' > $(TOPDIR)/.depends
119 cat $(TOPDIR)/packages | grep -v '^#' | \ 122 cat $(TOPDIR)/packages | grep -v '^#' | \
120 perl -ne '($$cfg, $$dir, $$pro) = $$_ =~ /^(\S+)\s+(\S+)\s+(\S+)/; if ( -e "$$dir/$$pro" ) { print "$$dir/Makefile : $$dir/$$pro \$$(QMAKE) \$$(OPIEDIR)/gen.pro \$$(OPIEDIR)/.config\n\t\$$(call makefilegen,\$$@)\n\n"; }' \ 123 perl -ne '($$cfg, $$dir, $$pro) = $$_ =~ /^(\S+)\s+(\S+)\s+(\S+)/; if ( -e "$$dir/$$pro" ) { print "$$dir/Makefile : $$dir/$$pro \$$(QMAKE) \$$(OPIEDIR)/gen.pro \$$(OPIEDIR)/.config\n\t\$$(call makefilegen,\$$@)\n\n"; }' \
121 >> $(TOPDIR)/.depends 124 >> $(TOPDIR)/.depends
122# interpackage dependency generation 125# interpackage dependency generation
123 @cat $(TOPDIR)/packages | \ 126 @cat $(TOPDIR)/packages | \
124 $(TOPDIR)/scripts/deps.pl >> $(TOPDIR)/.depends 127 $(TOPDIR)/scripts/deps.pl >> $(TOPDIR)/.depends
125 128
126$(TOPDIR)/.depends.cfgs: 129$(TOPDIR)/.depends.cfgs:
127# config.in interdependencies 130# config.in interdependencies
128 @echo $(configs) | sed -e 's,/config.in,,g' | ( for i in `cat`; do echo $$i; done ) > dirs 131 @echo $(configs) | sed -e 's,/config.in,,g' | ( for i in `cat`; do echo $$i; done ) > dirs
129 @cat dirs | ( for i in `cat`; do if [ "`cat dirs|grep $$i 2>/dev/null|wc -l`" -ne "1" ]; then deps=`cat dirs|grep $$i| grep -v "^$$i$$"|for i in \`cat|sed -e's,^$(TOPDIR)/,$$(TOPDIR)/,g'\`; do echo $$i/config.in; done`; echo `echo $$i/config.in|sed -e 's,^$(TOPDIR)/,$$(TOPDIR)/,'` : $$deps; fi; done ) >> $@ 132 @cat dirs | ( for i in `cat`; do if [ "`cat dirs|grep $$i 2>/dev/null|wc -l`" -ne "1" ]; then deps=`cat dirs|grep $$i| grep -v "^$$i$$"|for i in \`cat|sed -e's,^$(TOPDIR)/,$$(TOPDIR)/,g'\`; do echo $$i/config.in; done`; echo `echo $$i/config.in|sed -e 's,^$(TOPDIR)/,$$(TOPDIR)/,'` : $$deps; fi; done ) >> $@
130 @-rm -f dirs 133 @-rm -f dirs
131 134
132$(QTDIR)/stamp-headers : 135$(QTDIR)/stamp-headers :
133 @-rm -f $(QTDIR)/stamp-headers* 136 @-rm -f $(QTDIR)/stamp-headers*
134 ( cd $(QTDIR)/include; \ 137 ( cd $(QTDIR)/include; \
135 $(patsubst %,ln -sf ../src/kernel/%;,qgfx_qws.h qwsmouse_qws.h \ 138 $(patsubst %,ln -sf ../src/kernel/%;,qgfx_qws.h qwsmouse_qws.h \
136 qcopchannel_qws.h qwindowsystem_qws.h \ 139 qcopchannel_qws.h qwindowsystem_qws.h \
137 qfontmanager_qws.h qwsdefaultdecoration_qws.h)) 140 qfontmanager_qws.h qwsdefaultdecoration_qws.h))
138 touch $@ 141 touch $@
139 142
140$(QTDIR)/stamp-headers-x11 : 143$(QTDIR)/stamp-headers-x11 :
141 @-rm -f $(QTDIR)/stamp-headers* 144 @-rm -f $(QTDIR)/stamp-headers*
142 cd $(QTDIR)/include; $(patsubst %,ln -sf $(OPIEDIR)/x11/libqpe-x11/qt/%;,qgfx_qws.h qwsmouse_qws.h qcopchannel_qws.h qwindowsystem_qws.h qfontmanager_qws.h qwsdefaultdecoration_qws.h) 145 cd $(QTDIR)/include; $(patsubst %,ln -sf $(OPIEDIR)/x11/libqpe-x11/qt/%;,qgfx_qws.h qwsmouse_qws.h qcopchannel_qws.h qwindowsystem_qws.h qfontmanager_qws.h qwsdefaultdecoration_qws.h)
143 touch $@ 146 touch $@
144 147
145$(OPIEDIR)/stamp-headers : 148$(OPIEDIR)/stamp-headers :
146 @-rm -f $(OPIEDIR)/stamp-headers* 149 @-rm -f $(OPIEDIR)/stamp-headers*
147 mkdir -p $(TOPDIR)/include/qpe \ 150 mkdir -p $(TOPDIR)/include/qpe \
148 $(TOPDIR)/include/qtopia \ 151 $(TOPDIR)/include/qtopia \
149 $(TOPDIR)/include/opie \ 152 $(TOPDIR)/include/opie \
150 $(TOPDIR)/include/opie2 \ 153 $(TOPDIR)/include/opie2 \
151 $(TOPDIR)/include/qtopia/private \ 154 $(TOPDIR)/include/qtopia/private \
152 $(TOPDIR)/include/sl 155 $(TOPDIR)/include/sl
153 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; ) 156 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; )
154 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; ) 157 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; )
155 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; ) 158 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; )
156ifeq ($(CONFIG_LIBOPIE),y) 159ifeq ($(CONFIG_LIBOPIE),y)
157 # libopie1 160 # libopie1
158 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; ) 161 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; )
159 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; ) 162 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; )
160 ( cd include/opie && ln -sf ../../libopie/big-screen/*.h .; ) 163 ( cd include/opie && ln -sf ../../libopie/big-screen/*.h .; )
161endif 164endif
162 # libopie2 165 # libopie2
163 ( cd include/opie2 && ln -sf ../../libopie2/opiecore/*.h .; ) 166 ( cd include/opie2 && ln -sf ../../libopie2/opiecore/*.h .; )
164 ( cd include/opie2 && ln -sf ../../libopie2/opiecore/device/*.h .; ) 167 ( cd include/opie2 && ln -sf ../../libopie2/opiecore/device/*.h .; )
165 ( cd include/opie2 && ln -sf ../../libopie2/opiemm/*.h .; ) 168 ( cd include/opie2 && ln -sf ../../libopie2/opiemm/*.h .; )
166 ( cd include/opie2 && ln -sf ../../libopie2/opiedb/*.h .; ) 169 ( cd include/opie2 && ln -sf ../../libopie2/opiedb/*.h .; )
167 ( cd include/opie2 && ln -sf ../../libopie2/opienet/*.h .; ) 170 ( cd include/opie2 && ln -sf ../../libopie2/opienet/*.h .; )
168 ( cd include/opie2 && ln -sf ../../libopie2/opiepim/*.h .; ) 171 ( cd include/opie2 && ln -sf ../../libopie2/opiepim/*.h .; )
169 ( cd include/opie2 && ln -sf ../../libopie2/opiepim/core/*.h .; ) 172 ( cd include/opie2 && ln -sf ../../libopie2/opiepim/core/*.h .; )
170 ( cd include/opie2 && ln -sf ../../libopie2/opiepim/core/backends/*.h .; ) 173 ( cd include/opie2 && ln -sf ../../libopie2/opiepim/core/backends/*.h .; )
171 ( cd include/opie2 && ln -sf ../../libopie2/opiepim/ui/*.h .; ) 174 ( cd include/opie2 && ln -sf ../../libopie2/opiepim/ui/*.h .; )
172 ( cd include/opie2 && ln -sf ../../libopie2/opieui/*.h .; ) 175 ( cd include/opie2 && ln -sf ../../libopie2/opieui/*.h .; )
173 ( cd include/opie2 && ln -sf ../../libopie2/opieui/fileselector/*.h .; ) 176 ( cd include/opie2 && ln -sf ../../libopie2/opieui/fileselector/*.h .; )
174 ( cd include/opie2 && ln -sf ../../libopie2/opieui/big-screen/*.h .; ) 177 ( cd include/opie2 && ln -sf ../../libopie2/opieui/big-screen/*.h .; )
175 ( cd include/opie2 && ln -sf ../../libopie2/opiesecurity/*.h .; ) 178 ( cd include/opie2 && ln -sf ../../libopie2/opiesecurity/*.h .; )
176 # auxilliary libraries 179 # auxilliary libraries
177 ( cd include/opie2 && ln -sf ../../libqtaux/*.h .; ) 180 ( cd include/opie2 && ln -sf ../../libqtaux/*.h .; )
178 ( cd include/sl && ln -sf ../../libslcompat/*.h .; ) 181 ( cd include/sl && ln -sf ../../libslcompat/*.h .; )
179 ( cd include/ && ln -sf ../noncore/net/ftplib/*.h .; ) 182 ( cd include/ && ln -sf ../noncore/net/ftplib/*.h .; )
180 ( cd include/ && ln -sf ../inputmethods/pickboard/pickboardcfg.h .; ) 183 ( cd include/ && ln -sf ../inputmethods/pickboard/pickboardcfg.h .; )
181 ( cd include/ && ln -sf ../inputmethods/pickboard/pickboardpicks.h .; ) 184 ( cd include/ && ln -sf ../inputmethods/pickboard/pickboardpicks.h .; )
182 # all 185 # all
183ifeq ($(CONFIG_LIBOPIE),y) 186ifeq ($(CONFIG_LIBOPIE),y)
184 ( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \ 187 ( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
185 ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done ) 188 ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done )
186endif 189endif
187 ( cd include/opie2; for generatedHeader in `cd ../../libopie2/opieui; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \ 190 ( cd include/opie2; for generatedHeader in `cd ../../libopie2/opieui; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
188 ln -sf ../../libopie2/opieui/$$generatedHeader $$generatedHeader; done ) 191 ln -sf ../../libopie2/opieui/$$generatedHeader $$generatedHeader; done )
189 ( cd include/opie2; for generatedHeader in `cd ../../libopie2/opiepim/ui; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \ 192 ( cd include/opie2; for generatedHeader in `cd ../../libopie2/opiepim/ui; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
190 ln -sf ../../libopie2/opiepim/ui/$$generatedHeader $$generatedHeader; done ) 193 ln -sf ../../libopie2/opiepim/ui/$$generatedHeader $$generatedHeader; done )
191 ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h 194 ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h
192 touch $@ 195 touch $@
193 196
194$(OPIEDIR)/stamp-headers-x11 : 197$(OPIEDIR)/stamp-headers-x11 :
195 @-rm -f $(OPIEDIR)/stamp-headers* 198 @-rm -f $(OPIEDIR)/stamp-headers*
196 mkdir -p $(TOPDIR)/include/qpe $(TOPDIR)/include/qtopia \ 199 mkdir -p $(TOPDIR)/include/qpe $(TOPDIR)/include/qtopia \
197 $(TOPDIR)/include/opie $(TOPDIR)/include/qtopia/private 200 $(TOPDIR)/include/opie $(TOPDIR)/include/qtopia/private
198 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; ) 201 ( cd include/qpe && rm -f *.h; ln -sf ../../library/*.h .; ln -sf ../../library/backend/*.h .; rm -f *_p.h; )
199 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; ) 202 ( cd include/qtopia && rm -f *.h; ln -sf ../../library/*.h .; )
200 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; ) 203 ( cd include/qtopia/private && rm -f *.h; ln -sf ../../../library/backend/*.h .; )
201 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; ) 204 ( cd include/opie && rm -f *.h; ln -sf ../../libopie/*.h .; rm -f *_p.h; )
202 ( cd include/opie && ln -sf ../../libsql/*.h .; ) 205 ( cd include/opie && ln -sf ../../libsql/*.h .; )
203 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; ) 206 ( cd include/opie && ln -sf ../../libopie/pim/*.h .; )
204 ( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \ 207 ( cd include/opie; for generatedHeader in `cd ../../libopie; ls *.ui | sed -e "s,\.ui,\.h,g"`; do \
205 ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done ) 208 ln -sf ../../libopie/$$generatedHeader $$generatedHeader; done )
206 ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h 209 ln -sf ../../library/custom.h $(TOPDIR)/include/qpe/custom.h
207 ( cd include/qpe; ln -sf ../../x11/libqpe-x11/qpe/*.h .; ) 210 ( cd include/qpe; ln -sf ../../x11/libqpe-x11/qpe/*.h .; )
208 touch $@ 211 touch $@
209 212
210$(TOPDIR)/library/custom.h : $(TOPDIR)/.config 213$(TOPDIR)/library/custom.h : $(TOPDIR)/.config
211 @-rm -f $@ 214 @-rm -f $@
212 @$(if $(patsubst "%",%,$(CONFIG_CUSTOMFILE)),\ 215 @$(if $(patsubst "%",%,$(CONFIG_CUSTOMFILE)),\
213 ln -sf $(patsubst "%",%,$(CONFIG_CUSTOMFILE)) $@) 216 ln -sf $(patsubst "%",%,$(CONFIG_CUSTOMFILE)) $@)
214 @touch $@ 217 @touch $@
215 218
216$(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/mconf $(TOPDIR)/scripts/kconfig/conf $(TOPDIR)/scripts/kconfig/qconf $(TOPDIR)/scripts/kconfig/libkconfig.so $(TOPDIR)/scripts/kconfig/gconf $(TOPDIR)/qmake/qmake: 219$(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/mconf $(TOPDIR)/scripts/kconfig/conf $(TOPDIR)/scripts/kconfig/qconf $(TOPDIR)/scripts/kconfig/libkconfig.so $(TOPDIR)/scripts/kconfig/gconf $(TOPDIR)/qmake/qmake:
217 @$(call descend,$(shell dirname $@),$(shell basename $@)) 220 @$(call descend,$(shell dirname $@),$(shell basename $@))
218 221
219menuconfig: $(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/mconf ./config.in 222menuconfig: $(TOPDIR)/scripts/lxdialog/lxdialog $(TOPDIR)/scripts/kconfig/mconf ./config.in
220 $(TOPDIR)/scripts/kconfig/mconf ./config.in 223 $(TOPDIR)/scripts/kconfig/mconf ./config.in
221 @touch ./.config.stamp 224 @touch ./.config.stamp
222 225
223xconfig: $(TOPDIR)/scripts/kconfig/qconf $(TOPDIR)/scripts/kconfig/libkconfig.so ./config.in 226xconfig: $(TOPDIR)/scripts/kconfig/qconf $(TOPDIR)/scripts/kconfig/libkconfig.so ./config.in
224 $(TOPDIR)/scripts/kconfig/qconf ./config.in 227 $(TOPDIR)/scripts/kconfig/qconf ./config.in
225 @touch .config.stamp 228 @touch .config.stamp
226 229
227gconfig: $(TOPDIR)/scripts/kconfig/gconf $(TOPDIR)/scripts/kconfig/libkconfig.so ./config.in 230gconfig: $(TOPDIR)/scripts/kconfig/gconf $(TOPDIR)/scripts/kconfig/libkconfig.so ./config.in
228 $(TOPDIR)/scripts/kconfig/gconf ./config.in 231 $(TOPDIR)/scripts/kconfig/gconf ./config.in
229 @touch .config.stamp 232 @touch .config.stamp
230 233
231config: $(TOPDIR)/scripts/kconfig/conf ./config.in 234config: $(TOPDIR)/scripts/kconfig/conf ./config.in
232 $(TOPDIR)/scripts/kconfig/conf ./config.in 235 $(TOPDIR)/scripts/kconfig/conf ./config.in
233 @touch .config.stamp 236 @touch .config.stamp
234 237
235oldconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in 238oldconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
236 $(TOPDIR)/scripts/kconfig/conf -o ./config.in 239 $(TOPDIR)/scripts/kconfig/conf -o ./config.in
237 @touch .config.stamp 240 @touch .config.stamp
238 241
239randconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in 242randconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
240 $(TOPDIR)/scripts/kconfig/conf -r ./config.in 243 $(TOPDIR)/scripts/kconfig/conf -r ./config.in
241 @touch .config.stamp 244 @touch .config.stamp
242 245
243allyesconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in 246allyesconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
244 $(TOPDIR)/scripts/kconfig/conf -y ./config.in 247 $(TOPDIR)/scripts/kconfig/conf -y ./config.in
245 @touch .config.stamp 248 @touch .config.stamp
246 249
247allnoconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in 250allnoconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
248 $(TOPDIR)/scripts/kconfig/conf -n ./config.in 251 $(TOPDIR)/scripts/kconfig/conf -n ./config.in
249 @touch .config.stamp 252 @touch .config.stamp
250 253
251defconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in 254defconfig: $(TOPDIR)/scripts/kconfig/conf ./config.in
252 $(TOPDIR)/scripts/kconfig/conf -d ./config.in 255 $(TOPDIR)/scripts/kconfig/conf -d ./config.in
253 @touch .config.stamp 256 @touch .config.stamp
254 257
255$(TOPDIR)/qmake/qmake : $(TOPDIR)/mkspecs/default 258$(TOPDIR)/qmake/qmake : $(TOPDIR)/mkspecs/default
256 259
257$(TOPDIR)/mkspecs/default : 260$(TOPDIR)/mkspecs/default :
258 ln -sf linux-g++ $@ 261 ln -sf linux-g++ $@
259 262
260$(TOPDIR)/scripts/subst : force 263$(TOPDIR)/scripts/subst : force
261 @( \ 264 @( \
262 echo 's,\$$QPE_VERSION,$(QPE_VERSION),g'; \ 265 echo 's,\$$QPE_VERSION,$(QPE_VERSION),g'; \
263 echo 's,\$$OPIE_VERSION,$(OPIE_VERSION),g'; \ 266 echo 's,\$$OPIE_VERSION,$(OPIE_VERSION),g'; \
264 echo 's,\$$QTE_VERSION,$(QTE_VERSION),g'; \ 267 echo 's,\$$QTE_VERSION,$(QTE_VERSION),g'; \
265 echo 's,\$$QTE_REVISION,$(QTE_REVISION),g'; \ 268 echo 's,\$$QTE_REVISION,$(QTE_REVISION),g'; \
266 echo 's,\$$SUB_VERSION,$(SUB_VERSION),g'; \ 269 echo 's,\$$SUB_VERSION,$(SUB_VERSION),g'; \
267 echo 's,\$$EXTRAVERSION,$(EXTRAVERSION),g'; \ 270 echo 's,\$$EXTRAVERSION,$(EXTRAVERSION),g'; \
268 echo 's,\$$QTE_BASEVERSION,$(QTE_BASEVERSION),g'; \ 271 echo 's,\$$QTE_BASEVERSION,$(QTE_BASEVERSION),g'; \
269 ) > $@ || ( rm -f $@; exit 1 ) 272 ) > $@ || ( rm -f $@; exit 1 )
270 273
271$(TOPDIR)/scripts/filesubst : force 274$(TOPDIR)/scripts/filesubst : force
272 @( \ 275 @( \
273 echo 's,\$$OPIEDIR/root/,/,g'; \ 276 echo 's,\$$OPIEDIR/root/,/,g'; \
diff --git a/config.in b/config.in
index 9586a33..c981fd1 100644
--- a/config.in
+++ b/config.in
@@ -1,259 +1,264 @@
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 15 config TARGET_MACOSX
16 boolean "Mac OS X (DARWIN)" 16 boolean "Mac OS X (DARWIN)"
17 17
18 config TARGET_SHARP 18 config TARGET_SHARP
19 boolean "Sharp Zaurus w/ SA1100 (5000 and 5500)" 19 boolean "Sharp Zaurus w/ SA1100 (5000 and 5500)"
20 20
21 config TARGET_C700 21 config TARGET_C700
22 boolean "Sharp Zaurus w/ PXA25x (5600, C7x0, C8x0)" 22 boolean "Sharp Zaurus w/ PXA25x (5600, C7x0, C8x0)"
23 23
24 config TARGET_IPAQ 24 config TARGET_IPAQ
25 boolean "iPAQ" 25 boolean "iPAQ"
26 26
27 config TARGET_RAMSES 27 config TARGET_RAMSES
28 boolean "Ramses" 28 boolean "Ramses"
29 29
30 config TARGET_SIMPAD 30 config TARGET_SIMPAD
31 boolean "SIMpad" 31 boolean "SIMpad"
32 32
33 config TARGET_YOPY 33 config TARGET_YOPY
34 boolean "Yopy 3500/3700" 34 boolean "Yopy 3500/3700"
35 35
36endchoice 36endchoice
37 37
38config OPTIMIZE 38config OPTIMIZE
39 boolean "Use optimizations" 39 boolean "Use optimizations"
40 default "y" if ! TARGET_X86 40 default "y" if ! TARGET_X86
41 41
42config THREADED 42config THREADED
43 boolean "Enable threaded build" 43 boolean "Enable threaded build"
44 default "n" 44 default "n"
45 45
46config STATIC 46config STATIC
47 boolean "Build static libraries" 47 boolean "Build static libraries"
48 default "n" 48 default "n"
49 49
50config DEBUG 50config DEBUG
51 boolean "Enable debug builds" 51 boolean "Enable debug builds"
52 default n 52 default n
53 53
54config RELEASE 54config RELEASE
55 bool 55 bool
56 default y 56 default y
57 depends !DEBUG 57 depends !DEBUG
58 58
59config QUICK_LAUNCH 59config QUICK_LAUNCH
60 boolean "Enable Quick Launch" 60 boolean "Enable Quick Launch"
61 default n if TARGET_X86 61 default n if TARGET_X86
62 default y if ! TARGET_X86 62 default y if ! TARGET_X86
63 63
64config QUICKLAUNCH_PATH 64config QUICKLAUNCH_PATH
65 string "Path to quicklauncher" 65 string "Path to quicklauncher"
66 default "./quicklauncher" if TARGET_X86 66 default "./quicklauncher" if TARGET_X86
67 default "/opt/QtPalmtop/bin/quicklauncher" if ! TARGET_X86 67 default "/opt/QtPalmtop/bin/quicklauncher" if ! TARGET_X86
68 68
69config SPECFILE 69config SPECFILE
70 string 70 string
71 default "qws/linux-generic-g++" if TARGET_X86 && (! X11) 71 default "qws/linux-generic-g++" if TARGET_X86 && (! X11)
72 default "linux-g++" if TARGET_X86 && X11 72 default "linux-g++" if TARGET_X86 && X11
73 default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11) 73 default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11)
74 default "linux-g++" if TARGET_SHARP && X11 74 default "linux-g++" if TARGET_SHARP && X11
75 default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11) 75 default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11)
76 default "linux-g++" if TARGET_IPAQ && X11 76 default "linux-g++" if TARGET_IPAQ && X11
77 default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11) 77 default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11)
78 default "linux-g++" if TARGET_RAMSES && X11 78 default "linux-g++" if TARGET_RAMSES && X11
79 default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11) 79 default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11)
80 default "linux-g++" if TARGET_SIMPAD && X11 80 default "linux-g++" if TARGET_SIMPAD && X11
81 default "qws/linux-yopy-g++" if TARGET_YOPY && (! X11) 81 default "qws/linux-yopy-g++" if TARGET_YOPY && (! X11)
82 default "qws/macx-generic-g++" if TARGET_MACOSX && (! X11) 82 default "qws/macx-generic-g++" if TARGET_MACOSX && (! X11)
83 83
84config CUSTOMFILE 84config CUSTOMFILE
85 string 85 string
86 default "custom-ipaq.h" if TARGET_IPAQ 86 default "custom-ipaq.h" if TARGET_IPAQ
87 default "custom-sharp.h" if TARGET_SHARP 87 default "custom-sharp.h" if TARGET_SHARP
88 default "custom-ramses.h" if TARGET_RAMSES 88 default "custom-ramses.h" if TARGET_RAMSES
89 default "custom-ipaq.h" if TARGET_SIMPAD 89 default "custom-ipaq.h" if TARGET_SIMPAD
90 default "custom-yopy.h" if TARGET_YOPY 90 default "custom-yopy.h" if TARGET_YOPY
91 91
92config OPTIMIZATIONS 92config OPTIMIZATIONS
93 string "Optimization flags" 93 string "Optimization flags"
94 depends OPTIMIZE 94 depends OPTIMIZE
95 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ 95 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ
96 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_YOPY 96 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_YOPY
97 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP 97 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP
98 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES 98 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES
99 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD 99 default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD
100 default "-march=armv5te -mtune=xscale -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_C700 100 default "-march=armv5te -mtune=xscale -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_C700
101 101
102config EXPERIMENTAL 102config EXPERIMENTAL
103 bool "Prompt for development and/or incomplete items" 103 bool "Prompt for development and/or incomplete items"
104 default y 104 default y
105 105
106endmenu 106endmenu
107 107
108menu "Configuration" 108menu "Configuration"
109config OPIE_NO_OVERRIDE_QT 109config OPIE_NO_OVERRIDE_QT
110 boolean "Build Opie against an unpatched version of Qt" 110 boolean "Build Opie against an unpatched version of Qt"
111 default n 111 default n
112 112
113config OPIE_NO_ERASERECT_FIX 113config OPIE_NO_ERASERECT_FIX
114 boolean "Disable Fixup eraseRect for HancomMobileWord,neocal.. to make libopiecore work on Sharps libqpe" 114 boolean "Disable Fixup eraseRect for HancomMobileWord,neocal.. to make libopiecore work on Sharps libqpe"
115 default n 115 default n
116 116
117config OPIE_NO_BUILTIN_SHUTDOWN 117config OPIE_NO_BUILTIN_SHUTDOWN
118 boolean "Disable the built in shutdown application" 118 boolean "Disable the built in shutdown application"
119 default y 119 default y
120 120
121config OPIE_NO_BUILTIN_CALIBRATE 121config OPIE_NO_BUILTIN_CALIBRATE
122 boolean "Disable the built in calibrate application" 122 boolean "Disable the built in calibrate application"
123 default y if TARGET_YOPY 123 default y if TARGET_YOPY
124 default n if ! TARGET_YOPY 124 default n if ! TARGET_YOPY
125 125
126config OPIE_SOUND_FRAGMENT_SHIFT 126config OPIE_SOUND_FRAGMENT_SHIFT
127 string "The sound fragment used in Opie Player I" 127 string "The sound fragment used in Opie Player I"
128 default "14" if TARGET_IPAQ 128 default "14" if TARGET_IPAQ
129 default "16" if ! TARGET_IPAQ 129 default "16" if ! TARGET_IPAQ
130 130
131config USE_REALTIME_AUDIO_THREAD 131config USE_REALTIME_AUDIO_THREAD
132 boolean "Use a realtime thread in Opie Player I" 132 boolean "Use a realtime thread in Opie Player I"
133 default y if TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP 133 default y if TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP
134 default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP) 134 default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP)
135 135
136config QT_QWS_ALLOW_OVERCLOCK 136config QT_QWS_ALLOW_OVERCLOCK
137 boolean "Allow the user to overclock the device" 137 boolean "Allow the user to overclock the device"
138 depends TARGET_RAMSES 138 depends TARGET_RAMSES
139 default n 139 default n
140 140
141config USE_FILE_NOTIFICATION 141config USE_FILE_NOTIFICATION
142 boolean "Substitute (some) polling interfaces with OFileNotifier" 142 boolean "Substitute (some) polling interfaces with OFileNotifier"
143 default y 143 default y
144 144
145config OPIE_NEW_ALLOC 145config OPIE_NEW_ALLOC
146 boolean "Use malloc and free for the implementation" 146 boolean "Use malloc and free for the implementation"
147 default y if TARGET_RAMSES || TARGET_IPAQ || TARGET_SIMPAD || TARGET_SHARP 147 default y if TARGET_RAMSES || TARGET_IPAQ || TARGET_SIMPAD || TARGET_SHARP
148 default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP) 148 default n if ! (TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP)
149 149
150config OPIE_TASKBAR_LOCK_KEY_STATE
151 boolean "Have a KeyLock state indicator on the taskbar"
152 default y if TARGET_SHARP
153 default n if !TARGET_SHARP
154
150config OPIE_NO_SOUND_PCM_READ_BITS 155config OPIE_NO_SOUND_PCM_READ_BITS
151 boolean "There is not a pcm_read_bits io control" 156 boolean "There is not a pcm_read_bits io control"
152 default y if TARGET_SHARP 157 default y if TARGET_SHARP
153 default n if ! TARGET_SHARP 158 default n if ! TARGET_SHARP
154endmenu 159endmenu
155 160
156menu "Dependencies" 161menu "Dependencies"
157 source dependencies.in 162 source dependencies.in
158endmenu 163endmenu
159 164
160menu "Base" 165menu "Base"
161 choice 166 choice
162 prompt "Qpe Library Selection" 167 prompt "Qpe Library Selection"
163 default LIBQPE 168 default LIBQPE
164 source library/config.in 169 source library/config.in
165 source x11/config.in 170 source x11/config.in
166 endchoice 171 endchoice
167 source libopie/config.in 172 source libopie/config.in
168 173
169 source libopie2/config.in 174 source libopie2/config.in
170 source libqtaux/config.in 175 source libqtaux/config.in
171 source rsync/config.in 176 source rsync/config.in
172 source core/opie-login/config.in 177 source core/opie-login/config.in
173 source core/opiealarm/config.in 178 source core/opiealarm/config.in
174 source core/tools/quicklauncher/config.in 179 source core/tools/quicklauncher/config.in
175 source core/launcher/config.in 180 source core/launcher/config.in
176 source core/symlinker/config.in 181 source core/symlinker/config.in
177endmenu 182endmenu
178 183
179comment "" 184comment ""
180 185
181menu "Applets" 186menu "Applets"
182 source core/applets/config.in 187 source core/applets/config.in
183 source noncore/applets/config.in 188 source noncore/applets/config.in
184endmenu 189endmenu
185 190
186menu "Apps" 191menu "Apps"
187 source core/apps/config.in 192 source core/apps/config.in
188 source noncore/apps/config.in 193 source noncore/apps/config.in
189endmenu 194endmenu
190 195
191menu "Communications and Networking" 196menu "Communications and Networking"
192 source noncore/comm/config.in 197 source noncore/comm/config.in
193 source noncore/net/config.in 198 source noncore/net/config.in
194endmenu 199endmenu
195 200
196menu "Games" 201menu "Games"
197 source noncore/games/config.in 202 source noncore/games/config.in
198endmenu 203endmenu
199 204
200menu "Graphics and Multimedia" 205menu "Graphics and Multimedia"
201 source freetype/config.in 206 source freetype/config.in
202 source noncore/graphics/config.in 207 source noncore/graphics/config.in
203 source core/multimedia/config.in 208 source core/multimedia/config.in
204 source noncore/multimedia/config.in 209 source noncore/multimedia/config.in
205endmenu 210endmenu
206 211
207menu "Input methods" 212menu "Input methods"
208 source inputmethods/config.in 213 source inputmethods/config.in
209endmenu 214endmenu
210 215
211menu "Pim" 216menu "Pim"
212 source core/obex/config.in 217 source core/obex/config.in
213 source core/pim/config.in 218 source core/pim/config.in
214 comment "Today Plugins ---" 219 comment "Today Plugins ---"
215 source noncore/todayplugins/config.in 220 source noncore/todayplugins/config.in
216 source core/pim/today/plugins/config.in 221 source core/pim/today/plugins/config.in
217endmenu 222endmenu
218 223
219menu "Settings" 224menu "Settings"
220 source core/settings/config.in 225 source core/settings/config.in
221 source noncore/settings/config.in 226 source noncore/settings/config.in
222 source noncore/securityplugins/config.in 227 source noncore/securityplugins/config.in
223endmenu 228endmenu
224 229
225menu "Theming" 230menu "Theming"
226 comment "Decorations ---" 231 comment "Decorations ---"
227 source noncore/decorations/config.in 232 source noncore/decorations/config.in
228 comment "Styles ---" 233 comment "Styles ---"
229 source noncore/styles/config.in 234 source noncore/styles/config.in
230endmenu 235endmenu
231 236
232menu "Tools" 237menu "Tools"
233 source noncore/tools/config.in 238 source noncore/tools/config.in
234endmenu 239endmenu
235 240
236menu "Development" 241menu "Development"
237 source development/keyview/config.in 242 source development/keyview/config.in
238 #source development/debugviewer/config.in 243 #source development/debugviewer/config.in
239endmenu 244endmenu
240 245
241menu "Examples" 246menu "Examples"
242 config EXAMPLES 247 config EXAMPLES
243 boolean "Compile Example Application" 248 boolean "Compile Example Application"
244 source examples/config.in 249 source examples/config.in
245endmenu 250endmenu
246 251
247comment "" 252comment ""
248 253
249menu "Unsupported / Unmaintained" 254menu "Unsupported / Unmaintained"
250 source noncore/unsupported/config.in 255 source noncore/unsupported/config.in
251endmenu 256endmenu
252 257
253comment "" 258comment ""
254 depends on EXPERIMENTAL 259 depends on EXPERIMENTAL
255menu "Experimental" 260menu "Experimental"
256 depends on EXPERIMENTAL 261 depends on EXPERIMENTAL
257 source libslcompat/config.in 262 source libslcompat/config.in
258 source core/qws/config.in 263 source core/qws/config.in
259endmenu 264endmenu
diff --git a/core/launcher/launcher.cpp b/core/launcher/launcher.cpp
index 87a54bf..aa357ca 100644
--- a/core/launcher/launcher.cpp
+++ b/core/launcher/launcher.cpp
@@ -284,480 +284,460 @@ void LauncherTabWidget::setTabViewAppearance( LauncherView *v, Config &cfg )
284 v->setTextColor( QColor() ); 284 v->setTextColor( QColor() );
285 else 285 else
286 v->setTextColor( QColor(textCol) ); 286 v->setTextColor( QColor(textCol) );
287// bool customFont = cfg.readBoolEntry( "CustomFont", FALSE ); 287// bool customFont = cfg.readBoolEntry( "CustomFont", FALSE );
288 288
289 289
290 QStringList font = cfg.readListEntry( "Font", ',' ); 290 QStringList font = cfg.readListEntry( "Font", ',' );
291 if ( font.count() == 4 ) 291 if ( font.count() == 4 )
292 v->setViewFont( QFont(font[0], font[1].toInt(), font[2].toInt(), font[3].toInt()!=0) ); 292 v->setViewFont( QFont(font[0], font[1].toInt(), font[2].toInt(), font[3].toInt()!=0) );
293 293
294 // ### FIXME TabColor TabTextColor 294 // ### FIXME TabColor TabTextColor
295 295
296} 296}
297 297
298// ### Could move to LauncherTab 298// ### Could move to LauncherTab
299void LauncherTabWidget::setTabAppearance( LauncherTab *tab, Config &cfg ) 299void LauncherTabWidget::setTabAppearance( LauncherTab *tab, Config &cfg )
300{ 300{
301 cfg.setGroup( QString( "Tab %1" ).arg(tab->type) ); // No tr 301 cfg.setGroup( QString( "Tab %1" ).arg(tab->type) ); // No tr
302 302
303 setTabViewAppearance( tab->view, cfg ); 303 setTabViewAppearance( tab->view, cfg );
304 304
305 // Tabs 305 // Tabs
306 QString tabCol = cfg.readEntry( "TabColor" ); 306 QString tabCol = cfg.readEntry( "TabColor" );
307 if ( tabCol.isEmpty() ) 307 if ( tabCol.isEmpty() )
308 tab->bgColor = QColor(); 308 tab->bgColor = QColor();
309 else 309 else
310 tab->bgColor = QColor(tabCol); 310 tab->bgColor = QColor(tabCol);
311 QString tabTextCol = cfg.readEntry( "TabTextColor" ); 311 QString tabTextCol = cfg.readEntry( "TabTextColor" );
312 if ( tabTextCol.isEmpty() ) 312 if ( tabTextCol.isEmpty() )
313 tab->fgColor = QColor(); 313 tab->fgColor = QColor();
314 else 314 else
315 tab->fgColor = QColor(tabTextCol); 315 tab->fgColor = QColor(tabTextCol);
316} 316}
317 317
318void LauncherTabWidget::paletteChange( const QPalette &p ) 318void LauncherTabWidget::paletteChange( const QPalette &p )
319{ 319{
320 QVBox::paletteChange( p ); 320 QVBox::paletteChange( p );
321 QPalette pal = palette(); 321 QPalette pal = palette();
322 pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) ); 322 pal.setColor( QColorGroup::Light, pal.color(QPalette::Active,QColorGroup::Shadow) );
323 pal.setColor( QColorGroup::Background, pal.active().background().light(110) ); 323 pal.setColor( QColorGroup::Background, pal.active().background().light(110) );
324 categoryBar->setPalette( pal ); 324 categoryBar->setPalette( pal );
325 categoryBar->update(); 325 categoryBar->update();
326} 326}
327 327
328void LauncherTabWidget::styleChange( QStyle & ) 328void LauncherTabWidget::styleChange( QStyle & )
329{ 329{
330 QTimer::singleShot( 0, this, SLOT(setProgressStyle()) ); 330 QTimer::singleShot( 0, this, SLOT(setProgressStyle()) );
331} 331}
332 332
333void LauncherTabWidget::setProgressStyle() 333void LauncherTabWidget::setProgressStyle()
334{ 334{
335 if (docLoadingWidgetProgress) { 335 if (docLoadingWidgetProgress) {
336 docLoadingWidgetProgress->setFrameShape( QProgressBar::Box ); 336 docLoadingWidgetProgress->setFrameShape( QProgressBar::Box );
337 docLoadingWidgetProgress->setFrameShadow( QProgressBar::Plain ); 337 docLoadingWidgetProgress->setFrameShadow( QProgressBar::Plain );
338 docLoadingWidgetProgress->setMargin( 1 ); 338 docLoadingWidgetProgress->setMargin( 1 );
339 docLoadingWidgetProgress->setLineWidth( 1 ); 339 docLoadingWidgetProgress->setLineWidth( 1 );
340 } 340 }
341} 341}
342 342
343/* 343/*
344 * FIXME 344 * FIXME
345 * The following NULL check is triggered by inserting, then removing a tab on the fly 345 * The following NULL check is triggered by inserting, then removing a tab on the fly
346 * as you would if you had removable media (which I do). Without this check 346 * as you would if you had removable media (which I do). Without this check
347 * the first app launched after a tab removal causes qpe to Segfault. 347 * the first app launched after a tab removal causes qpe to Segfault.
348 * This obviously has a more sinister cause, but this works around it with no 348 * This obviously has a more sinister cause, but this works around it with no
349 * obvious adverse effects. Please FIXME 349 * obvious adverse effects. Please FIXME
350 * bkc - 17/6/2004 350 * bkc - 17/6/2004
351 * 351 *
352 */ 352 */
353 353
354void LauncherTabWidget::setBusy(bool on) 354void LauncherTabWidget::setBusy(bool on)
355{ 355{
356 if ( on ) 356 if ( on )
357 currentView()->setBusy(TRUE); 357 currentView()->setBusy(TRUE);
358 else { 358 else {
359 for ( int i = 0; i < categoryBar->count(); i++ ) { 359 for ( int i = 0; i < categoryBar->count(); i++ ) {
360 if (categoryBar->tab(i)) { 360 if (categoryBar->tab(i)) {
361 LauncherView *view = ((LauncherTab *)categoryBar->tab(i))->view; 361 LauncherView *view = ((LauncherTab *)categoryBar->tab(i))->view;
362 view->setBusy( FALSE ); 362 view->setBusy( FALSE );
363 } else { 363 } else {
364 odebug << "Averting Disaster with tab " << i << " == NULL! " << oendl; 364 odebug << "Averting Disaster with tab " << i << " == NULL! " << oendl;
365 } 365 }
366 } 366 }
367 } 367 }
368} 368}
369 369
370void LauncherTabWidget::setBusyIndicatorType( const QString& str ) { 370void LauncherTabWidget::setBusyIndicatorType( const QString& str ) {
371 for (int i = 0; i < categoryBar->count(); i++ ) { 371 for (int i = 0; i < categoryBar->count(); i++ ) {
372 LauncherView* view = static_cast<LauncherTab*>( categoryBar->tab(i) )->view; 372 LauncherView* view = static_cast<LauncherTab*>( categoryBar->tab(i) )->view;
373 view->setBusyIndicatorType( str ); 373 view->setBusyIndicatorType( str );
374 } 374 }
375} 375}
376 376
377LauncherView *LauncherTabWidget::currentView(void) 377LauncherView *LauncherTabWidget::currentView(void)
378{ 378{
379 return (LauncherView*)stack->visibleWidget(); 379 return (LauncherView*)stack->visibleWidget();
380} 380}
381 381
382 382
383 383
384void LauncherTabWidget::launcherMessage( const QCString &msg, const QByteArray &data) 384void LauncherTabWidget::launcherMessage( const QCString &msg, const QByteArray &data)
385{ 385{
386 QDataStream stream( data, IO_ReadOnly ); 386 QDataStream stream( data, IO_ReadOnly );
387 if ( msg == "setTabView(QString,int)" ) { 387 if ( msg == "setTabView(QString,int)" ) {
388 QString id; 388 QString id;
389 stream >> id; 389 stream >> id;
390 int mode; 390 int mode;
391 stream >> mode; 391 stream >> mode;
392 if ( view(id) ) 392 if ( view(id) )
393 view(id)->setViewMode( (LauncherView::ViewMode)mode ); 393 view(id)->setViewMode( (LauncherView::ViewMode)mode );
394 } else if ( msg == "setTabBackground(QString,int,QString)" ) { 394 } else if ( msg == "setTabBackground(QString,int,QString)" ) {
395 QString id; 395 QString id;
396 stream >> id; 396 stream >> id;
397 int mode; 397 int mode;
398 stream >> mode; 398 stream >> mode;
399 QString pixmapOrColor; 399 QString pixmapOrColor;
400 stream >> pixmapOrColor; 400 stream >> pixmapOrColor;
401 if ( view(id) ) 401 if ( view(id) )
402 view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); 402 view(id)->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor );
403 if ( id == "Documents" ) 403 if ( id == "Documents" )
404 docLoadingWidget->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor ); 404 docLoadingWidget->setBackgroundType( (LauncherView::BackgroundType)mode, pixmapOrColor );
405 } else if ( msg == "setTextColor(QString,QString)" ) { 405 } else if ( msg == "setTextColor(QString,QString)" ) {
406 QString id; 406 QString id;
407 stream >> id; 407 stream >> id;
408 QString color; 408 QString color;
409 stream >> color; 409 stream >> color;
410 if ( view(id) ) 410 if ( view(id) )
411 view(id)->setTextColor( QColor(color) ); 411 view(id)->setTextColor( QColor(color) );
412 if ( id == "Documents" ) 412 if ( id == "Documents" )
413 docLoadingWidget->setTextColor( QColor(color) ); 413 docLoadingWidget->setTextColor( QColor(color) );
414 } else if ( msg == "setFont(QString,QString,int,int,int)" ) { 414 } else if ( msg == "setFont(QString,QString,int,int,int)" ) {
415 QString id; 415 QString id;
416 stream >> id; 416 stream >> id;
417 QString fam; 417 QString fam;
418 stream >> fam; 418 stream >> fam;
419 int size; 419 int size;
420 stream >> size; 420 stream >> size;
421 int weight; 421 int weight;
422 stream >> weight; 422 stream >> weight;
423 int italic; 423 int italic;
424 stream >> italic; 424 stream >> italic;
425 if ( view(id) ) { 425 if ( view(id) ) {
426 if ( !fam.isEmpty() ) { 426 if ( !fam.isEmpty() ) {
427 view(id)->setViewFont( QFont(fam, size, weight, italic!=0) ); 427 view(id)->setViewFont( QFont(fam, size, weight, italic!=0) );
428 odebug << "setFont: " << fam << ", " << size << ", " << weight << ", " << italic << "" << oendl; 428 odebug << "setFont: " << fam << ", " << size << ", " << weight << ", " << italic << "" << oendl;
429 } else { 429 } else {
430 view(id)->clearViewFont(); 430 view(id)->clearViewFont();
431 } 431 }
432 } 432 }
433 }else if ( msg == "setBusyIndicatorType(QString)" ) { 433 }else if ( msg == "setBusyIndicatorType(QString)" ) {
434 QString type; 434 QString type;
435 stream >> type; 435 stream >> type;
436 setBusyIndicatorType( type ); 436 setBusyIndicatorType( type );
437 }else if ( msg == "home()" ) { 437 }else if ( msg == "home()" ) {
438 if ( isVisibleWindow( static_cast<QWidget*>(parent())->winId() ) ) { 438 if ( isVisibleWindow( static_cast<QWidget*>(parent())->winId() ) ) {
439 if (categoryBar) 439 if (categoryBar)
440 categoryBar->nextTab(); 440 categoryBar->nextTab();
441 }else 441 }else
442 static_cast<QWidget*>(parent())->raise(); 442 static_cast<QWidget*>(parent())->raise();
443 } 443 }
444} 444}
445 445
446 446
447 447
448//--------------------------------------------------------------------------- 448//---------------------------------------------------------------------------
449 449
450Launcher::Launcher() 450Launcher::Launcher()
451 : QMainWindow( 0, "PDA User Interface", QWidget::WStyle_Customize | QWidget::WGroupLeader ) 451 : QMainWindow( 0, "PDA User Interface", QWidget::WStyle_Customize | QWidget::WGroupLeader )
452{ 452{
453 tabs = 0; 453 tabs = 0;
454 tb = 0; 454 tb = 0;
455 Config cfg( "Launcher" ); 455 Config cfg( "Launcher" );
456 cfg.setGroup( "DocTab" ); 456 cfg.setGroup( "DocTab" );
457 docTabEnabled = cfg.readBoolEntry( "Enable", true ); 457 docTabEnabled = cfg.readBoolEntry( "Enable", true );
458} 458}
459 459
460void Launcher::createGUI() 460void Launcher::createGUI()
461{ 461{
462 setCaption( tr("Launcher") ); 462 setCaption( tr("Launcher") );
463 463
464 // we have a pretty good idea how big we'll be 464 // we have a pretty good idea how big we'll be
465 setGeometry( 0, 0, qApp->desktop()->width(), qApp->desktop()->height() ); 465 setGeometry( 0, 0, qApp->desktop()->width(), qApp->desktop()->height() );
466 466
467 tb = new TaskBar; 467 tb = new TaskBar;
468 tabs = new LauncherTabWidget( this ); 468 tabs = new LauncherTabWidget( this );
469 setCentralWidget( tabs ); 469 setCentralWidget( tabs );
470 470
471 ServerInterface::dockWidget( tb, ServerInterface::Bottom ); 471 ServerInterface::dockWidget( tb, ServerInterface::Bottom );
472 tb->show(); 472 tb->show();
473 473
474 qApp->installEventFilter( this ); 474 qApp->installEventFilter( this );
475 475
476
477 connect( qApp, SIGNAL(symbol()), this, SLOT(toggleSymbolInput()) );
478 connect( qApp, SIGNAL(numLockStateToggle()), this, SLOT(toggleNumLockState()) );
479 connect( qApp, SIGNAL(capsLockStateToggle()), this, SLOT(toggleCapsLockState()) );
480
481 connect( tb, SIGNAL(tabSelected(const QString&)), 476 connect( tb, SIGNAL(tabSelected(const QString&)),
482 this, SLOT(showTab(const QString&)) ); 477 this, SLOT(showTab(const QString&)) );
483 connect( tabs, SIGNAL(selected(const QString&)), 478 connect( tabs, SIGNAL(selected(const QString&)),
484 this, SLOT(viewSelected(const QString&)) ); 479 this, SLOT(viewSelected(const QString&)) );
485 connect( tabs, SIGNAL(clicked(const AppLnk*)), 480 connect( tabs, SIGNAL(clicked(const AppLnk*)),
486 this, SLOT(select(const AppLnk*))); 481 this, SLOT(select(const AppLnk*)));
487 connect( tabs, SIGNAL(rightPressed(AppLnk*)), 482 connect( tabs, SIGNAL(rightPressed(AppLnk*)),
488 this, SLOT(properties(AppLnk*))); 483 this, SLOT(properties(AppLnk*)));
489 484
490#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 485#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
491 QCopChannel* sysChannel = new QCopChannel( "QPE/System", this ); 486 QCopChannel* sysChannel = new QCopChannel( "QPE/System", this );
492 connect( sysChannel, SIGNAL(received(const QCString&,const QByteArray&)), 487 connect( sysChannel, SIGNAL(received(const QCString&,const QByteArray&)),
493 this, SLOT(systemMessage(const QCString&,const QByteArray&)) ); 488 this, SLOT(systemMessage(const QCString&,const QByteArray&)) );
494#endif 489#endif
495 490
496 // all documents 491 // all documents
497 QImage img( Resource::loadImage( "DocsIcon" ) ); 492 QImage img( Resource::loadImage( "DocsIcon" ) );
498 QPixmap pm; 493 QPixmap pm;
499 pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() ); 494 pm = img.smoothScale( AppLnk::smallIconSize(), AppLnk::smallIconSize() );
500 // It could add this itself if it handles docs 495 // It could add this itself if it handles docs
501 496
502 tabs->newView("Documents", pm, tr("Documents") )->setToolsEnabled( TRUE ); 497 tabs->newView("Documents", pm, tr("Documents") )->setToolsEnabled( TRUE );
503 498
504 QTimer::singleShot( 0, tabs, SLOT( initLayout() ) ); 499 QTimer::singleShot( 0, tabs, SLOT( initLayout() ) );
505 qApp->setMainWidget( this ); 500 qApp->setMainWidget( this );
506 QTimer::singleShot( 500, this, SLOT( makeVisible() ) ); 501 QTimer::singleShot( 500, this, SLOT( makeVisible() ) );
507} 502}
508 503
509Launcher::~Launcher() 504Launcher::~Launcher()
510{ 505{
511 if ( tb ) 506 if ( tb )
512 destroyGUI(); 507 destroyGUI();
513} 508}
514 509
515 bool Launcher::requiresDocuments() const 510 bool Launcher::requiresDocuments() const
516 { 511 {
517 Config cfg( "Launcher" ); 512 Config cfg( "Launcher" );
518 cfg.setGroup( "DocTab" ); 513 cfg.setGroup( "DocTab" );
519 return cfg.readBoolEntry( "Enable", true ); 514 return cfg.readBoolEntry( "Enable", true );
520} 515}
521 516
522void Launcher::makeVisible() 517void Launcher::makeVisible()
523{ 518{
524 showMaximized(); 519 showMaximized();
525} 520}
526 521
527void Launcher::destroyGUI() 522void Launcher::destroyGUI()
528{ 523{
529 delete tb; 524 delete tb;
530 tb = 0; 525 tb = 0;
531 delete tabs; 526 delete tabs;
532 tabs =0; 527 tabs =0;
533} 528}
534 529
535bool Launcher::eventFilter( QObject*, QEvent *ev ) 530bool Launcher::eventFilter( QObject*, QEvent *ev )
536{ 531{
537#ifdef QT_QWS_CUSTOM 532#ifdef QT_QWS_CUSTOM
538 if ( ev->type() == QEvent::KeyPress ) { 533 if ( ev->type() == QEvent::KeyPress ) {
539 QKeyEvent *ke = (QKeyEvent *)ev; 534 QKeyEvent *ke = (QKeyEvent *)ev;
540 if ( ke->key() == Qt::Key_F11 ) { // menu key 535 if ( ke->key() == Qt::Key_F11 ) { // menu key
541 QWidget *active = qApp->activeWindow(); 536 QWidget *active = qApp->activeWindow();
542 if ( active && active->isPopup() ) 537 if ( active && active->isPopup() )
543 active->close(); 538 active->close();
544 else { 539 else {
545 Global::terminateBuiltin("calibrate"); // No tr 540 Global::terminateBuiltin("calibrate"); // No tr
546 tb->launchStartMenu(); 541 tb->launchStartMenu();
547 } 542 }
548 return TRUE; 543 return TRUE;
549 } 544 }
550 } 545 }
551#else 546#else
552 Q_UNUSED(ev); 547 Q_UNUSED(ev);
553#endif 548#endif
554 return FALSE; 549 return FALSE;
555} 550}
556 551
557void Launcher::toggleSymbolInput()
558{
559 tb->toggleSymbolInput();
560}
561
562void Launcher::toggleNumLockState()
563{
564 tb->toggleNumLockState();
565}
566
567void Launcher::toggleCapsLockState()
568{
569 tb->toggleCapsLockState();
570}
571
572static bool isVisibleWindow(int wid) 552static bool isVisibleWindow(int wid)
573{ 553{
574#ifdef Q_WS_QWS 554#ifdef Q_WS_QWS
575 const QList<QWSWindow> &list = qwsServer->clientWindows(); 555 const QList<QWSWindow> &list = qwsServer->clientWindows();
576 QWSWindow* w; 556 QWSWindow* w;
577 for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { 557 for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) {
578 if ( w->winId() == wid ) 558 if ( w->winId() == wid )
579 return !w->isFullyObscured(); 559 return !w->isFullyObscured();
580 } 560 }
581#endif 561#endif
582 return FALSE; 562 return FALSE;
583} 563}
584 564
585void Launcher::viewSelected(const QString& s) 565void Launcher::viewSelected(const QString& s)
586{ 566{
587 setCaption( s + tr(" - Launcher") ); 567 setCaption( s + tr(" - Launcher") );
588} 568}
589 569
590void Launcher::showTab(const QString& id) 570void Launcher::showTab(const QString& id)
591{ 571{
592 tabs->categoryBar->showTab(id); 572 tabs->categoryBar->showTab(id);
593 raise(); 573 raise();
594} 574}
595 575
596void Launcher::select( const AppLnk *appLnk ) 576void Launcher::select( const AppLnk *appLnk )
597{ 577{
598 if ( appLnk->type() == "Folder" ) { // No tr 578 if ( appLnk->type() == "Folder" ) { // No tr
599 // Not supported: flat is simpler for the user 579 // Not supported: flat is simpler for the user
600 } else { 580 } else {
601 if ( appLnk->exec().isNull() ) { 581 if ( appLnk->exec().isNull() ) {
602 int i = QMessageBox::information(this,tr("No application"), 582 int i = QMessageBox::information(this,tr("No application"),
603 tr("<p>No application is defined for this document." 583 tr("<p>No application is defined for this document."
604 "<p>Type is %1.").arg(appLnk->type()), tr("OK"), tr("View as text"), 0, 0, 1); 584 "<p>Type is %1.").arg(appLnk->type()), tr("OK"), tr("View as text"), 0, 0, 1);
605 585
606 /* ### Fixme */ 586 /* ### Fixme */
607 if ( i == 1 ) 587 if ( i == 1 )
608 Global::execute("textedit",appLnk->file()); 588 Global::execute("textedit",appLnk->file());
609 589
610 return; 590 return;
611 } 591 }
612 tabs->setBusy(TRUE); 592 tabs->setBusy(TRUE);
613 emit executing( appLnk ); 593 emit executing( appLnk );
614 appLnk->execute(); 594 appLnk->execute();
615 } 595 }
616} 596}
617 597
618void Launcher::properties( AppLnk *appLnk ) 598void Launcher::properties( AppLnk *appLnk )
619{ 599{
620 if ( appLnk->type() == "Folder" ) { // No tr 600 if ( appLnk->type() == "Folder" ) { // No tr
621 // Not supported: flat is simpler for the user 601 // Not supported: flat is simpler for the user
622 } else { 602 } else {
623/* ### libqtopia FIXME also moving docLnks... */ 603/* ### libqtopia FIXME also moving docLnks... */
624 LnkProperties prop(appLnk,0 ); 604 LnkProperties prop(appLnk,0 );
625 605
626 QPEApplication::execDialog( &prop ); 606 QPEApplication::execDialog( &prop );
627 } 607 }
628} 608}
629 609
630void Launcher::storageChanged( const QList<FileSystem> &fs ) 610void Launcher::storageChanged( const QList<FileSystem> &fs )
631{ 611{
632 // ### update combo boxes if we had a combo box for the storage type 612 // ### update combo boxes if we had a combo box for the storage type
633} 613}
634 614
635void Launcher::systemMessage( const QCString &msg, const QByteArray &data) 615void Launcher::systemMessage( const QCString &msg, const QByteArray &data)
636{ 616{
637 QDataStream stream( data, IO_ReadOnly ); 617 QDataStream stream( data, IO_ReadOnly );
638 if ( msg == "busy()" ) { 618 if ( msg == "busy()" ) {
639 tb->startWait(); 619 tb->startWait();
640 } else if ( msg == "notBusy(QString)" ) { 620 } else if ( msg == "notBusy(QString)" ) {
641 QString app; 621 QString app;
642 stream >> app; 622 stream >> app;
643 tabs->setBusy(FALSE); 623 tabs->setBusy(FALSE);
644 tb->stopWait(app); 624 tb->stopWait(app);
645 } else if (msg == "applyStyle()") { 625 } else if (msg == "applyStyle()") {
646 tabs->currentView()->relayout(); 626 tabs->currentView()->relayout();
647 } 627 }
648} 628}
649 629
650// These are the update functions from the server 630// These are the update functions from the server
651void Launcher::typeAdded( const QString& type, const QString& name, 631void Launcher::typeAdded( const QString& type, const QString& name,
652 const QPixmap& pixmap, const QPixmap& ) 632 const QPixmap& pixmap, const QPixmap& )
653{ 633{
654 tabs->newView( type, pixmap, name ); 634 tabs->newView( type, pixmap, name );
655 ids.append( type ); 635 ids.append( type );
656 /* this will be called in applicationScanningProgress with value 100! */ 636 /* this will be called in applicationScanningProgress with value 100! */
657// tb->refreshStartMenu(); 637// tb->refreshStartMenu();
658 638
659 static bool first = TRUE; 639 static bool first = TRUE;
660 if ( first ) { 640 if ( first ) {
661 first = FALSE; 641 first = FALSE;
662 tabs->categoryBar->showTab(type); 642 tabs->categoryBar->showTab(type);
663 } 643 }
664 644
665 tabs->view( type )->setUpdatesEnabled( FALSE ); 645 tabs->view( type )->setUpdatesEnabled( FALSE );
666 tabs->view( type )->setSortEnabled( FALSE ); 646 tabs->view( type )->setSortEnabled( FALSE );
667} 647}
668 648
669void Launcher::typeRemoved( const QString& type ) 649void Launcher::typeRemoved( const QString& type )
670{ 650{
671 tabs->view( type )->removeAllItems(); 651 tabs->view( type )->removeAllItems();
672 tabs->deleteView( type ); 652 tabs->deleteView( type );
673 ids.remove( type ); 653 ids.remove( type );
674 /* this will be called in applicationScanningProgress with value 100! */ 654 /* this will be called in applicationScanningProgress with value 100! */
675// tb->refreshStartMenu(); 655// tb->refreshStartMenu();
676} 656}
677 657
678void Launcher::applicationAdded( const QString& type, const AppLnk& app ) 658void Launcher::applicationAdded( const QString& type, const AppLnk& app )
679{ 659{
680 if ( app.type() == "Separator" ) // No tr 660 if ( app.type() == "Separator" ) // No tr
681 return; 661 return;
682 662
683 LauncherView *view = tabs->view( type ); 663 LauncherView *view = tabs->view( type );
684 if ( view ) 664 if ( view )
685 view->addItem( new AppLnk( app ), FALSE ); 665 view->addItem( new AppLnk( app ), FALSE );
686 else 666 else
687 owarn << "addAppLnk: No view for type " << type.latin1() << ". Can't add app " 667 owarn << "addAppLnk: No view for type " << type.latin1() << ". Can't add app "
688 << app.name().latin1() << "!", 668 << app.name().latin1() << "!",
689 669
690 MimeType::registerApp( app ); 670 MimeType::registerApp( app );
691} 671}
692 672
693void Launcher::applicationRemoved( const QString& type, const AppLnk& app ) 673void Launcher::applicationRemoved( const QString& type, const AppLnk& app )
694{ 674{
695 LauncherView *view = tabs->view( type ); 675 LauncherView *view = tabs->view( type );
696 if ( view ) 676 if ( view )
697 view->removeLink( app.linkFile() ); 677 view->removeLink( app.linkFile() );
698 else 678 else
699 owarn << "removeAppLnk: No view for " << type << "!" << oendl; 679 owarn << "removeAppLnk: No view for " << type << "!" << oendl;
700} 680}
701 681
702void Launcher::allApplicationsRemoved() 682void Launcher::allApplicationsRemoved()
703{ 683{
704 MimeType::clear(); 684 MimeType::clear();
705 for ( QStringList::ConstIterator it=ids.begin(); it!= ids.end(); ++it) 685 for ( QStringList::ConstIterator it=ids.begin(); it!= ids.end(); ++it)
706 tabs->view( (*it) )->removeAllItems(); 686 tabs->view( (*it) )->removeAllItems();
707} 687}
708 688
709void Launcher::documentAdded( const DocLnk& doc ) 689void Launcher::documentAdded( const DocLnk& doc )
710{ 690{
711 tabs->docView()->addItem( new DocLnk( doc ), FALSE ); 691 tabs->docView()->addItem( new DocLnk( doc ), FALSE );
712} 692}
713 693
714void Launcher::aboutToAddBegin() 694void Launcher::aboutToAddBegin()
715{ 695{
716 tabs->docView()->setUpdatesEnabled( false ); 696 tabs->docView()->setUpdatesEnabled( false );
717} 697}
718 698
719void Launcher::aboutToAddEnd() 699void Launcher::aboutToAddEnd()
720{ 700{
721 tabs->docView()->setUpdatesEnabled( true ); 701 tabs->docView()->setUpdatesEnabled( true );
722} 702}
723 703
724void Launcher::showLoadingDocs() 704void Launcher::showLoadingDocs()
725{ 705{
726 tabs->docView()->hide(); 706 tabs->docView()->hide();
727} 707}
728 708
729void Launcher::showDocTab() 709void Launcher::showDocTab()
730{ 710{
731 if ( tabs->categoryBar->currentView() == tabs->docView() ) 711 if ( tabs->categoryBar->currentView() == tabs->docView() )
732 tabs->docView()->show(); 712 tabs->docView()->show();
733} 713}
734 714
735void Launcher::documentRemoved( const DocLnk& doc ) 715void Launcher::documentRemoved( const DocLnk& doc )
736{ 716{
737 tabs->docView()->removeLink( doc.linkFile() ); 717 tabs->docView()->removeLink( doc.linkFile() );
738} 718}
739 719
740void Launcher::documentChanged( const DocLnk& oldDoc, const DocLnk& newDoc ) 720void Launcher::documentChanged( const DocLnk& oldDoc, const DocLnk& newDoc )
741{ 721{
742 documentRemoved( oldDoc ); 722 documentRemoved( oldDoc );
743 documentAdded( newDoc ); 723 documentAdded( newDoc );
744} 724}
745 725
746void Launcher::allDocumentsRemoved() 726void Launcher::allDocumentsRemoved()
747{ 727{
748 tabs->docView()->removeAllItems(); 728 tabs->docView()->removeAllItems();
749} 729}
750 730
751void Launcher::applicationStateChanged( const QString& name, ApplicationState state ) 731void Launcher::applicationStateChanged( const QString& name, ApplicationState state )
752{ 732{
753 tb->setApplicationState( name, state ); 733 tb->setApplicationState( name, state );
754} 734}
755 735
756void Launcher::applicationScanningProgress( int percent ) 736void Launcher::applicationScanningProgress( int percent )
757{ 737{
758 switch ( percent ) { 738 switch ( percent ) {
759 case 0: { 739 case 0: {
760 for ( QStringList::ConstIterator it=ids.begin(); it!= ids.end(); ++it) { 740 for ( QStringList::ConstIterator it=ids.begin(); it!= ids.end(); ++it) {
761 tabs->view( (*it) )->setUpdatesEnabled( FALSE ); 741 tabs->view( (*it) )->setUpdatesEnabled( FALSE );
762 tabs->view( (*it) )->setSortEnabled( FALSE ); 742 tabs->view( (*it) )->setSortEnabled( FALSE );
763 } 743 }
diff --git a/core/launcher/launcher.h b/core/launcher/launcher.h
index 29bd7db..2eaf77c 100644
--- a/core/launcher/launcher.h
+++ b/core/launcher/launcher.h
@@ -1,159 +1,156 @@
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#ifndef LAUNCHER_H 20#ifndef LAUNCHER_H
21#define LAUNCHER_H 21#define LAUNCHER_H
22 22
23#include <qtopia/config.h> 23#include <qtopia/config.h>
24#include <qtopia/storage.h> 24#include <qtopia/storage.h>
25#include <qtopia/applnk.h> 25#include <qtopia/applnk.h>
26#include <qmainwindow.h> 26#include <qmainwindow.h>
27#include <qstringlist.h> 27#include <qstringlist.h>
28#include <qprogressbar.h> 28#include <qprogressbar.h>
29#include <qvbox.h> 29#include <qvbox.h>
30#include <qlist.h> 30#include <qlist.h>
31#include <qdict.h> 31#include <qdict.h>
32#include "launcherview.h" 32#include "launcherview.h"
33#include "launchertab.h" 33#include "launchertab.h"
34#include "serverinterface.h" 34#include "serverinterface.h"
35 35
36class QWidgetStack; 36class QWidgetStack;
37class TaskBar; 37class TaskBar;
38class Launcher; 38class Launcher;
39 39
40class LauncherTabWidget : public QVBox { 40class LauncherTabWidget : public QVBox {
41 // can't use a QTabWidget, since it won't let us set the frame style. 41 // can't use a QTabWidget, since it won't let us set the frame style.
42 Q_OBJECT 42 Q_OBJECT
43public: 43public:
44 LauncherTabWidget( Launcher* parent ); 44 LauncherTabWidget( Launcher* parent );
45 45
46 void updateDocs(AppLnkSet* docFolder); 46 void updateDocs(AppLnkSet* docFolder);
47 void setBusy(bool on); 47 void setBusy(bool on);
48 LauncherView *currentView(void); 48 LauncherView *currentView(void);
49 49
50 LauncherView* newView( const QString&, const QPixmap& pm, const QString& label ); 50 LauncherView* newView( const QString&, const QPixmap& pm, const QString& label );
51 void deleteView( const QString& ); 51 void deleteView( const QString& );
52 void setTabViewAppearance( LauncherView *v, Config &cfg ); 52 void setTabViewAppearance( LauncherView *v, Config &cfg );
53 void setTabAppearance( LauncherTab *, Config &cfg ); 53 void setTabAppearance( LauncherTab *, Config &cfg );
54 54
55 LauncherView *view( const QString & ); 55 LauncherView *view( const QString & );
56 LauncherView *docView(); 56 LauncherView *docView();
57 57
58 void createDocLoadingWidget(); 58 void createDocLoadingWidget();
59 void setLoadingWidgetEnabled( bool v ); 59 void setLoadingWidgetEnabled( bool v );
60 void setLoadingProgress( int percent ); 60 void setLoadingProgress( int percent );
61 61
62 LauncherTabBar* categoryBar; 62 LauncherTabBar* categoryBar;
63 63
64 void setBusyIndicatorType( const QString& type ); 64 void setBusyIndicatorType( const QString& type );
65 65
66signals: 66signals:
67 void selected(const QString&); 67 void selected(const QString&);
68 void clicked(const AppLnk*); 68 void clicked(const AppLnk*);
69 void rightPressed(AppLnk*); 69 void rightPressed(AppLnk*);
70 70
71protected slots: 71protected slots:
72 void raiseTabWidget(); 72 void raiseTabWidget();
73 void tabProperties(); 73 void tabProperties();
74 void initLayout(); 74 void initLayout();
75 75
76private slots: 76private slots:
77 void launcherMessage( const QCString &, const QByteArray &); 77 void launcherMessage( const QCString &, const QByteArray &);
78 void appMessage( const QCString &, const QByteArray &); 78 void appMessage( const QCString &, const QByteArray &);
79 void setProgressStyle(); 79 void setProgressStyle();
80 80
81protected: 81protected:
82 void paletteChange( const QPalette &p ); 82 void paletteChange( const QPalette &p );
83 void styleChange( QStyle & ); 83 void styleChange( QStyle & );
84 84
85private: 85private:
86 Launcher *launcher; 86 Launcher *launcher;
87 LauncherView *docview; 87 LauncherView *docview;
88 88
89 QWidgetStack *stack; 89 QWidgetStack *stack;
90 LauncherView *docLoadingWidget; 90 LauncherView *docLoadingWidget;
91 QProgressBar *docLoadingWidgetProgress; 91 QProgressBar *docLoadingWidgetProgress;
92 bool docLoadingWidgetEnabled; 92 bool docLoadingWidgetEnabled;
93}; 93};
94 94
95class Launcher : public QMainWindow, public ServerInterface 95class Launcher : public QMainWindow, public ServerInterface
96{ 96{
97 Q_OBJECT 97 Q_OBJECT
98public: 98public:
99 Launcher(); 99 Launcher();
100 ~Launcher(); 100 ~Launcher();
101 101
102 // implementing ServerInterface 102 // implementing ServerInterface
103 void createGUI(); 103 void createGUI();
104 void destroyGUI(); 104 void destroyGUI();
105 void typeAdded( const QString& type, const QString& name, const QPixmap& pixmap, const QPixmap& bgPixmap ); 105 void typeAdded( const QString& type, const QString& name, const QPixmap& pixmap, const QPixmap& bgPixmap );
106 void typeRemoved( const QString& type ); 106 void typeRemoved( const QString& type );
107 void applicationAdded( const QString& type, const AppLnk& doc ); 107 void applicationAdded( const QString& type, const AppLnk& doc );
108 void applicationRemoved( const QString& type, const AppLnk& doc ); 108 void applicationRemoved( const QString& type, const AppLnk& doc );
109 void allApplicationsRemoved(); 109 void allApplicationsRemoved();
110 void applicationStateChanged( const QString& name, ApplicationState state ); 110 void applicationStateChanged( const QString& name, ApplicationState state );
111 void documentAdded( const DocLnk& doc ); 111 void documentAdded( const DocLnk& doc );
112 void documentRemoved( const DocLnk& doc ); 112 void documentRemoved( const DocLnk& doc );
113 void aboutToAddBegin(); 113 void aboutToAddBegin();
114 void aboutToAddEnd(); 114 void aboutToAddEnd();
115 void allDocumentsRemoved(); 115 void allDocumentsRemoved();
116 void documentChanged( const DocLnk& oldDoc, const DocLnk& newDoc ); 116 void documentChanged( const DocLnk& oldDoc, const DocLnk& newDoc );
117 void storageChanged( const QList<FileSystem> & ); 117 void storageChanged( const QList<FileSystem> & );
118 void applicationScanningProgress( int percent ); 118 void applicationScanningProgress( int percent );
119 void documentScanningProgress( int percent ); 119 void documentScanningProgress( int percent );
120 bool requiresApplications() const { return TRUE; } 120 bool requiresApplications() const { return TRUE; }
121 bool requiresDocuments() const; 121 bool requiresDocuments() const;
122 void showLoadingDocs(); 122 void showLoadingDocs();
123 void showDocTab(); 123 void showDocTab();
124 124
125 QStringList idList() const { return ids; } 125 QStringList idList() const { return ids; }
126 126
127public slots: 127public slots:
128 void viewSelected(const QString&); 128 void viewSelected(const QString&);
129 void showTab(const QString&); 129 void showTab(const QString&);
130 void select( const AppLnk * ); 130 void select( const AppLnk * );
131 void properties( AppLnk * ); 131 void properties( AppLnk * );
132 void makeVisible(); 132 void makeVisible();
133 133
134signals: 134signals:
135 void executing( const AppLnk * ); 135 void executing( const AppLnk * );
136 136
137private slots: 137private slots:
138 void systemMessage( const QCString &, const QByteArray &); 138 void systemMessage( const QCString &, const QByteArray &);
139 void toggleSymbolInput();
140 void toggleNumLockState();
141 void toggleCapsLockState();
142 139
143protected: 140protected:
144 bool eventFilter( QObject *o, QEvent *ev ); 141 bool eventFilter( QObject *o, QEvent *ev );
145 142
146private: 143private:
147 void updateApps(); 144 void updateApps();
148 void loadDocs(); 145 void loadDocs();
149 void updateDocs(); 146 void updateDocs();
150 void updateTabs(); 147 void updateTabs();
151 148
152 LauncherTabWidget *tabs; 149 LauncherTabWidget *tabs;
153 QStringList ids; 150 QStringList ids;
154 TaskBar *tb; 151 TaskBar *tb;
155 152
156 bool docTabEnabled; 153 bool docTabEnabled;
157}; 154};
158 155
159#endif // LAUNCHERVIEW_H 156#endif // LAUNCHERVIEW_H
diff --git a/core/launcher/taskbar.cpp b/core/launcher/taskbar.cpp
index 86e0d0d..abe238f 100644
--- a/core/launcher/taskbar.cpp
+++ b/core/launcher/taskbar.cpp
@@ -18,363 +18,363 @@
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "startmenu.h" 21#include "startmenu.h"
22#include "inputmethods.h" 22#include "inputmethods.h"
23#include "runningappbar.h" 23#include "runningappbar.h"
24#include "systray.h" 24#include "systray.h"
25#include "wait.h" 25#include "wait.h"
26#include "appicons.h" 26#include "appicons.h"
27 27
28#include "taskbar.h" 28#include "taskbar.h"
29#include "server.h" 29#include "server.h"
30 30
31/* OPIE */ 31/* OPIE */
32#include <opie2/odebug.h> 32#include <opie2/odebug.h>
33#include <qtopia/config.h> 33#include <qtopia/config.h>
34#include <qtopia/qpeapplication.h> 34#include <qtopia/qpeapplication.h>
35#ifdef QWS 35#ifdef QWS
36#include <qtopia/qcopenvelope_qws.h> 36#include <qtopia/qcopenvelope_qws.h>
37#endif 37#endif
38#include <qtopia/global.h> 38#include <qtopia/global.h>
39using namespace Opie::Core; 39using namespace Opie::Core;
40 40
41/* QT */ 41/* QT */
42#include <qlabel.h> 42#include <qlabel.h>
43#include <qlayout.h> 43#include <qlayout.h>
44#include <qtimer.h> 44#include <qtimer.h>
45#ifdef QWS 45#ifdef QWS
46#include <qwindowsystem_qws.h> 46#include <qwindowsystem_qws.h>
47#endif 47#endif
48#include <qwidgetstack.h> 48#include <qwidgetstack.h>
49 49
50#if defined( Q_WS_QWS ) 50#if defined( Q_WS_QWS )
51#include <qwsdisplay_qws.h> 51#include <qwsdisplay_qws.h>
52#include <qgfx_qws.h> 52#include <qgfx_qws.h>
53#endif 53#endif
54 54
55 55
56static bool initNumLock() 56static bool initNumLock()
57{ 57{
58#ifdef QPE_INITIAL_NUMLOCK_STATE 58#ifdef QPE_INITIAL_NUMLOCK_STATE
59 QPE_INITIAL_NUMLOCK_STATE 59 QPE_INITIAL_NUMLOCK_STATE
60#endif 60#endif
61 return FALSE; 61 return FALSE;
62} 62}
63 63
64//--------------------------------------------------------------------------- 64//---------------------------------------------------------------------------
65 65
66class SafeMode : public QWidget 66class SafeMode : public QWidget
67{ 67{
68 Q_OBJECT 68 Q_OBJECT
69public: 69public:
70 SafeMode( QWidget *parent ) : QWidget( parent ), menu(0) 70 SafeMode( QWidget *parent ) : QWidget( parent ), menu(0)
71 { 71 {
72 message = tr("Safe Mode"); 72 message = tr("Safe Mode");
73 QFont f( font() ); 73 QFont f( font() );
74 f.setWeight( QFont::Bold ); 74 f.setWeight( QFont::Bold );
75 setFont( f ); 75 setFont( f );
76 } 76 }
77 77
78 void mousePressEvent( QMouseEvent *); 78 void mousePressEvent( QMouseEvent *);
79 QSize sizeHint() const; 79 QSize sizeHint() const;
80 void paintEvent( QPaintEvent* ); 80 void paintEvent( QPaintEvent* );
81 81
82private slots: 82private slots:
83 void action(int i); 83 void action(int i);
84 84
85private: 85private:
86 QString message; 86 QString message;
87 QPopupMenu *menu; 87 QPopupMenu *menu;
88}; 88};
89 89
90void SafeMode::mousePressEvent( QMouseEvent *) 90void SafeMode::mousePressEvent( QMouseEvent *)
91{ 91{
92 if ( !menu ) { 92 if ( !menu ) {
93 menu = new QPopupMenu(this); 93 menu = new QPopupMenu(this);
94 menu->insertItem( tr("Plugin Manager..."), 0 ); 94 menu->insertItem( tr("Plugin Manager..."), 0 );
95 menu->insertItem( tr("Restart Qtopia"), 1 ); 95 menu->insertItem( tr("Restart Qtopia"), 1 );
96 menu->insertItem( tr("Help..."), 2 ); 96 menu->insertItem( tr("Help..."), 2 );
97 connect(menu, SIGNAL(activated(int)), this, SLOT(action(int))); 97 connect(menu, SIGNAL(activated(int)), this, SLOT(action(int)));
98 } 98 }
99 QPoint curPos = mapToGlobal( QPoint(0,0) ); 99 QPoint curPos = mapToGlobal( QPoint(0,0) );
100 QSize sh = menu->sizeHint(); 100 QSize sh = menu->sizeHint();
101 menu->popup( curPos-QPoint((sh.width()-width())/2,sh.height()) ); 101 menu->popup( curPos-QPoint((sh.width()-width())/2,sh.height()) );
102} 102}
103 103
104void SafeMode::action(int i) 104void SafeMode::action(int i)
105{ 105{
106 switch (i) { 106 switch (i) {
107 case 0: 107 case 0:
108 Global::execute( "pluginmanager" ); 108 Global::execute( "pluginmanager" );
109 break; 109 break;
110 case 1: 110 case 1:
111 Global::restart(); 111 Global::restart();
112 break; 112 break;
113 case 2: 113 case 2:
114 Global::execute( "helpbrowser", "safemode.html" ); 114 Global::execute( "helpbrowser", "safemode.html" );
115 break; 115 break;
116 } 116 }
117} 117}
118 118
119QSize SafeMode::sizeHint() const 119QSize SafeMode::sizeHint() const
120{ 120{
121 QFontMetrics fm = fontMetrics(); 121 QFontMetrics fm = fontMetrics();
122 122
123 return QSize( fm.width(message), fm.height() ); 123 return QSize( fm.width(message), fm.height() );
124} 124}
125 125
126void SafeMode::paintEvent( QPaintEvent* ) 126void SafeMode::paintEvent( QPaintEvent* )
127{ 127{
128 QPainter p(this); 128 QPainter p(this);
129 p.drawText( rect(), AlignCenter, message ); 129 p.drawText( rect(), AlignCenter, message );
130} 130}
131 131
132//--------------------------------------------------------------------------- 132//---------------------------------------------------------------------------
133 133
134class LockKeyState : public QWidget 134class LockKeyState : public QWidget
135{ 135{
136public: 136public:
137 LockKeyState( QWidget *parent ) : 137 LockKeyState( QWidget *parent ) :
138 QWidget(parent), 138 QWidget(parent),
139 nl(initNumLock()), cl(FALSE) 139 nl(initNumLock()), cl(FALSE)
140 { 140 {
141 nl_pm = Resource::loadPixmap("numlock"); 141 nl_pm = Resource::loadPixmap("numlock");
142 cl_pm = Resource::loadPixmap("capslock"); 142 cl_pm = Resource::loadPixmap("capslock");
143 } 143 }
144 QSize sizeHint() const 144 QSize sizeHint() const
145 { 145 {
146 return QSize(nl_pm.width()+2,nl_pm.width()+nl_pm.height()+1); 146 return QSize(nl_pm.width()+2,nl_pm.width()+nl_pm.height()+1);
147 } 147 }
148 void toggleNumLockState() 148 void toggleNumLockState()
149 { 149 {
150 nl = !nl; repaint(); 150 nl = !nl; repaint();
151 } 151 }
152 void toggleCapsLockState() 152 void toggleCapsLockState()
153 { 153 {
154 cl = !cl; repaint(); 154 cl = !cl; repaint();
155 } 155 }
156 void paintEvent( QPaintEvent * ) 156 void paintEvent( QPaintEvent * )
157 { 157 {
158 int y = (height()-sizeHint().height())/2; 158 int y = (height()-sizeHint().height())/2;
159 QPainter p(this); 159 QPainter p(this);
160 if ( nl ) 160 if ( nl )
161 p.drawPixmap(1,y,nl_pm); 161 p.drawPixmap(1,y,nl_pm);
162 if ( cl ) 162 if ( cl )
163 p.drawPixmap(1,y+nl_pm.height()+1,cl_pm); 163 p.drawPixmap(1,y+nl_pm.height()+1,cl_pm);
164 } 164 }
165private: 165private:
166 QPixmap nl_pm, cl_pm; 166 QPixmap nl_pm, cl_pm;
167 bool nl, cl; 167 bool nl, cl;
168}; 168};
169 169
170//--------------------------------------------------------------------------- 170//---------------------------------------------------------------------------
171 171
172TaskBar::~TaskBar() 172TaskBar::~TaskBar()
173{ 173{
174} 174}
175 175
176 176
177TaskBar::TaskBar() : QHBox(0, 0, WStyle_Customize | WStyle_Tool | WStyle_StaysOnTop | WGroupLeader) 177TaskBar::TaskBar() : QHBox(0, 0, WStyle_Customize | WStyle_Tool | WStyle_StaysOnTop | WGroupLeader)
178{ 178{
179 Config cfg( "Launcher" ); 179 Config cfg( "Launcher" );
180 cfg.setGroup( "InputMethods" ); 180 cfg.setGroup( "InputMethods" );
181 resizeRunningApp = cfg.readBoolEntry( "Resize", true ); 181 resizeRunningApp = cfg.readBoolEntry( "Resize", true );
182 182
183 sm = new StartMenu( this ); 183 sm = new StartMenu( this );
184 connect( sm, SIGNAL(tabSelected(const QString&)), this, 184 connect( sm, SIGNAL(tabSelected(const QString&)), this,
185 SIGNAL(tabSelected(const QString&)) ); 185 SIGNAL(tabSelected(const QString&)) );
186 186
187 inputMethods = new InputMethods( this ); 187 inputMethods = new InputMethods( this );
188 connect( inputMethods, SIGNAL(inputToggled(bool)), 188 connect( inputMethods, SIGNAL(inputToggled(bool)),
189 this, SLOT(calcMaxWindowRect()) ); 189 this, SLOT(calcMaxWindowRect()) );
190 190
191 stack = new QWidgetStack( this ); 191 stack = new QWidgetStack( this );
192 stack->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ) ); 192 stack->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum ) );
193 label = new QLabel(stack); 193 label = new QLabel(stack);
194 194
195 runningAppBar = new RunningAppBar(stack); 195 runningAppBar = new RunningAppBar(stack);
196 stack->raiseWidget(runningAppBar); 196 stack->raiseWidget(runningAppBar);
197 197
198 waitIcon = new Wait( this ); 198 waitIcon = new Wait( this );
199 (void) new AppIcons( this ); 199 (void) new AppIcons( this );
200 200
201 sysTray = new SysTray( this ); 201 sysTray = new SysTray( this );
202 202
203 /* ### FIXME plugin loader and safe mode */ 203 /* ### FIXME plugin loader and safe mode */
204#if 0 204#if 0
205 if (PluginLoader::inSafeMode()) 205 if (PluginLoader::inSafeMode())
206 (void)new SafeMode( this ); 206 (void)new SafeMode( this );
207#endif 207#endif
208 208
209 // ## make customizable in some way? 209 // ## make customizable in some way?
210#ifdef QT_QWS_CUSTOM 210#ifdef OPIE_TASKBAR_LOCK_KEY_STATE
211 lockState = new LockKeyState( this ); 211 lockState = new LockKeyState( this );
212#else 212#else
213 lockState = 0; 213 lockState = 0;
214#endif 214#endif
215 215
216#if defined(Q_WS_QWS) 216#if defined(Q_WS_QWS)
217#if !defined(QT_NO_COP) 217#if !defined(QT_NO_COP)
218 QCopChannel *channel = new QCopChannel( "QPE/TaskBar", this ); 218 QCopChannel *channel = new QCopChannel( "QPE/TaskBar", this );
219 connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), 219 connect( channel, SIGNAL(received(const QCString&,const QByteArray&)),
220 this, SLOT(receive(const QCString&,const QByteArray&)) ); 220 this, SLOT(receive(const QCString&,const QByteArray&)) );
221#endif 221#endif
222#endif 222#endif
223 waitTimer = new QTimer( this ); 223 waitTimer = new QTimer( this );
224 connect( waitTimer, SIGNAL( timeout() ), this, SLOT( stopWait() ) ); 224 connect( waitTimer, SIGNAL( timeout() ), this, SLOT( stopWait() ) );
225 clearer = new QTimer( this ); 225 clearer = new QTimer( this );
226 QObject::connect(clearer, SIGNAL(timeout()), SLOT(clearStatusBar())); 226 QObject::connect(clearer, SIGNAL(timeout()), SLOT(clearStatusBar()));
227 227
228 connect( qApp, SIGNAL(symbol()), this, SLOT(toggleSymbolInput()) ); 228 connect( qApp, SIGNAL(symbol()), this, SLOT(toggleSymbolInput()) );
229 connect( qApp, SIGNAL(numLockStateToggle()), this, SLOT(toggleNumLockState()) ); 229 connect( qApp, SIGNAL(numLockStateToggle()), this, SLOT(toggleNumLockState()) );
230 connect( qApp, SIGNAL(capsLockStateToggle()), this, SLOT(toggleCapsLockState()) ); 230 connect( qApp, SIGNAL(capsLockStateToggle()), this, SLOT(toggleCapsLockState()) );
231} 231}
232 232
233void TaskBar::setStatusMessage( const QString &text ) 233void TaskBar::setStatusMessage( const QString &text )
234{ 234{
235 if ( !text.isEmpty() ) { 235 if ( !text.isEmpty() ) {
236 label->setText( text ); 236 label->setText( text );
237 stack->raiseWidget( label ); 237 stack->raiseWidget( label );
238 if ( sysTray && ( label->fontMetrics().width( text ) > label->width() ) ) 238 if ( sysTray && ( label->fontMetrics().width( text ) > label->width() ) )
239 sysTray->hide(); 239 sysTray->hide();
240 clearer->start( 3000, TRUE ); 240 clearer->start( 3000, TRUE );
241 } else { 241 } else {
242 clearStatusBar(); 242 clearStatusBar();
243 } 243 }
244} 244}
245 245
246void TaskBar::clearStatusBar() 246void TaskBar::clearStatusBar()
247{ 247{
248 label->clear(); 248 label->clear();
249 stack->raiseWidget(runningAppBar); 249 stack->raiseWidget(runningAppBar);
250 if ( sysTray ) 250 if ( sysTray )
251 sysTray->show(); 251 sysTray->show();
252 // stack->raiseWidget( mru ); 252 // stack->raiseWidget( mru );
253} 253}
254 254
255void TaskBar::startWait() 255void TaskBar::startWait()
256{ 256{
257 waitIcon->setWaiting( true ); 257 waitIcon->setWaiting( true );
258 // a catchall stop after 10 seconds... 258 // a catchall stop after 10 seconds...
259 waitTimer->start( 10 * 1000, true ); 259 waitTimer->start( 10 * 1000, true );
260} 260}
261 261
262void TaskBar::stopWait(const QString&) 262void TaskBar::stopWait(const QString&)
263{ 263{
264 waitTimer->stop(); 264 waitTimer->stop();
265 waitIcon->setWaiting( false ); 265 waitIcon->setWaiting( false );
266} 266}
267 267
268void TaskBar::stopWait() 268void TaskBar::stopWait()
269{ 269{
270 waitTimer->stop(); 270 waitTimer->stop();
271 waitIcon->setWaiting( false ); 271 waitIcon->setWaiting( false );
272} 272}
273 273
274/* 274/*
275 * This resizeEvent will be captured by 275 * This resizeEvent will be captured by
276 * the ServerInterface and it'll layout 276 * the ServerInterface and it'll layout
277 * and calc rect. Now if we go from bigger 277 * and calc rect. Now if we go from bigger
278 * to smaller screen the SysTray is out of 278 * to smaller screen the SysTray is out of
279 * bounds and repaint() won't trigger an Event 279 * bounds and repaint() won't trigger an Event
280 */ 280 */
281void TaskBar::resizeEvent( QResizeEvent *e ) 281void TaskBar::resizeEvent( QResizeEvent *e )
282{ 282{
283 if ( sysTray ) 283 if ( sysTray )
284 sysTray->hide(); 284 sysTray->hide();
285 285
286 QHBox::resizeEvent( e ); 286 QHBox::resizeEvent( e );
287 287
288 if ( sysTray ) 288 if ( sysTray )
289 sysTray->show(); 289 sysTray->show();
290 290
291 owarn << "TaskBar::resize event" << oendl; 291 owarn << "TaskBar::resize event" << oendl;
292} 292}
293 293
294void TaskBar::styleChange( QStyle &s ) 294void TaskBar::styleChange( QStyle &s )
295{ 295{
296 QHBox::styleChange( s ); 296 QHBox::styleChange( s );
297 calcMaxWindowRect(); 297 calcMaxWindowRect();
298} 298}
299 299
300void TaskBar::calcMaxWindowRect() 300void TaskBar::calcMaxWindowRect()
301{ 301{
302 if ( resizeRunningApp ) 302 if ( resizeRunningApp )
303 { 303 {
304 #if defined(Q_WS_QWS) 304 #if defined(Q_WS_QWS)
305 QRect wr; 305 QRect wr;
306 int displayWidth = qApp->desktop()->width(); 306 int displayWidth = qApp->desktop()->width();
307 QRect ir = inputMethods->inputRect(); 307 QRect ir = inputMethods->inputRect();
308 if ( ir.isValid() ) { 308 if ( ir.isValid() ) {
309 wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 ); 309 wr.setCoords( 0, 0, displayWidth-1, ir.top()-1 );
310 } else { 310 } else {
311 wr.setCoords( 0, 0, displayWidth-1, y()-1 ); 311 wr.setCoords( 0, 0, displayWidth-1, y()-1 );
312 } 312 }
313 #if QT_VERSION < 0x030000 313 #if QT_VERSION < 0x030000
314 QWSServer::setMaxWindowRect( qt_screen->mapToDevice(wr,QSize(qt_screen->width(),qt_screen->height())) ); 314 QWSServer::setMaxWindowRect( qt_screen->mapToDevice(wr,QSize(qt_screen->width(),qt_screen->height())) );
315 #else 315 #else
316 QWSServer::setMaxWindowRect( wr ); 316 QWSServer::setMaxWindowRect( wr );
317 #endif 317 #endif
318 #endif 318 #endif
319 } 319 }
320} 320}
321 321
322void TaskBar::receive( const QCString &msg, const QByteArray &data ) 322void TaskBar::receive( const QCString &msg, const QByteArray &data )
323{ 323{
324 QDataStream stream( data, IO_ReadOnly ); 324 QDataStream stream( data, IO_ReadOnly );
325 if ( msg == "message(QString)" ) { 325 if ( msg == "message(QString)" ) {
326 QString text; 326 QString text;
327 stream >> text; 327 stream >> text;
328 setStatusMessage( text ); 328 setStatusMessage( text );
329 } else if ( msg == "hideInputMethod()" ) { 329 } else if ( msg == "hideInputMethod()" ) {
330 inputMethods->hideInputMethod(); 330 inputMethods->hideInputMethod();
331 } else if ( msg == "showInputMethod()" ) { 331 } else if ( msg == "showInputMethod()" ) {
332 inputMethods->showInputMethod(); 332 inputMethods->showInputMethod();
333 } else if ( msg == "showInputMethod(QString)" ) { 333 } else if ( msg == "showInputMethod(QString)" ) {
334 QString name; 334 QString name;
335 stream >> name; 335 stream >> name;
336 inputMethods->showInputMethod(name); 336 inputMethods->showInputMethod(name);
337 } else if ( msg == "reloadInputMethods()" ) { 337 } else if ( msg == "reloadInputMethods()" ) {
338 inputMethods->loadInputMethods(); 338 inputMethods->loadInputMethods();
339 } else if ( msg == "reloadApplets()" ) { 339 } else if ( msg == "reloadApplets()" ) {
340 sysTray->clearApplets(); 340 sysTray->clearApplets();
341 sm->createMenu(); 341 sm->createMenu();
342 sysTray->addApplets(); 342 sysTray->addApplets();
343 }else if ( msg == "toggleMenu()" ) { 343 }else if ( msg == "toggleMenu()" ) {
344 if ( sm-> launchMenu-> isVisible() ) 344 if ( sm-> launchMenu-> isVisible() )
345 sm-> launch(); 345 sm-> launch();
346 else 346 else
347 QCopEnvelope e( "QPE/System", "toggleApplicationMenu()" ); 347 QCopEnvelope e( "QPE/System", "toggleApplicationMenu()" );
348 }else if ( msg == "toggleStartMenu()" ) 348 }else if ( msg == "toggleStartMenu()" )
349 sm->launch(); 349 sm->launch();
350} 350}
351 351
352void TaskBar::setApplicationState( const QString &name, ServerInterface::ApplicationState state ) 352void TaskBar::setApplicationState( const QString &name, ServerInterface::ApplicationState state )
353{ 353{
354 if ( state == ServerInterface::Launching ) 354 if ( state == ServerInterface::Launching )
355 runningAppBar->applicationLaunched( name ); 355 runningAppBar->applicationLaunched( name );
356 else if ( state == ServerInterface::Terminated ) 356 else if ( state == ServerInterface::Terminated )
357 runningAppBar->applicationTerminated( name ); 357 runningAppBar->applicationTerminated( name );
358} 358}
359 359
360void TaskBar::toggleNumLockState() 360void TaskBar::toggleNumLockState()
361{ 361{
362 if ( lockState ) lockState->toggleNumLockState(); 362 if ( lockState ) lockState->toggleNumLockState();
363} 363}
364 364
365void TaskBar::toggleCapsLockState() 365void TaskBar::toggleCapsLockState()
366{ 366{
367 if ( lockState ) lockState->toggleCapsLockState(); 367 if ( lockState ) lockState->toggleCapsLockState();
368} 368}
369 369
370void TaskBar::toggleSymbolInput() 370void TaskBar::toggleSymbolInput()
371{ 371{
372 QString unicodeInput = qApp->translate( "InputMethods", "Unicode" ); 372 QString unicodeInput = qApp->translate( "InputMethods", "Unicode" );
373 if ( inputMethods->currentShown() == unicodeInput ) { 373 if ( inputMethods->currentShown() == unicodeInput ) {
374 inputMethods->hideInputMethod(); 374 inputMethods->hideInputMethod();
375 } else { 375 } else {
376 inputMethods->showInputMethod( unicodeInput ); 376 inputMethods->showInputMethod( unicodeInput );
377 } 377 }
378} 378}
379 379
380#include "taskbar.moc" 380#include "taskbar.moc"