12ee96f1cSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 32ee96f1cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 42ee96f1cSAndrew Rist * or more contributor license agreements. See the NOTICE file 52ee96f1cSAndrew Rist * distributed with this work for additional information 62ee96f1cSAndrew Rist * regarding copyright ownership. The ASF licenses this file 72ee96f1cSAndrew Rist * to you under the Apache License, Version 2.0 (the 82ee96f1cSAndrew Rist * "License"); you may not use this file except in compliance 92ee96f1cSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 112ee96f1cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 132ee96f1cSAndrew Rist * Unless required by applicable law or agreed to in writing, 142ee96f1cSAndrew Rist * software distributed under the License is distributed on an 152ee96f1cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 162ee96f1cSAndrew Rist * KIND, either express or implied. See the License for the 172ee96f1cSAndrew Rist * specific language governing permissions and limitations 182ee96f1cSAndrew Rist * under the License. 19cdf0e10cSrcweir * 202ee96f1cSAndrew Rist *************************************************************/ 212ee96f1cSAndrew Rist 222ee96f1cSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_cui.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #define _SVSTDARR_STRINGSISORTDTOR 28cdf0e10cSrcweir #define _SVSTDARR_STRINGSDTOR 29cdf0e10cSrcweir #include <svl/svstdarr.hxx> 30cdf0e10cSrcweir #include <vcl/msgbox.hxx> 31cdf0e10cSrcweir #include <vcl/field.hxx> 32cdf0e10cSrcweir #include <vcl/keycodes.hxx> 33cdf0e10cSrcweir #include <sot/exchange.hxx> 34cdf0e10cSrcweir #include <svtools/transfer.hxx> 35cdf0e10cSrcweir #include <unotools/syslocale.hxx> 36cdf0e10cSrcweir #include <sfx2/objsh.hxx> 37cdf0e10cSrcweir #include <sfx2/viewsh.hxx> 38cdf0e10cSrcweir #include <unotools/charclass.hxx> 39cdf0e10cSrcweir #include <unotools/collatorwrapper.hxx> 40cdf0e10cSrcweir #include <com/sun/star/i18n/CollatorOptions.hpp> 41cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 42cdf0e10cSrcweir #include <comphelper/processfactory.hxx> 43cdf0e10cSrcweir #include <vcl/svapp.hxx> 44cdf0e10cSrcweir #include <sfx2/module.hxx> 45cdf0e10cSrcweir #include <sfx2/request.hxx> 46cdf0e10cSrcweir #include <sfx2/sfxsids.hrc> 47cdf0e10cSrcweir #include <svl/eitem.hxx> 48cdf0e10cSrcweir #include <svl/languageoptions.hxx> 49cdf0e10cSrcweir #include <svx/SmartTagMgr.hxx> 50cdf0e10cSrcweir #include <com/sun/star/smarttags/XSmartTagRecognizer.hpp> 51cdf0e10cSrcweir #include <com/sun/star/smarttags/XSmartTagAction.hpp> 52cdf0e10cSrcweir 53cdf0e10cSrcweir #define _OFA_AUTOCDLG_CXX 54cdf0e10cSrcweir #include "autocdlg.hxx" 55cdf0e10cSrcweir #include "autocdlg.hrc" 56cdf0e10cSrcweir #include "helpid.hrc" 57cdf0e10cSrcweir #include <editeng/acorrcfg.hxx> 58cdf0e10cSrcweir #include <editeng/svxacorr.hxx> 59cdf0e10cSrcweir #include "cuicharmap.hxx" 60cdf0e10cSrcweir #include <editeng/unolingu.hxx> 61cdf0e10cSrcweir #include <dialmgr.hxx> 62cdf0e10cSrcweir #include <svx/svxids.hrc> // SID_OPEN_SMARTTAGSOPTIONS 63cdf0e10cSrcweir 64cdf0e10cSrcweir static LanguageType eLastDialogLanguage = LANGUAGE_SYSTEM; 65cdf0e10cSrcweir 66cdf0e10cSrcweir using namespace ::com::sun::star::util; 67cdf0e10cSrcweir using namespace ::com::sun::star; 68cdf0e10cSrcweir using namespace ::rtl; 69cdf0e10cSrcweir 70cdf0e10cSrcweir static ::com::sun::star::uno::Reference< 71cdf0e10cSrcweir ::com::sun::star::lang::XMultiServiceFactory >& GetProcessFact() 72cdf0e10cSrcweir { 73cdf0e10cSrcweir static ::com::sun::star::uno::Reference< 74cdf0e10cSrcweir ::com::sun::star::lang::XMultiServiceFactory > xMSF = 75cdf0e10cSrcweir ::comphelper::getProcessServiceFactory(); 76cdf0e10cSrcweir return xMSF; 77cdf0e10cSrcweir } 78cdf0e10cSrcweir 79cdf0e10cSrcweir /*-----------------14.10.96 15.47------------------- 80cdf0e10cSrcweir 81cdf0e10cSrcweir --------------------------------------------------*/ 82cdf0e10cSrcweir 83cdf0e10cSrcweir OfaAutoCorrDlg::OfaAutoCorrDlg(Window* pParent, const SfxItemSet* _pSet ) : 84cdf0e10cSrcweir SfxTabDialog(pParent, CUI_RES( RID_OFA_AUTOCORR_DLG ), _pSet), 85cdf0e10cSrcweir aLanguageFT( this, CUI_RES(FT_LANG )), 86cdf0e10cSrcweir aLanguageLB( this, CUI_RES(LB_LANG )) 87cdf0e10cSrcweir { 88cdf0e10cSrcweir sal_Bool bShowSWOptions = sal_False; 89cdf0e10cSrcweir sal_Bool bOpenSmartTagOptions = sal_False; 90cdf0e10cSrcweir 91cdf0e10cSrcweir if ( _pSet ) 92cdf0e10cSrcweir { 93cdf0e10cSrcweir SFX_ITEMSET_ARG( _pSet, pItem, SfxBoolItem, SID_AUTO_CORRECT_DLG, sal_False ); 94cdf0e10cSrcweir if ( pItem && pItem->GetValue() ) 95cdf0e10cSrcweir bShowSWOptions = sal_True; 96cdf0e10cSrcweir 97cdf0e10cSrcweir SFX_ITEMSET_ARG( _pSet, pItem2, SfxBoolItem, SID_OPEN_SMARTTAGOPTIONS, sal_False ); 98cdf0e10cSrcweir if ( pItem2 && pItem2->GetValue() ) 99cdf0e10cSrcweir bOpenSmartTagOptions = sal_True; 100cdf0e10cSrcweir } 101cdf0e10cSrcweir 102cdf0e10cSrcweir aLanguageFT.SetZOrder(0, WINDOW_ZORDER_FIRST); 103cdf0e10cSrcweir aLanguageLB.SetZOrder(&aLanguageFT, WINDOW_ZORDER_BEHIND); 104cdf0e10cSrcweir aLanguageLB.SetHelpId(HID_AUTOCORR_LANGUAGE); 105cdf0e10cSrcweir FreeResource(); 106cdf0e10cSrcweir 107cdf0e10cSrcweir AddTabPage(RID_OFAPAGE_AUTOCORR_OPTIONS, OfaAutocorrOptionsPage::Create, 0); 108cdf0e10cSrcweir AddTabPage(RID_OFAPAGE_AUTOFMT_APPLY, OfaSwAutoFmtOptionsPage::Create, 0); 109cdf0e10cSrcweir AddTabPage(RID_OFAPAGE_AUTOCOMPLETE_OPTIONS, OfaAutoCompleteTabPage::Create, 0); 110cdf0e10cSrcweir AddTabPage(RID_OFAPAGE_SMARTTAG_OPTIONS, OfaSmartTagOptionsTabPage::Create, 0); 111cdf0e10cSrcweir 112cdf0e10cSrcweir if (!bShowSWOptions) 113cdf0e10cSrcweir { 114cdf0e10cSrcweir RemoveTabPage(RID_OFAPAGE_AUTOFMT_APPLY); 115cdf0e10cSrcweir RemoveTabPage(RID_OFAPAGE_AUTOCOMPLETE_OPTIONS); 116cdf0e10cSrcweir RemoveTabPage(RID_OFAPAGE_SMARTTAG_OPTIONS); 117cdf0e10cSrcweir } 118cdf0e10cSrcweir else 119cdf0e10cSrcweir { 120cdf0e10cSrcweir // remove smart tag tab page if no extensions are installed 121cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 122cdf0e10cSrcweir SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags(); 123cdf0e10cSrcweir if ( !pOpt || !pOpt->pSmartTagMgr || 0 == pOpt->pSmartTagMgr->NumberOfRecognizers() ) 124cdf0e10cSrcweir RemoveTabPage(RID_OFAPAGE_SMARTTAG_OPTIONS); 125cdf0e10cSrcweir 126cdf0e10cSrcweir RemoveTabPage(RID_OFAPAGE_AUTOCORR_OPTIONS); 127cdf0e10cSrcweir } 128cdf0e10cSrcweir 129cdf0e10cSrcweir AddTabPage(RID_OFAPAGE_AUTOCORR_REPLACE, OfaAutocorrReplacePage::Create, 0); 130cdf0e10cSrcweir AddTabPage(RID_OFAPAGE_AUTOCORR_EXCEPT, OfaAutocorrExceptPage::Create, 0); 131cdf0e10cSrcweir AddTabPage(RID_OFAPAGE_AUTOCORR_QUOTE, OfaQuoteTabPage::Create, 0); 132cdf0e10cSrcweir 133cdf0e10cSrcweir // initialize languages 134cdf0e10cSrcweir //! LANGUAGE_NONE is displayed as '[All]' and the LanguageType 135cdf0e10cSrcweir //! will be set to LANGUAGE_DONTKNOW 136cdf0e10cSrcweir sal_Int16 nLangList = LANG_LIST_WESTERN; 137cdf0e10cSrcweir 138cdf0e10cSrcweir if( SvtLanguageOptions().IsCTLFontEnabled() ) 139cdf0e10cSrcweir nLangList |= LANG_LIST_CTL; 140cdf0e10cSrcweir aLanguageLB.SetLanguageList( nLangList, sal_True, sal_True ); 141cdf0e10cSrcweir aLanguageLB.SelectLanguage( LANGUAGE_NONE ); 142cdf0e10cSrcweir sal_uInt16 nPos = aLanguageLB.GetSelectEntryPos(); 143cdf0e10cSrcweir DBG_ASSERT( LISTBOX_ENTRY_NOTFOUND != nPos, "listbox entry missing" ); 144cdf0e10cSrcweir aLanguageLB.SetEntryData( nPos, (void*)(long) LANGUAGE_DONTKNOW ); 145cdf0e10cSrcweir 146cdf0e10cSrcweir // Initialisierung funktionier fuer static nicht unter Linux - deswegen hier 147cdf0e10cSrcweir if( LANGUAGE_SYSTEM == eLastDialogLanguage ) 148cdf0e10cSrcweir eLastDialogLanguage = Application::GetSettings().GetLanguage(); 149cdf0e10cSrcweir 150cdf0e10cSrcweir LanguageType nSelectLang = LANGUAGE_DONTKNOW; 151cdf0e10cSrcweir nPos = aLanguageLB.GetEntryPos( (void*)(long) eLastDialogLanguage ); 152cdf0e10cSrcweir if (LISTBOX_ENTRY_NOTFOUND != nPos) 153cdf0e10cSrcweir nSelectLang = eLastDialogLanguage; 154cdf0e10cSrcweir aLanguageLB.SelectLanguage( nSelectLang ); 155cdf0e10cSrcweir 156cdf0e10cSrcweir aLanguageLB.SetSelectHdl(LINK(this, OfaAutoCorrDlg, SelectLanguageHdl)); 157cdf0e10cSrcweir 158cdf0e10cSrcweir Size aMinSize(aLanguageFT.CalcMinimumSize()); 159cdf0e10cSrcweir //reserve some extra space for CJK accelerators that are possible inserted 160cdf0e10cSrcweir //later (like '(A)') 161cdf0e10cSrcweir aLanguageFT.SetPosSizePixel( 0, 0, aMinSize.Width() + 20, 0, WINDOW_POSSIZE_WIDTH ); 162cdf0e10cSrcweir 163cdf0e10cSrcweir if ( bOpenSmartTagOptions ) 164cdf0e10cSrcweir SetCurPageId( RID_OFAPAGE_SMARTTAG_OPTIONS ); 165cdf0e10cSrcweir } 166cdf0e10cSrcweir /*-----------------16.10.96 14.06------------------- 167cdf0e10cSrcweir 168cdf0e10cSrcweir --------------------------------------------------*/ 169cdf0e10cSrcweir 170cdf0e10cSrcweir sal_Bool lcl_FindEntry( ListBox& rLB, const String& rEntry, 171cdf0e10cSrcweir CollatorWrapper& rCmpClass ) 172cdf0e10cSrcweir { 173cdf0e10cSrcweir sal_uInt16 nCount = rLB.GetEntryCount(); 174cdf0e10cSrcweir sal_uInt16 nSelPos = rLB.GetSelectEntryPos(); 175cdf0e10cSrcweir sal_uInt16 i; 176cdf0e10cSrcweir for(i = 0; i < nCount; i++) 177cdf0e10cSrcweir { 178cdf0e10cSrcweir if( 0 == rCmpClass.compareString(rEntry, rLB.GetEntry(i) )) 179cdf0e10cSrcweir { 180cdf0e10cSrcweir rLB.SelectEntryPos(i, sal_True); 181cdf0e10cSrcweir return sal_True; 182cdf0e10cSrcweir } 183cdf0e10cSrcweir } 184cdf0e10cSrcweir if(LISTBOX_ENTRY_NOTFOUND != nSelPos) 185cdf0e10cSrcweir rLB.SelectEntryPos(nSelPos, sal_False); 186cdf0e10cSrcweir return sal_False; 187cdf0e10cSrcweir } 188cdf0e10cSrcweir 189cdf0e10cSrcweir /* -----------------23.11.98 10:46------------------- 190cdf0e10cSrcweir * 191cdf0e10cSrcweir * --------------------------------------------------*/ 192cdf0e10cSrcweir IMPL_LINK(OfaAutoCorrDlg, SelectLanguageHdl, ListBox*, pBox) 193cdf0e10cSrcweir { 194cdf0e10cSrcweir sal_uInt16 nPos = pBox->GetSelectEntryPos(); 195cdf0e10cSrcweir void* pVoid = pBox->GetEntryData(nPos); 196cdf0e10cSrcweir LanguageType eNewLang = (LanguageType)(long)pVoid; 197cdf0e10cSrcweir //alte Einstellungen speichern und neu fuellen 198cdf0e10cSrcweir if(eNewLang != eLastDialogLanguage) 199cdf0e10cSrcweir { 200cdf0e10cSrcweir sal_uInt16 nPageId = GetCurPageId(); 201cdf0e10cSrcweir if(RID_OFAPAGE_AUTOCORR_REPLACE == nPageId) 202cdf0e10cSrcweir ((OfaAutocorrReplacePage*)GetTabPage( nPageId ))->SetLanguage(eNewLang); 203cdf0e10cSrcweir else if(RID_OFAPAGE_AUTOCORR_EXCEPT == nPageId) 204cdf0e10cSrcweir ((OfaAutocorrExceptPage*)GetTabPage( nPageId ))->SetLanguage(eNewLang); 205cdf0e10cSrcweir } 206cdf0e10cSrcweir return 0; 207cdf0e10cSrcweir } 208cdf0e10cSrcweir /*-----------------14.10.96 15.57------------------- 209cdf0e10cSrcweir 210cdf0e10cSrcweir --------------------------------------------------*/ 211cdf0e10cSrcweir 212cdf0e10cSrcweir OfaAutocorrOptionsPage::OfaAutocorrOptionsPage( Window* pParent, 213cdf0e10cSrcweir const SfxItemSet& rSet ) : 214cdf0e10cSrcweir SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCORR_OPTIONS ), rSet), 215cdf0e10cSrcweir aCheckLB (this, CUI_RES(CLB_SETTINGS )), 216cdf0e10cSrcweir 217cdf0e10cSrcweir sInput (CUI_RES(ST_USE_REPLACE )), 218cdf0e10cSrcweir sDoubleCaps (CUI_RES(ST_CPTL_STT_WORD )), 219cdf0e10cSrcweir sStartCap (CUI_RES(ST_CPTL_STT_SENT )), 220cdf0e10cSrcweir sBoldUnderline (CUI_RES(ST_BOLD_UNDER )), 221cdf0e10cSrcweir sURL (CUI_RES(ST_DETECT_URL )), 222cdf0e10cSrcweir sNoDblSpaces (CUI_RES(STR_NO_DBL_SPACES )), 223cdf0e10cSrcweir sDash (CUI_RES(ST_DASH )) 224cdf0e10cSrcweir { 225cdf0e10cSrcweir FreeResource(); 226cdf0e10cSrcweir 227cdf0e10cSrcweir aCheckLB.SetHelpId(HID_OFAPAGE_AUTOCORR_CLB); 228cdf0e10cSrcweir } 229cdf0e10cSrcweir 230cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 231cdf0e10cSrcweir 232cdf0e10cSrcweir --------------------------------------------------*/ 233cdf0e10cSrcweir 234cdf0e10cSrcweir 235cdf0e10cSrcweir OfaAutocorrOptionsPage::~OfaAutocorrOptionsPage() 236cdf0e10cSrcweir { 237cdf0e10cSrcweir } 238cdf0e10cSrcweir 239cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 240cdf0e10cSrcweir 241cdf0e10cSrcweir --------------------------------------------------*/ 242cdf0e10cSrcweir 243cdf0e10cSrcweir 244cdf0e10cSrcweir SfxTabPage* OfaAutocorrOptionsPage::Create( Window* pParent, 245cdf0e10cSrcweir const SfxItemSet& rSet) 246cdf0e10cSrcweir { 247cdf0e10cSrcweir return new OfaAutocorrOptionsPage(pParent, rSet); 248cdf0e10cSrcweir } 249cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 250cdf0e10cSrcweir 251cdf0e10cSrcweir --------------------------------------------------*/ 252cdf0e10cSrcweir 253cdf0e10cSrcweir 254cdf0e10cSrcweir sal_Bool OfaAutocorrOptionsPage::FillItemSet( SfxItemSet& ) 255cdf0e10cSrcweir { 256cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 257cdf0e10cSrcweir long nFlags = pAutoCorrect->GetFlags(); 258cdf0e10cSrcweir 259cdf0e10cSrcweir sal_uInt16 nPos = 0; 260cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(Autocorrect, aCheckLB.IsChecked(nPos++)); 261cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(CptlSttWrd, aCheckLB.IsChecked(nPos++)); 262cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(CptlSttSntnc, aCheckLB.IsChecked(nPos++)); 263cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(ChgWeightUnderl, aCheckLB.IsChecked(nPos++)); 264cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(SetINetAttr, aCheckLB.IsChecked(nPos++)); 265cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(ChgToEnEmDash, aCheckLB.IsChecked(nPos++)); 266cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(IgnoreDoubleSpace, aCheckLB.IsChecked(nPos++)); 267cdf0e10cSrcweir 268cdf0e10cSrcweir sal_Bool bReturn = nFlags != pAutoCorrect->GetFlags(); 269cdf0e10cSrcweir if(bReturn ) 270cdf0e10cSrcweir { 271cdf0e10cSrcweir SvxAutoCorrCfg* pCfg = SvxAutoCorrCfg::Get(); 272cdf0e10cSrcweir pCfg->SetModified(); 273cdf0e10cSrcweir pCfg->Commit(); 274cdf0e10cSrcweir } 275cdf0e10cSrcweir return bReturn; 276cdf0e10cSrcweir } 277cdf0e10cSrcweir 278cdf0e10cSrcweir /* -----------------23.11.98 16:15------------------- 279cdf0e10cSrcweir * 280cdf0e10cSrcweir * --------------------------------------------------*/ 281cdf0e10cSrcweir void OfaAutocorrOptionsPage::ActivatePage( const SfxItemSet& ) 282cdf0e10cSrcweir { 283cdf0e10cSrcweir ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_False); 284cdf0e10cSrcweir } 285cdf0e10cSrcweir 286cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 287cdf0e10cSrcweir 288cdf0e10cSrcweir --------------------------------------------------*/ 289cdf0e10cSrcweir 290cdf0e10cSrcweir 291cdf0e10cSrcweir void OfaAutocorrOptionsPage::Reset( const SfxItemSet& ) 292cdf0e10cSrcweir { 293cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 294cdf0e10cSrcweir const long nFlags = pAutoCorrect->GetFlags(); 295cdf0e10cSrcweir 296cdf0e10cSrcweir aCheckLB.SetUpdateMode(sal_False); 297cdf0e10cSrcweir aCheckLB.Clear(); 298cdf0e10cSrcweir 299cdf0e10cSrcweir aCheckLB.InsertEntry(sInput); 300cdf0e10cSrcweir aCheckLB.InsertEntry(sDoubleCaps); 301cdf0e10cSrcweir aCheckLB.InsertEntry(sStartCap); 302cdf0e10cSrcweir aCheckLB.InsertEntry(sBoldUnderline); 303cdf0e10cSrcweir aCheckLB.InsertEntry(sURL); 304cdf0e10cSrcweir aCheckLB.InsertEntry(sDash); 305cdf0e10cSrcweir aCheckLB.InsertEntry(sNoDblSpaces); 306cdf0e10cSrcweir 307cdf0e10cSrcweir sal_uInt16 nPos = 0; 308cdf0e10cSrcweir aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & Autocorrect) ); 309cdf0e10cSrcweir aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & CptlSttWrd) ); 310cdf0e10cSrcweir aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & CptlSttSntnc) ); 311cdf0e10cSrcweir aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgWeightUnderl) ); 312cdf0e10cSrcweir aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & SetINetAttr) ); 313cdf0e10cSrcweir aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgToEnEmDash) ); 314cdf0e10cSrcweir aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & IgnoreDoubleSpace) ); 315cdf0e10cSrcweir 316cdf0e10cSrcweir aCheckLB.SetUpdateMode(sal_True); 317cdf0e10cSrcweir } 318cdf0e10cSrcweir 319cdf0e10cSrcweir /*********************************************************************/ 320cdf0e10cSrcweir /* */ 321cdf0e10cSrcweir /* Hilfs-struct fuer dUserDaten der Checklistbox */ 322cdf0e10cSrcweir /* */ 323cdf0e10cSrcweir /*********************************************************************/ 324cdf0e10cSrcweir 325cdf0e10cSrcweir struct ImpUserData 326cdf0e10cSrcweir { 327cdf0e10cSrcweir String *pString; 328cdf0e10cSrcweir Font* pFont; 329cdf0e10cSrcweir 330cdf0e10cSrcweir ImpUserData(String* pText, Font* pFnt) 331cdf0e10cSrcweir { pString = pText; pFont = pFnt;} 332cdf0e10cSrcweir }; 333cdf0e10cSrcweir 334cdf0e10cSrcweir 335cdf0e10cSrcweir /*********************************************************************/ 336cdf0e10cSrcweir /* */ 337cdf0e10cSrcweir /* Dialog fuer Prozenteinstellung */ 338cdf0e10cSrcweir /* */ 339cdf0e10cSrcweir /*********************************************************************/ 340cdf0e10cSrcweir 341cdf0e10cSrcweir class OfaAutoFmtPrcntSet : public ModalDialog 342cdf0e10cSrcweir { 343cdf0e10cSrcweir OKButton aOKPB; 344cdf0e10cSrcweir CancelButton aCancelPB; 345cdf0e10cSrcweir FixedLine aPrcntFL; 346cdf0e10cSrcweir MetricField aPrcntMF; 347cdf0e10cSrcweir 348cdf0e10cSrcweir public: 349cdf0e10cSrcweir OfaAutoFmtPrcntSet(Window* pParent) : 350cdf0e10cSrcweir ModalDialog(pParent, CUI_RES(RID_OFADLG_PRCNT_SET)), 351cdf0e10cSrcweir aOKPB(this, CUI_RES(BT_OK)), 352cdf0e10cSrcweir aCancelPB(this, CUI_RES(BT_CANCEL)), 353cdf0e10cSrcweir aPrcntFL(this, CUI_RES(FL_PRCNT)), 354cdf0e10cSrcweir aPrcntMF(this, CUI_RES(ED_RIGHT_MARGIN)) 355cdf0e10cSrcweir { 356cdf0e10cSrcweir FreeResource(); 357cdf0e10cSrcweir } 358cdf0e10cSrcweir MetricField& GetPrcntFld(){return aPrcntMF;} 359cdf0e10cSrcweir }; 360cdf0e10cSrcweir 361cdf0e10cSrcweir 362cdf0e10cSrcweir /*********************************************************************/ 363cdf0e10cSrcweir /* */ 364cdf0e10cSrcweir /* veraenderter LBoxString */ 365cdf0e10cSrcweir /* */ 366cdf0e10cSrcweir /*********************************************************************/ 367cdf0e10cSrcweir 368cdf0e10cSrcweir class OfaImpBrwString : public SvLBoxString 369cdf0e10cSrcweir { 370cdf0e10cSrcweir public: 371cdf0e10cSrcweir 372cdf0e10cSrcweir OfaImpBrwString( SvLBoxEntry* pEntry, sal_uInt16 nFlags, 373cdf0e10cSrcweir const String& rStr ) : SvLBoxString(pEntry,nFlags,rStr){} 374cdf0e10cSrcweir 375cdf0e10cSrcweir virtual void Paint( const Point& rPos, SvLBox& rDev, sal_uInt16 nFlags, 376cdf0e10cSrcweir SvLBoxEntry* pEntry); 377cdf0e10cSrcweir }; 378cdf0e10cSrcweir 379cdf0e10cSrcweir /*********************************************************************/ 380cdf0e10cSrcweir /* */ 381cdf0e10cSrcweir /*********************************************************************/ 382cdf0e10cSrcweir 383cdf0e10cSrcweir 384cdf0e10cSrcweir void __EXPORT OfaImpBrwString::Paint( const Point& rPos, SvLBox& rDev, sal_uInt16 /*nFlags*/, 385cdf0e10cSrcweir SvLBoxEntry* pEntry ) 386cdf0e10cSrcweir { 387cdf0e10cSrcweir rDev.DrawText( rPos, GetText() ); 388cdf0e10cSrcweir if(pEntry->GetUserData()) 389cdf0e10cSrcweir { 390cdf0e10cSrcweir ImpUserData* pUserData = (ImpUserData* )pEntry->GetUserData(); 391cdf0e10cSrcweir Point aNewPos(rPos); 392cdf0e10cSrcweir aNewPos.X() += rDev.GetTextWidth(GetText()); 393cdf0e10cSrcweir Font aOldFont( rDev.GetFont()); 394cdf0e10cSrcweir Font aFont( aOldFont ); 395cdf0e10cSrcweir if(pUserData->pFont) 396cdf0e10cSrcweir { 397cdf0e10cSrcweir aFont = *pUserData->pFont; 398cdf0e10cSrcweir aFont.SetColor(aOldFont.GetColor()); 399cdf0e10cSrcweir aFont.SetSize(aOldFont.GetSize()); 400cdf0e10cSrcweir } 401cdf0e10cSrcweir aFont.SetWeight( WEIGHT_BOLD ); 402cdf0e10cSrcweir 403cdf0e10cSrcweir sal_Bool bFett = sal_True; 404cdf0e10cSrcweir sal_uInt16 nPos = 0; 405cdf0e10cSrcweir do { 406cdf0e10cSrcweir String sTxt( pUserData->pString->GetToken( 0, 1, nPos )); 407cdf0e10cSrcweir 408cdf0e10cSrcweir if( bFett ) 409cdf0e10cSrcweir rDev.SetFont( aFont ); 410cdf0e10cSrcweir 411cdf0e10cSrcweir rDev.DrawText( aNewPos, sTxt ); 412cdf0e10cSrcweir 413cdf0e10cSrcweir if( STRING_NOTFOUND != nPos ) 414cdf0e10cSrcweir aNewPos.X() += rDev.GetTextWidth( sTxt ); 415cdf0e10cSrcweir 416cdf0e10cSrcweir if( bFett ) 417cdf0e10cSrcweir rDev.SetFont( aOldFont ); 418cdf0e10cSrcweir 419cdf0e10cSrcweir bFett = !bFett; 420cdf0e10cSrcweir } while( STRING_NOTFOUND != nPos ); 421cdf0e10cSrcweir } 422cdf0e10cSrcweir } 423cdf0e10cSrcweir 424cdf0e10cSrcweir /*********************************************************************/ 425cdf0e10cSrcweir /* */ 426cdf0e10cSrcweir /* TabPage Autoformat anwenden */ 427cdf0e10cSrcweir /* */ 428cdf0e10cSrcweir /*********************************************************************/ 429cdf0e10cSrcweir 430cdf0e10cSrcweir #define CBCOL_FIRST 0 431cdf0e10cSrcweir #define CBCOL_SECOND 1 432cdf0e10cSrcweir #define CBCOL_BOTH 2 433cdf0e10cSrcweir 434cdf0e10cSrcweir enum OfaAutoFmtOptions 435cdf0e10cSrcweir { 436cdf0e10cSrcweir USE_REPLACE_TABLE, 437cdf0e10cSrcweir CORR_UPPER, 438cdf0e10cSrcweir BEGIN_UPPER, 439cdf0e10cSrcweir BOLD_UNDERLINE, 440cdf0e10cSrcweir DETECT_URL, 441cdf0e10cSrcweir REPLACE_DASHES, 442cdf0e10cSrcweir DEL_SPACES_AT_STT_END, 443cdf0e10cSrcweir DEL_SPACES_BETWEEN_LINES, 444cdf0e10cSrcweir IGNORE_DBLSPACE, 445cdf0e10cSrcweir APPLY_NUMBERING, 446cdf0e10cSrcweir INSERT_BORDER, 447cdf0e10cSrcweir CREATE_TABLE, 448cdf0e10cSrcweir REPLACE_STYLES, 449cdf0e10cSrcweir DEL_EMPTY_NODE, 450cdf0e10cSrcweir REPLACE_USER_COLL, 451cdf0e10cSrcweir REPLACE_BULLETS, 452cdf0e10cSrcweir MERGE_SINGLE_LINE_PARA 453cdf0e10cSrcweir }; 454cdf0e10cSrcweir 455cdf0e10cSrcweir OfaSwAutoFmtOptionsPage::OfaSwAutoFmtOptionsPage( Window* pParent, 456cdf0e10cSrcweir const SfxItemSet& rSet ) : 457cdf0e10cSrcweir SfxTabPage(pParent, CUI_RES(RID_OFAPAGE_AUTOFMT_APPLY), rSet), 458cdf0e10cSrcweir aCheckLB (this, CUI_RES(CLB_SETTINGS)), 459cdf0e10cSrcweir aEditPB (this, CUI_RES(PB_EDIT)), 460cdf0e10cSrcweir aHeader1Expl (this, CUI_RES(FT_HEADER1_EXPLANATION)), 461cdf0e10cSrcweir aHeader2Expl (this, CUI_RES(FT_HEADER2_EXPLANATION)), 462cdf0e10cSrcweir sHeader1 (CUI_RES( STR_HEADER1 )), 463cdf0e10cSrcweir sHeader2 (CUI_RES( STR_HEADER2 )), 464cdf0e10cSrcweir sDeleteEmptyPara (CUI_RES( ST_DEL_EMPTY_PARA)), 465cdf0e10cSrcweir sUseReplaceTbl (CUI_RES( ST_USE_REPLACE )), 466cdf0e10cSrcweir sCptlSttWord (CUI_RES( ST_CPTL_STT_WORD)), 467cdf0e10cSrcweir sCptlSttSent (CUI_RES( ST_CPTL_STT_SENT)), 468cdf0e10cSrcweir sUserStyle (CUI_RES( ST_USER_STYLE )), 469cdf0e10cSrcweir sBullet (CUI_RES( ST_BULLET )), 470cdf0e10cSrcweir sBoldUnder (CUI_RES( ST_BOLD_UNDER )), 471cdf0e10cSrcweir sNoDblSpaces (CUI_RES( STR_NO_DBL_SPACES)), 472cdf0e10cSrcweir sDetectURL (CUI_RES( ST_DETECT_URL )), 473cdf0e10cSrcweir sDash (CUI_RES( ST_DASH )), 474cdf0e10cSrcweir sRightMargin (CUI_RES( ST_RIGHT_MARGIN )), 475cdf0e10cSrcweir sNum (CUI_RES( STR_NUM )), 476cdf0e10cSrcweir sBorder (CUI_RES( STR_BORDER )), 477cdf0e10cSrcweir sTable (CUI_RES( STR_TABLE )), 478cdf0e10cSrcweir sReplaceTemplates (CUI_RES( STR_REPLACE_TEMPLATES)), 479cdf0e10cSrcweir sDelSpaceAtSttEnd (CUI_RES( STR_DEL_SPACES_AT_STT_END)), 480cdf0e10cSrcweir sDelSpaceBetweenLines(CUI_RES(STR_DEL_SPACES_BETWEEN_LINES)), 481cdf0e10cSrcweir 482cdf0e10cSrcweir nPercent ( 50 ), 483cdf0e10cSrcweir pCheckButtonData( NULL ) 484cdf0e10cSrcweir 485cdf0e10cSrcweir { 486cdf0e10cSrcweir FreeResource(); 487cdf0e10cSrcweir 488cdf0e10cSrcweir //typ. Anfuehrungszeichen einsetzen 489cdf0e10cSrcweir SvtSysLocale aSysLcl; 490cdf0e10cSrcweir 491cdf0e10cSrcweir aCheckLB.SetHelpId(HID_OFAPAGE_AUTOFORMAT_CLB); 492cdf0e10cSrcweir aCheckLB.SetStyle(aCheckLB.GetStyle()|WB_HSCROLL| WB_VSCROLL); 493cdf0e10cSrcweir 494cdf0e10cSrcweir aCheckLB.SetSelectHdl(LINK(this, OfaSwAutoFmtOptionsPage, SelectHdl)); 495cdf0e10cSrcweir aCheckLB.SetDoubleClickHdl(LINK(this, OfaSwAutoFmtOptionsPage, EditHdl)); 496cdf0e10cSrcweir 497cdf0e10cSrcweir static long aStaticTabs[]= 498cdf0e10cSrcweir { 499cdf0e10cSrcweir 3, 0, 20, 40 500cdf0e10cSrcweir }; 501cdf0e10cSrcweir 502cdf0e10cSrcweir aCheckLB.SvxSimpleTable::SetTabs(aStaticTabs); 503cdf0e10cSrcweir String sHeader( sHeader1 ); 504cdf0e10cSrcweir sHeader += '\t'; 505cdf0e10cSrcweir sHeader += sHeader2; 506cdf0e10cSrcweir sHeader += '\t'; 507cdf0e10cSrcweir aCheckLB.InsertHeaderEntry( sHeader, HEADERBAR_APPEND, 508cdf0e10cSrcweir HIB_CENTER | HIB_VCENTER | HIB_FIXEDPOS | HIB_FIXED); 509cdf0e10cSrcweir 510cdf0e10cSrcweir aEditPB.SetClickHdl(LINK(this, OfaSwAutoFmtOptionsPage, EditHdl)); 511cdf0e10cSrcweir } 512cdf0e10cSrcweir 513cdf0e10cSrcweir /*********************************************************************/ 514cdf0e10cSrcweir /* */ 515cdf0e10cSrcweir /*********************************************************************/ 516cdf0e10cSrcweir 517cdf0e10cSrcweir SvLBoxEntry* OfaSwAutoFmtOptionsPage::CreateEntry(String& rTxt, sal_uInt16 nCol) 518cdf0e10cSrcweir { 519cdf0e10cSrcweir SvLBoxEntry* pEntry = new SvLBoxEntry; 520cdf0e10cSrcweir 521cdf0e10cSrcweir if ( !pCheckButtonData ) 522cdf0e10cSrcweir { 523cdf0e10cSrcweir pCheckButtonData = new SvLBoxButtonData( &aCheckLB ); 524cdf0e10cSrcweir aCheckLB.SetCheckButtonData( pCheckButtonData ); 525cdf0e10cSrcweir } 526cdf0e10cSrcweir 527cdf0e10cSrcweir pEntry->AddItem( new SvLBoxContextBmp( pEntry, 0, Image(), Image(), 0)); // Sonst Puff! 528cdf0e10cSrcweir 529cdf0e10cSrcweir String sEmpty; 530cdf0e10cSrcweir if (nCol == CBCOL_SECOND) 531cdf0e10cSrcweir pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte 532cdf0e10cSrcweir else 533cdf0e10cSrcweir pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) ); 534cdf0e10cSrcweir 535cdf0e10cSrcweir if (nCol == CBCOL_FIRST) 536cdf0e10cSrcweir pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte 537cdf0e10cSrcweir else 538cdf0e10cSrcweir pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) ); 539cdf0e10cSrcweir pEntry->AddItem( new OfaImpBrwString( pEntry, 0, rTxt ) ); 540cdf0e10cSrcweir 541cdf0e10cSrcweir return pEntry; 542cdf0e10cSrcweir } 543cdf0e10cSrcweir 544cdf0e10cSrcweir /*********************************************************************/ 545cdf0e10cSrcweir /* */ 546cdf0e10cSrcweir /*********************************************************************/ 547cdf0e10cSrcweir 548cdf0e10cSrcweir 549cdf0e10cSrcweir __EXPORT OfaSwAutoFmtOptionsPage::~OfaSwAutoFmtOptionsPage() 550cdf0e10cSrcweir { 551cdf0e10cSrcweir delete (ImpUserData*) aCheckLB.GetUserData( REPLACE_BULLETS ); 552cdf0e10cSrcweir delete (ImpUserData*) aCheckLB.GetUserData( APPLY_NUMBERING ); 553cdf0e10cSrcweir delete (ImpUserData*) aCheckLB.GetUserData( MERGE_SINGLE_LINE_PARA ); 554cdf0e10cSrcweir delete pCheckButtonData; 555cdf0e10cSrcweir } 556cdf0e10cSrcweir 557cdf0e10cSrcweir /*********************************************************************/ 558cdf0e10cSrcweir /* */ 559cdf0e10cSrcweir /*********************************************************************/ 560cdf0e10cSrcweir 561cdf0e10cSrcweir SfxTabPage* __EXPORT OfaSwAutoFmtOptionsPage::Create( Window* pParent, 562cdf0e10cSrcweir const SfxItemSet& rAttrSet) 563cdf0e10cSrcweir { 564cdf0e10cSrcweir return new OfaSwAutoFmtOptionsPage(pParent, rAttrSet); 565cdf0e10cSrcweir } 566cdf0e10cSrcweir 567cdf0e10cSrcweir /*********************************************************************/ 568cdf0e10cSrcweir /* */ 569cdf0e10cSrcweir /*********************************************************************/ 570cdf0e10cSrcweir 571cdf0e10cSrcweir sal_Bool OfaSwAutoFmtOptionsPage::FillItemSet( SfxItemSet& ) 572cdf0e10cSrcweir { 573cdf0e10cSrcweir sal_Bool bModified = sal_False; 574cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 575cdf0e10cSrcweir SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags(); 576cdf0e10cSrcweir long nFlags = pAutoCorrect->GetFlags(); 577cdf0e10cSrcweir 578cdf0e10cSrcweir sal_Bool bCheck = aCheckLB.IsChecked(USE_REPLACE_TABLE, CBCOL_FIRST); 579cdf0e10cSrcweir bModified |= pOpt->bAutoCorrect != bCheck; 580cdf0e10cSrcweir pOpt->bAutoCorrect = bCheck; 581cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(Autocorrect, 582cdf0e10cSrcweir aCheckLB.IsChecked(USE_REPLACE_TABLE, CBCOL_SECOND)); 583cdf0e10cSrcweir 584cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(CORR_UPPER, CBCOL_FIRST); 585cdf0e10cSrcweir bModified |= pOpt->bCptlSttWrd != bCheck; 586cdf0e10cSrcweir pOpt->bCptlSttWrd = bCheck; 587cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(CptlSttWrd, 588cdf0e10cSrcweir aCheckLB.IsChecked(CORR_UPPER, CBCOL_SECOND)); 589cdf0e10cSrcweir 590cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(BEGIN_UPPER, CBCOL_FIRST); 591cdf0e10cSrcweir bModified |= pOpt->bCptlSttSntnc != bCheck; 592cdf0e10cSrcweir pOpt->bCptlSttSntnc = bCheck; 593cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(CptlSttSntnc, 594cdf0e10cSrcweir aCheckLB.IsChecked(BEGIN_UPPER, CBCOL_SECOND)); 595cdf0e10cSrcweir 596cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(BOLD_UNDERLINE, CBCOL_FIRST); 597cdf0e10cSrcweir bModified |= pOpt->bChgWeightUnderl != bCheck; 598cdf0e10cSrcweir pOpt->bChgWeightUnderl = bCheck; 599cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(ChgWeightUnderl, 600cdf0e10cSrcweir aCheckLB.IsChecked(BOLD_UNDERLINE, CBCOL_SECOND)); 601cdf0e10cSrcweir 602cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(IgnoreDoubleSpace, 603cdf0e10cSrcweir aCheckLB.IsChecked(IGNORE_DBLSPACE, CBCOL_SECOND)); 604cdf0e10cSrcweir 605cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(DETECT_URL, CBCOL_FIRST); 606cdf0e10cSrcweir bModified |= pOpt->bSetINetAttr != bCheck; 607cdf0e10cSrcweir pOpt->bSetINetAttr = bCheck; 608cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(SetINetAttr, 609cdf0e10cSrcweir aCheckLB.IsChecked(DETECT_URL, CBCOL_SECOND)); 610cdf0e10cSrcweir 611cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(DEL_EMPTY_NODE, CBCOL_FIRST); 612cdf0e10cSrcweir bModified |= pOpt->bDelEmptyNode != bCheck; 613cdf0e10cSrcweir pOpt->bDelEmptyNode = bCheck; 614cdf0e10cSrcweir 615cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(REPLACE_USER_COLL, CBCOL_FIRST); 616cdf0e10cSrcweir bModified |= pOpt->bChgUserColl != bCheck; 617cdf0e10cSrcweir pOpt->bChgUserColl = bCheck; 618cdf0e10cSrcweir 619cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(REPLACE_BULLETS, CBCOL_FIRST); 620cdf0e10cSrcweir bModified |= pOpt->bChgEnumNum != bCheck; 621cdf0e10cSrcweir pOpt->bChgEnumNum = bCheck; 622cdf0e10cSrcweir bModified |= aBulletFont != pOpt->aBulletFont; 623cdf0e10cSrcweir pOpt->aBulletFont = aBulletFont; 624cdf0e10cSrcweir bModified |= String(pOpt->cBullet) != sBulletChar; 625cdf0e10cSrcweir pOpt->cBullet = sBulletChar.GetChar(0); 626cdf0e10cSrcweir 627cdf0e10cSrcweir bModified |= aByInputBulletFont != pOpt->aByInputBulletFont; 628cdf0e10cSrcweir bModified |= String(pOpt->cByInputBullet) != sByInputBulletChar; 629cdf0e10cSrcweir pOpt->aByInputBulletFont = aByInputBulletFont; 630cdf0e10cSrcweir pOpt->cByInputBullet = sByInputBulletChar.GetChar(0); 631cdf0e10cSrcweir 632cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(MERGE_SINGLE_LINE_PARA, CBCOL_FIRST); 633cdf0e10cSrcweir bModified |= pOpt->bRightMargin != bCheck; 634cdf0e10cSrcweir pOpt->bRightMargin = bCheck; 635cdf0e10cSrcweir bModified |= nPercent != pOpt->nRightMargin; 636cdf0e10cSrcweir pOpt->nRightMargin = (sal_uInt8)nPercent; 637cdf0e10cSrcweir 638cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(APPLY_NUMBERING, CBCOL_SECOND); 639cdf0e10cSrcweir bModified |= pOpt->bSetNumRule != bCheck; 640cdf0e10cSrcweir pOpt->bSetNumRule = bCheck; 641cdf0e10cSrcweir 642cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(INSERT_BORDER, CBCOL_SECOND); 643cdf0e10cSrcweir bModified |= pOpt->bSetBorder != bCheck; 644cdf0e10cSrcweir pOpt->bSetBorder = bCheck; 645cdf0e10cSrcweir 646cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(CREATE_TABLE, CBCOL_SECOND); 647cdf0e10cSrcweir bModified |= pOpt->bCreateTable != bCheck; 648cdf0e10cSrcweir pOpt->bCreateTable = bCheck; 649cdf0e10cSrcweir 650cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(REPLACE_STYLES, CBCOL_SECOND); 651cdf0e10cSrcweir bModified |= pOpt->bReplaceStyles != bCheck; 652cdf0e10cSrcweir pOpt->bReplaceStyles = bCheck; 653cdf0e10cSrcweir 654cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(REPLACE_DASHES, CBCOL_FIRST); 655cdf0e10cSrcweir bModified |= pOpt->bChgToEnEmDash != bCheck; 656cdf0e10cSrcweir pOpt->bChgToEnEmDash = bCheck; 657cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(ChgToEnEmDash, 658cdf0e10cSrcweir aCheckLB.IsChecked(REPLACE_DASHES, CBCOL_SECOND)); 659cdf0e10cSrcweir 660cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(DEL_SPACES_AT_STT_END, CBCOL_FIRST); 661cdf0e10cSrcweir bModified |= pOpt->bAFmtDelSpacesAtSttEnd != bCheck; 662cdf0e10cSrcweir pOpt->bAFmtDelSpacesAtSttEnd = bCheck; 663cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(DEL_SPACES_AT_STT_END, CBCOL_SECOND); 664cdf0e10cSrcweir bModified |= pOpt->bAFmtByInpDelSpacesAtSttEnd != bCheck; 665cdf0e10cSrcweir pOpt->bAFmtByInpDelSpacesAtSttEnd = bCheck; 666cdf0e10cSrcweir 667cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(DEL_SPACES_BETWEEN_LINES, CBCOL_FIRST); 668cdf0e10cSrcweir bModified |= pOpt->bAFmtDelSpacesBetweenLines != bCheck; 669cdf0e10cSrcweir pOpt->bAFmtDelSpacesBetweenLines = bCheck; 670cdf0e10cSrcweir bCheck = aCheckLB.IsChecked(DEL_SPACES_BETWEEN_LINES, CBCOL_SECOND); 671cdf0e10cSrcweir bModified |= pOpt->bAFmtByInpDelSpacesBetweenLines != bCheck; 672cdf0e10cSrcweir pOpt->bAFmtByInpDelSpacesBetweenLines = bCheck; 673cdf0e10cSrcweir 674cdf0e10cSrcweir if(bModified || nFlags != pAutoCorrect->GetFlags()) 675cdf0e10cSrcweir { 676cdf0e10cSrcweir SvxAutoCorrCfg* pCfg = SvxAutoCorrCfg::Get(); 677cdf0e10cSrcweir pCfg->SetModified(); 678cdf0e10cSrcweir pCfg->Commit(); 679cdf0e10cSrcweir } 680cdf0e10cSrcweir 681cdf0e10cSrcweir return sal_True; 682cdf0e10cSrcweir } 683cdf0e10cSrcweir 684cdf0e10cSrcweir /* -----------------23.11.98 16:15------------------- 685cdf0e10cSrcweir * 686cdf0e10cSrcweir * --------------------------------------------------*/ 687cdf0e10cSrcweir void OfaSwAutoFmtOptionsPage::ActivatePage( const SfxItemSet& ) 688cdf0e10cSrcweir { 689cdf0e10cSrcweir ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_False); 690cdf0e10cSrcweir } 691cdf0e10cSrcweir 692cdf0e10cSrcweir /*********************************************************************/ 693cdf0e10cSrcweir /* */ 694cdf0e10cSrcweir /*********************************************************************/ 695cdf0e10cSrcweir 696cdf0e10cSrcweir 697cdf0e10cSrcweir void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet& ) 698cdf0e10cSrcweir { 699cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 700cdf0e10cSrcweir SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags(); 701cdf0e10cSrcweir const long nFlags = pAutoCorrect->GetFlags(); 702cdf0e10cSrcweir 703cdf0e10cSrcweir aCheckLB.SetUpdateMode(sal_False); 704cdf0e10cSrcweir aCheckLB.Clear(); 705cdf0e10cSrcweir 706cdf0e10cSrcweir // Die folgenden Eintraege muessen in der selben Reihenfolge, wie im 707cdf0e10cSrcweir // OfaAutoFmtOptions-enum eingefuegt werden! 708cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sUseReplaceTbl, CBCOL_BOTH )); 709cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sCptlSttWord, CBCOL_BOTH )); 710cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sCptlSttSent, CBCOL_BOTH )); 711cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sBoldUnder, CBCOL_BOTH )); 712cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sDetectURL, CBCOL_BOTH )); 713cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sDash, CBCOL_BOTH )); 714cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sDelSpaceAtSttEnd, CBCOL_BOTH )); 715cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sDelSpaceBetweenLines, CBCOL_BOTH )); 716cdf0e10cSrcweir 717cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sNoDblSpaces, CBCOL_SECOND)); 718cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sNum, CBCOL_SECOND)); 719cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sBorder, CBCOL_SECOND)); 720cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sTable, CBCOL_SECOND)); 721cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sReplaceTemplates, CBCOL_SECOND)); 722cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sDeleteEmptyPara, CBCOL_FIRST )); 723cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sUserStyle, CBCOL_FIRST )); 724cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sBullet, CBCOL_FIRST )); 725cdf0e10cSrcweir aCheckLB.GetModel()->Insert(CreateEntry(sRightMargin, CBCOL_FIRST )); 726cdf0e10cSrcweir 727cdf0e10cSrcweir aCheckLB.CheckEntryPos( USE_REPLACE_TABLE, CBCOL_FIRST, pOpt->bAutoCorrect ); 728cdf0e10cSrcweir aCheckLB.CheckEntryPos( USE_REPLACE_TABLE, CBCOL_SECOND, 0 != (nFlags & Autocorrect)); 729cdf0e10cSrcweir aCheckLB.CheckEntryPos( CORR_UPPER, CBCOL_FIRST, pOpt->bCptlSttWrd ); 730cdf0e10cSrcweir aCheckLB.CheckEntryPos( CORR_UPPER, CBCOL_SECOND, 0 != (nFlags & CptlSttWrd) ); 731cdf0e10cSrcweir aCheckLB.CheckEntryPos( BEGIN_UPPER, CBCOL_FIRST, pOpt->bCptlSttSntnc ); 732cdf0e10cSrcweir aCheckLB.CheckEntryPos( BEGIN_UPPER, CBCOL_SECOND, 0 != (nFlags & CptlSttSntnc) ); 733cdf0e10cSrcweir aCheckLB.CheckEntryPos( BOLD_UNDERLINE, CBCOL_FIRST, pOpt->bChgWeightUnderl ); 734cdf0e10cSrcweir aCheckLB.CheckEntryPos( BOLD_UNDERLINE, CBCOL_SECOND, 0 != (nFlags & ChgWeightUnderl) ); 735cdf0e10cSrcweir aCheckLB.CheckEntryPos( IGNORE_DBLSPACE, CBCOL_SECOND, 0 != (nFlags & IgnoreDoubleSpace) ); 736cdf0e10cSrcweir aCheckLB.CheckEntryPos( DETECT_URL, CBCOL_FIRST, pOpt->bSetINetAttr ); 737cdf0e10cSrcweir aCheckLB.CheckEntryPos( DETECT_URL, CBCOL_SECOND, 0 != (nFlags & SetINetAttr) ); 738cdf0e10cSrcweir aCheckLB.CheckEntryPos( REPLACE_DASHES, CBCOL_FIRST, pOpt->bChgToEnEmDash ); 739cdf0e10cSrcweir aCheckLB.CheckEntryPos( REPLACE_DASHES, CBCOL_SECOND, 0 != (nFlags & ChgToEnEmDash) ); 740cdf0e10cSrcweir aCheckLB.CheckEntryPos( DEL_SPACES_AT_STT_END, CBCOL_FIRST, pOpt->bAFmtDelSpacesAtSttEnd ); 741cdf0e10cSrcweir aCheckLB.CheckEntryPos( DEL_SPACES_AT_STT_END, CBCOL_SECOND, pOpt->bAFmtByInpDelSpacesAtSttEnd ); 742cdf0e10cSrcweir aCheckLB.CheckEntryPos( DEL_SPACES_BETWEEN_LINES, CBCOL_FIRST, pOpt->bAFmtDelSpacesBetweenLines ); 743cdf0e10cSrcweir aCheckLB.CheckEntryPos( DEL_SPACES_BETWEEN_LINES, CBCOL_SECOND, pOpt->bAFmtByInpDelSpacesBetweenLines ); 744cdf0e10cSrcweir aCheckLB.CheckEntryPos( DEL_EMPTY_NODE, CBCOL_FIRST, pOpt->bDelEmptyNode ); 745cdf0e10cSrcweir aCheckLB.CheckEntryPos( REPLACE_USER_COLL, CBCOL_FIRST, pOpt->bChgUserColl ); 746cdf0e10cSrcweir aCheckLB.CheckEntryPos( REPLACE_BULLETS, CBCOL_FIRST, pOpt->bChgEnumNum ); 747cdf0e10cSrcweir 748cdf0e10cSrcweir aBulletFont = pOpt->aBulletFont; 749cdf0e10cSrcweir sBulletChar = pOpt->cBullet; 750cdf0e10cSrcweir ImpUserData* pUserData = new ImpUserData(&sBulletChar, &aBulletFont); 751cdf0e10cSrcweir aCheckLB.SetUserData( REPLACE_BULLETS, pUserData ); 752cdf0e10cSrcweir 753cdf0e10cSrcweir nPercent = pOpt->nRightMargin; 754cdf0e10cSrcweir sMargin = ' '; 755cdf0e10cSrcweir sMargin += String::CreateFromInt32( nPercent ); 756cdf0e10cSrcweir sMargin += '%'; 757cdf0e10cSrcweir pUserData = new ImpUserData(&sMargin, 0); 758cdf0e10cSrcweir aCheckLB.SetUserData( MERGE_SINGLE_LINE_PARA, pUserData ); 759cdf0e10cSrcweir 760cdf0e10cSrcweir aCheckLB.CheckEntryPos( APPLY_NUMBERING, CBCOL_SECOND, pOpt->bSetNumRule ); 761cdf0e10cSrcweir 762cdf0e10cSrcweir aByInputBulletFont = pOpt->aByInputBulletFont; 763cdf0e10cSrcweir sByInputBulletChar = pOpt->cByInputBullet; 764cdf0e10cSrcweir ImpUserData* pUserData2 = new ImpUserData(&sByInputBulletChar, &aByInputBulletFont); 765cdf0e10cSrcweir aCheckLB.SetUserData( APPLY_NUMBERING , pUserData2 ); 766cdf0e10cSrcweir 767cdf0e10cSrcweir aCheckLB.CheckEntryPos( MERGE_SINGLE_LINE_PARA, CBCOL_FIRST, pOpt->bRightMargin ); 768cdf0e10cSrcweir aCheckLB.CheckEntryPos( INSERT_BORDER, CBCOL_SECOND, pOpt->bSetBorder ); 769cdf0e10cSrcweir aCheckLB.CheckEntryPos( CREATE_TABLE, CBCOL_SECOND, pOpt->bCreateTable ); 770cdf0e10cSrcweir aCheckLB.CheckEntryPos( REPLACE_STYLES, CBCOL_SECOND, pOpt->bReplaceStyles ); 771cdf0e10cSrcweir 772cdf0e10cSrcweir aCheckLB.SetUpdateMode(sal_True); 773cdf0e10cSrcweir } 774cdf0e10cSrcweir 775cdf0e10cSrcweir /*********************************************************************/ 776cdf0e10cSrcweir /* */ 777cdf0e10cSrcweir /*********************************************************************/ 778cdf0e10cSrcweir 779cdf0e10cSrcweir IMPL_LINK(OfaSwAutoFmtOptionsPage, SelectHdl, OfaACorrCheckListBox*, pBox) 780cdf0e10cSrcweir { 781cdf0e10cSrcweir aEditPB.Enable(0 != pBox->FirstSelected()->GetUserData()); 782cdf0e10cSrcweir return 0; 783cdf0e10cSrcweir } 784cdf0e10cSrcweir 785cdf0e10cSrcweir /*********************************************************************/ 786cdf0e10cSrcweir /* */ 787cdf0e10cSrcweir /*********************************************************************/ 788cdf0e10cSrcweir 789cdf0e10cSrcweir IMPL_LINK(OfaSwAutoFmtOptionsPage, EditHdl, PushButton*, EMPTYARG) 790cdf0e10cSrcweir { 791cdf0e10cSrcweir sal_uLong nSelEntryPos = aCheckLB.GetSelectEntryPos(); 792cdf0e10cSrcweir if( nSelEntryPos == REPLACE_BULLETS || 793cdf0e10cSrcweir nSelEntryPos == APPLY_NUMBERING) 794cdf0e10cSrcweir { 795cdf0e10cSrcweir SvxCharacterMap *pMapDlg = new SvxCharacterMap(this); 796cdf0e10cSrcweir ImpUserData* pUserData = (ImpUserData*)aCheckLB.FirstSelected()->GetUserData(); 797cdf0e10cSrcweir pMapDlg->SetCharFont(*pUserData->pFont); 798cdf0e10cSrcweir pMapDlg->SetChar( pUserData->pString->GetChar(0) ); 799cdf0e10cSrcweir if(RET_OK == pMapDlg->Execute()) 800cdf0e10cSrcweir { 801cdf0e10cSrcweir Font aFont(pMapDlg->GetCharFont()); 802cdf0e10cSrcweir *pUserData->pFont = aFont; 803cdf0e10cSrcweir sal_UCS4 aChar = pMapDlg->GetChar(); 804cdf0e10cSrcweir // using the UCS4 constructor 805cdf0e10cSrcweir rtl::OUString aOUStr( &aChar, 1 ); 806cdf0e10cSrcweir *pUserData->pString = aOUStr; 807cdf0e10cSrcweir } 808cdf0e10cSrcweir delete pMapDlg; 809cdf0e10cSrcweir } 810cdf0e10cSrcweir else if( MERGE_SINGLE_LINE_PARA == nSelEntryPos ) 811cdf0e10cSrcweir { 812cdf0e10cSrcweir // Dialog fuer Prozenteinstellung 813cdf0e10cSrcweir OfaAutoFmtPrcntSet aDlg(this); 814cdf0e10cSrcweir aDlg.GetPrcntFld().SetValue(nPercent); 815cdf0e10cSrcweir if(RET_OK == aDlg.Execute()) 816cdf0e10cSrcweir { 817cdf0e10cSrcweir nPercent = (sal_uInt16)aDlg.GetPrcntFld().GetValue(); 818cdf0e10cSrcweir sMargin = ' '; 819cdf0e10cSrcweir sMargin += String::CreateFromInt32( nPercent ); 820cdf0e10cSrcweir sMargin += '%'; 821cdf0e10cSrcweir } 822cdf0e10cSrcweir } 823cdf0e10cSrcweir aCheckLB.Invalidate(); 824cdf0e10cSrcweir return 0; 825cdf0e10cSrcweir } 826cdf0e10cSrcweir 827cdf0e10cSrcweir /*********************************************************************/ 828cdf0e10cSrcweir /* */ 829cdf0e10cSrcweir /*********************************************************************/ 830cdf0e10cSrcweir 831cdf0e10cSrcweir void OfaACorrCheckListBox::SetTabs() 832cdf0e10cSrcweir { 833cdf0e10cSrcweir SvxSimpleTable::SetTabs(); 834cdf0e10cSrcweir sal_uInt16 nAdjust = SV_LBOXTAB_ADJUST_RIGHT|SV_LBOXTAB_ADJUST_LEFT|SV_LBOXTAB_ADJUST_CENTER|SV_LBOXTAB_ADJUST_NUMERIC|SV_LBOXTAB_FORCE; 835cdf0e10cSrcweir 836cdf0e10cSrcweir if( aTabs.Count() > 1 ) 837cdf0e10cSrcweir { 838cdf0e10cSrcweir SvLBoxTab* pTab = (SvLBoxTab*)aTabs.GetObject(1); 839cdf0e10cSrcweir pTab->nFlags &= ~nAdjust; 840cdf0e10cSrcweir pTab->nFlags |= SV_LBOXTAB_PUSHABLE|SV_LBOXTAB_ADJUST_CENTER|SV_LBOXTAB_FORCE; 841cdf0e10cSrcweir } 842cdf0e10cSrcweir if( aTabs.Count() > 2 ) 843cdf0e10cSrcweir { 844cdf0e10cSrcweir SvLBoxTab* pTab = (SvLBoxTab*)aTabs.GetObject(2); 845cdf0e10cSrcweir pTab->nFlags &= ~nAdjust; 846cdf0e10cSrcweir pTab->nFlags |= SV_LBOXTAB_PUSHABLE|SV_LBOXTAB_ADJUST_CENTER|SV_LBOXTAB_FORCE; 847cdf0e10cSrcweir } 848cdf0e10cSrcweir } 849cdf0e10cSrcweir 850cdf0e10cSrcweir /*********************************************************************/ 851cdf0e10cSrcweir /* */ 852cdf0e10cSrcweir /*********************************************************************/ 853cdf0e10cSrcweir 854cdf0e10cSrcweir void OfaACorrCheckListBox::CheckEntryPos(sal_uLong nPos, sal_uInt16 nCol, sal_Bool bChecked) 855cdf0e10cSrcweir { 856cdf0e10cSrcweir if ( nPos < GetEntryCount() ) 857cdf0e10cSrcweir SetCheckButtonState( 858cdf0e10cSrcweir GetEntry(nPos), 859cdf0e10cSrcweir nCol, 860cdf0e10cSrcweir bChecked ? SvButtonState( SV_BUTTON_CHECKED ) : 861cdf0e10cSrcweir SvButtonState( SV_BUTTON_UNCHECKED ) ); 862cdf0e10cSrcweir } 863cdf0e10cSrcweir 864cdf0e10cSrcweir /*********************************************************************/ 865cdf0e10cSrcweir /* */ 866cdf0e10cSrcweir /*********************************************************************/ 867cdf0e10cSrcweir 868cdf0e10cSrcweir sal_Bool OfaACorrCheckListBox::IsChecked(sal_uLong nPos, sal_uInt16 nCol) 869cdf0e10cSrcweir { 870cdf0e10cSrcweir return GetCheckButtonState( GetEntry(nPos), nCol ) == SV_BUTTON_CHECKED; 871cdf0e10cSrcweir } 872cdf0e10cSrcweir 873cdf0e10cSrcweir /*********************************************************************/ 874cdf0e10cSrcweir /* */ 875cdf0e10cSrcweir /*********************************************************************/ 876cdf0e10cSrcweir 877cdf0e10cSrcweir void OfaACorrCheckListBox::SetCheckButtonState( SvLBoxEntry* pEntry, sal_uInt16 nCol, SvButtonState eState) 878cdf0e10cSrcweir { 879cdf0e10cSrcweir SvLBoxButton* pItem = (SvLBoxButton*)(pEntry->GetItem(nCol + 1)); 880cdf0e10cSrcweir 881cdf0e10cSrcweir DBG_ASSERT(pItem,"SetCheckButton:Item not found"); 882cdf0e10cSrcweir if (((SvLBoxItem*)pItem)->IsA() == SV_ITEM_ID_LBOXBUTTON) 883cdf0e10cSrcweir { 884cdf0e10cSrcweir switch( eState ) 885cdf0e10cSrcweir { 886cdf0e10cSrcweir case SV_BUTTON_CHECKED: 887cdf0e10cSrcweir pItem->SetStateChecked(); 888cdf0e10cSrcweir break; 889cdf0e10cSrcweir 890cdf0e10cSrcweir case SV_BUTTON_UNCHECKED: 891cdf0e10cSrcweir pItem->SetStateUnchecked(); 892cdf0e10cSrcweir break; 893cdf0e10cSrcweir 894cdf0e10cSrcweir case SV_BUTTON_TRISTATE: 895cdf0e10cSrcweir pItem->SetStateTristate(); 896cdf0e10cSrcweir break; 897cdf0e10cSrcweir } 898cdf0e10cSrcweir InvalidateEntry( pEntry ); 899cdf0e10cSrcweir } 900cdf0e10cSrcweir } 901cdf0e10cSrcweir 902cdf0e10cSrcweir /*********************************************************************/ 903cdf0e10cSrcweir /* */ 904cdf0e10cSrcweir /*********************************************************************/ 905cdf0e10cSrcweir 906cdf0e10cSrcweir SvButtonState OfaACorrCheckListBox::GetCheckButtonState( SvLBoxEntry* pEntry, sal_uInt16 nCol ) const 907cdf0e10cSrcweir { 908cdf0e10cSrcweir SvButtonState eState = SV_BUTTON_UNCHECKED; 909cdf0e10cSrcweir SvLBoxButton* pItem = (SvLBoxButton*)(pEntry->GetItem(nCol + 1)); 910cdf0e10cSrcweir DBG_ASSERT(pItem,"GetChButnState:Item not found"); 911cdf0e10cSrcweir 912cdf0e10cSrcweir if (((SvLBoxItem*)pItem)->IsA() == SV_ITEM_ID_LBOXBUTTON) 913cdf0e10cSrcweir { 914cdf0e10cSrcweir sal_uInt16 nButtonFlags = pItem->GetButtonFlags(); 915cdf0e10cSrcweir eState = pCheckButtonData->ConvertToButtonState( nButtonFlags ); 916cdf0e10cSrcweir } 917cdf0e10cSrcweir 918cdf0e10cSrcweir return eState; 919cdf0e10cSrcweir } 920cdf0e10cSrcweir 921cdf0e10cSrcweir void OfaACorrCheckListBox::HBarClick() 922cdf0e10cSrcweir { 923cdf0e10cSrcweir // Sortierung durch diese Ueberladung abgeklemmt 924cdf0e10cSrcweir } 925cdf0e10cSrcweir /* -----------------------------22.05.2002 11:06------------------------------ 926cdf0e10cSrcweir 927cdf0e10cSrcweir ---------------------------------------------------------------------------*/ 928cdf0e10cSrcweir void OfaACorrCheckListBox::KeyInput( const KeyEvent& rKEvt ) 929cdf0e10cSrcweir { 930cdf0e10cSrcweir if(!rKEvt.GetKeyCode().GetModifier() && 931cdf0e10cSrcweir KEY_SPACE == rKEvt.GetKeyCode().GetCode()) 932cdf0e10cSrcweir { 933cdf0e10cSrcweir sal_uLong nSelPos = GetSelectEntryPos(); 934cdf0e10cSrcweir sal_uInt16 nCol = GetCurrentTabPos() - 1; 935cdf0e10cSrcweir if ( nCol < 2 ) 936cdf0e10cSrcweir { 937cdf0e10cSrcweir CheckEntryPos( nSelPos, nCol, !IsChecked( nSelPos, nCol ) ); 938cdf0e10cSrcweir CallImplEventListeners( VCLEVENT_CHECKBOX_TOGGLE, (void*)GetEntry( nSelPos ) ); 939cdf0e10cSrcweir } 940cdf0e10cSrcweir else 941cdf0e10cSrcweir { 942cdf0e10cSrcweir sal_uInt16 nCheck = IsChecked(nSelPos, 1) ? 1 : 0; 943cdf0e10cSrcweir if(IsChecked(nSelPos, 0)) 944cdf0e10cSrcweir nCheck += 2; 945cdf0e10cSrcweir nCheck--; 946cdf0e10cSrcweir nCheck &= 3; 947cdf0e10cSrcweir CheckEntryPos(nSelPos, 1, 0 != (nCheck & 1)); 948cdf0e10cSrcweir CheckEntryPos(nSelPos, 0, 0 != (nCheck & 2)); 949cdf0e10cSrcweir } 950cdf0e10cSrcweir } 951cdf0e10cSrcweir else 952cdf0e10cSrcweir SvxSimpleTable::KeyInput(rKEvt); 953cdf0e10cSrcweir } 954cdf0e10cSrcweir /* -----------------19.11.98 15:57------------------- 955cdf0e10cSrcweir * 956cdf0e10cSrcweir * --------------------------------------------------*/ 957cdf0e10cSrcweir struct DoubleString 958cdf0e10cSrcweir { 959cdf0e10cSrcweir String sShort; 960cdf0e10cSrcweir String sLong; 961cdf0e10cSrcweir void* pUserData; // CheckBox -> form. Text Bool -> Selektionstext 962cdf0e10cSrcweir }; 963cdf0e10cSrcweir typedef DoubleString* DoubleStringPtr; 964cdf0e10cSrcweir SV_DECL_PTRARR_DEL(DoubleStringArray, DoubleStringPtr, 4, 4) 965cdf0e10cSrcweir SV_IMPL_PTRARR(DoubleStringArray, DoubleStringPtr); 966cdf0e10cSrcweir 967cdf0e10cSrcweir /* -----------------19.11.98 16:07------------------- 968cdf0e10cSrcweir * 969cdf0e10cSrcweir * --------------------------------------------------*/ 970cdf0e10cSrcweir void lcl_ClearTable(DoubleStringTable& rTable) 971cdf0e10cSrcweir { 972cdf0e10cSrcweir DoubleStringArrayPtr pArray = rTable.Last(); 973cdf0e10cSrcweir while(pArray) 974cdf0e10cSrcweir { 975cdf0e10cSrcweir pArray->DeleteAndDestroy(0, pArray->Count()); 976cdf0e10cSrcweir delete pArray; 977cdf0e10cSrcweir pArray = rTable.Prev(); 978cdf0e10cSrcweir } 979cdf0e10cSrcweir rTable.Clear(); 980cdf0e10cSrcweir } 981cdf0e10cSrcweir 982cdf0e10cSrcweir /*-----------------14.10.96 15.57------------------- 983cdf0e10cSrcweir 984cdf0e10cSrcweir --------------------------------------------------*/ 985cdf0e10cSrcweir 986cdf0e10cSrcweir OfaAutocorrReplacePage::OfaAutocorrReplacePage( Window* pParent, 987cdf0e10cSrcweir const SfxItemSet& rSet ) : 988cdf0e10cSrcweir SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCORR_REPLACE ), rSet), 989cdf0e10cSrcweir aTextOnlyCB( this, CUI_RES(CB_TEXT_ONLY )), 990cdf0e10cSrcweir aShortFT ( this, CUI_RES(FT_SHORT )), 991cdf0e10cSrcweir aShortED ( this, CUI_RES(ED_SHORT )), 992cdf0e10cSrcweir aReplaceFT( this, CUI_RES(FT_REPLACE )), 993cdf0e10cSrcweir aReplaceED( this, CUI_RES(ED_REPLACE )), 994cdf0e10cSrcweir aReplaceTLB( this, CUI_RES(TLB_REPLACE )), 995cdf0e10cSrcweir aNewReplacePB( this, CUI_RES(PB_NEW_REPLACE )), 996cdf0e10cSrcweir aDeleteReplacePB(this,CUI_RES(PB_DELETE_REPLACE )), 997cdf0e10cSrcweir sModify(CUI_RES(STR_MODIFY)), 998cdf0e10cSrcweir sNew(aNewReplacePB.GetText()), 999cdf0e10cSrcweir pFormatText(0), 1000cdf0e10cSrcweir eLang(eLastDialogLanguage), 1001cdf0e10cSrcweir bHasSelectionText(sal_False), 1002cdf0e10cSrcweir bFirstSelect(sal_True), 1003cdf0e10cSrcweir bReplaceEditChanged(sal_False), 1004cdf0e10cSrcweir bSWriter(sal_True) 1005cdf0e10cSrcweir { 1006cdf0e10cSrcweir FreeResource(); 1007cdf0e10cSrcweir SfxModule *pMod = *(SfxModule**)GetAppData(SHL_WRITER); 1008cdf0e10cSrcweir bSWriter = pMod == SfxModule::GetActiveModule(); 1009cdf0e10cSrcweir 1010cdf0e10cSrcweir ::com::sun::star::lang::Locale aLcl( SvxCreateLocale(eLastDialogLanguage )); 1011cdf0e10cSrcweir pCompareClass = new CollatorWrapper( GetProcessFact() ); 1012a9075099SHerbert Dürr pCompareClass->loadDefaultCollator( aLcl, 0 ); 1013cdf0e10cSrcweir pCharClass = new CharClass( aLcl ); 1014cdf0e10cSrcweir 1015cdf0e10cSrcweir static long nTabs[] = { 2 /* Tab-Count */, 1, 61 }; 1016cdf0e10cSrcweir aReplaceTLB.SetTabs( &nTabs[0], MAP_APPFONT ); 1017cdf0e10cSrcweir 1018cdf0e10cSrcweir aReplaceTLB.SetStyle(aReplaceTLB.GetStyle()|WB_HSCROLL|WB_CLIPCHILDREN); 1019cdf0e10cSrcweir aReplaceTLB.SetSelectHdl(LINK(this, OfaAutocorrReplacePage, SelectHdl)); 1020cdf0e10cSrcweir aNewReplacePB.SetClickHdl( LINK(this, OfaAutocorrReplacePage, NewDelHdl)); 1021cdf0e10cSrcweir aDeleteReplacePB.SetClickHdl(LINK(this, OfaAutocorrReplacePage, NewDelHdl)); 1022cdf0e10cSrcweir aShortED.SetModifyHdl(LINK(this, OfaAutocorrReplacePage, ModifyHdl)); 1023cdf0e10cSrcweir aReplaceED.SetModifyHdl(LINK(this, OfaAutocorrReplacePage, ModifyHdl)); 1024cdf0e10cSrcweir aShortED.SetActionHdl(LINK(this, OfaAutocorrReplacePage, NewDelHdl)); 1025cdf0e10cSrcweir aReplaceED.SetActionHdl(LINK(this, OfaAutocorrReplacePage, NewDelHdl)); 1026cdf0e10cSrcweir 1027cdf0e10cSrcweir aReplaceED.SetSpaces(sal_True); 1028cdf0e10cSrcweir aShortED.SetSpaces(sal_True); 1029cdf0e10cSrcweir aShortED.SetMaxTextLen(30); 1030cdf0e10cSrcweir } 1031cdf0e10cSrcweir 1032cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1033cdf0e10cSrcweir 1034cdf0e10cSrcweir --------------------------------------------------*/ 1035cdf0e10cSrcweir 1036cdf0e10cSrcweir 1037cdf0e10cSrcweir OfaAutocorrReplacePage::~OfaAutocorrReplacePage() 1038cdf0e10cSrcweir { 1039cdf0e10cSrcweir delete pFormatText; 1040cdf0e10cSrcweir lcl_ClearTable(aDoubleStringTable); 1041cdf0e10cSrcweir delete pCompareClass; 1042cdf0e10cSrcweir delete pCharClass; 1043cdf0e10cSrcweir } 1044cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1045cdf0e10cSrcweir 1046cdf0e10cSrcweir --------------------------------------------------*/ 1047cdf0e10cSrcweir 1048cdf0e10cSrcweir SfxTabPage* OfaAutocorrReplacePage::Create( Window* pParent, 1049cdf0e10cSrcweir const SfxItemSet& rSet) 1050cdf0e10cSrcweir { 1051cdf0e10cSrcweir return new OfaAutocorrReplacePage(pParent, rSet); 1052cdf0e10cSrcweir } 1053cdf0e10cSrcweir /* -----------------20.11.98 13:26------------------- 1054cdf0e10cSrcweir * 1055cdf0e10cSrcweir * --------------------------------------------------*/ 1056cdf0e10cSrcweir void OfaAutocorrReplacePage::ActivatePage( const SfxItemSet& ) 1057cdf0e10cSrcweir { 1058cdf0e10cSrcweir if(eLang != eLastDialogLanguage) 1059cdf0e10cSrcweir SetLanguage(eLastDialogLanguage); 1060cdf0e10cSrcweir ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_True); 1061cdf0e10cSrcweir } 1062cdf0e10cSrcweir /* -----------------20.11.98 13:26------------------- 1063cdf0e10cSrcweir * 1064cdf0e10cSrcweir * --------------------------------------------------*/ 1065cdf0e10cSrcweir int OfaAutocorrReplacePage::DeactivatePage( SfxItemSet* ) 1066cdf0e10cSrcweir { 1067cdf0e10cSrcweir return LEAVE_PAGE; 1068cdf0e10cSrcweir } 1069cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1070cdf0e10cSrcweir 1071cdf0e10cSrcweir --------------------------------------------------*/ 1072cdf0e10cSrcweir 1073cdf0e10cSrcweir sal_Bool OfaAutocorrReplacePage::FillItemSet( SfxItemSet& ) 1074cdf0e10cSrcweir { 1075cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 1076cdf0e10cSrcweir DoubleStringArrayPtr pDoubleStringArray = aDoubleStringTable.Last(); 1077cdf0e10cSrcweir while(pDoubleStringArray) 1078cdf0e10cSrcweir { 1079cdf0e10cSrcweir LanguageType eCurLang = (LanguageType)aDoubleStringTable.GetCurKey(); 1080cdf0e10cSrcweir if(eCurLang != eLang) // die aktuelle Sprache wird weiter hinten behandelt 1081cdf0e10cSrcweir { 1082cdf0e10cSrcweir SvxAutocorrWordList* pWordList = pAutoCorrect->LoadAutocorrWordList(eCurLang); 1083cdf0e10cSrcweir sal_uInt16 nWordListCount = pWordList->Count(); 1084cdf0e10cSrcweir sal_uInt16 nDoubleStringArrayCount = pDoubleStringArray->Count(); 1085cdf0e10cSrcweir sal_uInt16 nPos = nDoubleStringArrayCount; 1086cdf0e10cSrcweir sal_uInt16 nLastPos = nPos; 1087cdf0e10cSrcweir // 1. Durchlauf: Eintraege loeschen oder veraendern: 1088cdf0e10cSrcweir 1089cdf0e10cSrcweir 1090cdf0e10cSrcweir for( sal_uInt16 nWordListPos = nWordListCount; nWordListPos; nWordListPos-- ) 1091cdf0e10cSrcweir { 1092cdf0e10cSrcweir SvxAutocorrWordPtr pWordPtr = pWordList->GetObject(nWordListPos - 1); 1093cdf0e10cSrcweir String sEntry(pWordPtr->GetShort()); 1094cdf0e10cSrcweir // formatierter Text steht nur im Writer 1095cdf0e10cSrcweir sal_Bool bFound = !bSWriter && !pWordPtr->IsTextOnly(); 1096cdf0e10cSrcweir while(!bFound && nPos) 1097cdf0e10cSrcweir { 1098cdf0e10cSrcweir DoubleString* pDouble = pDoubleStringArray->GetObject( nPos - 1); 1099cdf0e10cSrcweir 1100cdf0e10cSrcweir if( 0 == pCompareClass->compareString( 1101cdf0e10cSrcweir sEntry, pDouble->sShort )) 1102cdf0e10cSrcweir { 1103cdf0e10cSrcweir nLastPos = nPos - 1; 1104cdf0e10cSrcweir bFound = sal_True; 1105cdf0e10cSrcweir if( !(pWordPtr->IsTextOnly() == (0 == pDouble->pUserData) 1106a9075099SHerbert Dürr && 0 == pCompareClass->compareString( 1107cdf0e10cSrcweir pWordPtr->GetLong(), pDouble->sLong ) ) ) 1108cdf0e10cSrcweir { 1109cdf0e10cSrcweir pAutoCorrect->PutText(sEntry, pDouble->sLong, eCurLang); 1110cdf0e10cSrcweir } 1111cdf0e10cSrcweir pDoubleStringArray->DeleteAndDestroy(nPos - 1, 1); 1112cdf0e10cSrcweir break; 1113cdf0e10cSrcweir } 1114cdf0e10cSrcweir nPos--; 1115cdf0e10cSrcweir } 1116cdf0e10cSrcweir nPos = nLastPos; 1117cdf0e10cSrcweir if(!bFound) 1118cdf0e10cSrcweir { 1119cdf0e10cSrcweir pAutoCorrect->DeleteText(sEntry, eCurLang); 1120cdf0e10cSrcweir } 1121cdf0e10cSrcweir } 1122cdf0e10cSrcweir nDoubleStringArrayCount = pDoubleStringArray->Count(); 1123cdf0e10cSrcweir for(sal_uInt16 nDoubleStringArrayPos = 0; nDoubleStringArrayPos < nDoubleStringArrayCount; nDoubleStringArrayPos++ ) 1124cdf0e10cSrcweir { 1125cdf0e10cSrcweir //jetzt sollte es nur noch neue Eintraege geben 1126cdf0e10cSrcweir DoubleString* pDouble = pDoubleStringArray->GetObject( nDoubleStringArrayPos ); 1127cdf0e10cSrcweir if(pDouble->pUserData == &bHasSelectionText) 1128cdf0e10cSrcweir pAutoCorrect->PutText( pDouble->sShort, 1129cdf0e10cSrcweir *SfxObjectShell::Current(), eCurLang ); 1130cdf0e10cSrcweir else 1131cdf0e10cSrcweir { 1132cdf0e10cSrcweir pAutoCorrect->PutText( pDouble->sShort, pDouble->sLong, 1133cdf0e10cSrcweir eCurLang); 1134cdf0e10cSrcweir } 1135cdf0e10cSrcweir } 1136cdf0e10cSrcweir } 1137cdf0e10cSrcweir pDoubleStringArray->DeleteAndDestroy(0, pDoubleStringArray->Count()); 1138cdf0e10cSrcweir delete pDoubleStringArray; 1139cdf0e10cSrcweir pDoubleStringArray = aDoubleStringTable.Prev(); 1140cdf0e10cSrcweir } 1141cdf0e10cSrcweir aDoubleStringTable.Clear(); 1142cdf0e10cSrcweir // jetzt noch die aktuelle Selektion 1143cdf0e10cSrcweir SvxAutocorrWordList* pWordList = pAutoCorrect->LoadAutocorrWordList(eLang); 1144cdf0e10cSrcweir sal_uInt16 nWordListCount = pWordList->Count(); 1145cdf0e10cSrcweir sal_uInt16 nListBoxCount = (sal_uInt16)aReplaceTLB.GetEntryCount(); 1146cdf0e10cSrcweir 1147cdf0e10cSrcweir aReplaceTLB.SetUpdateMode(sal_False); 1148cdf0e10cSrcweir sal_uInt16 nListBoxPos = nListBoxCount; 1149cdf0e10cSrcweir sal_uInt16 nLastListBoxPos = nListBoxPos; 1150cdf0e10cSrcweir // 1. Durchlauf: Eintraege loeschen oder veraendern: 1151cdf0e10cSrcweir 1152cdf0e10cSrcweir sal_uInt16 i; 1153cdf0e10cSrcweir for( i = nWordListCount; i; i-- ) 1154cdf0e10cSrcweir { 1155cdf0e10cSrcweir SvxAutocorrWordPtr pWordPtr = pWordList->GetObject(i- 1); 1156cdf0e10cSrcweir String sEntry(pWordPtr->GetShort()); 1157cdf0e10cSrcweir // formatierter Text steht nur im Writer 1158cdf0e10cSrcweir sal_Bool bFound = !bSWriter && !pWordPtr->IsTextOnly(); 1159cdf0e10cSrcweir while(!bFound && nListBoxPos) 1160cdf0e10cSrcweir { 1161cdf0e10cSrcweir SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( nListBoxPos - 1); 1162cdf0e10cSrcweir if( 0 == pCompareClass->compareString( sEntry, 1163cdf0e10cSrcweir aReplaceTLB.GetEntryText(pEntry, 0))) 1164cdf0e10cSrcweir { 1165cdf0e10cSrcweir nLastListBoxPos = nListBoxPos - 1; 1166cdf0e10cSrcweir bFound = sal_True; 1167cdf0e10cSrcweir String sLong = aReplaceTLB.GetEntryText(pEntry, 1); 1168cdf0e10cSrcweir if( !(pWordPtr->IsTextOnly() == (0 == pEntry->GetUserData()) 1169a9075099SHerbert Dürr && 0 == pCompareClass->compareString( 1170cdf0e10cSrcweir pWordPtr->GetLong(), sLong ))) 1171cdf0e10cSrcweir { 1172cdf0e10cSrcweir pAutoCorrect->PutText(sEntry, sLong, eLang); 1173cdf0e10cSrcweir } 1174cdf0e10cSrcweir aReplaceTLB.GetModel()->Remove(pEntry); 1175cdf0e10cSrcweir break; 1176cdf0e10cSrcweir 1177cdf0e10cSrcweir } 1178cdf0e10cSrcweir nListBoxPos --; 1179cdf0e10cSrcweir } 1180cdf0e10cSrcweir nListBoxPos = nLastListBoxPos; 1181cdf0e10cSrcweir if(!bFound) 1182cdf0e10cSrcweir { 1183cdf0e10cSrcweir pAutoCorrect->DeleteText(sEntry, eLang); 1184cdf0e10cSrcweir } 1185cdf0e10cSrcweir 1186cdf0e10cSrcweir } 1187cdf0e10cSrcweir nListBoxCount = (sal_uInt16)aReplaceTLB.GetEntryCount(); 1188cdf0e10cSrcweir for(i = 0; i < nListBoxCount; i++ ) 1189cdf0e10cSrcweir { 1190cdf0e10cSrcweir //jetzt sollte es nur noch neue Eintraege geben 1191cdf0e10cSrcweir SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( i ); 1192cdf0e10cSrcweir String sShort = aReplaceTLB.GetEntryText(pEntry, 0); 1193cdf0e10cSrcweir if(pEntry->GetUserData() == &bHasSelectionText) 1194cdf0e10cSrcweir pAutoCorrect->PutText(sShort, *SfxObjectShell::Current(), eLang); 1195cdf0e10cSrcweir else 1196cdf0e10cSrcweir { 1197cdf0e10cSrcweir String sLong = aReplaceTLB.GetEntryText(pEntry, 1); 1198cdf0e10cSrcweir pAutoCorrect->PutText(sShort, sLong, eLang); 1199cdf0e10cSrcweir } 1200cdf0e10cSrcweir } 1201cdf0e10cSrcweir 1202cdf0e10cSrcweir return sal_False; 1203cdf0e10cSrcweir } 1204cdf0e10cSrcweir 1205cdf0e10cSrcweir /* -----------------19.11.98 13:16------------------- 1206cdf0e10cSrcweir * 1207cdf0e10cSrcweir * --------------------------------------------------*/ 1208cdf0e10cSrcweir void OfaAutocorrReplacePage::RefillReplaceBox(sal_Bool bFromReset, 1209cdf0e10cSrcweir LanguageType eOldLanguage, 1210cdf0e10cSrcweir LanguageType eNewLanguage) 1211cdf0e10cSrcweir { 1212cdf0e10cSrcweir eLang = eNewLanguage; 1213cdf0e10cSrcweir if(bFromReset) 1214cdf0e10cSrcweir lcl_ClearTable(aDoubleStringTable); 1215cdf0e10cSrcweir else 1216cdf0e10cSrcweir { 1217cdf0e10cSrcweir DoubleStringArray* pArray = 0; 1218cdf0e10cSrcweir if(aDoubleStringTable.IsKeyValid(eOldLanguage)) 1219cdf0e10cSrcweir { 1220cdf0e10cSrcweir pArray = aDoubleStringTable.Seek(sal_uLong(eOldLanguage)); 1221cdf0e10cSrcweir pArray->DeleteAndDestroy(0, pArray->Count()); 1222cdf0e10cSrcweir } 1223cdf0e10cSrcweir else 1224cdf0e10cSrcweir { 1225cdf0e10cSrcweir pArray = new DoubleStringArray; 1226cdf0e10cSrcweir aDoubleStringTable.Insert(sal_uLong(eOldLanguage), pArray); 1227cdf0e10cSrcweir } 1228cdf0e10cSrcweir 1229cdf0e10cSrcweir sal_uInt16 nListBoxCount = (sal_uInt16)aReplaceTLB.GetEntryCount(); 1230cdf0e10cSrcweir sal_uInt16 i; 1231cdf0e10cSrcweir for(i = 0; i < nListBoxCount; i++) 1232cdf0e10cSrcweir { 1233cdf0e10cSrcweir DoubleString* pDouble = new DoubleString(); 1234cdf0e10cSrcweir SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( i ); 1235cdf0e10cSrcweir pDouble->sShort = aReplaceTLB.GetEntryText(pEntry, 0); 1236cdf0e10cSrcweir pDouble->sLong = aReplaceTLB.GetEntryText(pEntry, 1); 1237cdf0e10cSrcweir pDouble->pUserData = pEntry->GetUserData(); 1238cdf0e10cSrcweir pArray->Insert(pDouble, i); 1239cdf0e10cSrcweir } 1240cdf0e10cSrcweir } 1241cdf0e10cSrcweir 1242cdf0e10cSrcweir aReplaceTLB.Clear(); 1243cdf0e10cSrcweir if(!bSWriter) 1244cdf0e10cSrcweir { 1245cdf0e10cSrcweir if(pFormatText) 1246cdf0e10cSrcweir pFormatText->DeleteAndDestroy(0, pFormatText->Count()); 1247cdf0e10cSrcweir else 1248cdf0e10cSrcweir pFormatText = new SvStringsISortDtor(); 1249cdf0e10cSrcweir } 1250cdf0e10cSrcweir 1251cdf0e10cSrcweir if(aDoubleStringTable.IsKeyValid(eLang)) 1252cdf0e10cSrcweir { 1253cdf0e10cSrcweir DoubleStringArray* pArray = aDoubleStringTable.Seek(sal_uLong(eNewLanguage)); 1254cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pArray->Count(); i++) 1255cdf0e10cSrcweir { 1256cdf0e10cSrcweir DoubleString* pDouble = pArray->GetObject(i); 1257cdf0e10cSrcweir sal_Bool bTextOnly = 0 == pDouble->pUserData; 1258cdf0e10cSrcweir // formatierter Text wird nur im Writer angeboten 1259cdf0e10cSrcweir if(bSWriter || bTextOnly) 1260cdf0e10cSrcweir { 1261cdf0e10cSrcweir String sEntry(pDouble->sShort); 1262cdf0e10cSrcweir sEntry += '\t'; 1263cdf0e10cSrcweir sEntry += pDouble->sLong; 1264cdf0e10cSrcweir SvLBoxEntry* pEntry = aReplaceTLB.InsertEntry(sEntry); 1265cdf0e10cSrcweir aTextOnlyCB.Check(bTextOnly); 1266cdf0e10cSrcweir if(!bTextOnly) 1267cdf0e10cSrcweir pEntry->SetUserData(pDouble->pUserData); // Das heisst: mit Formatinfo oder sogar mit Selektionstext 1268cdf0e10cSrcweir } 1269cdf0e10cSrcweir else 1270cdf0e10cSrcweir { 1271cdf0e10cSrcweir pFormatText->Insert(new String(pDouble->sShort)); 1272cdf0e10cSrcweir } 1273cdf0e10cSrcweir } 1274cdf0e10cSrcweir } 1275cdf0e10cSrcweir else 1276cdf0e10cSrcweir { 1277cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 1278cdf0e10cSrcweir SvxAutocorrWordList* pWordList = pAutoCorrect->LoadAutocorrWordList(eLang); 1279cdf0e10cSrcweir 1280cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pWordList->Count(); i++) 1281cdf0e10cSrcweir { 1282cdf0e10cSrcweir SvxAutocorrWordPtr pWordPtr = pWordList->GetObject(i); 1283cdf0e10cSrcweir sal_Bool bTextOnly = pWordPtr->IsTextOnly(); 1284cdf0e10cSrcweir // formatierter Text wird nur im Writer angeboten 1285cdf0e10cSrcweir if(bSWriter || bTextOnly) 1286cdf0e10cSrcweir { 1287cdf0e10cSrcweir String sEntry(pWordPtr->GetShort()); 1288cdf0e10cSrcweir sEntry += '\t'; 1289cdf0e10cSrcweir sEntry += pWordPtr->GetLong(); 1290cdf0e10cSrcweir SvLBoxEntry* pEntry = aReplaceTLB.InsertEntry(sEntry); 1291cdf0e10cSrcweir aTextOnlyCB.Check(pWordPtr->IsTextOnly()); 1292cdf0e10cSrcweir if(!bTextOnly) 1293cdf0e10cSrcweir pEntry->SetUserData(&aTextOnlyCB); // Das heisst: mit Formatinfo 1294cdf0e10cSrcweir } 1295cdf0e10cSrcweir else 1296cdf0e10cSrcweir { 1297cdf0e10cSrcweir pFormatText->Insert(new String(pWordPtr->GetShort())); 1298cdf0e10cSrcweir } 1299cdf0e10cSrcweir } 1300cdf0e10cSrcweir aNewReplacePB.Enable(sal_False); 1301cdf0e10cSrcweir aDeleteReplacePB.Enable(sal_False); 1302cdf0e10cSrcweir 1303cdf0e10cSrcweir } 1304cdf0e10cSrcweir 1305cdf0e10cSrcweir SfxViewShell* pViewShell = SfxViewShell::Current(); 1306cdf0e10cSrcweir if( pViewShell && pViewShell->HasSelection( sal_True ) ) 1307cdf0e10cSrcweir { 1308cdf0e10cSrcweir bHasSelectionText = sal_True; 1309cdf0e10cSrcweir const String sSelection( pViewShell->GetSelectionText() ); 1310cdf0e10cSrcweir aReplaceED.SetText( sSelection ); 1311cdf0e10cSrcweir aTextOnlyCB.Check( !bSWriter ); 1312cdf0e10cSrcweir aTextOnlyCB.Enable( bSWriter && sSelection.Len() ); 1313cdf0e10cSrcweir } 1314cdf0e10cSrcweir else 1315cdf0e10cSrcweir aTextOnlyCB.Enable( sal_False ); 1316cdf0e10cSrcweir } 1317cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1318cdf0e10cSrcweir 1319cdf0e10cSrcweir --------------------------------------------------*/ 1320cdf0e10cSrcweir 1321cdf0e10cSrcweir void OfaAutocorrReplacePage::Reset( const SfxItemSet& ) 1322cdf0e10cSrcweir { 1323cdf0e10cSrcweir RefillReplaceBox(sal_True, eLang, eLang); 1324cdf0e10cSrcweir aShortED.GrabFocus(); 1325cdf0e10cSrcweir } 1326cdf0e10cSrcweir 1327cdf0e10cSrcweir /* -----------------23.11.98 10:33------------------- 1328cdf0e10cSrcweir * 1329cdf0e10cSrcweir * --------------------------------------------------*/ 1330cdf0e10cSrcweir void OfaAutocorrReplacePage::SetLanguage(LanguageType eSet) 1331cdf0e10cSrcweir { 1332cdf0e10cSrcweir //save old settings an refill 1333cdf0e10cSrcweir if(eSet != eLang) 1334cdf0e10cSrcweir { 1335cdf0e10cSrcweir RefillReplaceBox(sal_False, eLang, eSet); 1336cdf0e10cSrcweir eLastDialogLanguage = eSet; 1337cdf0e10cSrcweir delete pCompareClass; 1338cdf0e10cSrcweir delete pCharClass; 1339cdf0e10cSrcweir 1340cdf0e10cSrcweir ::com::sun::star::lang::Locale aLcl( SvxCreateLocale(eLastDialogLanguage )); 1341cdf0e10cSrcweir pCompareClass = new CollatorWrapper( GetProcessFact() ); 1342a9075099SHerbert Dürr pCompareClass->loadDefaultCollator( aLcl, 0 ); 1343cdf0e10cSrcweir pCharClass = new CharClass( aLcl ); 1344cdf0e10cSrcweir ModifyHdl(&aShortED); 1345cdf0e10cSrcweir } 1346cdf0e10cSrcweir } 1347cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1348cdf0e10cSrcweir 1349cdf0e10cSrcweir --------------------------------------------------*/ 1350cdf0e10cSrcweir 1351cdf0e10cSrcweir 1352cdf0e10cSrcweir IMPL_LINK(OfaAutocorrReplacePage, SelectHdl, SvTabListBox*, pBox) 1353cdf0e10cSrcweir { 1354cdf0e10cSrcweir if(!bFirstSelect || !bHasSelectionText) 1355cdf0e10cSrcweir { 1356cdf0e10cSrcweir SvLBoxEntry* pEntry = pBox->FirstSelected(); 1357cdf0e10cSrcweir String sTmpShort(pBox->GetEntryText(pEntry, 0)); 1358cdf0e10cSrcweir // wird der Text ueber den ModifyHdl gesetzt, dann steht der Cursor sonst immer am Wortanfang, 1359cdf0e10cSrcweir // obwohl man gerade hier editiert 1360cdf0e10cSrcweir sal_Bool bSameContent = 0 == pCompareClass->compareString( 1361cdf0e10cSrcweir sTmpShort, aShortED.GetText() ); 1362cdf0e10cSrcweir Selection aSel = aShortED.GetSelection(); 1363cdf0e10cSrcweir if(aShortED.GetText() != sTmpShort) 1364cdf0e10cSrcweir { 1365cdf0e10cSrcweir aShortED.SetText(sTmpShort); 1366cdf0e10cSrcweir //war es nur eine andere Schreibweise, dann muss die Selektion auch wieder gesetzt werden 1367cdf0e10cSrcweir if(bSameContent) 1368cdf0e10cSrcweir aShortED.SetSelection(aSel); 1369cdf0e10cSrcweir } 1370cdf0e10cSrcweir aReplaceED.SetText(pBox->GetEntryText(pEntry, 1)); 1371cdf0e10cSrcweir // mit UserData gibt es eine Formatinfo 1372cdf0e10cSrcweir aTextOnlyCB.Check(0 == pEntry->GetUserData()); 1373cdf0e10cSrcweir } 1374cdf0e10cSrcweir else 1375cdf0e10cSrcweir bFirstSelect = sal_False; 1376cdf0e10cSrcweir 1377cdf0e10cSrcweir aNewReplacePB.Enable(sal_False); 1378cdf0e10cSrcweir aDeleteReplacePB.Enable(); 1379cdf0e10cSrcweir return 0; 1380cdf0e10cSrcweir }; 1381cdf0e10cSrcweir 1382cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1383cdf0e10cSrcweir 1384cdf0e10cSrcweir --------------------------------------------------*/ 1385cdf0e10cSrcweir 1386cdf0e10cSrcweir 1387cdf0e10cSrcweir IMPL_LINK(OfaAutocorrReplacePage, NewDelHdl, PushButton*, pBtn) 1388cdf0e10cSrcweir { 1389cdf0e10cSrcweir SvLBoxEntry* _pEntry = aReplaceTLB.FirstSelected(); 1390cdf0e10cSrcweir if(pBtn == &aDeleteReplacePB) 1391cdf0e10cSrcweir { 1392cdf0e10cSrcweir DBG_ASSERT(_pEntry, "keine Eintrag selektiert"); 1393cdf0e10cSrcweir if(_pEntry) 1394cdf0e10cSrcweir { 1395cdf0e10cSrcweir aReplaceTLB.GetModel()->Remove(_pEntry); 1396cdf0e10cSrcweir ModifyHdl(&aShortED); 1397cdf0e10cSrcweir return 0; 1398cdf0e10cSrcweir } 1399cdf0e10cSrcweir } 1400cdf0e10cSrcweir if(pBtn == &aNewReplacePB || aNewReplacePB.IsEnabled()) 1401cdf0e10cSrcweir { 1402cdf0e10cSrcweir SvLBoxEntry* _pNewEntry = aReplaceTLB.FirstSelected(); 1403cdf0e10cSrcweir String sEntry(aShortED.GetText()); 1404cdf0e10cSrcweir if(sEntry.Len() && ( aReplaceED.GetText().Len() || 1405cdf0e10cSrcweir ( bHasSelectionText && bSWriter ) )) 1406cdf0e10cSrcweir { 1407cdf0e10cSrcweir aReplaceTLB.SetUpdateMode(sal_False); 1408cdf0e10cSrcweir sal_uInt16 nPos = USHRT_MAX; 1409cdf0e10cSrcweir sEntry += '\t'; 1410cdf0e10cSrcweir sEntry += aReplaceED.GetText(); 1411cdf0e10cSrcweir if(_pNewEntry) 1412cdf0e10cSrcweir { 1413cdf0e10cSrcweir nPos = (sal_uInt16)aReplaceTLB.GetModel()->GetAbsPos(_pNewEntry); 1414cdf0e10cSrcweir aReplaceTLB.GetModel()->Remove(_pNewEntry); 1415cdf0e10cSrcweir } 1416cdf0e10cSrcweir else 1417cdf0e10cSrcweir { 1418cdf0e10cSrcweir sal_uInt16 j; 1419cdf0e10cSrcweir for( j = 0; j < aReplaceTLB.GetEntryCount(); j++ ) 1420cdf0e10cSrcweir { 1421cdf0e10cSrcweir SvLBoxEntry* pReplaceEntry = aReplaceTLB.GetEntry(j); 1422cdf0e10cSrcweir if( 0 >= pCompareClass->compareString(sEntry, 1423cdf0e10cSrcweir aReplaceTLB.GetEntryText(pReplaceEntry, 0) ) ) 1424cdf0e10cSrcweir break; 1425cdf0e10cSrcweir } 1426cdf0e10cSrcweir nPos = j; 1427cdf0e10cSrcweir } 1428cdf0e10cSrcweir SvLBoxEntry* pInsEntry = 1429cdf0e10cSrcweir aReplaceTLB.InsertEntry( 1430cdf0e10cSrcweir sEntry, static_cast< SvLBoxEntry * >(NULL), false, 1431cdf0e10cSrcweir nPos == USHRT_MAX ? LIST_APPEND : nPos); 1432cdf0e10cSrcweir if( !bReplaceEditChanged && !aTextOnlyCB.IsChecked()) 1433cdf0e10cSrcweir pInsEntry->SetUserData(&bHasSelectionText); // neuer formatierter Text 1434cdf0e10cSrcweir 1435cdf0e10cSrcweir aReplaceTLB.MakeVisible( pInsEntry ); 1436cdf0e10cSrcweir aReplaceTLB.SetUpdateMode(sal_True); 1437cdf0e10cSrcweir // falls der Request aus dem ReplaceEdit kam, dann Focus in das ShortEdit setzen 1438cdf0e10cSrcweir if(aReplaceED.HasFocus()) 1439cdf0e10cSrcweir aShortED.GrabFocus(); 1440cdf0e10cSrcweir 1441cdf0e10cSrcweir } 1442cdf0e10cSrcweir } 1443cdf0e10cSrcweir else 1444cdf0e10cSrcweir { 1445cdf0e10cSrcweir // das kann nur ein Enter in einem der beiden Edit-Felder sein und das 1446cdf0e10cSrcweir // bedeutet EndDialog() - muss im KeyInput ausgewertet werden 1447cdf0e10cSrcweir return 0; 1448cdf0e10cSrcweir } 1449cdf0e10cSrcweir ModifyHdl(&aShortED); 1450cdf0e10cSrcweir return 1; 1451cdf0e10cSrcweir } 1452cdf0e10cSrcweir 1453cdf0e10cSrcweir /*-----------------17.10.96 07.49------------------- 1454cdf0e10cSrcweir 1455cdf0e10cSrcweir --------------------------------------------------*/ 1456cdf0e10cSrcweir IMPL_LINK(OfaAutocorrReplacePage, ModifyHdl, Edit*, pEdt) 1457cdf0e10cSrcweir { 1458cdf0e10cSrcweir SvLBoxEntry* pFirstSel = aReplaceTLB.FirstSelected(); 1459cdf0e10cSrcweir sal_Bool bShort = pEdt == &aShortED; 1460cdf0e10cSrcweir const String rEntry = pEdt->GetText(); 1461cdf0e10cSrcweir const String rRepString = aReplaceED.GetText(); 1462cdf0e10cSrcweir String aWordStr( pCharClass->lower( rEntry )); 1463cdf0e10cSrcweir 1464cdf0e10cSrcweir if(bShort) 1465cdf0e10cSrcweir { 1466cdf0e10cSrcweir if(rEntry.Len()) 1467cdf0e10cSrcweir { 1468cdf0e10cSrcweir sal_Bool bFound = sal_False; 1469cdf0e10cSrcweir sal_Bool bTmpSelEntry=sal_False; 1470cdf0e10cSrcweir 1471cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aReplaceTLB.GetEntryCount(); i++) 1472cdf0e10cSrcweir { 1473cdf0e10cSrcweir SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( i ); 1474cdf0e10cSrcweir String aTestStr=aReplaceTLB.GetEntryText(pEntry, 0); 1475cdf0e10cSrcweir if( 0 == pCompareClass->compareString(rEntry, aTestStr )) 1476cdf0e10cSrcweir { 1477cdf0e10cSrcweir if(rRepString.Len()) 1478cdf0e10cSrcweir bFirstSelect = sal_True; 1479cdf0e10cSrcweir aReplaceTLB.SetCurEntry(pEntry); 1480cdf0e10cSrcweir pFirstSel = pEntry; 1481cdf0e10cSrcweir aNewReplacePB.SetText(sModify); 1482cdf0e10cSrcweir bFound= sal_True; 1483cdf0e10cSrcweir break; 1484cdf0e10cSrcweir } 1485cdf0e10cSrcweir else 1486cdf0e10cSrcweir { 1487cdf0e10cSrcweir pCharClass->toLower( aTestStr ); 1488cdf0e10cSrcweir if(aTestStr.Search(aWordStr)==0 && !bTmpSelEntry) 1489cdf0e10cSrcweir { 1490cdf0e10cSrcweir aReplaceTLB.MakeVisible(pEntry); 1491cdf0e10cSrcweir bTmpSelEntry=sal_True; 1492cdf0e10cSrcweir } 1493cdf0e10cSrcweir } 1494cdf0e10cSrcweir } 1495cdf0e10cSrcweir if(!bFound) 1496cdf0e10cSrcweir { 1497cdf0e10cSrcweir aReplaceTLB.SelectAll(sal_False); 1498cdf0e10cSrcweir pFirstSel = 0; 1499cdf0e10cSrcweir aNewReplacePB.SetText(sNew); 1500cdf0e10cSrcweir if(bReplaceEditChanged) 1501cdf0e10cSrcweir aTextOnlyCB.Enable(sal_False); 1502cdf0e10cSrcweir } 1503cdf0e10cSrcweir aDeleteReplacePB.Enable(bFound); 1504cdf0e10cSrcweir } 1505cdf0e10cSrcweir else if(aReplaceTLB.GetEntryCount()>0) 1506cdf0e10cSrcweir { 1507cdf0e10cSrcweir SvLBoxEntry* pEntry = aReplaceTLB.GetEntry( 0 ); 1508cdf0e10cSrcweir aReplaceTLB.MakeVisible(pEntry); 1509cdf0e10cSrcweir } 1510cdf0e10cSrcweir 1511cdf0e10cSrcweir } 1512cdf0e10cSrcweir else if(!bShort) 1513cdf0e10cSrcweir { 1514cdf0e10cSrcweir bReplaceEditChanged = sal_True; 1515cdf0e10cSrcweir if(pFirstSel) 1516cdf0e10cSrcweir { 1517cdf0e10cSrcweir aNewReplacePB.SetText(sModify); 1518cdf0e10cSrcweir } 1519cdf0e10cSrcweir } 1520cdf0e10cSrcweir 1521cdf0e10cSrcweir const String& rShortTxt = aShortED.GetText(); 1522cdf0e10cSrcweir sal_Bool bEnableNew = rShortTxt.Len() && 1523cdf0e10cSrcweir ( rRepString.Len() || 1524cdf0e10cSrcweir ( bHasSelectionText && bSWriter )) && 1525cdf0e10cSrcweir ( !pFirstSel || rRepString != 1526cdf0e10cSrcweir aReplaceTLB.GetEntryText( pFirstSel, 1 ) ); 1527cdf0e10cSrcweir if(bEnableNew && pFormatText) 1528cdf0e10cSrcweir { 1529cdf0e10cSrcweir for(sal_uInt16 i = 0; i < pFormatText->Count(); i++) 1530cdf0e10cSrcweir if(*pFormatText->GetObject(i) == rShortTxt) 1531cdf0e10cSrcweir { 1532cdf0e10cSrcweir bEnableNew = sal_False; 1533cdf0e10cSrcweir break; 1534cdf0e10cSrcweir } 1535cdf0e10cSrcweir } 1536cdf0e10cSrcweir aNewReplacePB.Enable(bEnableNew); 1537cdf0e10cSrcweir 1538cdf0e10cSrcweir return 0; 1539cdf0e10cSrcweir } 1540cdf0e10cSrcweir 1541cdf0e10cSrcweir /* -----------------20.11.98 13:48------------------- 1542cdf0e10cSrcweir * 1543cdf0e10cSrcweir * --------------------------------------------------*/ 1544cdf0e10cSrcweir 1545cdf0e10cSrcweir struct StringsArrays 1546cdf0e10cSrcweir { 1547cdf0e10cSrcweir 1548cdf0e10cSrcweir SvStringsDtor aAbbrevStrings; 1549cdf0e10cSrcweir SvStringsDtor aDoubleCapsStrings; 1550cdf0e10cSrcweir 1551cdf0e10cSrcweir StringsArrays() : 1552cdf0e10cSrcweir aAbbrevStrings(5,5), aDoubleCapsStrings(5,5) {} 1553cdf0e10cSrcweir }; 1554cdf0e10cSrcweir typedef StringsArrays* StringsArraysPtr; 1555cdf0e10cSrcweir /* -----------------19.11.98 16:07------------------- 1556cdf0e10cSrcweir * 1557cdf0e10cSrcweir * --------------------------------------------------*/ 1558cdf0e10cSrcweir sal_Bool lcl_FindInArray(SvStringsDtor& rStrings, const String& rString) 1559cdf0e10cSrcweir { 1560cdf0e10cSrcweir for(sal_uInt16 i = 0; i < rStrings.Count(); i++) 1561cdf0e10cSrcweir if(rString == *rStrings.GetObject(i)) 1562cdf0e10cSrcweir return sal_True; 1563cdf0e10cSrcweir return sal_False; 1564cdf0e10cSrcweir } 1565cdf0e10cSrcweir 1566cdf0e10cSrcweir void lcl_ClearTable(StringsTable& rTable) 1567cdf0e10cSrcweir { 1568cdf0e10cSrcweir StringsArraysPtr pArrays = rTable.Last(); 1569cdf0e10cSrcweir while(pArrays) 1570cdf0e10cSrcweir { 1571cdf0e10cSrcweir delete pArrays; 1572cdf0e10cSrcweir pArrays = rTable.Prev(); 1573cdf0e10cSrcweir } 1574cdf0e10cSrcweir rTable.Clear(); 1575cdf0e10cSrcweir } 1576cdf0e10cSrcweir 1577cdf0e10cSrcweir /*-----------------14.10.96 15.57------------------- 1578cdf0e10cSrcweir 1579cdf0e10cSrcweir --------------------------------------------------*/ 1580cdf0e10cSrcweir 1581cdf0e10cSrcweir OfaAutocorrExceptPage::OfaAutocorrExceptPage( Window* pParent, 1582cdf0e10cSrcweir const SfxItemSet& rSet ) : 1583cdf0e10cSrcweir SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCORR_EXCEPT ), rSet), 1584cdf0e10cSrcweir aAbbrevFL (this, CUI_RES(FL_ABBREV )), 1585cdf0e10cSrcweir aAbbrevED (this, CUI_RES(ED_ABBREV )), 1586cdf0e10cSrcweir aAbbrevLB (this, CUI_RES(LB_ABBREV )), 1587cdf0e10cSrcweir aNewAbbrevPB (this, CUI_RES(PB_NEWABBREV )), 1588cdf0e10cSrcweir aDelAbbrevPB (this, CUI_RES(PB_DELABBREV )), 1589cdf0e10cSrcweir aAutoAbbrevCB (this, CUI_RES(CB_AUTOABBREV )), 1590cdf0e10cSrcweir aDoubleCapsFL (this, CUI_RES(FL_DOUBLECAPS )), 1591cdf0e10cSrcweir aDoubleCapsED (this, CUI_RES(ED_DOUBLE_CAPS )), 1592cdf0e10cSrcweir aDoubleCapsLB (this, CUI_RES(LB_DOUBLE_CAPS )), 1593cdf0e10cSrcweir aNewDoublePB (this, CUI_RES(PB_NEWDOUBLECAPS)), 1594cdf0e10cSrcweir aDelDoublePB (this, CUI_RES(PB_DELDOUBLECAPS)), 1595cdf0e10cSrcweir aAutoCapsCB (this, CUI_RES(CB_AUTOCAPS )), 1596cdf0e10cSrcweir eLang(eLastDialogLanguage) 1597cdf0e10cSrcweir { 1598cdf0e10cSrcweir aNewAbbrevPB.SetAccessibleName(String(CUI_RES(STR_PB_NEWABBREV) ) ); 1599cdf0e10cSrcweir aDelAbbrevPB.SetAccessibleName(String(CUI_RES(STR_PB_DELABBREV) ) ); 1600cdf0e10cSrcweir aNewDoublePB.SetAccessibleName(String(CUI_RES(STR_PB_NEWDOUBLECAPS) ) ); 1601cdf0e10cSrcweir aDelDoublePB.SetAccessibleName(String(CUI_RES(STR_PB_DELDOUBLECAPS) ) ); 1602cdf0e10cSrcweir 1603cdf0e10cSrcweir FreeResource(); 1604cdf0e10cSrcweir 1605cdf0e10cSrcweir ::com::sun::star::lang::Locale aLcl( SvxCreateLocale(eLastDialogLanguage )); 1606cdf0e10cSrcweir pCompareClass = new CollatorWrapper( GetProcessFact() ); 1607a9075099SHerbert Dürr pCompareClass->loadDefaultCollator( aLcl, 0 ); 1608cdf0e10cSrcweir 1609cdf0e10cSrcweir aNewAbbrevPB.SetClickHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl)); 1610cdf0e10cSrcweir aDelAbbrevPB.SetClickHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl)); 1611cdf0e10cSrcweir aNewDoublePB.SetClickHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl)); 1612cdf0e10cSrcweir aDelDoublePB.SetClickHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl)); 1613cdf0e10cSrcweir 1614cdf0e10cSrcweir aAbbrevLB.SetSelectHdl(LINK(this, OfaAutocorrExceptPage, SelectHdl)); 1615cdf0e10cSrcweir aDoubleCapsLB.SetSelectHdl(LINK(this, OfaAutocorrExceptPage, SelectHdl)); 1616cdf0e10cSrcweir aAbbrevED.SetModifyHdl(LINK(this, OfaAutocorrExceptPage, ModifyHdl)); 1617cdf0e10cSrcweir aDoubleCapsED.SetModifyHdl(LINK(this, OfaAutocorrExceptPage, ModifyHdl)); 1618cdf0e10cSrcweir 1619cdf0e10cSrcweir aAbbrevED.SetActionHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl)); 1620cdf0e10cSrcweir aDoubleCapsED.SetActionHdl(LINK(this, OfaAutocorrExceptPage, NewDelHdl)); 1621cdf0e10cSrcweir 1622cdf0e10cSrcweir aNewAbbrevPB.SetAccessibleRelationMemberOf(&aAbbrevFL); 1623cdf0e10cSrcweir aDelAbbrevPB.SetAccessibleRelationMemberOf(&aAbbrevFL); 1624cdf0e10cSrcweir aNewDoublePB.SetAccessibleRelationMemberOf(&aDoubleCapsFL); 1625cdf0e10cSrcweir aDelDoublePB.SetAccessibleRelationMemberOf(&aDoubleCapsFL); 1626cdf0e10cSrcweir } 1627cdf0e10cSrcweir 1628cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1629cdf0e10cSrcweir 1630cdf0e10cSrcweir --------------------------------------------------*/ 1631cdf0e10cSrcweir 1632cdf0e10cSrcweir OfaAutocorrExceptPage::~OfaAutocorrExceptPage() 1633cdf0e10cSrcweir { 1634cdf0e10cSrcweir lcl_ClearTable(aStringsTable); 1635cdf0e10cSrcweir delete pCompareClass; 1636cdf0e10cSrcweir } 1637cdf0e10cSrcweir 1638cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1639cdf0e10cSrcweir 1640cdf0e10cSrcweir --------------------------------------------------*/ 1641cdf0e10cSrcweir 1642cdf0e10cSrcweir SfxTabPage* OfaAutocorrExceptPage::Create( Window* pParent, 1643cdf0e10cSrcweir const SfxItemSet& rSet) 1644cdf0e10cSrcweir { 1645cdf0e10cSrcweir return new OfaAutocorrExceptPage(pParent, rSet); 1646cdf0e10cSrcweir } 1647cdf0e10cSrcweir /* -----------------20.11.98 13:26------------------- 1648cdf0e10cSrcweir * 1649cdf0e10cSrcweir * --------------------------------------------------*/ 1650cdf0e10cSrcweir void OfaAutocorrExceptPage::ActivatePage( const SfxItemSet& ) 1651cdf0e10cSrcweir { 1652cdf0e10cSrcweir if(eLang != eLastDialogLanguage) 1653cdf0e10cSrcweir SetLanguage(eLastDialogLanguage); 1654cdf0e10cSrcweir ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_True); 1655cdf0e10cSrcweir } 1656cdf0e10cSrcweir /* -----------------20.11.98 13:26------------------- 1657cdf0e10cSrcweir * 1658cdf0e10cSrcweir * --------------------------------------------------*/ 1659cdf0e10cSrcweir int OfaAutocorrExceptPage::DeactivatePage( SfxItemSet* ) 1660cdf0e10cSrcweir { 1661cdf0e10cSrcweir return LEAVE_PAGE; 1662cdf0e10cSrcweir } 1663cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1664cdf0e10cSrcweir 1665cdf0e10cSrcweir --------------------------------------------------*/ 1666cdf0e10cSrcweir 1667cdf0e10cSrcweir sal_Bool OfaAutocorrExceptPage::FillItemSet( SfxItemSet& ) 1668cdf0e10cSrcweir { 1669cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 1670cdf0e10cSrcweir StringsArraysPtr pArrays = aStringsTable.Last(); 1671cdf0e10cSrcweir while(pArrays) 1672cdf0e10cSrcweir { 1673cdf0e10cSrcweir LanguageType eCurLang = (LanguageType)aStringsTable.GetCurKey(); 1674cdf0e10cSrcweir if(eCurLang != eLang) // die aktuelle Sprache wird weiter hinten behandelt 1675cdf0e10cSrcweir { 1676cdf0e10cSrcweir SvStringsISortDtor* pWrdList = pAutoCorrect->LoadWrdSttExceptList(eCurLang); 1677cdf0e10cSrcweir 1678cdf0e10cSrcweir if(pWrdList) 1679cdf0e10cSrcweir { 1680cdf0e10cSrcweir sal_uInt16 nCount = pWrdList->Count(); 1681cdf0e10cSrcweir sal_uInt16 i; 1682cdf0e10cSrcweir for( i = nCount; i; ) 1683cdf0e10cSrcweir { 1684cdf0e10cSrcweir String* pString = pWrdList->GetObject( --i ); 1685cdf0e10cSrcweir //Eintrag finden u. gfs entfernen 1686cdf0e10cSrcweir if( !lcl_FindInArray(pArrays->aDoubleCapsStrings, *pString)) 1687cdf0e10cSrcweir pWrdList->DeleteAndDestroy( i ); 1688cdf0e10cSrcweir } 1689cdf0e10cSrcweir nCount = pArrays->aDoubleCapsStrings.Count(); 1690cdf0e10cSrcweir for( i = 0; i < nCount; ++i ) 1691cdf0e10cSrcweir { 1692cdf0e10cSrcweir String* pEntry = new String( *pArrays->aDoubleCapsStrings.GetObject( i ) ); 1693cdf0e10cSrcweir if( !pWrdList->Insert( pEntry )) 1694cdf0e10cSrcweir delete pEntry; 1695cdf0e10cSrcweir } 1696cdf0e10cSrcweir pAutoCorrect->SaveWrdSttExceptList(eCurLang); 1697cdf0e10cSrcweir } 1698cdf0e10cSrcweir 1699cdf0e10cSrcweir SvStringsISortDtor* pCplList = pAutoCorrect->LoadCplSttExceptList(eCurLang); 1700cdf0e10cSrcweir 1701cdf0e10cSrcweir if(pCplList) 1702cdf0e10cSrcweir { 1703cdf0e10cSrcweir sal_uInt16 nCount = pCplList->Count(); 1704cdf0e10cSrcweir sal_uInt16 i; 1705cdf0e10cSrcweir for( i = nCount; i; ) 1706cdf0e10cSrcweir { 1707cdf0e10cSrcweir String* pString = pCplList->GetObject( --i ); 1708cdf0e10cSrcweir if( !lcl_FindInArray(pArrays->aAbbrevStrings, *pString)) 1709cdf0e10cSrcweir pCplList->DeleteAndDestroy( i ); 1710cdf0e10cSrcweir } 1711cdf0e10cSrcweir nCount = pArrays->aAbbrevStrings.Count(); 1712cdf0e10cSrcweir for( i = 0; i < nCount; ++i ) 1713cdf0e10cSrcweir { 1714cdf0e10cSrcweir String* pEntry = new String( *pArrays->aAbbrevStrings.GetObject(i) ); 1715cdf0e10cSrcweir if( !pCplList->Insert( pEntry )) 1716cdf0e10cSrcweir delete pEntry; 1717cdf0e10cSrcweir } 1718cdf0e10cSrcweir pAutoCorrect->SaveCplSttExceptList(eCurLang); 1719cdf0e10cSrcweir } 1720cdf0e10cSrcweir } 1721cdf0e10cSrcweir pArrays = aStringsTable.Prev(); 1722cdf0e10cSrcweir } 1723cdf0e10cSrcweir aStringsTable.Clear(); 1724cdf0e10cSrcweir 1725cdf0e10cSrcweir SvStringsISortDtor* pWrdList = pAutoCorrect->LoadWrdSttExceptList(eLang); 1726cdf0e10cSrcweir 1727cdf0e10cSrcweir if(pWrdList) 1728cdf0e10cSrcweir { 1729cdf0e10cSrcweir sal_uInt16 nCount = pWrdList->Count(); 1730cdf0e10cSrcweir sal_uInt16 i; 1731cdf0e10cSrcweir for( i = nCount; i; ) 1732cdf0e10cSrcweir { 1733cdf0e10cSrcweir String* pString = pWrdList->GetObject( --i ); 1734cdf0e10cSrcweir if( USHRT_MAX == aDoubleCapsLB.GetEntryPos(*pString) ) 1735cdf0e10cSrcweir pWrdList->DeleteAndDestroy( i ); 1736cdf0e10cSrcweir } 1737cdf0e10cSrcweir nCount = aDoubleCapsLB.GetEntryCount(); 1738cdf0e10cSrcweir for( i = 0; i < nCount; ++i ) 1739cdf0e10cSrcweir { 1740cdf0e10cSrcweir String* pEntry = new String( aDoubleCapsLB.GetEntry( i ) ); 1741cdf0e10cSrcweir if( !pWrdList->Insert( pEntry )) 1742cdf0e10cSrcweir delete pEntry; 1743cdf0e10cSrcweir } 1744cdf0e10cSrcweir pAutoCorrect->SaveWrdSttExceptList(eLang); 1745cdf0e10cSrcweir } 1746cdf0e10cSrcweir 1747cdf0e10cSrcweir SvStringsISortDtor* pCplList = pAutoCorrect->LoadCplSttExceptList(eLang); 1748cdf0e10cSrcweir 1749cdf0e10cSrcweir if(pCplList) 1750cdf0e10cSrcweir { 1751cdf0e10cSrcweir sal_uInt16 nCount = pCplList->Count(); 1752cdf0e10cSrcweir sal_uInt16 i; 1753cdf0e10cSrcweir for( i = nCount; i; ) 1754cdf0e10cSrcweir { 1755cdf0e10cSrcweir String* pString = pCplList->GetObject( --i ); 1756cdf0e10cSrcweir if( USHRT_MAX == aAbbrevLB.GetEntryPos(*pString) ) 1757cdf0e10cSrcweir pCplList->DeleteAndDestroy( i ); 1758cdf0e10cSrcweir } 1759cdf0e10cSrcweir nCount = aAbbrevLB.GetEntryCount(); 1760cdf0e10cSrcweir for( i = 0; i < nCount; ++i ) 1761cdf0e10cSrcweir { 1762cdf0e10cSrcweir String* pEntry = new String( aAbbrevLB.GetEntry( i ) ); 1763cdf0e10cSrcweir if( !pCplList->Insert( pEntry )) 1764cdf0e10cSrcweir delete pEntry; 1765cdf0e10cSrcweir } 1766cdf0e10cSrcweir pAutoCorrect->SaveCplSttExceptList(eLang); 1767cdf0e10cSrcweir } 1768cdf0e10cSrcweir if(aAutoAbbrevCB.IsChecked() != aAutoAbbrevCB.GetSavedValue()) 1769cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag( SaveWordCplSttLst, aAutoAbbrevCB.IsChecked()); 1770cdf0e10cSrcweir if(aAutoCapsCB.IsChecked() != aAutoCapsCB.GetSavedValue()) 1771cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag( SaveWordWrdSttLst, aAutoCapsCB.IsChecked()); 1772cdf0e10cSrcweir return sal_False; 1773cdf0e10cSrcweir } 1774cdf0e10cSrcweir 1775cdf0e10cSrcweir /* -----------------23.11.98 10:33------------------- 1776cdf0e10cSrcweir * 1777cdf0e10cSrcweir * --------------------------------------------------*/ 1778cdf0e10cSrcweir void OfaAutocorrExceptPage::SetLanguage(LanguageType eSet) 1779cdf0e10cSrcweir { 1780cdf0e10cSrcweir if(eLang != eSet) 1781cdf0e10cSrcweir { 1782cdf0e10cSrcweir //alte Einstellungen speichern und neu fuellen 1783cdf0e10cSrcweir RefillReplaceBoxes(sal_False, eLang, eSet); 1784cdf0e10cSrcweir eLastDialogLanguage = eSet; 1785cdf0e10cSrcweir delete pCompareClass; 1786cdf0e10cSrcweir pCompareClass = new CollatorWrapper( GetProcessFact() ); 1787a9075099SHerbert Dürr pCompareClass->loadDefaultCollator( SvxCreateLocale( eLastDialogLanguage ), 0 ); 1788cdf0e10cSrcweir ModifyHdl(&aAbbrevED); 1789cdf0e10cSrcweir ModifyHdl(&aDoubleCapsED); 1790cdf0e10cSrcweir } 1791cdf0e10cSrcweir } 1792cdf0e10cSrcweir /* -----------------20.11.98 14:06------------------- 1793cdf0e10cSrcweir * 1794cdf0e10cSrcweir * --------------------------------------------------*/ 1795cdf0e10cSrcweir void OfaAutocorrExceptPage::RefillReplaceBoxes(sal_Bool bFromReset, 1796cdf0e10cSrcweir LanguageType eOldLanguage, 1797cdf0e10cSrcweir LanguageType eNewLanguage) 1798cdf0e10cSrcweir { 1799cdf0e10cSrcweir eLang = eNewLanguage; 1800cdf0e10cSrcweir if(bFromReset) 1801cdf0e10cSrcweir lcl_ClearTable(aStringsTable); 1802cdf0e10cSrcweir else 1803cdf0e10cSrcweir { 1804cdf0e10cSrcweir StringsArraysPtr pArrays = 0; 1805cdf0e10cSrcweir if(aStringsTable.IsKeyValid(eOldLanguage)) 1806cdf0e10cSrcweir { 1807cdf0e10cSrcweir pArrays = aStringsTable.Seek(sal_uLong(eOldLanguage)); 1808cdf0e10cSrcweir pArrays->aAbbrevStrings.DeleteAndDestroy( 1809cdf0e10cSrcweir 0, pArrays->aAbbrevStrings.Count()); 1810cdf0e10cSrcweir pArrays->aDoubleCapsStrings.DeleteAndDestroy( 1811cdf0e10cSrcweir 0, pArrays->aDoubleCapsStrings.Count()); 1812cdf0e10cSrcweir } 1813cdf0e10cSrcweir else 1814cdf0e10cSrcweir { 1815cdf0e10cSrcweir pArrays = new StringsArrays; 1816cdf0e10cSrcweir aStringsTable.Insert(sal_uLong(eOldLanguage), pArrays); 1817cdf0e10cSrcweir } 1818cdf0e10cSrcweir 1819cdf0e10cSrcweir sal_uInt16 i; 1820cdf0e10cSrcweir for(i = 0; i < aAbbrevLB.GetEntryCount(); i++) 1821cdf0e10cSrcweir { 1822cdf0e10cSrcweir pArrays->aAbbrevStrings.Insert( 1823cdf0e10cSrcweir new String(aAbbrevLB.GetEntry(i)), i); 1824cdf0e10cSrcweir 1825cdf0e10cSrcweir } 1826cdf0e10cSrcweir for(i = 0; i < aDoubleCapsLB.GetEntryCount(); i++) 1827cdf0e10cSrcweir { 1828cdf0e10cSrcweir pArrays->aDoubleCapsStrings.Insert( 1829cdf0e10cSrcweir new String(aDoubleCapsLB.GetEntry(i)), i); 1830cdf0e10cSrcweir } 1831cdf0e10cSrcweir } 1832cdf0e10cSrcweir aDoubleCapsLB.Clear(); 1833cdf0e10cSrcweir aAbbrevLB.Clear(); 1834cdf0e10cSrcweir String sTemp; 1835cdf0e10cSrcweir aAbbrevED.SetText(sTemp); 1836cdf0e10cSrcweir aDoubleCapsED.SetText(sTemp); 1837cdf0e10cSrcweir 1838cdf0e10cSrcweir if(aStringsTable.IsKeyValid(eLang)) 1839cdf0e10cSrcweir { 1840cdf0e10cSrcweir StringsArraysPtr pArrays = aStringsTable.Seek(sal_uLong(eLang)); 1841cdf0e10cSrcweir sal_uInt16 i; 1842cdf0e10cSrcweir for(i = 0; i < pArrays->aAbbrevStrings.Count(); i++ ) 1843cdf0e10cSrcweir { 1844cdf0e10cSrcweir aAbbrevLB.InsertEntry(*pArrays->aAbbrevStrings.GetObject(i)); 1845cdf0e10cSrcweir } 1846cdf0e10cSrcweir for( i = 0; i < pArrays->aDoubleCapsStrings.Count(); i++ ) 1847cdf0e10cSrcweir { 1848cdf0e10cSrcweir aDoubleCapsLB.InsertEntry(*pArrays->aDoubleCapsStrings.GetObject(i)); 1849cdf0e10cSrcweir } 1850cdf0e10cSrcweir } 1851cdf0e10cSrcweir else 1852cdf0e10cSrcweir { 1853cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 1854cdf0e10cSrcweir const SvStringsISortDtor* pCplList = pAutoCorrect->GetCplSttExceptList(eLang); 1855cdf0e10cSrcweir const SvStringsISortDtor* pWrdList = pAutoCorrect->GetWrdSttExceptList(eLang); 1856cdf0e10cSrcweir sal_uInt16 i; 1857cdf0e10cSrcweir for( i = 0; i < pCplList->Count(); i++ ) 1858cdf0e10cSrcweir { 1859cdf0e10cSrcweir aAbbrevLB.InsertEntry(*pCplList->GetObject(i)); 1860cdf0e10cSrcweir } 1861cdf0e10cSrcweir for( i = 0; i < pWrdList->Count(); i++ ) 1862cdf0e10cSrcweir { 1863cdf0e10cSrcweir aDoubleCapsLB.InsertEntry(*pWrdList->GetObject(i)); 1864cdf0e10cSrcweir } 1865cdf0e10cSrcweir } 1866cdf0e10cSrcweir } 1867cdf0e10cSrcweir 1868cdf0e10cSrcweir /*-----------------14.10.96 15.58------------------- 1869cdf0e10cSrcweir 1870cdf0e10cSrcweir --------------------------------------------------*/ 1871cdf0e10cSrcweir 1872cdf0e10cSrcweir void OfaAutocorrExceptPage::Reset( const SfxItemSet& ) 1873cdf0e10cSrcweir { 1874cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 1875cdf0e10cSrcweir RefillReplaceBoxes(sal_True, eLang, eLang); 1876cdf0e10cSrcweir aAutoAbbrevCB. Check( pAutoCorrect->IsAutoCorrFlag( SaveWordCplSttLst )); 1877cdf0e10cSrcweir aAutoCapsCB. Check( pAutoCorrect->IsAutoCorrFlag( SaveWordWrdSttLst )); 1878cdf0e10cSrcweir aAutoAbbrevCB.SaveValue(); 1879cdf0e10cSrcweir aAutoCapsCB.SaveValue(); 1880cdf0e10cSrcweir } 1881cdf0e10cSrcweir 1882cdf0e10cSrcweir /*-----------------16.10.96 12.27------------------- 1883cdf0e10cSrcweir 1884cdf0e10cSrcweir --------------------------------------------------*/ 1885cdf0e10cSrcweir 1886cdf0e10cSrcweir 1887cdf0e10cSrcweir IMPL_LINK(OfaAutocorrExceptPage, NewDelHdl, PushButton*, pBtn) 1888cdf0e10cSrcweir { 1889cdf0e10cSrcweir if((pBtn == &aNewAbbrevPB || pBtn == (PushButton*)&aAbbrevED ) 1890cdf0e10cSrcweir && aAbbrevED.GetText().Len()) 1891cdf0e10cSrcweir { 1892cdf0e10cSrcweir aAbbrevLB.InsertEntry(aAbbrevED.GetText()); 1893cdf0e10cSrcweir ModifyHdl(&aAbbrevED); 1894cdf0e10cSrcweir } 1895cdf0e10cSrcweir else if(pBtn == &aDelAbbrevPB) 1896cdf0e10cSrcweir { 1897cdf0e10cSrcweir aAbbrevLB.RemoveEntry(aAbbrevED.GetText()); 1898cdf0e10cSrcweir ModifyHdl(&aAbbrevED); 1899cdf0e10cSrcweir } 1900cdf0e10cSrcweir else if((pBtn == &aNewDoublePB || pBtn == (PushButton*)&aDoubleCapsED ) 1901cdf0e10cSrcweir && aDoubleCapsED.GetText().Len()) 1902cdf0e10cSrcweir { 1903cdf0e10cSrcweir aDoubleCapsLB.InsertEntry(aDoubleCapsED.GetText()); 1904cdf0e10cSrcweir ModifyHdl(&aDoubleCapsED); 1905cdf0e10cSrcweir } 1906cdf0e10cSrcweir else if(pBtn == &aDelDoublePB) 1907cdf0e10cSrcweir { 1908cdf0e10cSrcweir aDoubleCapsLB.RemoveEntry(aDoubleCapsED.GetText()); 1909cdf0e10cSrcweir ModifyHdl(&aDoubleCapsED); 1910cdf0e10cSrcweir } 1911cdf0e10cSrcweir return 0; 1912cdf0e10cSrcweir } 1913cdf0e10cSrcweir 1914cdf0e10cSrcweir /*-----------------16.10.96 12.57------------------- 1915cdf0e10cSrcweir 1916cdf0e10cSrcweir --------------------------------------------------*/ 1917cdf0e10cSrcweir 1918cdf0e10cSrcweir IMPL_LINK(OfaAutocorrExceptPage, SelectHdl, ListBox*, pBox) 1919cdf0e10cSrcweir { 1920cdf0e10cSrcweir if(pBox == &aAbbrevLB) 1921cdf0e10cSrcweir { 1922cdf0e10cSrcweir aAbbrevED.SetText(pBox->GetSelectEntry()); 1923cdf0e10cSrcweir aNewAbbrevPB.Enable(sal_False); 1924cdf0e10cSrcweir aDelAbbrevPB.Enable(); 1925cdf0e10cSrcweir } 1926cdf0e10cSrcweir else 1927cdf0e10cSrcweir { 1928cdf0e10cSrcweir aDoubleCapsED.SetText(pBox->GetSelectEntry()); 1929cdf0e10cSrcweir aNewDoublePB.Enable(sal_False); 1930cdf0e10cSrcweir aDelDoublePB.Enable(); 1931cdf0e10cSrcweir } 1932cdf0e10cSrcweir return 0; 1933cdf0e10cSrcweir } 1934cdf0e10cSrcweir 1935cdf0e10cSrcweir /*-----------------16.10.96 13.02------------------- 1936cdf0e10cSrcweir 1937cdf0e10cSrcweir --------------------------------------------------*/ 1938cdf0e10cSrcweir 1939cdf0e10cSrcweir IMPL_LINK(OfaAutocorrExceptPage, ModifyHdl, Edit*, pEdt) 1940cdf0e10cSrcweir { 1941cdf0e10cSrcweir // sal_Bool bSame = pEdt->GetText() == ->GetSelectEntry(); 1942cdf0e10cSrcweir const String& sEntry = pEdt->GetText(); 1943cdf0e10cSrcweir sal_Bool bEntryLen = 0!= sEntry.Len(); 1944cdf0e10cSrcweir if(pEdt == &aAbbrevED) 1945cdf0e10cSrcweir { 1946cdf0e10cSrcweir sal_Bool bSame = lcl_FindEntry(aAbbrevLB, sEntry, *pCompareClass); 1947cdf0e10cSrcweir if(bSame && sEntry != aAbbrevLB.GetSelectEntry()) 1948cdf0e10cSrcweir pEdt->SetText(aAbbrevLB.GetSelectEntry()); 1949cdf0e10cSrcweir aNewAbbrevPB.Enable(!bSame && bEntryLen); 1950cdf0e10cSrcweir aDelAbbrevPB.Enable(bSame && bEntryLen); 1951cdf0e10cSrcweir } 1952cdf0e10cSrcweir else 1953cdf0e10cSrcweir { 1954cdf0e10cSrcweir sal_Bool bSame = lcl_FindEntry(aDoubleCapsLB, sEntry, *pCompareClass); 1955cdf0e10cSrcweir if(bSame && sEntry != aDoubleCapsLB.GetSelectEntry()) 1956cdf0e10cSrcweir pEdt->SetText(aDoubleCapsLB.GetSelectEntry()); 1957cdf0e10cSrcweir aNewDoublePB.Enable(!bSame && bEntryLen); 1958cdf0e10cSrcweir aDelDoublePB.Enable(bSame && bEntryLen); 1959cdf0e10cSrcweir } 1960cdf0e10cSrcweir return 0; 1961cdf0e10cSrcweir } 1962cdf0e10cSrcweir 1963cdf0e10cSrcweir /*-----------------16.10.96 15.03------------------- 1964cdf0e10cSrcweir 1965cdf0e10cSrcweir --------------------------------------------------*/ 1966cdf0e10cSrcweir 1967cdf0e10cSrcweir void AutoCorrEdit::KeyInput( const KeyEvent& rKEvt ) 1968cdf0e10cSrcweir { 1969cdf0e10cSrcweir const KeyCode aKeyCode = rKEvt.GetKeyCode(); 1970cdf0e10cSrcweir const sal_uInt16 nModifier = aKeyCode.GetModifier(); 1971cdf0e10cSrcweir if( aKeyCode.GetCode() == KEY_RETURN ) 1972cdf0e10cSrcweir { 1973cdf0e10cSrcweir //wird bei Enter nichts getan, dann doch die Basisklasse rufen 1974cdf0e10cSrcweir // um den Dialog zu schliessen 1975cdf0e10cSrcweir if(!nModifier && !aActionLink.Call(this)) 1976cdf0e10cSrcweir Edit::KeyInput(rKEvt); 1977cdf0e10cSrcweir } 1978cdf0e10cSrcweir else if(bSpaces || aKeyCode.GetCode() != KEY_SPACE) 1979cdf0e10cSrcweir Edit::KeyInput(rKEvt); 1980cdf0e10cSrcweir } 1981cdf0e10cSrcweir 1982cdf0e10cSrcweir /*-----------------03.07.97 13:17------------------- 1983cdf0e10cSrcweir 1984cdf0e10cSrcweir --------------------------------------------------*/ 1985cdf0e10cSrcweir 1986cdf0e10cSrcweir enum OfaQuoteOptions 1987cdf0e10cSrcweir { 1988cdf0e10cSrcweir ADD_NONBRK_SPACE, 1989cdf0e10cSrcweir REPLACE_1ST 1990cdf0e10cSrcweir }; 1991cdf0e10cSrcweir 1992cdf0e10cSrcweir SvLBoxEntry* OfaQuoteTabPage::CreateEntry(String& rTxt, sal_uInt16 nCol) 1993cdf0e10cSrcweir { 1994cdf0e10cSrcweir SvLBoxEntry* pEntry = new SvLBoxEntry; 1995cdf0e10cSrcweir 1996cdf0e10cSrcweir if ( !pCheckButtonData ) 1997cdf0e10cSrcweir { 1998cdf0e10cSrcweir pCheckButtonData = new SvLBoxButtonData( &aSwCheckLB ); 1999cdf0e10cSrcweir aSwCheckLB.SetCheckButtonData( pCheckButtonData ); 2000cdf0e10cSrcweir } 2001cdf0e10cSrcweir 2002cdf0e10cSrcweir pEntry->AddItem( new SvLBoxContextBmp( pEntry, 0, Image(), Image(), 0)); // Sonst Puff! 2003cdf0e10cSrcweir 2004cdf0e10cSrcweir String sEmpty; 2005cdf0e10cSrcweir if (nCol == CBCOL_SECOND) 2006cdf0e10cSrcweir pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte 2007cdf0e10cSrcweir else 2008cdf0e10cSrcweir pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) ); 2009cdf0e10cSrcweir 2010cdf0e10cSrcweir if (nCol == CBCOL_FIRST) 2011cdf0e10cSrcweir pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte 2012cdf0e10cSrcweir else 2013cdf0e10cSrcweir pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) ); 2014cdf0e10cSrcweir 2015cdf0e10cSrcweir pEntry->AddItem( new OfaImpBrwString( pEntry, 0, rTxt ) ); 2016cdf0e10cSrcweir 2017cdf0e10cSrcweir return pEntry; 2018cdf0e10cSrcweir } 2019cdf0e10cSrcweir 2020cdf0e10cSrcweir OfaQuoteTabPage::OfaQuoteTabPage( Window* pParent, const SfxItemSet& rSet ) : 2021cdf0e10cSrcweir SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCORR_QUOTE ), rSet), 2022cdf0e10cSrcweir aCheckLB (this, CUI_RES(CLB_SETTINGS )), 2023cdf0e10cSrcweir aSwCheckLB (this, CUI_RES(CLB_SETTINGS )), 2024cdf0e10cSrcweir sHeader1 (CUI_RES( STR_HEADER1 )), 2025cdf0e10cSrcweir sHeader2 (CUI_RES( STR_HEADER2 )), 2026cdf0e10cSrcweir sNonBrkSpace (CUI_RES( ST_NON_BREAK_SPACE )), 2027cdf0e10cSrcweir sOrdinal (CUI_RES( ST_ORDINAL )), 2028cdf0e10cSrcweir pCheckButtonData ( NULL ), 2029cdf0e10cSrcweir 2030cdf0e10cSrcweir aSingleFL (this, CUI_RES(FL_SINGLE )), 2031cdf0e10cSrcweir aSingleTypoCB (this, CUI_RES(CB_SGL_TYPO )), 2032cdf0e10cSrcweir aSglStartQuoteFT (this, CUI_RES(FT_SGL_STARTQUOTE )), 2033cdf0e10cSrcweir aSglStartQuotePB (this, CUI_RES(PB_SGL_STARTQUOTE )), 2034cdf0e10cSrcweir aSglStartExFT (this, CUI_RES(FT_SGSTEX )), 2035cdf0e10cSrcweir aSglEndQuoteFT (this, CUI_RES(FT_SGL_ENDQUOTE )), 2036cdf0e10cSrcweir aSglEndQuotePB (this, CUI_RES(PB_SGL_ENDQUOTE )), 2037cdf0e10cSrcweir aSglEndExFT (this, CUI_RES(FT_SGENEX )), 2038cdf0e10cSrcweir aSglStandardPB (this, CUI_RES(PB_SGL_STD )), 2039cdf0e10cSrcweir 2040cdf0e10cSrcweir aDoubleFL (this, CUI_RES(FL_DOUBLE )), 2041cdf0e10cSrcweir aTypoCB (this, CUI_RES(CB_TYPO )), 2042cdf0e10cSrcweir aStartQuoteFT (this, CUI_RES(FT_STARTQUOTE )), 2043cdf0e10cSrcweir aStartQuotePB (this, CUI_RES(PB_STARTQUOTE )), 2044cdf0e10cSrcweir aDblStartExFT (this, CUI_RES(FT_DBSTEX )), 2045cdf0e10cSrcweir aEndQuoteFT (this, CUI_RES(FT_ENDQUOTE )), 2046cdf0e10cSrcweir aEndQuotePB (this, CUI_RES(PB_ENDQUOTE )), 2047cdf0e10cSrcweir aDblEndExFT (this, CUI_RES(FT_DBECEX )), 2048cdf0e10cSrcweir aDblStandardPB (this, CUI_RES(PB_DBL_STD )), 2049cdf0e10cSrcweir 2050cdf0e10cSrcweir sStartQuoteDlg (CUI_RES(STR_CHANGE_START)), 2051cdf0e10cSrcweir sEndQuoteDlg (CUI_RES(STR_CHANGE_END)), 2052cdf0e10cSrcweir 2053cdf0e10cSrcweir sStandard(CUI_RES(ST_STANDARD)) 2054cdf0e10cSrcweir { 2055*9b8096d0SSteve Yin //aSglStandardPB.SetAccessibleName(String(CUI_RES(STR_PB_SGL_STD) ) ); 2056*9b8096d0SSteve Yin //aDblStandardPB.SetAccessibleName(String(CUI_RES(STR_PB_DBL_STD) ) ); 2057*9b8096d0SSteve Yin //aStartQuotePB.SetAccessibleName( String(CUI_RES(STR_PB_DBL_START) )); 2058*9b8096d0SSteve Yin //aEndQuotePB.SetAccessibleName(String(CUI_RES(STR_PB_DBL_END) )); 2059*9b8096d0SSteve Yin //aSglStartQuotePB.SetAccessibleName(String(CUI_RES(STR_PB_SGL_START) )); 2060*9b8096d0SSteve Yin //aSglEndQuotePB.SetAccessibleName(String(CUI_RES(STR_PB_SGL_END) ) ); 2061cdf0e10cSrcweir 2062cdf0e10cSrcweir FreeResource(); 2063cdf0e10cSrcweir 2064cdf0e10cSrcweir sal_Bool bShowSWOptions = sal_False; 2065cdf0e10cSrcweir 2066cdf0e10cSrcweir aCheckLB.SetHelpId( HID_OFAPAGE_QUOTE_CLB ); 2067cdf0e10cSrcweir aSwCheckLB.SetHelpId( HID_OFAPAGE_QUOTE_SW_CLB ); 2068cdf0e10cSrcweir 2069cdf0e10cSrcweir SFX_ITEMSET_ARG( &rSet, pItem, SfxBoolItem, SID_AUTO_CORRECT_DLG, sal_False ); 2070cdf0e10cSrcweir if ( pItem && pItem->GetValue() ) 2071cdf0e10cSrcweir bShowSWOptions = sal_True; 2072cdf0e10cSrcweir 2073cdf0e10cSrcweir if ( bShowSWOptions ) 2074cdf0e10cSrcweir { 2075cdf0e10cSrcweir static long aStaticTabs[]= 2076cdf0e10cSrcweir { 2077cdf0e10cSrcweir 3, 0, 20, 40 2078cdf0e10cSrcweir }; 2079cdf0e10cSrcweir 2080cdf0e10cSrcweir aSwCheckLB.SetStyle(aSwCheckLB.GetStyle() | WB_HSCROLL| WB_VSCROLL); 2081cdf0e10cSrcweir 2082cdf0e10cSrcweir aSwCheckLB.SvxSimpleTable::SetTabs(aStaticTabs); 2083cdf0e10cSrcweir String sHeader( sHeader1 ); 2084cdf0e10cSrcweir sHeader += '\t'; 2085cdf0e10cSrcweir sHeader += sHeader2; 2086cdf0e10cSrcweir sHeader += '\t'; 2087cdf0e10cSrcweir aSwCheckLB.InsertHeaderEntry( sHeader, HEADERBAR_APPEND, 2088cdf0e10cSrcweir HIB_CENTER | HIB_VCENTER | HIB_FIXEDPOS | HIB_FIXED); 2089cdf0e10cSrcweir aCheckLB.Hide( sal_True ); 2090cdf0e10cSrcweir } 2091cdf0e10cSrcweir else 2092cdf0e10cSrcweir { 2093cdf0e10cSrcweir aSwCheckLB.HideTable( ); 2094cdf0e10cSrcweir } 2095cdf0e10cSrcweir 2096cdf0e10cSrcweir aStartQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl)); 2097cdf0e10cSrcweir aEndQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl)); 2098cdf0e10cSrcweir aSglStartQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl)); 2099cdf0e10cSrcweir aSglEndQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl)); 2100cdf0e10cSrcweir aDblStandardPB.SetClickHdl(LINK(this, OfaQuoteTabPage, StdQuoteHdl)); 2101cdf0e10cSrcweir aSglStandardPB.SetClickHdl(LINK(this, OfaQuoteTabPage, StdQuoteHdl)); 2102cdf0e10cSrcweir 2103*9b8096d0SSteve Yin //IAccessibility2 Implementation 2009----- 2104*9b8096d0SSteve Yin // Move down from the position before FreeResource() 2105*9b8096d0SSteve Yin // For lost help ID issue 2106*9b8096d0SSteve Yin aSglStandardPB.SetAccessibleName(String(CUI_RES(STR_PB_SGL_STD) ) ); 2107*9b8096d0SSteve Yin aDblStandardPB.SetAccessibleName(String(CUI_RES(STR_PB_DBL_STD) ) ); 2108*9b8096d0SSteve Yin aStartQuotePB.SetAccessibleName( String(CUI_RES(STR_PB_DBL_START) )); 2109*9b8096d0SSteve Yin aEndQuotePB.SetAccessibleName(String(CUI_RES(STR_PB_DBL_END) )); 2110*9b8096d0SSteve Yin aSglStartQuotePB.SetAccessibleName(String(CUI_RES(STR_PB_SGL_START) )); 2111*9b8096d0SSteve Yin aSglEndQuotePB.SetAccessibleName(String(CUI_RES(STR_PB_SGL_END) ) ); 2112cdf0e10cSrcweir aSglStartQuotePB.SetAccessibleRelationLabeledBy( &aSglStartQuoteFT ); 2113cdf0e10cSrcweir aSglEndQuotePB.SetAccessibleRelationLabeledBy( &aSglEndQuoteFT ); 2114cdf0e10cSrcweir aSglStartQuotePB.SetAccessibleRelationMemberOf( &aSingleFL ); 2115cdf0e10cSrcweir aSglEndQuotePB.SetAccessibleRelationMemberOf( &aSingleFL ); 2116cdf0e10cSrcweir aStartQuotePB.SetAccessibleRelationLabeledBy( &aStartQuoteFT ); 2117cdf0e10cSrcweir aEndQuotePB.SetAccessibleRelationLabeledBy( &aEndQuoteFT ); 2118cdf0e10cSrcweir aStartQuotePB.SetAccessibleRelationMemberOf( &aDoubleFL ); 2119cdf0e10cSrcweir aEndQuotePB.SetAccessibleRelationMemberOf( &aDoubleFL ); 2120cdf0e10cSrcweir aSglStandardPB.SetAccessibleRelationMemberOf(&aSingleFL); 2121cdf0e10cSrcweir aDblStandardPB.SetAccessibleRelationMemberOf(&aDoubleFL); 2122cdf0e10cSrcweir } 2123cdf0e10cSrcweir /*-----------------03.07.97 13:17------------------- 2124cdf0e10cSrcweir 2125cdf0e10cSrcweir --------------------------------------------------*/ 2126cdf0e10cSrcweir OfaQuoteTabPage::~OfaQuoteTabPage() 2127cdf0e10cSrcweir { 2128cdf0e10cSrcweir delete( pCheckButtonData ); 2129cdf0e10cSrcweir } 2130cdf0e10cSrcweir /*-----------------03.07.97 13:17------------------- 2131cdf0e10cSrcweir 2132cdf0e10cSrcweir --------------------------------------------------*/ 2133cdf0e10cSrcweir SfxTabPage* OfaQuoteTabPage::Create( Window* pParent, 2134cdf0e10cSrcweir const SfxItemSet& rAttrSet) 2135cdf0e10cSrcweir { 2136cdf0e10cSrcweir return new OfaQuoteTabPage(pParent, rAttrSet); 2137cdf0e10cSrcweir } 2138cdf0e10cSrcweir /*-----------------03.07.97 13:18------------------- 2139cdf0e10cSrcweir 2140cdf0e10cSrcweir --------------------------------------------------*/ 2141cdf0e10cSrcweir sal_Bool OfaQuoteTabPage::FillItemSet( SfxItemSet& ) 2142cdf0e10cSrcweir { 2143cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 2144cdf0e10cSrcweir 2145cdf0e10cSrcweir long nFlags = pAutoCorrect->GetFlags(); 2146cdf0e10cSrcweir 2147cdf0e10cSrcweir if ( aCheckLB.IsVisible( ) ) 2148cdf0e10cSrcweir { 2149cdf0e10cSrcweir sal_uInt16 nPos = 0; 2150cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(AddNonBrkSpace, aCheckLB.IsChecked(nPos++)); 2151cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(ChgOrdinalNumber, aCheckLB.IsChecked(nPos++)); 2152cdf0e10cSrcweir } 2153cdf0e10cSrcweir 2154cdf0e10cSrcweir sal_Bool bModified = sal_False; 2155cdf0e10cSrcweir if ( aSwCheckLB.IsVisible( ) ) 2156cdf0e10cSrcweir { 2157cdf0e10cSrcweir SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags(); 2158cdf0e10cSrcweir 2159cdf0e10cSrcweir sal_Bool bCheck = aSwCheckLB.IsChecked(ADD_NONBRK_SPACE, CBCOL_FIRST); 2160cdf0e10cSrcweir bModified |= pOpt->bAddNonBrkSpace != bCheck; 2161cdf0e10cSrcweir pOpt->bAddNonBrkSpace = bCheck; 2162cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(AddNonBrkSpace, 2163cdf0e10cSrcweir aSwCheckLB.IsChecked(ADD_NONBRK_SPACE, CBCOL_SECOND)); 2164cdf0e10cSrcweir 2165cdf0e10cSrcweir bCheck = aSwCheckLB.IsChecked(REPLACE_1ST, CBCOL_FIRST); 2166cdf0e10cSrcweir bModified |= pOpt->bChgOrdinalNumber != bCheck; 2167cdf0e10cSrcweir pOpt->bChgOrdinalNumber = bCheck; 2168cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(ChgOrdinalNumber, 2169cdf0e10cSrcweir aSwCheckLB.IsChecked(REPLACE_1ST, CBCOL_SECOND)); 2170cdf0e10cSrcweir } 2171cdf0e10cSrcweir 2172cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(ChgQuotes, aTypoCB.IsChecked()); 2173cdf0e10cSrcweir pAutoCorrect->SetAutoCorrFlag(ChgSglQuotes, aSingleTypoCB.IsChecked()); 2174cdf0e10cSrcweir sal_Bool bReturn = nFlags != pAutoCorrect->GetFlags(); 2175cdf0e10cSrcweir if(cStartQuote != pAutoCorrect->GetStartDoubleQuote()) 2176cdf0e10cSrcweir { 2177cdf0e10cSrcweir bReturn = sal_True; 2178cdf0e10cSrcweir sal_Unicode cUCS2 = static_cast<sal_Unicode>(cStartQuote); //TODO 2179cdf0e10cSrcweir pAutoCorrect->SetStartDoubleQuote(cUCS2); 2180cdf0e10cSrcweir } 2181cdf0e10cSrcweir if(cEndQuote != pAutoCorrect->GetEndDoubleQuote()) 2182cdf0e10cSrcweir { 2183cdf0e10cSrcweir bReturn = sal_True; 2184cdf0e10cSrcweir sal_Unicode cUCS2 = static_cast<sal_Unicode>(cEndQuote); //TODO 2185cdf0e10cSrcweir pAutoCorrect->SetEndDoubleQuote(cUCS2); 2186cdf0e10cSrcweir } 2187cdf0e10cSrcweir if(cSglStartQuote != pAutoCorrect->GetStartSingleQuote()) 2188cdf0e10cSrcweir { 2189cdf0e10cSrcweir bReturn = sal_True; 2190cdf0e10cSrcweir sal_Unicode cUCS2 = static_cast<sal_Unicode>(cSglStartQuote); //TODO 2191cdf0e10cSrcweir pAutoCorrect->SetStartSingleQuote(cUCS2); 2192cdf0e10cSrcweir } 2193cdf0e10cSrcweir if(cSglEndQuote != pAutoCorrect->GetEndSingleQuote()) 2194cdf0e10cSrcweir { 2195cdf0e10cSrcweir bReturn = sal_True; 2196cdf0e10cSrcweir sal_Unicode cUCS2 = static_cast<sal_Unicode>(cSglEndQuote); //TODO 2197cdf0e10cSrcweir pAutoCorrect->SetEndSingleQuote(cUCS2); 2198cdf0e10cSrcweir } 2199cdf0e10cSrcweir 2200cdf0e10cSrcweir if( bModified || bReturn ) 2201cdf0e10cSrcweir { 2202cdf0e10cSrcweir SvxAutoCorrCfg* pCfg = SvxAutoCorrCfg::Get(); 2203cdf0e10cSrcweir pCfg->SetModified(); 2204cdf0e10cSrcweir pCfg->Commit(); 2205cdf0e10cSrcweir } 2206cdf0e10cSrcweir return bReturn; 2207cdf0e10cSrcweir } 2208cdf0e10cSrcweir /* -----------------23.11.98 16:15------------------- 2209cdf0e10cSrcweir * 2210cdf0e10cSrcweir * --------------------------------------------------*/ 2211cdf0e10cSrcweir void OfaQuoteTabPage::ActivatePage( const SfxItemSet& ) 2212cdf0e10cSrcweir { 2213cdf0e10cSrcweir ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage(sal_False); 2214cdf0e10cSrcweir } 2215cdf0e10cSrcweir /*-----------------03.07.97 13:18------------------- 2216cdf0e10cSrcweir 2217cdf0e10cSrcweir --------------------------------------------------*/ 2218cdf0e10cSrcweir void OfaQuoteTabPage::Reset( const SfxItemSet& ) 2219cdf0e10cSrcweir { 2220cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 2221cdf0e10cSrcweir const long nFlags = pAutoCorrect->GetFlags(); 2222cdf0e10cSrcweir 2223cdf0e10cSrcweir // Initialize the Sw options 2224cdf0e10cSrcweir if ( aSwCheckLB.IsVisible( ) ) 2225cdf0e10cSrcweir { 2226cdf0e10cSrcweir SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags(); 2227cdf0e10cSrcweir 2228cdf0e10cSrcweir aSwCheckLB.SetUpdateMode( sal_False ); 2229cdf0e10cSrcweir aSwCheckLB.Clear(); 2230cdf0e10cSrcweir 2231cdf0e10cSrcweir aSwCheckLB.GetModel()->Insert(CreateEntry(sNonBrkSpace, CBCOL_BOTH )); 2232cdf0e10cSrcweir aSwCheckLB.GetModel()->Insert(CreateEntry(sOrdinal, CBCOL_BOTH )); 2233cdf0e10cSrcweir 2234cdf0e10cSrcweir aSwCheckLB.CheckEntryPos( ADD_NONBRK_SPACE, CBCOL_FIRST, pOpt->bAddNonBrkSpace ); 2235cdf0e10cSrcweir aSwCheckLB.CheckEntryPos( ADD_NONBRK_SPACE, CBCOL_SECOND, 0 != (nFlags & AddNonBrkSpace) ); 2236cdf0e10cSrcweir aSwCheckLB.CheckEntryPos( REPLACE_1ST, CBCOL_FIRST, pOpt->bChgOrdinalNumber ); 2237cdf0e10cSrcweir aSwCheckLB.CheckEntryPos( REPLACE_1ST, CBCOL_SECOND, 0 != (nFlags & ChgOrdinalNumber) ); 2238cdf0e10cSrcweir 2239cdf0e10cSrcweir aSwCheckLB.SetUpdateMode( sal_True ); 2240cdf0e10cSrcweir } 2241cdf0e10cSrcweir 2242cdf0e10cSrcweir // Initialize the non Sw options 2243cdf0e10cSrcweir if ( aCheckLB.IsVisible( ) ) 2244cdf0e10cSrcweir { 2245cdf0e10cSrcweir aCheckLB.SetUpdateMode( sal_False ); 2246cdf0e10cSrcweir aCheckLB.Clear( ); 2247cdf0e10cSrcweir 2248cdf0e10cSrcweir aCheckLB.InsertEntry( sNonBrkSpace ); 2249cdf0e10cSrcweir aCheckLB.InsertEntry( sOrdinal ); 2250cdf0e10cSrcweir 2251cdf0e10cSrcweir sal_uInt16 nPos = 0; 2252cdf0e10cSrcweir aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & AddNonBrkSpace) ); 2253cdf0e10cSrcweir aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgOrdinalNumber) ); 2254cdf0e10cSrcweir 2255cdf0e10cSrcweir aCheckLB.SetUpdateMode( sal_True ); 2256cdf0e10cSrcweir } 2257cdf0e10cSrcweir 2258cdf0e10cSrcweir // Initialize the quote stuffs 2259cdf0e10cSrcweir aTypoCB .Check(0 != (nFlags & ChgQuotes)); 2260cdf0e10cSrcweir aSingleTypoCB .Check(0 != (nFlags & ChgSglQuotes)); 2261cdf0e10cSrcweir aTypoCB .SaveValue(); 2262cdf0e10cSrcweir aSingleTypoCB .SaveValue(); 2263cdf0e10cSrcweir 2264cdf0e10cSrcweir cStartQuote = pAutoCorrect->GetStartDoubleQuote(); 2265cdf0e10cSrcweir cEndQuote = pAutoCorrect->GetEndDoubleQuote(); 2266cdf0e10cSrcweir cSglStartQuote = pAutoCorrect->GetStartSingleQuote(); 2267cdf0e10cSrcweir cSglEndQuote = pAutoCorrect->GetEndSingleQuote(); 2268cdf0e10cSrcweir 2269cdf0e10cSrcweir aSglStartExFT .SetText(ChangeStringExt_Impl(cSglStartQuote)); 2270cdf0e10cSrcweir aSglEndExFT .SetText(ChangeStringExt_Impl(cSglEndQuote)); 2271cdf0e10cSrcweir aDblStartExFT .SetText(ChangeStringExt_Impl(cStartQuote)); 2272cdf0e10cSrcweir aDblEndExFT .SetText(ChangeStringExt_Impl(cEndQuote)); 2273cdf0e10cSrcweir } 2274cdf0e10cSrcweir 2275cdf0e10cSrcweir 2276cdf0e10cSrcweir /*-----------------15.10.96 16.42------------------- 2277cdf0e10cSrcweir 2278cdf0e10cSrcweir --------------------------------------------------*/ 2279cdf0e10cSrcweir #define SGL_START 0 2280cdf0e10cSrcweir #define DBL_START 1 2281cdf0e10cSrcweir #define SGL_END 2 2282cdf0e10cSrcweir #define DBL_END 3 2283cdf0e10cSrcweir 2284cdf0e10cSrcweir 2285cdf0e10cSrcweir IMPL_LINK( OfaQuoteTabPage, QuoteHdl, PushButton*, pBtn ) 2286cdf0e10cSrcweir { 2287cdf0e10cSrcweir sal_uInt16 nMode = SGL_START; 2288cdf0e10cSrcweir if(pBtn == &aSglEndQuotePB) 2289cdf0e10cSrcweir nMode = SGL_END; 2290cdf0e10cSrcweir else if(pBtn == &aStartQuotePB) 2291cdf0e10cSrcweir nMode = DBL_START; 2292cdf0e10cSrcweir else if(pBtn == &aEndQuotePB) 2293cdf0e10cSrcweir nMode = DBL_END; 2294cdf0e10cSrcweir // Zeichenauswahl-Dialog starten 2295cdf0e10cSrcweir SvxCharacterMap* pMap = new SvxCharacterMap( this, sal_True ); 2296cdf0e10cSrcweir pMap->SetCharFont( OutputDevice::GetDefaultFont(DEFAULTFONT_LATIN_TEXT, 2297cdf0e10cSrcweir LANGUAGE_ENGLISH_US, DEFAULTFONT_FLAGS_ONLYONE, 0 )); 2298cdf0e10cSrcweir pMap->SetText(nMode < SGL_END ? sStartQuoteDlg : sEndQuoteDlg ); 2299cdf0e10cSrcweir sal_UCS4 cDlg; 2300cdf0e10cSrcweir //The two lines below are added by BerryJia for Bug95846 Time:2002-8-13 15:50 2301cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 2302cdf0e10cSrcweir LanguageType eLang = Application::GetSettings().GetLanguage(); 2303cdf0e10cSrcweir switch( nMode ) 2304cdf0e10cSrcweir { 2305cdf0e10cSrcweir case SGL_START: 2306cdf0e10cSrcweir cDlg = cSglStartQuote; 2307cdf0e10cSrcweir if(cDlg == 0) 2308cdf0e10cSrcweir cDlg = pAutoCorrect->GetQuote('\'',sal_True,eLang); //add by BerryJia for Bug95846 Time:2002-8-13 15:50 2309cdf0e10cSrcweir break; 2310cdf0e10cSrcweir case SGL_END: 2311cdf0e10cSrcweir cDlg = cSglEndQuote; 2312cdf0e10cSrcweir if(cDlg == 0) 2313cdf0e10cSrcweir cDlg = pAutoCorrect->GetQuote('\'',sal_False,eLang); //add by BerryJia for Bug95846 Time:2002-8-13 15:50 2314cdf0e10cSrcweir break; 2315cdf0e10cSrcweir case DBL_START: 2316cdf0e10cSrcweir cDlg = cStartQuote; 2317cdf0e10cSrcweir if(cDlg == 0) 2318cdf0e10cSrcweir cDlg = pAutoCorrect->GetQuote('\"',sal_True,eLang); //add by BerryJia for Bug95846 Time:2002-8-13 15:50 2319cdf0e10cSrcweir break; 2320cdf0e10cSrcweir case DBL_END: 2321cdf0e10cSrcweir cDlg = cEndQuote; 2322cdf0e10cSrcweir if(cDlg == 0) 2323cdf0e10cSrcweir cDlg = pAutoCorrect->GetQuote('\"',sal_False,eLang); //add by BerryJia for Bug95846 Time:2002-8-13 15:50 2324cdf0e10cSrcweir break; 2325cdf0e10cSrcweir default: 2326cdf0e10cSrcweir DBG_ERROR("svx::OfaQuoteTabPage::QuoteHdl(), how to initialize cDlg?" ); 2327cdf0e10cSrcweir cDlg = 0; 2328cdf0e10cSrcweir break; 2329cdf0e10cSrcweir 2330cdf0e10cSrcweir } 2331cdf0e10cSrcweir pMap->SetChar( cDlg ); 2332cdf0e10cSrcweir pMap->DisableFontSelection(); 2333cdf0e10cSrcweir if(pMap->Execute() == RET_OK) 2334cdf0e10cSrcweir { 2335cdf0e10cSrcweir sal_UCS4 cNewChar = pMap->GetChar(); 2336cdf0e10cSrcweir switch( nMode ) 2337cdf0e10cSrcweir { 2338cdf0e10cSrcweir case SGL_START: 2339cdf0e10cSrcweir cSglStartQuote = cNewChar; 2340cdf0e10cSrcweir aSglStartExFT.SetText(ChangeStringExt_Impl(cNewChar)); 2341cdf0e10cSrcweir break; 2342cdf0e10cSrcweir case SGL_END: 2343cdf0e10cSrcweir cSglEndQuote = cNewChar; 2344cdf0e10cSrcweir aSglEndExFT.SetText(ChangeStringExt_Impl(cNewChar)); 2345cdf0e10cSrcweir break; 2346cdf0e10cSrcweir case DBL_START: 2347cdf0e10cSrcweir cStartQuote = cNewChar; 2348cdf0e10cSrcweir aDblStartExFT.SetText(ChangeStringExt_Impl(cNewChar)); 2349cdf0e10cSrcweir break; 2350cdf0e10cSrcweir case DBL_END: 2351cdf0e10cSrcweir cEndQuote = cNewChar; 2352cdf0e10cSrcweir aDblEndExFT.SetText(ChangeStringExt_Impl(cNewChar)); 2353cdf0e10cSrcweir break; 2354cdf0e10cSrcweir } 2355cdf0e10cSrcweir } 2356cdf0e10cSrcweir delete pMap; 2357cdf0e10cSrcweir 2358cdf0e10cSrcweir return 0; 2359cdf0e10cSrcweir } 2360cdf0e10cSrcweir 2361cdf0e10cSrcweir /*-----------------27.06.97 09.55------------------- 2362cdf0e10cSrcweir 2363cdf0e10cSrcweir --------------------------------------------------*/ 2364cdf0e10cSrcweir IMPL_LINK( OfaQuoteTabPage, StdQuoteHdl, PushButton*, pBtn ) 2365cdf0e10cSrcweir { 2366cdf0e10cSrcweir if(pBtn == &aDblStandardPB) 2367cdf0e10cSrcweir { 2368cdf0e10cSrcweir cStartQuote = 0; 2369cdf0e10cSrcweir aDblStartExFT.SetText(ChangeStringExt_Impl(0)); 2370cdf0e10cSrcweir cEndQuote = 0; 2371cdf0e10cSrcweir aDblEndExFT.SetText(ChangeStringExt_Impl(0)); 2372cdf0e10cSrcweir 2373cdf0e10cSrcweir } 2374cdf0e10cSrcweir else 2375cdf0e10cSrcweir { 2376cdf0e10cSrcweir cSglStartQuote = 0; 2377cdf0e10cSrcweir aSglStartExFT.SetText(ChangeStringExt_Impl(0)); 2378cdf0e10cSrcweir cSglEndQuote = 0; 2379cdf0e10cSrcweir aSglEndExFT.SetText(ChangeStringExt_Impl(0)); 2380cdf0e10cSrcweir } 2381cdf0e10cSrcweir return 0; 2382cdf0e10cSrcweir } 2383cdf0e10cSrcweir 2384cdf0e10cSrcweir // -------------------------------------------------- 2385cdf0e10cSrcweir 2386cdf0e10cSrcweir String OfaQuoteTabPage::ChangeStringExt_Impl( sal_UCS4 cChar ) 2387cdf0e10cSrcweir { 2388cdf0e10cSrcweir if( !cChar ) 2389cdf0e10cSrcweir return sStandard; 2390cdf0e10cSrcweir 2391cdf0e10cSrcweir // convert codepoint value to unicode-hex string 2392cdf0e10cSrcweir sal_UCS4 aStrCodes[32] = { 0, ' ', '(', 'U', '+', '0' }; 2393cdf0e10cSrcweir aStrCodes[0] = cChar; 2394cdf0e10cSrcweir int nFullLen = 5; 2395cdf0e10cSrcweir int nHexLen = 4; 2396cdf0e10cSrcweir while( (cChar >> (4*nHexLen)) != 0 ) 2397cdf0e10cSrcweir ++nHexLen; 2398cdf0e10cSrcweir for( int i = nHexLen; --i >= 0;) 2399cdf0e10cSrcweir { 2400cdf0e10cSrcweir sal_UCS4 cHexDigit = ((cChar >> (4*i)) & 0x0f) + '0'; 2401cdf0e10cSrcweir if( cHexDigit > '9' ) 2402cdf0e10cSrcweir cHexDigit += 'A' - ('9' + 1); 2403cdf0e10cSrcweir aStrCodes[ nFullLen++ ] = cHexDigit; 2404cdf0e10cSrcweir } 2405cdf0e10cSrcweir aStrCodes[ nFullLen++ ] = ')'; 2406cdf0e10cSrcweir // using the new UCS4 constructor 2407cdf0e10cSrcweir rtl::OUString aOUStr( aStrCodes, nFullLen ); 2408cdf0e10cSrcweir return aOUStr; 2409cdf0e10cSrcweir } 2410cdf0e10cSrcweir 2411cdf0e10cSrcweir OfaAutoCompleteTabPage::OfaAutoCompleteTabPage( Window* pParent, 2412cdf0e10cSrcweir const SfxItemSet& rSet ) 2413cdf0e10cSrcweir : SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_AUTOCOMPLETE_OPTIONS ), rSet), 2414cdf0e10cSrcweir aCBActiv (this, CUI_RES(CB_ACTIV)), 2415cdf0e10cSrcweir aCBAppendSpace (this, CUI_RES(CB_APPEND_SPACE)), 2416cdf0e10cSrcweir aCBAsTip (this, CUI_RES(CB_AS_TIP)), 2417cdf0e10cSrcweir aCBCollect (this, CUI_RES(CB_COLLECT)), 2418cdf0e10cSrcweir aCBRemoveList (this, CUI_RES(CB_REMOVE_LIST)), 2419cdf0e10cSrcweir aFTExpandKey (this, CUI_RES(FT_EXPAND_KEY)), 2420cdf0e10cSrcweir aDCBExpandKey (this, CUI_RES(DCB_EXPAND_KEY)), 2421cdf0e10cSrcweir aFTMinWordlen (this, CUI_RES(FT_MIN_WORDLEN)), 2422cdf0e10cSrcweir aNFMinWordlen (this, CUI_RES(NF_MIN_WORDLEN)), 2423cdf0e10cSrcweir aFTMaxEntries (this, CUI_RES(FT_MAX_ENTRIES)), 2424cdf0e10cSrcweir aNFMaxEntries (this, CUI_RES(NF_MAX_ENTRIES)), 2425cdf0e10cSrcweir aLBEntries (*this, CUI_RES(LB_ENTRIES)), 2426cdf0e10cSrcweir aPBEntries (this, CUI_RES(PB_ENTRIES)), 2427cdf0e10cSrcweir pAutoCmpltList( 0 ), 2428cdf0e10cSrcweir nAutoCmpltListCnt( 0 ) 2429cdf0e10cSrcweir { 2430cdf0e10cSrcweir FreeResource(); 2431cdf0e10cSrcweir 2432cdf0e10cSrcweir // the defined KEYs 2433cdf0e10cSrcweir static const sal_uInt16 aKeyCodes[] = { 2434cdf0e10cSrcweir KEY_END, 2435cdf0e10cSrcweir KEY_RETURN, 2436cdf0e10cSrcweir KEY_SPACE, 2437cdf0e10cSrcweir KEY_RIGHT, 2438cdf0e10cSrcweir KEY_TAB, 2439cdf0e10cSrcweir 0 2440cdf0e10cSrcweir }; 2441cdf0e10cSrcweir 2442cdf0e10cSrcweir for( const sal_uInt16* pKeys = aKeyCodes; *pKeys; ++pKeys ) 2443cdf0e10cSrcweir { 2444cdf0e10cSrcweir KeyCode aKCode( *pKeys ); 2445cdf0e10cSrcweir sal_uInt16 nPos = aDCBExpandKey.InsertEntry( aKCode.GetName() ); 2446cdf0e10cSrcweir aDCBExpandKey.SetEntryData( nPos, (void*)(sal_uLong)*pKeys ); 2447cdf0e10cSrcweir if( KEY_RETURN == *pKeys ) // default to RETURN 2448cdf0e10cSrcweir aDCBExpandKey.SelectEntryPos( nPos ); 2449cdf0e10cSrcweir } 2450cdf0e10cSrcweir 2451cdf0e10cSrcweir aPBEntries.SetClickHdl(LINK(this, OfaAutoCompleteTabPage, DeleteHdl)); 2452cdf0e10cSrcweir aCBActiv.SetToggleHdl(LINK(this, OfaAutoCompleteTabPage, CheckHdl)); 2453cdf0e10cSrcweir aCBCollect.SetToggleHdl(LINK(this, OfaAutoCompleteTabPage, CheckHdl)); 2454cdf0e10cSrcweir aLBEntries.SetAccessibleRelationLabeledBy(&aLBEntries); 2455cdf0e10cSrcweir } 2456cdf0e10cSrcweir 2457cdf0e10cSrcweir OfaAutoCompleteTabPage::~OfaAutoCompleteTabPage() 2458cdf0e10cSrcweir { 2459cdf0e10cSrcweir } 2460cdf0e10cSrcweir 2461cdf0e10cSrcweir SfxTabPage* OfaAutoCompleteTabPage::Create( Window* pParent, 2462cdf0e10cSrcweir const SfxItemSet& rSet) 2463cdf0e10cSrcweir { 2464cdf0e10cSrcweir return new OfaAutoCompleteTabPage( pParent, rSet ); 2465cdf0e10cSrcweir } 2466cdf0e10cSrcweir 2467cdf0e10cSrcweir sal_Bool OfaAutoCompleteTabPage::FillItemSet( SfxItemSet& ) 2468cdf0e10cSrcweir { 2469cdf0e10cSrcweir sal_Bool bModified = sal_False, bCheck; 2470cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 2471cdf0e10cSrcweir SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags(); 2472cdf0e10cSrcweir sal_uInt16 nVal; 2473cdf0e10cSrcweir 2474cdf0e10cSrcweir bCheck = aCBActiv.IsChecked(); 2475cdf0e10cSrcweir bModified |= pOpt->bAutoCompleteWords != bCheck; 2476cdf0e10cSrcweir pOpt->bAutoCompleteWords = bCheck; 2477cdf0e10cSrcweir bCheck = aCBCollect.IsChecked(); 2478cdf0e10cSrcweir bModified |= pOpt->bAutoCmpltCollectWords != bCheck; 2479cdf0e10cSrcweir pOpt->bAutoCmpltCollectWords = bCheck; 2480cdf0e10cSrcweir bCheck = !aCBRemoveList.IsChecked(); // inverted value! 2481cdf0e10cSrcweir bModified |= pOpt->bAutoCmpltKeepList != bCheck; 2482cdf0e10cSrcweir pOpt->bAutoCmpltKeepList = bCheck; 2483cdf0e10cSrcweir bCheck = aCBAppendSpace.IsChecked(); 2484cdf0e10cSrcweir bModified |= pOpt->bAutoCmpltAppendBlanc != bCheck; 2485cdf0e10cSrcweir pOpt->bAutoCmpltAppendBlanc = bCheck; 2486cdf0e10cSrcweir bCheck = aCBAsTip.IsChecked(); 2487cdf0e10cSrcweir bModified |= pOpt->bAutoCmpltShowAsTip != bCheck; 2488cdf0e10cSrcweir pOpt->bAutoCmpltShowAsTip = bCheck; 2489cdf0e10cSrcweir 2490cdf0e10cSrcweir nVal = (sal_uInt16)aNFMinWordlen.GetValue(); 2491cdf0e10cSrcweir bModified |= nVal != pOpt->nAutoCmpltWordLen; 2492cdf0e10cSrcweir pOpt->nAutoCmpltWordLen = nVal; 2493cdf0e10cSrcweir 2494cdf0e10cSrcweir nVal = (sal_uInt16)aNFMaxEntries.GetValue(); 2495cdf0e10cSrcweir bModified |= nVal != pOpt->nAutoCmpltListLen; 2496cdf0e10cSrcweir pOpt->nAutoCmpltListLen = nVal; 2497cdf0e10cSrcweir 2498cdf0e10cSrcweir nVal = aDCBExpandKey.GetSelectEntryPos(); 2499cdf0e10cSrcweir if( nVal < aDCBExpandKey.GetEntryCount() ) 2500cdf0e10cSrcweir { 2501cdf0e10cSrcweir sal_uLong nKey = (sal_uLong)aDCBExpandKey.GetEntryData( nVal ); 2502cdf0e10cSrcweir bModified |= nKey != pOpt->nAutoCmpltExpandKey; 2503cdf0e10cSrcweir pOpt->nAutoCmpltExpandKey = (sal_uInt16)nKey; 2504cdf0e10cSrcweir } 2505cdf0e10cSrcweir 2506cdf0e10cSrcweir if( pAutoCmpltList && nAutoCmpltListCnt != aLBEntries.GetEntryCount() ) 2507cdf0e10cSrcweir { 2508cdf0e10cSrcweir bModified = sal_True; 2509cdf0e10cSrcweir pOpt->pAutoCmpltList = pAutoCmpltList; 2510cdf0e10cSrcweir } 2511cdf0e10cSrcweir if( bModified ) 2512cdf0e10cSrcweir { 2513cdf0e10cSrcweir SvxAutoCorrCfg* pCfg = SvxAutoCorrCfg::Get(); 2514cdf0e10cSrcweir pCfg->SetModified(); 2515cdf0e10cSrcweir pCfg->Commit(); 2516cdf0e10cSrcweir } 2517cdf0e10cSrcweir return sal_True; 2518cdf0e10cSrcweir } 2519cdf0e10cSrcweir 2520cdf0e10cSrcweir void OfaAutoCompleteTabPage::Reset( const SfxItemSet& ) 2521cdf0e10cSrcweir { 2522cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 2523cdf0e10cSrcweir SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags(); 2524cdf0e10cSrcweir 2525cdf0e10cSrcweir aCBActiv.Check( 0 != pOpt->bAutoCompleteWords ); 2526cdf0e10cSrcweir aCBCollect.Check( 0 != pOpt->bAutoCmpltCollectWords ); 2527cdf0e10cSrcweir aCBRemoveList.Check( !pOpt->bAutoCmpltKeepList ); //inverted value! 2528cdf0e10cSrcweir aCBAppendSpace.Check( 0 != pOpt->bAutoCmpltAppendBlanc ); 2529cdf0e10cSrcweir aCBAsTip.Check( 0 != pOpt->bAutoCmpltShowAsTip ); 2530cdf0e10cSrcweir 2531cdf0e10cSrcweir aNFMinWordlen.SetValue( pOpt->nAutoCmpltWordLen ); 2532cdf0e10cSrcweir aNFMaxEntries.SetValue( pOpt->nAutoCmpltListLen ); 2533cdf0e10cSrcweir 2534cdf0e10cSrcweir // select the specific KeyCode: 2535cdf0e10cSrcweir { 2536cdf0e10cSrcweir sal_uLong nKey = pOpt->nAutoCmpltExpandKey; 2537cdf0e10cSrcweir for( sal_uInt16 n = 0, nCnt = aDCBExpandKey.GetEntryCount(); n < nCnt; ++n ) 2538cdf0e10cSrcweir if( nKey == (sal_uLong)aDCBExpandKey.GetEntryData( n )) 2539cdf0e10cSrcweir { 2540cdf0e10cSrcweir aDCBExpandKey.SelectEntryPos( n ); 2541cdf0e10cSrcweir break; 2542cdf0e10cSrcweir } 2543cdf0e10cSrcweir } 2544cdf0e10cSrcweir 2545cdf0e10cSrcweir if( pOpt->pAutoCmpltList && pOpt->pAutoCmpltList->Count() ) 2546cdf0e10cSrcweir { 2547cdf0e10cSrcweir pAutoCmpltList = (SvStringsISortDtor*)pOpt->pAutoCmpltList; 2548cdf0e10cSrcweir pOpt->pAutoCmpltList = 0; 2549cdf0e10cSrcweir nAutoCmpltListCnt = pAutoCmpltList->Count(); 2550cdf0e10cSrcweir for( sal_uInt16 n = 0; n < nAutoCmpltListCnt; ++n ) 2551cdf0e10cSrcweir { 2552cdf0e10cSrcweir const StringPtr pStr = pAutoCmpltList->GetObject( n ); 2553cdf0e10cSrcweir sal_uInt16 nPos = aLBEntries.InsertEntry( *pStr ); 2554cdf0e10cSrcweir aLBEntries.SetEntryData( nPos, (void*)pStr ); 2555cdf0e10cSrcweir } 2556cdf0e10cSrcweir } 2557cdf0e10cSrcweir else 2558cdf0e10cSrcweir { 2559cdf0e10cSrcweir aLBEntries.Disable(); 2560cdf0e10cSrcweir aPBEntries.Disable(); 2561cdf0e10cSrcweir } 2562cdf0e10cSrcweir 2563cdf0e10cSrcweir CheckHdl( &aCBActiv ); 2564cdf0e10cSrcweir CheckHdl( &aCBCollect ); 2565cdf0e10cSrcweir } 2566cdf0e10cSrcweir 2567cdf0e10cSrcweir void OfaAutoCompleteTabPage::ActivatePage( const SfxItemSet& ) 2568cdf0e10cSrcweir { 2569cdf0e10cSrcweir ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage( sal_False ); 2570cdf0e10cSrcweir } 2571cdf0e10cSrcweir 2572cdf0e10cSrcweir IMPL_LINK( OfaAutoCompleteTabPage, DeleteHdl, PushButton*, EMPTYARG ) 2573cdf0e10cSrcweir { 2574cdf0e10cSrcweir sal_uInt16 nSelCnt = pAutoCmpltList ? aLBEntries.GetSelectEntryCount() : 0; 2575cdf0e10cSrcweir while( nSelCnt ) 2576cdf0e10cSrcweir { 2577cdf0e10cSrcweir sal_uInt16 nPos = aLBEntries.GetSelectEntryPos( --nSelCnt ); 2578cdf0e10cSrcweir const StringPtr pStr = (StringPtr)aLBEntries.GetEntryData( nPos ); 2579cdf0e10cSrcweir aLBEntries.RemoveEntry( nPos ); 2580cdf0e10cSrcweir nPos = pAutoCmpltList->GetPos( pStr ); 2581cdf0e10cSrcweir if( USHRT_MAX != nPos ) 2582cdf0e10cSrcweir pAutoCmpltList->Remove( nPos ); 2583cdf0e10cSrcweir } 2584cdf0e10cSrcweir return 0; 2585cdf0e10cSrcweir } 2586cdf0e10cSrcweir 2587cdf0e10cSrcweir IMPL_LINK( OfaAutoCompleteTabPage, CheckHdl, CheckBox*, pBox ) 2588cdf0e10cSrcweir { 2589cdf0e10cSrcweir sal_Bool bEnable = pBox->IsChecked(); 2590cdf0e10cSrcweir if( pBox == &aCBActiv ) 2591cdf0e10cSrcweir { 2592cdf0e10cSrcweir aCBAppendSpace.Enable( bEnable ); 2593cdf0e10cSrcweir aCBAppendSpace.Enable( bEnable ); 2594cdf0e10cSrcweir aCBAsTip.Enable( bEnable ); 2595cdf0e10cSrcweir aDCBExpandKey.Enable( bEnable ); 2596cdf0e10cSrcweir } 2597cdf0e10cSrcweir else if(&aCBCollect == pBox) 2598cdf0e10cSrcweir aCBRemoveList.Enable( bEnable ); 2599cdf0e10cSrcweir return 0; 2600cdf0e10cSrcweir } 2601cdf0e10cSrcweir 2602cdf0e10cSrcweir void OfaAutoCompleteTabPage::CopyToClipboard() const 2603cdf0e10cSrcweir { 2604cdf0e10cSrcweir sal_uInt16 nSelCnt = aLBEntries.GetSelectEntryCount(); 2605cdf0e10cSrcweir if( pAutoCmpltList && nSelCnt ) 2606cdf0e10cSrcweir { 2607cdf0e10cSrcweir TransferDataContainer* pCntnr = new TransferDataContainer; 2608cdf0e10cSrcweir ::com::sun::star::uno::Reference< 2609cdf0e10cSrcweir ::com::sun::star::datatransfer::XTransferable > xRef( pCntnr ); 2610cdf0e10cSrcweir 2611cdf0e10cSrcweir ByteString sData; 2612cdf0e10cSrcweir const sal_Char* pLineEnd = 2613cdf0e10cSrcweir #if defined(UNX) 2614cdf0e10cSrcweir "\012"; 2615cdf0e10cSrcweir #else 2616cdf0e10cSrcweir "\015\012"; 2617cdf0e10cSrcweir #endif 2618cdf0e10cSrcweir 2619cdf0e10cSrcweir rtl_TextEncoding nEncode = gsl_getSystemTextEncoding(); 2620cdf0e10cSrcweir 2621cdf0e10cSrcweir for( sal_uInt16 n = 0; n < nSelCnt; ++n ) 2622cdf0e10cSrcweir { 2623cdf0e10cSrcweir sData += ByteString( aLBEntries.GetSelectEntry( n ), nEncode ); 2624cdf0e10cSrcweir sData += pLineEnd; 2625cdf0e10cSrcweir } 2626cdf0e10cSrcweir pCntnr->CopyByteString( SOT_FORMAT_STRING, sData ); 2627cdf0e10cSrcweir pCntnr->CopyToClipboard( (Window*)this ); 2628cdf0e10cSrcweir } 2629cdf0e10cSrcweir } 2630cdf0e10cSrcweir 2631cdf0e10cSrcweir long OfaAutoCompleteTabPage::AutoCompleteMultiListBox::PreNotify( 2632cdf0e10cSrcweir NotifyEvent& rNEvt ) 2633cdf0e10cSrcweir { 2634cdf0e10cSrcweir long nHandled = MultiListBox::PreNotify( rNEvt ); 2635cdf0e10cSrcweir 2636cdf0e10cSrcweir if( !nHandled && EVENT_KEYUP == rNEvt.GetType() ) 2637cdf0e10cSrcweir { 2638cdf0e10cSrcweir const KeyCode& rKeyCode = rNEvt.GetKeyEvent()->GetKeyCode(); 2639cdf0e10cSrcweir switch( rKeyCode.GetModifier() | rKeyCode.GetCode() ) 2640cdf0e10cSrcweir { 2641cdf0e10cSrcweir case KEY_DELETE: 2642cdf0e10cSrcweir rPage.DeleteHdl( 0 ); 2643cdf0e10cSrcweir nHandled = 1; 2644cdf0e10cSrcweir break; 2645cdf0e10cSrcweir 2646cdf0e10cSrcweir default: 2647cdf0e10cSrcweir if( KEYFUNC_COPY == rKeyCode.GetFunction() ) 2648cdf0e10cSrcweir { 2649cdf0e10cSrcweir rPage.CopyToClipboard(); 2650cdf0e10cSrcweir nHandled = 1; 2651cdf0e10cSrcweir } 2652cdf0e10cSrcweir break; 2653cdf0e10cSrcweir } 2654cdf0e10cSrcweir } 2655cdf0e10cSrcweir return nHandled; 2656cdf0e10cSrcweir } 2657cdf0e10cSrcweir 2658cdf0e10cSrcweir // class OfaSmartTagOptionsTabPage --------------------------------------------- 2659cdf0e10cSrcweir 2660cdf0e10cSrcweir OfaSmartTagOptionsTabPage::OfaSmartTagOptionsTabPage( Window* pParent, 2661cdf0e10cSrcweir const SfxItemSet& rSet ) 2662cdf0e10cSrcweir : SfxTabPage(pParent, CUI_RES( RID_OFAPAGE_SMARTTAG_OPTIONS ), rSet), 2663cdf0e10cSrcweir m_aMainCB( this, CUI_RES(CB_SMARTTAGS) ), 2664cdf0e10cSrcweir m_aSmartTagTypesLB( this, CUI_RES(LB_SMARTTAGS) ), 2665cdf0e10cSrcweir m_aPropertiesPB( this, CUI_RES(PB_SMARTTAGS) ), 2666cdf0e10cSrcweir m_aTitleFT( this, CUI_RES(FT_SMARTTAGS) ) 2667cdf0e10cSrcweir { 2668cdf0e10cSrcweir FreeResource(); 2669cdf0e10cSrcweir 2670cdf0e10cSrcweir // some options for the list box: 2671cdf0e10cSrcweir m_aSmartTagTypesLB.SetStyle( m_aSmartTagTypesLB.GetStyle() | WB_HSCROLL | WB_HIDESELECTION ); 2672cdf0e10cSrcweir m_aSmartTagTypesLB.SetHighlightRange(); 2673cdf0e10cSrcweir 2674cdf0e10cSrcweir // set the handlers: 2675cdf0e10cSrcweir m_aMainCB.SetToggleHdl(LINK(this, OfaSmartTagOptionsTabPage, CheckHdl)); 2676cdf0e10cSrcweir m_aPropertiesPB.SetClickHdl(LINK(this, OfaSmartTagOptionsTabPage, ClickHdl)); 2677cdf0e10cSrcweir m_aSmartTagTypesLB.SetSelectHdl(LINK(this, OfaSmartTagOptionsTabPage, SelectHdl)); 2678cdf0e10cSrcweir } 2679cdf0e10cSrcweir 2680cdf0e10cSrcweir OfaSmartTagOptionsTabPage::~OfaSmartTagOptionsTabPage() 2681cdf0e10cSrcweir { 2682cdf0e10cSrcweir 2683cdf0e10cSrcweir } 2684cdf0e10cSrcweir 2685cdf0e10cSrcweir SfxTabPage* OfaSmartTagOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet) 2686cdf0e10cSrcweir { 2687cdf0e10cSrcweir return new OfaSmartTagOptionsTabPage( pParent, rSet ); 2688cdf0e10cSrcweir } 2689cdf0e10cSrcweir 2690cdf0e10cSrcweir /** This struct is used to associate list box entries with smart tag data 2691cdf0e10cSrcweir */ 2692cdf0e10cSrcweir struct ImplSmartTagLBUserData 2693cdf0e10cSrcweir { 2694cdf0e10cSrcweir rtl::OUString maSmartTagType; 2695cdf0e10cSrcweir uno::Reference< smarttags::XSmartTagRecognizer > mxRec; 2696cdf0e10cSrcweir sal_Int32 mnSmartTagIdx; 2697cdf0e10cSrcweir 2698cdf0e10cSrcweir ImplSmartTagLBUserData( const rtl::OUString& rSmartTagType, 2699cdf0e10cSrcweir uno::Reference< smarttags::XSmartTagRecognizer > xRec, 2700cdf0e10cSrcweir sal_Int32 nSmartTagIdx ) : 2701cdf0e10cSrcweir maSmartTagType( rSmartTagType ), 2702cdf0e10cSrcweir mxRec( xRec ), 2703cdf0e10cSrcweir mnSmartTagIdx( nSmartTagIdx ) {} 2704cdf0e10cSrcweir }; 2705cdf0e10cSrcweir 2706cdf0e10cSrcweir /** Clears m_aSmartTagTypesLB 2707cdf0e10cSrcweir */ 2708cdf0e10cSrcweir void OfaSmartTagOptionsTabPage::ClearListBox() 2709cdf0e10cSrcweir { 2710cdf0e10cSrcweir const sal_uLong nCount = m_aSmartTagTypesLB.GetEntryCount(); 2711cdf0e10cSrcweir for ( sal_uInt16 i = 0; i < nCount; ++i ) 2712cdf0e10cSrcweir { 2713cdf0e10cSrcweir const SvLBoxEntry* pEntry = m_aSmartTagTypesLB.GetEntry(i); 2714cdf0e10cSrcweir const ImplSmartTagLBUserData* pUserData = static_cast< ImplSmartTagLBUserData* >(pEntry->GetUserData()); 2715cdf0e10cSrcweir delete pUserData; 2716cdf0e10cSrcweir } 2717cdf0e10cSrcweir 2718cdf0e10cSrcweir m_aSmartTagTypesLB.Clear(); 2719cdf0e10cSrcweir } 2720cdf0e10cSrcweir 2721cdf0e10cSrcweir /** Inserts items into m_aSmartTagTypesLB 2722cdf0e10cSrcweir */ 2723cdf0e10cSrcweir void OfaSmartTagOptionsTabPage::FillListBox( const SmartTagMgr& rSmartTagMgr ) 2724cdf0e10cSrcweir { 2725cdf0e10cSrcweir // first we have to clear the list box: 2726cdf0e10cSrcweir ClearListBox(); 2727cdf0e10cSrcweir 2728cdf0e10cSrcweir // fill list box: 2729cdf0e10cSrcweir const sal_uInt32 nNumberOfRecognizers = rSmartTagMgr.NumberOfRecognizers(); 2730cdf0e10cSrcweir const lang::Locale aLocale( SvxCreateLocale( eLastDialogLanguage ) ); 2731cdf0e10cSrcweir std::vector< ActionReference > aActionReferences; 2732cdf0e10cSrcweir 2733cdf0e10cSrcweir for ( sal_uInt32 i = 0; i < nNumberOfRecognizers; ++i ) 2734cdf0e10cSrcweir { 2735cdf0e10cSrcweir uno::Reference< smarttags::XSmartTagRecognizer > xRec = rSmartTagMgr.GetRecognizer(i); 2736cdf0e10cSrcweir 2737cdf0e10cSrcweir const rtl::OUString aName = xRec->getName( aLocale ); 2738cdf0e10cSrcweir const rtl::OUString aDesc = xRec->getDescription( aLocale ); 2739cdf0e10cSrcweir const sal_Int32 nNumberOfSupportedSmartTags = xRec->getSmartTagCount(); 2740cdf0e10cSrcweir 2741cdf0e10cSrcweir for ( sal_Int32 j = 0; j < nNumberOfSupportedSmartTags; ++j ) 2742cdf0e10cSrcweir { 2743cdf0e10cSrcweir const rtl::OUString aSmartTagType = xRec->getSmartTagName(j); 2744cdf0e10cSrcweir rtl::OUString aSmartTagCaption = rSmartTagMgr.GetSmartTagCaption( aSmartTagType, aLocale ); 2745cdf0e10cSrcweir 2746cdf0e10cSrcweir if ( !aSmartTagCaption.getLength() ) 2747cdf0e10cSrcweir aSmartTagCaption = aSmartTagType; 2748cdf0e10cSrcweir 2749cdf0e10cSrcweir const rtl::OUString aLBEntry = aSmartTagCaption + 2750cdf0e10cSrcweir OUString::createFromAscii(" (") + 2751cdf0e10cSrcweir aName + 2752cdf0e10cSrcweir OUString::createFromAscii(")"); 2753cdf0e10cSrcweir 2754cdf0e10cSrcweir SvLBoxEntry* pEntry = m_aSmartTagTypesLB.SvTreeListBox::InsertEntry( aLBEntry ); 2755cdf0e10cSrcweir if ( pEntry ) 2756cdf0e10cSrcweir { 2757cdf0e10cSrcweir const bool bCheck = rSmartTagMgr.IsSmartTagTypeEnabled( aSmartTagType ); 2758cdf0e10cSrcweir m_aSmartTagTypesLB.SetCheckButtonState( pEntry, bCheck ? SV_BUTTON_CHECKED : SV_BUTTON_UNCHECKED ); 2759cdf0e10cSrcweir pEntry->SetUserData(static_cast<void*>(new ImplSmartTagLBUserData( aSmartTagType, xRec, j ) ) ); 2760cdf0e10cSrcweir } 2761cdf0e10cSrcweir } 2762cdf0e10cSrcweir } 2763cdf0e10cSrcweir } 2764cdf0e10cSrcweir 2765cdf0e10cSrcweir /** Handler for the push button 2766cdf0e10cSrcweir */ 2767cdf0e10cSrcweir IMPL_LINK( OfaSmartTagOptionsTabPage, ClickHdl, PushButton*, EMPTYARG ) 2768cdf0e10cSrcweir { 2769cdf0e10cSrcweir const sal_uInt16 nPos = m_aSmartTagTypesLB.GetSelectEntryPos(); 2770cdf0e10cSrcweir const SvLBoxEntry* pEntry = m_aSmartTagTypesLB.GetEntry(nPos); 2771cdf0e10cSrcweir const ImplSmartTagLBUserData* pUserData = static_cast< ImplSmartTagLBUserData* >(pEntry->GetUserData()); 2772cdf0e10cSrcweir uno::Reference< smarttags::XSmartTagRecognizer > xRec = pUserData->mxRec; 2773cdf0e10cSrcweir const sal_Int32 nSmartTagIdx = pUserData->mnSmartTagIdx; 2774cdf0e10cSrcweir 2775cdf0e10cSrcweir const lang::Locale aLocale( SvxCreateLocale( eLastDialogLanguage ) ); 2776cdf0e10cSrcweir if ( xRec->hasPropertyPage( nSmartTagIdx, aLocale ) ) 2777cdf0e10cSrcweir xRec->displayPropertyPage( nSmartTagIdx, aLocale ); 2778cdf0e10cSrcweir 2779cdf0e10cSrcweir return 0; 2780cdf0e10cSrcweir } 2781cdf0e10cSrcweir 2782cdf0e10cSrcweir /** Handler for the check box 2783cdf0e10cSrcweir */ 2784cdf0e10cSrcweir IMPL_LINK( OfaSmartTagOptionsTabPage, CheckHdl, CheckBox*, EMPTYARG ) 2785cdf0e10cSrcweir { 2786cdf0e10cSrcweir const sal_Bool bEnable = m_aMainCB.IsChecked(); 2787cdf0e10cSrcweir m_aSmartTagTypesLB.Enable( bEnable ); 2788cdf0e10cSrcweir m_aSmartTagTypesLB.Invalidate(); 2789cdf0e10cSrcweir m_aPropertiesPB.Enable( false ); 2790cdf0e10cSrcweir 2791cdf0e10cSrcweir // if the controls are currently enabled, we still have to check 2792cdf0e10cSrcweir // if the properties button should be disabled because the currently 2793cdf0e10cSrcweir // seleted smart tag type does not have a properties dialog. 2794cdf0e10cSrcweir // We do this by calling SelectHdl: 2795cdf0e10cSrcweir if ( bEnable ) 2796cdf0e10cSrcweir SelectHdl( &m_aSmartTagTypesLB ); 2797cdf0e10cSrcweir 2798cdf0e10cSrcweir return 0; 2799cdf0e10cSrcweir } 2800cdf0e10cSrcweir 2801cdf0e10cSrcweir /** Handler for the list box 2802cdf0e10cSrcweir */ 2803cdf0e10cSrcweir IMPL_LINK(OfaSmartTagOptionsTabPage, SelectHdl, SvxCheckListBox*, EMPTYARG) 2804cdf0e10cSrcweir { 2805cdf0e10cSrcweir if ( m_aSmartTagTypesLB.GetEntryCount() < 1 ) 2806cdf0e10cSrcweir return 0; 2807cdf0e10cSrcweir 2808cdf0e10cSrcweir const sal_uInt16 nPos = m_aSmartTagTypesLB.GetSelectEntryPos(); 2809cdf0e10cSrcweir const SvLBoxEntry* pEntry = m_aSmartTagTypesLB.GetEntry(nPos); 2810cdf0e10cSrcweir const ImplSmartTagLBUserData* pUserData = static_cast< ImplSmartTagLBUserData* >(pEntry->GetUserData()); 2811cdf0e10cSrcweir uno::Reference< smarttags::XSmartTagRecognizer > xRec = pUserData->mxRec; 2812cdf0e10cSrcweir const sal_Int32 nSmartTagIdx = pUserData->mnSmartTagIdx; 2813cdf0e10cSrcweir 2814cdf0e10cSrcweir const lang::Locale aLocale( SvxCreateLocale( eLastDialogLanguage ) ); 2815cdf0e10cSrcweir if ( xRec->hasPropertyPage( nSmartTagIdx, aLocale ) ) 2816cdf0e10cSrcweir m_aPropertiesPB.Enable( sal_True ); 2817cdf0e10cSrcweir else 2818cdf0e10cSrcweir m_aPropertiesPB.Enable( sal_False ); 2819cdf0e10cSrcweir 2820cdf0e10cSrcweir return 0; 2821cdf0e10cSrcweir } 2822cdf0e10cSrcweir 2823cdf0e10cSrcweir /** Propagates the current settings to the smart tag manager. 2824cdf0e10cSrcweir */ 2825cdf0e10cSrcweir sal_Bool OfaSmartTagOptionsTabPage::FillItemSet( SfxItemSet& ) 2826cdf0e10cSrcweir { 2827cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 2828cdf0e10cSrcweir SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags(); 2829cdf0e10cSrcweir SmartTagMgr* pSmartTagMgr = pOpt->pSmartTagMgr; 2830cdf0e10cSrcweir 2831cdf0e10cSrcweir // robust! 2832cdf0e10cSrcweir if ( !pSmartTagMgr ) 2833cdf0e10cSrcweir return sal_False; 2834cdf0e10cSrcweir 2835cdf0e10cSrcweir sal_Bool bModifiedSmartTagTypes = sal_False; 2836cdf0e10cSrcweir std::vector< rtl::OUString > aDisabledSmartTagTypes; 2837cdf0e10cSrcweir 2838cdf0e10cSrcweir const sal_uLong nCount = m_aSmartTagTypesLB.GetEntryCount(); 2839cdf0e10cSrcweir 2840cdf0e10cSrcweir for ( sal_uInt16 i = 0; i < nCount; ++i ) 2841cdf0e10cSrcweir { 2842cdf0e10cSrcweir const SvLBoxEntry* pEntry = m_aSmartTagTypesLB.GetEntry(i); 2843cdf0e10cSrcweir const ImplSmartTagLBUserData* pUserData = static_cast< ImplSmartTagLBUserData* >(pEntry->GetUserData()); 2844cdf0e10cSrcweir const sal_Bool bChecked = m_aSmartTagTypesLB.IsChecked(i); 2845cdf0e10cSrcweir const sal_Bool bIsCurrentlyEnabled = pSmartTagMgr->IsSmartTagTypeEnabled( pUserData->maSmartTagType ); 2846cdf0e10cSrcweir 2847cdf0e10cSrcweir bModifiedSmartTagTypes = bModifiedSmartTagTypes || ( !bChecked != !bIsCurrentlyEnabled ); 2848cdf0e10cSrcweir 2849cdf0e10cSrcweir if ( !bChecked ) 2850cdf0e10cSrcweir aDisabledSmartTagTypes.push_back( pUserData->maSmartTagType ); 2851cdf0e10cSrcweir 2852cdf0e10cSrcweir delete pUserData; 2853cdf0e10cSrcweir } 2854cdf0e10cSrcweir 2855cdf0e10cSrcweir const sal_Bool bModifiedRecognize = ( !m_aMainCB.IsChecked() != !pSmartTagMgr->IsLabelTextWithSmartTags() ); 2856cdf0e10cSrcweir if ( bModifiedSmartTagTypes || bModifiedRecognize ) 2857cdf0e10cSrcweir { 2858cdf0e10cSrcweir bool bLabelTextWithSmartTags = m_aMainCB.IsChecked() ? true : false; 2859cdf0e10cSrcweir pSmartTagMgr->WriteConfiguration( bModifiedRecognize ? &bLabelTextWithSmartTags : 0, 2860cdf0e10cSrcweir bModifiedSmartTagTypes ? &aDisabledSmartTagTypes : 0 ); 2861cdf0e10cSrcweir } 2862cdf0e10cSrcweir 2863cdf0e10cSrcweir return sal_True; 2864cdf0e10cSrcweir } 2865cdf0e10cSrcweir 2866cdf0e10cSrcweir /** Sets the controls based on the current settings at SmartTagMgr. 2867cdf0e10cSrcweir */ 2868cdf0e10cSrcweir void OfaSmartTagOptionsTabPage::Reset( const SfxItemSet& ) 2869cdf0e10cSrcweir { 2870cdf0e10cSrcweir SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect(); 2871cdf0e10cSrcweir SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags(); 2872cdf0e10cSrcweir const SmartTagMgr* pSmartTagMgr = pOpt->pSmartTagMgr; 2873cdf0e10cSrcweir 2874cdf0e10cSrcweir // robust, should not happen! 2875cdf0e10cSrcweir if ( !pSmartTagMgr ) 2876cdf0e10cSrcweir return; 2877cdf0e10cSrcweir 2878cdf0e10cSrcweir FillListBox( *pSmartTagMgr ); 2879cdf0e10cSrcweir m_aSmartTagTypesLB.SelectEntryPos( 0 ); 2880cdf0e10cSrcweir m_aMainCB.Check( pSmartTagMgr->IsLabelTextWithSmartTags() ); 2881cdf0e10cSrcweir CheckHdl( &m_aMainCB ); 2882cdf0e10cSrcweir } 2883cdf0e10cSrcweir 2884cdf0e10cSrcweir void OfaSmartTagOptionsTabPage::ActivatePage( const SfxItemSet& ) 2885cdf0e10cSrcweir { 2886cdf0e10cSrcweir ((OfaAutoCorrDlg*)GetTabDialog())->EnableLanguage( sal_False ); 2887cdf0e10cSrcweir } 2888cdf0e10cSrcweir 2889