-rw-r--r-- | config.in | 1 | ||||
-rw-r--r-- | core/launcher/server.cpp | 2 | ||||
-rw-r--r-- | core/symlinker/Makefile | 160 | ||||
-rw-r--r-- | core/symlinker/config.in | 5 | ||||
-rw-r--r-- | core/symlinker/main.cpp | 160 | ||||
-rw-r--r-- | core/symlinker/opie-symlinker.control | 9 | ||||
-rw-r--r-- | core/symlinker/symlinker.pro | 15 | ||||
-rw-r--r-- | packages | 1 |
8 files changed, 352 insertions, 1 deletions
@@ -1,254 +1,255 @@ | |||
1 | mainmenu "Opie Configuration" | 1 | mainmenu "Opie Configuration" |
2 | 2 | ||
3 | menu "Build Parameters" | 3 | menu "Build Parameters" |
4 | 4 | ||
5 | choice | 5 | choice |
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" | 19 | boolean "Sharp Zaurus" |
20 | 20 | ||
21 | config TARGET_IPAQ | 21 | config TARGET_IPAQ |
22 | boolean "iPAQ" | 22 | boolean "iPAQ" |
23 | 23 | ||
24 | config TARGET_RAMSES | 24 | config TARGET_RAMSES |
25 | boolean "Ramses" | 25 | boolean "Ramses" |
26 | 26 | ||
27 | config TARGET_SIMPAD | 27 | config TARGET_SIMPAD |
28 | boolean "SIMpad" | 28 | boolean "SIMpad" |
29 | 29 | ||
30 | config TARGET_YOPY | 30 | config TARGET_YOPY |
31 | boolean "Yopy 3500/3700" | 31 | boolean "Yopy 3500/3700" |
32 | 32 | ||
33 | endchoice | 33 | endchoice |
34 | 34 | ||
35 | config OPTIMIZE | 35 | config OPTIMIZE |
36 | boolean "Use optimizations" | 36 | boolean "Use optimizations" |
37 | default "y" if ! TARGET_X86 | 37 | default "y" if ! TARGET_X86 |
38 | 38 | ||
39 | config DEBUG | 39 | config DEBUG |
40 | boolean "Enable debug builds" | 40 | boolean "Enable debug builds" |
41 | default n | 41 | default n |
42 | config RELEASE | 42 | config RELEASE |
43 | bool | 43 | bool |
44 | default y | 44 | default y |
45 | depends !DEBUG | 45 | depends !DEBUG |
46 | 46 | ||
47 | config QUICK_LAUNCH | 47 | config QUICK_LAUNCH |
48 | boolean "Enable Quick Launch" | 48 | boolean "Enable Quick Launch" |
49 | default n | 49 | default n |
50 | 50 | ||
51 | config QUICKLAUNCH_PATH | 51 | config QUICKLAUNCH_PATH |
52 | string "Path to quicklauncher" | 52 | string "Path to quicklauncher" |
53 | default "./quicklauncher" if TARGET_X86 | 53 | default "./quicklauncher" if TARGET_X86 |
54 | default "/opt/QtPalmtop/bin/quicklauncher" if ! TARGET_X86 | 54 | default "/opt/QtPalmtop/bin/quicklauncher" if ! TARGET_X86 |
55 | 55 | ||
56 | config SPECFILE | 56 | config SPECFILE |
57 | string | 57 | string |
58 | default "qws/linux-generic-g++" if TARGET_X86 && (! X11) | 58 | default "qws/linux-generic-g++" if TARGET_X86 && (! X11) |
59 | default "linux-g++" if TARGET_X86 && X11 | 59 | default "linux-g++" if TARGET_X86 && X11 |
60 | default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11) | 60 | default "qws/linux-sharp-g++" if TARGET_SHARP && (! X11) |
61 | default "linux-g++" if TARGET_SHARP && X11 | 61 | default "linux-g++" if TARGET_SHARP && X11 |
62 | default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11) | 62 | default "qws/linux-ipaq-g++" if TARGET_IPAQ && (! X11) |
63 | default "linux-g++" if TARGET_IPAQ && X11 | 63 | default "linux-g++" if TARGET_IPAQ && X11 |
64 | default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11) | 64 | default "qws/linux-ramses-g++" if TARGET_RAMSES && (! X11) |
65 | default "linux-g++" if TARGET_RAMSES && X11 | 65 | default "linux-g++" if TARGET_RAMSES && X11 |
66 | default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11) | 66 | default "qws/linux-simpad-g++" if TARGET_SIMPAD && (! X11) |
67 | default "linux-g++" if TARGET_SIMPAD && X11 | 67 | default "linux-g++" if TARGET_SIMPAD && X11 |
68 | default "qws/linux-yopy-g++" if TARGET_YOPY && (! X11) | 68 | default "qws/linux-yopy-g++" if TARGET_YOPY && (! X11) |
69 | default "qws/macx-generic-g++" if TARGET_MACOSX && (! X11) | 69 | default "qws/macx-generic-g++" if TARGET_MACOSX && (! X11) |
70 | 70 | ||
71 | config CUSTOMFILE | 71 | config CUSTOMFILE |
72 | string | 72 | string |
73 | default "custom-ipaq.h" if TARGET_IPAQ | 73 | default "custom-ipaq.h" if TARGET_IPAQ |
74 | default "custom-sharp.h" if TARGET_SHARP | 74 | default "custom-sharp.h" if TARGET_SHARP |
75 | default "custom-ramses.h" if TARGET_RAMSES | 75 | default "custom-ramses.h" if TARGET_RAMSES |
76 | default "custom-ipaq.h" if TARGET_SIMPAD | 76 | default "custom-ipaq.h" if TARGET_SIMPAD |
77 | default "custom-yopy.h" if TARGET_YOPY | 77 | default "custom-yopy.h" if TARGET_YOPY |
78 | 78 | ||
79 | config OPTIMIZATIONS | 79 | config OPTIMIZATIONS |
80 | string "Optimization flags" | 80 | string "Optimization flags" |
81 | depends OPTIMIZE | 81 | depends OPTIMIZE |
82 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ | 82 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_IPAQ |
83 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_YOPY | 83 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_YOPY |
84 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP | 84 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SHARP |
85 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES | 85 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_RAMSES |
86 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD | 86 | default "-march=armv4 -mtune=strongarm1100 -mapcs-32 -fexpensive-optimizations -fomit-frame-pointer -O2" if TARGET_SIMPAD |
87 | 87 | ||
88 | config EXPERIMENTAL | 88 | config EXPERIMENTAL |
89 | bool "Prompt for development and/or incomplete items" | 89 | bool "Prompt for development and/or incomplete items" |
90 | default y | 90 | default y |
91 | 91 | ||
92 | endmenu | 92 | endmenu |
93 | 93 | ||
94 | menu "Configuration" | 94 | menu "Configuration" |
95 | config OPIE_NO_OVERRIDE_QT | 95 | config OPIE_NO_OVERRIDE_QT |
96 | boolean "Build Opie against an unpatched version of Qt" | 96 | boolean "Build Opie against an unpatched version of Qt" |
97 | default n | 97 | default n |
98 | 98 | ||
99 | config OPIE_NO_BUILTIN_SHUTDOWN | 99 | config OPIE_NO_BUILTIN_SHUTDOWN |
100 | boolean "Disable the built in shutdown application" | 100 | boolean "Disable the built in shutdown application" |
101 | default n | 101 | default n |
102 | 102 | ||
103 | config OPIE_NO_BUILTIN_CALIBRATE | 103 | config OPIE_NO_BUILTIN_CALIBRATE |
104 | boolean "Disable the built in calibrate application" | 104 | boolean "Disable the built in calibrate application" |
105 | default y if TARGET_YOPY | 105 | default y if TARGET_YOPY |
106 | default n | 106 | default n |
107 | 107 | ||
108 | config OPIE_SOUND_FRAGMENT_SHIFT | 108 | config OPIE_SOUND_FRAGMENT_SHIFT |
109 | string "The sound fragment used in Opie Player I" | 109 | string "The sound fragment used in Opie Player I" |
110 | default "14" if TARGET_IPAQ | 110 | default "14" if TARGET_IPAQ |
111 | default "16" if (!TARGET_IPAQ) | 111 | default "16" if (!TARGET_IPAQ) |
112 | 112 | ||
113 | config USE_REALTIME_AUDIO_THREAD | 113 | config USE_REALTIME_AUDIO_THREAD |
114 | boolean "Use a realtime thread in Opie Player I" | 114 | boolean "Use a realtime thread in Opie Player I" |
115 | default y if TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP | 115 | default y if TARGET_IPAQ || TARGET_SIMPAD || TARGET_RAMSES || TARGET_SHARP |
116 | default n | 116 | default n |
117 | 117 | ||
118 | config QT_QWS_ALLOW_OVERCLOCK | 118 | config QT_QWS_ALLOW_OVERCLOCK |
119 | boolean "Allow the user to overclock the device" | 119 | boolean "Allow the user to overclock the device" |
120 | depends TARGET_RAMSES | 120 | depends TARGET_RAMSES |
121 | default n | 121 | default n |
122 | 122 | ||
123 | config OPIE_HIGH_RES_SMALL_PHY | 123 | config OPIE_HIGH_RES_SMALL_PHY |
124 | boolean "Resolution is bigger than physical screen" | 124 | boolean "Resolution is bigger than physical screen" |
125 | default y if TARGET_C700 | 125 | default y if TARGET_C700 |
126 | default n | 126 | default n |
127 | 127 | ||
128 | config OPIE_NEW_ALLOC | 128 | config OPIE_NEW_ALLOC |
129 | boolean "Use malloc and free for the implementation" | 129 | boolean "Use malloc and free for the implementation" |
130 | default y if TARGET_RAMSES || TARGET_IPAQ || TARGET_SIMPAD || TARGET_SHARP | 130 | default y if TARGET_RAMSES || TARGET_IPAQ || TARGET_SIMPAD || TARGET_SHARP |
131 | default n | 131 | default n |
132 | 132 | ||
133 | config OPIE_NO_SOUND_PCM_READ_BITS | 133 | config OPIE_NO_SOUND_PCM_READ_BITS |
134 | boolean "There is not a pcm_read_bits io control" | 134 | boolean "There is not a pcm_read_bits io control" |
135 | default y if TARGET_SHARP | 135 | default y if TARGET_SHARP |
136 | default n | 136 | default n |
137 | 137 | ||
138 | config OPIE_WE_VERSION | 138 | config OPIE_WE_VERSION |
139 | string "The wireless extension (WE) version to build against" | 139 | string "The wireless extension (WE) version to build against" |
140 | default "15" if ! TARGET_X86 | 140 | default "15" if ! TARGET_X86 |
141 | default "16" if TAGET_X86 | 141 | default "16" if TAGET_X86 |
142 | 142 | ||
143 | endmenu | 143 | endmenu |
144 | 144 | ||
145 | menu "Base" | 145 | menu "Base" |
146 | choice | 146 | choice |
147 | prompt "Qpe Library Selection" | 147 | prompt "Qpe Library Selection" |
148 | default LIBQPE | 148 | default LIBQPE |
149 | source library/config.in | 149 | source library/config.in |
150 | source x11/config.in | 150 | source x11/config.in |
151 | endchoice | 151 | endchoice |
152 | source libopie/config.in | 152 | source libopie/config.in |
153 | source core/opie-login/config.in | 153 | source core/opie-login/config.in |
154 | source core/opiealarm/config.in | 154 | source core/opiealarm/config.in |
155 | source core/tools/quicklauncher/config.in | 155 | source core/tools/quicklauncher/config.in |
156 | source core/launcher/config.in | 156 | source core/launcher/config.in |
157 | source core/qws/config.in | 157 | source core/qws/config.in |
158 | source core/symlinker/config.in | ||
158 | endmenu | 159 | endmenu |
159 | 160 | ||
160 | comment "" | 161 | comment "" |
161 | 162 | ||
162 | menu "Applets" | 163 | menu "Applets" |
163 | source core/applets/config.in | 164 | source core/applets/config.in |
164 | source noncore/applets/config.in | 165 | source noncore/applets/config.in |
165 | endmenu | 166 | endmenu |
166 | 167 | ||
167 | menu "Apps" | 168 | menu "Apps" |
168 | source core/apps/config.in | 169 | source core/apps/config.in |
169 | source noncore/apps/config.in | 170 | source noncore/apps/config.in |
170 | endmenu | 171 | endmenu |
171 | 172 | ||
172 | menu "Communications and Networking" | 173 | menu "Communications and Networking" |
173 | source noncore/comm/config.in | 174 | source noncore/comm/config.in |
174 | source noncore/net/config.in | 175 | source noncore/net/config.in |
175 | endmenu | 176 | endmenu |
176 | 177 | ||
177 | menu "Games" | 178 | menu "Games" |
178 | source noncore/games/config.in | 179 | source noncore/games/config.in |
179 | endmenu | 180 | endmenu |
180 | 181 | ||
181 | menu "Graphics and Multimedia" | 182 | menu "Graphics and Multimedia" |
182 | source freetype/config.in | 183 | source freetype/config.in |
183 | source noncore/graphics/config.in | 184 | source noncore/graphics/config.in |
184 | source core/multimedia/config.in | 185 | source core/multimedia/config.in |
185 | source noncore/multimedia/config.in | 186 | source noncore/multimedia/config.in |
186 | endmenu | 187 | endmenu |
187 | 188 | ||
188 | menu "Input methods" | 189 | menu "Input methods" |
189 | source inputmethods/config.in | 190 | source inputmethods/config.in |
190 | endmenu | 191 | endmenu |
191 | 192 | ||
192 | menu "Pim" | 193 | menu "Pim" |
193 | source core/pim/config.in | 194 | source core/pim/config.in |
194 | menu "Today Plugins" | 195 | menu "Today Plugins" |
195 | source noncore/todayplugins/config.in | 196 | source noncore/todayplugins/config.in |
196 | source core/pim/today/plugins/config.in | 197 | source core/pim/today/plugins/config.in |
197 | endmenu | 198 | endmenu |
198 | endmenu | 199 | endmenu |
199 | 200 | ||
200 | menu "Settings" | 201 | menu "Settings" |
201 | source core/settings/config.in | 202 | source core/settings/config.in |
202 | source noncore/settings/config.in | 203 | source noncore/settings/config.in |
203 | endmenu | 204 | endmenu |
204 | 205 | ||
205 | menu "Theming" | 206 | menu "Theming" |
206 | source noncore/decorations/config.in | 207 | source noncore/decorations/config.in |
207 | source noncore/styles/config.in | 208 | source noncore/styles/config.in |
208 | endmenu | 209 | endmenu |
209 | 210 | ||
210 | menu "Tools" | 211 | menu "Tools" |
211 | source noncore/tools/config.in | 212 | source noncore/tools/config.in |
212 | endmenu | 213 | endmenu |
213 | 214 | ||
214 | menu "Development" | 215 | menu "Development" |
215 | source development/keyview/config.in | 216 | source development/keyview/config.in |
216 | #source development/debugviewer/config.in | 217 | #source development/debugviewer/config.in |
217 | endmenu | 218 | endmenu |
218 | 219 | ||
219 | menu "Examples" | 220 | menu "Examples" |
220 | config EXAMPLES | 221 | config EXAMPLES |
221 | boolean "Compile Example Application" | 222 | boolean "Compile Example Application" |
222 | source examples/config.in | 223 | source examples/config.in |
223 | endmenu | 224 | endmenu |
224 | 225 | ||
225 | comment "" | 226 | comment "" |
226 | 227 | ||
227 | menu "Unsupported / Unmaintained" | 228 | menu "Unsupported / Unmaintained" |
228 | source noncore/unsupported/config.in | 229 | source noncore/unsupported/config.in |
229 | endmenu | 230 | endmenu |
230 | 231 | ||
231 | comment "" | 232 | comment "" |
232 | depends on EXPERIMENTAL | 233 | depends on EXPERIMENTAL |
233 | menu "Experimental" | 234 | menu "Experimental" |
234 | depends on EXPERIMENTAL | 235 | depends on EXPERIMENTAL |
235 | source libopie2/config.in | 236 | source libopie2/config.in |
236 | source libqtaux/config.in | 237 | source libqtaux/config.in |
237 | source libslcompat/config.in | 238 | source libslcompat/config.in |
238 | 239 | ||
239 | config SQL_PIM_BACKEND | 240 | config SQL_PIM_BACKEND |
240 | bool "Add SQL-Backend support" | 241 | bool "Add SQL-Backend support" |
241 | default n | 242 | default n |
242 | help | 243 | help |
243 | This adds the SQL-Support, using SQLite. Which database is used | 244 | This adds the SQL-Support, using SQLite. Which database is used |
244 | by the backends is defined by the file "pimaccess.conf" in the | 245 | by the backends is defined by the file "pimaccess.conf" in the |
245 | directory "Settings". | 246 | directory "Settings". |
246 | There currently do exist to groups "[contact]" and "[todo]". You can | 247 | There currently do exist to groups "[contact]" and "[todo]". You can |
247 | select the used backend by the variable "usebackend=<type>", where | 248 | select the used backend by the variable "usebackend=<type>", where |
248 | <type> is "sql" or "xml". "xml" is the default ! | 249 | <type> is "sql" or "xml". "xml" is the default ! |
249 | Important: The SQLite-library "libsqlite.so" must be installed ! | 250 | Important: The SQLite-library "libsqlite.so" must be installed ! |
250 | depends ( LIBOPIE2DB ) | 251 | depends ( LIBOPIE2DB ) |
251 | 252 | ||
252 | comment "SQL-Support needs libopie2db!" | 253 | comment "SQL-Support needs libopie2db!" |
253 | depends !( LIBOPIE2DB ) | 254 | depends !( LIBOPIE2DB ) |
254 | endmenu | 255 | endmenu |
diff --git a/core/launcher/server.cpp b/core/launcher/server.cpp index 634082b..9a86a80 100644 --- a/core/launcher/server.cpp +++ b/core/launcher/server.cpp | |||
@@ -1,729 +1,729 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
15 | ** | 15 | ** |
16 | ** Contact info@trolltech.com if any conditions of this licensing are | 16 | ** Contact info@trolltech.com if any conditions of this licensing are |
17 | ** not clear to you. | 17 | ** not clear to you. |
18 | ** | 18 | ** |
19 | **********************************************************************/ | 19 | **********************************************************************/ |
20 | 20 | ||
21 | #include "server.h" | 21 | #include "server.h" |
22 | #include "serverapp.h" | 22 | #include "serverapp.h" |
23 | #include "startmenu.h" | 23 | #include "startmenu.h" |
24 | #include "launcher.h" | 24 | #include "launcher.h" |
25 | #include "transferserver.h" | 25 | #include "transferserver.h" |
26 | #include "qcopbridge.h" | 26 | #include "qcopbridge.h" |
27 | #include "irserver.h" | 27 | #include "irserver.h" |
28 | #include "packageslave.h" | 28 | #include "packageslave.h" |
29 | #include "calibrate.h" | 29 | #include "calibrate.h" |
30 | #include "qrsync.h" | 30 | #include "qrsync.h" |
31 | #include "syncdialog.h" | 31 | #include "syncdialog.h" |
32 | #include "shutdownimpl.h" | 32 | #include "shutdownimpl.h" |
33 | #include "applauncher.h" | 33 | #include "applauncher.h" |
34 | #if 0 | 34 | #if 0 |
35 | #include "suspendmonitor.h" | 35 | #include "suspendmonitor.h" |
36 | #endif | 36 | #endif |
37 | #include "documentlist.h" | 37 | #include "documentlist.h" |
38 | 38 | ||
39 | #include <qtopia/applnk.h> | 39 | #include <qtopia/applnk.h> |
40 | #include <qtopia/private/categories.h> | 40 | #include <qtopia/private/categories.h> |
41 | #include <qtopia/mimetype.h> | 41 | #include <qtopia/mimetype.h> |
42 | #include <qtopia/config.h> | 42 | #include <qtopia/config.h> |
43 | #include <qtopia/resource.h> | 43 | #include <qtopia/resource.h> |
44 | #include <qtopia/version.h> | 44 | #include <qtopia/version.h> |
45 | #include <qtopia/storage.h> | 45 | #include <qtopia/storage.h> |
46 | 46 | ||
47 | #include <qtopia/qcopenvelope_qws.h> | 47 | #include <qtopia/qcopenvelope_qws.h> |
48 | #include <qwindowsystem_qws.h> | 48 | #include <qwindowsystem_qws.h> |
49 | #include <qgfx_qws.h> | 49 | #include <qgfx_qws.h> |
50 | #include <qtopia/global.h> | 50 | #include <qtopia/global.h> |
51 | //#include <qtopia/custom.h> | 51 | //#include <qtopia/custom.h> |
52 | 52 | ||
53 | #include <opie2/odevicebutton.h> | 53 | #include <opie2/odevicebutton.h> |
54 | #include <opie2/odevice.h> | 54 | #include <opie2/odevice.h> |
55 | 55 | ||
56 | #include <unistd.h> | 56 | #include <unistd.h> |
57 | #include <qmainwindow.h> | 57 | #include <qmainwindow.h> |
58 | #include <qmessagebox.h> | 58 | #include <qmessagebox.h> |
59 | #include <qtimer.h> | 59 | #include <qtimer.h> |
60 | #include <qtextstream.h> | 60 | #include <qtextstream.h> |
61 | 61 | ||
62 | #include <stdlib.h> | 62 | #include <stdlib.h> |
63 | 63 | ||
64 | extern QRect qt_maxWindowRect; | 64 | extern QRect qt_maxWindowRect; |
65 | 65 | ||
66 | 66 | ||
67 | using namespace Opie::Core; | 67 | using namespace Opie::Core; |
68 | static QWidget *calibrate(bool) | 68 | static QWidget *calibrate(bool) |
69 | { | 69 | { |
70 | #ifdef Q_WS_QWS | 70 | #ifdef Q_WS_QWS |
71 | Calibrate *c = new Calibrate; | 71 | Calibrate *c = new Calibrate; |
72 | c->show(); | 72 | c->show(); |
73 | return c; | 73 | return c; |
74 | #else | 74 | #else |
75 | return 0; | 75 | return 0; |
76 | #endif | 76 | #endif |
77 | } | 77 | } |
78 | 78 | ||
79 | #define FACTORY(T) \ | 79 | #define FACTORY(T) \ |
80 | static QWidget *new##T( bool maximized ) { \ | 80 | static QWidget *new##T( bool maximized ) { \ |
81 | QWidget *w = new T( 0, 0, QWidget::WDestructiveClose | QWidget::WGroupLeader ); \ | 81 | QWidget *w = new T( 0, 0, QWidget::WDestructiveClose | QWidget::WGroupLeader ); \ |
82 | if ( maximized ) { \ | 82 | if ( maximized ) { \ |
83 | if ( qApp->desktop()->width() <= 350 ) { \ | 83 | if ( qApp->desktop()->width() <= 350 ) { \ |
84 | w->showMaximized(); \ | 84 | w->showMaximized(); \ |
85 | } else { \ | 85 | } else { \ |
86 | w->resize( QSize( 300, 300 ) ); \ | 86 | w->resize( QSize( 300, 300 ) ); \ |
87 | } \ | 87 | } \ |
88 | } \ | 88 | } \ |
89 | w->show(); \ | 89 | w->show(); \ |
90 | return w; \ | 90 | return w; \ |
91 | } | 91 | } |
92 | 92 | ||
93 | 93 | ||
94 | #ifdef SINGLE_APP | 94 | #ifdef SINGLE_APP |
95 | #define APP(a,b,c,d) FACTORY(b) | 95 | #define APP(a,b,c,d) FACTORY(b) |
96 | #include "apps.h" | 96 | #include "apps.h" |
97 | #undef APP | 97 | #undef APP |
98 | #endif // SINGLE_APP | 98 | #endif // SINGLE_APP |
99 | 99 | ||
100 | static Global::Command builtins[] = { | 100 | static Global::Command builtins[] = { |
101 | 101 | ||
102 | #ifdef SINGLE_APP | 102 | #ifdef SINGLE_APP |
103 | #define APP(a,b,c,d) { a, new##b, c, d }, | 103 | #define APP(a,b,c,d) { a, new##b, c, d }, |
104 | #include "apps.h" | 104 | #include "apps.h" |
105 | #undef APP | 105 | #undef APP |
106 | #endif | 106 | #endif |
107 | 107 | ||
108 | /* FIXME defines need to be defined*/ | 108 | /* FIXME defines need to be defined*/ |
109 | #if !defined(OPIE_NO_BUILTIN_CALIBRATE) | 109 | #if !defined(OPIE_NO_BUILTIN_CALIBRATE) |
110 | { "calibrate", calibrate, 1, 0 }, // No tr | 110 | { "calibrate", calibrate, 1, 0 }, // No tr |
111 | #endif | 111 | #endif |
112 | #if !defined(OPIE_NO_BUILTIN_SHUTDOWN) | 112 | #if !defined(OPIE_NO_BUILTIN_SHUTDOWN) |
113 | { "shutdown", Global::shutdown, 1, 0 }, // No tr | 113 | { "shutdown", Global::shutdown, 1, 0 }, // No tr |
114 | // { "run", run, 1, 0 }, // No tr | 114 | // { "run", run, 1, 0 }, // No tr |
115 | #endif | 115 | #endif |
116 | 116 | ||
117 | { 0, calibrate,0, 0 }, | 117 | { 0, calibrate,0, 0 }, |
118 | }; | 118 | }; |
119 | 119 | ||
120 | 120 | ||
121 | //--------------------------------------------------------------------------- | 121 | //--------------------------------------------------------------------------- |
122 | 122 | ||
123 | 123 | ||
124 | //=========================================================================== | 124 | //=========================================================================== |
125 | 125 | ||
126 | Server::Server() : | 126 | Server::Server() : |
127 | QWidget( 0, 0, WStyle_Tool | WStyle_Customize ), | 127 | QWidget( 0, 0, WStyle_Tool | WStyle_Customize ), |
128 | qcopBridge( 0 ), | 128 | qcopBridge( 0 ), |
129 | transferServer( 0 ), | 129 | transferServer( 0 ), |
130 | packageHandler( 0 ), | 130 | packageHandler( 0 ), |
131 | syncDialog( 0 ) | 131 | syncDialog( 0 ) |
132 | { | 132 | { |
133 | Global::setBuiltinCommands(builtins); | 133 | Global::setBuiltinCommands(builtins); |
134 | 134 | ||
135 | tid_xfer = 0; | 135 | tid_xfer = 0; |
136 | /* ### FIXME ### */ | 136 | /* ### FIXME ### */ |
137 | /* tid_today = startTimer(3600*2*1000);*/ | 137 | /* tid_today = startTimer(3600*2*1000);*/ |
138 | last_today_show = QDate::currentDate(); | 138 | last_today_show = QDate::currentDate(); |
139 | 139 | ||
140 | #if 0 | 140 | #if 0 |
141 | tsmMonitor = new TempScreenSaverMode(); | 141 | tsmMonitor = new TempScreenSaverMode(); |
142 | connect( tsmMonitor, SIGNAL(forceSuspend()), qApp, SIGNAL(power()) ); | 142 | connect( tsmMonitor, SIGNAL(forceSuspend()), qApp, SIGNAL(power()) ); |
143 | #endif | 143 | #endif |
144 | 144 | ||
145 | serverGui = new Launcher; | 145 | serverGui = new Launcher; |
146 | serverGui->createGUI(); | 146 | serverGui->createGUI(); |
147 | 147 | ||
148 | docList = new DocumentList( serverGui ); | 148 | docList = new DocumentList( serverGui ); |
149 | appLauncher = new AppLauncher(this); | 149 | appLauncher = new AppLauncher(this); |
150 | connect(appLauncher, SIGNAL(launched(int,const QString&)), this, SLOT(applicationLaunched(int,const QString&)) ); | 150 | connect(appLauncher, SIGNAL(launched(int,const QString&)), this, SLOT(applicationLaunched(int,const QString&)) ); |
151 | connect(appLauncher, SIGNAL(terminated(int,const QString&)), this, SLOT(applicationTerminated(int,const QString&)) ); | 151 | connect(appLauncher, SIGNAL(terminated(int,const QString&)), this, SLOT(applicationTerminated(int,const QString&)) ); |
152 | connect(appLauncher, SIGNAL(connected(const QString&)), this, SLOT(applicationConnected(const QString&)) ); | 152 | connect(appLauncher, SIGNAL(connected(const QString&)), this, SLOT(applicationConnected(const QString&)) ); |
153 | 153 | ||
154 | storage = new StorageInfo( this ); | 154 | storage = new StorageInfo( this ); |
155 | connect( storage, SIGNAL(disksChanged()), this, SLOT(storageChanged()) ); | 155 | connect( storage, SIGNAL(disksChanged()), this, SLOT(storageChanged()) ); |
156 | 156 | ||
157 | // start services | 157 | // start services |
158 | startTransferServer(); | 158 | startTransferServer(); |
159 | (void) new IrServer( this ); | 159 | (void) new IrServer( this ); |
160 | 160 | ||
161 | packageHandler = new PackageHandler( this ); | 161 | packageHandler = new PackageHandler( this ); |
162 | connect(qApp, SIGNAL(activate(const Opie::Core::ODeviceButton*,bool)), | 162 | connect(qApp, SIGNAL(activate(const Opie::Core::ODeviceButton*,bool)), |
163 | this,SLOT(activate(const Opie::Core::ODeviceButton*,bool))); | 163 | this,SLOT(activate(const Opie::Core::ODeviceButton*,bool))); |
164 | 164 | ||
165 | setGeometry( -10, -10, 9, 9 ); | 165 | setGeometry( -10, -10, 9, 9 ); |
166 | 166 | ||
167 | QCopChannel *channel = new QCopChannel("QPE/System", this); | 167 | QCopChannel *channel = new QCopChannel("QPE/System", this); |
168 | connect(channel, SIGNAL(received(const QCString&,const QByteArray&)), | 168 | connect(channel, SIGNAL(received(const QCString&,const QByteArray&)), |
169 | this, SLOT(systemMsg(const QCString&,const QByteArray&)) ); | 169 | this, SLOT(systemMsg(const QCString&,const QByteArray&)) ); |
170 | 170 | ||
171 | QCopChannel *tbChannel = new QCopChannel( "QPE/TaskBar", this ); | 171 | QCopChannel *tbChannel = new QCopChannel( "QPE/TaskBar", this ); |
172 | connect( tbChannel, SIGNAL(received(const QCString&,const QByteArray&)), | 172 | connect( tbChannel, SIGNAL(received(const QCString&,const QByteArray&)), |
173 | this, SLOT(receiveTaskBar(const QCString&,const QByteArray&)) ); | 173 | this, SLOT(receiveTaskBar(const QCString&,const QByteArray&)) ); |
174 | 174 | ||
175 | connect( qApp, SIGNAL(prepareForRestart()), this, SLOT(terminateServers()) ); | 175 | connect( qApp, SIGNAL(prepareForRestart()), this, SLOT(terminateServers()) ); |
176 | connect( qApp, SIGNAL(timeChanged()), this, SLOT(pokeTimeMonitors()) ); | 176 | connect( qApp, SIGNAL(timeChanged()), this, SLOT(pokeTimeMonitors()) ); |
177 | 177 | ||
178 | preloadApps(); | 178 | preloadApps(); |
179 | } | 179 | } |
180 | 180 | ||
181 | void Server::show() | 181 | void Server::show() |
182 | { | 182 | { |
183 | ServerApplication::login(TRUE); | 183 | ServerApplication::login(TRUE); |
184 | QWidget::show(); | 184 | QWidget::show(); |
185 | } | 185 | } |
186 | 186 | ||
187 | Server::~Server() | 187 | Server::~Server() |
188 | { | 188 | { |
189 | serverGui->destroyGUI(); | 189 | serverGui->destroyGUI(); |
190 | delete docList; | 190 | delete docList; |
191 | delete qcopBridge; | 191 | delete qcopBridge; |
192 | delete transferServer; | 192 | delete transferServer; |
193 | delete serverGui; | 193 | delete serverGui; |
194 | #if 0 | 194 | #if 0 |
195 | delete tsmMonitor; | 195 | delete tsmMonitor; |
196 | #endif | 196 | #endif |
197 | } | 197 | } |
198 | 198 | ||
199 | static bool hasVisibleWindow(const QString& clientname, bool partial) | 199 | static bool hasVisibleWindow(const QString& clientname, bool partial) |
200 | { | 200 | { |
201 | #ifdef QWS | 201 | #ifdef QWS |
202 | const QList<QWSWindow> &list = qwsServer->clientWindows(); | 202 | const QList<QWSWindow> &list = qwsServer->clientWindows(); |
203 | QWSWindow* w; | 203 | QWSWindow* w; |
204 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { | 204 | for (QListIterator<QWSWindow> it(list); (w=it.current()); ++it) { |
205 | if ( w->client()->identity() == clientname ) { | 205 | if ( w->client()->identity() == clientname ) { |
206 | if ( partial && !w->isFullyObscured() ) | 206 | if ( partial && !w->isFullyObscured() ) |
207 | return TRUE; | 207 | return TRUE; |
208 | if ( !partial && !w->isFullyObscured() && !w->isPartiallyObscured() ) { | 208 | if ( !partial && !w->isFullyObscured() && !w->isPartiallyObscured() ) { |
209 | # if QT_VERSION < 0x030000 | 209 | # if QT_VERSION < 0x030000 |
210 | QRect mwr = qt_screen->mapToDevice(qt_maxWindowRect, | 210 | QRect mwr = qt_screen->mapToDevice(qt_maxWindowRect, |
211 | QSize(qt_screen->width(),qt_screen->height()) ); | 211 | QSize(qt_screen->width(),qt_screen->height()) ); |
212 | # else | 212 | # else |
213 | QRect mwr = qt_maxWindowRect; | 213 | QRect mwr = qt_maxWindowRect; |
214 | # endif | 214 | # endif |
215 | if ( mwr.contains(w->requested().boundingRect()) ) | 215 | if ( mwr.contains(w->requested().boundingRect()) ) |
216 | return TRUE; | 216 | return TRUE; |
217 | } | 217 | } |
218 | } | 218 | } |
219 | } | 219 | } |
220 | #endif | 220 | #endif |
221 | return FALSE; | 221 | return FALSE; |
222 | } | 222 | } |
223 | 223 | ||
224 | void Server::activate(const ODeviceButton* button, bool held) | 224 | void Server::activate(const ODeviceButton* button, bool held) |
225 | { | 225 | { |
226 | Global::terminateBuiltin("calibrate"); // No tr | 226 | Global::terminateBuiltin("calibrate"); // No tr |
227 | OQCopMessage om; | 227 | OQCopMessage om; |
228 | if ( held ) { | 228 | if ( held ) { |
229 | om = button->heldAction(); | 229 | om = button->heldAction(); |
230 | } else { | 230 | } else { |
231 | om = button->pressedAction(); | 231 | om = button->pressedAction(); |
232 | } | 232 | } |
233 | 233 | ||
234 | if ( om.channel() != "ignore" ) | 234 | if ( om.channel() != "ignore" ) |
235 | om.send(); | 235 | om.send(); |
236 | 236 | ||
237 | // A button with no action defined, will return a null ServiceRequest. Don't attempt | 237 | // A button with no action defined, will return a null ServiceRequest. Don't attempt |
238 | // to send/do anything with this as it will crash | 238 | // to send/do anything with this as it will crash |
239 | /* ### FIXME */ | 239 | /* ### FIXME */ |
240 | #if 0 | 240 | #if 0 |
241 | if ( !sr.isNull() ) { | 241 | if ( !sr.isNull() ) { |
242 | QString app = sr.app(); | 242 | QString app = sr.app(); |
243 | bool vis = hasVisibleWindow(app, app != "qpe"); | 243 | bool vis = hasVisibleWindow(app, app != "qpe"); |
244 | if ( sr.message() == "raise()" && vis ) { | 244 | if ( sr.message() == "raise()" && vis ) { |
245 | sr.setMessage("nextView()"); | 245 | sr.setMessage("nextView()"); |
246 | } else { | 246 | } else { |
247 | // "back door" | 247 | // "back door" |
248 | sr << (int)vis; | 248 | sr << (int)vis; |
249 | } | 249 | } |
250 | 250 | ||
251 | sr.send(); | 251 | sr.send(); |
252 | } | 252 | } |
253 | #endif | 253 | #endif |
254 | } | 254 | } |
255 | 255 | ||
256 | 256 | ||
257 | #ifdef Q_WS_QWS | 257 | #ifdef Q_WS_QWS |
258 | 258 | ||
259 | 259 | ||
260 | typedef struct KeyOverride { | 260 | typedef struct KeyOverride { |
261 | ushort scan_code; | 261 | ushort scan_code; |
262 | QWSServer::KeyMap map; | 262 | QWSServer::KeyMap map; |
263 | }; | 263 | }; |
264 | 264 | ||
265 | 265 | ||
266 | static const KeyOverride jp109keys[] = { | 266 | static const KeyOverride jp109keys[] = { |
267 | { 0x03, { Qt::Key_2, '2' , 0x22 , 0xffff } }, | 267 | { 0x03, { Qt::Key_2, '2' , 0x22 , 0xffff } }, |
268 | { 0x07, { Qt::Key_6, '6' , '&' , 0xffff } }, | 268 | { 0x07, { Qt::Key_6, '6' , '&' , 0xffff } }, |
269 | { 0x08, { Qt::Key_7, '7' , '\'' , 0xffff } }, | 269 | { 0x08, { Qt::Key_7, '7' , '\'' , 0xffff } }, |
270 | { 0x09, { Qt::Key_8, '8' , '(' , 0xffff } }, | 270 | { 0x09, { Qt::Key_8, '8' , '(' , 0xffff } }, |
271 | { 0x0a, { Qt::Key_9, '9' , ')' , 0xffff } }, | 271 | { 0x0a, { Qt::Key_9, '9' , ')' , 0xffff } }, |
272 | { 0x0b, { Qt::Key_0, '0' , 0xffff , 0xffff } }, | 272 | { 0x0b, { Qt::Key_0, '0' , 0xffff , 0xffff } }, |
273 | { 0x0c, { Qt::Key_Minus, '-' , '=' , 0xffff } }, | 273 | { 0x0c, { Qt::Key_Minus, '-' , '=' , 0xffff } }, |
274 | { 0x0d, { Qt::Key_AsciiCircum,'^' , '~' , '^' - 64 } }, | 274 | { 0x0d, { Qt::Key_AsciiCircum,'^' , '~' , '^' - 64 } }, |
275 | { 0x1a, { Qt::Key_At, '@' , '`' , 0xffff } }, | 275 | { 0x1a, { Qt::Key_At, '@' , '`' , 0xffff } }, |
276 | { 0x1b, { Qt::Key_BraceLeft, '[' , '{' , '[' - 64 } }, | 276 | { 0x1b, { Qt::Key_BraceLeft, '[' , '{' , '[' - 64 } }, |
277 | { 0x27, { Qt::Key_Semicolon, ';' , '+' , 0xffff } }, | 277 | { 0x27, { Qt::Key_Semicolon, ';' , '+' , 0xffff } }, |
278 | { 0x28, { Qt::Key_Colon, ':' , '*' , 0xffff } }, | 278 | { 0x28, { Qt::Key_Colon, ':' , '*' , 0xffff } }, |
279 | { 0x29, { Qt::Key_Zenkaku_Hankaku, 0xffff , 0xffff , 0xffff } }, | 279 | { 0x29, { Qt::Key_Zenkaku_Hankaku, 0xffff , 0xffff , 0xffff } }, |
280 | { 0x2b, { Qt::Key_BraceRight, ']' , '}' , ']'-64 } }, | 280 | { 0x2b, { Qt::Key_BraceRight, ']' , '}' , ']'-64 } }, |
281 | { 0x70, { Qt::Key_Hiragana_Katakana, 0xffff , 0xffff , 0xffff } }, | 281 | { 0x70, { Qt::Key_Hiragana_Katakana, 0xffff , 0xffff , 0xffff } }, |
282 | { 0x73, { Qt::Key_Backslash, '\\' , '_' , 0xffff } }, | 282 | { 0x73, { Qt::Key_Backslash, '\\' , '_' , 0xffff } }, |
283 | { 0x79, { Qt::Key_Henkan, 0xffff , 0xffff , 0xffff } }, | 283 | { 0x79, { Qt::Key_Henkan, 0xffff , 0xffff , 0xffff } }, |
284 | { 0x7b, { Qt::Key_Muhenkan, 0xffff , 0xffff , 0xffff } }, | 284 | { 0x7b, { Qt::Key_Muhenkan, 0xffff , 0xffff , 0xffff } }, |
285 | { 0x7d, { Qt::Key_yen, 0x00a5 , '|' , 0xffff } }, | 285 | { 0x7d, { Qt::Key_yen, 0x00a5 , '|' , 0xffff } }, |
286 | { 0x00, { 0, 0xffff , 0xffff , 0xffff } } | 286 | { 0x00, { 0, 0xffff , 0xffff , 0xffff } } |
287 | }; | 287 | }; |
288 | 288 | ||
289 | bool Server::setKeyboardLayout( const QString &kb ) | 289 | bool Server::setKeyboardLayout( const QString &kb ) |
290 | { | 290 | { |
291 | //quick demo version that can be extended | 291 | //quick demo version that can be extended |
292 | 292 | ||
293 | QIntDict<QWSServer::KeyMap> *om = 0; | 293 | QIntDict<QWSServer::KeyMap> *om = 0; |
294 | if ( kb == "us101" ) { // No tr | 294 | if ( kb == "us101" ) { // No tr |
295 | om = 0; | 295 | om = 0; |
296 | } else if ( kb == "jp109" ) { | 296 | } else if ( kb == "jp109" ) { |
297 | om = new QIntDict<QWSServer::KeyMap>(37); | 297 | om = new QIntDict<QWSServer::KeyMap>(37); |
298 | const KeyOverride *k = jp109keys; | 298 | const KeyOverride *k = jp109keys; |
299 | while ( k->scan_code ) { | 299 | while ( k->scan_code ) { |
300 | om->insert( k->scan_code, &k->map ); | 300 | om->insert( k->scan_code, &k->map ); |
301 | k++; | 301 | k++; |
302 | } | 302 | } |
303 | } | 303 | } |
304 | QWSServer::setOverrideKeys( om ); | 304 | QWSServer::setOverrideKeys( om ); |
305 | 305 | ||
306 | return TRUE; | 306 | return TRUE; |
307 | } | 307 | } |
308 | 308 | ||
309 | #endif | 309 | #endif |
310 | 310 | ||
311 | void Server::systemMsg(const QCString &msg, const QByteArray &data) | 311 | void Server::systemMsg(const QCString &msg, const QByteArray &data) |
312 | { | 312 | { |
313 | QDataStream stream( data, IO_ReadOnly ); | 313 | QDataStream stream( data, IO_ReadOnly ); |
314 | 314 | ||
315 | if ( msg == "securityChanged()" ) { | 315 | if ( msg == "securityChanged()" ) { |
316 | if ( transferServer ) | 316 | if ( transferServer ) |
317 | transferServer->authorizeConnections(); | 317 | transferServer->authorizeConnections(); |
318 | if ( qcopBridge ) | 318 | if ( qcopBridge ) |
319 | qcopBridge->authorizeConnections(); | 319 | qcopBridge->authorizeConnections(); |
320 | } | 320 | } |
321 | /* ### FIXME support TempScreenSaverMode */ | 321 | /* ### FIXME support TempScreenSaverMode */ |
322 | #if 0 | 322 | #if 0 |
323 | else if ( msg == "setTempScreenSaverMode(int,int)" ) { | 323 | else if ( msg == "setTempScreenSaverMode(int,int)" ) { |
324 | int mode, pid; | 324 | int mode, pid; |
325 | stream >> mode >> pid; | 325 | stream >> mode >> pid; |
326 | tsmMonitor->setTempMode(mode, pid); | 326 | tsmMonitor->setTempMode(mode, pid); |
327 | } | 327 | } |
328 | #endif | 328 | #endif |
329 | else if ( msg == "linkChanged(QString)" ) { | 329 | else if ( msg == "linkChanged(QString)" ) { |
330 | QString link; | 330 | QString link; |
331 | stream >> link; | 331 | stream >> link; |
332 | qDebug( "desktop.cpp systemMsg -> linkchanged( %s )", link.latin1() ); | 332 | qDebug( "desktop.cpp systemMsg -> linkchanged( %s )", link.latin1() ); |
333 | docList->linkChanged(link); | 333 | docList->linkChanged(link); |
334 | } else if ( msg == "serviceChanged(QString)" ) { | 334 | } else if ( msg == "serviceChanged(QString)" ) { |
335 | MimeType::updateApplications(); | 335 | MimeType::updateApplications(); |
336 | } else if ( msg == "mkdir(QString)" ) { | 336 | } else if ( msg == "mkdir(QString)" ) { |
337 | QString dir; | 337 | QString dir; |
338 | stream >> dir; | 338 | stream >> dir; |
339 | if ( !dir.isEmpty() ) | 339 | if ( !dir.isEmpty() ) |
340 | mkdir( dir ); | 340 | mkdir( dir ); |
341 | } else if ( msg == "rdiffGenSig(QString,QString)" ) { | 341 | } else if ( msg == "rdiffGenSig(QString,QString)" ) { |
342 | QString baseFile, sigFile; | 342 | QString baseFile, sigFile; |
343 | stream >> baseFile >> sigFile; | 343 | stream >> baseFile >> sigFile; |
344 | QRsync::generateSignature( baseFile, sigFile ); | 344 | QRsync::generateSignature( baseFile, sigFile ); |
345 | } else if ( msg == "rdiffGenDiff(QString,QString,QString)" ) { | 345 | } else if ( msg == "rdiffGenDiff(QString,QString,QString)" ) { |
346 | QString baseFile, sigFile, deltaFile; | 346 | QString baseFile, sigFile, deltaFile; |
347 | stream >> baseFile >> sigFile >> deltaFile; | 347 | stream >> baseFile >> sigFile >> deltaFile; |
348 | QRsync::generateDiff( baseFile, sigFile, deltaFile ); | 348 | QRsync::generateDiff( baseFile, sigFile, deltaFile ); |
349 | } else if ( msg == "rdiffApplyPatch(QString,QString)" ) { | 349 | } else if ( msg == "rdiffApplyPatch(QString,QString)" ) { |
350 | QString baseFile, deltaFile; | 350 | QString baseFile, deltaFile; |
351 | stream >> baseFile >> deltaFile; | 351 | stream >> baseFile >> deltaFile; |
352 | if ( !QFile::exists( baseFile ) ) { | 352 | if ( !QFile::exists( baseFile ) ) { |
353 | QFile f( baseFile ); | 353 | QFile f( baseFile ); |
354 | f.open( IO_WriteOnly ); | 354 | f.open( IO_WriteOnly ); |
355 | f.close(); | 355 | f.close(); |
356 | } | 356 | } |
357 | QRsync::applyDiff( baseFile, deltaFile ); | 357 | QRsync::applyDiff( baseFile, deltaFile ); |
358 | #ifndef QT_NO_COP | 358 | #ifndef QT_NO_COP |
359 | QCopEnvelope e( "QPE/Desktop", "patchApplied(QString)" ); | 359 | QCopEnvelope e( "QPE/Desktop", "patchApplied(QString)" ); |
360 | e << baseFile; | 360 | e << baseFile; |
361 | #endif | 361 | #endif |
362 | } else if ( msg == "rdiffCleanup()" ) { | 362 | } else if ( msg == "rdiffCleanup()" ) { |
363 | mkdir( "/tmp/rdiff" ); | 363 | mkdir( "/tmp/rdiff" ); |
364 | QDir dir; | 364 | QDir dir; |
365 | dir.setPath( "/tmp/rdiff" ); | 365 | dir.setPath( "/tmp/rdiff" ); |
366 | QStringList entries = dir.entryList(); | 366 | QStringList entries = dir.entryList(); |
367 | for ( QStringList::Iterator it = entries.begin(); it != entries.end(); ++it ) | 367 | for ( QStringList::Iterator it = entries.begin(); it != entries.end(); ++it ) |
368 | dir.remove( *it ); | 368 | dir.remove( *it ); |
369 | } else if ( msg == "sendHandshakeInfo()" ) { | 369 | } else if ( msg == "sendHandshakeInfo()" ) { |
370 | QString home = getenv( "HOME" ); | 370 | QString home = getenv( "HOME" ); |
371 | #ifndef QT_NO_COP | 371 | #ifndef QT_NO_COP |
372 | QCopEnvelope e( "QPE/Desktop", "handshakeInfo(QString,bool)" ); | 372 | QCopEnvelope e( "QPE/Desktop", "handshakeInfo(QString,bool)" ); |
373 | e << home; | 373 | e << home; |
374 | int locked = (int) ServerApplication::screenLocked(); | 374 | int locked = (int) ServerApplication::screenLocked(); |
375 | e << locked; | 375 | e << locked; |
376 | #endif | 376 | #endif |
377 | 377 | ||
378 | } | 378 | } |
379 | /* | 379 | /* |
380 | * QtopiaDesktop relies on the major number | 380 | * QtopiaDesktop relies on the major number |
381 | * to start with 1. We're at 0.9 | 381 | * to start with 1. We're at 0.9 |
382 | * so wee need to fake at least 1.4 to be able | 382 | * so wee need to fake at least 1.4 to be able |
383 | * to sync with QtopiaDesktop1.6 | 383 | * to sync with QtopiaDesktop1.6 |
384 | */ | 384 | */ |
385 | else if ( msg == "sendVersionInfo()" ) { | 385 | else if ( msg == "sendVersionInfo()" ) { |
386 | QCopEnvelope e( "QPE/Desktop", "versionInfo(QString,QString)" ); | 386 | QCopEnvelope e( "QPE/Desktop", "versionInfo(QString,QString)" ); |
387 | /* ### FIXME Architecture ### */ | 387 | /* ### FIXME Architecture ### */ |
388 | e << QString::fromLatin1("1.7") << "Uncustomized Device"; | 388 | e << QString::fromLatin1("1.7") << "Uncustomized Device"; |
389 | } else if ( msg == "sendCardInfo()" ) { | 389 | } else if ( msg == "sendCardInfo()" ) { |
390 | #ifndef QT_NO_COP | 390 | #ifndef QT_NO_COP |
391 | QCopEnvelope e( "QPE/Desktop", "cardInfo(QString)" ); | 391 | QCopEnvelope e( "QPE/Desktop", "cardInfo(QString)" ); |
392 | #endif | 392 | #endif |
393 | storage->update(); | 393 | storage->update(); |
394 | const QList<FileSystem> &fs = storage->fileSystems(); | 394 | const QList<FileSystem> &fs = storage->fileSystems(); |
395 | QListIterator<FileSystem> it ( fs ); | 395 | QListIterator<FileSystem> it ( fs ); |
396 | QString s; | 396 | QString s; |
397 | QString homeDir = getenv("HOME"); | 397 | QString homeDir = getenv("HOME"); |
398 | QString homeFs, homeFsPath; | 398 | QString homeFs, homeFsPath; |
399 | for ( ; it.current(); ++it ) { | 399 | for ( ; it.current(); ++it ) { |
400 | int k4 = (*it)->blockSize()/256; | 400 | int k4 = (*it)->blockSize()/256; |
401 | if ( (*it)->isRemovable() ) { | 401 | if ( (*it)->isRemovable() ) { |
402 | s += (*it)->name() + "=" + (*it)->path() + "/Documents " // No tr | 402 | s += (*it)->name() + "=" + (*it)->path() + "/Documents " // No tr |
403 | + QString::number( (*it)->availBlocks() * k4/4 ) | 403 | + QString::number( (*it)->availBlocks() * k4/4 ) |
404 | + "K " + (*it)->options() + ";"; | 404 | + "K " + (*it)->options() + ";"; |
405 | } else if ( homeDir.contains( (*it)->path() ) && | 405 | } else if ( homeDir.contains( (*it)->path() ) && |
406 | (*it)->path().length() > homeFsPath.length() ) { | 406 | (*it)->path().length() > homeFsPath.length() ) { |
407 | homeFsPath = (*it)->path(); | 407 | homeFsPath = (*it)->path(); |
408 | homeFs = | 408 | homeFs = |
409 | (*it)->name() + "=" + homeDir + "/Documents " // No tr | 409 | (*it)->name() + "=" + homeDir + "/Documents " // No tr |
410 | + QString::number( (*it)->availBlocks() * k4/4 ) | 410 | + QString::number( (*it)->availBlocks() * k4/4 ) |
411 | + "K " + (*it)->options() + ";"; | 411 | + "K " + (*it)->options() + ";"; |
412 | } | 412 | } |
413 | } | 413 | } |
414 | if ( !homeFs.isEmpty() ) | 414 | if ( !homeFs.isEmpty() ) |
415 | s += homeFs; | 415 | s += homeFs; |
416 | 416 | ||
417 | #ifndef QT_NO_COP | 417 | #ifndef QT_NO_COP |
418 | e << s; | 418 | e << s; |
419 | #endif | 419 | #endif |
420 | } else if ( msg == "sendSyncDate(QString)" ) { | 420 | } else if ( msg == "sendSyncDate(QString)" ) { |
421 | QString app; | 421 | QString app; |
422 | stream >> app; | 422 | stream >> app; |
423 | Config cfg( "qpe" ); | 423 | Config cfg( "qpe" ); |
424 | cfg.setGroup("SyncDate"); | 424 | cfg.setGroup("SyncDate"); |
425 | #ifndef QT_NO_COP | 425 | #ifndef QT_NO_COP |
426 | QCopEnvelope e( "QPE/Desktop", "syncDate(QString,QString)" ); | 426 | QCopEnvelope e( "QPE/Desktop", "syncDate(QString,QString)" ); |
427 | e << app << cfg.readEntry( app ); | 427 | e << app << cfg.readEntry( app ); |
428 | #endif | 428 | #endif |
429 | //qDebug("QPE/System sendSyncDate for %s: response %s", app.latin1(), | 429 | //qDebug("QPE/System sendSyncDate for %s: response %s", app.latin1(), |
430 | //cfg.readEntry( app ).latin1() ); | 430 | //cfg.readEntry( app ).latin1() ); |
431 | } else if ( msg == "setSyncDate(QString,QString)" ) { | 431 | } else if ( msg == "setSyncDate(QString,QString)" ) { |
432 | QString app, date; | 432 | QString app, date; |
433 | stream >> app >> date; | 433 | stream >> app >> date; |
434 | Config cfg( "qpe" ); | 434 | Config cfg( "qpe" ); |
435 | cfg.setGroup("SyncDate"); | 435 | cfg.setGroup("SyncDate"); |
436 | cfg.writeEntry( app, date ); | 436 | cfg.writeEntry( app, date ); |
437 | //qDebug("setSyncDate(QString,QString) %s %s", app.latin1(), date.latin1()); | 437 | //qDebug("setSyncDate(QString,QString) %s %s", app.latin1(), date.latin1()); |
438 | } else if ( msg == "startSync(QString)" ) { | 438 | } else if ( msg == "startSync(QString)" ) { |
439 | QString what; | 439 | QString what; |
440 | stream >> what; | 440 | stream >> what; |
441 | delete syncDialog; | 441 | delete syncDialog; |
442 | syncDialog = new SyncDialog( this, what ); | 442 | syncDialog = new SyncDialog( this, what ); |
443 | syncDialog->show(); | 443 | syncDialog->show(); |
444 | connect( syncDialog, SIGNAL(cancel()), SLOT(cancelSync()) ); | 444 | connect( syncDialog, SIGNAL(cancel()), SLOT(cancelSync()) ); |
445 | } else if ( msg == "stopSync()") { | 445 | } else if ( msg == "stopSync()") { |
446 | delete syncDialog; | 446 | delete syncDialog; |
447 | syncDialog = 0; | 447 | syncDialog = 0; |
448 | } else if (msg == "restoreDone(QString)") { | 448 | } else if (msg == "restoreDone(QString)") { |
449 | docList->restoreDone(); | 449 | docList->restoreDone(); |
450 | } else if ( msg == "getAllDocLinks()" ) { | 450 | } else if ( msg == "getAllDocLinks()" ) { |
451 | docList->sendAllDocLinks(); | 451 | docList->sendAllDocLinks(); |
452 | } | 452 | } |
453 | #ifdef Q_WS_QWS | 453 | #ifdef Q_WS_QWS |
454 | else if ( msg == "setMouseProto(QString)" ) { | 454 | else if ( msg == "setMouseProto(QString)" ) { |
455 | QString mice; | 455 | QString mice; |
456 | stream >> mice; | 456 | stream >> mice; |
457 | setenv("QWS_MOUSE_PROTO",mice.latin1(),1); | 457 | setenv("QWS_MOUSE_PROTO",mice.latin1(),1); |
458 | qwsServer->openMouse(); | 458 | qwsServer->openMouse(); |
459 | } else if ( msg == "setKeyboard(QString)" ) { | 459 | } else if ( msg == "setKeyboard(QString)" ) { |
460 | QString kb; | 460 | QString kb; |
461 | stream >> kb; | 461 | stream >> kb; |
462 | setenv("QWS_KEYBOARD",kb.latin1(),1); | 462 | setenv("QWS_KEYBOARD",kb.latin1(),1); |
463 | qwsServer->openKeyboard(); | 463 | qwsServer->openKeyboard(); |
464 | 464 | ||
465 | } else if ( msg == "setKeyboardAutoRepeat(int,int)" ) { | 465 | } else if ( msg == "setKeyboardAutoRepeat(int,int)" ) { |
466 | int delay, period; | 466 | int delay, period; |
467 | stream >> delay >> period; | 467 | stream >> delay >> period; |
468 | qwsSetKeyboardAutoRepeat( delay, period ); | 468 | qwsSetKeyboardAutoRepeat( delay, period ); |
469 | Config cfg( "qpe" ); | 469 | Config cfg( "qpe" ); |
470 | cfg.setGroup("Keyboard"); | 470 | cfg.setGroup("Keyboard"); |
471 | cfg.writeEntry( "RepeatDelay", delay ); | 471 | cfg.writeEntry( "RepeatDelay", delay ); |
472 | cfg.writeEntry( "RepeatPeriod", period ); | 472 | cfg.writeEntry( "RepeatPeriod", period ); |
473 | } else if ( msg == "setKeyboardLayout(QString)" ) { | 473 | } else if ( msg == "setKeyboardLayout(QString)" ) { |
474 | QString kb; | 474 | QString kb; |
475 | stream >> kb; | 475 | stream >> kb; |
476 | setKeyboardLayout( kb ); | 476 | setKeyboardLayout( kb ); |
477 | Config cfg( "qpe" ); | 477 | Config cfg( "qpe" ); |
478 | cfg.setGroup("Keyboard"); | 478 | cfg.setGroup("Keyboard"); |
479 | cfg.writeEntry( "Layout", kb ); | 479 | cfg.writeEntry( "Layout", kb ); |
480 | } else if ( msg == "autoStart(QString)" ) { | 480 | } else if ( msg == "autoStart(QString)" ) { |
481 | QString appName; | 481 | QString appName; |
482 | stream >> appName; | 482 | stream >> appName; |
483 | Config cfg( "autostart" ); | 483 | Config cfg( "autostart" ); |
484 | cfg.setGroup( "AutoStart" ); | 484 | cfg.setGroup( "AutoStart" ); |
485 | if ( appName.compare("clear") == 0){ | 485 | if ( appName.compare("clear") == 0){ |
486 | cfg.writeEntry("Apps", ""); | 486 | cfg.writeEntry("Apps", ""); |
487 | } | 487 | } |
488 | } else if ( msg == "autoStart(QString,QString)" ) { | 488 | } else if ( msg == "autoStart(QString,QString)" ) { |
489 | QString modifier, appName; | 489 | QString modifier, appName; |
490 | stream >> modifier >> appName; | 490 | stream >> modifier >> appName; |
491 | Config cfg( "autostart" ); | 491 | Config cfg( "autostart" ); |
492 | cfg.setGroup( "AutoStart" ); | 492 | cfg.setGroup( "AutoStart" ); |
493 | if ( modifier.compare("add") == 0 ){ | 493 | if ( modifier.compare("add") == 0 ){ |
494 | // only add if appname is entered | 494 | // only add if appname is entered |
495 | if (!appName.isEmpty()) { | 495 | if (!appName.isEmpty()) { |
496 | cfg.writeEntry("Apps", appName); | 496 | cfg.writeEntry("Apps", appName); |
497 | } | 497 | } |
498 | } else if (modifier.compare("remove") == 0 ) { | 498 | } else if (modifier.compare("remove") == 0 ) { |
499 | // need to change for multiple entries | 499 | // need to change for multiple entries |
500 | // actually remove is right now simular to clear, but in future there | 500 | // actually remove is right now simular to clear, but in future there |
501 | // should be multiple apps in autostart possible. | 501 | // should be multiple apps in autostart possible. |
502 | QString checkName; | 502 | QString checkName; |
503 | checkName = cfg.readEntry("Apps", ""); | 503 | checkName = cfg.readEntry("Apps", ""); |
504 | if (checkName == appName) { | 504 | if (checkName == appName) { |
505 | cfg.writeEntry("Apps", ""); | 505 | cfg.writeEntry("Apps", ""); |
506 | } | 506 | } |
507 | } | 507 | } |
508 | // case the autostart feature should be delayed | 508 | // case the autostart feature should be delayed |
509 | } else if ( msg == "autoStart(QString,QString,QString)") { | 509 | } else if ( msg == "autoStart(QString,QString,QString)") { |
510 | QString modifier, appName, delay; | 510 | QString modifier, appName, delay; |
511 | stream >> modifier >> appName >> delay; | 511 | stream >> modifier >> appName >> delay; |
512 | Config cfg( "autostart" ); | 512 | Config cfg( "autostart" ); |
513 | 513 | ||
514 | cfg.setGroup( "AutoStart" ); | 514 | cfg.setGroup( "AutoStart" ); |
515 | if ( modifier.compare("add") == 0 ){ | 515 | if ( modifier.compare("add") == 0 ){ |
516 | // only add it appname is entered | 516 | // only add it appname is entered |
517 | if (!appName.isEmpty()) { | 517 | if (!appName.isEmpty()) { |
518 | cfg.writeEntry("Apps", appName); | 518 | cfg.writeEntry("Apps", appName); |
519 | cfg.writeEntry("Delay", delay); | 519 | cfg.writeEntry("Delay", delay); |
520 | } | 520 | } |
521 | } else { | 521 | } else { |
522 | } | 522 | } |
523 | } | 523 | } |
524 | #endif | 524 | #endif |
525 | } | 525 | } |
526 | 526 | ||
527 | void Server::receiveTaskBar(const QCString &msg, const QByteArray &data) | 527 | void Server::receiveTaskBar(const QCString &msg, const QByteArray &data) |
528 | { | 528 | { |
529 | QDataStream stream( data, IO_ReadOnly ); | 529 | QDataStream stream( data, IO_ReadOnly ); |
530 | 530 | ||
531 | if ( msg == "reloadApps()" ) { | 531 | if ( msg == "reloadApps()" ) { |
532 | docList->reloadAppLnks(); | 532 | docList->reloadAppLnks(); |
533 | } else if ( msg == "soundAlarm()" ) { | 533 | } else if ( msg == "soundAlarm()" ) { |
534 | ServerApplication::soundAlarm(); | 534 | ServerApplication::soundAlarm(); |
535 | } | 535 | } |
536 | else if ( msg == "setLed(int,bool)" ) { | 536 | else if ( msg == "setLed(int,bool)" ) { |
537 | int led, status; | 537 | int led, status; |
538 | stream >> led >> status; | 538 | stream >> led >> status; |
539 | 539 | ||
540 | QValueList <OLed> ll = ODevice::inst ( )-> ledList ( ); | 540 | QValueList <OLed> ll = ODevice::inst ( )-> ledList ( ); |
541 | if ( ll. count ( )){ | 541 | if ( ll. count ( )){ |
542 | OLed l = ll. contains ( Led_Mail ) ? Led_Mail : ll [0]; | 542 | OLed l = ll. contains ( Led_Mail ) ? Led_Mail : ll [0]; |
543 | bool canblink = ODevice::inst ( )-> ledStateList ( l ). contains ( Led_BlinkSlow ); | 543 | bool canblink = ODevice::inst ( )-> ledStateList ( l ). contains ( Led_BlinkSlow ); |
544 | 544 | ||
545 | ODevice::inst ( )-> setLedState ( l, status ? ( canblink ? Led_BlinkSlow : Led_On ) : Led_Off ); | 545 | ODevice::inst ( )-> setLedState ( l, status ? ( canblink ? Led_BlinkSlow : Led_On ) : Led_Off ); |
546 | } | 546 | } |
547 | } | 547 | } |
548 | } | 548 | } |
549 | 549 | ||
550 | void Server::cancelSync() | 550 | void Server::cancelSync() |
551 | { | 551 | { |
552 | #ifndef QT_NO_COP | 552 | #ifndef QT_NO_COP |
553 | QCopEnvelope e( "QPE/Desktop", "cancelSync()" ); | 553 | QCopEnvelope e( "QPE/Desktop", "cancelSync()" ); |
554 | #endif | 554 | #endif |
555 | delete syncDialog; | 555 | delete syncDialog; |
556 | syncDialog = 0; | 556 | syncDialog = 0; |
557 | } | 557 | } |
558 | 558 | ||
559 | bool Server::mkdir(const QString &localPath) | 559 | bool Server::mkdir(const QString &localPath) |
560 | { | 560 | { |
561 | QDir fullDir(localPath); | 561 | QDir fullDir(localPath); |
562 | if (fullDir.exists()) | 562 | if (fullDir.exists()) |
563 | return true; | 563 | return true; |
564 | 564 | ||
565 | // at this point the directory doesn't exist | 565 | // at this point the directory doesn't exist |
566 | // go through the directory tree and start creating the direcotories | 566 | // go through the directory tree and start creating the direcotories |
567 | // that don't exist; if we can't create the directories, return false | 567 | // that don't exist; if we can't create the directories, return false |
568 | 568 | ||
569 | QString dirSeps = "/"; | 569 | QString dirSeps = "/"; |
570 | int dirIndex = localPath.find(dirSeps); | 570 | int dirIndex = localPath.find(dirSeps); |
571 | QString checkedPath; | 571 | QString checkedPath; |
572 | 572 | ||
573 | // didn't find any seps; weird, use the cur dir instead | 573 | // didn't find any seps; weird, use the cur dir instead |
574 | if (dirIndex == -1) { | 574 | if (dirIndex == -1) { |
575 | //qDebug("No seperators found in path %s", localPath.latin1()); | 575 | //qDebug("No seperators found in path %s", localPath.latin1()); |
576 | checkedPath = QDir::currentDirPath(); | 576 | checkedPath = QDir::currentDirPath(); |
577 | } | 577 | } |
578 | 578 | ||
579 | while (checkedPath != localPath) { | 579 | while (checkedPath != localPath) { |
580 | // no more seperators found, use the local path | 580 | // no more seperators found, use the local path |
581 | if (dirIndex == -1) | 581 | if (dirIndex == -1) |
582 | checkedPath = localPath; | 582 | checkedPath = localPath; |
583 | else { | 583 | else { |
584 | // the next directory to check | 584 | // the next directory to check |
585 | checkedPath = localPath.left(dirIndex) + "/"; | 585 | checkedPath = localPath.left(dirIndex) + "/"; |
586 | // advance the iterator; the next dir seperator | 586 | // advance the iterator; the next dir seperator |
587 | dirIndex = localPath.find(dirSeps, dirIndex+1); | 587 | dirIndex = localPath.find(dirSeps, dirIndex+1); |
588 | } | 588 | } |
589 | 589 | ||
590 | QDir checkDir(checkedPath); | 590 | QDir checkDir(checkedPath); |
591 | if (!checkDir.exists()) { | 591 | if (!checkDir.exists()) { |
592 | //qDebug("mkdir making dir %s", checkedPath.latin1()); | 592 | //qDebug("mkdir making dir %s", checkedPath.latin1()); |
593 | 593 | ||
594 | if (!checkDir.mkdir(checkedPath)) { | 594 | if (!checkDir.mkdir(checkedPath)) { |
595 | qDebug("Unable to make directory %s", checkedPath.latin1()); | 595 | qDebug("Unable to make directory %s", checkedPath.latin1()); |
596 | return FALSE; | 596 | return FALSE; |
597 | } | 597 | } |
598 | } | 598 | } |
599 | 599 | ||
600 | } | 600 | } |
601 | return TRUE; | 601 | return TRUE; |
602 | } | 602 | } |
603 | 603 | ||
604 | void Server::styleChange( QStyle &s ) | 604 | void Server::styleChange( QStyle &s ) |
605 | { | 605 | { |
606 | QWidget::styleChange( s ); | 606 | QWidget::styleChange( s ); |
607 | } | 607 | } |
608 | 608 | ||
609 | void Server::startTransferServer() | 609 | void Server::startTransferServer() |
610 | { | 610 | { |
611 | if ( !qcopBridge ) { | 611 | if ( !qcopBridge ) { |
612 | // start qcop bridge server | 612 | // start qcop bridge server |
613 | qcopBridge = new QCopBridge( 4243 ); | 613 | qcopBridge = new QCopBridge( 4243 ); |
614 | if ( qcopBridge->ok() ) { | 614 | if ( qcopBridge->ok() ) { |
615 | // ... OK | 615 | // ... OK |
616 | connect( qcopBridge, SIGNAL(connectionClosed(const QHostAddress&)), | 616 | connect( qcopBridge, SIGNAL(connectionClosed(const QHostAddress&)), |
617 | this, SLOT(syncConnectionClosed(const QHostAddress&)) ); | 617 | this, SLOT(syncConnectionClosed(const QHostAddress&)) ); |
618 | } else { | 618 | } else { |
619 | delete qcopBridge; | 619 | delete qcopBridge; |
620 | qcopBridge = 0; | 620 | qcopBridge = 0; |
621 | } | 621 | } |
622 | } | 622 | } |
623 | if ( !transferServer ) { | 623 | if ( !transferServer ) { |
624 | // start transfer server | 624 | // start transfer server |
625 | transferServer = new TransferServer( 4242 ); | 625 | transferServer = new TransferServer( 4242 ); |
626 | if ( transferServer->ok() ) { | 626 | if ( transferServer->ok() ) { |
627 | // ... OK | 627 | // ... OK |
628 | } else { | 628 | } else { |
629 | delete transferServer; | 629 | delete transferServer; |
630 | transferServer = 0; | 630 | transferServer = 0; |
631 | } | 631 | } |
632 | } | 632 | } |
633 | if ( !transferServer || !qcopBridge ) | 633 | if ( !transferServer || !qcopBridge ) |
634 | tid_xfer = startTimer( 2000 ); | 634 | tid_xfer = startTimer( 2000 ); |
635 | } | 635 | } |
636 | 636 | ||
637 | void Server::timerEvent( QTimerEvent *e ) | 637 | void Server::timerEvent( QTimerEvent *e ) |
638 | { | 638 | { |
639 | if ( e->timerId() == tid_xfer ) { | 639 | if ( e->timerId() == tid_xfer ) { |
640 | killTimer( tid_xfer ); | 640 | killTimer( tid_xfer ); |
641 | tid_xfer = 0; | 641 | tid_xfer = 0; |
642 | startTransferServer(); | 642 | startTransferServer(); |
643 | } | 643 | } |
644 | /* ### FIXME today startin */ | 644 | /* ### FIXME today startin */ |
645 | #if 0 | 645 | #if 0 |
646 | else if ( e->timerId() == tid_today ) { | 646 | else if ( e->timerId() == tid_today ) { |
647 | QDate today = QDate::currentDate(); | 647 | QDate today = QDate::currentDate(); |
648 | if ( today != last_today_show ) { | 648 | if ( today != last_today_show ) { |
649 | last_today_show = today; | 649 | last_today_show = today; |
650 | Config cfg("today"); | 650 | Config cfg("today"); |
651 | cfg.setGroup("Start"); | 651 | cfg.setGroup("Start"); |
652 | #ifndef QPE_DEFAULT_TODAY_MODE | 652 | #ifndef QPE_DEFAULT_TODAY_MODE |
653 | #define QPE_DEFAULT_TODAY_MODE "Never" | 653 | #define QPE_DEFAULT_TODAY_MODE "Never" |
654 | #endif | 654 | #endif |
655 | if ( cfg.readEntry("Mode",QPE_DEFAULT_TODAY_MODE) == "Daily" ) { | 655 | if ( cfg.readEntry("Mode",QPE_DEFAULT_TODAY_MODE) == "Daily" ) { |
656 | QCopEnvelope env(Service::channel("today"),"raise()"); | 656 | QCopEnvelope env(Service::channel("today"),"raise()"); |
657 | } | 657 | } |
658 | } | 658 | } |
659 | } | 659 | } |
660 | #endif | 660 | #endif |
661 | } | 661 | } |
662 | 662 | ||
663 | void Server::terminateServers() | 663 | void Server::terminateServers() |
664 | { | 664 | { |
665 | delete transferServer; | 665 | delete transferServer; |
666 | delete qcopBridge; | 666 | delete qcopBridge; |
667 | transferServer = 0; | 667 | transferServer = 0; |
668 | qcopBridge = 0; | 668 | qcopBridge = 0; |
669 | } | 669 | } |
670 | 670 | ||
671 | void Server::syncConnectionClosed( const QHostAddress & ) | 671 | void Server::syncConnectionClosed( const QHostAddress & ) |
672 | { | 672 | { |
673 | qDebug( "Lost sync connection" ); | 673 | qDebug( "Lost sync connection" ); |
674 | delete syncDialog; | 674 | delete syncDialog; |
675 | syncDialog = 0; | 675 | syncDialog = 0; |
676 | } | 676 | } |
677 | 677 | ||
678 | void Server::pokeTimeMonitors() | 678 | void Server::pokeTimeMonitors() |
679 | { | 679 | { |
680 | #if 0 | 680 | #if 0 |
681 | // inform all TimeMonitors | 681 | // inform all TimeMonitors |
682 | QStrList tms = Service::channels("TimeMonitor"); | 682 | QStrList tms = Service::channels("TimeMonitor"); |
683 | for (const char* ch = tms.first(); ch; ch=tms.next()) { | 683 | for (const char* ch = tms.first(); ch; ch=tms.next()) { |
684 | QString t = getenv("TZ"); | 684 | QString t = getenv("TZ"); |
685 | QCopEnvelope e(ch, "timeChange(QString)"); | 685 | QCopEnvelope e(ch, "timeChange(QString)"); |
686 | e << t; | 686 | e << t; |
687 | } | 687 | } |
688 | #endif | 688 | #endif |
689 | } | 689 | } |
690 | 690 | ||
691 | void Server::applicationLaunched(int, const QString &app) | 691 | void Server::applicationLaunched(int, const QString &app) |
692 | { | 692 | { |
693 | serverGui->applicationStateChanged( app, ServerInterface::Launching ); | 693 | serverGui->applicationStateChanged( app, ServerInterface::Launching ); |
694 | } | 694 | } |
695 | 695 | ||
696 | void Server::applicationTerminated(int pid, const QString &app) | 696 | void Server::applicationTerminated(int pid, const QString &app) |
697 | { | 697 | { |
698 | serverGui->applicationStateChanged( app, ServerInterface::Terminated ); | 698 | serverGui->applicationStateChanged( app, ServerInterface::Terminated ); |
699 | #if 0 | 699 | #if 0 |
700 | tsmMonitor->applicationTerminated( pid ); | 700 | tsmMonitor->applicationTerminated( pid ); |
701 | #endif | 701 | #endif |
702 | } | 702 | } |
703 | 703 | ||
704 | void Server::applicationConnected(const QString &app) | 704 | void Server::applicationConnected(const QString &app) |
705 | { | 705 | { |
706 | serverGui->applicationStateChanged( app, ServerInterface::Running ); | 706 | serverGui->applicationStateChanged( app, ServerInterface::Running ); |
707 | } | 707 | } |
708 | 708 | ||
709 | void Server::storageChanged() | 709 | void Server::storageChanged() |
710 | { | 710 | { |
711 | system( "qtopia-update-symlinks" ); | 711 | system( "opie-update-symlinks" ); |
712 | serverGui->storageChanged( storage->fileSystems() ); | 712 | serverGui->storageChanged( storage->fileSystems() ); |
713 | docList->storageChanged(); | 713 | docList->storageChanged(); |
714 | } | 714 | } |
715 | 715 | ||
716 | 716 | ||
717 | 717 | ||
718 | void Server::preloadApps() | 718 | void Server::preloadApps() |
719 | { | 719 | { |
720 | Config cfg("Launcher"); | 720 | Config cfg("Launcher"); |
721 | cfg.setGroup("Preload"); | 721 | cfg.setGroup("Preload"); |
722 | QStringList apps = cfg.readListEntry("Apps",','); | 722 | QStringList apps = cfg.readListEntry("Apps",','); |
723 | for (QStringList::ConstIterator it=apps.begin(); it!=apps.end(); ++it) { | 723 | for (QStringList::ConstIterator it=apps.begin(); it!=apps.end(); ++it) { |
724 | #ifndef QT_NO_COP | 724 | #ifndef QT_NO_COP |
725 | QCopEnvelope e("QPE/Application/"+(*it).local8Bit(), "enablePreload()"); | 725 | QCopEnvelope e("QPE/Application/"+(*it).local8Bit(), "enablePreload()"); |
726 | #endif | 726 | #endif |
727 | } | 727 | } |
728 | } | 728 | } |
729 | 729 | ||
diff --git a/core/symlinker/Makefile b/core/symlinker/Makefile new file mode 100644 index 0000000..f35292c --- a/dev/null +++ b/core/symlinker/Makefile | |||
@@ -0,0 +1,160 @@ | |||
1 | ############################################################################# | ||
2 | # Makefile for building: $(OPIEDIR)/bin/opie-update-symlinks | ||
3 | # Generated by qmake (1.05a) (Qt 3.1.2) on: Tue Mar 16 10:46:29 2004 | ||
4 | # Project: symlinker.pro | ||
5 | # Template: app | ||
6 | # Command: $(QMAKE) -o Makefile symlinker.pro | ||
7 | ############################################################################# | ||
8 | |||
9 | ####### Compiler, tools and options | ||
10 | |||
11 | CC = arm-linux-gcc | ||
12 | CXX = arm-linux-g++ -DQT_QWS_IPAQ | ||
13 | LEX = flex | ||
14 | YACC = yacc | ||
15 | CFLAGS = -pipe $(CFLAGS_EXTRA) -Wall -W $(if $(CFLAGS_RELEASE),$(CFLAGS_RELEASE), -O2) -DUSE_REALTIME_AUDIO_THREAD -DOPIE_NEW_MALLOC -DOPIE_SOUND_FRAGMENT_SHIFT=14 -DOPIE_WE_VERSION=15 -DQT_NO_DEBUG | ||
16 | CXXFLAGS = -pipe $(CFLAGS_EXTRA) -DQWS -fno-exceptions -fno-rtti $(CXXFLAGS_EXTRA) -Wall -W $(if $(CFLAGS_RELEASE),$(CFLAGS_RELEASE), -O2) -DUSE_REALTIME_AUDIO_THREAD -DOPIE_NEW_MALLOC -DOPIE_SOUND_FRAGMENT_SHIFT=14 -DOPIE_WE_VERSION=15 -DQT_NO_DEBUG | ||
17 | LEXFLAGS = | ||
18 | YACCFLAGS= -d | ||
19 | INCPATH = -I/opt/arm/opie//mkspecs/qws/linux-ipaq-g++ -I. -I$(OPIEDIR)/include -I$(QTDIR)/include -I.moc/$(PLATFORM)/ | ||
20 | LINK = arm-linux-gcc | ||
21 | LFLAGS = $(LFLAGS_EXTRA) -Wl,-rpath=$(OPIEDIR)/lib | ||
22 | LIBS = $(SUBLIBS) -Wl,-rpath-link,$(OPIEDIR)/lib -L$(OPIEDIR)/lib -Wl,-rpath-link,$(QTDIR)/lib -L$(QTDIR)/lib $(LIBS_EXTRA) -lqpe -lopie -lqte | ||
23 | AR = ar cqs | ||
24 | RANLIB = | ||
25 | MOC = $(QTDIR)/bin/moc | ||
26 | UIC = $(QTDIR)/bin/uic | ||
27 | QMAKE = qmake | ||
28 | TAR = tar -cf | ||
29 | GZIP = gzip -9f | ||
30 | COPY = cp -f | ||
31 | COPY_FILE= $(COPY) -p | ||
32 | COPY_DIR = $(COPY) -pR | ||
33 | DEL_FILE = rm -f | ||
34 | SYMLINK = ln -sf | ||
35 | DEL_DIR = rmdir | ||
36 | MOVE = mv -f | ||
37 | PRO = symlinker.pro | ||
38 | CHK_DIR_EXISTS= test -d | ||
39 | MKDIR = mkdir -p | ||
40 | |||
41 | ####### Output directory | ||
42 | |||
43 | OBJECTS_DIR = .obj/$(PLATFORM)/ | ||
44 | |||
45 | ####### Files | ||
46 | |||
47 | HEADERS = | ||
48 | SOURCES = main.cpp | ||
49 | OBJECTS = .obj/$(PLATFORM)/main.o | ||
50 | FORMS = | ||
51 | UICDECLS = | ||
52 | UICIMPLS = | ||
53 | SRCMOC = | ||
54 | OBJMOC = | ||
55 | DIST = ../../gen.pro \ | ||
56 | ../../include.pro \ | ||
57 | symlinker.pro | ||
58 | QMAKE_TARGET = opie-update-symlinks | ||
59 | DESTDIR = $(OPIEDIR)/bin/ | ||
60 | TARGET = $(OPIEDIR)/bin/opie-update-symlinks | ||
61 | |||
62 | first: all | ||
63 | ####### Implicit rules | ||
64 | |||
65 | .SUFFIXES: .c .cpp .cc .cxx .C | ||
66 | |||
67 | .cpp.o: | ||
68 | $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< | ||
69 | |||
70 | .cc.o: | ||
71 | $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< | ||
72 | |||
73 | .cxx.o: | ||
74 | $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< | ||
75 | |||
76 | .C.o: | ||
77 | $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< | ||
78 | |||
79 | .c.o: | ||
80 | $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< | ||
81 | |||
82 | ####### Build rules | ||
83 | |||
84 | all: Makefile $(TARGET) | ||
85 | |||
86 | $(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) | ||
87 | test -d $(OPIEDIR)/bin/ || mkdir -p $(OPIEDIR)/bin/ | ||
88 | $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) | ||
89 | |||
90 | mocables: $(SRCMOC) | ||
91 | |||
92 | $(MOC): | ||
93 | ( cd $(QTDIR)/src/moc ; $(MAKE) ) | ||
94 | |||
95 | Makefile: symlinker.pro /opt/arm/opie//mkspecs/qws/linux-ipaq-g++/qmake.conf ../../gen.pro \ | ||
96 | ../../include.pro | ||
97 | $(QMAKE) -o Makefile symlinker.pro | ||
98 | qmake: | ||
99 | @$(QMAKE) -o Makefile symlinker.pro | ||
100 | |||
101 | dist: | ||
102 | @mkdir -p .obj/$(PLATFORM)/opie-update-symlinks && $(COPY_FILE) --parents $(SOURCES) $(HEADERS) $(FORMS) $(DIST) .obj/$(PLATFORM)/opie-update-symlinks/ && ( cd `dirname .obj/$(PLATFORM)/opie-update-symlinks` && $(TAR) opie-update-symlinks.tar opie-update-symlinks && $(GZIP) opie-update-symlinks.tar ) && $(MOVE) `dirname .obj/$(PLATFORM)/opie-update-symlinks`/opie-update-symlinks.tar.gz . && $(DEL_FILE) -r .obj/$(PLATFORM)/opie-update-symlinks | ||
103 | |||
104 | mocclean: | ||
105 | |||
106 | uiclean: | ||
107 | |||
108 | yaccclean: | ||
109 | lexclean: | ||
110 | clean: | ||
111 | -$(DEL_FILE) $(OBJECTS) | ||
112 | -$(DEL_FILE) *~ core *.core | ||
113 | |||
114 | |||
115 | ####### Sub-libraries | ||
116 | |||
117 | distclean: clean | ||
118 | -$(DEL_FILE) $(OPIEDIR)/bin/$(TARGET) $(TARGET) | ||
119 | |||
120 | |||
121 | lupdate: | ||
122 | lupdate -noobsolete $(PRO) | ||
123 | |||
124 | lrelease: | ||
125 | lrelease $(PRO) | ||
126 | |||
127 | ipk: | ||
128 | tmp=`mktemp -d /tmp/ipkg-opie.XXXXXXXXXX` && ( $(MAKE) INSTALL_ROOT="" install && ipkg-build ; rm -rf ; ) | ||
129 | |||
130 | opie-lupdate: | ||
131 | opie-lupdate $(PRO) | ||
132 | |||
133 | opie-lrelease: | ||
134 | opie-lrelease $(PRO) | ||
135 | |||
136 | messages: | ||
137 | xgettext -C -n -ktr -kQT_TRANSLATE_NOOP main.cpp -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-tr.po' && xgettext -C -n -a main.cpp -o '$(OPIEDIR)/messages-$(QMAKE_TARGET)-allstrings.po' | ||
138 | |||
139 | FORCE: | ||
140 | |||
141 | ####### Compile | ||
142 | |||
143 | .obj/$(PLATFORM)/main.o: main.cpp | ||
144 | $(CXX) -c $(CXXFLAGS) $(INCPATH) -o .obj/$(PLATFORM)/main.o main.cpp | ||
145 | |||
146 | ####### Install | ||
147 | |||
148 | install_target: | ||
149 | @$(CHK_DIR_EXISTS) "$(INSTALL_ROOT)$(OPIEDIR)/bin/" || $(MKDIR) "$(INSTALL_ROOT)$(OPIEDIR)/bin/" | ||
150 | -$(COPY) "$(OPIEDIR)/bin/$(QMAKE_TARGET)" "$(INSTALL_ROOT)$(OPIEDIR)/bin/$(QMAKE_TARGET)" | ||
151 | |||
152 | uninstall_target: | ||
153 | -$(DEL_FILE) "$(INSTALL_ROOT)$(OPIEDIR)/bin/$(QMAKE_TARGET)" | ||
154 | -$(DEL_DIR) "$(INSTALL_ROOT)$(OPIEDIR)/bin/" | ||
155 | |||
156 | |||
157 | install: all install_target | ||
158 | |||
159 | uninstall: uninstall_target | ||
160 | |||
diff --git a/core/symlinker/config.in b/core/symlinker/config.in new file mode 100644 index 0000000..a378d3a --- a/dev/null +++ b/core/symlinker/config.in | |||
@@ -0,0 +1,5 @@ | |||
1 | config SYMLINKER | ||
2 | boolean "Opie Symlinker for external media" | ||
3 | default "y" | ||
4 | depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE && LAUNCHER | ||
5 | |||
diff --git a/core/symlinker/main.cpp b/core/symlinker/main.cpp new file mode 100644 index 0000000..73d5166 --- a/dev/null +++ b/core/symlinker/main.cpp | |||
@@ -0,0 +1,160 @@ | |||
1 | #include <qapplication.h> | ||
2 | #include <qfile.h> | ||
3 | #include <qfileinfo.h> | ||
4 | #include <qdir.h> | ||
5 | #include <qtextstream.h> | ||
6 | #include <qstringlist.h> | ||
7 | |||
8 | #include <stdlib.h> | ||
9 | #include <unistd.h> //symlink() | ||
10 | #include <sys/stat.h> // mkdir() | ||
11 | |||
12 | #include <sys/vfs.h> | ||
13 | #include <mntent.h> | ||
14 | |||
15 | static const char *listDir = "/usr/lib/ipkg/externinfo/"; | ||
16 | |||
17 | static void createSymlinks( const QString &location, const QString &package ) | ||
18 | { | ||
19 | QFile inFile( location + "/usr/lib/ipkg/info/" + package + ".list" ); | ||
20 | mkdir( "/usr/lib/ipkg", 0777 ); | ||
21 | mkdir( listDir, 0777 ); | ||
22 | |||
23 | QFile outFile( listDir + package + ".list"); | ||
24 | |||
25 | //qDebug( "createSymlinks %s -> %s", inFile.name().ascii(), outFile.name().ascii() ); | ||
26 | |||
27 | |||
28 | |||
29 | if ( inFile.open(IO_ReadOnly) && outFile.open(IO_WriteOnly)) { | ||
30 | QTextStream in(&inFile); | ||
31 | QTextStream out(&outFile); | ||
32 | |||
33 | QString s; | ||
34 | while ( !in.eof() ) { // until end of file... | ||
35 | s = in.readLine(); // line of text excluding '\n' | ||
36 | //qDebug( "Read: %s", s.ascii() ); | ||
37 | // for s, do link/mkdir. | ||
38 | if ( s.right(1) == "/" ) { | ||
39 | //qDebug("do mkdir for %s", s.ascii()); | ||
40 | mkdir( s.ascii(), 0777 ); | ||
41 | //possible optimization: symlink directories | ||
42 | //that don't exist already. -- Risky. | ||
43 | } else { | ||
44 | //qDebug("do symlink for %s", s.ascii()); | ||
45 | QFileInfo ffi( s ); | ||
46 | //Don't try to symlink if a regular file exists already | ||
47 | if ( !ffi.exists() || ffi.isSymLink() ) { | ||
48 | symlink( (location+s).ascii(), s.ascii() ); | ||
49 | // qDebug ( "Created %s" ,s.ascii() ); | ||
50 | out << s << "\n"; | ||
51 | } //else { | ||
52 | // qDebug( "%s exists already, not symlinked", s.ascii() ); | ||
53 | // } | ||
54 | } | ||
55 | } | ||
56 | inFile.close(); | ||
57 | outFile.close(); | ||
58 | } | ||
59 | } | ||
60 | |||
61 | |||
62 | |||
63 | static void removeSymlinks( const QString &package ) | ||
64 | { | ||
65 | QFile inFile( listDir + package + ".list" ); | ||
66 | |||
67 | if ( inFile.open(IO_ReadOnly) ) { | ||
68 | QTextStream in(&inFile); | ||
69 | |||
70 | QString s; | ||
71 | while ( !in.eof() ) { // until end of file... | ||
72 | s = in.readLine(); // line of text excluding '\n' | ||
73 | //qDebug("remove symlink %s", s.ascii()); | ||
74 | QFileInfo ffi( s ); | ||
75 | //Confirm that it's still a symlink. | ||
76 | if ( ffi.isSymLink() ) | ||
77 | unlink( s.ascii() ); | ||
78 | // qDebug ( "Removed %s", s.ascii() ); | ||
79 | // else | ||
80 | // qDebug( "Not removed %s", s.ascii() ); | ||
81 | } | ||
82 | inFile.close(); | ||
83 | inFile.remove(); | ||
84 | } | ||
85 | } | ||
86 | |||
87 | |||
88 | |||
89 | /* | ||
90 | Slightly hacky: we can't use StorageInfo, since we don't have a | ||
91 | QApplication. We look for filesystems that have the directory | ||
92 | /usr/lib/ipkg/info, and assume that they are removable media | ||
93 | with packages installed. This is safe even if eg. /usr is on a | ||
94 | separate filesystem, since then we would be testing for | ||
95 | /usr/usr/lib/ipkg/info, which should not exist. (And if it | ||
96 | does they deserve to have it treated as removable.) | ||
97 | */ | ||
98 | |||
99 | static void updateSymlinks() | ||
100 | { | ||
101 | QDir lists( listDir ); | ||
102 | QStringList knownPackages = lists.entryList( "*.list" ); // No tr | ||
103 | |||
104 | struct mntent *me; | ||
105 | FILE *mntfp = setmntent( "/etc/mtab", "r" ); | ||
106 | |||
107 | if ( mntfp ) { | ||
108 | while ( (me = getmntent( mntfp )) != 0 ) { | ||
109 | QString root = me->mnt_dir; | ||
110 | if ( root == "/" ) | ||
111 | continue; | ||
112 | |||
113 | QString info = root + "/usr/lib/ipkg/info"; | ||
114 | QDir infoDir( info ); | ||
115 | //qDebug( "looking at %s", info.ascii() ); | ||
116 | if ( infoDir.isReadable() ) { | ||
117 | const QFileInfoList *packages = infoDir.entryInfoList( "*.list" ); // No tr | ||
118 | QFileInfoListIterator it( *packages ); | ||
119 | QFileInfo *fi; | ||
120 | while (( fi = *it )) { | ||
121 | ++it; | ||
122 | if ( knownPackages.contains( fi->fileName() ) ) { | ||
123 | //qDebug( "found %s and we've seen it before", fi->fileName().latin1() ); | ||
124 | knownPackages.remove( fi->fileName() ); | ||
125 | } else { | ||
126 | //it's a new one | ||
127 | createSymlinks( root, fi->baseName() ); | ||
128 | } | ||
129 | |||
130 | } | ||
131 | |||
132 | } | ||
133 | } | ||
134 | endmntent( mntfp ); | ||
135 | } | ||
136 | |||
137 | for ( QStringList::Iterator it = knownPackages.begin(); | ||
138 | it != knownPackages.end(); ++it ) { | ||
139 | // strip ".info" off the end. | ||
140 | removeSymlinks( (*it).left((*it).length()-5) ); | ||
141 | } | ||
142 | } | ||
143 | |||
144 | |||
145 | |||
146 | int main( int argc, char *argv[] ) | ||
147 | { | ||
148 | QApplication a( argc, argv, QApplication::Tty ); | ||
149 | |||
150 | QString command = argc > 1 ? argv[1] : "update"; // No tr | ||
151 | |||
152 | if ( command == "update" ) // No tr | ||
153 | updateSymlinks(); | ||
154 | else if ( command == "create" && argc > 3 ) // No tr | ||
155 | createSymlinks( argv[2], argv[3] ); | ||
156 | else if ( command == "remove" && argc > 2 ) // No tr | ||
157 | removeSymlinks( argv[2] ); | ||
158 | else | ||
159 | qWarning( "Argument error" ); | ||
160 | } | ||
diff --git a/core/symlinker/opie-symlinker.control b/core/symlinker/opie-symlinker.control new file mode 100644 index 0000000..6378653 --- a/dev/null +++ b/core/symlinker/opie-symlinker.control | |||
@@ -0,0 +1,9 @@ | |||
1 | Package: opie-symlinker | ||
2 | Files: bin/opie-update-symlinks | ||
3 | Priority: optional | ||
4 | Section: opie/system | ||
5 | Maintainer: Project Opie <opie@handhelds.org> | ||
6 | Architecture: arm | ||
7 | Version: $QPE_VERSION-$SUB_VERSION.3 | ||
8 | Depends: task-opie-minimal | ||
9 | Description: Enables apps on external media | ||
diff --git a/core/symlinker/symlinker.pro b/core/symlinker/symlinker.pro new file mode 100644 index 0000000..9558b3e --- a/dev/null +++ b/core/symlinker/symlinker.pro | |||
@@ -0,0 +1,15 @@ | |||
1 | TEMPLATE= app | ||
2 | CONFIG += qtopia warn_on release | ||
3 | DESTDIR = $(OPIEDIR)/bin | ||
4 | |||
5 | HEADERS = | ||
6 | SOURCES = main.cpp | ||
7 | INTERFACES= | ||
8 | |||
9 | TARGET = opie-update-symlinks | ||
10 | INCLUDEPATH += $(OPIEDIR)/include | ||
11 | DEPENDPATH += $(OPIEDIR)/include . | ||
12 | LIBS += -lqpe -lopie | ||
13 | |||
14 | include ( $(OPIEDIR)/include.pro ) | ||
15 | |||
@@ -1,209 +1,210 @@ | |||
1 | CONFIG_ABOUTAPPLET core/applets/aboutappletaboutapplet.pro | 1 | CONFIG_ABOUTAPPLET core/applets/aboutappletaboutapplet.pro |
2 | CONFIG_ADDRESSBOOK core/pim/addressbookaddressbook.pro | 2 | CONFIG_ADDRESSBOOK core/pim/addressbookaddressbook.pro |
3 | CONFIG_ADVANCEDFM noncore/apps/advancedfmadvancedfm.pro | 3 | CONFIG_ADVANCEDFM noncore/apps/advancedfmadvancedfm.pro |
4 | CONFIG_APPEARANCE2 noncore/settings/appearance2appearance2.pro | 4 | CONFIG_APPEARANCE2 noncore/settings/appearance2appearance2.pro |
5 | CONFIG_APPLET_EXAMPLE examples/applet example.pro | 5 | CONFIG_APPLET_EXAMPLE examples/applet example.pro |
6 | CONFIG_APPSKEY noncore/settings/appskeyappskey.pro | 6 | CONFIG_APPSKEY noncore/settings/appskeyappskey.pro |
7 | CONFIG_AQPKG noncore/settings/aqpkgaqpkg.pro | 7 | CONFIG_AQPKG noncore/settings/aqpkgaqpkg.pro |
8 | CONFIG_AUTOROTATEAPPLET noncore/applets/autorotateappletautorotateapplet.pro | 8 | CONFIG_AUTOROTATEAPPLET noncore/applets/autorotateappletautorotateapplet.pro |
9 | CONFIG_BACKGAMMONnoncore/games/backgammon backgammon.pro | 9 | CONFIG_BACKGAMMONnoncore/games/backgammon backgammon.pro |
10 | CONFIG_BACKUP noncore/settings/backupbackup.pro | 10 | CONFIG_BACKUP noncore/settings/backupbackup.pro |
11 | CONFIG_BARTENDER noncore/apps/opie-bartenderbartender.pro | 11 | CONFIG_BARTENDER noncore/apps/opie-bartenderbartender.pro |
12 | CONFIG_BATTERYAPPLET core/applets/batteryappletbatteryapplet.pro | 12 | CONFIG_BATTERYAPPLET core/applets/batteryappletbatteryapplet.pro |
13 | CONFIG_BEND noncore/unsupported/mail2/bendbend.pro | 13 | CONFIG_BEND noncore/unsupported/mail2/bendbend.pro |
14 | CONFIG_BIGSCREEN_EXAMPLE libopie/big-screen/example osplitter_mail.pro | 14 | CONFIG_BIGSCREEN_EXAMPLE libopie/big-screen/example osplitter_mail.pro |
15 | CONFIG_BINARY noncore/tools/calc2/binarybinary.pro | 15 | CONFIG_BINARY noncore/tools/calc2/binarybinary.pro |
16 | CONFIG_BLUE-PIN noncore/net/opietooth/blue-pinblue-pin.pro | 16 | CONFIG_BLUE-PIN noncore/net/opietooth/blue-pinblue-pin.pro |
17 | CONFIG_BOUNCE noncore/games/bouncebounce.pro | 17 | CONFIG_BOUNCE noncore/games/bouncebounce.pro |
18 | CONFIG_BUTTON-SETTINGS core/settings/buttonbutton.pro | 18 | CONFIG_BUTTON-SETTINGS core/settings/buttonbutton.pro |
19 | CONFIG_BUZZWORD noncore/games/buzzwordbuzzword.pro | 19 | CONFIG_BUZZWORD noncore/games/buzzwordbuzzword.pro |
20 | CONFIG_CALC2 noncore/tools/calc2calc.pro | 20 | CONFIG_CALC2 noncore/tools/calc2calc.pro |
21 | CONFIG_CALCULATOR noncore/tools/calculatorcalculator.pro | 21 | CONFIG_CALCULATOR noncore/tools/calculatorcalculator.pro |
22 | CONFIG_CALIBRATE core/apps/calibratecalibrate.pro | 22 | CONFIG_CALIBRATE core/apps/calibratecalibrate.pro |
23 | CONFIG_CAMERA noncore/multimedia/cameracamera.pro | 23 | CONFIG_CAMERA noncore/multimedia/cameracamera.pro |
24 | CONFIG_CARDMON core/applets/cardmoncardmon.pro | 24 | CONFIG_CARDMON core/applets/cardmoncardmon.pro |
25 | CONFIG_CHECKBOOK noncore/apps/checkbookcheckbook.pro | 25 | CONFIG_CHECKBOOK noncore/apps/checkbookcheckbook.pro |
26 | CONFIG_CITYTIME core/settings/citytimecitytime.pro | 26 | CONFIG_CITYTIME core/settings/citytimecitytime.pro |
27 | CONFIG_CLIPBOARDAPPLET core/applets/clipboardappletclipboardapplet.pro | 27 | CONFIG_CLIPBOARDAPPLET core/applets/clipboardappletclipboardapplet.pro |
28 | CONFIG_CLOCKAPPLET core/applets/clockappletclockapplet.pro | 28 | CONFIG_CLOCKAPPLET core/applets/clockappletclockapplet.pro |
29 | CONFIG_CLOCK noncore/tools/clockclock.pro | 29 | CONFIG_CLOCK noncore/tools/clockclock.pro |
30 | CONFIG_CONFEDIT noncore/apps/confeditconfedit.pro | 30 | CONFIG_CONFEDIT noncore/apps/confeditconfedit.pro |
31 | CONFIG_DASHER inputmethods/dasherdasher.pro | 31 | CONFIG_DASHER inputmethods/dasherdasher.pro |
32 | CONFIG_DATEBOOK core/pim/datebookdatebook.pro | 32 | CONFIG_DATEBOOK core/pim/datebookdatebook.pro |
33 | CONFIG_DECO_FLAT noncore/decorations/flatflat.pro | 33 | CONFIG_DECO_FLAT noncore/decorations/flatflat.pro |
34 | CONFIG_DECO_LIQUID noncore/decorations/liquidliquid.pro | 34 | CONFIG_DECO_LIQUID noncore/decorations/liquidliquid.pro |
35 | CONFIG_DECO_POLISHED noncore/decorations/polishedpolished.pro | 35 | CONFIG_DECO_POLISHED noncore/decorations/polishedpolished.pro |
36 | CONFIG_DICTIONARY noncore/apps/dictionarydictionary.pro | 36 | CONFIG_DICTIONARY noncore/apps/dictionarydictionary.pro |
37 | CONFIG_DOCTAB noncore/settings/doctab doctab.pro | 37 | CONFIG_DOCTAB noncore/settings/doctab doctab.pro |
38 | CONFIG_DRAWPAD noncore/graphics/drawpaddrawpad.pro | 38 | CONFIG_DRAWPAD noncore/graphics/drawpaddrawpad.pro |
39 | CONFIG_DVORAK inputmethods/dvorakdvorak.pro | 39 | CONFIG_DVORAK inputmethods/dvorakdvorak.pro |
40 | CONFIG_EMBEDDEDKONSOLE core/apps/embeddedkonsoleembeddedkonsole.pro | 40 | CONFIG_EMBEDDEDKONSOLE core/apps/embeddedkonsoleembeddedkonsole.pro |
41 | CONFIG_EUROCONV noncore/tools/euroconv/ euroconv.pro | 41 | CONFIG_EUROCONV noncore/tools/euroconv/ euroconv.pro |
42 | CONFIG_EXAMPLE_BOARD examples/inputmethod example.pro | 42 | CONFIG_EXAMPLE_BOARD examples/inputmethod example.pro |
43 | CONFIG_EXAMPLE_MENU examples/menuapplet menuapplet.pro | 43 | CONFIG_EXAMPLE_MENU examples/menuapplet menuapplet.pro |
44 | CONFIG_EXAMPLE_VPN examples/networksettings example.pro | 44 | CONFIG_EXAMPLE_VPN examples/networksettings example.pro |
45 | CONFIG_FIFTEEN noncore/games/fifteenfifteen.pro | 45 | CONFIG_FIFTEEN noncore/games/fifteenfifteen.pro |
46 | CONFIG_FILEBROWSER noncore/unsupported/filebrowserfilebrowser.pro | 46 | CONFIG_FILEBROWSER noncore/unsupported/filebrowserfilebrowser.pro |
47 | CONFIG_FLAT noncore/styles/flatflat.pro | 47 | CONFIG_FLAT noncore/styles/flatflat.pro |
48 | CONFIG_FORMATTER noncore/tools/formatterformatter.pro | 48 | CONFIG_FORMATTER noncore/tools/formatterformatter.pro |
49 | CONFIG_FREETYPE freetypefreetype.pro | 49 | CONFIG_FREETYPE freetypefreetype.pro |
50 | CONFIG_FRESH noncore/styles/freshfresh.pro | 50 | CONFIG_FRESH noncore/styles/freshfresh.pro |
51 | CONFIG_FTPLIB noncore/net/ftplibftplib.pro | 51 | CONFIG_FTPLIB noncore/net/ftplibftplib.pro |
52 | CONFIG_GO noncore/games/gogo.pro | 52 | CONFIG_GO noncore/games/gogo.pro |
53 | CONFIG_GSMTOOL noncore/unsupported/gsmtoolgsmtool.pro | 53 | CONFIG_GSMTOOL noncore/unsupported/gsmtoolgsmtool.pro |
54 | CONFIG_HANDWRITING inputmethods/handwritinghandwriting.pro | 54 | CONFIG_HANDWRITING inputmethods/handwritinghandwriting.pro |
55 | CONFIG_HELPBROWSER core/apps/helpbrowserhelpbrowser.pro | 55 | CONFIG_HELPBROWSER core/apps/helpbrowserhelpbrowser.pro |
56 | CONFIG_HOMEAPPLET core/applets/homeapplethomeapplet.pro | 56 | CONFIG_HOMEAPPLET core/applets/homeapplethomeapplet.pro |
57 | CONFIG_INTERFACES noncore/settings/networksettings/interfacesinterfaces.pro | 57 | CONFIG_INTERFACES noncore/settings/networksettings/interfacesinterfaces.pro |
58 | CONFIG_IRDAAPPLET core/applets/irdaappletirdaapplet.pro | 58 | CONFIG_IRDAAPPLET core/applets/irdaappletirdaapplet.pro |
59 | CONFIG_JUMPX inputmethods/jumpxjumpx.pro | 59 | CONFIG_JUMPX inputmethods/jumpxjumpx.pro |
60 | CONFIG_KBILL noncore/games/kbillkbill.pro | 60 | CONFIG_KBILL noncore/games/kbillkbill.pro |
61 | CONFIG_KCHECKERS noncore/games/kcheckerskcheckers.pro | 61 | CONFIG_KCHECKERS noncore/games/kcheckerskcheckers.pro |
62 | CONFIG_KEYBOARD inputmethods/keyboardkeyboard.pro | 62 | CONFIG_KEYBOARD inputmethods/keyboardkeyboard.pro |
63 | CONFIG_KEYPEBBLE noncore/comm/keypebblekeypebble.pro | 63 | CONFIG_KEYPEBBLE noncore/comm/keypebblekeypebble.pro |
64 | CONFIG_KEYVIEW development/keyviewkeyview.pro | 64 | CONFIG_KEYVIEW development/keyviewkeyview.pro |
65 | CONFIG_KEYZCFG noncore/apps/keyz-cfg keyz-cfg.pro | 65 | CONFIG_KEYZCFG noncore/apps/keyz-cfg keyz-cfg.pro |
66 | CONFIG_KJUMPX inputmethods/kjumpxkjumpx.pro | 66 | CONFIG_KJUMPX inputmethods/kjumpxkjumpx.pro |
67 | CONFIG_KPACMAN noncore/games/kpacmankpacman.pro | 67 | CONFIG_KPACMAN noncore/games/kpacmankpacman.pro |
68 | CONFIG_LANGUAGE noncore/settings/languagelanguage.pro | 68 | CONFIG_LANGUAGE noncore/settings/languagelanguage.pro |
69 | CONFIG_LAUNCHER_CORE core/launcherserver.pro | 69 | CONFIG_LAUNCHER_CORE core/launcherserver.pro |
70 | CONFIG_LAUNCHER-SETTINGS core/settings/launcherlauncher.pro | 70 | CONFIG_LAUNCHER-SETTINGS core/settings/launcherlauncher.pro |
71 | CONFIG_LIBFFMPEG core/multimedia/opieplayer/libffmpeglibffmpeg.pro | 71 | CONFIG_LIBFFMPEG core/multimedia/opieplayer/libffmpeglibffmpeg.pro |
72 | CONFIG_LIBFLASH core/multimedia/opieplayer/libflashlibflash.pro | 72 | CONFIG_LIBFLASH core/multimedia/opieplayer/libflashlibflash.pro |
73 | CONFIG_LIBKATE noncore/apps/tinykate/libkate libkate.pro | 73 | CONFIG_LIBKATE noncore/apps/tinykate/libkate libkate.pro |
74 | CONFIG_LIBMAD core/multimedia/opieplayer/libmadlibmad.pro | 74 | CONFIG_LIBMAD core/multimedia/opieplayer/libmadlibmad.pro |
75 | CONFIG_LIBMAIL noncore/unsupported/mail2/libmaillibmail.pro | 75 | CONFIG_LIBMAIL noncore/unsupported/mail2/libmaillibmail.pro |
76 | CONFIG_LIBMAILWRAPPER noncore/net/mail/libmailwrapper libmailwrapper.pro | 76 | CONFIG_LIBMAILWRAPPER noncore/net/mail/libmailwrapper libmailwrapper.pro |
77 | CONFIG_LIBMPEG3 core/multimedia/opieplayer/libmpeg3libmpeg3.pro | 77 | CONFIG_LIBMPEG3 core/multimedia/opieplayer/libmpeg3libmpeg3.pro |
78 | CONFIG_LIBOPIE2CORE libopie2/opiecoreopiecore.pro | 78 | CONFIG_LIBOPIE2CORE libopie2/opiecoreopiecore.pro |
79 | CONFIG_LIBOPIE2DB libopie2/opiedbopiedb.pro | 79 | CONFIG_LIBOPIE2DB libopie2/opiedbopiedb.pro |
80 | CONFIG_LIBOPIE2EXAMPLES libopie2/examplesexamples.pro | 80 | CONFIG_LIBOPIE2EXAMPLES libopie2/examplesexamples.pro |
81 | CONFIG_LIBOPIE2MM libopie2/opiemmopiemm.pro | 81 | CONFIG_LIBOPIE2MM libopie2/opiemmopiemm.pro |
82 | CONFIG_LIBOPIE2NET libopie2/opienetopienet.pro | 82 | CONFIG_LIBOPIE2NET libopie2/opienetopienet.pro |
83 | CONFIG_LIBOPIE2PIM libopie2/opiepimopiepim.pro | 83 | CONFIG_LIBOPIE2PIM libopie2/opiepimopiepim.pro |
84 | CONFIG_LIBOPIE2UI libopie2/opieuiopieui.pro | 84 | CONFIG_LIBOPIE2UI libopie2/opieuiopieui.pro |
85 | CONFIG_LIBOPIE libopielibopie.pro | 85 | CONFIG_LIBOPIE libopielibopie.pro |
86 | CONFIG_LIBOPIE_PIM libopie/pimpim.pro | 86 | CONFIG_LIBOPIE_PIM libopie/pimpim.pro |
87 | CONFIG_LIBOPIETOOTH noncore/net/opietooth/liblib.pro | 87 | CONFIG_LIBOPIETOOTH noncore/net/opietooth/liblib.pro |
88 | CONFIG_LIBQPE librarylibrary.pro | 88 | CONFIG_LIBQPE librarylibrary.pro |
89 | CONFIG_LIBQPE-X11 x11/libqpe-x11libqpe-x11.pro | 89 | CONFIG_LIBQPE-X11 x11/libqpe-x11libqpe-x11.pro |
90 | CONFIG_LIBQTAUX libqtauxlibqtaux.pro | 90 | CONFIG_LIBQTAUX libqtauxlibqtaux.pro |
91 | CONFIG_LIBSQL libsqllibsql.pro | 91 | CONFIG_LIBSQL libsqllibsql.pro |
92 | CONFIG_LIBSLCOMPAT libslcompatlibslcompat.pro | 92 | CONFIG_LIBSLCOMPAT libslcompatlibslcompat.pro |
93 | CONFIG_LIBTREMOR core/multimedia/opieplayer/vorbis/tremor tremor.pro | 93 | CONFIG_LIBTREMOR core/multimedia/opieplayer/vorbis/tremor tremor.pro |
94 | CONFIG_LIBTREMORPLUGIN core/multimedia/opieplayer/vorbis libtremor.pro | 94 | CONFIG_LIBTREMORPLUGIN core/multimedia/opieplayer/vorbis libtremor.pro |
95 | CONFIG_LIGHT-AND-POWER core/settings/light-and-powerlight-and-power.pro | 95 | CONFIG_LIGHT-AND-POWER core/settings/light-and-powerlight-and-power.pro |
96 | CONFIG_LIQUID noncore/styles/liquidliquid.pro | 96 | CONFIG_LIQUID noncore/styles/liquidliquid.pro |
97 | CONFIG_LOGOUTAPPLET core/applets/logoutappletlogoutapplet.pro | 97 | CONFIG_LOGOUTAPPLET core/applets/logoutappletlogoutapplet.pro |
98 | CONFIG_MAIL3 noncore/net/mail mail.pro | 98 | CONFIG_MAIL3 noncore/net/mail mail.pro |
99 | CONFIG_MAILAPPLET noncore/net/mail/taskbarapplet taskbarapplet.pro | 99 | CONFIG_MAILAPPLET noncore/net/mail/taskbarapplet taskbarapplet.pro |
100 | CONFIG_MAILIT noncore/unsupported/mailit mailit.pro | 100 | CONFIG_MAILIT noncore/unsupported/mailit mailit.pro |
101 | CONFIG_MAIN_TAB_EXAMPLE examples/main-tab example.pro | 101 | CONFIG_MAIN_TAB_EXAMPLE examples/main-tab example.pro |
102 | CONFIG_MEDIUMMOUNT noncore/settings/mediummountmediummount.pro | 102 | CONFIG_MEDIUMMOUNT noncore/settings/mediummountmediummount.pro |
103 | CONFIG_MEMORYAPPLET noncore/applets/memoryappletmemoryapplet.pro | 103 | CONFIG_MEMORYAPPLET noncore/applets/memoryappletmemoryapplet.pro |
104 | CONFIG_METAL noncore/styles/metalmetal.pro | 104 | CONFIG_METAL noncore/styles/metalmetal.pro |
105 | CONFIG_MINDBREAKER noncore/games/mindbreakermindbreaker.pro | 105 | CONFIG_MINDBREAKER noncore/games/mindbreakermindbreaker.pro |
106 | CONFIG_MINESWEEP noncore/games/minesweepminesweep.pro | 106 | CONFIG_MINESWEEP noncore/games/minesweepminesweep.pro |
107 | CONFIG_MOBILEMSG noncore/comm/mobilemsgmobilemsg.pro | 107 | CONFIG_MOBILEMSG noncore/comm/mobilemsgmobilemsg.pro |
108 | CONFIG_MODPLUG core/multimedia/opieplayer/modplugmodplug.pro | 108 | CONFIG_MODPLUG core/multimedia/opieplayer/modplugmodplug.pro |
109 | CONFIG_MULTIKEYAPPLET core/applets/multikeyappletmultikeyapplet.pro | 109 | CONFIG_MULTIKEYAPPLET core/applets/multikeyappletmultikeyapplet.pro |
110 | CONFIG_MULTIKEY inputmethods/multikeymultikey.pro | 110 | CONFIG_MULTIKEY inputmethods/multikeymultikey.pro |
111 | CONFIG_NETSYSTEMTIME noncore/settings/netsystemtimenetsystemtime.pro | 111 | CONFIG_NETSYSTEMTIME noncore/settings/netsystemtimenetsystemtime.pro |
112 | CONFIG_NETWORKAPPLET noncore/applets/networkappletnetworkapplet.pro | 112 | CONFIG_NETWORKAPPLET noncore/applets/networkappletnetworkapplet.pro |
113 | CONFIG_NETWORKSETUP noncore/settings/networksettingsnetworksettings.pro | 113 | CONFIG_NETWORKSETUP noncore/settings/networksettingsnetworksettings.pro |
114 | CONFIG_NOTESAPPLET noncore/applets/notesappletnotesapplet.pro | 114 | CONFIG_NOTESAPPLET noncore/applets/notesappletnotesapplet.pro |
115 | CONFIG_OAPP core/apps/oappoapp.pro | 115 | CONFIG_OAPP core/apps/oappoapp.pro |
116 | CONFIG_OBEX core/applets/obex2obex.pro | 116 | CONFIG_OBEX core/applets/obex2obex.pro |
117 | CONFIG_ODICT noncore/apps/odictodict.pro | 117 | CONFIG_ODICT noncore/apps/odictodict.pro |
118 | CONFIG_OIPKG noncore/unsupported/oipkgoipkg.pro | 118 | CONFIG_OIPKG noncore/unsupported/oipkgoipkg.pro |
119 | CONFIG_OPIEALARMcore/opiealarm | 119 | CONFIG_OPIEALARMcore/opiealarm |
120 | CONFIG_OPIE-CONSOLE noncore/apps/opie-consoleopie-console.pro | 120 | CONFIG_OPIE-CONSOLE noncore/apps/opie-consoleopie-console.pro |
121 | CONFIG_OPIEFTP noncore/net/opieftpopieftp.pro | 121 | CONFIG_OPIEFTP noncore/net/opieftpopieftp.pro |
122 | CONFIG_OPIEIRC noncore/net/opieircopieirc.pro | 122 | CONFIG_OPIEIRC noncore/net/opieircopieirc.pro |
123 | CONFIG_OPIE-LOGIN core/opie-loginopie-login.pro | 123 | CONFIG_OPIE-LOGIN core/opie-loginopie-login.pro |
124 | CONFIG_OPIEMAIL2noncore/unsupported/mail2 mail.pro | 124 | CONFIG_OPIEMAIL2noncore/unsupported/mail2 mail.pro |
125 | CONFIG_OPIEPLAYER2 noncore/multimedia/opieplayer2opieplayer2.pro | 125 | CONFIG_OPIEPLAYER2 noncore/multimedia/opieplayer2opieplayer2.pro |
126 | CONFIG_OPIEPLAYER core/multimedia/opieplayeropieplayer.pro | 126 | CONFIG_OPIEPLAYER core/multimedia/opieplayeropieplayer.pro |
127 | CONFIG_OPIE-RDESKTOP noncore/net/opierdesktopopierdesktop.pro | 127 | CONFIG_OPIE-RDESKTOP noncore/net/opierdesktopopierdesktop.pro |
128 | CONFIG_OPIE-READER noncore/apps/opie-readeropie-reader.pro | 128 | CONFIG_OPIE-READER noncore/apps/opie-readeropie-reader.pro |
129 | CONFIG_OPIEREC noncore/multimedia/opierecopierec.pro | 129 | CONFIG_OPIEREC noncore/multimedia/opierecopierec.pro |
130 | CONFIG_OPIE-SHEET noncore/apps/opie-sheetopie-sheet.pro | 130 | CONFIG_OPIE-SHEET noncore/apps/opie-sheetopie-sheet.pro |
131 | CONFIG_OPIE-SH noncore/tools/opie-shopie-sh.pro | 131 | CONFIG_OPIE-SH noncore/tools/opie-shopie-sh.pro |
132 | CONFIG_OPIETOOTH-APPLET noncore/net/opietooth/appletapplet.pro | 132 | CONFIG_OPIETOOTH-APPLET noncore/net/opietooth/appletapplet.pro |
133 | CONFIG_OPIETOOTH-MANAGER noncore/net/opietooth/managermanager.pro | 133 | CONFIG_OPIETOOTH-MANAGER noncore/net/opietooth/managermanager.pro |
134 | CONFIG_OPIE-WRITE noncore/apps/opie-writeopie-write.pro | 134 | CONFIG_OPIE-WRITE noncore/apps/opie-writeopie-write.pro |
135 | CONFIG_OSEARCH core/pim/osearchosearch.pro | 135 | CONFIG_OSEARCH core/pim/osearchosearch.pro |
136 | CONFIG_OXYGEN noncore/apps/oxygenoxygen.pro | 136 | CONFIG_OXYGEN noncore/apps/oxygenoxygen.pro |
137 | CONFIG_PACKAGEMANAGER noncore/settings/packagemanagerpackagemanager.pro | 137 | CONFIG_PACKAGEMANAGER noncore/settings/packagemanagerpackagemanager.pro |
138 | CONFIG_PARASHOOT noncore/games/parashootparashoot.pro | 138 | CONFIG_PARASHOOT noncore/games/parashootparashoot.pro |
139 | CONFIG_PICKBOARD inputmethods/pickboardpickboard.pro | 139 | CONFIG_PICKBOARD inputmethods/pickboardpickboard.pro |
140 | CONFIG_POWERCHORD noncore/multimedia/powerchordpowerchord.pro | 140 | CONFIG_POWERCHORD noncore/multimedia/powerchordpowerchord.pro |
141 | CONFIG_PPP noncore/settings/networksettings/ppp ppp.pro | 141 | CONFIG_PPP noncore/settings/networksettings/ppp ppp.pro |
142 | CONFIG_QASHMONEY noncore/apps/qashmoneyqashmoney.pro | 142 | CONFIG_QASHMONEY noncore/apps/qashmoneyqashmoney.pro |
143 | CONFIG_QASTEROIDS noncore/games/qasteroidsqasteroids.pro | 143 | CONFIG_QASTEROIDS noncore/games/qasteroidsqasteroids.pro |
144 | CONFIG_QCOP core/apps/qcopqcop.pro | 144 | CONFIG_QCOP core/apps/qcopqcop.pro |
145 | CONFIG_QPDF noncore/unsupported/qpdfqpdf.pro | 145 | CONFIG_QPDF noncore/unsupported/qpdfqpdf.pro |
146 | CONFIG_QUICKLAUNCHER core/tools/quicklauncher quicklauncher.pro | 146 | CONFIG_QUICKLAUNCHER core/tools/quicklauncher quicklauncher.pro |
147 | CONFIG_QWS core/qwsqws.pro | 147 | CONFIG_QWS core/qwsqws.pro |
148 | CONFIG_REMOTE noncore/tools/remoteremote.pro | 148 | CONFIG_REMOTE noncore/tools/remoteremote.pro |
149 | CONFIG_RESTARTAPPLET2 core/applets/restartapplet2restartapplet2.pro | 149 | CONFIG_RESTARTAPPLET2 core/applets/restartapplet2restartapplet2.pro |
150 | CONFIG_RESTARTAPPLET core/applets/restartappletrestartapplet.pro | 150 | CONFIG_RESTARTAPPLET core/applets/restartappletrestartapplet.pro |
151 | CONFIG_ROTATEAPPLET core/applets/rotateappletrotateapplet.pro | 151 | CONFIG_ROTATEAPPLET core/applets/rotateappletrotateapplet.pro |
152 | CONFIG_ROTATION noncore/settings/rotationrotation.pro | 152 | CONFIG_ROTATION noncore/settings/rotationrotation.pro |
153 | CONFIG_RUNAPPLET core/applets/runappletrunapplet.pro | 153 | CONFIG_RUNAPPLET core/applets/runappletrunapplet.pro |
154 | CONFIG_SCREENSHOTAPPLET core/applets/screenshotappletscreenshotapplet.pro | 154 | CONFIG_SCREENSHOTAPPLET core/applets/screenshotappletscreenshotapplet.pro |
155 | CONFIG_SECURITY core/settings/securitysecurity.pro | 155 | CONFIG_SECURITY core/settings/securitysecurity.pro |
156 | CONFIG_SFCAVE noncore/games/sfcavesfcave.pro | 156 | CONFIG_SFCAVE noncore/games/sfcavesfcave.pro |
157 | CONFIG_SFCAVE-SDL noncore/games/sfcave-sdlsfcave-sdl.pro | 157 | CONFIG_SFCAVE-SDL noncore/games/sfcave-sdlsfcave-sdl.pro |
158 | CONFIG_SHOWIMG noncore/multimedia/showimgshowimg.pro | 158 | CONFIG_SHOWIMG noncore/multimedia/showimgshowimg.pro |
159 | CONFIG_SIMPLE_EXAMPLE examples/simple example.pro | 159 | CONFIG_SIMPLE_EXAMPLE examples/simple example.pro |
160 | CONFIG_SIMPLE_ICON examples/simple-icon example.pro | 160 | CONFIG_SIMPLE_ICON examples/simple-icon example.pro |
161 | CONFIG_SIMPLE_MAIN examples/simple-main example.pro | 161 | CONFIG_SIMPLE_MAIN examples/simple-main example.pro |
162 | CONFIG_SIMPLE noncore/tools/calc2/simplesimple.pro | 162 | CONFIG_SIMPLE noncore/tools/calc2/simplesimple.pro |
163 | CONFIG_SIMPLE_PIM examples/simple-pim example.pro | 163 | CONFIG_SIMPLE_PIM examples/simple-pim example.pro |
164 | CONFIG_SINGLE singlesingle.pro | 164 | CONFIG_SINGLE singlesingle.pro |
165 | CONFIG_SNAKE noncore/games/snakesnake.pro | 165 | CONFIG_SNAKE noncore/games/snakesnake.pro |
166 | CONFIG_SOLITAIRE noncore/games/solitairesolitaire.pro | 166 | CONFIG_SOLITAIRE noncore/games/solitairesolitaire.pro |
167 | CONFIG_SOUND noncore/settings/soundsound.pro | 167 | CONFIG_SOUND noncore/settings/soundsound.pro |
168 | CONFIG_SSHKEYS noncore/settings/sshkeyssshkeys.pro | 168 | CONFIG_SSHKEYS noncore/settings/sshkeyssshkeys.pro |
169 | CONFIG_SUSPENDAPPLET core/applets/suspendappletsuspendapplet.pro | 169 | CONFIG_SUSPENDAPPLET core/applets/suspendappletsuspendapplet.pro |
170 | CONFIG_SYMLINKER core/symlinker symlinker.pro | ||
170 | CONFIG_SYSINFO noncore/settings/sysinfosysinfo.pro | 171 | CONFIG_SYSINFO noncore/settings/sysinfosysinfo.pro |
171 | CONFIG_TABLEVIEWER noncore/apps/tableviewertableviewer.pro | 172 | CONFIG_TABLEVIEWER noncore/apps/tableviewertableviewer.pro |
172 | CONFIG_TABMANAGER noncore/settings/tabmanagertabmanager.pro | 173 | CONFIG_TABMANAGER noncore/settings/tabmanagertabmanager.pro |
173 | CONFIG_TABOAPP core/apps/taboapptaboapp.pro | 174 | CONFIG_TABOAPP core/apps/taboapptaboapp.pro |
174 | CONFIG_TEST libsql/testtest.pro | 175 | CONFIG_TEST libsql/testtest.pro |
175 | CONFIG_TEST noncore/apps/opie-console/testtest.pro | 176 | CONFIG_TEST noncore/apps/opie-console/testtest.pro |
176 | CONFIG_TETRIX noncore/games/tetrixtetrix.pro | 177 | CONFIG_TETRIX noncore/games/tetrixtetrix.pro |
177 | CONFIG_TEXTEDIT core/apps/textedittextedit.pro | 178 | CONFIG_TEXTEDIT core/apps/textedittextedit.pro |
178 | CONFIG_THEME noncore/styles/themetheme.pro | 179 | CONFIG_THEME noncore/styles/themetheme.pro |
179 | CONFIG_TICTAC noncore/games/tictactictac.pro | 180 | CONFIG_TICTAC noncore/games/tictactictac.pro |
180 | CONFIG_TINYKATE noncore/apps/tinykatetinykate.pro | 181 | CONFIG_TINYKATE noncore/apps/tinykatetinykate.pro |
181 | CONFIG_TODAY_ADDRESSBOOK core/pim/today/plugins/addressbook addressbook.pro | 182 | CONFIG_TODAY_ADDRESSBOOK core/pim/today/plugins/addressbook addressbook.pro |
182 | CONFIG_TODAY core/pim/todaytoday.pro | 183 | CONFIG_TODAY core/pim/todaytoday.pro |
183 | CONFIG_TODAY_DATEBOOK core/pim/today/plugins/datebookdatebook.pro | 184 | CONFIG_TODAY_DATEBOOK core/pim/today/plugins/datebookdatebook.pro |
184 | CONFIG_TODAY_EXAMPLE examples/todayplugin example.pro | 185 | CONFIG_TODAY_EXAMPLE examples/todayplugin example.pro |
185 | CONFIG_TODAY_FORTUNE noncore/todayplugins/fortunefortune.pro | 186 | CONFIG_TODAY_FORTUNE noncore/todayplugins/fortunefortune.pro |
186 | CONFIG_TODAY_MAIL core/pim/today/plugins/mailmail.pro | 187 | CONFIG_TODAY_MAIL core/pim/today/plugins/mailmail.pro |
187 | CONFIG_TODAY_STOCKTICKERLIB noncore/todayplugins/stockticker/stocktickerlibstocktickerlib.pro | 188 | CONFIG_TODAY_STOCKTICKERLIB noncore/todayplugins/stockticker/stocktickerlibstocktickerlib.pro |
188 | CONFIG_TODAY_STOCKTICKER noncore/todayplugins/stockticker/stocktickerstockticker.pro | 189 | CONFIG_TODAY_STOCKTICKER noncore/todayplugins/stockticker/stocktickerstockticker.pro |
189 | CONFIG_TODAY_TODOLIST core/pim/today/plugins/todolisttodolist.pro | 190 | CONFIG_TODAY_TODOLIST core/pim/today/plugins/todolisttodolist.pro |
190 | CONFIG_TODAY_WEATHERnoncore/todayplugins/weather weather.pro | 191 | CONFIG_TODAY_WEATHERnoncore/todayplugins/weather weather.pro |
191 | CONFIG_TODO core/pim/todotodo.pro | 192 | CONFIG_TODO core/pim/todotodo.pro |
192 | CONFIG_TONLEITER noncore/multimedia/tonleitertonleiter.pro | 193 | CONFIG_TONLEITER noncore/multimedia/tonleitertonleiter.pro |
193 | CONFIG_TRACKER noncore/multimedia/trackertracker.pro | 194 | CONFIG_TRACKER noncore/multimedia/trackertracker.pro |
194 | CONFIG_UBROWSER noncore/net/ubrowserubrowser.pro | 195 | CONFIG_UBROWSER noncore/net/ubrowserubrowser.pro |
195 | CONFIG_UNIKEYBOARD inputmethods/unikeyboardunikeyboard.pro | 196 | CONFIG_UNIKEYBOARD inputmethods/unikeyboardunikeyboard.pro |
196 | CONFIG_USERMANAGER noncore/settings/usermanagerusermanager.pro | 197 | CONFIG_USERMANAGER noncore/settings/usermanagerusermanager.pro |
197 | CONFIG_VMEMO core/applets/vmemovmemo.pro | 198 | CONFIG_VMEMO core/applets/vmemovmemo.pro |
198 | CONFIG_VOLUMEAPPLET core/applets/volumeappletvolumeapplet.pro | 199 | CONFIG_VOLUMEAPPLET core/applets/volumeappletvolumeapplet.pro |
199 | CONFIG_VTAPPLET core/applets/vtappletvtapplet.pro | 200 | CONFIG_VTAPPLET core/applets/vtappletvtapplet.pro |
200 | CONFIG_WAVPLUGIN core/multimedia/opieplayer/wavpluginwavplugin.pro | 201 | CONFIG_WAVPLUGIN core/multimedia/opieplayer/wavpluginwavplugin.pro |
201 | CONFIG_WELLENREITER noncore/net/wellenreiterwellenreiter.pro | 202 | CONFIG_WELLENREITER noncore/net/wellenreiterwellenreiter.pro |
202 | CONFIG_WIRELESSAPPLET noncore/applets/wirelessappletwirelessapplet.pro | 203 | CONFIG_WIRELESSAPPLET noncore/applets/wirelessappletwirelessapplet.pro |
203 | CONFIG_WLAN noncore/settings/networksettings/wlanwlan.pro | 204 | CONFIG_WLAN noncore/settings/networksettings/wlanwlan.pro |
204 | CONFIG_WORDGAME noncore/games/wordgamewordgame.pro | 205 | CONFIG_WORDGAME noncore/games/wordgamewordgame.pro |
205 | CONFIG_YATZEE noncore/games/oyatzeeoyatzee.pro | 206 | CONFIG_YATZEE noncore/games/oyatzeeoyatzee.pro |
206 | CONFIG_ZKBAPPLET noncore/applets/zkbapplet zkbapplet.pro | 207 | CONFIG_ZKBAPPLET noncore/applets/zkbapplet zkbapplet.pro |
207 | CONFIG_ZLINES noncore/games/zlines zlines.pro | 208 | CONFIG_ZLINES noncore/games/zlines zlines.pro |
208 | CONFIG_ZSAFEnoncore/apps/zsafe zsafe.pro | 209 | CONFIG_ZSAFEnoncore/apps/zsafe zsafe.pro |
209 | CONFIG_ZSAME noncore/games/zsame zsame.pro | 210 | CONFIG_ZSAME noncore/games/zsame zsame.pro |