blob: d3110ebc94e5219296d4788d9b49e074779c791c [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _ACCCFG_HXX
#define _ACCCFG_HXX
// #include *****************************************************************
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/XIndexContainer.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/frame/XModuleManager.hpp>
#include <com/sun/star/ui/XUIConfigurationManager.hpp>
#include <com/sun/star/ui/XAcceleratorConfiguration.hpp>
#include <com/sun/star/frame/XFrame.hpp>
#include <com/sun/star/frame/XStorable.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/lang/XSingleComponentFactory.hpp>
#include <com/sun/star/script/browse/XBrowseNode.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/frame/XFrame.hpp>
#include <algorithm>
#include <vcl/fixed.hxx>
#include <vcl/button.hxx>
#include <vcl/dialog.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/group.hxx>
#include <svtools/svtabbx.hxx>
#include <svtools/svtreebx.hxx>
#include <sfx2/tabdlg.hxx>
#include <sfx2/basedlgs.hxx>
#define _SVSTDARR_STRINGSDTOR
#include <svl/svstdarr.hxx>
#include <sfx2/minarray.hxx>
#include "cfgutil.hxx"
// class SfxAcceleratorConfigListBox *************************************************
#define css ::com::sun::star
class SfxMacroInfoItem;
class SfxConfigGroupListBox_Impl;
class SfxConfigFunctionListBox_Impl;
class SfxAcceleratorConfigPage;
class SfxAccCfgTabListBox_Impl : public SvTabListBox
{
SfxAcceleratorConfigPage* m_pAccelConfigPage;
void KeyInput( const KeyEvent &rKEvt );
protected:
virtual void InitEntry( SvLBoxEntry*, const XubString&, const Image&, const Image&, SvLBoxButtonKind eButtonKind );
public:
SfxAccCfgTabListBox_Impl(
SfxAcceleratorConfigPage* pAccelConfigPage,
Window *pParent,
const ResId &rResId ) :
SvTabListBox( pParent, rResId ),
m_pAccelConfigPage( pAccelConfigPage )
{}
void ReplaceEntry( sal_uInt16 nPos, const String &rStr );
};
// class SfxAcceleratorConfigPage ----------------------------------------
struct TAccInfo
{
public:
TAccInfo( sal_Int32 nKeyPos ,
sal_Int32 nListPos,
const KeyCode& aKey )
: m_nKeyPos (nKeyPos )
, m_nListPos (nListPos )
, m_bIsConfigurable(sal_True )
, m_sCommand ( )
, m_aKey (aKey )
// its important to set sal_True as default -
// because only fix entries will be disabled later ...
{}
sal_Bool isConfigured() const
{
return (m_nKeyPos>-1 && m_nListPos>-1 && m_sCommand.getLength());
}
sal_Int32 m_nKeyPos;
sal_Int32 m_nListPos;
sal_Bool m_bIsConfigurable;
::rtl::OUString m_sCommand;
KeyCode m_aKey;
};
namespace sfx2
{
class FileDialogHelper;
}
class SfxAcceleratorConfigPage : public SfxTabPage
{
friend class SfxAccCfgTabListBox_Impl;
private:
const SfxMacroInfoItem* m_pMacroInfoItem;
const SfxStringItem* m_pStringItem;
const SfxStringItem* m_pFontItem;
sfx2::FileDialogHelper* m_pFileDlg;
SfxAccCfgTabListBox_Impl aEntriesBox;
FixedLine aKeyboardGroup;
RadioButton aOfficeButton;
RadioButton aModuleButton;
PushButton aChangeButton;
PushButton aRemoveButton;
FixedText aGroupText;
SfxConfigGroupListBox_Impl* pGroupLBox;
FixedText aFunctionText;
SfxConfigFunctionListBox_Impl* pFunctionBox;
FixedText aKeyText;
SvTreeListBox aKeyBox;
FixedLine aFunctionsGroup;
PushButton aLoadButton;
PushButton aSaveButton;
PushButton aResetButton;
String aLoadAccelConfigStr;
String aSaveAccelConfigStr;
String aFilterAllStr;
String aFilterCfgStr;
SfxStylesInfo_Impl m_aStylesInfo;
sal_Bool m_bStylesInfoInitialized;
css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
css::uno::Reference< css::ui::XAcceleratorConfiguration > m_xGlobal;
css::uno::Reference< css::ui::XAcceleratorConfiguration > m_xModule;
css::uno::Reference< css::ui::XAcceleratorConfiguration > m_xAct;
css::uno::Reference< css::container::XNameAccess > m_xUICmdDescription;
css::uno::Reference< css::frame::XFrame > m_xFrame;
::rtl::OUString m_sModuleLongName;
::rtl::OUString m_sModuleShortName;
::rtl::OUString m_sModuleUIName;
DECL_LINK( ChangeHdl, Button * );
DECL_LINK( RemoveHdl, Button * );
DECL_LINK( SelectHdl, Control * );
DECL_LINK( Save, Button * );
DECL_LINK( Load, Button * );
DECL_LINK( Default, PushButton * );
DECL_LINK( RadioHdl, RadioButton* );
DECL_LINK( LoadHdl, sfx2::FileDialogHelper* );
DECL_LINK( SaveHdl, sfx2::FileDialogHelper* );
String GetLabel4Command(const String& sCommand);
void InitAccCfg();
sal_uInt16 MapKeyCodeToPos( const KeyCode &rCode ) const;
css::uno::Reference< css::frame::XModel > SearchForAlreadyLoadedDoc(const String& sName);
void StartFileDialog( WinBits nBits, const String& rTitle );
void Init(const css::uno::Reference< css::ui::XAcceleratorConfiguration >& pAccMgr);
void ResetConfig();
void CreateCustomItems( SvLBoxEntry* pEntry, const String& aCol1, const String& aCol2 );
public:
SfxAcceleratorConfigPage( Window *pParent, const SfxItemSet& rItemSet );
virtual ~SfxAcceleratorConfigPage();
virtual sal_Bool FillItemSet( SfxItemSet& );
virtual void Reset( const SfxItemSet& );
void Apply(const css::uno::Reference< css::ui::XAcceleratorConfiguration >& pAccMgr);
static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet );
};
class SfxAcceleratorConfigListBox : public ListBox
{
void KeyInput( const KeyEvent &rKEvt );
public:
SfxAcceleratorConfigListBox( Window *pParent, ResId &rResId ) :
ListBox( pParent, rResId ) {}
void ReplaceEntry( sal_uInt16 nPos, const String &rStr );
void ExpandEntry ( sal_uInt16 nPos, const String &rStr );
};
class SvxShortcutAssignDlg : public SfxSingleTabDialog
{
public:
SvxShortcutAssignDlg(
Window* pParent,
const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxDocumentFrame,
const SfxItemSet& rSet );
virtual ~SvxShortcutAssignDlg();
};
#undef css
#endif