LCOV - code coverage report
Current view: top level - cui/source/customize - acccfg.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 14 531 2.6 %
Date: 2012-08-25 Functions: 2 44 4.5 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 2 1160 0.2 %

           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: */

Generated by: LCOV version 1.10