Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : //-----------------------------------------------
30 : : // include own files
31 : :
32 : : #include "acccfg.hxx"
33 : : #include "cfgutil.hxx"
34 : : #include <dialmgr.hxx>
35 : :
36 : : #include <sfx2/msg.hxx>
37 : : #include <sfx2/app.hxx>
38 : : #include <sfx2/filedlghelper.hxx>
39 : : #include <sfx2/minfitem.hxx>
40 : : #include <sfx2/sfxresid.hxx>
41 : : #include <svl/stritem.hxx>
42 : :
43 : : #include <sal/macros.h>
44 : :
45 : : #include "cuires.hrc"
46 : : #include "acccfg.hrc"
47 : :
48 : : #include <svx/svxids.hrc> // SID_CHARMAP, SID_ATTR_SPECIALCHAR
49 : :
50 : : //-----------------------------------------------
51 : : // include interface declarations
52 : : #include <com/sun/star/frame/XFramesSupplier.hpp>
53 : : #include <com/sun/star/frame/XFrame.hpp>
54 : : #include <com/sun/star/frame/XController.hpp>
55 : : #include <com/sun/star/frame/XModel.hpp>
56 : : #include <com/sun/star/form/XReset.hpp>
57 : : #include <com/sun/star/ui/XModuleUIConfigurationManagerSupplier.hpp>
58 : : #include <com/sun/star/frame/XModuleManager.hpp>
59 : :
60 : : #include <com/sun/star/ui/XUIConfigurationManagerSupplier.hpp>
61 : : #include <com/sun/star/ui/XUIConfigurationManager.hpp>
62 : : #include <com/sun/star/awt/KeyModifier.hpp>
63 : : #include <com/sun/star/embed/XTransactedObject.hpp>
64 : : #include <com/sun/star/embed/ElementModes.hpp>
65 : :
66 : : #include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
67 : :
68 : : //-----------------------------------------------
69 : : // include other projects
70 : : #include <comphelper/processfactory.hxx>
71 : : #include <svtools/acceleratorexecute.hxx>
72 : : #include <svtools/svlbitm.hxx>
73 : : #include <vcl/svapp.hxx>
74 : : #include <vcl/help.hxx>
75 : : #include <rtl/ustrbuf.hxx>
76 : : #include <comphelper/sequenceashashmap.hxx>
77 : :
78 : : //-----------------------------------------------
79 : : // namespaces
80 : :
81 : : #ifdef css
82 : : #error "ambigous praeprozessor directive for css ..."
83 : : #else
84 : : namespace css = ::com::sun::star;
85 : : #endif
86 : :
87 : : using namespace com::sun::star;
88 : :
89 : :
90 : : //-----------------------------------------------
91 : 3 : static ::rtl::OUString SERVICE_STORAGEFACTORY (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.embed.StorageFactory" ));
92 : 3 : static ::rtl::OUString SERVICE_UICONFIGMGR (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.UIConfigurationManager" ));
93 : 3 : static ::rtl::OUString SERVICE_DESKTOP (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.Desktop" ));
94 : 3 : static ::rtl::OUString SERVICE_MODULEMANAGER (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.ModuleManager" ));
95 : 3 : static ::rtl::OUString SERVICE_GLOBALACCCFG (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.GlobalAcceleratorConfiguration" ));
96 : 3 : static ::rtl::OUString SERVICE_MODULEUICONFIGSUPPLIER (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ui.ModuleUIConfigurationManagerSupplier"));
97 : 3 : static ::rtl::OUString SERVICE_UICMDDESCRIPTION (RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.UICommandDescription" ));
98 : :
99 : 3 : static ::rtl::OUString MODULEPROP_SHORTNAME (RTL_CONSTASCII_USTRINGPARAM("ooSetupFactoryShortName" ));
100 : 3 : static ::rtl::OUString MODULEPROP_UINAME (RTL_CONSTASCII_USTRINGPARAM("ooSetupFactoryUIName" ));
101 : 3 : static ::rtl::OUString CMDPROP_UINAME (RTL_CONSTASCII_USTRINGPARAM("Name" ));
102 : :
103 : 3 : static ::rtl::OUString FOLDERNAME_UICONFIG (RTL_CONSTASCII_USTRINGPARAM("Configurations2" ));
104 : :
105 : 3 : static ::rtl::OUString MEDIATYPE_PROPNAME (RTL_CONSTASCII_USTRINGPARAM("MediaType" ));
106 : 3 : static ::rtl::OUString MEDIATYPE_UICONFIG (RTL_CONSTASCII_USTRINGPARAM("application/vnd.sun.xml.ui.configuration" ));
107 : :
108 : : //-----------------------------------------------
109 : : static sal_uInt16 KEYCODE_ARRAY[] =
110 : : {
111 : : KEY_F1 ,
112 : : KEY_F2 ,
113 : : KEY_F3 ,
114 : : KEY_F4 ,
115 : : KEY_F5 ,
116 : : KEY_F6 ,
117 : : KEY_F7 ,
118 : : KEY_F8 ,
119 : : KEY_F9 ,
120 : : KEY_F10 ,
121 : : KEY_F11 ,
122 : : KEY_F12 ,
123 : : KEY_F13 ,
124 : : KEY_F14 ,
125 : : KEY_F15 ,
126 : : KEY_F16 ,
127 : :
128 : : KEY_DOWN ,
129 : : KEY_UP ,
130 : : KEY_LEFT ,
131 : : KEY_RIGHT ,
132 : : KEY_HOME ,
133 : : KEY_END ,
134 : : KEY_PAGEUP ,
135 : : KEY_PAGEDOWN ,
136 : : KEY_RETURN ,
137 : : KEY_ESCAPE ,
138 : : KEY_BACKSPACE,
139 : : KEY_INSERT ,
140 : : KEY_DELETE ,
141 : :
142 : : KEY_OPEN ,
143 : : KEY_CUT ,
144 : : KEY_COPY ,
145 : : KEY_PASTE ,
146 : : KEY_UNDO ,
147 : : KEY_REPEAT ,
148 : : KEY_FIND ,
149 : : KEY_PROPERTIES ,
150 : : KEY_FRONT ,
151 : : KEY_CONTEXTMENU ,
152 : : KEY_MENU ,
153 : : KEY_HELP ,
154 : :
155 : : KEY_F1 | KEY_SHIFT,
156 : : KEY_F2 | KEY_SHIFT,
157 : : KEY_F3 | KEY_SHIFT,
158 : : KEY_F4 | KEY_SHIFT,
159 : : KEY_F5 | KEY_SHIFT,
160 : : KEY_F6 | KEY_SHIFT,
161 : : KEY_F7 | KEY_SHIFT,
162 : : KEY_F8 | KEY_SHIFT,
163 : : KEY_F9 | KEY_SHIFT,
164 : : KEY_F10 | KEY_SHIFT,
165 : : KEY_F11 | KEY_SHIFT,
166 : : KEY_F12 | KEY_SHIFT,
167 : : KEY_F13 | KEY_SHIFT,
168 : : KEY_F14 | KEY_SHIFT,
169 : : KEY_F15 | KEY_SHIFT,
170 : : KEY_F16 | KEY_SHIFT,
171 : :
172 : : KEY_DOWN | KEY_SHIFT,
173 : : KEY_UP | KEY_SHIFT,
174 : : KEY_LEFT | KEY_SHIFT,
175 : : KEY_RIGHT | KEY_SHIFT,
176 : : KEY_HOME | KEY_SHIFT,
177 : : KEY_END | KEY_SHIFT,
178 : : KEY_PAGEUP | KEY_SHIFT,
179 : : KEY_PAGEDOWN | KEY_SHIFT,
180 : : KEY_RETURN | KEY_SHIFT,
181 : : KEY_SPACE | KEY_SHIFT,
182 : : KEY_ESCAPE | KEY_SHIFT,
183 : : KEY_BACKSPACE | KEY_SHIFT,
184 : : KEY_INSERT | KEY_SHIFT,
185 : : KEY_DELETE | KEY_SHIFT,
186 : :
187 : : KEY_0 | KEY_MOD1 ,
188 : : KEY_1 | KEY_MOD1 ,
189 : : KEY_2 | KEY_MOD1 ,
190 : : KEY_3 | KEY_MOD1 ,
191 : : KEY_4 | KEY_MOD1 ,
192 : : KEY_5 | KEY_MOD1 ,
193 : : KEY_6 | KEY_MOD1 ,
194 : : KEY_7 | KEY_MOD1 ,
195 : : KEY_8 | KEY_MOD1 ,
196 : : KEY_9 | KEY_MOD1 ,
197 : : KEY_A | KEY_MOD1 ,
198 : : KEY_B | KEY_MOD1 ,
199 : : KEY_C | KEY_MOD1 ,
200 : : KEY_D | KEY_MOD1 ,
201 : : KEY_E | KEY_MOD1 ,
202 : : KEY_F | KEY_MOD1 ,
203 : : KEY_G | KEY_MOD1 ,
204 : : KEY_H | KEY_MOD1 ,
205 : : KEY_I | KEY_MOD1 ,
206 : : KEY_J | KEY_MOD1 ,
207 : : KEY_K | KEY_MOD1 ,
208 : : KEY_L | KEY_MOD1 ,
209 : : KEY_M | KEY_MOD1 ,
210 : : KEY_N | KEY_MOD1 ,
211 : : KEY_O | KEY_MOD1 ,
212 : : KEY_P | KEY_MOD1 ,
213 : : KEY_Q | KEY_MOD1 ,
214 : : KEY_R | KEY_MOD1 ,
215 : : KEY_S | KEY_MOD1 ,
216 : : KEY_T | KEY_MOD1 ,
217 : : KEY_U | KEY_MOD1 ,
218 : : KEY_V | KEY_MOD1 ,
219 : : KEY_W | KEY_MOD1 ,
220 : : KEY_X | KEY_MOD1 ,
221 : : KEY_Y | KEY_MOD1 ,
222 : : KEY_Z | KEY_MOD1 ,
223 : : KEY_SEMICOLON | KEY_MOD1 ,
224 : : KEY_BRACKETLEFT | KEY_MOD1 ,
225 : : KEY_BRACKETRIGHT | KEY_MOD1,
226 : : KEY_POINT | KEY_MOD1 ,
227 : :
228 : : KEY_F1 | KEY_MOD1 ,
229 : : KEY_F2 | KEY_MOD1 ,
230 : : KEY_F3 | KEY_MOD1 ,
231 : : KEY_F4 | KEY_MOD1 ,
232 : : KEY_F5 | KEY_MOD1 ,
233 : : KEY_F6 | KEY_MOD1 ,
234 : : KEY_F7 | KEY_MOD1 ,
235 : : KEY_F8 | KEY_MOD1 ,
236 : : KEY_F9 | KEY_MOD1 ,
237 : : KEY_F10 | KEY_MOD1 ,
238 : : KEY_F11 | KEY_MOD1 ,
239 : : KEY_F12 | KEY_MOD1 ,
240 : : KEY_F13 | KEY_MOD1 ,
241 : : KEY_F14 | KEY_MOD1 ,
242 : : KEY_F15 | KEY_MOD1 ,
243 : : KEY_F16 | KEY_MOD1 ,
244 : :
245 : : KEY_DOWN | KEY_MOD1 ,
246 : : KEY_UP | KEY_MOD1 ,
247 : : KEY_LEFT | KEY_MOD1 ,
248 : : KEY_RIGHT | KEY_MOD1 ,
249 : : KEY_HOME | KEY_MOD1 ,
250 : : KEY_END | KEY_MOD1 ,
251 : : KEY_PAGEUP | KEY_MOD1 ,
252 : : KEY_PAGEDOWN | KEY_MOD1 ,
253 : : KEY_RETURN | KEY_MOD1 ,
254 : : KEY_SPACE | KEY_MOD1 ,
255 : : KEY_BACKSPACE | KEY_MOD1 ,
256 : : KEY_INSERT | KEY_MOD1 ,
257 : : KEY_DELETE | KEY_MOD1 ,
258 : :
259 : : KEY_ADD | KEY_MOD1 ,
260 : : KEY_SUBTRACT | KEY_MOD1 ,
261 : : KEY_MULTIPLY | KEY_MOD1 ,
262 : : KEY_DIVIDE | KEY_MOD1 ,
263 : :
264 : : KEY_0 | KEY_SHIFT | KEY_MOD1,
265 : : KEY_1 | KEY_SHIFT | KEY_MOD1,
266 : : KEY_2 | KEY_SHIFT | KEY_MOD1,
267 : : KEY_3 | KEY_SHIFT | KEY_MOD1,
268 : : KEY_4 | KEY_SHIFT | KEY_MOD1,
269 : : KEY_5 | KEY_SHIFT | KEY_MOD1,
270 : : KEY_6 | KEY_SHIFT | KEY_MOD1,
271 : : KEY_7 | KEY_SHIFT | KEY_MOD1,
272 : : KEY_8 | KEY_SHIFT | KEY_MOD1,
273 : : KEY_9 | KEY_SHIFT | KEY_MOD1,
274 : : KEY_A | KEY_SHIFT | KEY_MOD1,
275 : : KEY_B | KEY_SHIFT | KEY_MOD1,
276 : : KEY_C | KEY_SHIFT | KEY_MOD1,
277 : : KEY_D | KEY_SHIFT | KEY_MOD1,
278 : : KEY_E | KEY_SHIFT | KEY_MOD1,
279 : : KEY_F | KEY_SHIFT | KEY_MOD1,
280 : : KEY_G | KEY_SHIFT | KEY_MOD1,
281 : : KEY_H | KEY_SHIFT | KEY_MOD1,
282 : : KEY_I | KEY_SHIFT | KEY_MOD1,
283 : : KEY_J | KEY_SHIFT | KEY_MOD1,
284 : : KEY_K | KEY_SHIFT | KEY_MOD1,
285 : : KEY_L | KEY_SHIFT | KEY_MOD1,
286 : : KEY_M | KEY_SHIFT | KEY_MOD1,
287 : : KEY_N | KEY_SHIFT | KEY_MOD1,
288 : : KEY_O | KEY_SHIFT | KEY_MOD1,
289 : : KEY_P | KEY_SHIFT | KEY_MOD1,
290 : : KEY_Q | KEY_SHIFT | KEY_MOD1,
291 : : KEY_R | KEY_SHIFT | KEY_MOD1,
292 : : KEY_S | KEY_SHIFT | KEY_MOD1,
293 : : KEY_T | KEY_SHIFT | KEY_MOD1,
294 : : KEY_U | KEY_SHIFT | KEY_MOD1,
295 : : KEY_V | KEY_SHIFT | KEY_MOD1,
296 : : KEY_W | KEY_SHIFT | KEY_MOD1,
297 : : KEY_X | KEY_SHIFT | KEY_MOD1,
298 : : KEY_Y | KEY_SHIFT | KEY_MOD1,
299 : : KEY_Z | KEY_SHIFT | KEY_MOD1,
300 : : KEY_SEMICOLON | KEY_SHIFT | KEY_MOD1 ,
301 : : KEY_BRACKETLEFT | KEY_SHIFT | KEY_MOD1 ,
302 : : KEY_BRACKETRIGHT | KEY_SHIFT | KEY_MOD1,
303 : : KEY_POINT | KEY_SHIFT | KEY_MOD1,
304 : :
305 : : KEY_F1 | KEY_SHIFT | KEY_MOD1,
306 : : KEY_F2 | KEY_SHIFT | KEY_MOD1,
307 : : KEY_F3 | KEY_SHIFT | KEY_MOD1,
308 : : KEY_F4 | KEY_SHIFT | KEY_MOD1,
309 : : KEY_F5 | KEY_SHIFT | KEY_MOD1,
310 : : KEY_F6 | KEY_SHIFT | KEY_MOD1,
311 : : KEY_F7 | KEY_SHIFT | KEY_MOD1,
312 : : KEY_F8 | KEY_SHIFT | KEY_MOD1,
313 : : KEY_F9 | KEY_SHIFT | KEY_MOD1,
314 : : KEY_F10 | KEY_SHIFT | KEY_MOD1,
315 : : KEY_F11 | KEY_SHIFT | KEY_MOD1,
316 : : KEY_F12 | KEY_SHIFT | KEY_MOD1,
317 : : KEY_F13 | KEY_SHIFT | KEY_MOD1,
318 : : KEY_F14 | KEY_SHIFT | KEY_MOD1,
319 : : KEY_F15 | KEY_SHIFT | KEY_MOD1,
320 : : KEY_F16 | KEY_SHIFT | KEY_MOD1,
321 : :
322 : : KEY_DOWN | KEY_SHIFT | KEY_MOD1,
323 : : KEY_UP | KEY_SHIFT | KEY_MOD1,
324 : : KEY_LEFT | KEY_SHIFT | KEY_MOD1,
325 : : KEY_RIGHT | KEY_SHIFT | KEY_MOD1,
326 : : KEY_HOME | KEY_SHIFT | KEY_MOD1,
327 : : KEY_END | KEY_SHIFT | KEY_MOD1,
328 : : KEY_PAGEUP | KEY_SHIFT | KEY_MOD1,
329 : : KEY_PAGEDOWN | KEY_SHIFT | KEY_MOD1,
330 : : KEY_RETURN | KEY_SHIFT | KEY_MOD1,
331 : : KEY_SPACE | KEY_SHIFT | KEY_MOD1,
332 : : KEY_BACKSPACE | KEY_SHIFT | KEY_MOD1,
333 : : KEY_INSERT | KEY_SHIFT | KEY_MOD1,
334 : : KEY_DELETE | KEY_SHIFT | KEY_MOD1,
335 : :
336 : : KEY_0 | KEY_MOD2 ,
337 : : KEY_1 | KEY_MOD2 ,
338 : : KEY_2 | KEY_MOD2 ,
339 : : KEY_3 | KEY_MOD2 ,
340 : : KEY_4 | KEY_MOD2 ,
341 : : KEY_5 | KEY_MOD2 ,
342 : : KEY_6 | KEY_MOD2 ,
343 : : KEY_7 | KEY_MOD2 ,
344 : : KEY_8 | KEY_MOD2 ,
345 : : KEY_9 | KEY_MOD2 ,
346 : : KEY_A | KEY_MOD2 ,
347 : : KEY_B | KEY_MOD2 ,
348 : : KEY_C | KEY_MOD2 ,
349 : : KEY_D | KEY_MOD2 ,
350 : : KEY_E | KEY_MOD2 ,
351 : : KEY_F | KEY_MOD2 ,
352 : : KEY_G | KEY_MOD2 ,
353 : : KEY_H | KEY_MOD2 ,
354 : : KEY_I | KEY_MOD2 ,
355 : : KEY_J | KEY_MOD2 ,
356 : : KEY_K | KEY_MOD2 ,
357 : : KEY_L | KEY_MOD2 ,
358 : : KEY_M | KEY_MOD2 ,
359 : : KEY_N | KEY_MOD2 ,
360 : : KEY_O | KEY_MOD2 ,
361 : : KEY_P | KEY_MOD2 ,
362 : : KEY_Q | KEY_MOD2 ,
363 : : KEY_R | KEY_MOD2 ,
364 : : KEY_S | KEY_MOD2 ,
365 : : KEY_T | KEY_MOD2 ,
366 : : KEY_U | KEY_MOD2 ,
367 : : KEY_V | KEY_MOD2 ,
368 : : KEY_W | KEY_MOD2 ,
369 : : KEY_X | KEY_MOD2 ,
370 : : KEY_Y | KEY_MOD2 ,
371 : : KEY_Z | KEY_MOD2 ,
372 : : KEY_SEMICOLON | KEY_MOD2 ,
373 : : KEY_BRACKETLEFT | KEY_MOD2 ,
374 : : KEY_BRACKETRIGHT | KEY_MOD2,
375 : : KEY_POINT | KEY_MOD2 ,
376 : :
377 : : KEY_F1 | KEY_MOD2 ,
378 : : KEY_F2 | KEY_MOD2 ,
379 : : KEY_F3 | KEY_MOD2 ,
380 : : KEY_F4 | KEY_MOD2 ,
381 : : KEY_F5 | KEY_MOD2 ,
382 : : KEY_F6 | KEY_MOD2 ,
383 : : KEY_F7 | KEY_MOD2 ,
384 : : KEY_F8 | KEY_MOD2 ,
385 : : KEY_F9 | KEY_MOD2 ,
386 : : KEY_F10 | KEY_MOD2 ,
387 : : KEY_F11 | KEY_MOD2 ,
388 : : KEY_F12 | KEY_MOD2 ,
389 : : KEY_F13 | KEY_MOD2 ,
390 : : KEY_F14 | KEY_MOD2 ,
391 : : KEY_F15 | KEY_MOD2 ,
392 : : KEY_F16 | KEY_MOD2 ,
393 : :
394 : : KEY_DOWN | KEY_MOD2 ,
395 : : KEY_UP | KEY_MOD2 ,
396 : : KEY_LEFT | KEY_MOD2 ,
397 : : KEY_RIGHT | KEY_MOD2 ,
398 : : KEY_HOME | KEY_MOD2 ,
399 : : KEY_END | KEY_MOD2 ,
400 : : KEY_PAGEUP | KEY_MOD2 ,
401 : : KEY_PAGEDOWN | KEY_MOD2 ,
402 : : KEY_RETURN | KEY_MOD2 ,
403 : : KEY_SPACE | KEY_MOD2 ,
404 : : KEY_BACKSPACE | KEY_MOD2 ,
405 : : KEY_INSERT | KEY_MOD2 ,
406 : : KEY_DELETE | KEY_MOD2 ,
407 : :
408 : : KEY_0 | KEY_SHIFT | KEY_MOD2,
409 : : KEY_1 | KEY_SHIFT | KEY_MOD2,
410 : : KEY_2 | KEY_SHIFT | KEY_MOD2,
411 : : KEY_3 | KEY_SHIFT | KEY_MOD2,
412 : : KEY_4 | KEY_SHIFT | KEY_MOD2,
413 : : KEY_5 | KEY_SHIFT | KEY_MOD2,
414 : : KEY_6 | KEY_SHIFT | KEY_MOD2,
415 : : KEY_7 | KEY_SHIFT | KEY_MOD2,
416 : : KEY_8 | KEY_SHIFT | KEY_MOD2,
417 : : KEY_9 | KEY_SHIFT | KEY_MOD2,
418 : : KEY_A | KEY_SHIFT | KEY_MOD2,
419 : : KEY_B | KEY_SHIFT | KEY_MOD2,
420 : : KEY_C | KEY_SHIFT | KEY_MOD2,
421 : : KEY_D | KEY_SHIFT | KEY_MOD2,
422 : : KEY_E | KEY_SHIFT | KEY_MOD2,
423 : : KEY_F | KEY_SHIFT | KEY_MOD2,
424 : : KEY_G | KEY_SHIFT | KEY_MOD2,
425 : : KEY_H | KEY_SHIFT | KEY_MOD2,
426 : : KEY_I | KEY_SHIFT | KEY_MOD2,
427 : : KEY_J | KEY_SHIFT | KEY_MOD2,
428 : : KEY_K | KEY_SHIFT | KEY_MOD2,
429 : : KEY_L | KEY_SHIFT | KEY_MOD2,
430 : : KEY_M | KEY_SHIFT | KEY_MOD2,
431 : : KEY_N | KEY_SHIFT | KEY_MOD2,
432 : : KEY_O | KEY_SHIFT | KEY_MOD2,
433 : : KEY_P | KEY_SHIFT | KEY_MOD2,
434 : : KEY_Q | KEY_SHIFT | KEY_MOD2,
435 : : KEY_R | KEY_SHIFT | KEY_MOD2,
436 : : KEY_S | KEY_SHIFT | KEY_MOD2,
437 : : KEY_T | KEY_SHIFT | KEY_MOD2,
438 : : KEY_U | KEY_SHIFT | KEY_MOD2,
439 : : KEY_V | KEY_SHIFT | KEY_MOD2,
440 : : KEY_W | KEY_SHIFT | KEY_MOD2,
441 : : KEY_X | KEY_SHIFT | KEY_MOD2,
442 : : KEY_Y | KEY_SHIFT | KEY_MOD2,
443 : : KEY_Z | KEY_SHIFT | KEY_MOD2,
444 : : KEY_SEMICOLON | KEY_SHIFT | KEY_MOD2 ,
445 : : KEY_BRACKETLEFT | KEY_SHIFT | KEY_MOD2 ,
446 : : KEY_BRACKETRIGHT | KEY_SHIFT | KEY_MOD2,
447 : : KEY_POINT | KEY_SHIFT | KEY_MOD2,
448 : :
449 : : KEY_F1 | KEY_SHIFT | KEY_MOD2,
450 : : KEY_F2 | KEY_SHIFT | KEY_MOD2,
451 : : KEY_F3 | KEY_SHIFT | KEY_MOD2,
452 : : KEY_F4 | KEY_SHIFT | KEY_MOD2,
453 : : KEY_F5 | KEY_SHIFT | KEY_MOD2,
454 : : KEY_F6 | KEY_SHIFT | KEY_MOD2,
455 : : KEY_F7 | KEY_SHIFT | KEY_MOD2,
456 : : KEY_F8 | KEY_SHIFT | KEY_MOD2,
457 : : KEY_F9 | KEY_SHIFT | KEY_MOD2,
458 : : KEY_F10 | KEY_SHIFT | KEY_MOD2,
459 : : KEY_F11 | KEY_SHIFT | KEY_MOD2,
460 : : KEY_F12 | KEY_SHIFT | KEY_MOD2,
461 : : KEY_F13 | KEY_SHIFT | KEY_MOD2,
462 : : KEY_F14 | KEY_SHIFT | KEY_MOD2,
463 : : KEY_F15 | KEY_SHIFT | KEY_MOD2,
464 : : KEY_F16 | KEY_SHIFT | KEY_MOD2,
465 : :
466 : : KEY_DOWN | KEY_SHIFT | KEY_MOD2,
467 : : KEY_UP | KEY_SHIFT | KEY_MOD2,
468 : : KEY_LEFT | KEY_SHIFT | KEY_MOD2,
469 : : KEY_RIGHT | KEY_SHIFT | KEY_MOD2,
470 : : KEY_HOME | KEY_SHIFT | KEY_MOD2,
471 : : KEY_END | KEY_SHIFT | KEY_MOD2,
472 : : KEY_PAGEUP | KEY_SHIFT | KEY_MOD2,
473 : : KEY_PAGEDOWN | KEY_SHIFT | KEY_MOD2,
474 : : KEY_RETURN | KEY_SHIFT | KEY_MOD2,
475 : : KEY_SPACE | KEY_SHIFT | KEY_MOD2,
476 : : KEY_BACKSPACE | KEY_SHIFT | KEY_MOD2,
477 : : KEY_INSERT | KEY_SHIFT | KEY_MOD2,
478 : : KEY_DELETE | KEY_SHIFT | KEY_MOD2,
479 : :
480 : : KEY_0 | KEY_MOD1 | KEY_MOD2 ,
481 : : KEY_1 | KEY_MOD1 | KEY_MOD2 ,
482 : : KEY_2 | KEY_MOD1 | KEY_MOD2 ,
483 : : KEY_3 | KEY_MOD1 | KEY_MOD2 ,
484 : : KEY_4 | KEY_MOD1 | KEY_MOD2 ,
485 : : KEY_5 | KEY_MOD1 | KEY_MOD2 ,
486 : : KEY_6 | KEY_MOD1 | KEY_MOD2 ,
487 : : KEY_7 | KEY_MOD1 | KEY_MOD2 ,
488 : : KEY_8 | KEY_MOD1 | KEY_MOD2 ,
489 : : KEY_9 | KEY_MOD1 | KEY_MOD2 ,
490 : : KEY_A | KEY_MOD1 | KEY_MOD2 ,
491 : : KEY_B | KEY_MOD1 | KEY_MOD2 ,
492 : : KEY_C | KEY_MOD1 | KEY_MOD2 ,
493 : : KEY_D | KEY_MOD1 | KEY_MOD2 ,
494 : : KEY_E | KEY_MOD1 | KEY_MOD2 ,
495 : : KEY_F | KEY_MOD1 | KEY_MOD2 ,
496 : : KEY_G | KEY_MOD1 | KEY_MOD2 ,
497 : : KEY_H | KEY_MOD1 | KEY_MOD2 ,
498 : : KEY_I | KEY_MOD1 | KEY_MOD2 ,
499 : : KEY_J | KEY_MOD1 | KEY_MOD2 ,
500 : : KEY_K | KEY_MOD1 | KEY_MOD2 ,
501 : : KEY_L | KEY_MOD1 | KEY_MOD2 ,
502 : : KEY_M | KEY_MOD1 | KEY_MOD2 ,
503 : : KEY_N | KEY_MOD1 | KEY_MOD2 ,
504 : : KEY_O | KEY_MOD1 | KEY_MOD2 ,
505 : : KEY_P | KEY_MOD1 | KEY_MOD2 ,
506 : : KEY_Q | KEY_MOD1 | KEY_MOD2 ,
507 : : KEY_R | KEY_MOD1 | KEY_MOD2 ,
508 : : KEY_S | KEY_MOD1 | KEY_MOD2 ,
509 : : KEY_T | KEY_MOD1 | KEY_MOD2 ,
510 : : KEY_U | KEY_MOD1 | KEY_MOD2 ,
511 : : KEY_V | KEY_MOD1 | KEY_MOD2 ,
512 : : KEY_W | KEY_MOD1 | KEY_MOD2 ,
513 : : KEY_X | KEY_MOD1 | KEY_MOD2 ,
514 : : KEY_Y | KEY_MOD1 | KEY_MOD2 ,
515 : : KEY_Z | KEY_MOD1 | KEY_MOD2 ,
516 : :
517 : : KEY_F1 | KEY_MOD1 | KEY_MOD2 ,
518 : : KEY_F2 | KEY_MOD1 | KEY_MOD2 ,
519 : : KEY_F3 | KEY_MOD1 | KEY_MOD2 ,
520 : : KEY_F4 | KEY_MOD1 | KEY_MOD2 ,
521 : : KEY_F5 | KEY_MOD1 | KEY_MOD2 ,
522 : : KEY_F6 | KEY_MOD1 | KEY_MOD2 ,
523 : : KEY_F7 | KEY_MOD1 | KEY_MOD2 ,
524 : : KEY_F8 | KEY_MOD1 | KEY_MOD2 ,
525 : : KEY_F9 | KEY_MOD1 | KEY_MOD2 ,
526 : : KEY_F10 | KEY_MOD1 | KEY_MOD2 ,
527 : : KEY_F11 | KEY_MOD1 | KEY_MOD2 ,
528 : : KEY_F12 | KEY_MOD1 | KEY_MOD2 ,
529 : : KEY_F13 | KEY_MOD1 | KEY_MOD2 ,
530 : : KEY_F14 | KEY_MOD1 | KEY_MOD2 ,
531 : : KEY_F15 | KEY_MOD1 | KEY_MOD2 ,
532 : : KEY_F16 | KEY_MOD1 | KEY_MOD2 ,
533 : :
534 : : KEY_DOWN | KEY_MOD1 | KEY_MOD2 ,
535 : : KEY_UP | KEY_MOD1 | KEY_MOD2 ,
536 : : KEY_LEFT | KEY_MOD1 | KEY_MOD2 ,
537 : : KEY_RIGHT | KEY_MOD1 | KEY_MOD2 ,
538 : : KEY_HOME | KEY_MOD1 | KEY_MOD2 ,
539 : : KEY_END | KEY_MOD1 | KEY_MOD2 ,
540 : : KEY_PAGEUP | KEY_MOD1 | KEY_MOD2 ,
541 : : KEY_PAGEDOWN | KEY_MOD1 | KEY_MOD2 ,
542 : : KEY_RETURN | KEY_MOD1 | KEY_MOD2 ,
543 : : KEY_SPACE | KEY_MOD1 | KEY_MOD2 ,
544 : : KEY_BACKSPACE | KEY_MOD1 | KEY_MOD2 ,
545 : : KEY_INSERT | KEY_MOD1 | KEY_MOD2 ,
546 : : KEY_DELETE | KEY_MOD1 | KEY_MOD2 ,
547 : :
548 : : KEY_0 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
549 : : KEY_1 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
550 : : KEY_2 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
551 : : KEY_3 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
552 : : KEY_4 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
553 : : KEY_5 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
554 : : KEY_6 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
555 : : KEY_7 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
556 : : KEY_8 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
557 : : KEY_9 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
558 : : KEY_A | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
559 : : KEY_B | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
560 : : KEY_C | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
561 : : KEY_D | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
562 : : KEY_E | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
563 : : KEY_F | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
564 : : KEY_G | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
565 : : KEY_H | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
566 : : KEY_I | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
567 : : KEY_J | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
568 : : KEY_K | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
569 : : KEY_L | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
570 : : KEY_M | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
571 : : KEY_N | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
572 : : KEY_O | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
573 : : KEY_P | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
574 : : KEY_Q | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
575 : : KEY_R | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
576 : : KEY_S | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
577 : : KEY_T | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
578 : : KEY_U | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
579 : : KEY_V | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
580 : : KEY_W | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
581 : : KEY_X | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
582 : : KEY_Y | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
583 : : KEY_Z | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
584 : : KEY_SEMICOLON | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
585 : : KEY_BRACKETLEFT | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
586 : : KEY_BRACKETRIGHT | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
587 : : KEY_POINT | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
588 : :
589 : : KEY_F1 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
590 : : KEY_F2 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
591 : : KEY_F3 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
592 : : KEY_F4 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
593 : : KEY_F5 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
594 : : KEY_F6 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
595 : : KEY_F7 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
596 : : KEY_F8 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
597 : : KEY_F9 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
598 : : KEY_F10 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
599 : : KEY_F11 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
600 : : KEY_F12 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
601 : : KEY_F13 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
602 : : KEY_F14 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
603 : : KEY_F15 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
604 : : KEY_F16 | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
605 : :
606 : : KEY_DOWN | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
607 : : KEY_UP | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
608 : : KEY_LEFT | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
609 : : KEY_RIGHT | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
610 : : KEY_HOME | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
611 : : KEY_END | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
612 : : KEY_PAGEUP | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
613 : : KEY_PAGEDOWN | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
614 : : KEY_RETURN | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
615 : : KEY_SPACE | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
616 : : KEY_BACKSPACE | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
617 : : KEY_INSERT | KEY_SHIFT | KEY_MOD1 | KEY_MOD2,
618 : : KEY_DELETE | KEY_SHIFT | KEY_MOD1 | KEY_MOD2
619 : : };
620 : :
621 : : static sal_uInt16 KEYCODE_ARRAY_SIZE = SAL_N_ELEMENTS(KEYCODE_ARRAY);
622 : :
623 : : //-----------------------------------------------
624 : : // seems to be needed to layout the list box, which shows all
625 : : // assignable shortcuts
626 : : static long AccCfgTabs[] =
627 : : {
628 : : 2, // Number of Tabs
629 : : 0,
630 : : 120 // Function
631 : : };
632 : :
633 : : //-----------------------------------------------
634 : : class SfxAccCfgLBoxString_Impl : public SvLBoxString
635 : : {
636 : : public:
637 : : SfxAccCfgLBoxString_Impl( SvLBoxEntry* pEntry,
638 : : sal_uInt16 nFlags,
639 : : const String& sText );
640 : :
641 : : virtual ~SfxAccCfgLBoxString_Impl();
642 : :
643 : : virtual void Paint(const Point& aPos ,
644 : : SvLBox& rDevice,
645 : : sal_uInt16 nFlags ,
646 : : SvLBoxEntry* pEntry );
647 : : };
648 : :
649 : : //-----------------------------------------------
650 : 0 : SfxAccCfgLBoxString_Impl::SfxAccCfgLBoxString_Impl( SvLBoxEntry* pEntry,
651 : : sal_uInt16 nFlags,
652 : : const String& sText )
653 [ # # ]: 0 : : SvLBoxString(pEntry, nFlags, sText)
654 : : {
655 : 0 : }
656 : :
657 : : //-----------------------------------------------
658 : 0 : SfxAccCfgLBoxString_Impl::~SfxAccCfgLBoxString_Impl()
659 : : {
660 [ # # ]: 0 : }
661 : :
662 : : //-----------------------------------------------
663 : 0 : void SfxAccCfgLBoxString_Impl::Paint(const Point& aPos ,
664 : : SvLBox& rDevice,
665 : : sal_uInt16 /*nFlags*/,
666 : : SvLBoxEntry* pEntry )
667 : : {
668 : :
669 [ # # ]: 0 : if (!pEntry)
670 : 0 : return;
671 : :
672 : 0 : TAccInfo* pUserData = (TAccInfo*)pEntry->GetUserData();
673 [ # # ]: 0 : if (!pUserData)
674 : 0 : return;
675 : :
676 [ # # ]: 0 : if (pUserData->m_bIsConfigurable)
677 [ # # ][ # # ]: 0 : rDevice.DrawText(aPos, GetText());
[ # # ]
678 : : else
679 [ # # ][ # # ]: 0 : rDevice.DrawCtrlText(aPos, GetText(), 0, STRING_LEN, TEXT_DRAW_DISABLE);
[ # # ]
680 : :
681 : : }
682 : :
683 : : //-----------------------------------------------
684 : 0 : void SfxAccCfgTabListBox_Impl::InitEntry( SvLBoxEntry* pEntry ,
685 : : const XubString& sText ,
686 : : const Image& aImage1,
687 : : const Image& aImage2,
688 : : SvLBoxButtonKind eButtonKind)
689 : : {
690 : 0 : SvTabListBox::InitEntry(pEntry, sText, aImage1, aImage2, eButtonKind);
691 : 0 : }
692 : :
693 : : //-----------------------------------------------
694 : : /** select the entry, which match the current key input ... excepting
695 : : keys, which are used for the dialog itself.
696 : : */
697 : 0 : void SfxAccCfgTabListBox_Impl::KeyInput(const KeyEvent& aKey)
698 : : {
699 : 0 : KeyCode aCode1 = aKey.GetKeyCode();
700 : 0 : sal_uInt16 nCode1 = aCode1.GetCode();
701 : 0 : sal_uInt16 nMod1 = aCode1.GetModifier();
702 : :
703 : : // is it related to our list box ?
704 [ # # ][ # # ]: 0 : if (
[ # # ][ # # ]
[ # # ][ # # ]
705 : : (nCode1 != KEY_DOWN ) &&
706 : : (nCode1 != KEY_UP ) &&
707 : : (nCode1 != KEY_LEFT ) &&
708 : : (nCode1 != KEY_RIGHT ) &&
709 : : (nCode1 != KEY_PAGEUP ) &&
710 : : (nCode1 != KEY_PAGEDOWN)
711 : : )
712 : : {
713 [ # # ]: 0 : SvLBoxEntry* pEntry = First();
714 [ # # ]: 0 : while (pEntry)
715 : : {
716 : 0 : TAccInfo* pUserData = (TAccInfo*)pEntry->GetUserData();
717 [ # # ]: 0 : if (pUserData)
718 : : {
719 : 0 : sal_uInt16 nCode2 = pUserData->m_aKey.GetCode();
720 : 0 : sal_uInt16 nMod2 = pUserData->m_aKey.GetModifier();
721 [ # # ][ # # ]: 0 : if (
722 : : (nCode1 == nCode2) &&
723 : : (nMod1 == nMod2 )
724 : : )
725 : : {
726 [ # # ]: 0 : Select (pEntry);
727 [ # # ]: 0 : MakeVisible(pEntry);
728 : 0 : return;
729 : : }
730 : : }
731 [ # # ]: 0 : pEntry = Next(pEntry);
732 : : }
733 : : }
734 : :
735 : : // no - handle it as normal dialog input
736 [ # # ]: 0 : SvTabListBox::KeyInput(aKey);
737 : : }
738 : :
739 : : //-----------------------------------------------
740 : 0 : SfxAcceleratorConfigPage::SfxAcceleratorConfigPage( Window* pParent, const SfxItemSet& aSet )
741 : 0 : : SfxTabPage (pParent, CUI_RES(RID_SVXPAGE_KEYBOARD), aSet)
742 : : , m_pMacroInfoItem ()
743 : : , m_pStringItem ()
744 : : , m_pFontItem ()
745 : : , m_pFileDlg (NULL)
746 [ # # ]: 0 : , aEntriesBox (this , this, CUI_RES(BOX_ACC_ENTRIES ))
747 [ # # ]: 0 : , aKeyboardGroup (this , CUI_RES(GRP_ACC_KEYBOARD ))
748 [ # # ]: 0 : , aOfficeButton (this , CUI_RES(RB_OFFICE ))
749 [ # # ]: 0 : , aModuleButton (this , CUI_RES(RB_MODULE ))
750 [ # # ]: 0 : , aChangeButton (this , CUI_RES(BTN_ACC_CHANGE ))
751 [ # # ]: 0 : , aRemoveButton (this , CUI_RES(BTN_ACC_REMOVE ))
752 [ # # ]: 0 : , aGroupText (this , CUI_RES(TXT_ACC_GROUP ))
753 [ # # ][ # # ]: 0 : , pGroupLBox(new SfxConfigGroupListBox_Impl( this, CUI_RES(BOX_ACC_GROUP), SFX_SLOT_ACCELCONFIG ))
754 [ # # ]: 0 : , aFunctionText (this , CUI_RES(TXT_ACC_FUNCTION ))
755 [ # # ][ # # ]: 0 : , pFunctionBox(new SfxConfigFunctionListBox_Impl( this, CUI_RES( BOX_ACC_FUNCTION )))
756 [ # # ]: 0 : , aKeyText (this , CUI_RES(TXT_ACC_KEY ))
757 [ # # ]: 0 : , aKeyBox (this , CUI_RES(BOX_ACC_KEY ))
758 [ # # ]: 0 : , aFunctionsGroup (this , CUI_RES(GRP_ACC_FUNCTIONS ))
759 [ # # ]: 0 : , aLoadButton (this , CUI_RES(BTN_LOAD ))
760 [ # # ]: 0 : , aSaveButton (this , CUI_RES(BTN_SAVE ))
761 [ # # ]: 0 : , aResetButton (this , CUI_RES(BTN_RESET ))
762 [ # # ]: 0 : , aLoadAccelConfigStr ( CUI_RES( STR_LOADACCELCONFIG ) )
763 [ # # ]: 0 : , aSaveAccelConfigStr ( CUI_RES( STR_SAVEACCELCONFIG ) )
764 [ # # ]: 0 : , aFilterCfgStr ( CUI_RES( STR_FILTERNAME_CFG ) )
765 : : , m_bStylesInfoInitialized(sal_False)
766 : : , m_xGlobal ()
767 : : , m_xModule ()
768 [ # # ][ # # ]: 0 : , m_xAct ()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
769 : : {
770 [ # # ]: 0 : FreeResource();
771 : :
772 [ # # ][ # # ]: 0 : aFilterAllStr = String( SfxResId( STR_SFX_FILTERNAME_ALL ) );
[ # # ][ # # ]
773 : :
774 : : // install handler functions
775 [ # # ]: 0 : aChangeButton.SetClickHdl( LINK( this, SfxAcceleratorConfigPage, ChangeHdl ));
776 [ # # ]: 0 : aRemoveButton.SetClickHdl( LINK( this, SfxAcceleratorConfigPage, RemoveHdl ));
777 [ # # ]: 0 : aEntriesBox.SetSelectHdl ( LINK( this, SfxAcceleratorConfigPage, SelectHdl ));
778 [ # # ]: 0 : pGroupLBox->SetSelectHdl ( LINK( this, SfxAcceleratorConfigPage, SelectHdl ));
779 [ # # ]: 0 : pFunctionBox->SetSelectHdl( LINK( this, SfxAcceleratorConfigPage, SelectHdl ));
780 [ # # ]: 0 : aKeyBox.SetSelectHdl ( LINK( this, SfxAcceleratorConfigPage, SelectHdl ));
781 [ # # ]: 0 : aLoadButton.SetClickHdl ( LINK( this, SfxAcceleratorConfigPage, Load ));
782 [ # # ]: 0 : aSaveButton.SetClickHdl ( LINK( this, SfxAcceleratorConfigPage, Save ));
783 [ # # ]: 0 : aResetButton.SetClickHdl ( LINK( this, SfxAcceleratorConfigPage, Default ));
784 [ # # ]: 0 : aOfficeButton.SetClickHdl( LINK( this, SfxAcceleratorConfigPage, RadioHdl ));
785 [ # # ]: 0 : aModuleButton.SetClickHdl( LINK( this, SfxAcceleratorConfigPage, RadioHdl ));
786 : :
787 : : // initialize Entriesbox
788 [ # # ][ # # ]: 0 : aEntriesBox.SetStyle(aEntriesBox.GetStyle()|WB_HSCROLL|WB_CLIPCHILDREN);
789 [ # # ]: 0 : aEntriesBox.SetSelectionMode(SINGLE_SELECTION);
790 [ # # ]: 0 : aEntriesBox.SetTabs(&AccCfgTabs[0], MAP_APPFONT);
791 [ # # ]: 0 : aEntriesBox.Resize(); // OS: Hack for right selection
792 [ # # ]: 0 : aEntriesBox.SetSpaceBetweenEntries(0);
793 [ # # ]: 0 : aEntriesBox.SetDragDropMode(0);
794 : :
795 : : // detect max keyname width
796 : 0 : long nMaxWidth = 0;
797 [ # # ]: 0 : for ( sal_uInt16 i = 0; i < KEYCODE_ARRAY_SIZE; ++i )
798 : : {
799 [ # # ][ # # ]: 0 : long nTmp = GetTextWidth( KeyCode( KEYCODE_ARRAY[i] ).GetName() );
[ # # ]
800 [ # # ]: 0 : if ( nTmp > nMaxWidth )
801 : 0 : nMaxWidth = nTmp;
802 : : }
803 : : // recalc second tab
804 [ # # ][ # # ]: 0 : long nNewTab = PixelToLogic( Size( nMaxWidth, 0 ), MAP_APPFONT ).Width();
[ # # ]
805 : 0 : nNewTab = nNewTab + 5; // additional space
806 [ # # ]: 0 : aEntriesBox.SetTab( 1, nNewTab );
807 : :
808 : : // initialize GroupBox
809 : 0 : pGroupLBox->SetFunctionListBox(pFunctionBox);
810 : :
811 : : // initialize KeyBox
812 [ # # ][ # # ]: 0 : aKeyBox.SetStyle(aKeyBox.GetStyle()|WB_CLIPCHILDREN|WB_HSCROLL|WB_SORT);
813 : 0 : }
814 : :
815 : : //-----------------------------------------------
816 [ # # ][ # # ]: 0 : SfxAcceleratorConfigPage::~SfxAcceleratorConfigPage()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
817 : : {
818 : : // free memory - remove all dynamic user data
819 [ # # ]: 0 : SvLBoxEntry* pEntry = aEntriesBox.First();
820 [ # # ]: 0 : while (pEntry)
821 : : {
822 : 0 : TAccInfo* pUserData = (TAccInfo*)pEntry->GetUserData();
823 [ # # ]: 0 : if (pUserData)
824 [ # # ]: 0 : delete pUserData;
825 [ # # ]: 0 : pEntry = aEntriesBox.Next(pEntry);
826 : : }
827 : :
828 [ # # ]: 0 : pEntry = aKeyBox.First();
829 [ # # ]: 0 : while (pEntry)
830 : : {
831 : 0 : TAccInfo* pUserData = (TAccInfo*)pEntry->GetUserData();
832 [ # # ]: 0 : if (pUserData)
833 [ # # ]: 0 : delete pUserData;
834 [ # # ]: 0 : pEntry = aKeyBox.Next(pEntry);
835 : : }
836 : :
837 [ # # ]: 0 : aEntriesBox.Clear();
838 [ # # ]: 0 : aKeyBox.Clear();
839 : :
840 [ # # ][ # # ]: 0 : delete m_pFileDlg;
841 [ # # ][ # # ]: 0 : delete pGroupLBox;
842 [ # # ][ # # ]: 0 : delete pFunctionBox;
843 [ # # ]: 0 : }
844 : :
845 : : //-----------------------------------------------
846 : 0 : void SfxAcceleratorConfigPage::InitAccCfg()
847 : : {
848 : : // already initialized ?
849 [ # # ]: 0 : if (m_xSMGR.is())
850 : 0 : return; // yes -> do nothing
851 : :
852 : : try
853 : : {
854 : : // no - initialize this instance
855 [ # # ][ # # ]: 0 : m_xSMGR = ::comphelper::getProcessServiceFactory();
856 : :
857 [ # # ][ # # ]: 0 : m_xUICmdDescription = css::uno::Reference< css::container::XNameAccess >(m_xSMGR->createInstance(SERVICE_UICMDDESCRIPTION), css::uno::UNO_QUERY_THROW);
[ # # ][ # # ]
858 : :
859 : : // get the current active frame, which should be our "parent"
860 : : // for this session
861 [ # # ][ # # ]: 0 : m_xFrame = GetFrame();
862 [ # # ]: 0 : if ( !m_xFrame.is() )
863 : : {
864 [ # # ][ # # ]: 0 : css::uno::Reference< css::frame::XFramesSupplier > xDesktop(m_xSMGR->createInstance(SERVICE_DESKTOP), css::uno::UNO_QUERY_THROW);
[ # # ]
865 [ # # ][ # # ]: 0 : m_xFrame = xDesktop->getActiveFrame();
[ # # ]
866 : : }
867 : :
868 : : // identify module
869 [ # # ][ # # ]: 0 : css::uno::Reference< css::frame::XModuleManager > xModuleManager (m_xSMGR->createInstance(SERVICE_MODULEMANAGER), css::uno::UNO_QUERY_THROW);
[ # # ]
870 [ # # ]: 0 : css::uno::Reference< css::container::XNameAccess > xModuleManagerCont(xModuleManager , css::uno::UNO_QUERY_THROW);
871 [ # # ][ # # ]: 0 : m_sModuleLongName = xModuleManager->identify(m_xFrame);
872 [ # # ][ # # ]: 0 : ::comphelper::SequenceAsHashMap lModuleProps(xModuleManagerCont->getByName(m_sModuleLongName));
[ # # ]
873 [ # # ]: 0 : m_sModuleShortName = lModuleProps.getUnpackedValueOrDefault(MODULEPROP_SHORTNAME, ::rtl::OUString());
874 [ # # ]: 0 : m_sModuleUIName = lModuleProps.getUnpackedValueOrDefault(MODULEPROP_UINAME , ::rtl::OUString());
875 : :
876 : : // get global accelerator configuration
877 [ # # ][ # # ]: 0 : m_xGlobal = css::uno::Reference< css::ui::XAcceleratorConfiguration >(m_xSMGR->createInstance(SERVICE_GLOBALACCCFG), css::uno::UNO_QUERY_THROW);
[ # # ][ # # ]
878 : :
879 : : // get module accelerator configuration
880 [ # # ][ # # ]: 0 : css::uno::Reference< css::ui::XModuleUIConfigurationManagerSupplier > xModuleCfgSupplier(m_xSMGR->createInstance(SERVICE_MODULEUICONFIGSUPPLIER), css::uno::UNO_QUERY_THROW);
[ # # ]
881 [ # # ][ # # ]: 0 : css::uno::Reference< css::ui::XUIConfigurationManager > xUICfgManager = xModuleCfgSupplier->getUIConfigurationManager(m_sModuleLongName);
882 [ # # ][ # # ]: 0 : m_xModule = css::uno::Reference< css::ui::XAcceleratorConfiguration >(xUICfgManager->getShortCutManager(), css::uno::UNO_QUERY_THROW);
[ # # ][ # # ]
[ # # ]
883 : : }
884 [ # # # ]: 0 : catch(const css::uno::RuntimeException&)
885 : 0 : { throw; }
886 : 0 : catch(const css::uno::Exception&)
887 : 0 : { m_xSMGR.clear(); }
888 : : }
889 : :
890 : : //-----------------------------------------------
891 : : /** Initialize text columns with own class to enable custom painting
892 : : This is needed as we have to paint disabled entries by ourself. No support for that in the
893 : : original SvTabListBox!
894 : : */
895 : 0 : void SfxAcceleratorConfigPage::CreateCustomItems( SvLBoxEntry* pEntry,
896 : : const String& sCol1 ,
897 : : const String& sCol2 )
898 : : {
899 [ # # ]: 0 : SfxAccCfgLBoxString_Impl* pStringItem = new SfxAccCfgLBoxString_Impl(pEntry, 0, sCol1);
900 : 0 : pEntry->ReplaceItem(pStringItem, 1);
901 : :
902 [ # # ]: 0 : pStringItem = new SfxAccCfgLBoxString_Impl(pEntry, 0, sCol2);
903 : 0 : pEntry->ReplaceItem(pStringItem, 2);
904 : 0 : }
905 : :
906 : : //-----------------------------------------------
907 : 0 : void SfxAcceleratorConfigPage::Init(const css::uno::Reference< css::ui::XAcceleratorConfiguration >& xAccMgr)
908 : : {
909 [ # # ]: 0 : if (!xAccMgr.is())
910 : 0 : return;
911 : :
912 [ # # ]: 0 : if (!m_bStylesInfoInitialized)
913 : : {
914 : 0 : css::uno::Reference< css::frame::XController > xController;
915 : 0 : css::uno::Reference< css::frame::XModel > xModel;
916 [ # # ]: 0 : if (m_xFrame.is())
917 [ # # ][ # # ]: 0 : xController = m_xFrame->getController();
[ # # ]
918 [ # # ]: 0 : if (xController.is())
919 [ # # ][ # # ]: 0 : xModel = xController->getModel();
[ # # ]
920 : :
921 [ # # ]: 0 : m_aStylesInfo.setModel(xModel);
922 [ # # ]: 0 : pFunctionBox->SetStylesInfo(&m_aStylesInfo);
923 [ # # ]: 0 : pGroupLBox->SetStylesInfo(&m_aStylesInfo);
924 : 0 : m_bStylesInfoInitialized = sal_True;
925 : : }
926 : :
927 : : // Insert all editable accelerators into list box. It is possible
928 : : // that some accelerators are not mapped on the current system/keyboard
929 : : // but we don't want to lose these mappings.
930 : 0 : sal_uInt16 c1 = KEYCODE_ARRAY_SIZE;
931 : 0 : sal_uInt16 i1 = 0;
932 : 0 : sal_uInt16 nListPos = 0;
933 [ # # ]: 0 : for (i1=0; i1<c1; ++i1)
934 : : {
935 : 0 : KeyCode aKey = KEYCODE_ARRAY[i1];
936 [ # # ]: 0 : String sKey = aKey.GetName();
937 [ # # ]: 0 : if (!sKey.Len())
938 : 0 : continue;
939 [ # # ]: 0 : TAccInfo* pEntry = new TAccInfo(i1, nListPos, aKey);
940 [ # # ]: 0 : SvLBoxEntry* pLBEntry = aEntriesBox.InsertEntryToColumn(sKey, 0L, LIST_APPEND, 0xFFFF);
941 [ # # ]: 0 : pLBEntry->SetUserData(pEntry);
942 [ # # ]: 0 : }
943 : :
944 : : // Assign all commands to its shortcuts - reading the accelerator config.
945 [ # # ][ # # ]: 0 : css::uno::Sequence< css::awt::KeyEvent > lKeys = xAccMgr->getAllKeyEvents();
946 : 0 : sal_Int32 c2 = lKeys.getLength();
947 : 0 : sal_Int32 i2 = 0;
948 : 0 : sal_uInt16 nCol = aEntriesBox.TabCount()-1;
949 : :
950 [ # # ]: 0 : for (i2=0; i2<c2; ++i2)
951 : : {
952 [ # # ]: 0 : const css::awt::KeyEvent& aAWTKey = lKeys[i2];
953 [ # # ][ # # ]: 0 : ::rtl::OUString sCommand = xAccMgr->getCommandByKeyEvent(aAWTKey);
954 [ # # ][ # # ]: 0 : String sLabel = GetLabel4Command(sCommand);
[ # # ]
955 [ # # ]: 0 : KeyCode aKeyCode = ::svt::AcceleratorExecute::st_AWTKey2VCLKey(aAWTKey);
956 [ # # ]: 0 : sal_uInt16 nPos = MapKeyCodeToPos(aKeyCode);
957 : :
958 [ # # ]: 0 : if (nPos == LISTBOX_ENTRY_NOTFOUND)
959 : 0 : continue;
960 : :
961 [ # # ]: 0 : aEntriesBox.SetEntryText(sLabel, nPos, nCol);
962 : :
963 [ # # ]: 0 : SvLBoxEntry* pLBEntry = aEntriesBox.GetEntry(0, nPos);
964 : 0 : TAccInfo* pEntry = (TAccInfo*)pLBEntry->GetUserData();
965 : :
966 : 0 : pEntry->m_bIsConfigurable = sal_True;
967 : 0 : pEntry->m_sCommand = sCommand;
968 [ # # ][ # # ]: 0 : CreateCustomItems(pLBEntry, aEntriesBox.GetEntryText(pLBEntry, 0), sLabel);
[ # # ][ # # ]
969 [ # # ][ # # ]: 0 : }
970 : :
971 : : // Map the VCL hardcoded key codes and mark them as not changeable
972 [ # # ]: 0 : sal_uLong c3 = Application::GetReservedKeyCodeCount();
973 : 0 : sal_uLong i3 = 0;
974 [ # # ]: 0 : for (i3=0; i3<c3; ++i3)
975 : : {
976 [ # # ]: 0 : const KeyCode* pKeyCode = Application::GetReservedKeyCode(i3);
977 [ # # ]: 0 : sal_uInt16 nPos = MapKeyCodeToPos(*pKeyCode);
978 : :
979 [ # # ]: 0 : if (nPos == LISTBOX_ENTRY_NOTFOUND)
980 : 0 : continue;
981 : :
982 : : // Hardcoded function mapped so no ID possible and mark entry as not changeable
983 [ # # ]: 0 : SvLBoxEntry* pLBEntry = aEntriesBox.GetEntry(0, nPos);
984 : 0 : TAccInfo* pEntry = (TAccInfo*)pLBEntry->GetUserData();
985 : :
986 : 0 : pEntry->m_bIsConfigurable = sal_False;
987 [ # # ][ # # ]: 0 : CreateCustomItems(pLBEntry, aEntriesBox.GetEntryText(pLBEntry, 0), String());
[ # # ][ # # ]
[ # # ]
988 [ # # ]: 0 : }
989 : : }
990 : :
991 : : //-----------------------------------------------
992 : 0 : void SfxAcceleratorConfigPage::Apply(const css::uno::Reference< css::ui::XAcceleratorConfiguration >& xAccMgr)
993 : : {
994 [ # # ]: 0 : if (!xAccMgr.is())
995 : 0 : return;
996 : :
997 : : // Go through the list from the bottom to the top ...
998 : : // because logical accelerator must be preferred instead of
999 : : // physical ones!
1000 : 0 : SvLBoxEntry* pEntry = aEntriesBox.First();
1001 [ # # ]: 0 : while (pEntry)
1002 : : {
1003 : 0 : TAccInfo* pUserData = (TAccInfo*)pEntry->GetUserData();
1004 : 0 : ::rtl::OUString sCommand ;
1005 [ # # ]: 0 : css::awt::KeyEvent aAWTKey ;
1006 : :
1007 [ # # ]: 0 : if (pUserData)
1008 : : {
1009 : 0 : sCommand = pUserData->m_sCommand;
1010 [ # # ][ # # ]: 0 : aAWTKey = ::svt::AcceleratorExecute::st_VCLKey2AWTKey(pUserData->m_aKey);
[ # # ]
1011 : : }
1012 : :
1013 : : try
1014 : : {
1015 [ # # ]: 0 : if (!sCommand.isEmpty())
1016 [ # # ][ # # ]: 0 : xAccMgr->setKeyEvent(aAWTKey, sCommand);
1017 : : else
1018 [ # # ][ # # ]: 0 : xAccMgr->removeKeyEvent(aAWTKey);
1019 : : }
1020 [ # # # ]: 0 : catch(const css::uno::RuntimeException&)
1021 : 0 : { throw; }
1022 [ # # ]: 0 : catch(const css::uno::Exception&)
1023 : : {}
1024 : :
1025 [ # # ]: 0 : pEntry = aEntriesBox.Next(pEntry);
1026 [ # # ]: 0 : }
1027 : : }
1028 : :
1029 : : //-----------------------------------------------
1030 : 0 : void SfxAcceleratorConfigPage::ResetConfig()
1031 : : {
1032 : 0 : aEntriesBox.Clear();
1033 : 0 : }
1034 : :
1035 : : //-----------------------------------------------
1036 : 0 : IMPL_LINK_NOARG(SfxAcceleratorConfigPage, Load)
1037 : : {
1038 : : // ask for filename, where we should load the new config data from
1039 : 0 : StartFileDialog( 0, aLoadAccelConfigStr );
1040 : 0 : return 0;
1041 : : }
1042 : :
1043 : : //-----------------------------------------------
1044 : 0 : IMPL_LINK_NOARG(SfxAcceleratorConfigPage, Save)
1045 : : {
1046 : 0 : StartFileDialog( WB_SAVEAS, aSaveAccelConfigStr );
1047 : 0 : return 0;
1048 : : }
1049 : :
1050 : : //-----------------------------------------------
1051 : 0 : IMPL_LINK_NOARG(SfxAcceleratorConfigPage, Default)
1052 : : {
1053 [ # # ]: 0 : css::uno::Reference< css::form::XReset > xReset(m_xAct, css::uno::UNO_QUERY);
1054 [ # # ]: 0 : if (xReset.is())
1055 [ # # ][ # # ]: 0 : xReset->reset();
1056 : :
1057 [ # # ]: 0 : aEntriesBox.SetUpdateMode(sal_False);
1058 [ # # ]: 0 : ResetConfig();
1059 [ # # ]: 0 : Init(m_xAct);
1060 [ # # ]: 0 : aEntriesBox.SetUpdateMode(sal_True);
1061 [ # # ]: 0 : aEntriesBox.Invalidate();
1062 [ # # ][ # # ]: 0 : aEntriesBox.Select(aEntriesBox.GetEntry(0, 0));
1063 : :
1064 : 0 : return 0;
1065 : : }
1066 : :
1067 : : //-----------------------------------------------
1068 : 0 : IMPL_LINK_NOARG(SfxAcceleratorConfigPage, ChangeHdl)
1069 : : {
1070 [ # # ][ # # ]: 0 : sal_uInt16 nPos = (sal_uInt16) aEntriesBox.GetModel()->GetRelPos( aEntriesBox.FirstSelected() );
1071 [ # # ]: 0 : TAccInfo* pEntry = (TAccInfo*)aEntriesBox.GetEntry(0, nPos)->GetUserData();
1072 [ # # ]: 0 : String sNewCommand = pFunctionBox->GetCurCommand();
1073 [ # # ]: 0 : String sLabel = pFunctionBox->GetCurLabel();
1074 [ # # ]: 0 : if (!sLabel.Len())
1075 [ # # ][ # # ]: 0 : sLabel = GetLabel4Command(sNewCommand);
[ # # ]
1076 : :
1077 [ # # ]: 0 : pEntry->m_sCommand = sNewCommand;
1078 : 0 : sal_uInt16 nCol = aEntriesBox.TabCount() - 1;
1079 [ # # ]: 0 : aEntriesBox.SetEntryText(sLabel, nPos, nCol);
1080 : :
1081 [ # # ]: 0 : ((Link &) pFunctionBox->GetSelectHdl()).Call( pFunctionBox );
1082 [ # # ][ # # ]: 0 : return 0;
1083 : : }
1084 : :
1085 : : //-----------------------------------------------
1086 : 0 : IMPL_LINK_NOARG(SfxAcceleratorConfigPage, RemoveHdl)
1087 : : {
1088 : : // get selected entry
1089 : 0 : sal_uInt16 nPos = (sal_uInt16) aEntriesBox.GetModel()->GetRelPos( aEntriesBox.FirstSelected() );
1090 : 0 : TAccInfo* pEntry = (TAccInfo*)aEntriesBox.GetEntry(0, nPos)->GetUserData();
1091 : :
1092 : : // remove function name from selected entry
1093 : 0 : sal_uInt16 nCol = aEntriesBox.TabCount() - 1;
1094 [ # # ]: 0 : aEntriesBox.SetEntryText( String(), nPos, nCol );
1095 : 0 : pEntry->m_sCommand = ::rtl::OUString();
1096 : :
1097 : 0 : ((Link &) pFunctionBox->GetSelectHdl()).Call( pFunctionBox );
1098 : 0 : return 0;
1099 : : }
1100 : :
1101 : : //-----------------------------------------------
1102 : 0 : IMPL_LINK( SfxAcceleratorConfigPage, SelectHdl, Control*, pListBox )
1103 : : {
1104 : : // disable help
1105 [ # # ]: 0 : Help::ShowBalloon( this, Point(), String() );
1106 [ # # ]: 0 : if ( pListBox == &aEntriesBox )
1107 : : {
1108 [ # # ][ # # ]: 0 : sal_uInt16 nPos = (sal_uInt16) aEntriesBox.GetModel()->GetRelPos( aEntriesBox.FirstSelected() );
1109 [ # # ]: 0 : TAccInfo* pEntry = (TAccInfo*)aEntriesBox.GetEntry(0, nPos)->GetUserData();
1110 [ # # ][ # # ]: 0 : ::rtl::OUString sPossibleNewCommand = pFunctionBox->GetCurCommand();
[ # # ]
1111 : :
1112 [ # # ]: 0 : aRemoveButton.Enable( sal_False );
1113 [ # # ]: 0 : aChangeButton.Enable( sal_False );
1114 : :
1115 [ # # ]: 0 : if (pEntry->m_bIsConfigurable)
1116 : : {
1117 [ # # ]: 0 : if (pEntry->isConfigured())
1118 [ # # ]: 0 : aRemoveButton.Enable( sal_True );
1119 [ # # ]: 0 : aChangeButton.Enable( pEntry->m_sCommand != sPossibleNewCommand );
1120 : 0 : }
1121 : : }
1122 [ # # ]: 0 : else if ( pListBox == pGroupLBox )
1123 : : {
1124 : 0 : pGroupLBox->GroupSelected();
1125 [ # # ]: 0 : if ( !pFunctionBox->FirstSelected() )
1126 : 0 : aChangeButton.Enable( sal_False );
1127 : : }
1128 [ # # ]: 0 : else if ( pListBox == pFunctionBox )
1129 : : {
1130 : 0 : aRemoveButton.Enable( sal_False );
1131 : 0 : aChangeButton.Enable( sal_False );
1132 : :
1133 : : // #i36994 First selected can return zero!
1134 : 0 : SvLBoxEntry* pLBEntry = aEntriesBox.FirstSelected();
1135 [ # # ]: 0 : if ( pLBEntry != 0 )
1136 : : {
1137 [ # # ]: 0 : sal_uInt16 nPos = (sal_uInt16) aEntriesBox.GetModel()->GetRelPos( pLBEntry );
1138 [ # # ]: 0 : TAccInfo* pEntry = (TAccInfo*)aEntriesBox.GetEntry(0, nPos)->GetUserData();
1139 [ # # ][ # # ]: 0 : ::rtl::OUString sPossibleNewCommand = pFunctionBox->GetCurCommand();
[ # # ]
1140 : :
1141 [ # # ]: 0 : if (pEntry->m_bIsConfigurable)
1142 : : {
1143 [ # # ]: 0 : if (pEntry->isConfigured())
1144 [ # # ]: 0 : aRemoveButton.Enable( sal_True );
1145 [ # # ]: 0 : aChangeButton.Enable( pEntry->m_sCommand != sPossibleNewCommand );
1146 : : }
1147 : :
1148 : : // update key box
1149 [ # # ]: 0 : aKeyBox.Clear();
1150 [ # # ]: 0 : SvLBoxEntry* pIt = aEntriesBox.First();
1151 [ # # ]: 0 : while ( pIt )
1152 : : {
1153 : 0 : TAccInfo* pUserData = (TAccInfo*)pIt->GetUserData();
1154 [ # # ][ # # ]: 0 : if ( pUserData && pUserData->m_sCommand == sPossibleNewCommand )
[ # # ]
1155 : : {
1156 [ # # ]: 0 : TAccInfo* pU1 = new TAccInfo(-1, -1, pUserData->m_aKey);
1157 [ # # ][ # # ]: 0 : SvLBoxEntry* pE1 = aKeyBox.InsertEntry( pUserData->m_aKey.GetName(), 0L, sal_True, LIST_APPEND );
[ # # ]
1158 : 0 : pE1->SetUserData(pU1);
1159 [ # # ]: 0 : pE1->EnableChildrenOnDemand( sal_False );
1160 : : }
1161 [ # # ]: 0 : pIt = aEntriesBox.Next(pIt);
1162 : 0 : }
1163 : : }
1164 : : }
1165 : : else
1166 : : {
1167 : : // goto selected "key" entry of the key box
1168 : 0 : SvLBoxEntry* pE2 = 0;
1169 : 0 : TAccInfo* pU2 = 0;
1170 : 0 : sal_uInt16 nP2 = LISTBOX_ENTRY_NOTFOUND;
1171 : 0 : SvLBoxEntry* pE3 = 0;
1172 : :
1173 : 0 : pE2 = aKeyBox.FirstSelected();
1174 [ # # ]: 0 : if (pE2)
1175 : 0 : pU2 = (TAccInfo*)pE2->GetUserData();
1176 [ # # ]: 0 : if (pU2)
1177 : 0 : nP2 = MapKeyCodeToPos(pU2->m_aKey);
1178 [ # # ]: 0 : if (nP2 != LISTBOX_ENTRY_NOTFOUND)
1179 : 0 : pE3 = aEntriesBox.GetEntry( 0, nP2 );
1180 [ # # ]: 0 : if (pE3)
1181 : : {
1182 : 0 : aEntriesBox.Select( pE3 );
1183 : 0 : aEntriesBox.MakeVisible( pE3 );
1184 : : }
1185 : : }
1186 : :
1187 : 0 : return 0;
1188 : : }
1189 : :
1190 : : //-----------------------------------------------
1191 : 0 : IMPL_LINK_NOARG(SfxAcceleratorConfigPage, RadioHdl)
1192 : : {
1193 : 0 : css::uno::Reference< css::ui::XAcceleratorConfiguration > xOld = m_xAct;
1194 : :
1195 [ # # ]: 0 : if (aOfficeButton.IsChecked())
1196 [ # # ]: 0 : m_xAct = m_xGlobal;
1197 [ # # ]: 0 : else if (aModuleButton.IsChecked())
1198 [ # # ]: 0 : m_xAct = m_xModule;
1199 : :
1200 : : // nothing changed? => do nothing!
1201 [ # # ][ # # ]: 0 : if ( m_xAct.is() && ( xOld == m_xAct ) )
[ # # ][ # # ]
1202 : 0 : return 0;
1203 : :
1204 [ # # ]: 0 : aEntriesBox.SetUpdateMode( sal_False );
1205 [ # # ]: 0 : ResetConfig();
1206 [ # # ]: 0 : Init(m_xAct);
1207 [ # # ]: 0 : aEntriesBox.SetUpdateMode( sal_True );
1208 [ # # ]: 0 : aEntriesBox.Invalidate();
1209 : :
1210 [ # # ]: 0 : pGroupLBox->Init(m_xSMGR, m_xFrame, m_sModuleLongName);
1211 : :
1212 : : // pb: #133213# do not select NULL entries
1213 [ # # ]: 0 : SvLBoxEntry* pEntry = aEntriesBox.GetEntry( 0, 0 );
1214 [ # # ]: 0 : if ( pEntry )
1215 [ # # ]: 0 : aEntriesBox.Select( pEntry );
1216 [ # # ]: 0 : pEntry = pGroupLBox->GetEntry( 0, 0 );
1217 [ # # ]: 0 : if ( pEntry )
1218 [ # # ]: 0 : pGroupLBox->Select( pEntry );
1219 : :
1220 [ # # ]: 0 : ((Link &) pFunctionBox->GetSelectHdl()).Call( pFunctionBox );
1221 : 0 : return 1L;
1222 : : }
1223 : :
1224 : : //-----------------------------------------------
1225 : 0 : IMPL_LINK_NOARG(SfxAcceleratorConfigPage, LoadHdl)
1226 : : {
1227 : : DBG_ASSERT( m_pFileDlg, "SfxInternetPage::DialogClosedHdl(): no file dialog" );
1228 : :
1229 : 0 : ::rtl::OUString sCfgName;
1230 [ # # ]: 0 : if ( ERRCODE_NONE == m_pFileDlg->GetError() )
1231 [ # # ][ # # ]: 0 : sCfgName = m_pFileDlg->GetPath();
[ # # ]
1232 : :
1233 [ # # ]: 0 : if ( sCfgName.isEmpty() )
1234 : 0 : return 0;
1235 : :
1236 [ # # ]: 0 : GetTabDialog()->EnterWait();
1237 : :
1238 : 0 : css::uno::Reference< css::frame::XModel > xDoc ;
1239 : 0 : css::uno::Reference< css::ui::XUIConfigurationManager > xCfgMgr ;
1240 : 0 : css::uno::Reference< css::embed::XStorage > xRootStorage; // we must hold the root storage alive, if xCfgMgr is used!
1241 : :
1242 : : try
1243 : : {
1244 : : // first check if URL points to a document already loaded
1245 [ # # ][ # # ]: 0 : xDoc = SearchForAlreadyLoadedDoc(sCfgName);
[ # # ][ # # ]
1246 [ # # ]: 0 : if (xDoc.is())
1247 : : {
1248 : : // Get ui config manager. There should always be one at the model.
1249 [ # # ]: 0 : css::uno::Reference< css::ui::XUIConfigurationManagerSupplier > xCfgSupplier(xDoc, css::uno::UNO_QUERY_THROW);
1250 [ # # ][ # # ]: 0 : xCfgMgr = xCfgSupplier->getUIConfigurationManager();
[ # # ]
1251 : : }
1252 : : else
1253 : : {
1254 : : // URL doesn't point to a loaded document, try to access it as a single storage
1255 : : // dont forget to release the storage afterwards!
1256 [ # # ][ # # ]: 0 : css::uno::Reference< css::lang::XSingleServiceFactory > xStorageFactory(m_xSMGR->createInstance(SERVICE_STORAGEFACTORY), css::uno::UNO_QUERY_THROW);
[ # # ]
1257 [ # # ]: 0 : css::uno::Sequence< css::uno::Any > lArgs(2);
1258 [ # # ][ # # ]: 0 : lArgs[0] <<= sCfgName;
1259 [ # # ][ # # ]: 0 : lArgs[1] <<= css::embed::ElementModes::READ;
1260 : :
1261 [ # # ][ # # ]: 0 : xRootStorage = css::uno::Reference< css::embed::XStorage >(xStorageFactory->createInstanceWithArguments(lArgs), css::uno::UNO_QUERY_THROW);
[ # # ][ # # ]
1262 [ # # ][ # # ]: 0 : css::uno::Reference< css::embed::XStorage > xUIConfig = xRootStorage->openStorageElement(FOLDERNAME_UICONFIG, css::embed::ElementModes::READ);
1263 [ # # ]: 0 : if (xUIConfig.is())
1264 : : {
1265 [ # # ][ # # ]: 0 : xCfgMgr = css::uno::Reference< css::ui::XUIConfigurationManager >(m_xSMGR->createInstance(SERVICE_UICONFIGMGR), css::uno::UNO_QUERY_THROW);
[ # # ][ # # ]
1266 [ # # ]: 0 : css::uno::Reference< css::ui::XUIConfigurationStorage > xCfgMgrStore(xCfgMgr, css::uno::UNO_QUERY_THROW);
1267 [ # # ][ # # ]: 0 : xCfgMgrStore->setStorage(xUIConfig);
1268 [ # # ]: 0 : }
1269 : : }
1270 : :
1271 [ # # ]: 0 : if (xCfgMgr.is())
1272 : : {
1273 : : // open the configuration and update our UI
1274 [ # # ][ # # ]: 0 : css::uno::Reference< css::ui::XAcceleratorConfiguration > xTempAccMgr(xCfgMgr->getShortCutManager(), css::uno::UNO_QUERY_THROW);
[ # # ]
1275 : :
1276 [ # # ]: 0 : aEntriesBox.SetUpdateMode(sal_False);
1277 [ # # ]: 0 : ResetConfig();
1278 [ # # ]: 0 : Init(xTempAccMgr);
1279 [ # # ]: 0 : aEntriesBox.SetUpdateMode(sal_True);
1280 [ # # ]: 0 : aEntriesBox.Invalidate();
1281 [ # # ][ # # ]: 0 : aEntriesBox.Select(aEntriesBox.GetEntry(0, 0));
1282 : :
1283 : : }
1284 : :
1285 : : // dont forget to close the new opened storage!
1286 : : // We are the owner of it.
1287 [ # # ]: 0 : if (xRootStorage.is())
1288 : : {
1289 : 0 : css::uno::Reference< css::lang::XComponent > xComponent;
1290 [ # # ][ # # ]: 0 : xComponent = css::uno::Reference< css::lang::XComponent >(xCfgMgr, css::uno::UNO_QUERY);
1291 [ # # ]: 0 : if (xComponent.is())
1292 [ # # ][ # # ]: 0 : xComponent->dispose();
1293 [ # # ][ # # ]: 0 : xComponent = css::uno::Reference< css::lang::XComponent >(xRootStorage, css::uno::UNO_QUERY);
1294 [ # # ]: 0 : if (xComponent.is())
1295 [ # # ][ # # ]: 0 : xComponent->dispose();
1296 : : }
1297 : : }
1298 [ # # # ]: 0 : catch(const css::uno::RuntimeException&)
1299 : 0 : { throw; }
1300 [ # # ]: 0 : catch(const css::uno::Exception&)
1301 : : {}
1302 : :
1303 [ # # ]: 0 : GetTabDialog()->LeaveWait();
1304 : :
1305 : 0 : return 0;
1306 : : }
1307 : :
1308 : : //-----------------------------------------------
1309 : 0 : IMPL_LINK_NOARG(SfxAcceleratorConfigPage, SaveHdl)
1310 : : {
1311 : : DBG_ASSERT( m_pFileDlg, "SfxInternetPage::DialogClosedHdl(): no file dialog" );
1312 : :
1313 : 0 : ::rtl::OUString sCfgName;
1314 [ # # ]: 0 : if ( ERRCODE_NONE == m_pFileDlg->GetError() )
1315 [ # # ][ # # ]: 0 : sCfgName = m_pFileDlg->GetPath();
[ # # ]
1316 : :
1317 [ # # ]: 0 : if ( sCfgName.isEmpty() )
1318 : 0 : return 0;
1319 : :
1320 [ # # ]: 0 : GetTabDialog()->EnterWait();
1321 : :
1322 : 0 : css::uno::Reference< css::frame::XModel > xDoc ;
1323 : 0 : css::uno::Reference< css::ui::XUIConfigurationManager > xCfgMgr ;
1324 : 0 : css::uno::Reference< css::embed::XStorage > xRootStorage;
1325 : :
1326 : : try
1327 : : {
1328 : : // first check if URL points to a document already loaded
1329 [ # # ][ # # ]: 0 : xDoc = SearchForAlreadyLoadedDoc(sCfgName);
[ # # ][ # # ]
1330 [ # # ]: 0 : if (xDoc.is())
1331 : : {
1332 : : // get config manager, force creation if there was none before
1333 [ # # ]: 0 : css::uno::Reference< css::ui::XUIConfigurationManagerSupplier > xCfgSupplier(xDoc, css::uno::UNO_QUERY_THROW);
1334 [ # # ][ # # ]: 0 : xCfgMgr = xCfgSupplier->getUIConfigurationManager();
[ # # ]
1335 : : }
1336 : : else
1337 : : {
1338 : : // URL doesn't point to a loaded document, try to access it as a single storage
1339 [ # # ][ # # ]: 0 : css::uno::Reference< css::lang::XSingleServiceFactory > xStorageFactory(m_xSMGR->createInstance(SERVICE_STORAGEFACTORY), css::uno::UNO_QUERY_THROW);
[ # # ]
1340 [ # # ]: 0 : css::uno::Sequence< css::uno::Any > lArgs(2);
1341 [ # # ][ # # ]: 0 : lArgs[0] <<= sCfgName;
1342 [ # # ][ # # ]: 0 : lArgs[1] <<= css::embed::ElementModes::WRITE;
1343 : :
1344 : : xRootStorage = css::uno::Reference< css::embed::XStorage >(
1345 [ # # ]: 0 : xStorageFactory->createInstanceWithArguments(lArgs),
1346 [ # # ][ # # ]: 0 : css::uno::UNO_QUERY_THROW);
[ # # ]
1347 : :
1348 : : css::uno::Reference< css::embed::XStorage > xUIConfig(
1349 [ # # ]: 0 : xRootStorage->openStorageElement(FOLDERNAME_UICONFIG, css::embed::ElementModes::WRITE),
1350 [ # # ][ # # ]: 0 : css::uno::UNO_QUERY_THROW);
1351 : : css::uno::Reference< css::beans::XPropertySet > xUIConfigProps(
1352 : : xUIConfig,
1353 [ # # ]: 0 : css::uno::UNO_QUERY_THROW);
1354 : :
1355 : : // set the correct media type if the storage was new created
1356 : 0 : ::rtl::OUString sMediaType;
1357 [ # # ][ # # ]: 0 : xUIConfigProps->getPropertyValue(MEDIATYPE_PROPNAME) >>= sMediaType;
1358 [ # # ]: 0 : if (sMediaType.isEmpty())
1359 [ # # ][ # # ]: 0 : xUIConfigProps->setPropertyValue(MEDIATYPE_PROPNAME, css::uno::makeAny(MEDIATYPE_UICONFIG));
[ # # ]
1360 : :
1361 [ # # ][ # # ]: 0 : xCfgMgr = css::uno::Reference< css::ui::XUIConfigurationManager >(m_xSMGR->createInstance(SERVICE_UICONFIGMGR), css::uno::UNO_QUERY_THROW);
[ # # ][ # # ]
1362 [ # # ]: 0 : css::uno::Reference< css::ui::XUIConfigurationStorage > xUICfgStore(xCfgMgr, css::uno::UNO_QUERY_THROW);
1363 [ # # ][ # # ]: 0 : xUICfgStore->setStorage(xUIConfig);
[ # # ]
1364 : : }
1365 : :
1366 [ # # ]: 0 : if (xCfgMgr.is())
1367 : : {
1368 : : // get the target configuration access and update with all shortcuts
1369 : : // which are set currently at the UI !
1370 : : // Dont copy the m_xAct content to it ... because m_xAct will be updated
1371 : : // from the UI on pressing the button "OK" only. And inbetween it's not up to date !
1372 [ # # ][ # # ]: 0 : css::uno::Reference< css::ui::XAcceleratorConfiguration > xTargetAccMgr(xCfgMgr->getShortCutManager(), css::uno::UNO_QUERY_THROW);
[ # # ]
1373 [ # # ]: 0 : Apply(xTargetAccMgr);
1374 : :
1375 : : // commit (order is important!)
1376 [ # # ]: 0 : css::uno::Reference< css::ui::XUIConfigurationPersistence > xCommit1(xTargetAccMgr, css::uno::UNO_QUERY_THROW);
1377 [ # # ]: 0 : css::uno::Reference< css::ui::XUIConfigurationPersistence > xCommit2(xCfgMgr , css::uno::UNO_QUERY_THROW);
1378 [ # # ][ # # ]: 0 : xCommit1->store();
1379 [ # # ][ # # ]: 0 : xCommit2->store();
1380 : :
1381 [ # # ]: 0 : if (xRootStorage.is())
1382 : : {
1383 : : // Commit root storage
1384 [ # # ]: 0 : css::uno::Reference< css::embed::XTransactedObject > xCommit3(xRootStorage, css::uno::UNO_QUERY_THROW);
1385 [ # # ][ # # ]: 0 : xCommit3->commit();
1386 : 0 : }
1387 : : }
1388 : :
1389 [ # # ]: 0 : if (xRootStorage.is())
1390 : : {
1391 : 0 : css::uno::Reference< css::lang::XComponent > xComponent;
1392 [ # # ][ # # ]: 0 : xComponent = css::uno::Reference< css::lang::XComponent >(xCfgMgr, css::uno::UNO_QUERY);
1393 [ # # ]: 0 : if (xComponent.is())
1394 [ # # ][ # # ]: 0 : xComponent->dispose();
1395 [ # # ][ # # ]: 0 : xComponent = css::uno::Reference< css::lang::XComponent >(xRootStorage, css::uno::UNO_QUERY);
1396 [ # # ]: 0 : if (xComponent.is())
1397 [ # # ][ # # ]: 0 : xComponent->dispose();
1398 : : }
1399 : : }
1400 [ # # # ]: 0 : catch(const css::uno::RuntimeException&)
1401 : 0 : { throw; }
1402 [ # # ]: 0 : catch(const css::uno::Exception&)
1403 : : {}
1404 : :
1405 [ # # ]: 0 : GetTabDialog()->LeaveWait();
1406 : :
1407 : 0 : return 0;
1408 : : }
1409 : :
1410 : : //-----------------------------------------------
1411 : 0 : void SfxAcceleratorConfigPage::StartFileDialog( WinBits nBits, const String& rTitle )
1412 : : {
1413 : 0 : bool bSave = ( ( nBits & WB_SAVEAS ) == WB_SAVEAS );
1414 : : short nDialogType = bSave ? css::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE
1415 [ # # ]: 0 : : css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE;
1416 [ # # ]: 0 : if ( m_pFileDlg )
1417 [ # # ][ # # ]: 0 : delete m_pFileDlg;
1418 [ # # ][ # # ]: 0 : m_pFileDlg = new sfx2::FileDialogHelper( nDialogType, 0 );
1419 : :
1420 [ # # ]: 0 : m_pFileDlg->SetTitle( rTitle );
1421 [ # # ][ # # ]: 0 : m_pFileDlg->AddFilter( aFilterAllStr, DEFINE_CONST_UNICODE( FILEDIALOG_FILTER_ALL ) );
[ # # ]
1422 [ # # ][ # # ]: 0 : m_pFileDlg->AddFilter( aFilterCfgStr, DEFINE_CONST_UNICODE( "*.cfg" ) );
[ # # ]
1423 : :
1424 : : Link aDlgClosedLink = bSave ? LINK( this, SfxAcceleratorConfigPage, SaveHdl )
1425 [ # # ][ # # ]: 0 : : LINK( this, SfxAcceleratorConfigPage, LoadHdl );
[ # # ]
1426 [ # # ]: 0 : m_pFileDlg->StartExecuteModal( aDlgClosedLink );
1427 : 0 : }
1428 : :
1429 : : //-----------------------------------------------
1430 : 0 : sal_Bool SfxAcceleratorConfigPage::FillItemSet( SfxItemSet& )
1431 : : {
1432 : 0 : Apply(m_xAct);
1433 : : try
1434 : : {
1435 [ # # ][ # # ]: 0 : m_xAct->store();
1436 : : }
1437 [ # # # ]: 0 : catch(const css::uno::RuntimeException&)
1438 : 0 : { throw; }
1439 : 0 : catch(const css::uno::Exception&)
1440 : 0 : { return sal_False; }
1441 : :
1442 : 0 : return sal_True;
1443 : : }
1444 : :
1445 : : //-----------------------------------------------
1446 : 0 : void SfxAcceleratorConfigPage::Reset( const SfxItemSet& rSet )
1447 : : {
1448 : : // open accelerator configs
1449 : : // Note: It initialize some other members too, which are needed here ...
1450 : : // e.g. m_sModuleUIName!
1451 [ # # ]: 0 : InitAccCfg();
1452 : :
1453 : : // change te description of the radio button, which switch to the module
1454 : : // dependend accelerator configuration
1455 [ # # ]: 0 : String sButtonText = aModuleButton.GetText();
1456 [ # # ][ # # ]: 0 : sButtonText.SearchAndReplace(rtl::OUString("$(MODULE)"), m_sModuleUIName);
[ # # ][ # # ]
[ # # ]
1457 [ # # ]: 0 : aModuleButton.SetText(sButtonText);
1458 : :
1459 [ # # ]: 0 : if (m_xModule.is())
1460 [ # # ]: 0 : aModuleButton.Check();
1461 : : else
1462 : : {
1463 [ # # ]: 0 : aModuleButton.Hide();
1464 [ # # ]: 0 : aOfficeButton.Check();
1465 : : }
1466 : :
1467 [ # # ]: 0 : RadioHdl(0);
1468 : :
1469 : 0 : const SfxPoolItem* pMacroItem=0;
1470 [ # # ][ # # ]: 0 : if( SFX_ITEM_SET == rSet.GetItemState( SID_MACROINFO, sal_True, &pMacroItem ) )
1471 : : {
1472 [ # # ][ # # ]: 0 : m_pMacroInfoItem = PTR_CAST( SfxMacroInfoItem, pMacroItem );
[ # # ][ # # ]
1473 [ # # ]: 0 : pGroupLBox->SelectMacro( m_pMacroInfoItem );
1474 : : }
1475 : : else
1476 : : {
1477 : 0 : const SfxPoolItem* pStringItem=0;
1478 [ # # ][ # # ]: 0 : if( SFX_ITEM_SET == rSet.GetItemState( SID_CHARMAP, sal_True, &pStringItem ) )
1479 [ # # ][ # # ]: 0 : m_pStringItem = PTR_CAST( SfxStringItem, pStringItem );
[ # # ][ # # ]
1480 : :
1481 : 0 : const SfxPoolItem* pFontItem=0;
1482 [ # # ][ # # ]: 0 : if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_SPECIALCHAR, sal_True, &pFontItem ) )
1483 [ # # ][ # # ]: 0 : m_pFontItem = PTR_CAST( SfxStringItem, pFontItem );
[ # # ][ # # ]
1484 [ # # ]: 0 : }
1485 : 0 : }
1486 : :
1487 : : //-----------------------------------------------
1488 : 0 : sal_uInt16 SfxAcceleratorConfigPage::MapKeyCodeToPos(const KeyCode& aKey) const
1489 : : {
1490 : 0 : sal_uInt16 nCode1 = aKey.GetCode()+aKey.GetModifier();
1491 : 0 : SvLBoxEntry* pEntry = aEntriesBox.First();
1492 : 0 : sal_uInt16 i = 0;
1493 : :
1494 [ # # ]: 0 : while (pEntry)
1495 : : {
1496 : 0 : TAccInfo* pUserData = (TAccInfo*)pEntry->GetUserData();
1497 [ # # ]: 0 : if (pUserData)
1498 : : {
1499 : 0 : sal_uInt16 nCode2 = pUserData->m_aKey.GetCode()+pUserData->m_aKey.GetModifier();
1500 [ # # ]: 0 : if (nCode1 == nCode2)
1501 : 0 : return i;
1502 : : }
1503 : 0 : pEntry = aEntriesBox.Next(pEntry);
1504 : 0 : ++i;
1505 : : }
1506 : :
1507 : 0 : return LISTBOX_ENTRY_NOTFOUND;
1508 : : }
1509 : :
1510 : : //-----------------------------------------------
1511 : 0 : String SfxAcceleratorConfigPage::GetLabel4Command(const String& sCommand)
1512 : : {
1513 : : try
1514 : : {
1515 : : // check global command configuration first
1516 : 0 : css::uno::Reference< css::container::XNameAccess > xModuleConf;
1517 [ # # ][ # # ]: 0 : m_xUICmdDescription->getByName(m_sModuleLongName) >>= xModuleConf;
[ # # ]
1518 [ # # ]: 0 : if (xModuleConf.is())
1519 : : {
1520 [ # # ][ # # ]: 0 : ::comphelper::SequenceAsHashMap lProps(xModuleConf->getByName(sCommand));
[ # # ][ # # ]
1521 [ # # ][ # # ]: 0 : String sLabel = String(lProps.getUnpackedValueOrDefault(CMDPROP_UINAME, ::rtl::OUString()));
1522 [ # # ]: 0 : if (sLabel.Len())
1523 [ # # ][ # # ]: 0 : return sLabel;
[ # # ][ # # ]
[ # # ]
1524 [ # # ]: 0 : }
1525 : : }
1526 [ # # # ]: 0 : catch(const css::uno::RuntimeException&)
1527 : 0 : { throw; }
1528 [ # # ]: 0 : catch(const css::uno::Exception&)
1529 : : {}
1530 : :
1531 : : // may be it's a style URL .. they must be handled special
1532 : 0 : SfxStyleInfo_Impl aStyle;
1533 [ # # ]: 0 : aStyle.sCommand = sCommand;
1534 [ # # ][ # # ]: 0 : if (m_aStylesInfo.parseStyleCommand(aStyle))
1535 : : {
1536 [ # # ]: 0 : m_aStylesInfo.getLabel4Style(aStyle);
1537 [ # # ]: 0 : return aStyle.sLabel;
1538 : : }
1539 : : else
1540 : : {
1541 [ # # ]: 0 : String aRet(rtl::OUString("Symbols: "));
1542 [ # # ]: 0 : xub_StrLen nPos = sCommand.SearchAscii(".uno:InsertSymbol?Symbols:string=");
1543 [ # # ]: 0 : if ( nPos == 0 )
1544 : : {
1545 [ # # ][ # # ]: 0 : aRet += String( sCommand, 34, sCommand.Len()-34 );
[ # # ]
1546 [ # # ]: 0 : return aRet;
1547 [ # # ][ # # ]: 0 : }
1548 : : }
1549 : :
1550 [ # # ]: 0 : return sCommand;
1551 : : }
1552 : :
1553 : 0 : SfxTabPage* SfxAcceleratorConfigPage::Create( Window* pParent, const SfxItemSet& rAttrSet )
1554 : : {
1555 [ # # ]: 0 : return new SfxAcceleratorConfigPage( pParent, rAttrSet );
1556 : : }
1557 : :
1558 : : //-----------------------------------------------
1559 : 0 : css::uno::Reference< css::frame::XModel > SfxAcceleratorConfigPage::SearchForAlreadyLoadedDoc(const String& /*sName*/)
1560 : : {
1561 : 0 : return css::uno::Reference< css::frame::XModel >();
1562 : : }
1563 : :
1564 : 0 : SvxShortcutAssignDlg::SvxShortcutAssignDlg( Window* pParent, const uno::Reference< frame::XFrame >& rxDocumentFrame, const SfxItemSet& rSet )
1565 : 0 : : SfxSingleTabDialog( pParent, rSet, 0 )
1566 : : {
1567 [ # # ]: 0 : SfxTabPage* pPage = SfxAcceleratorConfigPage::Create( this, rSet );
1568 [ # # ]: 0 : pPage->SetFrame( rxDocumentFrame );
1569 [ # # ]: 0 : SetTabPage( pPage );
1570 : :
1571 : 0 : }
1572 : :
1573 : 0 : SvxShortcutAssignDlg::~SvxShortcutAssignDlg()
1574 : : {
1575 [ + - ][ + - ]: 9 : }
[ # # ]
1576 : :
1577 : :
1578 : : // .uno:InsertSymbol?Symbols:string=bla
1579 : :
1580 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|