xref: /aoo41x/main/cui/source/options/optasian.cxx (revision 2ee96f1c)
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