1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef _ACCCFG_HXX 25*b1cdbd2cSJim Jagielski #define _ACCCFG_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski // #include ***************************************************************** 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp> 30*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XIndexContainer.hpp> 31*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp> 32*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XModuleManager.hpp> 33*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/XUIConfigurationManager.hpp> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/XAcceleratorConfiguration.hpp> 35*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrame.hpp> 36*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XStorable.hpp> 37*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/XComponentContext.hpp> 38*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XSingleComponentFactory.hpp> 39*b1cdbd2cSJim Jagielski #include <com/sun/star/script/browse/XBrowseNode.hpp> 40*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp> 41*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XFrame.hpp> 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski #include <algorithm> 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx> 46*b1cdbd2cSJim Jagielski #include <vcl/button.hxx> 47*b1cdbd2cSJim Jagielski #include <vcl/dialog.hxx> 48*b1cdbd2cSJim Jagielski #include <vcl/lstbox.hxx> 49*b1cdbd2cSJim Jagielski #include <vcl/group.hxx> 50*b1cdbd2cSJim Jagielski #include <svtools/svtabbx.hxx> 51*b1cdbd2cSJim Jagielski #include <svtools/svtreebx.hxx> 52*b1cdbd2cSJim Jagielski #include <sfx2/tabdlg.hxx> 53*b1cdbd2cSJim Jagielski #include <sfx2/basedlgs.hxx> 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski #define _SVSTDARR_STRINGSDTOR 56*b1cdbd2cSJim Jagielski #include <svl/svstdarr.hxx> 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski #include <sfx2/minarray.hxx> 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski #include "cfgutil.hxx" 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski // class SfxAcceleratorConfigListBox ************************************************* 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski #define css ::com::sun::star 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski class SfxMacroInfoItem; 67*b1cdbd2cSJim Jagielski class SfxConfigGroupListBox_Impl; 68*b1cdbd2cSJim Jagielski class SfxConfigFunctionListBox_Impl; 69*b1cdbd2cSJim Jagielski class SfxAcceleratorConfigPage; 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski class SfxAccCfgTabListBox_Impl : public SvTabListBox 72*b1cdbd2cSJim Jagielski { 73*b1cdbd2cSJim Jagielski SfxAcceleratorConfigPage* m_pAccelConfigPage; 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski void KeyInput( const KeyEvent &rKEvt ); 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski protected: 78*b1cdbd2cSJim Jagielski virtual void InitEntry( SvLBoxEntry*, const XubString&, const Image&, const Image&, SvLBoxButtonKind eButtonKind ); 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski public: SfxAccCfgTabListBox_Impl(SfxAcceleratorConfigPage * pAccelConfigPage,Window * pParent,const ResId & rResId)81*b1cdbd2cSJim Jagielski SfxAccCfgTabListBox_Impl( 82*b1cdbd2cSJim Jagielski SfxAcceleratorConfigPage* pAccelConfigPage, 83*b1cdbd2cSJim Jagielski Window *pParent, 84*b1cdbd2cSJim Jagielski const ResId &rResId ) : 85*b1cdbd2cSJim Jagielski SvTabListBox( pParent, rResId ), 86*b1cdbd2cSJim Jagielski m_pAccelConfigPage( pAccelConfigPage ) 87*b1cdbd2cSJim Jagielski {} 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski void ReplaceEntry( sal_uInt16 nPos, const String &rStr ); 90*b1cdbd2cSJim Jagielski }; 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski // class SfxAcceleratorConfigPage ---------------------------------------- 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski struct TAccInfo 95*b1cdbd2cSJim Jagielski { 96*b1cdbd2cSJim Jagielski public: 97*b1cdbd2cSJim Jagielski TAccInfoTAccInfo98*b1cdbd2cSJim Jagielski TAccInfo( sal_Int32 nKeyPos , 99*b1cdbd2cSJim Jagielski sal_Int32 nListPos, 100*b1cdbd2cSJim Jagielski const KeyCode& aKey ) 101*b1cdbd2cSJim Jagielski : m_nKeyPos (nKeyPos ) 102*b1cdbd2cSJim Jagielski , m_nListPos (nListPos ) 103*b1cdbd2cSJim Jagielski , m_bIsConfigurable(sal_True ) 104*b1cdbd2cSJim Jagielski , m_sCommand ( ) 105*b1cdbd2cSJim Jagielski , m_aKey (aKey ) 106*b1cdbd2cSJim Jagielski // its important to set sal_True as default - 107*b1cdbd2cSJim Jagielski // because only fix entries will be disabled later ... 108*b1cdbd2cSJim Jagielski {} 109*b1cdbd2cSJim Jagielski isConfiguredTAccInfo110*b1cdbd2cSJim Jagielski sal_Bool isConfigured() const 111*b1cdbd2cSJim Jagielski { 112*b1cdbd2cSJim Jagielski return (m_nKeyPos>-1 && m_nListPos>-1 && m_sCommand.getLength()); 113*b1cdbd2cSJim Jagielski } 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski sal_Int32 m_nKeyPos; 116*b1cdbd2cSJim Jagielski sal_Int32 m_nListPos; 117*b1cdbd2cSJim Jagielski sal_Bool m_bIsConfigurable; 118*b1cdbd2cSJim Jagielski ::rtl::OUString m_sCommand; 119*b1cdbd2cSJim Jagielski KeyCode m_aKey; 120*b1cdbd2cSJim Jagielski }; 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski namespace sfx2 123*b1cdbd2cSJim Jagielski { 124*b1cdbd2cSJim Jagielski class FileDialogHelper; 125*b1cdbd2cSJim Jagielski } 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski class SfxAcceleratorConfigPage : public SfxTabPage 128*b1cdbd2cSJim Jagielski { 129*b1cdbd2cSJim Jagielski friend class SfxAccCfgTabListBox_Impl; 130*b1cdbd2cSJim Jagielski private: 131*b1cdbd2cSJim Jagielski const SfxMacroInfoItem* m_pMacroInfoItem; 132*b1cdbd2cSJim Jagielski const SfxStringItem* m_pStringItem; 133*b1cdbd2cSJim Jagielski const SfxStringItem* m_pFontItem; 134*b1cdbd2cSJim Jagielski sfx2::FileDialogHelper* m_pFileDlg; 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski SfxAccCfgTabListBox_Impl aEntriesBox; 137*b1cdbd2cSJim Jagielski FixedLine aKeyboardGroup; 138*b1cdbd2cSJim Jagielski RadioButton aOfficeButton; 139*b1cdbd2cSJim Jagielski RadioButton aModuleButton; 140*b1cdbd2cSJim Jagielski PushButton aChangeButton; 141*b1cdbd2cSJim Jagielski PushButton aRemoveButton; 142*b1cdbd2cSJim Jagielski FixedText aGroupText; 143*b1cdbd2cSJim Jagielski SfxConfigGroupListBox_Impl* pGroupLBox; 144*b1cdbd2cSJim Jagielski FixedText aFunctionText; 145*b1cdbd2cSJim Jagielski SfxConfigFunctionListBox_Impl* pFunctionBox; 146*b1cdbd2cSJim Jagielski FixedText aKeyText; 147*b1cdbd2cSJim Jagielski SvTreeListBox aKeyBox; 148*b1cdbd2cSJim Jagielski FixedLine aFunctionsGroup; 149*b1cdbd2cSJim Jagielski PushButton aLoadButton; 150*b1cdbd2cSJim Jagielski PushButton aSaveButton; 151*b1cdbd2cSJim Jagielski PushButton aResetButton; 152*b1cdbd2cSJim Jagielski String aLoadAccelConfigStr; 153*b1cdbd2cSJim Jagielski String aSaveAccelConfigStr; 154*b1cdbd2cSJim Jagielski String aFilterAllStr; 155*b1cdbd2cSJim Jagielski String aFilterCfgStr; 156*b1cdbd2cSJim Jagielski SfxStylesInfo_Impl m_aStylesInfo; 157*b1cdbd2cSJim Jagielski sal_Bool m_bStylesInfoInitialized; 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; 160*b1cdbd2cSJim Jagielski css::uno::Reference< css::ui::XAcceleratorConfiguration > m_xGlobal; 161*b1cdbd2cSJim Jagielski css::uno::Reference< css::ui::XAcceleratorConfiguration > m_xModule; 162*b1cdbd2cSJim Jagielski css::uno::Reference< css::ui::XAcceleratorConfiguration > m_xAct; 163*b1cdbd2cSJim Jagielski css::uno::Reference< css::container::XNameAccess > m_xUICmdDescription; 164*b1cdbd2cSJim Jagielski css::uno::Reference< css::frame::XFrame > m_xFrame; 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski ::rtl::OUString m_sModuleLongName; 167*b1cdbd2cSJim Jagielski ::rtl::OUString m_sModuleShortName; 168*b1cdbd2cSJim Jagielski ::rtl::OUString m_sModuleUIName; 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski DECL_LINK( ChangeHdl, Button * ); 171*b1cdbd2cSJim Jagielski DECL_LINK( RemoveHdl, Button * ); 172*b1cdbd2cSJim Jagielski DECL_LINK( SelectHdl, Control * ); 173*b1cdbd2cSJim Jagielski DECL_LINK( Save, Button * ); 174*b1cdbd2cSJim Jagielski DECL_LINK( Load, Button * ); 175*b1cdbd2cSJim Jagielski DECL_LINK( Default, PushButton * ); 176*b1cdbd2cSJim Jagielski DECL_LINK( RadioHdl, RadioButton* ); 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski DECL_LINK( LoadHdl, sfx2::FileDialogHelper* ); 179*b1cdbd2cSJim Jagielski DECL_LINK( SaveHdl, sfx2::FileDialogHelper* ); 180*b1cdbd2cSJim Jagielski 181*b1cdbd2cSJim Jagielski String GetLabel4Command(const String& sCommand); 182*b1cdbd2cSJim Jagielski void InitAccCfg(); 183*b1cdbd2cSJim Jagielski sal_uInt16 MapKeyCodeToPos( const KeyCode &rCode ) const; 184*b1cdbd2cSJim Jagielski css::uno::Reference< css::frame::XModel > SearchForAlreadyLoadedDoc(const String& sName); 185*b1cdbd2cSJim Jagielski void StartFileDialog( WinBits nBits, const String& rTitle ); 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski void Init(const css::uno::Reference< css::ui::XAcceleratorConfiguration >& pAccMgr); 188*b1cdbd2cSJim Jagielski void ResetConfig(); 189*b1cdbd2cSJim Jagielski 190*b1cdbd2cSJim Jagielski void CreateCustomItems( SvLBoxEntry* pEntry, const String& aCol1, const String& aCol2 ); 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski public: 193*b1cdbd2cSJim Jagielski SfxAcceleratorConfigPage( Window *pParent, const SfxItemSet& rItemSet ); 194*b1cdbd2cSJim Jagielski virtual ~SfxAcceleratorConfigPage(); 195*b1cdbd2cSJim Jagielski 196*b1cdbd2cSJim Jagielski virtual sal_Bool FillItemSet( SfxItemSet& ); 197*b1cdbd2cSJim Jagielski virtual void Reset( const SfxItemSet& ); 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski void Apply(const css::uno::Reference< css::ui::XAcceleratorConfiguration >& pAccMgr); 200*b1cdbd2cSJim Jagielski static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet ); 201*b1cdbd2cSJim Jagielski }; 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski 204*b1cdbd2cSJim Jagielski class SfxAcceleratorConfigListBox : public ListBox 205*b1cdbd2cSJim Jagielski { 206*b1cdbd2cSJim Jagielski void KeyInput( const KeyEvent &rKEvt ); 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski public: 209*b1cdbd2cSJim Jagielski SfxAcceleratorConfigListBox(Window * pParent,ResId & rResId)210*b1cdbd2cSJim Jagielski SfxAcceleratorConfigListBox( Window *pParent, ResId &rResId ) : 211*b1cdbd2cSJim Jagielski ListBox( pParent, rResId ) {} 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski void ReplaceEntry( sal_uInt16 nPos, const String &rStr ); 214*b1cdbd2cSJim Jagielski void ExpandEntry ( sal_uInt16 nPos, const String &rStr ); 215*b1cdbd2cSJim Jagielski }; 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski class SvxShortcutAssignDlg : public SfxSingleTabDialog 218*b1cdbd2cSJim Jagielski { 219*b1cdbd2cSJim Jagielski public: 220*b1cdbd2cSJim Jagielski SvxShortcutAssignDlg( 221*b1cdbd2cSJim Jagielski Window* pParent, 222*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxDocumentFrame, 223*b1cdbd2cSJim Jagielski const SfxItemSet& rSet ); 224*b1cdbd2cSJim Jagielski virtual ~SvxShortcutAssignDlg(); 225*b1cdbd2cSJim Jagielski }; 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski 228*b1cdbd2cSJim Jagielski 229*b1cdbd2cSJim Jagielski #undef css 230*b1cdbd2cSJim Jagielski 231*b1cdbd2cSJim Jagielski #endif 232*b1cdbd2cSJim Jagielski 233