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