1*2ee96f1cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*2ee96f1cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*2ee96f1cSAndrew Rist * or more contributor license agreements. See the NOTICE file
5*2ee96f1cSAndrew Rist * distributed with this work for additional information
6*2ee96f1cSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*2ee96f1cSAndrew Rist * to you under the Apache License, Version 2.0 (the
8*2ee96f1cSAndrew Rist * "License"); you may not use this file except in compliance
9*2ee96f1cSAndrew Rist * with the License. You may obtain a copy of the License at
10*2ee96f1cSAndrew Rist *
11*2ee96f1cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*2ee96f1cSAndrew Rist *
13*2ee96f1cSAndrew Rist * Unless required by applicable law or agreed to in writing,
14*2ee96f1cSAndrew Rist * software distributed under the License is distributed on an
15*2ee96f1cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2ee96f1cSAndrew Rist * KIND, either express or implied. See the License for the
17*2ee96f1cSAndrew Rist * specific language governing permissions and limitations
18*2ee96f1cSAndrew Rist * under the License.
19*2ee96f1cSAndrew Rist *
20*2ee96f1cSAndrew Rist *************************************************************/
21*2ee96f1cSAndrew Rist
22*2ee96f1cSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_cui.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include <optasian.hxx>
28cdf0e10cSrcweir #include <editeng/langitem.hxx>
29cdf0e10cSrcweir #include <editeng/unolingu.hxx>
30cdf0e10cSrcweir #include <optasian.hrc>
31cdf0e10cSrcweir #include <dialmgr.hxx>
32cdf0e10cSrcweir #include <cuires.hrc>
33cdf0e10cSrcweir #include <tools/table.hxx>
34cdf0e10cSrcweir #include <tools/shl.hxx>
35cdf0e10cSrcweir #include <svl/asiancfg.hxx>
36cdf0e10cSrcweir #include <com/sun/star/lang/Locale.hpp>
37cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
38cdf0e10cSrcweir #include <com/sun/star/i18n/XForbiddenCharacters.hpp>
39cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp>
40cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
41cdf0e10cSrcweir #include <sfx2/objsh.hxx>
42cdf0e10cSrcweir #include <vcl/svapp.hxx>
43cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
44cdf0e10cSrcweir #include <unotools/localedatawrapper.hxx>
45cdf0e10cSrcweir
46cdf0e10cSrcweir using namespace com::sun::star::uno;
47cdf0e10cSrcweir using namespace com::sun::star::lang;
48cdf0e10cSrcweir using namespace com::sun::star::i18n;
49cdf0e10cSrcweir using namespace com::sun::star::frame;
50cdf0e10cSrcweir using namespace com::sun::star::beans;
51cdf0e10cSrcweir using rtl::OUString;
52cdf0e10cSrcweir
53cdf0e10cSrcweir #define C2U(cChar) rtl::OUString::createFromAscii(cChar)
54cdf0e10cSrcweir
55cdf0e10cSrcweir const sal_Char cIsKernAsianPunctuation[] = "IsKernAsianPunctuation";
56cdf0e10cSrcweir const sal_Char cCharacterCompressionType[] = "CharacterCompressionType";
57cdf0e10cSrcweir
58cdf0e10cSrcweir struct SvxForbiddenChars_Impl
59cdf0e10cSrcweir {
60cdf0e10cSrcweir sal_Bool bRemoved;
61cdf0e10cSrcweir ForbiddenCharacters* pCharacters;
62cdf0e10cSrcweir };
63cdf0e10cSrcweir
64cdf0e10cSrcweir DECLARE_TABLE( _SvxForbiddenCharacterTable_Impl, SvxForbiddenChars_Impl* )
65cdf0e10cSrcweir
66cdf0e10cSrcweir class SvxForbiddenCharacterTable_Impl : public _SvxForbiddenCharacterTable_Impl
67cdf0e10cSrcweir {
68cdf0e10cSrcweir public:
SvxForbiddenCharacterTable_Impl()69cdf0e10cSrcweir SvxForbiddenCharacterTable_Impl()
70cdf0e10cSrcweir : _SvxForbiddenCharacterTable_Impl( 4, 4 )
71cdf0e10cSrcweir {}
72cdf0e10cSrcweir ~SvxForbiddenCharacterTable_Impl();
73cdf0e10cSrcweir };
74cdf0e10cSrcweir
75cdf0e10cSrcweir struct SvxAsianLayoutPage_Impl
76cdf0e10cSrcweir {
77cdf0e10cSrcweir SvxAsianConfig aConfig;
SvxAsianLayoutPage_ImplSvxAsianLayoutPage_Impl78cdf0e10cSrcweir SvxAsianLayoutPage_Impl() :
79cdf0e10cSrcweir aConfig(sal_False){}
80cdf0e10cSrcweir
81cdf0e10cSrcweir Reference< XForbiddenCharacters > xForbidden;
82cdf0e10cSrcweir Reference< XPropertySet > xPrSet;
83cdf0e10cSrcweir Reference< XPropertySetInfo > xPrSetInfo;
84cdf0e10cSrcweir SvxForbiddenCharacterTable_Impl aChangedLanguagesTbl;
85cdf0e10cSrcweir
86cdf0e10cSrcweir sal_Bool hasForbiddenCharacters(LanguageType eLang);
87cdf0e10cSrcweir SvxForbiddenChars_Impl* getForbiddenCharacters(LanguageType eLang);
88cdf0e10cSrcweir void addForbiddenCharacters(LanguageType eLang, ForbiddenCharacters* pForbidden);
89cdf0e10cSrcweir };
90cdf0e10cSrcweir /* -----------------------------24.01.01 14:50--------------------------------
91cdf0e10cSrcweir
92cdf0e10cSrcweir ---------------------------------------------------------------------------*/
~SvxForbiddenCharacterTable_Impl()93cdf0e10cSrcweir SvxForbiddenCharacterTable_Impl::~SvxForbiddenCharacterTable_Impl()
94cdf0e10cSrcweir {
95cdf0e10cSrcweir for( SvxForbiddenChars_Impl* pDel = First(); pDel; pDel = Next() )
96cdf0e10cSrcweir {
97cdf0e10cSrcweir delete pDel->pCharacters;
98cdf0e10cSrcweir delete pDel;
99cdf0e10cSrcweir }
100cdf0e10cSrcweir }
101cdf0e10cSrcweir /* -----------------------------24.01.01 14:50--------------------------------
102cdf0e10cSrcweir
103cdf0e10cSrcweir ---------------------------------------------------------------------------*/
hasForbiddenCharacters(LanguageType eLang)104cdf0e10cSrcweir sal_Bool SvxAsianLayoutPage_Impl::hasForbiddenCharacters(LanguageType eLang)
105cdf0e10cSrcweir {
106cdf0e10cSrcweir return 0 != aChangedLanguagesTbl.Get(eLang);
107cdf0e10cSrcweir }
108cdf0e10cSrcweir /* -----------------------------24.01.01 14:50--------------------------------
109cdf0e10cSrcweir
110cdf0e10cSrcweir ---------------------------------------------------------------------------*/
getForbiddenCharacters(LanguageType eLang)111cdf0e10cSrcweir SvxForbiddenChars_Impl* SvxAsianLayoutPage_Impl::getForbiddenCharacters(LanguageType eLang)
112cdf0e10cSrcweir {
113cdf0e10cSrcweir SvxForbiddenChars_Impl* pImp = aChangedLanguagesTbl.Get(eLang);
114cdf0e10cSrcweir DBG_ASSERT(pImp, "language not available");
115cdf0e10cSrcweir if(pImp)
116cdf0e10cSrcweir return pImp;
117cdf0e10cSrcweir return 0;
118cdf0e10cSrcweir }
119cdf0e10cSrcweir /* -----------------------------24.01.01 14:50--------------------------------
120cdf0e10cSrcweir
121cdf0e10cSrcweir ---------------------------------------------------------------------------*/
addForbiddenCharacters(LanguageType eLang,ForbiddenCharacters * pForbidden)122cdf0e10cSrcweir void SvxAsianLayoutPage_Impl::addForbiddenCharacters(
123cdf0e10cSrcweir LanguageType eLang, ForbiddenCharacters* pForbidden)
124cdf0e10cSrcweir {
125cdf0e10cSrcweir SvxForbiddenChars_Impl* pOld = aChangedLanguagesTbl.Get(eLang);
126cdf0e10cSrcweir if( !pOld )
127cdf0e10cSrcweir {
128cdf0e10cSrcweir pOld = new SvxForbiddenChars_Impl;
129cdf0e10cSrcweir pOld->bRemoved = 0 == pForbidden;
130cdf0e10cSrcweir pOld->pCharacters = pForbidden ? new ForbiddenCharacters(*pForbidden) : 0;
131cdf0e10cSrcweir aChangedLanguagesTbl.Insert( eLang, pOld );
132cdf0e10cSrcweir }
133cdf0e10cSrcweir else
134cdf0e10cSrcweir {
135cdf0e10cSrcweir pOld->bRemoved = 0 == pForbidden;
136cdf0e10cSrcweir delete pOld->pCharacters;
137cdf0e10cSrcweir pOld->pCharacters = pForbidden ? new ForbiddenCharacters(*pForbidden) : 0;
138cdf0e10cSrcweir }
139cdf0e10cSrcweir
140cdf0e10cSrcweir }
141cdf0e10cSrcweir /*-- 09.01.01 13:29:02---------------------------------------------------
142cdf0e10cSrcweir
143cdf0e10cSrcweir -----------------------------------------------------------------------*/
144cdf0e10cSrcweir static LanguageType eLastUsedLanguageTypeForForbiddenCharacters = USHRT_MAX;
145cdf0e10cSrcweir
SvxAsianLayoutPage(Window * pParent,const SfxItemSet & rSet)146cdf0e10cSrcweir SvxAsianLayoutPage::SvxAsianLayoutPage( Window* pParent, const SfxItemSet& rSet ) :
147cdf0e10cSrcweir SfxTabPage(pParent, CUI_RES( RID_SVXPAGE_ASIAN_LAYOUT ), rSet),
148cdf0e10cSrcweir aKerningGB( this, CUI_RES(GB_KERNING )),
149cdf0e10cSrcweir aCharKerningRB( this, CUI_RES(RB_CHAR_KERNING )),
150cdf0e10cSrcweir aCharPunctKerningRB( this, CUI_RES(RB_CHAR_PUNCT )),
151cdf0e10cSrcweir aCharDistGB( this, CUI_RES(GB_CHAR_DIST )),
152cdf0e10cSrcweir aNoCompressionRB( this, CUI_RES(RB_NO_COMP )),
153cdf0e10cSrcweir aPunctCompressionRB( this, CUI_RES(RB_PUNCT_COMP )),
154cdf0e10cSrcweir aPunctKanaCompressionRB(this, CUI_RES(RB_PUNCT_KANA_COMP )),
155cdf0e10cSrcweir aStartEndGB( this, CUI_RES(GB_START_END )),
156cdf0e10cSrcweir aLanguageFT( this, CUI_RES(FT_LANGUAGE )),
157cdf0e10cSrcweir aLanguageLB( this, CUI_RES(LB_LANGUAGE )),
158cdf0e10cSrcweir aStandardCB( this, CUI_RES(CB_STANDARD )),
159cdf0e10cSrcweir aStartFT( this, CUI_RES(FT_START )),
160cdf0e10cSrcweir aStartED( this, CUI_RES(ED_START )),
161cdf0e10cSrcweir aEndFT( this, CUI_RES(FT_END )),
162cdf0e10cSrcweir aEndED( this, CUI_RES(ED_END )),
163cdf0e10cSrcweir aHintFT( this, CUI_RES(FT_HINT )),
164cdf0e10cSrcweir pImpl(new SvxAsianLayoutPage_Impl)
165cdf0e10cSrcweir {
166cdf0e10cSrcweir FreeResource();
167cdf0e10cSrcweir LanguageHdl(&aLanguageLB);
168cdf0e10cSrcweir aLanguageLB.SetSelectHdl(LINK(this, SvxAsianLayoutPage, LanguageHdl));
169cdf0e10cSrcweir aStandardCB.SetClickHdl(LINK(this, SvxAsianLayoutPage, ChangeStandardHdl));
170cdf0e10cSrcweir Link aLk(LINK(this, SvxAsianLayoutPage, ModifyHdl));
171cdf0e10cSrcweir aStartED.SetModifyHdl(aLk);
172cdf0e10cSrcweir aEndED.SetModifyHdl(aLk);
173cdf0e10cSrcweir
174cdf0e10cSrcweir aLanguageLB.SetLanguageList( LANG_LIST_FBD_CHARS, sal_False, sal_False );
175cdf0e10cSrcweir }
176cdf0e10cSrcweir /*-- 09.01.01 13:29:02---------------------------------------------------
177cdf0e10cSrcweir
178cdf0e10cSrcweir -----------------------------------------------------------------------*/
~SvxAsianLayoutPage()179cdf0e10cSrcweir SvxAsianLayoutPage::~SvxAsianLayoutPage()
180cdf0e10cSrcweir {
181cdf0e10cSrcweir delete pImpl;
182cdf0e10cSrcweir }
183cdf0e10cSrcweir /*-- 09.01.01 13:29:02---------------------------------------------------
184cdf0e10cSrcweir
185cdf0e10cSrcweir -----------------------------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)186cdf0e10cSrcweir SfxTabPage* SvxAsianLayoutPage::Create( Window* pParent, const SfxItemSet& rAttrSet )
187cdf0e10cSrcweir {
188cdf0e10cSrcweir return new SvxAsianLayoutPage(pParent, rAttrSet);
189cdf0e10cSrcweir }
190cdf0e10cSrcweir /*-- 09.01.01 13:29:03---------------------------------------------------
191cdf0e10cSrcweir
192cdf0e10cSrcweir -----------------------------------------------------------------------*/
FillItemSet(SfxItemSet &)193cdf0e10cSrcweir sal_Bool SvxAsianLayoutPage::FillItemSet( SfxItemSet& )
194cdf0e10cSrcweir {
195cdf0e10cSrcweir if(aCharKerningRB.IsChecked() != aCharKerningRB.GetSavedValue())
196cdf0e10cSrcweir {
197cdf0e10cSrcweir pImpl->aConfig.SetKerningWesternTextOnly(aCharKerningRB.IsChecked());
198cdf0e10cSrcweir OUString sPunct(C2U(cIsKernAsianPunctuation));
199cdf0e10cSrcweir if(pImpl->xPrSetInfo.is() && pImpl->xPrSetInfo->hasPropertyByName(sPunct))
200cdf0e10cSrcweir {
201cdf0e10cSrcweir Any aVal;
202cdf0e10cSrcweir sal_Bool bVal = !aCharKerningRB.IsChecked();
203cdf0e10cSrcweir aVal.setValue(&bVal, ::getBooleanCppuType());
204cdf0e10cSrcweir pImpl->xPrSet->setPropertyValue(sPunct, aVal);
205cdf0e10cSrcweir }
206cdf0e10cSrcweir }
207cdf0e10cSrcweir
208cdf0e10cSrcweir if(aNoCompressionRB.IsChecked() != aNoCompressionRB.GetSavedValue() ||
209cdf0e10cSrcweir aPunctCompressionRB.IsChecked() != aPunctCompressionRB.GetSavedValue())
210cdf0e10cSrcweir {
211cdf0e10cSrcweir sal_Int16 nSet = aNoCompressionRB.IsChecked() ? 0 :
212cdf0e10cSrcweir aPunctCompressionRB.IsChecked() ? 1 : 2;
213cdf0e10cSrcweir pImpl->aConfig.SetCharDistanceCompression(nSet);
214cdf0e10cSrcweir OUString sCompress(C2U(cCharacterCompressionType));
215cdf0e10cSrcweir if(pImpl->xPrSetInfo.is() && pImpl->xPrSetInfo->hasPropertyByName(sCompress))
216cdf0e10cSrcweir {
217cdf0e10cSrcweir Any aVal;
218cdf0e10cSrcweir aVal <<= nSet;
219cdf0e10cSrcweir pImpl->xPrSet->setPropertyValue(sCompress, aVal);
220cdf0e10cSrcweir }
221cdf0e10cSrcweir }
222cdf0e10cSrcweir if(pImpl->aConfig.IsModified())
223cdf0e10cSrcweir pImpl->aConfig.Commit();
224cdf0e10cSrcweir if(pImpl->xForbidden.is())
225cdf0e10cSrcweir {
226cdf0e10cSrcweir try
227cdf0e10cSrcweir {
228cdf0e10cSrcweir for( SvxForbiddenChars_Impl* pElem = pImpl->aChangedLanguagesTbl.First();
229cdf0e10cSrcweir pElem; pElem = pImpl->aChangedLanguagesTbl.Next() )
230cdf0e10cSrcweir {
231cdf0e10cSrcweir sal_uLong nLang = pImpl->aChangedLanguagesTbl.GetKey( pElem );
232cdf0e10cSrcweir Locale aLocale;
233cdf0e10cSrcweir SvxLanguageToLocale(aLocale, (sal_uInt16)nLang );
234cdf0e10cSrcweir if(pElem->bRemoved)
235cdf0e10cSrcweir pImpl->xForbidden->removeForbiddenCharacters( aLocale );
236cdf0e10cSrcweir else if(pElem->pCharacters)
237cdf0e10cSrcweir pImpl->xForbidden->setForbiddenCharacters( aLocale, *pElem->pCharacters );
238cdf0e10cSrcweir }
239cdf0e10cSrcweir }
240cdf0e10cSrcweir catch(Exception&)
241cdf0e10cSrcweir {
242cdf0e10cSrcweir DBG_ERROR("exception in XForbiddenCharacters");
243cdf0e10cSrcweir }
244cdf0e10cSrcweir }
245cdf0e10cSrcweir eLastUsedLanguageTypeForForbiddenCharacters = aLanguageLB.GetSelectLanguage();
246cdf0e10cSrcweir
247cdf0e10cSrcweir return sal_False;
248cdf0e10cSrcweir }
249cdf0e10cSrcweir /*-- 09.01.01 13:29:03---------------------------------------------------
250cdf0e10cSrcweir
251cdf0e10cSrcweir -----------------------------------------------------------------------*/
Reset(const SfxItemSet &)252cdf0e10cSrcweir void SvxAsianLayoutPage::Reset( const SfxItemSet& )
253cdf0e10cSrcweir {
254cdf0e10cSrcweir SfxViewFrame* pCurFrm = SfxViewFrame::Current();
255cdf0e10cSrcweir SfxObjectShell* pDocSh = pCurFrm ? pCurFrm->GetObjectShell() : 0;
256cdf0e10cSrcweir Reference< XModel > xModel;
257cdf0e10cSrcweir if(pDocSh)
258cdf0e10cSrcweir xModel = pDocSh->GetModel();
259cdf0e10cSrcweir Reference<XMultiServiceFactory> xFact(xModel, UNO_QUERY);
260cdf0e10cSrcweir if(xFact.is())
261cdf0e10cSrcweir {
262cdf0e10cSrcweir pImpl->xPrSet = Reference<XPropertySet>(
263cdf0e10cSrcweir xFact->createInstance(C2U("com.sun.star.document.Settings")), UNO_QUERY);
264cdf0e10cSrcweir }
265cdf0e10cSrcweir if( pImpl->xPrSet.is() )
266cdf0e10cSrcweir pImpl->xPrSetInfo = pImpl->xPrSet->getPropertySetInfo();
267cdf0e10cSrcweir OUString sForbidden(C2U("ForbiddenCharacters"));
268cdf0e10cSrcweir sal_Bool bKernWesternText = pImpl->aConfig.IsKerningWesternTextOnly();
269cdf0e10cSrcweir sal_Int16 nCompress = pImpl->aConfig.GetCharDistanceCompression();
270cdf0e10cSrcweir if(pImpl->xPrSetInfo.is())
271cdf0e10cSrcweir {
272cdf0e10cSrcweir if(pImpl->xPrSetInfo->hasPropertyByName(sForbidden))
273cdf0e10cSrcweir {
274cdf0e10cSrcweir Any aForbidden = pImpl->xPrSet->getPropertyValue(sForbidden);
275cdf0e10cSrcweir aForbidden >>= pImpl->xForbidden;
276cdf0e10cSrcweir }
277cdf0e10cSrcweir OUString sCompress(C2U(cCharacterCompressionType));
278cdf0e10cSrcweir if(pImpl->xPrSetInfo->hasPropertyByName(sCompress))
279cdf0e10cSrcweir {
280cdf0e10cSrcweir Any aVal = pImpl->xPrSet->getPropertyValue(sCompress);
281cdf0e10cSrcweir aVal >>= nCompress;
282cdf0e10cSrcweir }
283cdf0e10cSrcweir OUString sPunct(C2U(cIsKernAsianPunctuation));
284cdf0e10cSrcweir if(pImpl->xPrSetInfo->hasPropertyByName(sPunct))
285cdf0e10cSrcweir {
286cdf0e10cSrcweir Any aVal = pImpl->xPrSet->getPropertyValue(sPunct);
287cdf0e10cSrcweir bKernWesternText = !*(sal_Bool*)aVal.getValue();
288cdf0e10cSrcweir }
289cdf0e10cSrcweir }
290cdf0e10cSrcweir else
291cdf0e10cSrcweir {
292cdf0e10cSrcweir aStartEndGB.Enable(sal_False);
293cdf0e10cSrcweir aLanguageFT.Enable(sal_False);
294cdf0e10cSrcweir aLanguageLB.Enable(sal_False);
295cdf0e10cSrcweir aStandardCB.Enable(sal_False);
296cdf0e10cSrcweir aStartFT.Enable(sal_False);
297cdf0e10cSrcweir aStartED.Enable(sal_False);
298cdf0e10cSrcweir aEndFT.Enable(sal_False);
299cdf0e10cSrcweir aEndED.Enable(sal_False);
300cdf0e10cSrcweir aHintFT.Enable(sal_False);
301cdf0e10cSrcweir }
302cdf0e10cSrcweir if(bKernWesternText)
303cdf0e10cSrcweir aCharKerningRB.Check(sal_True);
304cdf0e10cSrcweir else
305cdf0e10cSrcweir aCharPunctKerningRB.Check(sal_True);
306cdf0e10cSrcweir switch(nCompress)
307cdf0e10cSrcweir {
308cdf0e10cSrcweir case 0 : aNoCompressionRB.Check(); break;
309cdf0e10cSrcweir case 1 : aPunctCompressionRB.Check(); break;
310cdf0e10cSrcweir default: aPunctKanaCompressionRB.Check();
311cdf0e10cSrcweir }
312cdf0e10cSrcweir aCharKerningRB.SaveValue();
313cdf0e10cSrcweir aNoCompressionRB.SaveValue();
314cdf0e10cSrcweir aPunctCompressionRB.SaveValue();
315cdf0e10cSrcweir aPunctKanaCompressionRB.SaveValue();
316cdf0e10cSrcweir
317cdf0e10cSrcweir aLanguageLB.SelectEntryPos(0);
318cdf0e10cSrcweir //preselect the system language in the box - if available
319cdf0e10cSrcweir if(USHRT_MAX == eLastUsedLanguageTypeForForbiddenCharacters)
320cdf0e10cSrcweir {
321cdf0e10cSrcweir eLastUsedLanguageTypeForForbiddenCharacters = SvxLocaleToLanguage(
322cdf0e10cSrcweir Application::GetSettings().GetLocale() );
323cdf0e10cSrcweir switch(eLastUsedLanguageTypeForForbiddenCharacters)
324cdf0e10cSrcweir {
325cdf0e10cSrcweir case LANGUAGE_CHINESE :
326cdf0e10cSrcweir case LANGUAGE_CHINESE_SINGAPORE :
327cdf0e10cSrcweir eLastUsedLanguageTypeForForbiddenCharacters = LANGUAGE_CHINESE_SIMPLIFIED;
328cdf0e10cSrcweir break;
329cdf0e10cSrcweir case LANGUAGE_CHINESE_HONGKONG :
330cdf0e10cSrcweir case LANGUAGE_CHINESE_MACAU :
331cdf0e10cSrcweir eLastUsedLanguageTypeForForbiddenCharacters = LANGUAGE_CHINESE_TRADITIONAL;
332cdf0e10cSrcweir break;
333cdf0e10cSrcweir }
334cdf0e10cSrcweir }
335cdf0e10cSrcweir aLanguageLB.SelectLanguage( eLastUsedLanguageTypeForForbiddenCharacters );
336cdf0e10cSrcweir LanguageHdl(&aLanguageLB);
337cdf0e10cSrcweir }
338cdf0e10cSrcweir /* -----------------------------17.01.01 11:02--------------------------------
339cdf0e10cSrcweir
340cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IMPL_LINK(SvxAsianLayoutPage,LanguageHdl,SvxLanguageBox *,EMPTYARG)341cdf0e10cSrcweir IMPL_LINK(SvxAsianLayoutPage, LanguageHdl, SvxLanguageBox*, EMPTYARG )
342cdf0e10cSrcweir {
343cdf0e10cSrcweir //set current value
344cdf0e10cSrcweir Locale aLocale;
345cdf0e10cSrcweir LanguageType eSelectLanguage = aLanguageLB.GetSelectLanguage();
346cdf0e10cSrcweir SvxLanguageToLocale(aLocale, eSelectLanguage );
347cdf0e10cSrcweir
348cdf0e10cSrcweir OUString sStart, sEnd;
349cdf0e10cSrcweir sal_Bool bAvail;
350cdf0e10cSrcweir if(pImpl->xForbidden.is())
351cdf0e10cSrcweir {
352cdf0e10cSrcweir bAvail = pImpl->hasForbiddenCharacters(eSelectLanguage);
353cdf0e10cSrcweir if(bAvail)
354cdf0e10cSrcweir {
355cdf0e10cSrcweir SvxForbiddenChars_Impl* pElement = pImpl->getForbiddenCharacters(eSelectLanguage);
356cdf0e10cSrcweir if(pElement->bRemoved || !pElement->pCharacters)
357cdf0e10cSrcweir {
358cdf0e10cSrcweir bAvail = sal_False;
359cdf0e10cSrcweir }
360cdf0e10cSrcweir else
361cdf0e10cSrcweir {
362cdf0e10cSrcweir sStart = pElement->pCharacters->beginLine;
363cdf0e10cSrcweir sEnd = pElement->pCharacters->endLine;
364cdf0e10cSrcweir }
365cdf0e10cSrcweir }
366cdf0e10cSrcweir else
367cdf0e10cSrcweir {
368cdf0e10cSrcweir try
369cdf0e10cSrcweir {
370cdf0e10cSrcweir bAvail = pImpl->xForbidden->hasForbiddenCharacters(aLocale);
371cdf0e10cSrcweir if(bAvail)
372cdf0e10cSrcweir {
373cdf0e10cSrcweir ForbiddenCharacters aForbidden = pImpl->xForbidden->getForbiddenCharacters( aLocale );
374cdf0e10cSrcweir sStart = aForbidden.beginLine;
375cdf0e10cSrcweir sEnd = aForbidden.endLine;
376cdf0e10cSrcweir }
377cdf0e10cSrcweir }
378cdf0e10cSrcweir catch(Exception&)
379cdf0e10cSrcweir {
380cdf0e10cSrcweir DBG_ERROR("exception in XForbiddenCharacters");
381cdf0e10cSrcweir }
382cdf0e10cSrcweir }
383cdf0e10cSrcweir }
384cdf0e10cSrcweir else
385cdf0e10cSrcweir {
386cdf0e10cSrcweir bAvail = pImpl->aConfig.GetStartEndChars( aLocale, sStart, sEnd );
387cdf0e10cSrcweir }
388cdf0e10cSrcweir if(!bAvail)
389cdf0e10cSrcweir {
390cdf0e10cSrcweir Reference< XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
391cdf0e10cSrcweir LocaleDataWrapper aWrap( xMSF, aLocale );
392cdf0e10cSrcweir ForbiddenCharacters aForbidden = aWrap.getForbiddenCharacters();
393cdf0e10cSrcweir sStart = aForbidden.beginLine;
394cdf0e10cSrcweir sEnd = aForbidden.endLine;
395cdf0e10cSrcweir }
396cdf0e10cSrcweir aStandardCB.Check(!bAvail);
397cdf0e10cSrcweir aStartED.Enable(bAvail);
398cdf0e10cSrcweir aEndED.Enable(bAvail);
399cdf0e10cSrcweir aStartFT.Enable(bAvail);
400cdf0e10cSrcweir aEndFT.Enable(bAvail);
401cdf0e10cSrcweir aStartED.SetText(sStart);
402cdf0e10cSrcweir aEndED.SetText(sEnd);
403cdf0e10cSrcweir
404cdf0e10cSrcweir return 0;
405cdf0e10cSrcweir }
406cdf0e10cSrcweir /* -----------------------------17.01.01 11:02--------------------------------
407cdf0e10cSrcweir
408cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IMPL_LINK(SvxAsianLayoutPage,ChangeStandardHdl,CheckBox *,pBox)409cdf0e10cSrcweir IMPL_LINK(SvxAsianLayoutPage, ChangeStandardHdl, CheckBox*, pBox)
410cdf0e10cSrcweir {
411cdf0e10cSrcweir sal_Bool bCheck = pBox->IsChecked();
412cdf0e10cSrcweir aStartED.Enable(!bCheck);
413cdf0e10cSrcweir aEndED.Enable(!bCheck);
414cdf0e10cSrcweir aStartFT.Enable(!bCheck);
415cdf0e10cSrcweir aEndFT.Enable(!bCheck);
416cdf0e10cSrcweir
417cdf0e10cSrcweir ModifyHdl(&aStartED);
418cdf0e10cSrcweir return 0;
419cdf0e10cSrcweir }
420cdf0e10cSrcweir /* -----------------------------17.01.01 12:26--------------------------------
421cdf0e10cSrcweir
422cdf0e10cSrcweir ---------------------------------------------------------------------------*/
IMPL_LINK(SvxAsianLayoutPage,ModifyHdl,Edit *,pEdit)423cdf0e10cSrcweir IMPL_LINK(SvxAsianLayoutPage, ModifyHdl, Edit*, pEdit)
424cdf0e10cSrcweir {
425cdf0e10cSrcweir Locale aLocale;
426cdf0e10cSrcweir LanguageType eSelectLanguage = aLanguageLB.GetSelectLanguage();
427cdf0e10cSrcweir SvxLanguageToLocale(aLocale, eSelectLanguage );
428cdf0e10cSrcweir OUString sStart = aStartED.GetText();
429cdf0e10cSrcweir OUString sEnd = aEndED.GetText();
430cdf0e10cSrcweir sal_Bool bEnable = pEdit->IsEnabled();
431cdf0e10cSrcweir if(pImpl->xForbidden.is())
432cdf0e10cSrcweir {
433cdf0e10cSrcweir try
434cdf0e10cSrcweir {
435cdf0e10cSrcweir if(bEnable)
436cdf0e10cSrcweir {
437cdf0e10cSrcweir ForbiddenCharacters aSet;
438cdf0e10cSrcweir aSet.beginLine = sStart;
439cdf0e10cSrcweir aSet.endLine = sEnd;
440cdf0e10cSrcweir // pImpl->xForbidden->setForbiddenCharacters( aLocale, aSet );
441cdf0e10cSrcweir pImpl->addForbiddenCharacters(eSelectLanguage, &aSet);
442cdf0e10cSrcweir }
443cdf0e10cSrcweir else
444cdf0e10cSrcweir pImpl->addForbiddenCharacters(eSelectLanguage, 0);
445cdf0e10cSrcweir // pImpl->xForbidden->removeForbiddenCharacters( aLocale );
446cdf0e10cSrcweir }
447cdf0e10cSrcweir catch(Exception&)
448cdf0e10cSrcweir {
449cdf0e10cSrcweir DBG_ERROR("exception in XForbiddenCharacters");
450cdf0e10cSrcweir }
451cdf0e10cSrcweir }
452cdf0e10cSrcweir pImpl->aConfig.SetStartEndChars( aLocale, bEnable ? &sStart : 0, bEnable ? &sEnd : 0);
453cdf0e10cSrcweir return 0;
454cdf0e10cSrcweir }
455cdf0e10cSrcweir /*-- 07.09.2007 12:05:09---------------------------------------------------
456cdf0e10cSrcweir
457cdf0e10cSrcweir -----------------------------------------------------------------------*/
GetRanges()458cdf0e10cSrcweir sal_uInt16* SvxAsianLayoutPage::GetRanges()
459cdf0e10cSrcweir {
460cdf0e10cSrcweir //no items are used
461cdf0e10cSrcweir static sal_uInt16 pAsianLayoutRanges[] = { 0 };
462cdf0e10cSrcweir return pAsianLayoutRanges;
463cdf0e10cSrcweir }
464