xref: /trunk/main/cui/source/options/optgenrl.cxx (revision 2ee96f1c)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_cui.hxx"
26 
27 // include ---------------------------------------------------------------
28 #include <tools/shl.hxx>
29 #include <vcl/svapp.hxx>
30 #include <vcl/msgbox.hxx>
31 #include <unotools/saveopt.hxx>
32 #include <svl/intitem.hxx>
33 
34 #define _SVX_OPTGENRL_CXX
35 
36 #include <cuires.hrc>
37 #include "optgenrl.hrc"
38 #include <unotools/useroptions.hxx>
39 #include "cuioptgenrl.hxx"
40 #include <dialmgr.hxx>
41 #include <svx/dlgutil.hxx>
42 #include <svx/strarray.hxx>
43 #include <svx/svxids.hrc> // SID_FIELD_GRABFOCUS
44 
45 #define TRIM(s) s.EraseLeadingChars().EraseTrailingChars()
46 
47 // struct GeneralTabPage_Impl --------------------------------------------
48 
49 struct GeneralTabPage_Impl
50 {
51 	sal_Bool	mbStreetEnabled;
52 	sal_Bool	mbPLZEnabled;
53 	sal_Bool	mbCityEnabled;
54 	sal_Bool	mbUsCityEnabled;
55 	sal_Bool	mbUsZipEnabled;
56 
57 	String	maQueryStr;
58 
GeneralTabPage_ImplGeneralTabPage_Impl59 	GeneralTabPage_Impl() :
60 		mbStreetEnabled	( sal_False ),
61 		mbPLZEnabled	( sal_False ),
62 		mbCityEnabled	( sal_False ),
63 		mbUsCityEnabled	( sal_False ),
64 		mbUsZipEnabled	( sal_False ) {}
65 };
66 
67 // -----------------------------------------------------------------------
68 
SvxGeneralTabPage(Window * pParent,const SfxItemSet & rCoreSet)69 SvxGeneralTabPage::SvxGeneralTabPage( Window* pParent, const SfxItemSet& rCoreSet ) :
70 
71 	SfxTabPage( pParent, CUI_RES(RID_SFXPAGE_GENERAL), rCoreSet ),
72 
73 	aAddrFrm		( this, CUI_RES( GB_ADDRESS ) ),
74     aCompanyLbl     ( this, CUI_RES( FT_COMPANY ), true ),
75     aCompanyEdit    ( this, CUI_RES( ED_COMPANY ), INDEX_NOTSET, &aCompanyLbl ),
76     aNameLbl        ( this, CUI_RES( FT_NAME ), true ),
77     aNameLblRuss    ( this, CUI_RES( FT_NAME_RUSS ), true ),
78     aNameLblEastern ( this, CUI_RES( FT_NAME_EASTERN ), true ),
79     aFirstName      ( this, CUI_RES( ED_FIRSTNAME ), 0, &aNameLbl ),
80     aFatherName     ( this, CUI_RES( ED_FATHERNAME ) ),
81     aName           ( this, CUI_RES( ED_NAME ), 1, &aNameLbl ),
82     aShortName      ( this, CUI_RES( ED_SHORTNAME ), 2, &aNameLbl ),
83     aStreetLbl      ( this, CUI_RES( FT_STREET ), true ),
84     aStreetLblRuss  ( this, CUI_RES( FT_STREET_RUSS ), true ),
85     aStreetEdit     ( this, CUI_RES( ED_STREET ), 0, &aStreetLbl ),
86     aApartmentNrEdit( this, CUI_RES( ED_APARTMENTNR ), 1, &aStreetLblRuss ),
87     aCityLbl        ( this, CUI_RES( FT_CITY ), true ),
88     aPLZEdit        ( this, CUI_RES( ED_PLZ ), 0, &aCityLbl ),
89     aCityEdit       ( this, CUI_RES( ED_CITY ), 1, &aCityLbl ),
90     aUsCityEdit     ( this, CUI_RES( ED_US_CITY ), 0, &aCityLbl ),
91     aUsStateEdit    ( this, CUI_RES( ED_US_STATE ), 1, &aCityLbl ),
92     aUsZipEdit      ( this, CUI_RES( ED_US_ZIPCODE ), 2, &aCityLbl ),
93     aCountryLbl     ( this, CUI_RES( FT_COUNTRY ), true ),
94     aCountryEdit    ( this, CUI_RES( ED_COUNTRY ), INDEX_NOTSET, &aCountryLbl ),
95     aTitlePosLbl    ( this, CUI_RES( FT_TITLEPOS ), true ),
96     aTitleEdit      ( this, CUI_RES( ED_TITLE ), 0, &aTitlePosLbl ),
97     aPositionEdit   ( this, CUI_RES( ED_POSITION ), 1, &aTitlePosLbl ),
98     aPhoneLbl       ( this, CUI_RES( FT_PHONE ), true ),
99     aTelPrivEdit    ( this, CUI_RES( ED_TELPRIVAT ), 0, &aPhoneLbl ),
100     aTelCompanyEdit ( this, CUI_RES( ED_TELCOMPANY ), 1, &aPhoneLbl ),
101     aFaxMailLbl     ( this, CUI_RES( FT_FAXMAIL ), true ),
102     aFaxEdit        ( this, CUI_RES( ED_FAX ), 0, &aFaxMailLbl ),
103     aEmailEdit      ( this, CUI_RES( ED_EMAIL ), 1, &aFaxMailLbl ),
104 	aUseDataCB		( this, CUI_RES( CB_USEDATA ) ),
105 	pImpl			( new GeneralTabPage_Impl )
106 
107 {
108     LanguageType eLang = Application::GetSettings().GetUILanguage();
109 	pImpl->maQueryStr = String( CUI_RES( STR_QUERY_REG ) );
110 
111 	if ( LANGUAGE_ENGLISH_US == eLang )
112 	{
113 		// amerikanische Postadresse aufbauen
114 		aPLZEdit.Hide();
115 		aCityEdit.Hide();
116 		aCityLbl.SetText( CUI_RES( STR_US_STATE ) );
117 	}
118 	else if ( LANGUAGE_RUSSIAN == eLang )
119 	{
120 		aUsCityEdit.Hide();
121 		aUsStateEdit.Hide();
122 		aUsZipEdit.Hide();
123 		aNameLbl.Hide();
124 		aNameLblRuss.Show();
125 		aStreetLbl.Hide();
126 		aStreetLblRuss.Show();
127 		aFatherName.Show();
128         aName.SetIndex( 0 );
129         aName.SetLabel( &aNameLblRuss );
130         aFirstName.SetIndex( 1 );
131         aFirstName.SetLabel( &aNameLblRuss );
132         aFatherName.SetIndex( 2 );
133         aFatherName.SetLabel( &aNameLblRuss );
134         aShortName.SetIndex( 3 );
135         aShortName.SetLabel( &aNameLblRuss );
136 
137 		Point aEditPoint = LogicToPixel( Point( MID, LINE(1) ), MAP_APPFONT );
138 		Point aRightPoint = LogicToPixel( Point( RIGHT, LINE(1) ), MAP_APPFONT );
139 		Size aEditSize = LogicToPixel( Size( 42, 12 ), MAP_APPFONT );
140 		Size a2Size = LogicToPixel( Size( 2, 2 ), MAP_APPFONT );
141 		long nDelta = aEditSize.Width() + a2Size.Width();
142 		aName.SetPosSizePixel( aEditPoint, aEditSize );
143 		aEditPoint.X() = aEditPoint.X() + nDelta;
144 		aFirstName.SetPosSizePixel( aEditPoint, aEditSize );
145 		aEditPoint.X() = aEditPoint.X() + nDelta;
146 		aFatherName.SetPosSizePixel( aEditPoint, aEditSize );
147 		aEditPoint.X() = aEditPoint.X() + nDelta;
148 		aEditSize.Width() = aRightPoint.X() - aEditPoint.X();
149 		aShortName.SetPosSizePixel( aEditPoint, aEditSize );
150 
151 		Size aStreetSize = aStreetEdit.GetSizePixel();
152 		aStreetSize.Width() = aStreetSize.Width() - aEditSize.Width() - a2Size.Width();
153 		aStreetEdit.SetSizePixel( aStreetSize );
154 		aApartmentNrEdit.Show();
155 		Point aApartmentPoint = LogicToPixel( Point( MID, LINE(2) ), MAP_APPFONT );
156 		aApartmentPoint.X() = aEditPoint.X();
157 		aApartmentNrEdit.SetPosSizePixel( aApartmentPoint, aEditSize );
158 
159         aName.SetZOrder( &aNameLblRuss, WINDOW_ZORDER_BEHIND );
160         aFirstName.SetZOrder( &aName, WINDOW_ZORDER_BEHIND );
161         aFatherName.SetZOrder( &aFirstName, WINDOW_ZORDER_BEHIND );
162 	}
163 	else if ( LANGUAGE_JAPANESE == eLang ||
164 		  LANGUAGE_KOREAN == eLang ||
165 		  LANGUAGE_CHINESE_TRADITIONAL == eLang ||
166 		  LANGUAGE_CHINESE_SIMPLIFIED == eLang)
167 	{
168 		aUsCityEdit.Hide();
169 		aUsStateEdit.Hide();
170 		aUsZipEdit.Hide();
171 		aNameLbl.Hide();
172 		aNameLblEastern.Show();
173 
174 		// swap "first name" field and "last name" field
175 		Point aPosTmp = aFirstName.GetPosPixel();
176 		aFirstName.SetPosPixel( aName.GetPosPixel() );
177 		aName.SetPosPixel( aPosTmp );
178 		aFirstName.SetZOrder( &aName, WINDOW_ZORDER_BEHIND );
179 	}
180 	else
181 	{
182         aUsCityEdit.Hide();
183         aUsStateEdit.Hide();
184         aUsZipEdit.Hide();
185 	}
186 
187 	FreeResource();
188 
189 	// diese Page braucht ExchangeSupport
190 	SetExchangeSupport();
191 
192 	Link aLink = LINK( this, SvxGeneralTabPage, ModifyHdl_Impl );
193 	aFirstName.SetModifyHdl( aLink );
194 	aName.SetModifyHdl( aLink );
195 
196     // because some labels have text for more than one edit field we have to split these texts
197     // and set these texts as accessible name of the corresponding edit fields
198     SvxUserEdit* pEdits[] =
199     {
200         &aCompanyEdit, &aFirstName, &aFatherName, &aName, &aShortName, &aStreetEdit,
201         &aApartmentNrEdit, &aPLZEdit, &aCityEdit, &aUsCityEdit, &aUsStateEdit, &aUsZipEdit,
202         &aCountryEdit, &aTitleEdit, &aPositionEdit, &aTelPrivEdit, &aTelCompanyEdit,
203         &aFaxEdit, &aEmailEdit, NULL
204     };
205     SvxUserEdit** pCurrent = pEdits;
206     while ( *pCurrent )
207     {
208         Window* pLabel = (*pCurrent)->GetLabel();
209         if ( pLabel )
210         {
211             String sName, sText = pLabel->GetDisplayText();
212             sal_Int16 nIndex = (*pCurrent)->GetIndex();
213             if ( INDEX_NOTSET == nIndex )
214                 sName = sText;
215             else
216                 sName = sText.GetToken( nIndex, '/' );
217             sName.EraseAllChars( '(' );
218             sName.EraseAllChars( ')' );
219             if ( sName.Len() > 0 )
220                 (*pCurrent)->SetAccessibleName( sName );
221         }
222         pCurrent++;
223     }
224 }
225 
226 //------------------------------------------------------------------------
227 
~SvxGeneralTabPage()228 SvxGeneralTabPage::~SvxGeneralTabPage()
229 {
230 	delete pImpl;
231 }
232 
233 //------------------------------------------------------------------------
234 
Create(Window * pParent,const SfxItemSet & rAttrSet)235 SfxTabPage*	SvxGeneralTabPage::Create( Window* pParent, const SfxItemSet& rAttrSet )
236 {
237 	return ( new SvxGeneralTabPage( pParent, rAttrSet ) );
238 }
239 
240 //------------------------------------------------------------------------
241 
FillItemSet(SfxItemSet &)242 sal_Bool SvxGeneralTabPage::FillItemSet( SfxItemSet& )
243 {
244 	// Eingaben trimmen (f"uhrende und nachfolgende Leerzeichen entfernen)
245 	aCompanyEdit.SetText( TRIM(aCompanyEdit.GetText()) );
246 	aFirstName.SetText( TRIM(aFirstName.GetText()) );
247 	aName.SetText( TRIM(aName.GetText()) );
248 	aShortName.SetText( TRIM(aShortName.GetText()) );
249 	aStreetEdit.SetText( TRIM(aStreetEdit.GetText()) );
250 	aCountryEdit.SetText( TRIM(aCountryEdit.GetText()) );
251 	aPLZEdit.SetText( TRIM(aPLZEdit.GetText()) );
252 	aCityEdit.SetText( TRIM(aCityEdit.GetText()) );
253 	aUsCityEdit.SetText( TRIM(aUsCityEdit.GetText()) );
254 	aUsStateEdit.SetText( TRIM(aUsStateEdit.GetText()) );
255 	aUsZipEdit.SetText( TRIM(aUsZipEdit.GetText()) );
256 	aTitleEdit.SetText( TRIM(aTitleEdit.GetText()) );
257 	aPositionEdit.SetText( TRIM(aPositionEdit.GetText()) );
258 	aTelPrivEdit.SetText( TRIM(aTelPrivEdit.GetText()) );
259 	aTelCompanyEdit.SetText( TRIM(aTelCompanyEdit.GetText()) );
260 	aFaxEdit.SetText( TRIM(aFaxEdit.GetText()) );
261 	aEmailEdit.SetText( TRIM(aEmailEdit.GetText()) );
262 
263     sal_Bool bModified = sal_False;
264     bModified |= GetAddress_Impl();
265 	SvtSaveOptions aSaveOpt;
266 	if ( aUseDataCB.IsChecked() != aSaveOpt.IsUseUserData() )
267 	{
268 		aSaveOpt.SetUseUserData( aUseDataCB.IsChecked() );
269 		bModified |= sal_True;
270 	}
271 	return bModified;
272 }
273 
274 //------------------------------------------------------------------------
275 
Reset(const SfxItemSet & rSet)276 void SvxGeneralTabPage::Reset( const SfxItemSet& rSet )
277 {
278     SetAddress_Impl();
279 
280     sal_uInt16 nWhich = GetWhich( SID_FIELD_GRABFOCUS );
281 	if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET )
282 	{
283 		sal_uInt16 nField = ( (SfxUInt16Item&)rSet.Get( nWhich ) ).GetValue();
284 
285 		switch ( nField )
286 		{
287 			case COMPANY_EDIT:		aCompanyEdit.GrabFocus(); break;
288 			case FIRSTNAME_EDIT:    aFirstName.GrabFocus(); break;
289 			case LASTNAME_EDIT:		aName.GrabFocus(); break;
290 			case STREET_EDIT:		aStreetEdit.GrabFocus(); break;
291 			case COUNTRY_EDIT:		aCountryEdit.GrabFocus(); break;
292 			case PLZ_EDIT:
293 				if ( aPLZEdit.IsVisible() )
294 					aPLZEdit.GrabFocus();
295 				else
296 					aUsZipEdit.GrabFocus();
297 				break;
298 			case CITY_EDIT:
299 				if ( aCityEdit.IsVisible() )
300 					aCityEdit.GrabFocus();
301 				else
302 					aUsCityEdit.GrabFocus();
303 				break;
304 			case STATE_EDIT:
305 				if ( aUsStateEdit.IsVisible() )
306 					aUsStateEdit.GrabFocus();
307 				else
308 					aCityEdit.GrabFocus();
309 				break;
310 			case TITLE_EDIT:		aTitleEdit.GrabFocus(); break;
311 			case POSITION_EDIT:		aPositionEdit.GrabFocus(); break;
312 			case SHORTNAME_EDIT:	aShortName.GrabFocus(); break;
313 			case TELPRIV_EDIT:		aTelPrivEdit.GrabFocus(); break;
314 			case TELCOMPANY_EDIT:	aTelCompanyEdit.GrabFocus(); break;
315 			case FAX_EDIT:			aFaxEdit.GrabFocus(); break;
316 			case EMAIL_EDIT:		aEmailEdit.GrabFocus(); break;
317 			default:				aCompanyEdit.GrabFocus();
318 		}
319 	}
320 
321 	aUseDataCB.Check( SvtSaveOptions().IsUseUserData() );
322 }
323 
324 //------------------------------------------------------------------------
325 
IMPL_LINK(SvxGeneralTabPage,ModifyHdl_Impl,Edit *,pEdit)326 IMPL_LINK( SvxGeneralTabPage, ModifyHdl_Impl, Edit *, pEdit )
327 {
328 	if ( aShortName.IsEnabled() )
329 	{
330 		String aShortStr( aShortName.GetText() );
331 		switch ( aShortStr.Len() )
332 		{
333 			case 0:
334 				aShortStr = String( RTL_CONSTASCII_STRINGPARAM("  ") );
335 				break;
336 
337 			case 1:
338 				aShortStr += ' ';
339 				break;
340 		}
341 
342 		sal_uInt16 nPos = ( pEdit == &aFirstName ) ? 0 : 1;
343 		String aTxt = pEdit->GetText();
344 		sal_Unicode cChar = ( aTxt.Len() > 0 ) ? aTxt.GetChar(0) : ' ';
345 		aShortStr.SetChar( nPos, cChar );
346 		aShortStr.EraseTrailingChars();
347 		aShortName.SetText( aShortStr );
348 	}
349 	return 0;
350 }
351 
352 //------------------------------------------------------------------------
353 
GetAddress_Impl()354 sal_Bool SvxGeneralTabPage::GetAddress_Impl()
355 {
356     sal_Bool bRet =
357     (   aCompanyEdit.GetSavedValue()  !=        aCompanyEdit.GetText()  ||
358         aFirstName.GetSavedValue()  !=          aFirstName.GetText()  ||
359         aFatherName.GetSavedValue()  !=         aFatherName.GetText()  ||
360         aName.GetSavedValue()  !=               aName.GetText()  ||
361         aShortName.GetSavedValue()  !=          aShortName.GetText()  ||
362         aStreetEdit.GetSavedValue()  !=         aStreetEdit.GetText()  ||
363         aApartmentNrEdit.GetSavedValue()  !=    aApartmentNrEdit.GetText()  ||
364         aPLZEdit.GetSavedValue()  !=            aPLZEdit.GetText()  ||
365         aCityEdit.GetSavedValue()  !=           aCityEdit.GetText()  ||
366         aUsCityEdit.GetSavedValue()  !=         aUsCityEdit.GetText()  ||
367         aUsStateEdit.GetSavedValue()  !=        aUsStateEdit.GetText()  ||
368         aUsZipEdit.GetSavedValue()  !=          aUsZipEdit.GetText()  ||
369         aCountryEdit.GetSavedValue()  !=        aCountryEdit.GetText()  ||
370         aTitleEdit.GetSavedValue()  !=          aTitleEdit.GetText()  ||
371         aPositionEdit.GetSavedValue()  !=       aPositionEdit.GetText()  ||
372         aTelPrivEdit.GetSavedValue()  !=        aTelPrivEdit.GetText()  ||
373         aTelCompanyEdit.GetSavedValue()  !=     aTelCompanyEdit.GetText()  ||
374         aFaxEdit.GetSavedValue()  !=            aFaxEdit.GetText()  ||
375         aEmailEdit.GetSavedValue()  !=          aEmailEdit.GetText() );
376 
377     LanguageType eLang = Application::GetSettings().GetUILanguage();
378     sal_Bool bUS = ( LANGUAGE_ENGLISH_US == eLang );
379 
380     SvtUserOptions aUserOpt;
381     aUserOpt.SetCompany(aCompanyEdit.GetText());
382     aUserOpt.SetFirstName(aFirstName.GetText());
383     aUserOpt.SetLastName(aName.GetText());
384     aUserOpt.SetID( aShortName.GetText());
385 
386     aUserOpt.SetStreet(aStreetEdit.GetText() );
387 
388     aUserOpt.SetCountry(aCountryEdit.GetText() );
389 
390     aUserOpt.SetZip(bUS ? aUsZipEdit.GetText() : aPLZEdit.GetText() );
391     aUserOpt.SetCity(bUS ? aUsCityEdit.GetText() : aCityEdit.GetText() );
392 
393     aUserOpt.SetTitle( aTitleEdit.GetText() );
394     aUserOpt.SetPosition(aPositionEdit.GetText() );
395     aUserOpt.SetTelephoneHome( aTelPrivEdit.GetText() );
396     aUserOpt.SetTelephoneWork( aTelCompanyEdit.GetText() );
397     aUserOpt.SetFax( aFaxEdit.GetText() );
398     aUserOpt.SetEmail( aEmailEdit.GetText() );
399     aUserOpt.SetState( bUS ? aUsStateEdit.GetText() : String() );
400 
401     if ( LANGUAGE_RUSSIAN == eLang )
402     {
403         aUserOpt.SetFathersName( aFatherName.GetText() );
404         aUserOpt.SetApartment( aApartmentNrEdit.GetText() );
405     }
406     return bRet;
407 }
408 
409 //------------------------------------------------------------------------
410 
SetAddress_Impl()411 void SvxGeneralTabPage::SetAddress_Impl()
412 {
413     LanguageType eLang = Application::GetSettings().GetUILanguage();
414     sal_Bool bUS = ( LANGUAGE_ENGLISH_US == eLang );
415     SvtUserOptions aUserOpt;
416     aCompanyEdit.SetText( aUserOpt.GetCompany() );
417     if ( aUserOpt.IsTokenReadonly( USER_OPT_COMPANY ) )
418     {
419         aCompanyLbl.Disable();
420         aCompanyEdit.Disable();
421     }
422     sal_Int16 nEditCount = 0;
423     aFirstName.SetText( aUserOpt.GetFirstName() );
424     if ( aUserOpt.IsTokenReadonly( USER_OPT_FIRSTNAME ) )
425     {
426         aFirstName.Disable();
427         nEditCount++;
428     }
429     aName.SetText( aUserOpt.GetLastName() );
430     if ( aUserOpt.IsTokenReadonly( USER_OPT_LASTNAME ) )
431     {
432         aName.Disable();
433         nEditCount++;
434     }
435     aShortName.SetText( aUserOpt.GetID() );
436     if ( aUserOpt.IsTokenReadonly( USER_OPT_ID ) )
437     {
438         aShortName.Disable();
439         nEditCount++;
440     }
441     aNameLbl.Enable( ( nEditCount != 3 ) );
442     aStreetEdit.SetText( aUserOpt.GetStreet() );
443     if ( aUserOpt.IsTokenReadonly( USER_OPT_STREET ) )
444     {
445         aStreetLbl.Disable();
446         aStreetEdit.Disable();
447     }
448     Edit* pPLZEdit = bUS ? &aUsZipEdit : &aPLZEdit;
449     Edit* pCityEdit = bUS ? &aUsCityEdit : &aCityEdit;
450     pPLZEdit->SetText( aUserOpt.GetZip() );
451     pCityEdit->SetText( aUserOpt.GetCity() );
452     nEditCount = 0;
453     if ( aUserOpt.IsTokenReadonly( USER_OPT_ZIP ) )
454     {
455         pPLZEdit->Disable();
456         nEditCount++;
457     }
458     if ( aUserOpt.IsTokenReadonly( USER_OPT_CITY ) )
459     {
460         pCityEdit->Disable();
461         nEditCount++;
462     }
463     if ( bUS )
464     {
465         aUsStateEdit.SetText( aUserOpt.GetState() );
466         if ( aUserOpt.IsTokenReadonly( USER_OPT_STATE ) )
467         {
468             aUsStateEdit.Disable();
469             nEditCount++;
470         }
471     }
472     aCityLbl.Enable( ( nEditCount != ( bUS ? 3 : 2 ) ) );
473     aCountryEdit.SetText( aUserOpt.GetCountry() );
474     if ( aUserOpt.IsTokenReadonly( USER_OPT_COUNTRY ) )
475     {
476         aCountryLbl.Disable();
477         aCountryEdit.Disable();
478     }
479     aTitleEdit.SetText( aUserOpt.GetTitle() );
480     aPositionEdit.SetText( aUserOpt.GetPosition() );
481     nEditCount = 0;
482     if ( aUserOpt.IsTokenReadonly( USER_OPT_TITLE ) )
483     {
484         aTitleEdit.Disable();
485         nEditCount++;
486     }
487     if ( aUserOpt.IsTokenReadonly( USER_OPT_POSITION ) )
488     {
489         aPositionEdit.Disable();
490         nEditCount++;
491     }
492     aTitlePosLbl.Enable( ( nEditCount != 2 ) );
493     aTelPrivEdit.SetText( aUserOpt.GetTelephoneHome() );
494     aTelCompanyEdit.SetText( aUserOpt.GetTelephoneWork() );
495     nEditCount = 0;
496     if ( aUserOpt.IsTokenReadonly( USER_OPT_TELEPHONEHOME ) )
497     {
498         aTelPrivEdit.Disable();
499         nEditCount++;
500     }
501     if ( aUserOpt.IsTokenReadonly( USER_OPT_TELEPHONEWORK ) )
502     {
503         aTelCompanyEdit.Disable();
504         nEditCount++;
505     }
506     aPhoneLbl.Enable( ( nEditCount != 2 ) );
507     aFaxEdit.SetText( aUserOpt.GetFax() );
508     aEmailEdit.SetText( aUserOpt.GetEmail() );
509     nEditCount = 0;
510     if ( aUserOpt.IsTokenReadonly( USER_OPT_FAX ) )
511     {
512         aFaxEdit.Disable();
513         nEditCount++;
514     }
515     if ( aUserOpt.IsTokenReadonly( USER_OPT_EMAIL ) )
516     {
517         aEmailEdit.Disable();
518         nEditCount++;
519     }
520     aFaxMailLbl.Enable( ( nEditCount != 2 ) );
521 
522     if ( LANGUAGE_RUSSIAN == eLang )
523     {
524         aFatherName.SetText( aUserOpt.GetFathersName() );
525         aApartmentNrEdit.SetText( aUserOpt.GetApartment() );
526     }
527 
528     aCompanyEdit.SaveValue();
529     aFirstName.SaveValue();
530     aFatherName.SaveValue();
531     aName.SaveValue();
532     aShortName.SaveValue();
533     aStreetEdit.SaveValue();
534     aApartmentNrEdit.SaveValue();
535     aPLZEdit.SaveValue();
536     aCityEdit.SaveValue();
537     aUsCityEdit.SaveValue();
538     aUsStateEdit.SaveValue();
539     aUsZipEdit.SaveValue();
540     aCountryEdit.SaveValue();
541     aTitleEdit.SaveValue();
542     aPositionEdit.SaveValue();
543     aTelPrivEdit.SaveValue();
544     aTelCompanyEdit.SaveValue();
545     aFaxEdit.SaveValue();
546     aEmailEdit.SaveValue();
547 }
548 
549 // -----------------------------------------------------------------------
550 
DeactivatePage(SfxItemSet * _pSet)551 int SvxGeneralTabPage::DeactivatePage( SfxItemSet* _pSet )
552 {
553     if ( _pSet )
554         FillItemSet( *_pSet );
555 	return LEAVE_PAGE;
556 }
557 
558