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