summaryrefslogtreecommitdiff
path: root/cui/source/tabpages/autocdlg.cxx
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:45 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:45 +0100
commit2e626373db2412ac22e8c5c27a60d11cd29e875b (patch)
tree9e9f67205cd5b72f1031721273e1534a3a1e5b0f /cui/source/tabpages/autocdlg.cxx
parentf7ee7bbd5174b084f018c2ec94d8c70c98ee04da (diff)
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'cui/source/tabpages/autocdlg.cxx')
-rw-r--r--cui/source/tabpages/autocdlg.cxx2741
1 files changed, 0 insertions, 2741 deletions
diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx
deleted file mode 100644
index 3383a0b27..000000000
--- a/cui/source/tabpages/autocdlg.cxx
+++ /dev/null
@@ -1,2741 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#define _SVSTDARR_STRINGSISORTDTOR
-#define _SVSTDARR_STRINGSDTOR
-
-#include <svl/svstdarr.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/field.hxx>
-#include <vcl/keycodes.hxx>
-#include <sot/exchange.hxx>
-#include <svtools/transfer.hxx>
-#include <unotools/syslocale.hxx>
-#include <sfx2/objsh.hxx>
-#include <sfx2/viewsh.hxx>
-#include <unotools/charclass.hxx>
-#include <unotools/collatorwrapper.hxx>
-#include <com/sun/star/i18n/CollatorOptions.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <comphelper/processfactory.hxx>
-#include <vcl/svapp.hxx>
-#include <sfx2/module.hxx>
-#include <sfx2/request.hxx>
-#include <sfx2/sfxsids.hrc>
-#include <svl/eitem.hxx>
-#include <svl/languageoptions.hxx>
-#include <svx/SmartTagMgr.hxx>
-#include <com/sun/star/smarttags/XSmartTagRecognizer.hpp>
-#include <com/sun/star/smarttags/XSmartTagAction.hpp>
-
-#define _OFA_AUTOCDLG_CXX
-#include "autocdlg.hxx"
-#include "autocdlg.hrc"
-#include "helpid.hrc"
-#include <editeng/acorrcfg.hxx>
-#include <editeng/svxacorr.hxx>
-#include "cuicharmap.hxx"
-#include <editeng/unolingu.hxx>
-#include <dialmgr.hxx>
-#include <svx/svxids.hrc> // SID_OPEN_SMARTTAGSOPTIONS
-
-static LanguageType eLastDialogLanguage = LANGUAGE_SYSTEM;
-
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star;
-using namespace ::rtl;
-
-static ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory >& GetProcessFact()
-{
- static ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory > xMSF =
- ::comphelper::getProcessServiceFactory();
- return xMSF;
-}
-
-OfaAutoCorrDlg::OfaAutoCorrDlg(Window* pParent, const SfxItemSet* _pSet ) :
- SfxTabDialog(pParent, CUI_RES( RID_OFA_AUTOCORR_DLG ), _pSet),
- aLanguageFT( this, CUI_RES(FT_LANG )),
- aLanguageLB( this, CUI_RES(LB_LANG ))
-{
- sal_Bool bShowSWOptions = sal_False;
- sal_Bool bOpenSmartTagOptions = sal_False;
-
- if ( _pSet )
- {
- SFX_ITEMSET_ARG( _pSet, pItem, SfxBoolItem, SID_AUTO_CORRECT_DLG, sal_False );
- if ( pItem && pItem->GetValue() )
- bShowSWOptions = sal_True;
-
- SFX_ITEMSET_ARG( _pSet, pItem2, SfxBoolItem, SID_OPEN_SMARTTAGOPTIONS, sal_False );
- if ( pItem2 && pItem2->GetValue() )
- bOpenSmartTagOptions = sal_True;
- }
-
- aLanguageFT.SetZOrder(0, WINDOW_ZORDER_FIRST);
- aLanguageLB.SetZOrder(&aLanguageFT, WINDOW_ZORDER_BEHIND);
- aLanguageLB.SetHelpId(HID_AUTOCORR_LANGUAGE);
- FreeResource();
-
- AddTabPage(RID_OFAPAGE_AUTOCORR_OPTIONS, OfaAutocorrOptionsPage::Create, 0);
- AddTabPage(RID_OFAPAGE_AUTOFMT_APPLY, OfaSwAutoFmtOptionsPage::Create, 0);
- AddTabPage(RID_OFAPAGE_AUTOCOMPLETE_OPTIONS, OfaAutoCompleteTabPage::Create, 0);
- AddTabPage(RID_OFAPAGE_SMARTTAG_OPTIONS, OfaSmartTagOptionsTabPage::Create, 0);
-
- if (!bShowSWOptions)
- {
- RemoveTabPage(RID_OFAPAGE_AUTOFMT_APPLY);
- RemoveTabPage(RID_OFAPAGE_AUTOCOMPLETE_OPTIONS);
- RemoveTabPage(RID_OFAPAGE_SMARTTAG_OPTIONS);
- }
- else
- {
- // remove smart tag tab page if no extensions are installed
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
- if ( !pOpt || !pOpt->pSmartTagMgr || 0 == pOpt->pSmartTagMgr->NumberOfRecognizers() )
- RemoveTabPage(RID_OFAPAGE_SMARTTAG_OPTIONS);
-
- RemoveTabPage(RID_OFAPAGE_AUTOCORR_OPTIONS);
- }
-
- AddTabPage(RID_OFAPAGE_AUTOCORR_REPLACE, OfaAutocorrReplacePage::Create, 0);
- AddTabPage(RID_OFAPAGE_AUTOCORR_EXCEPT, OfaAutocorrExceptPage::Create, 0);
- AddTabPage(RID_OFAPAGE_AUTOCORR_QUOTE, OfaQuoteTabPage::Create, 0);
-
- // initialize languages
- //! LANGUAGE_NONE is displayed as '[All]' and the LanguageType
- //! will be set to LANGUAGE_DONTKNOW
- sal_Int16 nLangList = LANG_LIST_WESTERN;
-
- if( SvtLanguageOptions().IsCTLFontEnabled() )
- nLangList |= LANG_LIST_CTL;
- aLanguageLB.SetLanguageList( nLangList, sal_True, sal_True );
- aLanguageLB.SelectLanguage( LANGUAGE_NONE );
- sal_uInt16 nPos = aLanguageLB.GetSelectEntryPos();
- DBG_ASSERT( LISTBOX_ENTRY_NOTFOUND != nPos, "listbox entry missing" );
- aLanguageLB.SetEntryData( nPos, (void*)(long) LANGUAGE_DONTKNOW );
-
- // Initialisierung funktionier fuer static nicht unter Linux - deswegen hier
- if( LANGUAGE_SYSTEM == eLastDialogLanguage )
- eLastDialogLanguage = Application::GetSettings().GetLanguage();
-
- LanguageType nSelectLang = LANGUAGE_DONTKNOW;
- nPos = aLanguageLB.GetEntryPos( (void*)(long) eLastDialogLanguage );
- if (LISTBOX_ENTRY_NOTFOUND != nPos)
- nSelectLang = eLastDialogLanguage;
- aLanguageLB.SelectLanguage( nSelectLang );
-
- aLanguageLB.SetSelectHdl(LINK(this, OfaAutoCorrDlg, SelectLanguageHdl));
-
- Size aMinSize(aLanguageFT.CalcMinimumSize());
- //reserve some extra space for CJK accelerators that are possible inserted
- //later (like '(A)')
- aLanguageFT.SetPosSizePixel( 0, 0, aMinSize.Width() + 20, 0, WINDOW_POSSIZE_WIDTH );
-
- if ( bOpenSmartTagOptions )
- SetCurPageId( RID_OFAPAGE_SMARTTAG_OPTIONS );
-}
-
-sal_Bool lcl_FindEntry( ListBox& rLB, const String& rEntry,
- CollatorWrapper& rCmpClass )
-{
- sal_uInt16 nCount = rLB.GetEntryCount();
- sal_uInt16 nSelPos = rLB.GetSelectEntryPos();
- sal_uInt16 i;
- for(i = 0; i < nCount; i++)
- {
- if( 0 == rCmpClass.compareString(rEntry, rLB.GetEntry(i) ))
- {
- rLB.SelectEntryPos(i, sal_True);
- return sal_True;
- }
- }
- if(LISTBOX_ENTRY_NOTFOUND != nSelPos)
- rLB.SelectEntryPos(nSelPos, sal_False);
- return sal_False;
-}
-
-IMPL_LINK(OfaAutoCorrDlg, SelectLanguageHdl, ListBox*, pBox)
-{
- sal_uInt16 nPos = pBox->GetSelectEntryPos();
- void* pVoid = pBox->GetEntryData(nPos);
- LanguageType eNewLang = (LanguageType)(long)pVoid;
- //alte Einstellungen speichern und neu fuellen
- if(eNewLang != eLastDialogLanguage)
- {
- sal_uInt16 nPageId = GetCurPageId();
- if(RID_OFAPAGE_AUTOCORR_REPLACE == nPageId)
- ((OfaAutocorrReplacePage*)GetTabPage( nPageId ))->SetLanguage(eNewLang);
- else if(RID_OFAPAGE_AUTOCORR_EXCEPT == nPageId)
- ((OfaAutocorrExceptPage*)GetTabPage( nPageId ))->SetLanguage(eNewLang);
- }
- return 0;
-}
-
-OfaAutocorrOptionsPage::OfaAutocorrOptionsPage( Window* pParent,
- const SfxItemSet& rSet ) :
- SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCORR_OPTIONS ), rSet),
- aCheckLB (this, CUI_RES(CLB_SETTINGS )),
-
- sInput (CUI_RES(ST_USE_REPLACE )),
- sDoubleCaps (CUI_RES(ST_CPTL_STT_WORD )),
- sStartCap (CUI_RES(ST_CPTL_STT_SENT )),
- sBoldUnderline (CUI_RES(ST_BOLD_UNDER )),
- sURL (CUI_RES(ST_DETECT_URL )),
- sNoDblSpaces (CUI_RES(STR_NO_DBL_SPACES )),
- sDash (CUI_RES(ST_DASH )),
- sAccidentalCaps (CUI_RES(ST_CORRECT_ACCIDENTAL_CAPS_LOCK))
-{
- FreeResource();
-
- aCheckLB.SetHelpId(HID_OFAPAGE_AUTOCORR_CLB);
-}
-
-OfaAutocorrOptionsPage::~OfaAutocorrOptionsPage()
-{
-}
-
-SfxTabPage* OfaAutocorrOptionsPage::Create( Window* pParent,
- const SfxItemSet& rSet)
-{
- return new OfaAutocorrOptionsPage(pParent, rSet);
-}
-
-sal_Bool OfaAutocorrOptionsPage::FillItemSet( SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- long nFlags = pAutoCorrect->GetFlags();
-
- sal_uInt16 nPos = 0;
- pAutoCorrect->SetAutoCorrFlag(Autocorrect, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(CptlSttWrd, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(CptlSttSntnc, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(ChgWeightUnderl, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(SetINetAttr, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(ChgToEnEmDash, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(IgnoreDoubleSpace, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(CorrectCapsLock, aCheckLB.IsChecked(nPos++));
-
- sal_Bool bReturn = nFlags != pAutoCorrect->GetFlags();
- if(bReturn )
- {
- SvxAutoCorrCfg& rCfg = SvxAutoCorrCfg::Get();
- rCfg.SetModified();
- rCfg.Commit();
- }
- return bReturn;
-}
-
-void OfaAutocorrOptionsPage::ActivatePage( const SfxItemSet& )
-{
- ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_False);
-}
-
-void OfaAutocorrOptionsPage::Reset( const SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- const long nFlags = pAutoCorrect->GetFlags();
-
- aCheckLB.SetUpdateMode(sal_False);
- aCheckLB.Clear();
-
- aCheckLB.InsertEntry(sInput);
- aCheckLB.InsertEntry(sDoubleCaps);
- aCheckLB.InsertEntry(sStartCap);
- aCheckLB.InsertEntry(sBoldUnderline);
- aCheckLB.InsertEntry(sURL);
- aCheckLB.InsertEntry(sDash);
- aCheckLB.InsertEntry(sNoDblSpaces);
- aCheckLB.InsertEntry(sAccidentalCaps);
-
- sal_uInt16 nPos = 0;
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & Autocorrect) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & CptlSttWrd) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & CptlSttSntnc) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgWeightUnderl) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & SetINetAttr) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgToEnEmDash) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & IgnoreDoubleSpace) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & CorrectCapsLock) );
-
- aCheckLB.SetUpdateMode(sal_True);
-}
-
-/*********************************************************************/
-/* */
-/* Hilfs-struct fuer dUserDaten der Checklistbox */
-/* */
-/*********************************************************************/
-
-struct ImpUserData
-{
- String *pString;
- Font* pFont;
-
- ImpUserData(String* pText, Font* pFnt)
- { pString = pText; pFont = pFnt;}
-};
-
-
-/*********************************************************************/
-/* */
-/* Dialog fuer Prozenteinstellung */
-/* */
-/*********************************************************************/
-
-class OfaAutoFmtPrcntSet : public ModalDialog
-{
- OKButton aOKPB;
- CancelButton aCancelPB;
- FixedLine aPrcntFL;
- MetricField aPrcntMF;
-
- public:
- OfaAutoFmtPrcntSet(Window* pParent) :
- ModalDialog(pParent, CUI_RES(RID_OFADLG_PRCNT_SET)),
- aOKPB(this, CUI_RES(BT_OK)),
- aCancelPB(this, CUI_RES(BT_CANCEL)),
- aPrcntFL(this, CUI_RES(FL_PRCNT)),
- aPrcntMF(this, CUI_RES(ED_RIGHT_MARGIN))
- {
- FreeResource();
- }
- MetricField& GetPrcntFld(){return aPrcntMF;}
-};
-
-
-/*********************************************************************/
-/* */
-/* veraenderter LBoxString */
-/* */
-/*********************************************************************/
-
-class OfaImpBrwString : public SvLBoxString
-{
-public:
-
- OfaImpBrwString( SvLBoxEntry* pEntry, sal_uInt16 nFlags,
- const String& rStr ) : SvLBoxString(pEntry,nFlags,rStr){}
-
- virtual void Paint( const Point& rPos, SvLBox& rDev, sal_uInt16 nFlags,
- SvLBoxEntry* pEntry);
-};
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-
-void OfaImpBrwString::Paint( const Point& rPos, SvLBox& rDev, sal_uInt16 /*nFlags*/,
- SvLBoxEntry* pEntry )
-{
- rDev.DrawText( rPos, GetText() );
- if(pEntry->GetUserData())
- {
- ImpUserData* pUserData = (ImpUserData* )pEntry->GetUserData();
- Point aNewPos(rPos);
- aNewPos.X() += rDev.GetTextWidth(GetText());
- Font aOldFont( rDev.GetFont());
- Font aFont( aOldFont );
- if(pUserData->pFont)
- {
- aFont = *pUserData->pFont;
- aFont.SetColor(aOldFont.GetColor());
- aFont.SetSize(aOldFont.GetSize());
- }
- aFont.SetWeight( WEIGHT_BOLD );
-
- sal_Bool bFett = sal_True;
- sal_uInt16 nPos = 0;
- do {
- String sTxt( pUserData->pString->GetToken( 0, 1, nPos ));
-
- if( bFett )
- rDev.SetFont( aFont );
-
- rDev.DrawText( aNewPos, sTxt );
-
- if( STRING_NOTFOUND != nPos )
- aNewPos.X() += rDev.GetTextWidth( sTxt );
-
- if( bFett )
- rDev.SetFont( aOldFont );
-
- bFett = !bFett;
- } while( STRING_NOTFOUND != nPos );
- }
-}
-
-/*********************************************************************/
-/* */
-/* TabPage Autoformat anwenden */
-/* */
-/*********************************************************************/
-
-#define CBCOL_FIRST 0
-#define CBCOL_SECOND 1
-#define CBCOL_BOTH 2
-
-enum OfaAutoFmtOptions
-{
- USE_REPLACE_TABLE,
- CORR_UPPER,
- BEGIN_UPPER,
- BOLD_UNDERLINE,
- DETECT_URL,
- REPLACE_DASHES,
- DEL_SPACES_AT_STT_END,
- DEL_SPACES_BETWEEN_LINES,
- IGNORE_DBLSPACE,
- CORRECT_CAPS_LOCK,
- APPLY_NUMBERING,
- INSERT_BORDER,
- CREATE_TABLE,
- REPLACE_STYLES,
- DEL_EMPTY_NODE,
- REPLACE_USER_COLL,
- REPLACE_BULLETS,
- MERGE_SINGLE_LINE_PARA
-};
-
-OfaSwAutoFmtOptionsPage::OfaSwAutoFmtOptionsPage( Window* pParent,
- const SfxItemSet& rSet ) :
- SfxTabPage(pParent, CUI_RES(RID_OFAPAGE_AUTOFMT_APPLY), rSet),
- m_aCheckLBContainer(this, CUI_RES(CLB_SETTINGS)),
- aCheckLB(m_aCheckLBContainer),
- aEditPB (this, CUI_RES(PB_EDIT)),
- aHeader1Expl (this, CUI_RES(FT_HEADER1_EXPLANATION)),
- aHeader2Expl (this, CUI_RES(FT_HEADER2_EXPLANATION)),
- sHeader1 (CUI_RES( STR_HEADER1 )),
- sHeader2 (CUI_RES( STR_HEADER2 )),
- sDeleteEmptyPara (CUI_RES( ST_DEL_EMPTY_PARA)),
- sUseReplaceTbl (CUI_RES( ST_USE_REPLACE )),
- sCptlSttWord (CUI_RES( ST_CPTL_STT_WORD)),
- sCptlSttSent (CUI_RES( ST_CPTL_STT_SENT)),
- sUserStyle (CUI_RES( ST_USER_STYLE )),
- sBullet (CUI_RES( ST_BULLET )),
- sBoldUnder (CUI_RES( ST_BOLD_UNDER )),
- sNoDblSpaces (CUI_RES( STR_NO_DBL_SPACES)),
- sCorrectCapsLock (CUI_RES( ST_CORRECT_ACCIDENTAL_CAPS_LOCK)),
- sDetectURL (CUI_RES( ST_DETECT_URL )),
- sDash (CUI_RES( ST_DASH )),
- sRightMargin (CUI_RES( ST_RIGHT_MARGIN )),
- sNum (CUI_RES( STR_NUM )),
- sBorder (CUI_RES( STR_BORDER )),
- sTable (CUI_RES( STR_TABLE )),
- sReplaceTemplates (CUI_RES( STR_REPLACE_TEMPLATES)),
- sDelSpaceAtSttEnd (CUI_RES( STR_DEL_SPACES_AT_STT_END)),
- sDelSpaceBetweenLines(CUI_RES(STR_DEL_SPACES_BETWEEN_LINES)),
-
- nPercent ( 50 ),
- pCheckButtonData( NULL )
-
-{
- FreeResource();
-
- //typ. Anfuehrungszeichen einsetzen
- SvtSysLocale aSysLcl;
-
- aCheckLB.SetHelpId(HID_OFAPAGE_AUTOFORMAT_CLB);
- aCheckLB.SetStyle(aCheckLB.GetStyle()|WB_HSCROLL| WB_VSCROLL);
-
- aCheckLB.SetSelectHdl(LINK(this, OfaSwAutoFmtOptionsPage, SelectHdl));
- aCheckLB.SetDoubleClickHdl(LINK(this, OfaSwAutoFmtOptionsPage, EditHdl));
-
- static long aStaticTabs[]=
- {
- 3, 0, 20, 40
- };
-
- aCheckLB.SvxSimpleTable::SetTabs(aStaticTabs);
- String sHeader( sHeader1 );
- sHeader += '\t';
- sHeader += sHeader2;
- sHeader += '\t';
- aCheckLB.InsertHeaderEntry( sHeader, HEADERBAR_APPEND,
- HIB_CENTER | HIB_VCENTER | HIB_FIXEDPOS | HIB_FIXED);
-
- aEditPB.SetClickHdl(LINK(this, OfaSwAutoFmtOptionsPage, EditHdl));
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-SvLBoxEntry* OfaSwAutoFmtOptionsPage::CreateEntry(String& rTxt, sal_uInt16 nCol)
-{
- SvLBoxEntry* pEntry = new SvLBoxEntry;
-
- if ( !pCheckButtonData )
- {
- pCheckButtonData = new SvLBoxButtonData( &aCheckLB );
- aCheckLB.SetCheckButtonData( pCheckButtonData );
- }
-
- pEntry->AddItem( new SvLBoxContextBmp( pEntry, 0, Image(), Image(), 0)); // Sonst Puff!
-
- String sEmpty;
- if (nCol == CBCOL_SECOND)
- pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte
- else
- pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) );
-
- if (nCol == CBCOL_FIRST)
- pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte
- else
- pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) );
- pEntry->AddItem( new OfaImpBrwString( pEntry, 0, rTxt ) );
-
- return pEntry;
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-
-OfaSwAutoFmtOptionsPage::~OfaSwAutoFmtOptionsPage()
-{
- delete (ImpUserData*) aCheckLB.GetUserData( REPLACE_BULLETS );
- delete (ImpUserData*) aCheckLB.GetUserData( APPLY_NUMBERING );
- delete (ImpUserData*) aCheckLB.GetUserData( MERGE_SINGLE_LINE_PARA );
- delete pCheckButtonData;
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-SfxTabPage* OfaSwAutoFmtOptionsPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet)
-{
- return new OfaSwAutoFmtOptionsPage(pParent, rAttrSet);
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-sal_Bool OfaSwAutoFmtOptionsPage::FillItemSet( SfxItemSet& )
-{
- sal_Bool bModified = sal_False;
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
- long nFlags = pAutoCorrect->GetFlags();
-
- sal_Bool bCheck = aCheckLB.IsChecked(USE_REPLACE_TABLE, CBCOL_FIRST);
- bModified |= pOpt->bAutoCorrect != bCheck;
- pOpt->bAutoCorrect = bCheck;
- pAutoCorrect->SetAutoCorrFlag(Autocorrect,
- aCheckLB.IsChecked(USE_REPLACE_TABLE, CBCOL_SECOND));
-
- bCheck = aCheckLB.IsChecked(CORR_UPPER, CBCOL_FIRST);
- bModified |= pOpt->bCptlSttWrd != bCheck;
- pOpt->bCptlSttWrd = bCheck;
- pAutoCorrect->SetAutoCorrFlag(CptlSttWrd,
- aCheckLB.IsChecked(CORR_UPPER, CBCOL_SECOND));
-
- bCheck = aCheckLB.IsChecked(BEGIN_UPPER, CBCOL_FIRST);
- bModified |= pOpt->bCptlSttSntnc != bCheck;
- pOpt->bCptlSttSntnc = bCheck;
- pAutoCorrect->SetAutoCorrFlag(CptlSttSntnc,
- aCheckLB.IsChecked(BEGIN_UPPER, CBCOL_SECOND));
-
- bCheck = aCheckLB.IsChecked(BOLD_UNDERLINE, CBCOL_FIRST);
- bModified |= pOpt->bChgWeightUnderl != bCheck;
- pOpt->bChgWeightUnderl = bCheck;
- pAutoCorrect->SetAutoCorrFlag(ChgWeightUnderl,
- aCheckLB.IsChecked(BOLD_UNDERLINE, CBCOL_SECOND));
-
- pAutoCorrect->SetAutoCorrFlag(IgnoreDoubleSpace,
- aCheckLB.IsChecked(IGNORE_DBLSPACE, CBCOL_SECOND));
-
- pAutoCorrect->SetAutoCorrFlag(CorrectCapsLock,
- aCheckLB.IsChecked(CORRECT_CAPS_LOCK, CBCOL_SECOND));
-
- bCheck = aCheckLB.IsChecked(DETECT_URL, CBCOL_FIRST);
- bModified |= pOpt->bSetINetAttr != bCheck;
- pOpt->bSetINetAttr = bCheck;
- pAutoCorrect->SetAutoCorrFlag(SetINetAttr,
- aCheckLB.IsChecked(DETECT_URL, CBCOL_SECOND));
-
- bCheck = aCheckLB.IsChecked(DEL_EMPTY_NODE, CBCOL_FIRST);
- bModified |= pOpt->bDelEmptyNode != bCheck;
- pOpt->bDelEmptyNode = bCheck;
-
- bCheck = aCheckLB.IsChecked(REPLACE_USER_COLL, CBCOL_FIRST);
- bModified |= pOpt->bChgUserColl != bCheck;
- pOpt->bChgUserColl = bCheck;
-
- bCheck = aCheckLB.IsChecked(REPLACE_BULLETS, CBCOL_FIRST);
- bModified |= pOpt->bChgEnumNum != bCheck;
- pOpt->bChgEnumNum = bCheck;
- bModified |= aBulletFont != pOpt->aBulletFont;
- pOpt->aBulletFont = aBulletFont;
- bModified |= String(pOpt->cBullet) != sBulletChar;
- pOpt->cBullet = sBulletChar.GetChar(0);
-
- bModified |= aByInputBulletFont != pOpt->aByInputBulletFont;
- bModified |= String(pOpt->cByInputBullet) != sByInputBulletChar;
- pOpt->aByInputBulletFont = aByInputBulletFont;
- pOpt->cByInputBullet = sByInputBulletChar.GetChar(0);
-
- bCheck = aCheckLB.IsChecked(MERGE_SINGLE_LINE_PARA, CBCOL_FIRST);
- bModified |= pOpt->bRightMargin != bCheck;
- pOpt->bRightMargin = bCheck;
- bModified |= nPercent != pOpt->nRightMargin;
- pOpt->nRightMargin = (sal_uInt8)nPercent;
-
- bCheck = aCheckLB.IsChecked(APPLY_NUMBERING, CBCOL_SECOND);
- bModified |= pOpt->bSetNumRule != bCheck;
- pOpt->bSetNumRule = bCheck;
-
- bCheck = aCheckLB.IsChecked(INSERT_BORDER, CBCOL_SECOND);
- bModified |= pOpt->bSetBorder != bCheck;
- pOpt->bSetBorder = bCheck;
-
- bCheck = aCheckLB.IsChecked(CREATE_TABLE, CBCOL_SECOND);
- bModified |= pOpt->bCreateTable != bCheck;
- pOpt->bCreateTable = bCheck;
-
- bCheck = aCheckLB.IsChecked(REPLACE_STYLES, CBCOL_SECOND);
- bModified |= pOpt->bReplaceStyles != bCheck;
- pOpt->bReplaceStyles = bCheck;
-
- bCheck = aCheckLB.IsChecked(REPLACE_DASHES, CBCOL_FIRST);
- bModified |= pOpt->bChgToEnEmDash != bCheck;
- pOpt->bChgToEnEmDash = bCheck;
- pAutoCorrect->SetAutoCorrFlag(ChgToEnEmDash,
- aCheckLB.IsChecked(REPLACE_DASHES, CBCOL_SECOND));
-
- bCheck = aCheckLB.IsChecked(DEL_SPACES_AT_STT_END, CBCOL_FIRST);
- bModified |= pOpt->bAFmtDelSpacesAtSttEnd != bCheck;
- pOpt->bAFmtDelSpacesAtSttEnd = bCheck;
- bCheck = aCheckLB.IsChecked(DEL_SPACES_AT_STT_END, CBCOL_SECOND);
- bModified |= pOpt->bAFmtByInpDelSpacesAtSttEnd != bCheck;
- pOpt->bAFmtByInpDelSpacesAtSttEnd = bCheck;
-
- bCheck = aCheckLB.IsChecked(DEL_SPACES_BETWEEN_LINES, CBCOL_FIRST);
- bModified |= pOpt->bAFmtDelSpacesBetweenLines != bCheck;
- pOpt->bAFmtDelSpacesBetweenLines = bCheck;
- bCheck = aCheckLB.IsChecked(DEL_SPACES_BETWEEN_LINES, CBCOL_SECOND);
- bModified |= pOpt->bAFmtByInpDelSpacesBetweenLines != bCheck;
- pOpt->bAFmtByInpDelSpacesBetweenLines = bCheck;
-
- if(bModified || nFlags != pAutoCorrect->GetFlags())
- {
- SvxAutoCorrCfg& rCfg = SvxAutoCorrCfg::Get();
- rCfg.SetModified();
- rCfg.Commit();
- }
-
- return sal_True;
-}
-
-void OfaSwAutoFmtOptionsPage::ActivatePage( const SfxItemSet& )
-{
- ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_False);
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-
-void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
- const long nFlags = pAutoCorrect->GetFlags();
-
- aCheckLB.SetUpdateMode(sal_False);
- aCheckLB.Clear();
-
- // Die folgenden Eintraege muessen in der selben Reihenfolge, wie im
- // OfaAutoFmtOptions-enum eingefuegt werden!
- aCheckLB.GetModel()->Insert(CreateEntry(sUseReplaceTbl, CBCOL_BOTH ));
- aCheckLB.GetModel()->Insert(CreateEntry(sCptlSttWord, CBCOL_BOTH ));
- aCheckLB.GetModel()->Insert(CreateEntry(sCptlSttSent, CBCOL_BOTH ));
- aCheckLB.GetModel()->Insert(CreateEntry(sBoldUnder, CBCOL_BOTH ));
- aCheckLB.GetModel()->Insert(CreateEntry(sDetectURL, CBCOL_BOTH ));
- aCheckLB.GetModel()->Insert(CreateEntry(sDash, CBCOL_BOTH ));
- aCheckLB.GetModel()->Insert(CreateEntry(sDelSpaceAtSttEnd, CBCOL_BOTH ));
- aCheckLB.GetModel()->Insert(CreateEntry(sDelSpaceBetweenLines, CBCOL_BOTH ));
-
- aCheckLB.GetModel()->Insert(CreateEntry(sNoDblSpaces, CBCOL_SECOND));
- aCheckLB.GetModel()->Insert(CreateEntry(sCorrectCapsLock, CBCOL_SECOND));
- aCheckLB.GetModel()->Insert(CreateEntry(sNum, CBCOL_SECOND));
- aCheckLB.GetModel()->Insert(CreateEntry(sBorder, CBCOL_SECOND));
- aCheckLB.GetModel()->Insert(CreateEntry(sTable, CBCOL_SECOND));
- aCheckLB.GetModel()->Insert(CreateEntry(sReplaceTemplates, CBCOL_SECOND));
- aCheckLB.GetModel()->Insert(CreateEntry(sDeleteEmptyPara, CBCOL_FIRST ));
- aCheckLB.GetModel()->Insert(CreateEntry(sUserStyle, CBCOL_FIRST ));
- aCheckLB.GetModel()->Insert(CreateEntry(sBullet, CBCOL_FIRST ));
- aCheckLB.GetModel()->Insert(CreateEntry(sRightMargin, CBCOL_FIRST ));
-
- aCheckLB.CheckEntryPos( USE_REPLACE_TABLE, CBCOL_FIRST, pOpt->bAutoCorrect );
- aCheckLB.CheckEntryPos( USE_REPLACE_TABLE, CBCOL_SECOND, 0 != (nFlags & Autocorrect));
- aCheckLB.CheckEntryPos( CORR_UPPER, CBCOL_FIRST, pOpt->bCptlSttWrd );
- aCheckLB.CheckEntryPos( CORR_UPPER, CBCOL_SECOND, 0 != (nFlags & CptlSttWrd) );
- aCheckLB.CheckEntryPos( BEGIN_UPPER, CBCOL_FIRST, pOpt->bCptlSttSntnc );
- aCheckLB.CheckEntryPos( BEGIN_UPPER, CBCOL_SECOND, 0 != (nFlags & CptlSttSntnc) );
- aCheckLB.CheckEntryPos( BOLD_UNDERLINE, CBCOL_FIRST, pOpt->bChgWeightUnderl );
- aCheckLB.CheckEntryPos( BOLD_UNDERLINE, CBCOL_SECOND, 0 != (nFlags & ChgWeightUnderl) );
- aCheckLB.CheckEntryPos( IGNORE_DBLSPACE, CBCOL_SECOND, 0 != (nFlags & IgnoreDoubleSpace) );
- aCheckLB.CheckEntryPos( CORRECT_CAPS_LOCK, CBCOL_SECOND, 0 != (nFlags & CorrectCapsLock) );
- aCheckLB.CheckEntryPos( DETECT_URL, CBCOL_FIRST, pOpt->bSetINetAttr );
- aCheckLB.CheckEntryPos( DETECT_URL, CBCOL_SECOND, 0 != (nFlags & SetINetAttr) );
- aCheckLB.CheckEntryPos( REPLACE_DASHES, CBCOL_FIRST, pOpt->bChgToEnEmDash );
- aCheckLB.CheckEntryPos( REPLACE_DASHES, CBCOL_SECOND, 0 != (nFlags & ChgToEnEmDash) );
- aCheckLB.CheckEntryPos( DEL_SPACES_AT_STT_END, CBCOL_FIRST, pOpt->bAFmtDelSpacesAtSttEnd );
- aCheckLB.CheckEntryPos( DEL_SPACES_AT_STT_END, CBCOL_SECOND, pOpt->bAFmtByInpDelSpacesAtSttEnd );
- aCheckLB.CheckEntryPos( DEL_SPACES_BETWEEN_LINES, CBCOL_FIRST, pOpt->bAFmtDelSpacesBetweenLines );
- aCheckLB.CheckEntryPos( DEL_SPACES_BETWEEN_LINES, CBCOL_SECOND, pOpt->bAFmtByInpDelSpacesBetweenLines );
- aCheckLB.CheckEntryPos( DEL_EMPTY_NODE, CBCOL_FIRST, pOpt->bDelEmptyNode );
- aCheckLB.CheckEntryPos( REPLACE_USER_COLL, CBCOL_FIRST, pOpt->bChgUserColl );
- aCheckLB.CheckEntryPos( REPLACE_BULLETS, CBCOL_FIRST, pOpt->bChgEnumNum );
-
- aBulletFont = pOpt->aBulletFont;
- sBulletChar = pOpt->cBullet;
- ImpUserData* pUserData = new ImpUserData(&sBulletChar, &aBulletFont);
- aCheckLB.SetUserData( REPLACE_BULLETS, pUserData );
-
- nPercent = pOpt->nRightMargin;
- sMargin = ' ';
- sMargin += String::CreateFromInt32( nPercent );
- sMargin += '%';
- pUserData = new ImpUserData(&sMargin, 0);
- aCheckLB.SetUserData( MERGE_SINGLE_LINE_PARA, pUserData );
-
- aCheckLB.CheckEntryPos( APPLY_NUMBERING, CBCOL_SECOND, pOpt->bSetNumRule );
-
- aByInputBulletFont = pOpt->aByInputBulletFont;
- sByInputBulletChar = pOpt->cByInputBullet;
- ImpUserData* pUserData2 = new ImpUserData(&sByInputBulletChar, &aByInputBulletFont);
- aCheckLB.SetUserData( APPLY_NUMBERING , pUserData2 );
-
- aCheckLB.CheckEntryPos( MERGE_SINGLE_LINE_PARA, CBCOL_FIRST, pOpt->bRightMargin );
- aCheckLB.CheckEntryPos( INSERT_BORDER, CBCOL_SECOND, pOpt->bSetBorder );
- aCheckLB.CheckEntryPos( CREATE_TABLE, CBCOL_SECOND, pOpt->bCreateTable );
- aCheckLB.CheckEntryPos( REPLACE_STYLES, CBCOL_SECOND, pOpt->bReplaceStyles );
-
- aCheckLB.SetUpdateMode(sal_True);
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-IMPL_LINK(OfaSwAutoFmtOptionsPage, SelectHdl, OfaACorrCheckListBox*, pBox)
-{
- aEditPB.Enable(0 != pBox->FirstSelected()->GetUserData());
- return 0;
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-IMPL_LINK(OfaSwAutoFmtOptionsPage, EditHdl, PushButton*, EMPTYARG)
-{
- sal_uLong nSelEntryPos = aCheckLB.GetSelectEntryPos();
- if( nSelEntryPos == REPLACE_BULLETS ||
- nSelEntryPos == APPLY_NUMBERING)
- {
- SvxCharacterMap *pMapDlg = new SvxCharacterMap(this);
- ImpUserData* pUserData = (ImpUserData*)aCheckLB.FirstSelected()->GetUserData();
- pMapDlg->SetCharFont(*pUserData->pFont);
- pMapDlg->SetChar( pUserData->pString->GetChar(0) );
- if(RET_OK == pMapDlg->Execute())
- {
- Font aFont(pMapDlg->GetCharFont());
- *pUserData->pFont = aFont;
- sal_UCS4 aChar = pMapDlg->GetChar();
- // using the UCS4 constructor
- rtl::OUString aOUStr( &aChar, 1 );
- *pUserData->pString = aOUStr;
- }
- delete pMapDlg;
- }
- else if( MERGE_SINGLE_LINE_PARA == nSelEntryPos )
- {
- // Dialog fuer Prozenteinstellung
- OfaAutoFmtPrcntSet aDlg(this);
- aDlg.GetPrcntFld().SetValue(nPercent);
- if(RET_OK == aDlg.Execute())
- {
- nPercent = (sal_uInt16)aDlg.GetPrcntFld().GetValue();
- sMargin = ' ';
- sMargin += String::CreateFromInt32( nPercent );
- sMargin += '%';
- }
- }
- aCheckLB.Invalidate();
- return 0;
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-void OfaACorrCheckListBox::SetTabs()
-{
- SvxSimpleTable::SetTabs();
- sal_uInt16 nAdjust = SV_LBOXTAB_ADJUST_RIGHT|SV_LBOXTAB_ADJUST_LEFT|SV_LBOXTAB_ADJUST_CENTER|SV_LBOXTAB_ADJUST_NUMERIC|SV_LBOXTAB_FORCE;
-
- if( aTabs.Count() > 1 )
- {
- SvLBoxTab* pTab = (SvLBoxTab*)aTabs.GetObject(1);
- pTab->nFlags &= ~nAdjust;
- pTab->nFlags |= SV_LBOXTAB_PUSHABLE|SV_LBOXTAB_ADJUST_CENTER|SV_LBOXTAB_FORCE;
- }
- if( aTabs.Count() > 2 )
- {
- SvLBoxTab* pTab = (SvLBoxTab*)aTabs.GetObject(2);
- pTab->nFlags &= ~nAdjust;
- pTab->nFlags |= SV_LBOXTAB_PUSHABLE|SV_LBOXTAB_ADJUST_CENTER|SV_LBOXTAB_FORCE;
- }
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-void OfaACorrCheckListBox::CheckEntryPos(sal_uLong nPos, sal_uInt16 nCol, sal_Bool bChecked)
-{
- if ( nPos < GetEntryCount() )
- SetCheckButtonState(
- GetEntry(nPos),
- nCol,
- bChecked ? SvButtonState( SV_BUTTON_CHECKED ) :
- SvButtonState( SV_BUTTON_UNCHECKED ) );
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-sal_Bool OfaACorrCheckListBox::IsChecked(sal_uLong nPos, sal_uInt16 nCol)
-{
- return GetCheckButtonState( GetEntry(nPos), nCol ) == SV_BUTTON_CHECKED;
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-void OfaACorrCheckListBox::SetCheckButtonState( SvLBoxEntry* pEntry, sal_uInt16 nCol, SvButtonState eState)
-{
- SvLBoxButton* pItem = (SvLBoxButton*)(pEntry->GetItem(nCol + 1));
-
- DBG_ASSERT(pItem,"SetCheckButton:Item not found");
- if (((SvLBoxItem*)pItem)->IsA() == SV_ITEM_ID_LBOXBUTTON)
- {
- switch( eState )
- {
- case SV_BUTTON_CHECKED:
- pItem->SetStateChecked();
- break;
-
- case SV_BUTTON_UNCHECKED:
- pItem->SetStateUnchecked();
- break;
-
- case SV_BUTTON_TRISTATE:
- pItem->SetStateTristate();
- break;
- }
- InvalidateEntry( pEntry );
- }
-}
-
-/*********************************************************************/
-/* */
-/*********************************************************************/
-
-SvButtonState OfaACorrCheckListBox::GetCheckButtonState( SvLBoxEntry* pEntry, sal_uInt16 nCol ) const
-{
- SvButtonState eState = SV_BUTTON_UNCHECKED;
- SvLBoxButton* pItem = (SvLBoxButton*)(pEntry->GetItem(nCol + 1));
- DBG_ASSERT(pItem,"GetChButnState:Item not found");
-
- if (((SvLBoxItem*)pItem)->IsA() == SV_ITEM_ID_LBOXBUTTON)
- {
- sal_uInt16 nButtonFlags = pItem->GetButtonFlags();
- eState = pCheckButtonData->ConvertToButtonState( nButtonFlags );
- }
-
- return eState;
-}
-
-void OfaACorrCheckListBox::HBarClick()
-{
- // Sortierung durch diese Ueberladung abgeklemmt
-}
-
-void OfaACorrCheckListBox::KeyInput( const KeyEvent& rKEvt )
-{
- if(!rKEvt.GetKeyCode().GetModifier() &&
- KEY_SPACE == rKEvt.GetKeyCode().GetCode())
- {
- sal_uLong nSelPos = GetSelectEntryPos();
- sal_uInt16 nCol = GetCurrentTabPos() - 1;
- if ( nCol < 2 )
- {
- CheckEntryPos( nSelPos, nCol, !IsChecked( nSelPos, nCol ) );
- CallImplEventListeners( VCLEVENT_CHECKBOX_TOGGLE, (void*)GetEntry( nSelPos ) );
- }
- else
- {
- sal_uInt16 nCheck = IsChecked(nSelPos, 1) ? 1 : 0;
- if(IsChecked(nSelPos, 0))
- nCheck += 2;
- nCheck--;
- nCheck &= 3;
- CheckEntryPos(nSelPos, 1, 0 != (nCheck & 1));
- CheckEntryPos(nSelPos, 0, 0 != (nCheck & 2));
- }
- }
- else
- SvxSimpleTable::KeyInput(rKEvt);
-}
-
-struct DoubleString
-{
- String sShort;
- String sLong;
- void* pUserData; // CheckBox -> form. Text Bool -> Selektionstext
-};
-typedef DoubleString* DoubleStringPtr;
-SV_DECL_PTRARR_DEL(DoubleStringArray, DoubleStringPtr, 4, 4)
-SV_IMPL_PTRARR(DoubleStringArray, DoubleStringPtr);
-
-void lcl_ClearTable(DoubleStringTable& rTable)
-{
- DoubleStringArrayPtr pArray = rTable.Last();
- while(pArray)
- {
- pArray->DeleteAndDestroy(0, pArray->Count());
- delete pArray;
- pArray = rTable.Prev();
- }
- rTable.Clear();
-}
-
-OfaAutocorrReplacePage::OfaAutocorrReplacePage( Window* pParent,
- const SfxItemSet& rSet ) :
- SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCORR_REPLACE ), rSet),
- aTextOnlyCB( this, CUI_RES(CB_TEXT_ONLY )),
- aShortFT ( this, CUI_RES(FT_SHORT )),
- aShortED ( this, CUI_RES(ED_SHORT )),
- aReplaceFT( this, CUI_RES(FT_REPLACE )),
- aReplaceED( this, CUI_RES(ED_REPLACE )),
- aReplaceTLB( this, CUI_RES(TLB_REPLACE )),
- aNewReplacePB( this, CUI_RES(PB_NEW_REPLACE )),
- aDeleteReplacePB(this,CUI_RES(PB_DELETE_REPLACE )),
- sModify(CUI_RES(STR_MODIFY)),
- sNew(aNewReplacePB.GetText()),
- pFormatText(0),
- eLang(eLastDialogLanguage),
- bHasSelectionText(sal_False),
- bFirstSelect(sal_True),
- bReplaceEditChanged(sal_False),
- bSWriter(sal_True)
-{
- FreeResource();
- SfxModule *pMod = *(SfxModule**)GetAppData(SHL_WRITER);
- bSWriter = pMod == SfxModule::GetActiveModule();
-
- ::com::sun::star::lang::Locale aLcl( SvxCreateLocale(eLastDialogLanguage ));
- pCompareClass = new CollatorWrapper( GetProcessFact() );
- pCompareClass->loadDefaultCollator( aLcl, 0 );
- pCharClass = new CharClass( aLcl );
-
- static long nTabs[] = { 2 /* Tab-Count */, 1, 61 };
- aReplaceTLB.SetTabs( &nTabs[0], MAP_APPFONT );
-
- aReplaceTLB.SetStyle(aReplaceTLB.GetStyle()|WB_HSCROLL|WB_CLIPCHILDREN);
- aReplaceTLB.SetSelectHdl(LINK(this, OfaAutocorrReplacePage, SelectHdl));
- aNewReplacePB.SetClickHdl( LINK(this, OfaAutocorrReplacePage, NewDelHdl));
- aDeleteReplacePB.SetClickHdl(LINK(this, OfaAutocorrReplacePage, NewDelHdl));
- aShortED.SetModifyHdl(LINK(this, OfaAutocorrReplacePage, ModifyHdl));
- aReplaceED.SetModifyHdl(LINK(this, OfaAutocorrReplacePage, ModifyHdl));
- aShortED.SetActionHdl(LINK(this, OfaAutocorrReplacePage, NewDelHdl));
- aReplaceED.SetActionHdl(LINK(this, OfaAutocorrReplacePage, NewDelHdl));
-
- aReplaceED.SetSpaces(sal_True);
- aShortED.SetSpaces(sal_True);
- aShortED.SetMaxTextLen(30);
-}
-
-OfaAutocorrReplacePage::~OfaAutocorrReplacePage()
-{
- delete pFormatText;
- lcl_ClearTable(aDoubleStringTable);
- delete pCompareClass;
- delete pCharClass;
-}
-
-SfxTabPage* OfaAutocorrReplacePage::Create( Window* pParent,
- const SfxItemSet& rSet)
-{
- return new OfaAutocorrReplacePage(pParent, rSet);
-}
-
-void OfaAutocorrReplacePage::ActivatePage( const SfxItemSet& )
-{
- if(eLang != eLastDialogLanguage)
- SetLanguage(eLastDialogLanguage);
- ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_True);
-}
-
-int OfaAutocorrReplacePage::DeactivatePage( SfxItemSet* )
-{
- return LEAVE_PAGE;
-}
-
-sal_Bool OfaAutocorrReplacePage::FillItemSet( SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- DoubleStringArrayPtr pDoubleStringArray = aDoubleStringTable.Last();
- while(pDoubleStringArray)
- {
- LanguageType eCurLang = (LanguageType)aDoubleStringTable.GetCurKey();
- if(eCurLang != eLang) // die aktuelle Sprache wird weiter hinten behandelt
- {
- SvxAutocorrWordList* pWordList = pAutoCorrect->LoadAutocorrWordList(eCurLang);
- sal_uInt16 nWordListCount = pWordList->Count();
- sal_uInt16 nDoubleStringArrayCount = pDoubleStringArray->Count();
- sal_uInt16 nPos = nDoubleStringArrayCount;
- sal_uInt16 nLastPos = nPos;
- // 1. Durchlauf: Eintraege loeschen oder veraendern:
-
-
- for( sal_uInt16 nWordListPos = nWordListCount; nWordListPos; nWordListPos-- )
- {
- SvxAutocorrWordPtr pWordPtr = pWordList->GetObject(nWordListPos - 1);
- String sEntry(pWordPtr->GetShort());
- // formatierter Text steht nur im Writer
- sal_Bool bFound = !bSWriter && !pWordPtr->IsTextOnly();
- while(!bFound && nPos)
- {
- DoubleString* pDouble = pDoubleStringArray->GetObject( nPos - 1);
-
- if( 0 == pCompareClass->compareString(
- sEntry, pDouble->sShort ))
- {
- nLastPos = nPos - 1;
- bFound = sal_True;
- if( !(pWordPtr->IsTextOnly() == (0 == pDouble->pUserData)
- && 0 == pCompareClass->compareString(
- pWordPtr->GetLong(), pDouble->sLong ) ) )
- {
- pAutoCorrect->PutText(sEntry, pDouble->sLong, eCurLang);
- }
- pDoubleStringArray->DeleteAndDestroy(nPos - 1, 1);
- break;
- }
- nPos--;
- }
- nPos = nLastPos;
- if(!bFound)
- {
- pAutoCorrect->DeleteText(sEntry, eCurLang);
- }
- }
- nDoubleStringArrayCount = pDoubleStringArray->Count();
- for(sal_uInt16 nDoubleStringArrayPos = 0; nDoubleStringArrayPos < nDoubleStringArrayCount; nDoubleStringArrayPos++ )
- {
- //jetzt sollte es nur noch neue Eintraege geben
- DoubleString* pDouble = pDoubleStringArray->GetObject( nDoubleStringArrayPos );
- if(pDouble->pUserData == &bHasSelectionText)
- pAutoCorrect->PutText( pDouble->sShort,
- *SfxObjectShell::Current(), eCurLang );
- else
- {
- pAutoCorrect->PutText( pDouble->sShort, pDouble->sLong,
- eCurLang);
- }
- }
- }
- pDoubleStringArray->DeleteAndDestroy(0, pDoubleStringArray->Count());
- delete pDoubleStringArray;
- pDoubleStringArray = aDoubleStringTable.Prev();
- }
- aDoubleStringTable.Clear();
- // jetzt noch die aktuelle Selektion
- SvxAutocorrWordList* pWordList = pAutoCorrect->LoadAutocorrWordList(eLang);
- sal_uInt16 nWordListCount = pWordList->Count();
- sal_uInt16 nListBoxCount = (sal_uInt16)aReplaceTLB.GetEntryCount();
-
- aReplaceTLB.SetUpdateMode(sal_False);
- sal_uInt16 nListBoxPos = nListBoxCount;
- sal_uInt16 nLastListBoxPos = nListBoxPos;
- // 1. Durchlauf: Eintraege loeschen oder veraendern:
-
- sal_uInt16 i;
- for( i = nWordListCount; i; i-- )
- {
- SvxAutocorrWordPtr pWordPtr = pWordList->GetObject(i- 1);
- String sEntry(pWordPtr->GetShort());
- // formatierter Text steht nur im Writer
- sal_Bool bFound = !bSWriter && !pWordPtr->IsTextOnly();
- while(!bFound && nListBoxPos)
- {
- SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( nListBoxPos - 1);
- if( 0 == pCompareClass->compareString( sEntry,
- aReplaceTLB.GetEntryText(pEntry, 0)))
- {
- nLastListBoxPos = nListBoxPos - 1;
- bFound = sal_True;
- String sLong = aReplaceTLB.GetEntryText(pEntry, 1);
- if( !(pWordPtr->IsTextOnly() == (0 == pEntry->GetUserData())
- && 0 == pCompareClass->compareString(
- pWordPtr->GetLong(), sLong )))
- {
- pAutoCorrect->PutText(sEntry, sLong, eLang);
- }
- aReplaceTLB.GetModel()->Remove(pEntry);
- break;
-
- }
- nListBoxPos --;
- }
- nListBoxPos = nLastListBoxPos;
- if(!bFound)
- {
- pAutoCorrect->DeleteText(sEntry, eLang);
- }
-
- }
- nListBoxCount = (sal_uInt16)aReplaceTLB.GetEntryCount();
- for(i = 0; i < nListBoxCount; i++ )
- {
- //jetzt sollte es nur noch neue Eintraege geben
- SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( i );
- String sShort = aReplaceTLB.GetEntryText(pEntry, 0);
- if(pEntry->GetUserData() == &bHasSelectionText)
- pAutoCorrect->PutText(sShort, *SfxObjectShell::Current(), eLang);
- else
- {
- String sLong = aReplaceTLB.GetEntryText(pEntry, 1);
- pAutoCorrect->PutText(sShort, sLong, eLang);
- }
- }
-
- return sal_False;
-}
-
-void OfaAutocorrReplacePage::RefillReplaceBox(sal_Bool bFromReset,
- LanguageType eOldLanguage,
- LanguageType eNewLanguage)
-{
- eLang = eNewLanguage;
- if(bFromReset)
- lcl_ClearTable(aDoubleStringTable);
- else
- {
- DoubleStringArray* pArray = 0;
- if(aDoubleStringTable.IsKeyValid(eOldLanguage))
- {
- pArray = aDoubleStringTable.Seek(sal_uLong(eOldLanguage));
- pArray->DeleteAndDestroy(0, pArray->Count());
- }
- else
- {
- pArray = new DoubleStringArray;
- aDoubleStringTable.Insert(sal_uLong(eOldLanguage), pArray);
- }
-
- sal_uInt16 nListBoxCount = (sal_uInt16)aReplaceTLB.GetEntryCount();
- sal_uInt16 i;
- for(i = 0; i < nListBoxCount; i++)
- {
- DoubleString* pDouble = new DoubleString();
- SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( i );
- pDouble->sShort = aReplaceTLB.GetEntryText(pEntry, 0);
- pDouble->sLong = aReplaceTLB.GetEntryText(pEntry, 1);
- pDouble->pUserData = pEntry->GetUserData();
- pArray->Insert(pDouble, i);
- }
- }
-
- aReplaceTLB.Clear();
- if(!bSWriter)
- {
- if(pFormatText)
- pFormatText->DeleteAndDestroy(0, pFormatText->Count());
- else
- pFormatText = new SvStringsISortDtor();
- }
-
- if(aDoubleStringTable.IsKeyValid(eLang))
- {
- DoubleStringArray* pArray = aDoubleStringTable.Seek(sal_uLong(eNewLanguage));
- for(sal_uInt16 i = 0; i < pArray->Count(); i++)
- {
- DoubleString* pDouble = pArray->GetObject(i);
- sal_Bool bTextOnly = 0 == pDouble->pUserData;
- // formatierter Text wird nur im Writer angeboten
- if(bSWriter || bTextOnly)
- {
- String sEntry(pDouble->sShort);
- sEntry += '\t';
- sEntry += pDouble->sLong;
- SvLBoxEntry* pEntry = aReplaceTLB.InsertEntry(sEntry);
- aTextOnlyCB.Check(bTextOnly);
- if(!bTextOnly)
- pEntry->SetUserData(pDouble->pUserData); // Das heisst: mit Formatinfo oder sogar mit Selektionstext
- }
- else
- {
- pFormatText->Insert(new String(pDouble->sShort));
- }
- }
- }
- else
- {
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- SvxAutocorrWordList* pWordList = pAutoCorrect->LoadAutocorrWordList(eLang);
-
- for(sal_uInt16 i = 0; i < pWordList->Count(); i++)
- {
- SvxAutocorrWordPtr pWordPtr = pWordList->GetObject(i);
- sal_Bool bTextOnly = pWordPtr->IsTextOnly();
- // formatierter Text wird nur im Writer angeboten
- if(bSWriter || bTextOnly)
- {
- String sEntry(pWordPtr->GetShort());
- sEntry += '\t';
- sEntry += pWordPtr->GetLong();
- SvLBoxEntry* pEntry = aReplaceTLB.InsertEntry(sEntry);
- aTextOnlyCB.Check(pWordPtr->IsTextOnly());
- if(!bTextOnly)
- pEntry->SetUserData(&aTextOnlyCB); // Das heisst: mit Formatinfo
- }
- else
- {
- pFormatText->Insert(new String(pWordPtr->GetShort()));
- }
- }
- aNewReplacePB.Enable(sal_False);
- aDeleteReplacePB.Enable(sal_False);
-
- }
-
- SfxViewShell* pViewShell = SfxViewShell::Current();
- if( pViewShell && pViewShell->HasSelection( sal_True ) )
- {
- bHasSelectionText = sal_True;
- const String sSelection( pViewShell->GetSelectionText() );
- aReplaceED.SetText( sSelection );
- aTextOnlyCB.Check( !bSWriter );
- aTextOnlyCB.Enable( bSWriter && sSelection.Len() );
- }
- else
- aTextOnlyCB.Enable( sal_False );
-}
-
-void OfaAutocorrReplacePage::Reset( const SfxItemSet& )
-{
- RefillReplaceBox(sal_True, eLang, eLang);
- aShortED.GrabFocus();
-}
-
-void OfaAutocorrReplacePage::SetLanguage(LanguageType eSet)
-{
- //save old settings an refill
- if(eSet != eLang)
- {
- RefillReplaceBox(sal_False, eLang, eSet);
- eLastDialogLanguage = eSet;
- delete pCompareClass;
- delete pCharClass;
-
- ::com::sun::star::lang::Locale aLcl( SvxCreateLocale(eLastDialogLanguage ));
- pCompareClass = new CollatorWrapper( GetProcessFact() );
- pCompareClass->loadDefaultCollator( aLcl, 0 );
- pCharClass = new CharClass( aLcl );
- ModifyHdl(&aShortED);
- }
-}
-
-IMPL_LINK(OfaAutocorrReplacePage, SelectHdl, SvTabListBox*, pBox)
-{
- if(!bFirstSelect || !bHasSelectionText)
- {
- SvLBoxEntry* pEntry = pBox->FirstSelected();
- String sTmpShort(pBox->GetEntryText(pEntry, 0));
- // wird der Text ueber den ModifyHdl gesetzt, dann steht der Cursor sonst immer am Wortanfang,
- // obwohl man gerade hier editiert
- sal_Bool bSameContent = 0 == pCompareClass->compareString(
- sTmpShort, aShortED.GetText() );
- Selection aSel = aShortED.GetSelection();
- if(aShortED.GetText() != sTmpShort)
- {
- aShortED.SetText(sTmpShort);
- //war es nur eine andere Schreibweise, dann muss die Selektion auch wieder gesetzt werden
- if(bSameContent)
- aShortED.SetSelection(aSel);
- }
- aReplaceED.SetText(pBox->GetEntryText(pEntry, 1));
- // mit UserData gibt es eine Formatinfo
- aTextOnlyCB.Check(0 == pEntry->GetUserData());
- }
- else
- bFirstSelect = sal_False;
-
- aNewReplacePB.Enable(sal_False);
- aDeleteReplacePB.Enable();
- return 0;
-};
-
-IMPL_LINK(OfaAutocorrReplacePage, NewDelHdl, PushButton*, pBtn)
-{
- SvLBoxEntry* _pEntry = aReplaceTLB.FirstSelected();
- if(pBtn == &aDeleteReplacePB)
- {
- DBG_ASSERT(_pEntry, "keine Eintrag selektiert");
- if(_pEntry)
- {
- aReplaceTLB.GetModel()->Remove(_pEntry);
- ModifyHdl(&aShortED);
- return 0;
- }
- }
- if(pBtn == &aNewReplacePB || aNewReplacePB.IsEnabled())
- {
- SvLBoxEntry* _pNewEntry = aReplaceTLB.FirstSelected();
- String sEntry(aShortED.GetText());
- if(sEntry.Len() && ( aReplaceED.GetText().Len() ||
- ( bHasSelectionText && bSWriter ) ))
- {
- aReplaceTLB.SetUpdateMode(sal_False);
- sal_uInt16 nPos = USHRT_MAX;
- sEntry += '\t';
- sEntry += aReplaceED.GetText();
- if(_pNewEntry)
- {
- nPos = (sal_uInt16)aReplaceTLB.GetModel()->GetAbsPos(_pNewEntry);
- aReplaceTLB.GetModel()->Remove(_pNewEntry);
- }
- else
- {
- sal_uInt16 j;
- for( j = 0; j < aReplaceTLB.GetEntryCount(); j++ )
- {
- SvLBoxEntry* pReplaceEntry = aReplaceTLB.GetEntry(j);
- if( 0 >= pCompareClass->compareString(sEntry,
- aReplaceTLB.GetEntryText(pReplaceEntry, 0) ) )
- break;
- }
- nPos = j;
- }
- SvLBoxEntry* pInsEntry =
- aReplaceTLB.InsertEntry(
- sEntry, static_cast< SvLBoxEntry * >(NULL), false,
- nPos == USHRT_MAX ? LIST_APPEND : nPos);
- if( !bReplaceEditChanged && !aTextOnlyCB.IsChecked())
- pInsEntry->SetUserData(&bHasSelectionText); // neuer formatierter Text
-
- aReplaceTLB.MakeVisible( pInsEntry );
- aReplaceTLB.SetUpdateMode(sal_True);
- // falls der Request aus dem ReplaceEdit kam, dann Focus in das ShortEdit setzen
- if(aReplaceED.HasFocus())
- aShortED.GrabFocus();
-
- }
- }
- else
- {
- // das kann nur ein Enter in einem der beiden Edit-Felder sein und das
- // bedeutet EndDialog() - muss im KeyInput ausgewertet werden
- return 0;
- }
- ModifyHdl(&aShortED);
- return 1;
-}
-
-IMPL_LINK(OfaAutocorrReplacePage, ModifyHdl, Edit*, pEdt)
-{
- SvLBoxEntry* pFirstSel = aReplaceTLB.FirstSelected();
- sal_Bool bShort = pEdt == &aShortED;
- const String rEntry = pEdt->GetText();
- const String rRepString = aReplaceED.GetText();
- String aWordStr( pCharClass->lower( rEntry ));
-
- if(bShort)
- {
- if(rEntry.Len())
- {
- sal_Bool bFound = sal_False;
- sal_Bool bTmpSelEntry=sal_False;
-
- for(sal_uInt16 i = 0; i < aReplaceTLB.GetEntryCount(); i++)
- {
- SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( i );
- String aTestStr=aReplaceTLB.GetEntryText(pEntry, 0);
- if( 0 == pCompareClass->compareString(rEntry, aTestStr ))
- {
- if(rRepString.Len())
- bFirstSelect = sal_True;
- aReplaceTLB.SetCurEntry(pEntry);
- pFirstSel = pEntry;
- aNewReplacePB.SetText(sModify);
- bFound= sal_True;
- break;
- }
- else
- {
- pCharClass->toLower( aTestStr );
- if(aTestStr.Search(aWordStr)==0 && !bTmpSelEntry)
- {
- aReplaceTLB.MakeVisible(pEntry);
- bTmpSelEntry=sal_True;
- }
- }
- }
- if(!bFound)
- {
- aReplaceTLB.SelectAll(sal_False);
- pFirstSel = 0;
- aNewReplacePB.SetText(sNew);
- if(bReplaceEditChanged)
- aTextOnlyCB.Enable(sal_False);
- }
- aDeleteReplacePB.Enable(bFound);
- }
- else if(aReplaceTLB.GetEntryCount()>0)
- {
- SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( 0 );
- aReplaceTLB.MakeVisible(pEntry);
- }
-
- }
- else if(!bShort)
- {
- bReplaceEditChanged = sal_True;
- if(pFirstSel)
- {
- aNewReplacePB.SetText(sModify);
- }
- }
-
- const String& rShortTxt = aShortED.GetText();
- sal_Bool bEnableNew = rShortTxt.Len() &&
- ( rRepString.Len() ||
- ( bHasSelectionText && bSWriter )) &&
- ( !pFirstSel || rRepString !=
- aReplaceTLB.GetEntryText( pFirstSel, 1 ) );
- if(bEnableNew && pFormatText)
- {
- for(sal_uInt16 i = 0; i < pFormatText->Count(); i++)
- if(*pFormatText->GetObject(i) == rShortTxt)
- {
- bEnableNew = sal_False;
- break;
- }
- }
- aNewReplacePB.Enable(bEnableNew);
-
- return 0;
-}
-
-struct StringsArrays
-{
-
- SvStringsDtor aAbbrevStrings;
- SvStringsDtor aDoubleCapsStrings;
-
- StringsArrays() :
- aAbbrevStrings(5,5), aDoubleCapsStrings(5,5) {}
-};
-typedef StringsArrays* StringsArraysPtr;
-
-sal_Bool lcl_FindInArray(SvStringsDtor& rStrings, const String& rString)
-{
- for(sal_uInt16 i = 0; i < rStrings.Count(); i++)
- if(rString == *rStrings.GetObject(i))
- return sal_True;
- return sal_False;
-}
-
-void lcl_ClearTable(StringsTable& rTable)
-{
- StringsArraysPtr pArrays = rTable.Last();
- while(pArrays)
- {
- delete pArrays;
- pArrays = rTable.Prev();
- }
- rTable.Clear();
-}
-
-OfaAutocorrExceptPage::OfaAutocorrExceptPage( Window* pParent,
- const SfxItemSet& rSet ) :
- SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCORR_EXCEPT ), rSet),
- aAbbrevFL (this, CUI_RES(FL_ABBREV )),
- aAbbrevED (this, CUI_RES(ED_ABBREV )),
- aAbbrevLB (this, CUI_RES(LB_ABBREV )),
- aNewAbbrevPB (this, CUI_RES(PB_NEWABBREV )),
- aDelAbbrevPB (this, CUI_RES(PB_DELABBREV )),
- aAutoAbbrevCB (this, CUI_RES(CB_AUTOABBREV )),
- aDoubleCapsFL (this, CUI_RES(FL_DOUBLECAPS )),
- aDoubleCapsED (this, CUI_RES(ED_DOUBLE_CAPS )),
- aDoubleCapsLB (this, CUI_RES(LB_DOUBLE_CAPS )),
- aNewDoublePB (this, CUI_RES(PB_NEWDOUBLECAPS)),
- aDelDoublePB (this, CUI_RES(PB_DELDOUBLECAPS)),
- aAutoCapsCB (this, CUI_RES(CB_AUTOCAPS )),
- eLang(eLastDialogLanguage)
-{
- aNewAbbrevPB.SetAccessibleName(String(CUI_RES(STR_PB_NEWABBREV) ) );
- aDelAbbrevPB.SetAccessibleName(String(CUI_RES(STR_PB_DELABBREV) ) );
- aNewDoublePB.SetAccessibleName(String(CUI_RES(STR_PB_NEWDOUBLECAPS) ) );
- aDelDoublePB.SetAccessibleName(String(CUI_RES(STR_PB_DELDOUBLECAPS) ) );
-
- FreeResource();
-
- ::com::sun::star::lang::Locale aLcl( SvxCreateLocale(eLastDialogLanguage ));
- pCompareClass = new CollatorWrapper( GetProcessFact() );
- pCompareClass->loadDefaultCollator( aLcl, ::com::sun::star::i18n::
- CollatorOptions::CollatorOptions_IGNORE_CASE );
-
- aNewAbbrevPB.SetClickHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl));
- aDelAbbrevPB.SetClickHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl));
- aNewDoublePB.SetClickHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl));
- aDelDoublePB.SetClickHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl));
-
- aAbbrevLB.SetSelectHdl(LINK(this, OfaAutocorrExceptPage, SelectHdl));
- aDoubleCapsLB.SetSelectHdl(LINK(this, OfaAutocorrExceptPage, SelectHdl));
- aAbbrevED.SetModifyHdl(LINK(this, OfaAutocorrExceptPage, ModifyHdl));
- aDoubleCapsED.SetModifyHdl(LINK(this, OfaAutocorrExceptPage, ModifyHdl));
-
- aAbbrevED.SetActionHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl));
- aDoubleCapsED.SetActionHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl));
-
- aNewAbbrevPB.SetAccessibleRelationMemberOf(&aAbbrevFL);
- aDelAbbrevPB.SetAccessibleRelationMemberOf(&aAbbrevFL);
- aNewDoublePB.SetAccessibleRelationMemberOf(&aDoubleCapsFL);
- aDelDoublePB.SetAccessibleRelationMemberOf(&aDoubleCapsFL);
-}
-
-OfaAutocorrExceptPage::~OfaAutocorrExceptPage()
-{
- lcl_ClearTable(aStringsTable);
- delete pCompareClass;
-}
-
-SfxTabPage* OfaAutocorrExceptPage::Create( Window* pParent,
- const SfxItemSet& rSet)
-{
- return new OfaAutocorrExceptPage(pParent, rSet);
-}
-
-void OfaAutocorrExceptPage::ActivatePage( const SfxItemSet& )
-{
- if(eLang != eLastDialogLanguage)
- SetLanguage(eLastDialogLanguage);
- ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_True);
-}
-
-int OfaAutocorrExceptPage::DeactivatePage( SfxItemSet* )
-{
- return LEAVE_PAGE;
-}
-
-sal_Bool OfaAutocorrExceptPage::FillItemSet( SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- StringsArraysPtr pArrays = aStringsTable.Last();
- while(pArrays)
- {
- LanguageType eCurLang = (LanguageType)aStringsTable.GetCurKey();
- if(eCurLang != eLang) // die aktuelle Sprache wird weiter hinten behandelt
- {
- SvStringsISortDtor* pWrdList = pAutoCorrect->LoadWrdSttExceptList(eCurLang);
-
- if(pWrdList)
- {
- sal_uInt16 nCount = pWrdList->Count();
- sal_uInt16 i;
- for( i = nCount; i; )
- {
- String* pString = pWrdList->GetObject( --i );
- //Eintrag finden u. gfs entfernen
- if( !lcl_FindInArray(pArrays->aDoubleCapsStrings, *pString))
- pWrdList->DeleteAndDestroy( i );
- }
- nCount = pArrays->aDoubleCapsStrings.Count();
- for( i = 0; i < nCount; ++i )
- {
- String* pEntry = new String( *pArrays->aDoubleCapsStrings.GetObject( i ) );
- if( !pWrdList->Insert( pEntry ))
- delete pEntry;
- }
- pAutoCorrect->SaveWrdSttExceptList(eCurLang);
- }
-
- SvStringsISortDtor* pCplList = pAutoCorrect->LoadCplSttExceptList(eCurLang);
-
- if(pCplList)
- {
- sal_uInt16 nCount = pCplList->Count();
- sal_uInt16 i;
- for( i = nCount; i; )
- {
- String* pString = pCplList->GetObject( --i );
- if( !lcl_FindInArray(pArrays->aAbbrevStrings, *pString))
- pCplList->DeleteAndDestroy( i );
- }
- nCount = pArrays->aAbbrevStrings.Count();
- for( i = 0; i < nCount; ++i )
- {
- String* pEntry = new String( *pArrays->aAbbrevStrings.GetObject(i) );
- if( !pCplList->Insert( pEntry ))
- delete pEntry;
- }
- pAutoCorrect->SaveCplSttExceptList(eCurLang);
- }
- }
- pArrays = aStringsTable.Prev();
- }
- aStringsTable.Clear();
-
- SvStringsISortDtor* pWrdList = pAutoCorrect->LoadWrdSttExceptList(eLang);
-
- if(pWrdList)
- {
- sal_uInt16 nCount = pWrdList->Count();
- sal_uInt16 i;
- for( i = nCount; i; )
- {
- String* pString = pWrdList->GetObject( --i );
- if( USHRT_MAX == aDoubleCapsLB.GetEntryPos(*pString) )
- pWrdList->DeleteAndDestroy( i );
- }
- nCount = aDoubleCapsLB.GetEntryCount();
- for( i = 0; i < nCount; ++i )
- {
- String* pEntry = new String( aDoubleCapsLB.GetEntry( i ) );
- if( !pWrdList->Insert( pEntry ))
- delete pEntry;
- }
- pAutoCorrect->SaveWrdSttExceptList(eLang);
- }
-
- SvStringsISortDtor* pCplList = pAutoCorrect->LoadCplSttExceptList(eLang);
-
- if(pCplList)
- {
- sal_uInt16 nCount = pCplList->Count();
- sal_uInt16 i;
- for( i = nCount; i; )
- {
- String* pString = pCplList->GetObject( --i );
- if( USHRT_MAX == aAbbrevLB.GetEntryPos(*pString) )
- pCplList->DeleteAndDestroy( i );
- }
- nCount = aAbbrevLB.GetEntryCount();
- for( i = 0; i < nCount; ++i )
- {
- String* pEntry = new String( aAbbrevLB.GetEntry( i ) );
- if( !pCplList->Insert( pEntry ))
- delete pEntry;
- }
- pAutoCorrect->SaveCplSttExceptList(eLang);
- }
- if(aAutoAbbrevCB.IsChecked() != aAutoAbbrevCB.GetSavedValue())
- pAutoCorrect->SetAutoCorrFlag( SaveWordCplSttLst, aAutoAbbrevCB.IsChecked());
- if(aAutoCapsCB.IsChecked() != aAutoCapsCB.GetSavedValue())
- pAutoCorrect->SetAutoCorrFlag( SaveWordWrdSttLst, aAutoCapsCB.IsChecked());
- return sal_False;
-}
-
-void OfaAutocorrExceptPage::SetLanguage(LanguageType eSet)
-{
- if(eLang != eSet)
- {
- //alte Einstellungen speichern und neu fuellen
- RefillReplaceBoxes(sal_False, eLang, eSet);
- eLastDialogLanguage = eSet;
- delete pCompareClass;
- pCompareClass = new CollatorWrapper( GetProcessFact() );
- pCompareClass->loadDefaultCollator( SvxCreateLocale( eLastDialogLanguage ),
- ::com::sun::star::i18n::
- CollatorOptions::CollatorOptions_IGNORE_CASE );
- ModifyHdl(&aAbbrevED);
- ModifyHdl(&aDoubleCapsED);
- }
-}
-
-void OfaAutocorrExceptPage::RefillReplaceBoxes(sal_Bool bFromReset,
- LanguageType eOldLanguage,
- LanguageType eNewLanguage)
-{
- eLang = eNewLanguage;
- if(bFromReset)
- lcl_ClearTable(aStringsTable);
- else
- {
- StringsArraysPtr pArrays = 0;
- if(aStringsTable.IsKeyValid(eOldLanguage))
- {
- pArrays = aStringsTable.Seek(sal_uLong(eOldLanguage));
- pArrays->aAbbrevStrings.DeleteAndDestroy(
- 0, pArrays->aAbbrevStrings.Count());
- pArrays->aDoubleCapsStrings.DeleteAndDestroy(
- 0, pArrays->aDoubleCapsStrings.Count());
- }
- else
- {
- pArrays = new StringsArrays;
- aStringsTable.Insert(sal_uLong(eOldLanguage), pArrays);
- }
-
- sal_uInt16 i;
- for(i = 0; i < aAbbrevLB.GetEntryCount(); i++)
- {
- pArrays->aAbbrevStrings.Insert(
- new String(aAbbrevLB.GetEntry(i)), i);
-
- }
- for(i = 0; i < aDoubleCapsLB.GetEntryCount(); i++)
- {
- pArrays->aDoubleCapsStrings.Insert(
- new String(aDoubleCapsLB.GetEntry(i)), i);
- }
- }
- aDoubleCapsLB.Clear();
- aAbbrevLB.Clear();
- String sTemp;
- aAbbrevED.SetText(sTemp);
- aDoubleCapsED.SetText(sTemp);
-
- if(aStringsTable.IsKeyValid(eLang))
- {
- StringsArraysPtr pArrays = aStringsTable.Seek(sal_uLong(eLang));
- sal_uInt16 i;
- for(i = 0; i < pArrays->aAbbrevStrings.Count(); i++ )
- {
- aAbbrevLB.InsertEntry(*pArrays->aAbbrevStrings.GetObject(i));
- }
- for( i = 0; i < pArrays->aDoubleCapsStrings.Count(); i++ )
- {
- aDoubleCapsLB.InsertEntry(*pArrays->aDoubleCapsStrings.GetObject(i));
- }
- }
- else
- {
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- const SvStringsISortDtor* pCplList = pAutoCorrect->GetCplSttExceptList(eLang);
- const SvStringsISortDtor* pWrdList = pAutoCorrect->GetWrdSttExceptList(eLang);
- sal_uInt16 i;
- for( i = 0; i < pCplList->Count(); i++ )
- {
- aAbbrevLB.InsertEntry(*pCplList->GetObject(i));
- }
- for( i = 0; i < pWrdList->Count(); i++ )
- {
- aDoubleCapsLB.InsertEntry(*pWrdList->GetObject(i));
- }
- }
-}
-
-void OfaAutocorrExceptPage::Reset( const SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- RefillReplaceBoxes(sal_True, eLang, eLang);
- aAutoAbbrevCB. Check( pAutoCorrect->IsAutoCorrFlag( SaveWordCplSttLst ));
- aAutoCapsCB. Check( pAutoCorrect->IsAutoCorrFlag( SaveWordWrdSttLst ));
- aAutoAbbrevCB.SaveValue();
- aAutoCapsCB.SaveValue();
-}
-
-IMPL_LINK(OfaAutocorrExceptPage, NewDelHdl, PushButton*, pBtn)
-{
- if((pBtn == &aNewAbbrevPB || pBtn == (PushButton*)&aAbbrevED )
- && aAbbrevED.GetText().Len())
- {
- aAbbrevLB.InsertEntry(aAbbrevED.GetText());
- ModifyHdl(&aAbbrevED);
- }
- else if(pBtn == &aDelAbbrevPB)
- {
- aAbbrevLB.RemoveEntry(aAbbrevED.GetText());
- ModifyHdl(&aAbbrevED);
- }
- else if((pBtn == &aNewDoublePB || pBtn == (PushButton*)&aDoubleCapsED )
- && aDoubleCapsED.GetText().Len())
- {
- aDoubleCapsLB.InsertEntry(aDoubleCapsED.GetText());
- ModifyHdl(&aDoubleCapsED);
- }
- else if(pBtn == &aDelDoublePB)
- {
- aDoubleCapsLB.RemoveEntry(aDoubleCapsED.GetText());
- ModifyHdl(&aDoubleCapsED);
- }
- return 0;
-}
-
-IMPL_LINK(OfaAutocorrExceptPage, SelectHdl, ListBox*, pBox)
-{
- if(pBox == &aAbbrevLB)
- {
- aAbbrevED.SetText(pBox->GetSelectEntry());
- aNewAbbrevPB.Enable(sal_False);
- aDelAbbrevPB.Enable();
- }
- else
- {
- aDoubleCapsED.SetText(pBox->GetSelectEntry());
- aNewDoublePB.Enable(sal_False);
- aDelDoublePB.Enable();
- }
- return 0;
-}
-
-IMPL_LINK(OfaAutocorrExceptPage, ModifyHdl, Edit*, pEdt)
-{
-// sal_Bool bSame = pEdt->GetText() == ->GetSelectEntry();
- const String& sEntry = pEdt->GetText();
- sal_Bool bEntryLen = 0!= sEntry.Len();
- if(pEdt == &aAbbrevED)
- {
- sal_Bool bSame = lcl_FindEntry(aAbbrevLB, sEntry, *pCompareClass);
- if(bSame && sEntry != aAbbrevLB.GetSelectEntry())
- pEdt->SetText(aAbbrevLB.GetSelectEntry());
- aNewAbbrevPB.Enable(!bSame && bEntryLen);
- aDelAbbrevPB.Enable(bSame && bEntryLen);
- }
- else
- {
- sal_Bool bSame = lcl_FindEntry(aDoubleCapsLB, sEntry, *pCompareClass);
- if(bSame && sEntry != aDoubleCapsLB.GetSelectEntry())
- pEdt->SetText(aDoubleCapsLB.GetSelectEntry());
- aNewDoublePB.Enable(!bSame && bEntryLen);
- aDelDoublePB.Enable(bSame && bEntryLen);
- }
- return 0;
-}
-
-void AutoCorrEdit::KeyInput( const KeyEvent& rKEvt )
-{
- const KeyCode aKeyCode = rKEvt.GetKeyCode();
- const sal_uInt16 nModifier = aKeyCode.GetModifier();
- if( aKeyCode.GetCode() == KEY_RETURN )
- {
- //wird bei Enter nichts getan, dann doch die Basisklasse rufen
- // um den Dialog zu schliessen
- if(!nModifier && !aActionLink.Call(this))
- Edit::KeyInput(rKEvt);
- }
- else if(bSpaces || aKeyCode.GetCode() != KEY_SPACE)
- Edit::KeyInput(rKEvt);
-}
-
-enum OfaQuoteOptions
-{
- ADD_NONBRK_SPACE,
- REPLACE_1ST
-};
-
-SvLBoxEntry* OfaQuoteTabPage::CreateEntry(String& rTxt, sal_uInt16 nCol)
-{
- SvLBoxEntry* pEntry = new SvLBoxEntry;
-
- if ( !pCheckButtonData )
- {
- pCheckButtonData = new SvLBoxButtonData( &aSwCheckLB );
- aSwCheckLB.SetCheckButtonData( pCheckButtonData );
- }
-
- pEntry->AddItem( new SvLBoxContextBmp( pEntry, 0, Image(), Image(), 0)); // Sonst Puff!
-
- String sEmpty;
- if (nCol == CBCOL_SECOND)
- pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte
- else
- pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) );
-
- if (nCol == CBCOL_FIRST)
- pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte
- else
- pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) );
-
- pEntry->AddItem( new OfaImpBrwString( pEntry, 0, rTxt ) );
-
- return pEntry;
-}
-
-OfaQuoteTabPage::OfaQuoteTabPage( Window* pParent, const SfxItemSet& rSet ) :
- SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCORR_QUOTE ), rSet),
- aCheckLB (this, CUI_RES(CLB_SETTINGS )),
- m_aSwCheckLBContainer(this, CUI_RES(CLB_SETTINGS)),
- aSwCheckLB(m_aSwCheckLBContainer),
- sHeader1 (CUI_RES( STR_HEADER1 )),
- sHeader2 (CUI_RES( STR_HEADER2 )),
- sNonBrkSpace (CUI_RES( ST_NON_BREAK_SPACE )),
- sOrdinal (CUI_RES( ST_ORDINAL )),
- pCheckButtonData ( NULL ),
-
- aSingleFL (this, CUI_RES(FL_SINGLE )),
- aSingleTypoCB (this, CUI_RES(CB_SGL_TYPO )),
- aSglStartQuoteFT (this, CUI_RES(FT_SGL_STARTQUOTE )),
- aSglStartQuotePB (this, CUI_RES(PB_SGL_STARTQUOTE )),
- aSglStartExFT (this, CUI_RES(FT_SGSTEX )),
- aSglEndQuoteFT (this, CUI_RES(FT_SGL_ENDQUOTE )),
- aSglEndQuotePB (this, CUI_RES(PB_SGL_ENDQUOTE )),
- aSglEndExFT (this, CUI_RES(FT_SGENEX )),
- aSglStandardPB (this, CUI_RES(PB_SGL_STD )),
-
- aDoubleFL (this, CUI_RES(FL_DOUBLE )),
- aTypoCB (this, CUI_RES(CB_TYPO )),
- aStartQuoteFT (this, CUI_RES(FT_STARTQUOTE )),
- aStartQuotePB (this, CUI_RES(PB_STARTQUOTE )),
- aDblStartExFT (this, CUI_RES(FT_DBSTEX )),
- aEndQuoteFT (this, CUI_RES(FT_ENDQUOTE )),
- aEndQuotePB (this, CUI_RES(PB_ENDQUOTE )),
- aDblEndExFT (this, CUI_RES(FT_DBECEX )),
- aDblStandardPB (this, CUI_RES(PB_DBL_STD )),
-
- sStartQuoteDlg (CUI_RES(STR_CHANGE_START)),
- sEndQuoteDlg (CUI_RES(STR_CHANGE_END)),
-
- sStandard(CUI_RES(ST_STANDARD))
-{
- aSglStandardPB.SetAccessibleName(String(CUI_RES(STR_PB_SGL_STD) ) );
- aDblStandardPB.SetAccessibleName(String(CUI_RES(STR_PB_DBL_STD) ) );
- aStartQuotePB.SetAccessibleName( String(CUI_RES(STR_PB_DBL_START) ));
- aEndQuotePB.SetAccessibleName(String(CUI_RES(STR_PB_DBL_END) ));
- aSglStartQuotePB.SetAccessibleName(String(CUI_RES(STR_PB_SGL_START) ));
- aSglEndQuotePB.SetAccessibleName(String(CUI_RES(STR_PB_SGL_END) ) );
-
- FreeResource();
-
- sal_Bool bShowSWOptions = sal_False;
-
- aCheckLB.SetHelpId( HID_OFAPAGE_QUOTE_CLB );
- aSwCheckLB.SetHelpId( HID_OFAPAGE_QUOTE_SW_CLB );
-
- SFX_ITEMSET_ARG( &rSet, pItem, SfxBoolItem, SID_AUTO_CORRECT_DLG, sal_False );
- if ( pItem && pItem->GetValue() )
- bShowSWOptions = sal_True;
-
- if ( bShowSWOptions )
- {
- static long aStaticTabs[]=
- {
- 3, 0, 20, 40
- };
-
- aSwCheckLB.SetStyle(aSwCheckLB.GetStyle() | WB_HSCROLL| WB_VSCROLL);
-
- aSwCheckLB.SvxSimpleTable::SetTabs(aStaticTabs);
- String sHeader( sHeader1 );
- sHeader += '\t';
- sHeader += sHeader2;
- sHeader += '\t';
- aSwCheckLB.InsertHeaderEntry( sHeader, HEADERBAR_APPEND,
- HIB_CENTER | HIB_VCENTER | HIB_FIXEDPOS | HIB_FIXED);
- aCheckLB.Hide( sal_True );
- }
- else
- {
- aSwCheckLB.HideTable( );
- }
-
- aStartQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl));
- aEndQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl));
- aSglStartQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl));
- aSglEndQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl));
- aDblStandardPB.SetClickHdl(LINK(this, OfaQuoteTabPage, StdQuoteHdl));
- aSglStandardPB.SetClickHdl(LINK(this, OfaQuoteTabPage, StdQuoteHdl));
-
- aSglStartQuotePB.SetAccessibleRelationLabeledBy( &aSglStartQuoteFT );
- aSglEndQuotePB.SetAccessibleRelationLabeledBy( &aSglEndQuoteFT );
- aSglStartQuotePB.SetAccessibleRelationMemberOf( &aSingleFL );
- aSglEndQuotePB.SetAccessibleRelationMemberOf( &aSingleFL );
- aStartQuotePB.SetAccessibleRelationLabeledBy( &aStartQuoteFT );
- aEndQuotePB.SetAccessibleRelationLabeledBy( &aEndQuoteFT );
- aStartQuotePB.SetAccessibleRelationMemberOf( &aDoubleFL );
- aEndQuotePB.SetAccessibleRelationMemberOf( &aDoubleFL );
- aSglStandardPB.SetAccessibleRelationMemberOf(&aSingleFL);
- aDblStandardPB.SetAccessibleRelationMemberOf(&aDoubleFL);
-}
-
-OfaQuoteTabPage::~OfaQuoteTabPage()
-{
- delete( pCheckButtonData );
-}
-
-SfxTabPage* OfaQuoteTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet)
-{
- return new OfaQuoteTabPage(pParent, rAttrSet);
-}
-
-sal_Bool OfaQuoteTabPage::FillItemSet( SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
-
- long nFlags = pAutoCorrect->GetFlags();
-
- if ( aCheckLB.IsVisible( ) )
- {
- sal_uInt16 nPos = 0;
- pAutoCorrect->SetAutoCorrFlag(AddNonBrkSpace, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(ChgOrdinalNumber, aCheckLB.IsChecked(nPos++));
- }
-
- sal_Bool bModified = sal_False;
- if ( aSwCheckLB.IsVisible( ) )
- {
- SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
-
- sal_Bool bCheck = aSwCheckLB.IsChecked(ADD_NONBRK_SPACE, CBCOL_FIRST);
- bModified |= pOpt->bAddNonBrkSpace != bCheck;
- pOpt->bAddNonBrkSpace = bCheck;
- pAutoCorrect->SetAutoCorrFlag(AddNonBrkSpace,
- aSwCheckLB.IsChecked(ADD_NONBRK_SPACE, CBCOL_SECOND));
-
- bCheck = aSwCheckLB.IsChecked(REPLACE_1ST, CBCOL_FIRST);
- bModified |= pOpt->bChgOrdinalNumber != bCheck;
- pOpt->bChgOrdinalNumber = bCheck;
- pAutoCorrect->SetAutoCorrFlag(ChgOrdinalNumber,
- aSwCheckLB.IsChecked(REPLACE_1ST, CBCOL_SECOND));
- }
-
- pAutoCorrect->SetAutoCorrFlag(ChgQuotes, aTypoCB.IsChecked());
- pAutoCorrect->SetAutoCorrFlag(ChgSglQuotes, aSingleTypoCB.IsChecked());
- sal_Bool bReturn = nFlags != pAutoCorrect->GetFlags();
- if(cStartQuote != pAutoCorrect->GetStartDoubleQuote())
- {
- bReturn = sal_True;
- sal_Unicode cUCS2 = static_cast<sal_Unicode>(cStartQuote); //TODO
- pAutoCorrect->SetStartDoubleQuote(cUCS2);
- }
- if(cEndQuote != pAutoCorrect->GetEndDoubleQuote())
- {
- bReturn = sal_True;
- sal_Unicode cUCS2 = static_cast<sal_Unicode>(cEndQuote); //TODO
- pAutoCorrect->SetEndDoubleQuote(cUCS2);
- }
- if(cSglStartQuote != pAutoCorrect->GetStartSingleQuote())
- {
- bReturn = sal_True;
- sal_Unicode cUCS2 = static_cast<sal_Unicode>(cSglStartQuote); //TODO
- pAutoCorrect->SetStartSingleQuote(cUCS2);
- }
- if(cSglEndQuote != pAutoCorrect->GetEndSingleQuote())
- {
- bReturn = sal_True;
- sal_Unicode cUCS2 = static_cast<sal_Unicode>(cSglEndQuote); //TODO
- pAutoCorrect->SetEndSingleQuote(cUCS2);
- }
-
- if( bModified || bReturn )
- {
- SvxAutoCorrCfg& rCfg = SvxAutoCorrCfg::Get();
- rCfg.SetModified();
- rCfg.Commit();
- }
- return bReturn;
-}
-
-void OfaQuoteTabPage::ActivatePage( const SfxItemSet& )
-{
- ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_False);
-}
-
-void OfaQuoteTabPage::Reset( const SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- const long nFlags = pAutoCorrect->GetFlags();
-
- // Initialize the Sw options
- if ( aSwCheckLB.IsVisible( ) )
- {
- SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
-
- aSwCheckLB.SetUpdateMode( sal_False );
- aSwCheckLB.Clear();
-
- aSwCheckLB.GetModel()->Insert(CreateEntry(sNonBrkSpace, CBCOL_BOTH ));
- aSwCheckLB.GetModel()->Insert(CreateEntry(sOrdinal, CBCOL_BOTH ));
-
- aSwCheckLB.CheckEntryPos( ADD_NONBRK_SPACE, CBCOL_FIRST, pOpt->bAddNonBrkSpace );
- aSwCheckLB.CheckEntryPos( ADD_NONBRK_SPACE, CBCOL_SECOND, 0 != (nFlags & AddNonBrkSpace) );
- aSwCheckLB.CheckEntryPos( REPLACE_1ST, CBCOL_FIRST, pOpt->bChgOrdinalNumber );
- aSwCheckLB.CheckEntryPos( REPLACE_1ST, CBCOL_SECOND, 0 != (nFlags & ChgOrdinalNumber) );
-
- aSwCheckLB.SetUpdateMode( sal_True );
- }
-
- // Initialize the non Sw options
- if ( aCheckLB.IsVisible( ) )
- {
- aCheckLB.SetUpdateMode( sal_False );
- aCheckLB.Clear( );
-
- aCheckLB.InsertEntry( sNonBrkSpace );
- aCheckLB.InsertEntry( sOrdinal );
-
- sal_uInt16 nPos = 0;
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & AddNonBrkSpace) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgOrdinalNumber) );
-
- aCheckLB.SetUpdateMode( sal_True );
- }
-
- // Initialize the quote stuffs
- aTypoCB .Check(0 != (nFlags & ChgQuotes));
- aSingleTypoCB .Check(0 != (nFlags & ChgSglQuotes));
- aTypoCB .SaveValue();
- aSingleTypoCB .SaveValue();
-
- cStartQuote = pAutoCorrect->GetStartDoubleQuote();
- cEndQuote = pAutoCorrect->GetEndDoubleQuote();
- cSglStartQuote = pAutoCorrect->GetStartSingleQuote();
- cSglEndQuote = pAutoCorrect->GetEndSingleQuote();
-
- aSglStartExFT .SetText(ChangeStringExt_Impl(cSglStartQuote));
- aSglEndExFT .SetText(ChangeStringExt_Impl(cSglEndQuote));
- aDblStartExFT .SetText(ChangeStringExt_Impl(cStartQuote));
- aDblEndExFT .SetText(ChangeStringExt_Impl(cEndQuote));
-}
-
-#define SGL_START 0
-#define DBL_START 1
-#define SGL_END 2
-#define DBL_END 3
-
-
-IMPL_LINK( OfaQuoteTabPage, QuoteHdl, PushButton*, pBtn )
-{
- sal_uInt16 nMode = SGL_START;
- if(pBtn == &aSglEndQuotePB)
- nMode = SGL_END;
- else if(pBtn == &aStartQuotePB)
- nMode = DBL_START;
- else if(pBtn == &aEndQuotePB)
- nMode = DBL_END;
- // Zeichenauswahl-Dialog starten
- SvxCharacterMap* pMap = new SvxCharacterMap( this, sal_True );
- pMap->SetCharFont( OutputDevice::GetDefaultFont(DEFAULTFONT_LATIN_TEXT,
- LANGUAGE_ENGLISH_US, DEFAULTFONT_FLAGS_ONLYONE, 0 ));
- pMap->SetText(nMode < SGL_END ? sStartQuoteDlg : sEndQuoteDlg );
- sal_UCS4 cDlg;
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- LanguageType eLang = Application::GetSettings().GetLanguage();
- switch( nMode )
- {
- case SGL_START:
- cDlg = cSglStartQuote;
- if(cDlg == 0)
- cDlg = pAutoCorrect->GetQuote('\'', sal_True, eLang);
- break;
- case SGL_END:
- cDlg = cSglEndQuote;
- if(cDlg == 0)
- cDlg = pAutoCorrect->GetQuote('\'', sal_False, eLang);
- break;
- case DBL_START:
- cDlg = cStartQuote;
- if(cDlg == 0)
- cDlg = pAutoCorrect->GetQuote('\"', sal_True, eLang);
- break;
- case DBL_END:
- cDlg = cEndQuote;
- if(cDlg == 0)
- cDlg = pAutoCorrect->GetQuote('\"', sal_False, eLang);
- break;
- default:
- OSL_FAIL("svx::OfaQuoteTabPage::QuoteHdl(), how to initialize cDlg?" );
- cDlg = 0;
- break;
-
- }
- pMap->SetChar( cDlg );
- pMap->DisableFontSelection();
- if(pMap->Execute() == RET_OK)
- {
- sal_UCS4 cNewChar = pMap->GetChar();
- switch( nMode )
- {
- case SGL_START:
- cSglStartQuote = cNewChar;
- aSglStartExFT.SetText(ChangeStringExt_Impl(cNewChar));
- break;
- case SGL_END:
- cSglEndQuote = cNewChar;
- aSglEndExFT.SetText(ChangeStringExt_Impl(cNewChar));
- break;
- case DBL_START:
- cStartQuote = cNewChar;
- aDblStartExFT.SetText(ChangeStringExt_Impl(cNewChar));
- break;
- case DBL_END:
- cEndQuote = cNewChar;
- aDblEndExFT.SetText(ChangeStringExt_Impl(cNewChar));
- break;
- }
- }
- delete pMap;
-
- return 0;
-}
-
-IMPL_LINK( OfaQuoteTabPage, StdQuoteHdl, PushButton*, pBtn )
-{
- if(pBtn == &aDblStandardPB)
- {
- cStartQuote = 0;
- aDblStartExFT.SetText(ChangeStringExt_Impl(0));
- cEndQuote = 0;
- aDblEndExFT.SetText(ChangeStringExt_Impl(0));
-
- }
- else
- {
- cSglStartQuote = 0;
- aSglStartExFT.SetText(ChangeStringExt_Impl(0));
- cSglEndQuote = 0;
- aSglEndExFT.SetText(ChangeStringExt_Impl(0));
- }
- return 0;
-}
-
-// --------------------------------------------------
-
-String OfaQuoteTabPage::ChangeStringExt_Impl( sal_UCS4 cChar )
-{
- if( !cChar )
- return sStandard;
-
- // convert codepoint value to unicode-hex string
- sal_UCS4 aStrCodes[32] = { 0, ' ', '(', 'U', '+', '0' };
- aStrCodes[0] = cChar;
- int nFullLen = 5;
- int nHexLen = 4;
- while( (cChar >> (4*nHexLen)) != 0 )
- ++nHexLen;
- for( int i = nHexLen; --i >= 0;)
- {
- sal_UCS4 cHexDigit = ((cChar >> (4*i)) & 0x0f) + '0';
- if( cHexDigit > '9' )
- cHexDigit += 'A' - ('9' + 1);
- aStrCodes[ nFullLen++ ] = cHexDigit;
- }
- aStrCodes[ nFullLen++ ] = ')';
- // using the new UCS4 constructor
- rtl::OUString aOUStr( aStrCodes, nFullLen );
- return aOUStr;
-}
-
-OfaAutoCompleteTabPage::OfaAutoCompleteTabPage( Window* pParent,
- const SfxItemSet& rSet )
- : SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCOMPLETE_OPTIONS ), rSet),
- aCBActiv (this, CUI_RES(CB_ACTIV)),
- aCBAppendSpace (this, CUI_RES(CB_APPEND_SPACE)),
- aCBAsTip (this, CUI_RES(CB_AS_TIP)),
- aCBCollect (this, CUI_RES(CB_COLLECT)),
- aCBRemoveList (this, CUI_RES(CB_REMOVE_LIST)),
- aFTExpandKey (this, CUI_RES(FT_EXPAND_KEY)),
- aDCBExpandKey (this, CUI_RES(DCB_EXPAND_KEY)),
- aFTMinWordlen (this, CUI_RES(FT_MIN_WORDLEN)),
- aNFMinWordlen (this, CUI_RES(NF_MIN_WORDLEN)),
- aFTMaxEntries (this, CUI_RES(FT_MAX_ENTRIES)),
- aNFMaxEntries (this, CUI_RES(NF_MAX_ENTRIES)),
- aLBEntries (*this, CUI_RES(LB_ENTRIES)),
- aPBEntries (this, CUI_RES(PB_ENTRIES)),
- pAutoCmpltList( 0 ),
- nAutoCmpltListCnt( 0 )
-{
- FreeResource();
-
- // the defined KEYs
- static const sal_uInt16 aKeyCodes[] = {
- KEY_END,
- KEY_RETURN,
- KEY_SPACE,
- KEY_RIGHT,
- KEY_TAB,
- 0
- };
-
- for( const sal_uInt16* pKeys = aKeyCodes; *pKeys; ++pKeys )
- {
- KeyCode aKCode( *pKeys );
- sal_uInt16 nPos = aDCBExpandKey.InsertEntry( aKCode.GetName() );
- aDCBExpandKey.SetEntryData( nPos, (void*)(sal_uLong)*pKeys );
- if( KEY_RETURN == *pKeys ) // default to RETURN
- aDCBExpandKey.SelectEntryPos( nPos );
- }
-
- aPBEntries.SetClickHdl(LINK(this, OfaAutoCompleteTabPage, DeleteHdl));
- aCBActiv.SetToggleHdl(LINK(this, OfaAutoCompleteTabPage, CheckHdl));
- aCBCollect.SetToggleHdl(LINK(this, OfaAutoCompleteTabPage, CheckHdl));
- aLBEntries.SetAccessibleRelationLabeledBy(&aLBEntries);
-}
-
-OfaAutoCompleteTabPage::~OfaAutoCompleteTabPage()
-{
-}
-
-SfxTabPage* OfaAutoCompleteTabPage::Create( Window* pParent,
- const SfxItemSet& rSet)
-{
- return new OfaAutoCompleteTabPage( pParent, rSet );
-}
-
-sal_Bool OfaAutoCompleteTabPage::FillItemSet( SfxItemSet& )
-{
- sal_Bool bModified = sal_False, bCheck;
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
- sal_uInt16 nVal;
-
- bCheck = aCBActiv.IsChecked();
- bModified |= pOpt->bAutoCompleteWords != bCheck;
- pOpt->bAutoCompleteWords = bCheck;
- bCheck = aCBCollect.IsChecked();
- bModified |= pOpt->bAutoCmpltCollectWords != bCheck;
- pOpt->bAutoCmpltCollectWords = bCheck;
- bCheck = !aCBRemoveList.IsChecked(); // inverted value!
- bModified |= pOpt->bAutoCmpltKeepList != bCheck;
- pOpt->bAutoCmpltKeepList = bCheck;
- bCheck = aCBAppendSpace.IsChecked();
- bModified |= pOpt->bAutoCmpltAppendBlanc != bCheck;
- pOpt->bAutoCmpltAppendBlanc = bCheck;
- bCheck = aCBAsTip.IsChecked();
- bModified |= pOpt->bAutoCmpltShowAsTip != bCheck;
- pOpt->bAutoCmpltShowAsTip = bCheck;
-
- nVal = (sal_uInt16)aNFMinWordlen.GetValue();
- bModified |= nVal != pOpt->nAutoCmpltWordLen;
- pOpt->nAutoCmpltWordLen = nVal;
-
- nVal = (sal_uInt16)aNFMaxEntries.GetValue();
- bModified |= nVal != pOpt->nAutoCmpltListLen;
- pOpt->nAutoCmpltListLen = nVal;
-
- nVal = aDCBExpandKey.GetSelectEntryPos();
- if( nVal < aDCBExpandKey.GetEntryCount() )
- {
- sal_uLong nKey = (sal_uLong)aDCBExpandKey.GetEntryData( nVal );
- bModified |= nKey != pOpt->nAutoCmpltExpandKey;
- pOpt->nAutoCmpltExpandKey = (sal_uInt16)nKey;
- }
-
- if( pAutoCmpltList && nAutoCmpltListCnt != aLBEntries.GetEntryCount() )
- {
- bModified = sal_True;
- pOpt->pAutoCmpltList = pAutoCmpltList;
- }
- if( bModified )
- {
- SvxAutoCorrCfg& rCfg = SvxAutoCorrCfg::Get();
- rCfg.SetModified();
- rCfg.Commit();
- }
- return sal_True;
-}
-
-void OfaAutoCompleteTabPage::Reset( const SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
-
- aCBActiv.Check( 0 != pOpt->bAutoCompleteWords );
- aCBCollect.Check( 0 != pOpt->bAutoCmpltCollectWords );
- aCBRemoveList.Check( !pOpt->bAutoCmpltKeepList ); //inverted value!
- aCBAppendSpace.Check( 0 != pOpt->bAutoCmpltAppendBlanc );
- aCBAsTip.Check( 0 != pOpt->bAutoCmpltShowAsTip );
-
- aNFMinWordlen.SetValue( pOpt->nAutoCmpltWordLen );
- aNFMaxEntries.SetValue( pOpt->nAutoCmpltListLen );
-
- // select the specific KeyCode:
- {
- sal_uLong nKey = pOpt->nAutoCmpltExpandKey;
- for( sal_uInt16 n = 0, nCnt = aDCBExpandKey.GetEntryCount(); n < nCnt; ++n )
- if( nKey == (sal_uLong)aDCBExpandKey.GetEntryData( n ))
- {
- aDCBExpandKey.SelectEntryPos( n );
- break;
- }
- }
-
- if( pOpt->pAutoCmpltList && pOpt->pAutoCmpltList->Count() )
- {
- pAutoCmpltList = (SvStringsISortDtor*)pOpt->pAutoCmpltList;
- pOpt->pAutoCmpltList = 0;
- nAutoCmpltListCnt = pAutoCmpltList->Count();
- for( sal_uInt16 n = 0; n < nAutoCmpltListCnt; ++n )
- {
- const StringPtr pStr = pAutoCmpltList->GetObject( n );
- sal_uInt16 nPos = aLBEntries.InsertEntry( *pStr );
- aLBEntries.SetEntryData( nPos, (void*)pStr );
- }
- }
- else
- {
- aLBEntries.Disable();
- aPBEntries.Disable();
- }
-
- CheckHdl( &aCBActiv );
- CheckHdl( &aCBCollect );
-}
-
-void OfaAutoCompleteTabPage::ActivatePage( const SfxItemSet& )
-{
- ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage( sal_False );
-}
-
-IMPL_LINK( OfaAutoCompleteTabPage, DeleteHdl, PushButton*, EMPTYARG )
-{
- sal_uInt16 nSelCnt = pAutoCmpltList ? aLBEntries.GetSelectEntryCount() : 0;
- while( nSelCnt )
- {
- sal_uInt16 nPos = aLBEntries.GetSelectEntryPos( --nSelCnt );
- const StringPtr pStr = (StringPtr)aLBEntries.GetEntryData( nPos );
- aLBEntries.RemoveEntry( nPos );
- nPos = pAutoCmpltList->GetPos( pStr );
- if( USHRT_MAX != nPos )
- pAutoCmpltList->Remove( nPos );
- }
- return 0;
-}
-
-IMPL_LINK( OfaAutoCompleteTabPage, CheckHdl, CheckBox*, pBox )
-{
- sal_Bool bEnable = pBox->IsChecked();
- if( pBox == &aCBActiv )
- {
- aCBAppendSpace.Enable( bEnable );
- aCBAppendSpace.Enable( bEnable );
- aCBAsTip.Enable( bEnable );
- aDCBExpandKey.Enable( bEnable );
- }
- else if(&aCBCollect == pBox)
- aCBRemoveList.Enable( bEnable );
- return 0;
-}
-
-void OfaAutoCompleteTabPage::CopyToClipboard() const
-{
- sal_uInt16 nSelCnt = aLBEntries.GetSelectEntryCount();
- if( pAutoCmpltList && nSelCnt )
- {
- TransferDataContainer* pCntnr = new TransferDataContainer;
- ::com::sun::star::uno::Reference<
- ::com::sun::star::datatransfer::XTransferable > xRef( pCntnr );
-
- ByteString sData;
- const sal_Char* pLineEnd =
-#if defined(UNX)
- "\012";
-#else
- "\015\012";
-#endif
-
- rtl_TextEncoding nEncode = gsl_getSystemTextEncoding();
-
- for( sal_uInt16 n = 0; n < nSelCnt; ++n )
- {
- sData += ByteString( aLBEntries.GetSelectEntry( n ), nEncode );
- sData += pLineEnd;
- }
- pCntnr->CopyByteString( SOT_FORMAT_STRING, sData );
- pCntnr->CopyToClipboard( (Window*)this );
- }
-}
-
-long OfaAutoCompleteTabPage::AutoCompleteMultiListBox::PreNotify(
- NotifyEvent& rNEvt )
-{
- long nHandled = MultiListBox::PreNotify( rNEvt );
-
- if( !nHandled && EVENT_KEYUP == rNEvt.GetType() )
- {
- const KeyCode& rKeyCode = rNEvt.GetKeyEvent()->GetKeyCode();
- switch( rKeyCode.GetModifier() | rKeyCode.GetCode() )
- {
- case KEY_DELETE:
- rPage.DeleteHdl( 0 );
- nHandled = 1;
- break;
-
- default:
- if( KEYFUNC_COPY == rKeyCode.GetFunction() )
- {
- rPage.CopyToClipboard();
- nHandled = 1;
- }
- break;
- }
- }
- return nHandled;
-}
-
-// class OfaSmartTagOptionsTabPage ---------------------------------------------
-
-OfaSmartTagOptionsTabPage::OfaSmartTagOptionsTabPage( Window* pParent,
- const SfxItemSet& rSet )
- : SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_SMARTTAG_OPTIONS ), rSet),
- m_aMainCB( this, CUI_RES(CB_SMARTTAGS) ),
- m_aSmartTagTypesLB( this, CUI_RES(LB_SMARTTAGS) ),
- m_aPropertiesPB( this, CUI_RES(PB_SMARTTAGS) ),
- m_aTitleFT( this, CUI_RES(FT_SMARTTAGS) )
-{
- FreeResource();
-
- // some options for the list box:
- m_aSmartTagTypesLB.SetStyle( m_aSmartTagTypesLB.GetStyle() | WB_HSCROLL | WB_HIDESELECTION );
- m_aSmartTagTypesLB.SetHighlightRange();
-
- // set the handlers:
- m_aMainCB.SetToggleHdl(LINK(this, OfaSmartTagOptionsTabPage, CheckHdl));
- m_aPropertiesPB.SetClickHdl(LINK(this, OfaSmartTagOptionsTabPage, ClickHdl));
- m_aSmartTagTypesLB.SetSelectHdl(LINK(this, OfaSmartTagOptionsTabPage, SelectHdl));
-}
-
-OfaSmartTagOptionsTabPage::~OfaSmartTagOptionsTabPage()
-{
-
-}
-
-SfxTabPage* OfaSmartTagOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet)
-{
- return new OfaSmartTagOptionsTabPage( pParent, rSet );
-}
-
-/** This struct is used to associate list box entries with smart tag data
-*/
-struct ImplSmartTagLBUserData
-{
- rtl::OUString maSmartTagType;
- uno::Reference< smarttags::XSmartTagRecognizer > mxRec;
- sal_Int32 mnSmartTagIdx;
-
- ImplSmartTagLBUserData( const rtl::OUString& rSmartTagType,
- uno::Reference< smarttags::XSmartTagRecognizer > xRec,
- sal_Int32 nSmartTagIdx ) :
- maSmartTagType( rSmartTagType ),
- mxRec( xRec ),
- mnSmartTagIdx( nSmartTagIdx ) {}
-};
-
-/** Clears m_aSmartTagTypesLB
-*/
-void OfaSmartTagOptionsTabPage::ClearListBox()
-{
- const sal_uLong nCount = m_aSmartTagTypesLB.GetEntryCount();
- for ( sal_uInt16 i = 0; i < nCount; ++i )
- {
- const SvLBoxEntry* pEntry = m_aSmartTagTypesLB.GetEntry(i);
- const ImplSmartTagLBUserData* pUserData = static_cast< ImplSmartTagLBUserData* >(pEntry->GetUserData());
- delete pUserData;
- }
-
- m_aSmartTagTypesLB.Clear();
-}
-
-/** Inserts items into m_aSmartTagTypesLB
-*/
-void OfaSmartTagOptionsTabPage::FillListBox( const SmartTagMgr& rSmartTagMgr )
-{
- // first we have to clear the list box:
- ClearListBox();
-
- // fill list box:
- const sal_uInt32 nNumberOfRecognizers = rSmartTagMgr.NumberOfRecognizers();
- const lang::Locale aLocale( SvxCreateLocale( eLastDialogLanguage ) );
- std::vector< ActionReference > aActionReferences;
-
- for ( sal_uInt32 i = 0; i < nNumberOfRecognizers; ++i )
- {
- uno::Reference< smarttags::XSmartTagRecognizer > xRec = rSmartTagMgr.GetRecognizer(i);
-
- const rtl::OUString aName = xRec->getName( aLocale );
- const rtl::OUString aDesc = xRec->getDescription( aLocale );
- const sal_Int32 nNumberOfSupportedSmartTags = xRec->getSmartTagCount();
-
- for ( sal_Int32 j = 0; j < nNumberOfSupportedSmartTags; ++j )
- {
- const rtl::OUString aSmartTagType = xRec->getSmartTagName(j);
- rtl::OUString aSmartTagCaption = rSmartTagMgr.GetSmartTagCaption( aSmartTagType, aLocale );
-
- if ( !aSmartTagCaption.getLength() )
- aSmartTagCaption = aSmartTagType;
-
- const rtl::OUString aLBEntry = aSmartTagCaption +
- OUString(RTL_CONSTASCII_USTRINGPARAM(" (")) +
- aName +
- OUString(RTL_CONSTASCII_USTRINGPARAM(")"));
-
- SvLBoxEntry* pEntry = m_aSmartTagTypesLB.SvTreeListBox::InsertEntry( aLBEntry );
- if ( pEntry )
- {
- const bool bCheck = rSmartTagMgr.IsSmartTagTypeEnabled( aSmartTagType );
- m_aSmartTagTypesLB.SetCheckButtonState( pEntry, bCheck ? SV_BUTTON_CHECKED : SV_BUTTON_UNCHECKED );
- pEntry->SetUserData(static_cast<void*>(new ImplSmartTagLBUserData( aSmartTagType, xRec, j ) ) );
- }
- }
- }
-}
-
-/** Handler for the push button
-*/
-IMPL_LINK( OfaSmartTagOptionsTabPage, ClickHdl, PushButton*, EMPTYARG )
-{
- const sal_uInt16 nPos = m_aSmartTagTypesLB.GetSelectEntryPos();
- const SvLBoxEntry* pEntry = m_aSmartTagTypesLB.GetEntry(nPos);
- const ImplSmartTagLBUserData* pUserData = static_cast< ImplSmartTagLBUserData* >(pEntry->GetUserData());
- uno::Reference< smarttags::XSmartTagRecognizer > xRec = pUserData->mxRec;
- const sal_Int32 nSmartTagIdx = pUserData->mnSmartTagIdx;
-
- const lang::Locale aLocale( SvxCreateLocale( eLastDialogLanguage ) );
- if ( xRec->hasPropertyPage( nSmartTagIdx, aLocale ) )
- xRec->displayPropertyPage( nSmartTagIdx, aLocale );
-
- return 0;
-}
-
-/** Handler for the check box
-*/
-IMPL_LINK( OfaSmartTagOptionsTabPage, CheckHdl, CheckBox*, EMPTYARG )
-{
- const sal_Bool bEnable = m_aMainCB.IsChecked();
- m_aSmartTagTypesLB.Enable( bEnable );
- m_aSmartTagTypesLB.Invalidate();
- m_aPropertiesPB.Enable( false );
-
- // if the controls are currently enabled, we still have to check
- // if the properties button should be disabled because the currently
- // seleted smart tag type does not have a properties dialog.
- // We do this by calling SelectHdl:
- if ( bEnable )
- SelectHdl( &m_aSmartTagTypesLB );
-
- return 0;
-}
-
-/** Handler for the list box
-*/
-IMPL_LINK(OfaSmartTagOptionsTabPage, SelectHdl, SvxCheckListBox*, EMPTYARG)
-{
- if ( m_aSmartTagTypesLB.GetEntryCount() < 1 )
- return 0;
-
- const sal_uInt16 nPos = m_aSmartTagTypesLB.GetSelectEntryPos();
- const SvLBoxEntry* pEntry = m_aSmartTagTypesLB.GetEntry(nPos);
- const ImplSmartTagLBUserData* pUserData = static_cast< ImplSmartTagLBUserData* >(pEntry->GetUserData());
- uno::Reference< smarttags::XSmartTagRecognizer > xRec = pUserData->mxRec;
- const sal_Int32 nSmartTagIdx = pUserData->mnSmartTagIdx;
-
- const lang::Locale aLocale( SvxCreateLocale( eLastDialogLanguage ) );
- if ( xRec->hasPropertyPage( nSmartTagIdx, aLocale ) )
- m_aPropertiesPB.Enable( sal_True );
- else
- m_aPropertiesPB.Enable( sal_False );
-
- return 0;
-}
-
-/** Propagates the current settings to the smart tag manager.
-*/
-sal_Bool OfaSmartTagOptionsTabPage::FillItemSet( SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
- SmartTagMgr* pSmartTagMgr = pOpt->pSmartTagMgr;
-
- // robust!
- if ( !pSmartTagMgr )
- return sal_False;
-
- sal_Bool bModifiedSmartTagTypes = sal_False;
- std::vector< rtl::OUString > aDisabledSmartTagTypes;
-
- const sal_uLong nCount = m_aSmartTagTypesLB.GetEntryCount();
-
- for ( sal_uInt16 i = 0; i < nCount; ++i )
- {
- const SvLBoxEntry* pEntry = m_aSmartTagTypesLB.GetEntry(i);
- const ImplSmartTagLBUserData* pUserData = static_cast< ImplSmartTagLBUserData* >(pEntry->GetUserData());
- const sal_Bool bChecked = m_aSmartTagTypesLB.IsChecked(i);
- const sal_Bool bIsCurrentlyEnabled = pSmartTagMgr->IsSmartTagTypeEnabled( pUserData->maSmartTagType );
-
- bModifiedSmartTagTypes = bModifiedSmartTagTypes || ( !bChecked != !bIsCurrentlyEnabled );
-
- if ( !bChecked )
- aDisabledSmartTagTypes.push_back( pUserData->maSmartTagType );
-
- delete pUserData;
- }
-
- const sal_Bool bModifiedRecognize = ( !m_aMainCB.IsChecked() != !pSmartTagMgr->IsLabelTextWithSmartTags() );
- if ( bModifiedSmartTagTypes || bModifiedRecognize )
- {
- bool bLabelTextWithSmartTags = m_aMainCB.IsChecked() ? true : false;
- pSmartTagMgr->WriteConfiguration( bModifiedRecognize ? &bLabelTextWithSmartTags : 0,
- bModifiedSmartTagTypes ? &aDisabledSmartTagTypes : 0 );
- }
-
- return sal_True;
-}
-
-/** Sets the controls based on the current settings at SmartTagMgr.
-*/
-void OfaSmartTagOptionsTabPage::Reset( const SfxItemSet& )
-{
- SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get().GetAutoCorrect();
- SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
- const SmartTagMgr* pSmartTagMgr = pOpt->pSmartTagMgr;
-
- // robust, should not happen!
- if ( !pSmartTagMgr )
- return;
-
- FillListBox( *pSmartTagMgr );
- m_aSmartTagTypesLB.SelectEntryPos( 0 );
- m_aMainCB.Check( pSmartTagMgr->IsLabelTextWithSmartTags() );
- CheckHdl( &m_aMainCB );
-}
-
-void OfaSmartTagOptionsTabPage::ActivatePage( const SfxItemSet& )
-{
- ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage( sal_False );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */