Kaydet (Commit) 030df631 authored tarafından Uray M. János's avatar Uray M. János Kaydeden (comit) Andras Timar

Cleanup in Tools > Options > User Data

Change-Id: I4f0a0304d7dd23ed8ce011e6f8f90e170bfbe5df

Cleanup in Tools > Options > User Data

Change-Id: If89f19e22b6efeb0fdd811ff8afe2cb6c0b0bf4e
Reviewed-on: https://gerrit.libreoffice.org/500Reviewed-by: 's avatarAndras Timar <atimar@suse.com>
Tested-by: 's avatarAndras Timar <atimar@suse.com>
üst c20f15c1
...@@ -16,40 +16,23 @@ ...@@ -16,40 +16,23 @@
* except in compliance with the License. You may obtain a copy of * except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 . * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/ */
#ifndef _SVX_CUIOPTGENRL_HXX #ifndef SVX_CUIOPTGENRL_HXX
#define _SVX_CUIOPTGENRL_HXX #define SVX_CUIOPTGENRL_HXX
// include ---------------------------------------------------------------
#include <svx/optgenrl.hxx> #include <svx/optgenrl.hxx>
#include <sfx2/tabdlg.hxx> #include <sfx2/tabdlg.hxx>
#include <vcl/fixed.hxx> #include <vcl/fixed.hxx>
#include <vcl/edit.hxx>
#include <vcl/group.hxx> #include <vector>
#include <boost/shared_ptr.hpp>
// forward --------------------------------------------------------------- // forward ---------------------------------------------------------------
struct GeneralTabPage_Impl; class Edit;
#define SfxGeneralTabPage SvxGeneralTabPage #define SfxGeneralTabPage SvxGeneralTabPage
#define INDEX_NOTSET ((sal_Int16)-1)
// class SvxUserEdit -----------------------------------------------------
class SvxUserEdit : public Edit
{
private:
sal_Int16 m_nIndex;
FixedText* m_pLabel;
public:
SvxUserEdit( Window* pParent, const ResId& rResId,
sal_Int16 nIndex = INDEX_NOTSET, FixedText* pLabel = NULL ) :
Edit( pParent, rResId, true ), m_nIndex( nIndex ), m_pLabel( pLabel ) {}
inline void SetIndex( sal_Int16 nIndex ) { m_nIndex = nIndex; }
inline sal_Int16 GetIndex() const { return m_nIndex; }
inline void SetLabel( FixedText* pLabel ) { m_pLabel = pLabel; }
inline FixedText* GetLabel() const { return m_pLabel; }
};
// class SvxGeneralTabPage ----------------------------------------------- // class SvxGeneralTabPage -----------------------------------------------
...@@ -57,62 +40,44 @@ class SvxGeneralTabPage : public SfxTabPage ...@@ -57,62 +40,44 @@ class SvxGeneralTabPage : public SfxTabPage
{ {
using TabPage::DeactivatePage; using TabPage::DeactivatePage;
private: private:
// the horizontal line "Address"
FixedLine aAddrFrm; FixedLine aAddrFrm;
FixedText aCompanyLbl; // the "Use data for document properties" checkbox (but where is it?)
SvxUserEdit aCompanyEdit;
FixedText aNameLbl;
FixedText aNameLblRuss;
FixedText aNameLblEastern;
SvxUserEdit aFirstName;
SvxUserEdit aFatherName;
SvxUserEdit aName;
SvxUserEdit aShortName;
FixedText aStreetLbl;
FixedText aStreetLblRuss;
SvxUserEdit aStreetEdit;
SvxUserEdit aApartmentNrEdit;
FixedText aCityLbl;
SvxUserEdit aPLZEdit;
SvxUserEdit aCityEdit;
SvxUserEdit aUsCityEdit;
SvxUserEdit aUsStateEdit;
SvxUserEdit aUsZipEdit;
FixedText aCountryLbl;
SvxUserEdit aCountryEdit;
FixedText aTitlePosLbl;
SvxUserEdit aTitleEdit;
SvxUserEdit aPositionEdit;
FixedText aPhoneLbl;
SvxUserEdit aTelPrivEdit;
SvxUserEdit aTelCompanyEdit;
FixedText aFaxMailLbl;
SvxUserEdit aFaxEdit;
SvxUserEdit aEmailEdit;
CheckBox aUseDataCB; CheckBox aUseDataCB;
// rows
class Row;
std::vector<boost::shared_ptr<Row> > vRows;
// fields
class Field;
std::vector<boost::shared_ptr<Field> > vFields;
// "name" fields
unsigned nNameRow;
unsigned nShortNameField;
GeneralTabPage_Impl* pImpl;
#ifdef _SVX_OPTGENRL_CXX
DECL_LINK( ModifyHdl_Impl, Edit * ); DECL_LINK( ModifyHdl_Impl, Edit * );
sal_Bool GetAddress_Impl(); sal_Bool GetAddress_Impl();
void SetAddress_Impl(); void SetAddress_Impl();
#endif
void CreateControls ();
void PositionControls ();
void SetLinks ();
void SetAccessibleNames ();
protected: protected:
virtual int DeactivatePage( SfxItemSet* pSet ); virtual int DeactivatePage( SfxItemSet* pSet );
public: public:
SvxGeneralTabPage( Window* pParent, const SfxItemSet& rSet ); SvxGeneralTabPage( Window* pParent, const SfxItemSet& rSet );
~SvxGeneralTabPage(); ~SvxGeneralTabPage ();
static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet ); static SfxTabPage* Create( Window* pParent, const SfxItemSet& rAttrSet );
virtual sal_Bool FillItemSet( SfxItemSet& rSet ); virtual sal_Bool FillItemSet( SfxItemSet& rSet );
virtual void Reset( const SfxItemSet& rSet ); virtual void Reset( const SfxItemSet& rSet );
}; };
#endif // #ifndef _SVX_CUIOPTGENRL_HXX #endif // #ifndef SVX_CUIOPTGENRL_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -33,8 +33,9 @@ ...@@ -33,8 +33,9 @@
#include <vcl/msgbox.hxx> #include <vcl/msgbox.hxx>
#include <unotools/saveopt.hxx> #include <unotools/saveopt.hxx>
#include <svl/intitem.hxx> #include <svl/intitem.hxx>
#include <vcl/edit.hxx>
#define _SVX_OPTGENRL_CXX #define SVX_OPTGENRL_CXX
#include <cuires.hrc> #include <cuires.hrc>
#include "optgenrl.hrc" #include "optgenrl.hrc"
...@@ -42,29 +43,173 @@ ...@@ -42,29 +43,173 @@
#include "cuioptgenrl.hxx" #include "cuioptgenrl.hxx"
#include <dialmgr.hxx> #include <dialmgr.hxx>
#include <svx/dlgutil.hxx> #include <svx/dlgutil.hxx>
#include <svx/strarray.hxx>
#include <svx/svxids.hrc> // SID_FIELD_GRABFOCUS #include <svx/svxids.hrc> // SID_FIELD_GRABFOCUS
#define TRIM(s) comphelper::string::strip(s, ' ') #include <boost/make_shared.hpp>
// struct GeneralTabPage_Impl -------------------------------------------- namespace
{
// rows
enum RowType
{
Row_Company,
Row_Name,
Row_Name_Russian,
Row_Name_Eastern,
Row_Street,
Row_Street_Russian,
Row_City,
Row_City_US,
Row_Country,
Row_TitlePos,
Row_Phone,
Row_FaxMail,
nRowCount
};
// language flags
namespace Lang
{
unsigned const Others = 1;
unsigned const Russian = 2;
unsigned const Eastern = 4;
unsigned const US = 8;
unsigned const All = -1;
}
struct GeneralTabPage_Impl //
// vRowInfo[] -- rows (text + one or more edit boxes)
// The order is the same as in RowType above, which is up to down.
//
struct
{
// id of the text
int nTextId;
// language flags (see Lang above):
// which language is this row for?
unsigned nLangFlags;
}
const vRowInfo[] =
{
{ FT_COMPANY, Lang::All },
{ FT_NAME, Lang::All & ~Lang::Russian & ~Lang::Eastern },
{ FT_NAME_RUSS, Lang::Russian },
{ FT_NAME_EASTERN, Lang::Eastern },
{ FT_STREET, Lang::All & ~Lang::Russian },
{ FT_STREET_RUSS, Lang::Russian },
{ FT_CITY, Lang::All & ~Lang::US },
{ FT_CITY_US, Lang::US },
{ FT_COUNTRY, Lang::All },
{ FT_TITLEPOS, Lang::All },
{ FT_PHONE, Lang::All },
{ FT_FAXMAIL, Lang::All },
};
//
// vFieldInfo[] -- edit boxes
// The order is up to down, and then left to right.
//
struct
{
// in which row?
RowType eRow;
// id of the edit box
int nEditId;
// relative width
// The actual width is calculated from the relative width to fill
// the entire row. See PositionControls() below.
float fRelativeWidth;
// id for SvtUserOptions in unotools/useroptions.hxx
int nUserOptionsId;
// id for settings the focus (defined in svx/optgenrl.hxx)
int nGrabFocusId;
}
const vFieldInfo[] =
{ {
sal_Bool mbStreetEnabled; // Company
sal_Bool mbPLZEnabled; { Row_Company, ED_COMPANY, 1, USER_OPT_COMPANY, COMPANY_EDIT },
sal_Bool mbCityEnabled; // Name
sal_Bool mbUsCityEnabled; { Row_Name, ED_FIRSTNAME, 5, USER_OPT_FIRSTNAME, FIRSTNAME_EDIT },
sal_Bool mbUsZipEnabled; { Row_Name, ED_NAME, 5, USER_OPT_LASTNAME, LASTNAME_EDIT },
{ Row_Name, ED_SHORTNAME, 2, USER_OPT_ID, SHORTNAME_EDIT },
String maQueryStr; // Name (russian)
{ Row_Name_Russian, ED_NAME, 5, USER_OPT_LASTNAME, LASTNAME_EDIT },
GeneralTabPage_Impl() : { Row_Name_Russian, ED_FIRSTNAME, 5, USER_OPT_FIRSTNAME, FIRSTNAME_EDIT },
mbStreetEnabled ( sal_False ), { Row_Name_Russian, ED_FATHERNAME, 5, USER_OPT_FATHERSNAME, 0 },
mbPLZEnabled ( sal_False ), { Row_Name_Russian, ED_SHORTNAME, 2, USER_OPT_ID, SHORTNAME_EDIT },
mbCityEnabled ( sal_False ), // Name (eastern: reversed name order)
mbUsCityEnabled ( sal_False ), { Row_Name_Eastern, ED_NAME, 5, USER_OPT_LASTNAME, LASTNAME_EDIT },
mbUsZipEnabled ( sal_False ) {} { Row_Name_Eastern, ED_FIRSTNAME, 5, USER_OPT_FIRSTNAME, FIRSTNAME_EDIT },
{ Row_Name_Eastern, ED_SHORTNAME, 2, USER_OPT_ID, SHORTNAME_EDIT },
// Street
{ Row_Street, ED_STREET, 1, USER_OPT_STREET, STREET_EDIT },
// Street (russian)
{ Row_Street_Russian, ED_STREET, 8, USER_OPT_STREET, STREET_EDIT },
{ Row_Street_Russian, ED_APARTMENTNR, 1, USER_OPT_APARTMENT, 0 },
// City
{ Row_City, ED_PLZ, 1, USER_OPT_ZIP, PLZ_EDIT },
{ Row_City, ED_CITY, 5, USER_OPT_CITY, CITY_EDIT },
// City (US)
{ Row_City_US, ED_US_CITY, 15, USER_OPT_CITY, CITY_EDIT },
{ Row_City_US, ED_US_STATE, 5, USER_OPT_STATE, STATE_EDIT },
{ Row_City_US, ED_US_ZIPCODE, 4, USER_OPT_ZIP, PLZ_EDIT },
// Country
{ Row_Country, ED_COUNTRY, 1, USER_OPT_COUNTRY, COUNTRY_EDIT },
// Title/Position
{ Row_TitlePos, ED_TITLE, 1, USER_OPT_TITLE, TITLE_EDIT },
{ Row_TitlePos, ED_POSITION, 1, USER_OPT_POSITION, POSITION_EDIT },
// Phone
{ Row_Phone, ED_TELPRIVAT, 1, USER_OPT_TELEPHONEHOME, TELPRIV_EDIT },
{ Row_Phone, ED_TELCOMPANY, 1, USER_OPT_TELEPHONEWORK, TELCOMPANY_EDIT },
// Fax/Mail
{ Row_FaxMail, ED_FAX, 1, USER_OPT_FAX, FAX_EDIT },
{ Row_FaxMail, ED_EMAIL, 1, USER_OPT_EMAIL, EMAIL_EDIT },
};
} // namespace
// -----------------------------------------------------------------------
//
// Row
//
struct SvxGeneralTabPage::Row
{
// which row is it?
RowType eRow;
// row label
FixedText aLabel;
// first and last field in the row (last is exclusive)
unsigned nFirstField, nLastField;
public:
Row (Window& rParent, int nResId, RowType eRow_) :
eRow(eRow_),
aLabel(&rParent, CUI_RES(nResId), true),
nFirstField(0), nLastField(0)
{ }
};
// -----------------------------------------------------------------------
//
// Field
//
struct SvxGeneralTabPage::Field
{
// which field is this? (in vFieldInfo[] above)
unsigned iField;
// edit box
Edit aEdit;
public:
Field (Window& rParent, int nResId, unsigned iField_) :
iField(iField_),
aEdit(&rParent, CUI_RES(nResId), true)
{ }
}; };
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
...@@ -74,160 +219,176 @@ SvxGeneralTabPage::SvxGeneralTabPage( Window* pParent, const SfxItemSet& rCoreSe ...@@ -74,160 +219,176 @@ SvxGeneralTabPage::SvxGeneralTabPage( Window* pParent, const SfxItemSet& rCoreSe
SfxTabPage( pParent, CUI_RES(RID_SFXPAGE_GENERAL), rCoreSet ), SfxTabPage( pParent, CUI_RES(RID_SFXPAGE_GENERAL), rCoreSet ),
aAddrFrm ( this, CUI_RES( GB_ADDRESS ) ), aAddrFrm ( this, CUI_RES( GB_ADDRESS ) ),
aCompanyLbl ( this, CUI_RES( FT_COMPANY ), true ), aUseDataCB ( this, CUI_RES( CB_USEDATA ) )
aCompanyEdit ( this, CUI_RES( ED_COMPANY ), INDEX_NOTSET, &aCompanyLbl ),
aNameLbl ( this, CUI_RES( FT_NAME ), true ),
aNameLblRuss ( this, CUI_RES( FT_NAME_RUSS ), true ),
aNameLblEastern ( this, CUI_RES( FT_NAME_EASTERN ), true ),
aFirstName ( this, CUI_RES( ED_FIRSTNAME ), 0, &aNameLbl ),
aFatherName ( this, CUI_RES( ED_FATHERNAME ) ),
aName ( this, CUI_RES( ED_NAME ), 1, &aNameLbl ),
aShortName ( this, CUI_RES( ED_SHORTNAME ), 2, &aNameLbl ),
aStreetLbl ( this, CUI_RES( FT_STREET ), true ),
aStreetLblRuss ( this, CUI_RES( FT_STREET_RUSS ), true ),
aStreetEdit ( this, CUI_RES( ED_STREET ), 0, &aStreetLbl ),
aApartmentNrEdit( this, CUI_RES( ED_APARTMENTNR ), 1, &aStreetLblRuss ),
aCityLbl ( this, CUI_RES( FT_CITY ), true ),
aPLZEdit ( this, CUI_RES( ED_PLZ ), 0, &aCityLbl ),
aCityEdit ( this, CUI_RES( ED_CITY ), 1, &aCityLbl ),
aUsCityEdit ( this, CUI_RES( ED_US_CITY ), 0, &aCityLbl ),
aUsStateEdit ( this, CUI_RES( ED_US_STATE ), 1, &aCityLbl ),
aUsZipEdit ( this, CUI_RES( ED_US_ZIPCODE ), 2, &aCityLbl ),
aCountryLbl ( this, CUI_RES( FT_COUNTRY ), true ),
aCountryEdit ( this, CUI_RES( ED_COUNTRY ), INDEX_NOTSET, &aCountryLbl ),
aTitlePosLbl ( this, CUI_RES( FT_TITLEPOS ), true ),
aTitleEdit ( this, CUI_RES( ED_TITLE ), 0, &aTitlePosLbl ),
aPositionEdit ( this, CUI_RES( ED_POSITION ), 1, &aTitlePosLbl ),
aPhoneLbl ( this, CUI_RES( FT_PHONE ), true ),
aTelPrivEdit ( this, CUI_RES( ED_TELPRIVAT ), 0, &aPhoneLbl ),
aTelCompanyEdit ( this, CUI_RES( ED_TELCOMPANY ), 1, &aPhoneLbl ),
aFaxMailLbl ( this, CUI_RES( FT_FAXMAIL ), true ),
aFaxEdit ( this, CUI_RES( ED_FAX ), 0, &aFaxMailLbl ),
aEmailEdit ( this, CUI_RES( ED_EMAIL ), 1, &aFaxMailLbl ),
aUseDataCB ( this, CUI_RES( CB_USEDATA ) ),
pImpl ( new GeneralTabPage_Impl )
{ {
LanguageType eLang = Application::GetSettings().GetUILanguage(); CreateControls();
pImpl->maQueryStr = String( CUI_RES( STR_QUERY_REG ) ); PositionControls();
SetExchangeSupport(); // this page needs ExchangeSupport
SetLinks();
SetAccessibleNames();
}
if ( LANGUAGE_ENGLISH_US == eLang ) //------------------------------------------------------------------------
{
// construct American post/mail address SvxGeneralTabPage::~SvxGeneralTabPage ()
aPLZEdit.Hide(); { }
aCityEdit.Hide();
aCityLbl.SetText( CUI_RES( STR_US_STATE ) ); //------------------------------------------------------------------------
}
else if ( LANGUAGE_RUSSIAN == eLang ) // Creates and initializes the titles and the edit boxes,
{ // according to vRowInfo[] and vFieldInfo[] above.
aUsCityEdit.Hide(); void SvxGeneralTabPage::CreateControls ()
aUsStateEdit.Hide(); {
aUsZipEdit.Hide(); // which language bit do we use? (see Lang and vRowInfo[] above)
aNameLbl.Hide(); unsigned LangBit;
aNameLblRuss.Show(); switch (LanguageType const eLang = Application::GetSettings().GetUILanguage())
aStreetLbl.Hide();
aStreetLblRuss.Show();
aFatherName.Show();
aName.SetIndex( 0 );
aName.SetLabel( &aNameLblRuss );
aFirstName.SetIndex( 1 );
aFirstName.SetLabel( &aNameLblRuss );
aFatherName.SetIndex( 2 );
aFatherName.SetLabel( &aNameLblRuss );
aShortName.SetIndex( 3 );
aShortName.SetLabel( &aNameLblRuss );
Point aEditPoint = LogicToPixel( Point( MID, LINE(1) ), MAP_APPFONT );
Point aRightPoint = LogicToPixel( Point( RIGHT, LINE(1) ), MAP_APPFONT );
Size aEditSize = LogicToPixel( Size( 42, 12 ), MAP_APPFONT );
Size a2Size = LogicToPixel( Size( 2, 2 ), MAP_APPFONT );
long nDelta = aEditSize.Width() + a2Size.Width();
aName.SetPosSizePixel( aEditPoint, aEditSize );
aEditPoint.X() = aEditPoint.X() + nDelta;
aFirstName.SetPosSizePixel( aEditPoint, aEditSize );
aEditPoint.X() = aEditPoint.X() + nDelta;
aFatherName.SetPosSizePixel( aEditPoint, aEditSize );
aEditPoint.X() = aEditPoint.X() + nDelta;
aEditSize.Width() = aRightPoint.X() - aEditPoint.X();
aShortName.SetPosSizePixel( aEditPoint, aEditSize );
Size aStreetSize = aStreetEdit.GetSizePixel();
aStreetSize.Width() = aStreetSize.Width() - aEditSize.Width() - a2Size.Width();
aStreetEdit.SetSizePixel( aStreetSize );
aApartmentNrEdit.Show();
Point aApartmentPoint = LogicToPixel( Point( MID, LINE(2) ), MAP_APPFONT );
aApartmentPoint.X() = aEditPoint.X();
aApartmentNrEdit.SetPosSizePixel( aApartmentPoint, aEditSize );
aName.SetZOrder( &aNameLblRuss, WINDOW_ZORDER_BEHIND );
aFirstName.SetZOrder( &aName, WINDOW_ZORDER_BEHIND );
aFatherName.SetZOrder( &aFirstName, WINDOW_ZORDER_BEHIND );
}
else if (MsLangId::isFamilyNameFirst(eLang))
{ {
aUsCityEdit.Hide(); case LANGUAGE_ENGLISH_US:
aUsStateEdit.Hide(); LangBit = Lang::US;
aUsZipEdit.Hide(); break;
aNameLbl.Hide(); case LANGUAGE_RUSSIAN:
aNameLblEastern.Show(); LangBit = Lang::Russian;
break;
// swap "first name" field and "last name" field default:
Point aPosTmp = aFirstName.GetPosPixel(); if (MsLangId::isFamilyNameFirst(eLang))
aFirstName.SetPosPixel( aName.GetPosPixel() ); LangBit = Lang::Eastern;
aName.SetPosPixel( aPosTmp ); else
aFirstName.SetZOrder( &aName, WINDOW_ZORDER_BEHIND ); LangBit = Lang::Others;
break;
} }
else
// creating rows
unsigned iField = 0;
for (unsigned iRow = 0; iRow != nRowCount; ++iRow)
{ {
aUsCityEdit.Hide(); RowType const eRow = static_cast<RowType>(iRow);
aUsStateEdit.Hide(); // is the row visible?
aUsZipEdit.Hide(); if (!(vRowInfo[iRow].nLangFlags & LangBit))
continue;
// creating row
vRows.push_back(boost::make_shared<Row>(
*this, vRowInfo[iRow].nTextId, eRow
));
Row& rRow = *vRows.back();
// fields in the row
static unsigned const nFieldCount = sizeof vFieldInfo / sizeof vFieldInfo[0];
// skipping other (invisible) rows
while (iField != nFieldCount && vFieldInfo[iField].eRow != eRow)
++iField;
// fields in the row
rRow.nFirstField = vFields.size();
for ( ; iField != nFieldCount && vFieldInfo[iField].eRow == eRow; ++iField)
{
// creating edit field
vFields.push_back(boost::make_shared<Field>(
*this, vFieldInfo[iField].nEditId, iField
));
// "short name" field?
if (vFieldInfo[iField].nEditId == ED_SHORTNAME)
{
nNameRow = vRows.size() - 1;
nShortNameField = vFields.size() - 1;
}
}
rRow.nLastField = vFields.size();
} }
FreeResource(); FreeResource();
}
// this page needs ExchangeSupport //------------------------------------------------------------------------
SetExchangeSupport();
Link aLink = LINK( this, SvxGeneralTabPage, ModifyHdl_Impl );
aFirstName.SetModifyHdl( aLink );
aName.SetModifyHdl( aLink );
// because some labels have text for more than one edit field we have to split these texts // sets the size and the position of the controls
// and set these texts as accessible name of the corresponding edit fields void SvxGeneralTabPage::PositionControls ()
SvxUserEdit* pEdits[] = {
{ // sizes and locations
&aCompanyEdit, &aFirstName, &aFatherName, &aName, &aShortName, &aStreetEdit, int const nLeft = 12, nMid = 100, nRight = 250;
&aApartmentNrEdit, &aPLZEdit, &aCityEdit, &aUsCityEdit, &aUsStateEdit, &aUsZipEdit, int const nTop = 14;
&aCountryEdit, &aTitleEdit, &aPositionEdit, &aTelPrivEdit, &aTelCompanyEdit, unsigned const nHSpace = 2, nVSpace = 3;
&aFaxEdit, &aEmailEdit, NULL unsigned const nRowHeight = 15, nTextVMargin = 2;
};
SvxUserEdit** pCurrent = pEdits; Point aLabelPos(nLeft, nTop + nTextVMargin);
while ( *pCurrent ) Size aLabelSize(nMid - nLeft - nHSpace, nRowHeight - nVSpace - 2*nTextVMargin);
for (unsigned iRow = 0; iRow != vRows.size(); ++iRow, aLabelPos.Y() += nRowHeight)
{ {
Window* pLabel = (*pCurrent)->GetLabel(); Row& rRow = *vRows[iRow];
if ( pLabel ) // label
rRow.aLabel.SetPosSizePixel(
LogicToPixel(aLabelPos, MAP_APPFONT),
LogicToPixel(aLabelSize, MAP_APPFONT)
);
// field position
Point aFieldPos(nMid, aLabelPos.Y() - nTextVMargin);
Size aFieldSize(0, nRowHeight - nVSpace);
// sum of the relative widths
float fRelWidthSum = 0;
for (unsigned iField = rRow.nFirstField; iField != rRow.nLastField; ++iField)
fRelWidthSum += vFieldInfo[vFields[iField]->iField].fRelativeWidth;
// sum of the actual widths (total width - spaces)
unsigned const nActWidthSum =
(nRight - nMid) - nHSpace*(rRow.nLastField - rRow.nFirstField);
// calculating the actual widths
float X = nMid; // starting position
for (unsigned iField = rRow.nFirstField; iField != rRow.nLastField; ++iField)
{ {
String sName, sText = pLabel->GetDisplayText(); // calculating position and size
sal_Int16 nIndex = (*pCurrent)->GetIndex(); Field& rField = *vFields[iField];
if ( INDEX_NOTSET == nIndex ) aFieldPos.X() = X;
sName = sText; X += vFieldInfo[rField.iField].fRelativeWidth * nActWidthSum / fRelWidthSum;
else aFieldSize.Width() = X - aFieldPos.X();
sName = sText.GetToken( nIndex, '/' ); X += 2;
sName = comphelper::string::remove(sName, '('); // setting size
sName = comphelper::string::remove(sName, ')'); rField.aEdit.SetPosSizePixel(
if ( sName.Len() > 0 ) LogicToPixel(aFieldPos, MAP_APPFONT),
(*pCurrent)->SetAccessibleName( sName ); LogicToPixel(aFieldSize, MAP_APPFONT)
);
} }
pCurrent++;
} }
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
SvxGeneralTabPage::~SvxGeneralTabPage() void SvxGeneralTabPage::SetLinks ()
{ {
delete pImpl; // link for updating the initials
Link aLink = LINK( this, SvxGeneralTabPage, ModifyHdl_Impl );
Row& rNameRow = *vRows[nNameRow];
for (unsigned i = rNameRow.nFirstField; i != rNameRow.nLastField - 1; ++i)
vFields[i]->aEdit.SetModifyHdl(aLink);
}
//------------------------------------------------------------------------
void SvxGeneralTabPage::SetAccessibleNames ()
{
// Because some labels have text for more than one edit field we have to
// split these texts and set these texts as accessible name
// of the corresponding edit fields.
// E.g. "City/State/Zip" -> "City", "State", "Zip" or
// "Tel. (Home/Work)" -> "Tel. (Home)", "Tel. (Work)"
for (unsigned i = 0; i != vRows.size(); ++i)
{
Row& rRow = *vRows[i];
rtl::OUString const sLabel = rRow.aLabel.GetDisplayText();
rtl::OUString sList = sLabel; // between brackets or the whole label
// brackets?
int iBracket = sLabel.indexOf('(');
if (iBracket != -1)
sList = sList.copy(iBracket + 1, sLabel.lastIndexOf(')') - iBracket - 1);
// cutting at '/'s
int nIndex = 0;
for (unsigned iField = rRow.nFirstField; iField != rRow.nLastField; ++iField)
{
// the token
rtl::OUString sPart = sList.getToken(0, '/', nIndex).trim();
Edit& rEdit = vFields[iField]->aEdit;
// creating the accessible name
if (iBracket != -1)
rEdit.SetAccessibleName(sLabel.copy(0, iBracket) + "(" + sPart + ")");
else
rEdit.SetAccessibleName(sPart);
}
}
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
...@@ -242,23 +403,8 @@ SfxTabPage* SvxGeneralTabPage::Create( Window* pParent, const SfxItemSet& rAttrS ...@@ -242,23 +403,8 @@ SfxTabPage* SvxGeneralTabPage::Create( Window* pParent, const SfxItemSet& rAttrS
sal_Bool SvxGeneralTabPage::FillItemSet( SfxItemSet& ) sal_Bool SvxGeneralTabPage::FillItemSet( SfxItemSet& )
{ {
// remove leading and trailing whitespaces // remove leading and trailing whitespaces
aCompanyEdit.SetText( TRIM(aCompanyEdit.GetText()) ); for (unsigned i = 0; i != vFields.size(); ++i)
aFirstName.SetText( TRIM(aFirstName.GetText()) ); vFields[i]->aEdit.SetText( comphelper::string::strip(vFields[i]->aEdit.GetText(), ' ') );
aName.SetText( TRIM(aName.GetText()) );
aShortName.SetText( TRIM(aShortName.GetText()) );
aStreetEdit.SetText( TRIM(aStreetEdit.GetText()) );
aCountryEdit.SetText( TRIM(aCountryEdit.GetText()) );
aPLZEdit.SetText( TRIM(aPLZEdit.GetText()) );
aCityEdit.SetText( TRIM(aCityEdit.GetText()) );
aUsCityEdit.SetText( TRIM(aUsCityEdit.GetText()) );
aUsStateEdit.SetText( TRIM(aUsStateEdit.GetText()) );
aUsZipEdit.SetText( TRIM(aUsZipEdit.GetText()) );
aTitleEdit.SetText( TRIM(aTitleEdit.GetText()) );
aPositionEdit.SetText( TRIM(aPositionEdit.GetText()) );
aTelPrivEdit.SetText( TRIM(aTelPrivEdit.GetText()) );
aTelCompanyEdit.SetText( TRIM(aTelCompanyEdit.GetText()) );
aFaxEdit.SetText( TRIM(aFaxEdit.GetText()) );
aEmailEdit.SetText( TRIM(aEmailEdit.GetText()) );
sal_Bool bModified = sal_False; sal_Bool bModified = sal_False;
bModified |= GetAddress_Impl(); bModified |= GetAddress_Impl();
...@@ -277,45 +423,18 @@ void SvxGeneralTabPage::Reset( const SfxItemSet& rSet ) ...@@ -277,45 +423,18 @@ void SvxGeneralTabPage::Reset( const SfxItemSet& rSet )
{ {
SetAddress_Impl(); SetAddress_Impl();
sal_uInt16 nWhich = GetWhich( SID_FIELD_GRABFOCUS ); sal_uInt16 const nWhich = GetWhich(SID_FIELD_GRABFOCUS);
if ( rSet.GetItemState( nWhich ) == SFX_ITEM_SET )
{
sal_uInt16 nField = ( (SfxUInt16Item&)rSet.Get( nWhich ) ).GetValue();
switch ( nField ) if (rSet.GetItemState(nWhich) == SFX_ITEM_SET)
{
if (sal_uInt16 const nField = ((SfxUInt16Item&)rSet.Get(nWhich)).GetValue())
{ {
case COMPANY_EDIT: aCompanyEdit.GrabFocus(); break; for (unsigned i = 0; i != vFields.size(); ++i)
case FIRSTNAME_EDIT: aFirstName.GrabFocus(); break; if (nField == vFieldInfo[vFields[i]->iField].nGrabFocusId)
case LASTNAME_EDIT: aName.GrabFocus(); break; vFields[i]->aEdit.GrabFocus();
case STREET_EDIT: aStreetEdit.GrabFocus(); break;
case COUNTRY_EDIT: aCountryEdit.GrabFocus(); break;
case PLZ_EDIT:
if ( aPLZEdit.IsVisible() )
aPLZEdit.GrabFocus();
else
aUsZipEdit.GrabFocus();
break;
case CITY_EDIT:
if ( aCityEdit.IsVisible() )
aCityEdit.GrabFocus();
else
aUsCityEdit.GrabFocus();
break;
case STATE_EDIT:
if ( aUsStateEdit.IsVisible() )
aUsStateEdit.GrabFocus();
else
aCityEdit.GrabFocus();
break;
case TITLE_EDIT: aTitleEdit.GrabFocus(); break;
case POSITION_EDIT: aPositionEdit.GrabFocus(); break;
case SHORTNAME_EDIT: aShortName.GrabFocus(); break;
case TELPRIV_EDIT: aTelPrivEdit.GrabFocus(); break;
case TELCOMPANY_EDIT: aTelCompanyEdit.GrabFocus(); break;
case FAX_EDIT: aFaxEdit.GrabFocus(); break;
case EMAIL_EDIT: aEmailEdit.GrabFocus(); break;
default: aCompanyEdit.GrabFocus();
} }
else
vFields.front()->aEdit.GrabFocus();
} }
aUseDataCB.Check( SvtSaveOptions().IsUseUserData() ); aUseDataCB.Check( SvtSaveOptions().IsUseUserData() );
...@@ -323,27 +442,30 @@ void SvxGeneralTabPage::Reset( const SfxItemSet& rSet ) ...@@ -323,27 +442,30 @@ void SvxGeneralTabPage::Reset( const SfxItemSet& rSet )
//------------------------------------------------------------------------ //------------------------------------------------------------------------
// ModifyHdl_Impl()
// This handler updates the initials (short name)
// when one of the name fields was updated.
IMPL_LINK( SvxGeneralTabPage, ModifyHdl_Impl, Edit *, pEdit ) IMPL_LINK( SvxGeneralTabPage, ModifyHdl_Impl, Edit *, pEdit )
{ {
if ( aShortName.IsEnabled() ) // short name field and row
Field& rShortName = *vFields[nShortNameField];
Row& rNameRow = *vRows[nNameRow];
// number of initials
unsigned const nInits = rNameRow.nLastField - rNameRow.nFirstField - 1;
// which field was updated? (in rNameRow)
unsigned nField = nInits;
for (unsigned i = 0; i != nInits; ++i)
if (&vFields[rNameRow.nFirstField + i]->aEdit == pEdit)
nField = i;
// updating the initial
if (nField < nInits && rShortName.aEdit.IsEnabled())
{ {
String aShortStr( aShortName.GetText() ); rtl::OUString sShortName = rShortName.aEdit.GetText();
switch ( aShortStr.Len() ) while ((unsigned)sShortName.getLength() < nInits)
{ sShortName += rtl::OUString(' ');
case 0: rtl::OUString sName = pEdit->GetText();
aShortStr = String( RTL_CONSTASCII_USTRINGPARAM(" ") ); rtl::OUString sLetter = rtl::OUString(sName.getLength() ? sName.toChar() : ' ');
break; rShortName.aEdit.SetText(sShortName.replaceAt(nField, 1, sLetter).trim());
case 1:
aShortStr += ' ';
break;
}
sal_uInt16 nPos = ( pEdit == &aFirstName ) ? 0 : 1;
String aTxt = pEdit->GetText();
sal_Unicode cChar = ( aTxt.Len() > 0 ) ? aTxt.GetChar(0) : ' ';
aShortStr.SetChar( nPos, cChar );
aShortName.SetText(comphelper::string::stripEnd(aShortStr, ' '));
} }
return 0; return 0;
} }
...@@ -352,205 +474,57 @@ IMPL_LINK( SvxGeneralTabPage, ModifyHdl_Impl, Edit *, pEdit ) ...@@ -352,205 +474,57 @@ IMPL_LINK( SvxGeneralTabPage, ModifyHdl_Impl, Edit *, pEdit )
sal_Bool SvxGeneralTabPage::GetAddress_Impl() sal_Bool SvxGeneralTabPage::GetAddress_Impl()
{ {
sal_Bool bRet = // updating
( aCompanyEdit.GetSavedValue() != aCompanyEdit.GetText() ||
aFirstName.GetSavedValue() != aFirstName.GetText() ||
aFatherName.GetSavedValue() != aFatherName.GetText() ||
aName.GetSavedValue() != aName.GetText() ||
aShortName.GetSavedValue() != aShortName.GetText() ||
aStreetEdit.GetSavedValue() != aStreetEdit.GetText() ||
aApartmentNrEdit.GetSavedValue() != aApartmentNrEdit.GetText() ||
aPLZEdit.GetSavedValue() != aPLZEdit.GetText() ||
aCityEdit.GetSavedValue() != aCityEdit.GetText() ||
aUsCityEdit.GetSavedValue() != aUsCityEdit.GetText() ||
aUsStateEdit.GetSavedValue() != aUsStateEdit.GetText() ||
aUsZipEdit.GetSavedValue() != aUsZipEdit.GetText() ||
aCountryEdit.GetSavedValue() != aCountryEdit.GetText() ||
aTitleEdit.GetSavedValue() != aTitleEdit.GetText() ||
aPositionEdit.GetSavedValue() != aPositionEdit.GetText() ||
aTelPrivEdit.GetSavedValue() != aTelPrivEdit.GetText() ||
aTelCompanyEdit.GetSavedValue() != aTelCompanyEdit.GetText() ||
aFaxEdit.GetSavedValue() != aFaxEdit.GetText() ||
aEmailEdit.GetSavedValue() != aEmailEdit.GetText() );
LanguageType eLang = Application::GetSettings().GetUILanguage();
sal_Bool bUS = ( LANGUAGE_ENGLISH_US == eLang );
SvtUserOptions aUserOpt; SvtUserOptions aUserOpt;
aUserOpt.SetCompany(aCompanyEdit.GetText()); for (unsigned i = 0; i != vFields.size(); ++i)
aUserOpt.SetFirstName(aFirstName.GetText()); aUserOpt.SetToken(
aUserOpt.SetLastName(aName.GetText()); vFieldInfo[vFields[i]->iField].nUserOptionsId,
aUserOpt.SetID( aShortName.GetText()); vFields[i]->aEdit.GetText()
);
aUserOpt.SetStreet(aStreetEdit.GetText() );
// modified?
aUserOpt.SetCountry(aCountryEdit.GetText() ); for (unsigned i = 0; i != vFields.size(); ++i)
if (vFields[i]->aEdit.GetSavedValue() != vFields[i]->aEdit.GetText())
aUserOpt.SetZip(bUS ? aUsZipEdit.GetText() : aPLZEdit.GetText() ); return true;
aUserOpt.SetCity(bUS ? aUsCityEdit.GetText() : aCityEdit.GetText() ); return false;
aUserOpt.SetTitle( aTitleEdit.GetText() );
aUserOpt.SetPosition(aPositionEdit.GetText() );
aUserOpt.SetTelephoneHome( aTelPrivEdit.GetText() );
aUserOpt.SetTelephoneWork( aTelCompanyEdit.GetText() );
aUserOpt.SetFax( aFaxEdit.GetText() );
aUserOpt.SetEmail( aEmailEdit.GetText() );
aUserOpt.SetState( bUS ? aUsStateEdit.GetText() : String() );
if ( LANGUAGE_RUSSIAN == eLang )
{
aUserOpt.SetFathersName( aFatherName.GetText() );
aUserOpt.SetApartment( aApartmentNrEdit.GetText() );
}
return bRet;
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
void SvxGeneralTabPage::SetAddress_Impl() void SvxGeneralTabPage::SetAddress_Impl()
{ {
LanguageType eLang = Application::GetSettings().GetUILanguage(); // updating and disabling edit boxes
sal_Bool bUS = ( LANGUAGE_ENGLISH_US == eLang );
SvtUserOptions aUserOpt; SvtUserOptions aUserOpt;
aCompanyEdit.SetText( aUserOpt.GetCompany() ); for (unsigned iRow = 0; iRow != vRows.size(); ++iRow)
if ( aUserOpt.IsTokenReadonly( USER_OPT_COMPANY ) )
{
aCompanyLbl.Disable();
aCompanyEdit.Disable();
}
sal_Int16 nEditCount = 0;
aFirstName.SetText( aUserOpt.GetFirstName() );
if ( aUserOpt.IsTokenReadonly( USER_OPT_FIRSTNAME ) )
{
aFirstName.Disable();
nEditCount++;
}
aName.SetText( aUserOpt.GetLastName() );
if ( aUserOpt.IsTokenReadonly( USER_OPT_LASTNAME ) )
{
aName.Disable();
nEditCount++;
}
aShortName.SetText( aUserOpt.GetID() );
if ( aUserOpt.IsTokenReadonly( USER_OPT_ID ) )
{
aShortName.Disable();
nEditCount++;
}
aNameLbl.Enable( ( nEditCount != 3 ) );
aStreetEdit.SetText( aUserOpt.GetStreet() );
if ( aUserOpt.IsTokenReadonly( USER_OPT_STREET ) )
{
aStreetLbl.Disable();
aStreetEdit.Disable();
}
Edit* pPLZEdit = bUS ? &aUsZipEdit : &aPLZEdit;
Edit* pCityEdit = bUS ? &aUsCityEdit : &aCityEdit;
pPLZEdit->SetText( aUserOpt.GetZip() );
pCityEdit->SetText( aUserOpt.GetCity() );
nEditCount = 0;
if ( aUserOpt.IsTokenReadonly( USER_OPT_ZIP ) )
{
pPLZEdit->Disable();
nEditCount++;
}
if ( aUserOpt.IsTokenReadonly( USER_OPT_CITY ) )
{ {
pCityEdit->Disable(); Row& rRow = *vRows[iRow];
nEditCount++; // the label is enabled if any of its edit fields are enabled
} bool bEnableLabel = false;
if ( bUS ) for (unsigned iField = rRow.nFirstField; iField != rRow.nLastField; ++iField)
{
aUsStateEdit.SetText( aUserOpt.GetState() );
if ( aUserOpt.IsTokenReadonly( USER_OPT_STATE ) )
{ {
aUsStateEdit.Disable(); Field& rField = *vFields[iField];
nEditCount++; // updating content
unsigned const nToken = vFieldInfo[rField.iField].nUserOptionsId;
rField.aEdit.SetText(aUserOpt.GetToken(nToken));
// is enabled?
bool const bEnableEdit = !aUserOpt.IsTokenReadonly(nToken);
rField.aEdit.Enable(bEnableEdit);
bEnableLabel = bEnableLabel || bEnableEdit;
} }
} rRow.aLabel.Enable(bEnableLabel);
aCityLbl.Enable( ( nEditCount != ( bUS ? 3 : 2 ) ) );
aCountryEdit.SetText( aUserOpt.GetCountry() );
if ( aUserOpt.IsTokenReadonly( USER_OPT_COUNTRY ) )
{
aCountryLbl.Disable();
aCountryEdit.Disable();
}
aTitleEdit.SetText( aUserOpt.GetTitle() );
aPositionEdit.SetText( aUserOpt.GetPosition() );
nEditCount = 0;
if ( aUserOpt.IsTokenReadonly( USER_OPT_TITLE ) )
{
aTitleEdit.Disable();
nEditCount++;
}
if ( aUserOpt.IsTokenReadonly( USER_OPT_POSITION ) )
{
aPositionEdit.Disable();
nEditCount++;
}
aTitlePosLbl.Enable( ( nEditCount != 2 ) );
aTelPrivEdit.SetText( aUserOpt.GetTelephoneHome() );
aTelCompanyEdit.SetText( aUserOpt.GetTelephoneWork() );
nEditCount = 0;
if ( aUserOpt.IsTokenReadonly( USER_OPT_TELEPHONEHOME ) )
{
aTelPrivEdit.Disable();
nEditCount++;
}
if ( aUserOpt.IsTokenReadonly( USER_OPT_TELEPHONEWORK ) )
{
aTelCompanyEdit.Disable();
nEditCount++;
}
aPhoneLbl.Enable( ( nEditCount != 2 ) );
aFaxEdit.SetText( aUserOpt.GetFax() );
aEmailEdit.SetText( aUserOpt.GetEmail() );
nEditCount = 0;
if ( aUserOpt.IsTokenReadonly( USER_OPT_FAX ) )
{
aFaxEdit.Disable();
nEditCount++;
}
if ( aUserOpt.IsTokenReadonly( USER_OPT_EMAIL ) )
{
aEmailEdit.Disable();
nEditCount++;
}
aFaxMailLbl.Enable( ( nEditCount != 2 ) );
if ( LANGUAGE_RUSSIAN == eLang )
{
aFatherName.SetText( aUserOpt.GetFathersName() );
aApartmentNrEdit.SetText( aUserOpt.GetApartment() );
} }
aCompanyEdit.SaveValue(); // saving
aFirstName.SaveValue(); for (unsigned i = 0; i != vFields.size(); ++i)
aFatherName.SaveValue(); vFields[i]->aEdit.SaveValue();
aName.SaveValue();
aShortName.SaveValue();
aStreetEdit.SaveValue();
aApartmentNrEdit.SaveValue();
aPLZEdit.SaveValue();
aCityEdit.SaveValue();
aUsCityEdit.SaveValue();
aUsStateEdit.SaveValue();
aUsZipEdit.SaveValue();
aCountryEdit.SaveValue();
aTitleEdit.SaveValue();
aPositionEdit.SaveValue();
aTelPrivEdit.SaveValue();
aTelCompanyEdit.SaveValue();
aFaxEdit.SaveValue();
aEmailEdit.SaveValue();
} }
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
int SvxGeneralTabPage::DeactivatePage( SfxItemSet* _pSet ) int SvxGeneralTabPage::DeactivatePage( SfxItemSet* pSet_ )
{ {
if ( _pSet ) if ( pSet_ )
FillItemSet( *_pSet ); FillItemSet( *pSet_ );
return LEAVE_PAGE; return LEAVE_PAGE;
} }
......
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
* except in compliance with the License. You may obtain a copy of * except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 . * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/ */
#ifndef _SVX_OPTGENRL_HRC #ifndef SVX_OPTGENRL_HRC
#define _SVX_OPTGENRL_HRC #define SVX_OPTGENRL_HRC
// defines ------------------------------------------------------------------ // defines ------------------------------------------------------------------
...@@ -51,26 +51,13 @@ ...@@ -51,26 +51,13 @@
#define ED_EMAIL 38 #define ED_EMAIL 38
#define GB_ADDRESS 39 #define GB_ADDRESS 39
#define CB_USEDATA 40 #define CB_USEDATA 40
#define FT_NAME_EASTERN 41 #define FT_NAME_EASTERN 41
#define FT_CITY_US 42
#define STR_US_STATE 10 #define STR_US_STATE 10
#define STR_QUERY_REG 11 #define STR_QUERY_REG 11
// positioning help for the dialog #endif // #ifndef SVX_OPTGENRL_HRC
#define HSPACE 2
#define VSPACE 3
#define LINEH 12
#define FLINEH 8
#define LEFT 12
#define MID 100
#define RIGHT 248
#define TOP 10
#define LINE(y) (14+y*15)
#define FLINE(y) (16+y*15)
#define NAMELEN 74
#endif // #ifndef _SVX_OPTGENRL_HRC
// ******************************************************************* EOF // ******************************************************************* EOF
...@@ -43,8 +43,6 @@ TabPage RID_SFXPAGE_GENERAL ...@@ -43,8 +43,6 @@ TabPage RID_SFXPAGE_GENERAL
Text [ en-US ] = "User Data" ; Text [ en-US ] = "User Data" ;
FixedText FT_COMPANY FixedText FT_COMPANY
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 0 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Text [ en-US ] = "~Company" ; Text [ en-US ] = "~Company" ;
}; };
...@@ -52,95 +50,64 @@ TabPage RID_SFXPAGE_GENERAL ...@@ -52,95 +50,64 @@ TabPage RID_SFXPAGE_GENERAL
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_COMPANY"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_COMPANY";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID , LINE ( 0 ) ) ;
Size = MAP_APPFONT ( RIGHT-MID , LINEH ) ;
}; };
FixedText FT_NAME FixedText FT_NAME
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 1 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Text [ en-US ] = "First/Last ~name/Initials" ; Text [ en-US ] = "First/Last ~name/Initials" ;
}; };
FixedText FT_NAME_RUSS FixedText FT_NAME_RUSS
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 1 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Hide = TRUE;
Text [ en-US ] = "Last Name/First name/Father's name/Initials"; Text [ en-US ] = "Last Name/First name/Father's name/Initials";
}; };
FixedText FT_NAME_EASTERN FixedText FT_NAME_EASTERN
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 1 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Hide = TRUE;
Text [ en-US ] = "Last/First ~name/Initials" ; Text [ en-US ] = "Last/First ~name/Initials" ;
}; };
Edit ED_FATHERNAME Edit ED_FATHERNAME
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_FATHERNAME"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_FATHERNAME";
Border = TRUE ; Border = TRUE ;
Hide = TRUE;
Pos = MAP_APPFONT ( MID , LINE ( 1 ) ) ;
Size = MAP_APPFONT ( NAMELEN-8 , LINEH ) ;
}; };
Edit ED_FIRSTNAME Edit ED_FIRSTNAME
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_FIRSTNAME"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_FIRSTNAME";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID , LINE ( 1 ) ) ;
Size = MAP_APPFONT ( NAMELEN-8 , LINEH ) ;
}; };
Edit ED_NAME Edit ED_NAME
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_NAME"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_NAME";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID+NAMELEN-8+HSPACE , LINE ( 1 ) ) ;
Size = MAP_APPFONT ( NAMELEN-8 , LINEH ) ;
}; };
Edit ED_SHORTNAME Edit ED_SHORTNAME
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_SHORTNAME"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_SHORTNAME";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID+2* ( NAMELEN-8+HSPACE ) , LINE ( 1 ) ) ;
Size = MAP_APPFONT ( RIGHT- ( MID+2* ( NAMELEN-8+HSPACE ) ) , LINEH ) ;
}; };
FixedText FT_STREET FixedText FT_STREET
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 2 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Text [ en-US ] = "~Street" ; Text [ en-US ] = "~Street" ;
}; };
FixedText FT_STREET_RUSS FixedText FT_STREET_RUSS
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 2 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Hide = TRUE;
Text [ en-US ] = "Street/Apartment number"; Text [ en-US ] = "Street/Apartment number";
}; };
Edit ED_STREET Edit ED_STREET
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_STREET"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_STREET";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID , LINE ( 2 ) ) ;
Size = MAP_APPFONT ( RIGHT-MID , LINEH ) ;
}; };
Edit ED_APARTMENTNR Edit ED_APARTMENTNR
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_APARTMENTNR"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_APARTMENTNR";
Border = TRUE ; Border = TRUE ;
Hide = TRUE;
Pos = MAP_APPFONT ( MID , LINE ( 2 ) ) ;
Size = MAP_APPFONT ( RIGHT-MID , LINEH ) ;
}; };
FixedText FT_CITY FixedText FT_CITY
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 3 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Text [ en-US ] = "Zip/City"; Text [ en-US ] = "Zip/City";
}; };
...@@ -148,41 +115,34 @@ TabPage RID_SFXPAGE_GENERAL ...@@ -148,41 +115,34 @@ TabPage RID_SFXPAGE_GENERAL
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_PLZ"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_PLZ";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID , LINE ( 3 ) ) ;
Size = MAP_APPFONT ( 24 , LINEH ) ;
}; };
Edit ED_CITY Edit ED_CITY
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_CITY"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_CITY";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID + 24 + HSPACE , LINE ( 3 ) ) ; };
Size = MAP_APPFONT ( RIGHT - ( MID + 24 + HSPACE ) , LINEH ) ; FixedText FT_CITY_US
{
LeftLabel = TRUE ;
Text [ en-US ] = "City/State/Zip";
}; };
Edit ED_US_CITY Edit ED_US_CITY
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_US_CITY"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_US_CITY";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID , LINE ( 3 ) ) ;
Size = MAP_APPFONT ( 90 , LINEH ) ;
}; };
Edit ED_US_STATE Edit ED_US_STATE
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_US_STATE"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_US_STATE";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID + 90 + HSPACE, LINE ( 3 ) ) ;
Size = MAP_APPFONT ( 30 , LINEH ) ;
}; };
Edit ED_US_ZIPCODE Edit ED_US_ZIPCODE
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_US_ZIPCODE"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_US_ZIPCODE";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID + 90 + HSPACE + 30 + HSPACE, LINE ( 3 ) ) ;
Size = MAP_APPFONT ( RIGHT - ( MID + 90 + HSPACE + 30 + HSPACE ) , LINEH ) ;
}; };
FixedText FT_COUNTRY FixedText FT_COUNTRY
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 4 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Text [ en-US ] = "Country/Region"; Text [ en-US ] = "Country/Region";
}; };
...@@ -190,13 +150,9 @@ TabPage RID_SFXPAGE_GENERAL ...@@ -190,13 +150,9 @@ TabPage RID_SFXPAGE_GENERAL
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_COUNTRY"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_COUNTRY";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID , LINE ( 4 ) ) ;
Size = MAP_APPFONT ( RIGHT - MID , LINEH ) ;
}; };
FixedText FT_TITLEPOS FixedText FT_TITLEPOS
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 5 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Text [ en-US ] = "~Title/Position" ; Text [ en-US ] = "~Title/Position" ;
}; };
...@@ -204,20 +160,14 @@ TabPage RID_SFXPAGE_GENERAL ...@@ -204,20 +160,14 @@ TabPage RID_SFXPAGE_GENERAL
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_TITLE"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_TITLE";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID , LINE ( 5 ) ) ;
Size = MAP_APPFONT ( NAMELEN-1 , LINEH ) ;
}; };
Edit ED_POSITION Edit ED_POSITION
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_POSITION"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_POSITION";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID+NAMELEN-1+HSPACE , LINE ( 5 ) ) ;
Size = MAP_APPFONT ( RIGHT- ( MID+NAMELEN-1+HSPACE ) , LINEH ) ;
}; };
FixedText FT_PHONE FixedText FT_PHONE
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 6 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
Text [ en-US ] = "Tel. (Home/Work)" ; Text [ en-US ] = "Tel. (Home/Work)" ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
}; };
...@@ -225,20 +175,14 @@ TabPage RID_SFXPAGE_GENERAL ...@@ -225,20 +175,14 @@ TabPage RID_SFXPAGE_GENERAL
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_TELPRIVAT"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_TELPRIVAT";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID , LINE ( 6 ) ) ;
Size = MAP_APPFONT ( NAMELEN-1 , LINEH ) ;
}; };
Edit ED_TELCOMPANY Edit ED_TELCOMPANY
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_TELCOMPANY"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_TELCOMPANY";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID+NAMELEN-1+HSPACE , LINE ( 6 ) ) ;
Size = MAP_APPFONT ( RIGHT- ( MID+NAMELEN-1+HSPACE ) , LINEH ) ;
}; };
FixedText FT_FAXMAIL FixedText FT_FAXMAIL
{ {
Pos = MAP_APPFONT ( LEFT , FLINE ( 7 ) ) ;
Size = MAP_APPFONT ( MID-LEFT-2 , FLINEH ) ;
LeftLabel = TRUE ; LeftLabel = TRUE ;
Text [ en-US ] = "Fa~x / E-mail" ; Text [ en-US ] = "Fa~x / E-mail" ;
}; };
...@@ -246,15 +190,11 @@ TabPage RID_SFXPAGE_GENERAL ...@@ -246,15 +190,11 @@ TabPage RID_SFXPAGE_GENERAL
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_FAX"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_FAX";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID , LINE ( 7 ) ) ;
Size = MAP_APPFONT ( NAMELEN-1 , LINEH ) ;
}; };
Edit ED_EMAIL Edit ED_EMAIL
{ {
HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_EMAIL"; HelpID = "cui:Edit:RID_SFXPAGE_GENERAL:ED_EMAIL";
Border = TRUE ; Border = TRUE ;
Pos = MAP_APPFONT ( MID+NAMELEN-1+HSPACE , LINE ( 7 ) ) ;
Size = MAP_APPFONT ( RIGHT- ( MID+NAMELEN-1+HSPACE ) , LINEH ) ;
}; };
FixedLine GB_ADDRESS FixedLine GB_ADDRESS
{ {
...@@ -271,11 +211,7 @@ TabPage RID_SFXPAGE_GENERAL ...@@ -271,11 +211,7 @@ TabPage RID_SFXPAGE_GENERAL
Text [ en-US ] = "Use data for document properties"; Text [ en-US ] = "Use data for document properties";
}; };
// extra Resourcen f"ur die amerikanische Postadresse // extra resource for US addresses
String STR_US_STATE
{
Text [ en-US ] = "City/State/Zip";
};
String STR_QUERY_REG String STR_QUERY_REG
{ {
Text [ en-US ] = "Note that street, Zip code and city are used to generate the registration key. You will not be able to change the user data again until the registration has been carried out. Do you want to modify the user data now?"; Text [ en-US ] = "Note that street, Zip code and city are used to generate the registration key. You will not be able to change the user data again until the registration has been carried out. Do you want to modify the user data now?";
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
#include <unotools/configitem.hxx> #include <unotools/configitem.hxx>
#include <osl/mutex.hxx> #include <osl/mutex.hxx>
#include <unotools/options.hxx> #include <unotools/options.hxx>
#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
// define ---------------------------------------------------------------- // define ----------------------------------------------------------------
...@@ -43,66 +45,70 @@ ...@@ -43,66 +45,70 @@
#define USER_OPT_ZIP ((sal_uInt16)14) #define USER_OPT_ZIP ((sal_uInt16)14)
#define USER_OPT_FATHERSNAME ((sal_uInt16)15) #define USER_OPT_FATHERSNAME ((sal_uInt16)15)
#define USER_OPT_APARTMENT ((sal_uInt16)16) #define USER_OPT_APARTMENT ((sal_uInt16)16)
#define USER_OPT_CUSTOMERNUMBER ((sal_uInt16)17)
// class SvtUserOptions -------------------------------------------------- // class SvtUserOptions --------------------------------------------------
class SvtUserOptions_Impl; class UNOTOOLS_DLLPUBLIC SvtUserOptions : public utl::detail::Options
class UNOTOOLS_DLLPUBLIC SvtUserOptions: public utl::detail::Options
{ {
private:
SvtUserOptions_Impl* pImp;
public: public:
SvtUserOptions(); SvtUserOptions ();
virtual ~SvtUserOptions(); virtual ~SvtUserOptions ();
static ::osl::Mutex& GetInitMutex(); static osl::Mutex& GetInitMutex ();
// get the address token // get the address token
::rtl::OUString GetCompany() const; rtl::OUString GetCompany () const;
::rtl::OUString GetFirstName() const; rtl::OUString GetFirstName () const;
::rtl::OUString GetLastName() const; rtl::OUString GetLastName () const;
::rtl::OUString GetID() const; rtl::OUString GetID () const;
::rtl::OUString GetStreet() const; rtl::OUString GetStreet () const;
::rtl::OUString GetCity() const; rtl::OUString GetCity () const;
::rtl::OUString GetState() const; rtl::OUString GetState () const;
::rtl::OUString GetZip() const; rtl::OUString GetZip () const;
::rtl::OUString GetCountry() const; rtl::OUString GetCountry () const;
::rtl::OUString GetPosition() const; rtl::OUString GetPosition () const;
::rtl::OUString GetTitle() const; rtl::OUString GetTitle () const;
::rtl::OUString GetTelephoneHome() const; rtl::OUString GetTelephoneHome () const;
::rtl::OUString GetTelephoneWork() const; rtl::OUString GetTelephoneWork () const;
::rtl::OUString GetFax() const; rtl::OUString GetFax () const;
::rtl::OUString GetEmail() const; rtl::OUString GetEmail () const;
::rtl::OUString GetCustomerNumber() const; rtl::OUString GetCustomerNumber () const;
::rtl::OUString GetFathersName() const; rtl::OUString GetFathersName () const;
::rtl::OUString GetApartment() const; rtl::OUString GetApartment () const;
::rtl::OUString GetFullName() const; rtl::OUString GetFullName () const;
// set the address token // set the address token
void SetCompany( const ::rtl::OUString& rNewToken ); void SetCompany (rtl::OUString const&);
void SetFirstName( const ::rtl::OUString& rNewToken ); void SetFirstName (rtl::OUString const&);
void SetLastName( const ::rtl::OUString& rNewToken ); void SetLastName (rtl::OUString const&);
void SetID( const ::rtl::OUString& rNewToken ); void SetID (rtl::OUString const&);
void SetStreet( const ::rtl::OUString& rNewToken ); void SetStreet (rtl::OUString const&);
void SetCity( const ::rtl::OUString& rNewToken ); void SetCity (rtl::OUString const&);
void SetState( const ::rtl::OUString& rNewToken ); void SetState (rtl::OUString const&);
void SetZip( const ::rtl::OUString& rNewToken ); void SetZip (rtl::OUString const&);
void SetCountry( const ::rtl::OUString& rNewToken ); void SetCountry (rtl::OUString const&);
void SetPosition( const ::rtl::OUString& rNewToken ); void SetPosition (rtl::OUString const&);
void SetTitle( const ::rtl::OUString& rNewToken ); void SetTitle (rtl::OUString const&);
void SetTelephoneHome( const ::rtl::OUString& rNewToken ); void SetTelephoneHome (rtl::OUString const&);
void SetTelephoneWork( const ::rtl::OUString& rNewToken ); void SetTelephoneWork (rtl::OUString const&);
void SetFax( const ::rtl::OUString& rNewToken ); void SetFax (rtl::OUString const&);
void SetEmail( const ::rtl::OUString& rNewToken ); void SetEmail (rtl::OUString const&);
void SetCustomerNumber( const ::rtl::OUString& rNewToken ); void SetCustomerNumber (rtl::OUString const&);
void SetFathersName( const ::rtl::OUString& rNewToken ); void SetFathersName (rtl::OUString const&);
void SetApartment( const ::rtl::OUString& rNewToken ); void SetApartment (rtl::OUString const&);
sal_Bool IsTokenReadonly( sal_uInt16 nToken ) const; sal_Bool IsTokenReadonly (sal_uInt16 nToken) const;
::rtl::OUString GetToken(sal_uInt16 nToken) const; rtl::OUString GetToken (sal_uInt16 nToken) const;
void SetToken (sal_uInt16 nToken, rtl::OUString const& rNewToken);
private:
class Impl;
boost::shared_ptr<Impl> pImpl;
static boost::weak_ptr<Impl> pSharedImpl;
private:
class ChangeListener;
}; };
#endif // #ifndef INCLUDED_unotools_USEROPTIONS_HXX #endif // #ifndef INCLUDED_unotools_USEROPTIONS_HXX
......
...@@ -43,170 +43,127 @@ ...@@ -43,170 +43,127 @@
using namespace utl; using namespace utl;
using namespace com::sun::star; using namespace com::sun::star;
using namespace com::sun::star::uno; //using namespace com::sun::star::uno;
using ::rtl::OUString; using rtl::OUString;
namespace css = ::com::sun::star; //namespace css = ::com::sun::star;
namespace namespace
{ {
const char s_sData[] = "org.openoffice.UserProfile/Data";
const char s_so[] = "o"; // USER_OPT_COMPANY
const char s_sgivenname[] = "givenname"; // USER_OPT_FIRSTNAME
const char s_ssn[] = "sn"; // USER_OPT_LASTNAME
const char s_sinitials[] = "initials"; // USER_OPT_ID
const char s_sstreet[] = "street"; // USER_OPT_STREET
const char s_sl[] = "l"; // USER_OPT_CITY
const char s_sst[] = "st"; // USER_OPT_STATE
const char s_spostalcode[] = "postalcode"; // USER_OPT_ZIP
const char s_sc[] = "c"; // USER_OPT_COUNTRY
const char s_stitle[] = "title"; // USER_OPT_TITLE
const char s_sposition[] = "position"; // USER_OPT_POSITION
const char s_shomephone[] = "homephone"; // USER_OPT_TELEPHONEHOME
const char s_stelephonenumber[] = "telephonenumber"; // USER_OPT_TELEPHONEWORK
const char s_sfacsimiletelephonenumber[] = "facsimiletelephonenumber"; // USER_OPT_FAX
const char s_smail[] = "mail"; // USER_OPT_EMAIL
const char s_scustomernumber[] = "customernumber"; // USER_OPT_CUSTOMERNUMBER
const char s_sfathersname[] = "fathersname"; // USER_OPT_FATHERSNAME
const char s_sapartment[] = "apartment"; // USER_OPT_APARTMENT
}
// class SvtUserOptions_Impl ---------------------------------------------
class SvtUserOptions_Impl;
class SvtUserConfigChangeListener_Impl : public cppu::WeakImplHelper1
<
com::sun::star::util::XChangesListener
>
{
SvtUserOptions_Impl& m_rParent;
public:
SvtUserConfigChangeListener_Impl(SvtUserOptions_Impl& rParent);
~SvtUserConfigChangeListener_Impl();
//XChangesListener OUString const sData = "org.openoffice.UserProfile/Data";
virtual void SAL_CALL changesOccurred( const util::ChangesEvent& Event ) throw(RuntimeException);
//XEventListener // vOptionNames[] -- names of the user option entries
virtual void SAL_CALL disposing( const lang::EventObject& Source ) throw(RuntimeException); // The order corresponds to the #define USER_OPT_* list in useroptions.hxx.
OUString const vOptionNames[] = {
"l", // USER_OPT_CITY
"o", // USER_OPT_COMPANY
"c", // USER_OPT_COUNTRY
"mail", // USER_OPT_EMAIL
"facsimiletelephonenumber", // USER_OPT_FAX
"givenname", // USER_OPT_FIRSTNAME
"sn", // USER_OPT_LASTNAME
"position", // USER_OPT_POSITION
"st", // USER_OPT_STATE
"street", // USER_OPT_STREET
"homephone", // USER_OPT_TELEPHONEHOME
"telephonenumber", // USER_OPT_TELEPHONEWORK
"title", // USER_OPT_TITLE
"initials", // USER_OPT_ID
"postalcode", // USER_OPT_ZIP
"fathersname", // USER_OPT_FATHERSNAME
"apartment", // USER_OPT_APARTMENT
"customernumber", // USER_OPT_CUSTOMERNUMBER
}; };
unsigned const nOptionNameCount = sizeof vOptionNames / sizeof vOptionNames[0];
class SvtUserOptions_Impl : public utl::ConfigurationBroadcaster } // namespace
{
public:
SvtUserOptions_Impl();
~SvtUserOptions_Impl();
// get the user token boost::weak_ptr<SvtUserOptions::Impl> SvtUserOptions::pSharedImpl;
::rtl::OUString GetCompany() const;
::rtl::OUString GetFirstName() const;
::rtl::OUString GetLastName() const;
::rtl::OUString GetID() const;
::rtl::OUString GetStreet() const;
::rtl::OUString GetCity() const;
::rtl::OUString GetState() const;
::rtl::OUString GetZip() const;
::rtl::OUString GetCountry() const;
::rtl::OUString GetPosition() const;
::rtl::OUString GetTitle() const;
::rtl::OUString GetTelephoneHome() const;
::rtl::OUString GetTelephoneWork() const;
::rtl::OUString GetFax() const;
::rtl::OUString GetEmail() const;
::rtl::OUString GetCustomerNumber() const;
::rtl::OUString GetFathersName() const;
::rtl::OUString GetApartment() const;
::rtl::OUString GetFullName() const; // class ChangeListener --------------------------------------------------
// set the address token class SvtUserOptions::ChangeListener : public cppu::WeakImplHelper1<util::XChangesListener>
void SetCompany( const ::rtl::OUString& rNewToken ); {
void SetFirstName( const ::rtl::OUString& rNewToken ); public:
void SetLastName( const ::rtl::OUString& rNewToken ); ChangeListener (Impl& rParent): m_rParent(rParent) { }
void SetID( const ::rtl::OUString& rNewToken );
void SetStreet( const ::rtl::OUString& rNewToken );
void SetCity( const ::rtl::OUString& rNewToken );
void SetState( const ::rtl::OUString& rNewToken );
void SetZip( const ::rtl::OUString& rNewToken );
void SetCountry( const ::rtl::OUString& rNewToken );
void SetPosition( const ::rtl::OUString& rNewToken );
void SetTitle( const ::rtl::OUString& rNewToken );
void SetTelephoneHome( const ::rtl::OUString& rNewToken );
void SetTelephoneWork( const ::rtl::OUString& rNewToken );
void SetFax( const ::rtl::OUString& rNewToken );
void SetEmail( const ::rtl::OUString& rNewToken );
void SetCustomerNumber( const ::rtl::OUString& rNewToken );
void SetFathersName( const ::rtl::OUString& rNewToken );
void SetApartment( const ::rtl::OUString& rNewToken );
sal_Bool IsTokenReadonly( sal_uInt16 nToken ) const; // XChangesListener
::rtl::OUString GetToken(sal_uInt16 nToken) const; virtual void SAL_CALL changesOccurred (util::ChangesEvent const& Event) throw(uno::RuntimeException);
void Notify(); // XEventListener
virtual void SAL_CALL disposing (lang::EventObject const& Source) throw(uno::RuntimeException);
private: private:
uno::Reference< util::XChangesListener > m_xChangeListener; Impl& m_rParent;
css::uno::Reference< css::container::XNameAccess > m_xCfg;
css::uno::Reference< css::beans::XPropertySet > m_xData;
}; };
// global ---------------------------------------------------------------- // class Impl ------------------------------------------------------------
class SvtUserOptions::Impl : public utl::ConfigurationBroadcaster
{
public:
Impl ();
static SvtUserOptions_Impl* pOptions = NULL; OUString GetFullName () const;
static sal_Int32 nRefCount = 0;
#define READONLY_DEFAULT sal_False sal_Bool IsTokenReadonly (sal_uInt16 nToken) const;
OUString GetToken (sal_uInt16 nToken) const;
void SetToken (sal_uInt16 nToken, OUString const& rNewToken);
void Notify ();
SvtUserConfigChangeListener_Impl::SvtUserConfigChangeListener_Impl(SvtUserOptions_Impl& rParent) : private:
m_rParent( rParent ) uno::Reference<util::XChangesListener> m_xChangeListener;
{ uno::Reference<container::XNameAccess> m_xCfg;
} uno::Reference<beans::XPropertySet> m_xData;
};
SvtUserConfigChangeListener_Impl::~SvtUserConfigChangeListener_Impl() // class SvtUserOptions::ChangeListener ----------------------------------
{
}
void SvtUserConfigChangeListener_Impl::changesOccurred( const util::ChangesEvent& rEvent ) throw(RuntimeException) void SvtUserOptions::ChangeListener::changesOccurred (util::ChangesEvent const& rEvent) throw(uno::RuntimeException)
{ {
if(rEvent.Changes.getLength()) if (rEvent.Changes.getLength())
m_rParent.Notify(); m_rParent.Notify();
} }
void SvtUserConfigChangeListener_Impl::disposing( const lang::EventObject& rSource ) throw(RuntimeException) void SvtUserOptions::ChangeListener::disposing (lang::EventObject const& rSource) throw(uno::RuntimeException)
{ {
try try
{ {
uno::Reference< util::XChangesNotifier > xChgNot( rSource.Source, UNO_QUERY_THROW); uno::Reference<util::XChangesNotifier> xChgNot(rSource.Source, uno::UNO_QUERY_THROW);
xChgNot->removeChangesListener(this); xChgNot->removeChangesListener(this);
} }
catch(Exception& ) catch (uno::Exception&)
{ {
} }
} }
// class SvtUserOptions_Impl --------------------------------------------- // class SvtUserOptions::Impl --------------------------------------------
// ----------------------------------------------------------------------- SvtUserOptions::Impl::Impl() :
SvtUserOptions_Impl::SvtUserOptions_Impl() : m_xChangeListener( new ChangeListener(*this) )
m_xChangeListener( new SvtUserConfigChangeListener_Impl(*this) )
{ {
try try
{ {
m_xCfg = Reference< css::container::XNameAccess > ( m_xCfg = uno::Reference<container::XNameAccess>(
::comphelper::ConfigurationHelper::openConfig( comphelper::ConfigurationHelper::openConfig(
::comphelper::getProcessServiceFactory(), comphelper::getProcessServiceFactory(),
rtl::OUString(s_sData), sData,
::comphelper::ConfigurationHelper::E_STANDARD), comphelper::ConfigurationHelper::E_STANDARD
css::uno::UNO_QUERY ); ),
uno::UNO_QUERY
);
m_xData = css::uno::Reference< css::beans::XPropertySet >(m_xCfg, css::uno::UNO_QUERY); m_xData = uno::Reference<beans::XPropertySet>(m_xCfg, uno::UNO_QUERY);
uno::Reference< util::XChangesNotifier > xChgNot( m_xCfg, UNO_QUERY); uno::Reference<util::XChangesNotifier> xChgNot(m_xCfg, uno::UNO_QUERY);
try try
{ {
xChgNot->addChangesListener( m_xChangeListener ); xChgNot->addChangesListener(m_xChangeListener);
} }
catch(RuntimeException& ) catch (uno::RuntimeException&)
{ {
} }
} }
catch(const css::uno::Exception& ex) catch (uno::Exception const& ex)
{ {
m_xCfg.clear(); m_xCfg.clear();
SAL_WARN("unotools", "Caught unexpected: " << ex.Message); SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
...@@ -215,1091 +172,202 @@ SvtUserOptions_Impl::SvtUserOptions_Impl() : ...@@ -215,1091 +172,202 @@ SvtUserOptions_Impl::SvtUserOptions_Impl() :
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
SvtUserOptions_Impl::~SvtUserOptions_Impl() OUString SvtUserOptions::Impl::GetToken (sal_uInt16 nToken) const
{
}
::rtl::OUString SvtUserOptions_Impl::GetCompany() const
{ {
::rtl::OUString sCompany; OUString sToken;
if (nToken < nOptionNameCount)
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_so)) >>= sCompany;
}
catch ( const css::uno::Exception& ex )
{ {
SAL_WARN("unotools", "Caught unexpected: " << ex.Message); try
{
if (m_xData.is())
m_xData->getPropertyValue(vOptionNames[nToken]) >>= sToken;
}
catch (uno::Exception const& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
} }
else
return sCompany; SAL_WARN("unotools.config", "SvtUserOptions::Impl::GetToken(): invalid token");
return sToken;
} }
::rtl::OUString SvtUserOptions_Impl::GetFirstName() const // -----------------------------------------------------------------------
{
::rtl::OUString sFirstName;
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_sgivenname)) >>= sFirstName;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sFirstName;
}
::rtl::OUString SvtUserOptions_Impl::GetLastName() const void SvtUserOptions::Impl::SetToken (sal_uInt16 nToken, OUString const& sToken)
{ {
::rtl::OUString sLastName; if (nToken < nOptionNameCount)
try
{ {
if (m_xData.is()) try
m_xData->getPropertyValue(rtl::OUString(s_ssn)) >>= sLastName; {
} if (m_xData.is())
catch ( const css::uno::Exception& ex ) m_xData->setPropertyValue(vOptionNames[nToken], uno::makeAny(sToken));
{ comphelper::ConfigurationHelper::flush(m_xCfg);
SAL_WARN("unotools", "Caught unexpected: " << ex.Message); }
catch (uno::Exception const& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
} }
else
return sLastName; SAL_WARN("unotools.config", "SvtUserOptions::Impl::GetToken(): invalid token");
} }
::rtl::OUString SvtUserOptions_Impl::GetID() const // -----------------------------------------------------------------------
{
::rtl::OUString sID;
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_sinitials)) >>= sID;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sID;
}
::rtl::OUString SvtUserOptions_Impl::GetStreet() const OUString SvtUserOptions::Impl::GetFullName () const
{ {
::rtl::OUString sStreet; // TODO international name
OUString sFullName = GetToken(USER_OPT_FIRSTNAME).trim();
try if (!sFullName.isEmpty())
{ sFullName += " ";
if (m_xData.is()) sFullName += GetToken(USER_OPT_LASTNAME).trim();
m_xData->getPropertyValue(rtl::OUString(s_sstreet)) >>= sStreet; return sFullName;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sStreet;
} }
::rtl::OUString SvtUserOptions_Impl::GetCity() const // -----------------------------------------------------------------------
{
::rtl::OUString sCity;
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_sl)) >>= sCity;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sCity;
}
::rtl::OUString SvtUserOptions_Impl::GetState() const void SvtUserOptions::Impl::Notify ()
{ {
::rtl::OUString sState; NotifyListeners(0);
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_sst)) >>= sState;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sState;
} }
::rtl::OUString SvtUserOptions_Impl::GetZip() const // -----------------------------------------------------------------------
{
::rtl::OUString sZip;
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_spostalcode)) >>= sZip;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sZip;
}
::rtl::OUString SvtUserOptions_Impl::GetCountry() const sal_Bool SvtUserOptions::Impl::IsTokenReadonly (sal_uInt16 nToken) const
{ {
::rtl::OUString sCountry; if (nToken < nOptionNameCount)
try
{ {
if (m_xData.is()) uno::Reference<beans::XPropertySet> xData(m_xCfg, uno::UNO_QUERY);
m_xData->getPropertyValue(rtl::OUString(s_sc)) >>= sCountry; uno::Reference<beans::XPropertySetInfo> xInfo = xData->getPropertySetInfo();
beans::Property aProp = xInfo->getPropertyByName(vOptionNames[nToken]);
return ((aProp.Attributes & beans::PropertyAttribute::READONLY) ==
beans::PropertyAttribute::READONLY);
} }
catch ( const css::uno::Exception& ex ) else
{ {
SAL_WARN("unotools", "Caught unexpected: " << ex.Message); SAL_WARN("unotools.config", "SvtUserOptions::Impl::IsTokenReadonly(): invalid token");
return sal_False;
} }
return sCountry;
} }
::rtl::OUString SvtUserOptions_Impl::GetPosition() const // class SvtUserOptions --------------------------------------------------
{
::rtl::OUString sPosition;
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_sposition)) >>= sPosition;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sPosition;
}
::rtl::OUString SvtUserOptions_Impl::GetTitle() const SvtUserOptions::SvtUserOptions ()
{ {
::rtl::OUString sTitle; // Global access, must be guarded (multithreading)
osl::MutexGuard aGuard(GetInitMutex());
try if (pSharedImpl.expired())
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_stitle)) >>= sTitle;
}
catch ( const css::uno::Exception& ex )
{ {
SAL_WARN("unotools", "Caught unexpected: " << ex.Message); RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) SvtUserOptions::Impl::ctor()");
pImpl.reset(new Impl);
pSharedImpl = pImpl;
ItemHolder1::holdConfigItem(E_USEROPTIONS);
} }
pImpl = pSharedImpl.lock();
return sTitle; pImpl->AddListener(this);
} }
::rtl::OUString SvtUserOptions_Impl::GetTelephoneHome() const // -----------------------------------------------------------------------
{
::rtl::OUString sTelephoneHome;
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_shomephone)) >>= sTelephoneHome;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sTelephoneHome;
}
::rtl::OUString SvtUserOptions_Impl::GetTelephoneWork() const SvtUserOptions::~SvtUserOptions()
{ {
::rtl::OUString sTelephoneWork; // Global access, must be guarded (multithreading)
osl::MutexGuard aGuard( GetInitMutex() );
try pImpl->RemoveListener(this);
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_stelephonenumber)) >>= sTelephoneWork;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sTelephoneWork;
} }
::rtl::OUString SvtUserOptions_Impl::GetFax() const // -----------------------------------------------------------------------
{
::rtl::OUString sFax;
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_sfacsimiletelephonenumber)) >>= sFax;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sFax;
}
::rtl::OUString SvtUserOptions_Impl::GetEmail() const namespace
{ {
::rtl::OUString sEmail; class theUserOptionsMutex : public rtl::Static<osl::Mutex, theUserOptionsMutex>{};
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_smail)) >>= sEmail;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sEmail;
} }
::rtl::OUString SvtUserOptions_Impl::GetCustomerNumber() const osl::Mutex& SvtUserOptions::GetInitMutex()
{ {
::rtl::OUString sCustomerNumber; return theUserOptionsMutex::get();
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_scustomernumber)) >>= sCustomerNumber;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sCustomerNumber;
} }
::rtl::OUString SvtUserOptions_Impl::GetFathersName() const // -----------------------------------------------------------------------
{
::rtl::OUString sFathersName;
try
{
if (m_xData.is())
m_xData->getPropertyValue(rtl::OUString(s_sfathersname)) >>= sFathersName;
}
catch ( const css::uno::Exception& ex )
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
return sFathersName; //
} // getters
//
OUString SvtUserOptions::GetCompany () const { return GetToken(USER_OPT_COMPANY); }
OUString SvtUserOptions::GetFirstName () const { return GetToken(USER_OPT_FIRSTNAME); }
OUString SvtUserOptions::GetLastName () const { return GetToken(USER_OPT_LASTNAME); }
OUString SvtUserOptions::GetID () const { return GetToken(USER_OPT_ID); }
OUString SvtUserOptions::GetStreet () const { return GetToken(USER_OPT_STREET); }
OUString SvtUserOptions::GetCity () const { return GetToken(USER_OPT_CITY); }
OUString SvtUserOptions::GetState () const { return GetToken(USER_OPT_STATE); }
OUString SvtUserOptions::GetZip () const { return GetToken(USER_OPT_ZIP); }
OUString SvtUserOptions::GetCountry () const { return GetToken(USER_OPT_COUNTRY); }
OUString SvtUserOptions::GetPosition () const { return GetToken(USER_OPT_POSITION); }
OUString SvtUserOptions::GetTitle () const { return GetToken(USER_OPT_TITLE); }
OUString SvtUserOptions::GetTelephoneHome () const { return GetToken(USER_OPT_TELEPHONEHOME); }
OUString SvtUserOptions::GetTelephoneWork () const { return GetToken(USER_OPT_TELEPHONEWORK); }
OUString SvtUserOptions::GetFax () const { return GetToken(USER_OPT_FAX); }
OUString SvtUserOptions::GetEmail () const { return GetToken(USER_OPT_EMAIL); }
OUString SvtUserOptions::GetCustomerNumber () const { return GetToken(USER_OPT_CUSTOMERNUMBER); }
OUString SvtUserOptions::GetFathersName () const { return GetToken(USER_OPT_FATHERSNAME); }
OUString SvtUserOptions::GetApartment () const { return GetToken(USER_OPT_APARTMENT); }
::rtl::OUString SvtUserOptions_Impl::GetApartment() const // -----------------------------------------------------------------------
{
::rtl::OUString sApartment;
try //
{ // setters
if (m_xData.is()) //
m_xData->getPropertyValue(rtl::OUString(s_sapartment)) >>= sApartment; void SvtUserOptions::SetCompany (OUString const& sToken) { SetToken(USER_OPT_COMPANY, sToken); }
} void SvtUserOptions::SetFirstName (OUString const& sToken) { SetToken(USER_OPT_FIRSTNAME, sToken); }
catch ( const css::uno::Exception& ex ) void SvtUserOptions::SetLastName (OUString const& sToken) { SetToken(USER_OPT_LASTNAME, sToken); }
{ void SvtUserOptions::SetID (OUString const& sToken) { SetToken(USER_OPT_ID, sToken); }
SAL_WARN("unotools", "Caught unexpected: " << ex.Message); void SvtUserOptions::SetStreet (OUString const& sToken) { SetToken(USER_OPT_STREET, sToken); }
} void SvtUserOptions::SetCity (OUString const& sToken) { SetToken(USER_OPT_CITY, sToken); }
void SvtUserOptions::SetState (OUString const& sToken) { SetToken(USER_OPT_STATE, sToken); }
void SvtUserOptions::SetZip (OUString const& sToken) { SetToken(USER_OPT_ZIP, sToken); }
void SvtUserOptions::SetCountry (OUString const& sToken) { SetToken(USER_OPT_COUNTRY, sToken); }
void SvtUserOptions::SetPosition (OUString const& sToken) { SetToken(USER_OPT_POSITION, sToken); }
void SvtUserOptions::SetTitle (OUString const& sToken) { SetToken(USER_OPT_TITLE, sToken); }
void SvtUserOptions::SetFax (OUString const& sToken) { SetToken(USER_OPT_FAX, sToken); }
void SvtUserOptions::SetEmail (OUString const& sToken) { SetToken(USER_OPT_EMAIL, sToken); }
void SvtUserOptions::SetTelephoneHome (OUString const& sToken) { SetToken(USER_OPT_TELEPHONEHOME, sToken); }
void SvtUserOptions::SetTelephoneWork (OUString const& sToken) { SetToken(USER_OPT_TELEPHONEWORK, sToken); }
void SvtUserOptions::SetCustomerNumber (OUString const& sToken) { SetToken(USER_OPT_CUSTOMERNUMBER, sToken); }
void SvtUserOptions::SetFathersName (OUString const& sToken) { SetToken(USER_OPT_FATHERSNAME, sToken); }
void SvtUserOptions::SetApartment (OUString const& sToken) { SetToken(USER_OPT_APARTMENT, sToken); }
return sApartment; // -----------------------------------------------------------------------
}
void SvtUserOptions_Impl::SetCompany( const ::rtl::OUString& sCompany ) sal_Bool SvtUserOptions::IsTokenReadonly (sal_uInt16 nToken) const
{ {
try osl::MutexGuard aGuard(GetInitMutex());
{ return pImpl->IsTokenReadonly(nToken);
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_so), css::uno::makeAny(::rtl::OUString(sCompany)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
} }
void SvtUserOptions_Impl::SetFirstName( const ::rtl::OUString& sFirstName ) // -----------------------------------------------------------------------
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sgivenname), css::uno::makeAny(::rtl::OUString(sFirstName)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetLastName( const ::rtl::OUString& sLastName ) OUString SvtUserOptions::GetToken (sal_uInt16 nToken) const
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_ssn), css::uno::makeAny(::rtl::OUString(sLastName)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetID( const ::rtl::OUString& sID )
{ {
try osl::MutexGuard aGuard(GetInitMutex());
{ return pImpl->GetToken(nToken);
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sinitials), css::uno::makeAny(::rtl::OUString(sID)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
} }
void SvtUserOptions_Impl::SetStreet( const ::rtl::OUString& sStreet ) // -----------------------------------------------------------------------
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sstreet), css::uno::makeAny(::rtl::OUString(sStreet)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetCity( const ::rtl::OUString& sCity ) void SvtUserOptions::SetToken (sal_uInt16 nToken, OUString const& rNewToken)
{ {
try osl::MutexGuard aGuard(GetInitMutex());
{ pImpl->SetToken(nToken, rNewToken);
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sl), css::uno::makeAny(::rtl::OUString(sCity)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
} }
void SvtUserOptions_Impl::SetState( const ::rtl::OUString& sState ) // -----------------------------------------------------------------------
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sst), css::uno::makeAny(::rtl::OUString(sState)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetZip( const ::rtl::OUString& sZip ) OUString SvtUserOptions::GetFullName () const
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_spostalcode), css::uno::makeAny(::rtl::OUString(sZip)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetCountry( const ::rtl::OUString& sCountry )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sc), css::uno::makeAny(::rtl::OUString(sCountry)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetPosition( const ::rtl::OUString& sPosition )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sposition), css::uno::makeAny(::rtl::OUString(sPosition)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetTitle( const ::rtl::OUString& sTitle )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_stitle), css::uno::makeAny(::rtl::OUString(sTitle)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetTelephoneHome( const ::rtl::OUString& sTelephoneHome )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_shomephone), css::uno::makeAny(::rtl::OUString(sTelephoneHome)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetTelephoneWork( const ::rtl::OUString& sTelephoneWork )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_stelephonenumber), css::uno::makeAny(::rtl::OUString(sTelephoneWork)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetFax( const ::rtl::OUString& sFax )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sfacsimiletelephonenumber), css::uno::makeAny(::rtl::OUString(sFax)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetEmail( const ::rtl::OUString& sEmail )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_smail), css::uno::makeAny(::rtl::OUString(sEmail)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetCustomerNumber( const ::rtl::OUString& sCustomerNumber )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_scustomernumber), css::uno::makeAny(::rtl::OUString(sCustomerNumber)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetFathersName( const ::rtl::OUString& sFathersName )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sfathersname), css::uno::makeAny(::rtl::OUString(sFathersName)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
void SvtUserOptions_Impl::SetApartment( const ::rtl::OUString& sApartment )
{
try
{
if (m_xData.is())
m_xData->setPropertyValue(rtl::OUString(s_sapartment), css::uno::makeAny(::rtl::OUString(sApartment)));
::comphelper::ConfigurationHelper::flush(m_xCfg);
}
catch ( const css::uno::Exception& ex)
{
SAL_WARN("unotools", "Caught unexpected: " << ex.Message);
}
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions_Impl::GetFullName() const
{
::rtl::OUString sFullName;
sFullName = GetFirstName();
sFullName.trim();
if ( !sFullName.isEmpty() )
sFullName += ::rtl::OUString(" ");
sFullName += GetLastName();
sFullName.trim();
return sFullName;
}
// -----------------------------------------------------------------------
void SvtUserOptions_Impl::Notify()
{
NotifyListeners(0);
}
// -----------------------------------------------------------------------
sal_Bool SvtUserOptions_Impl::IsTokenReadonly( sal_uInt16 nToken ) const
{
css::uno::Reference< css::beans::XPropertySet > xData(m_xCfg, css::uno::UNO_QUERY);
css::uno::Reference< css::beans::XPropertySetInfo > xInfo = xData->getPropertySetInfo();
css::beans::Property aProp;
sal_Bool bRet = sal_False;
switch ( nToken )
{
case USER_OPT_COMPANY:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_so));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_FIRSTNAME:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sgivenname));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_LASTNAME:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_ssn));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_ID:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sinitials));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_STREET:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sstreet));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_CITY:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sl));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_STATE:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sst));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_ZIP:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_spostalcode));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_COUNTRY:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sc));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_POSITION:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sposition));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_TITLE:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_stitle));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_TELEPHONEHOME:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_shomephone));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_TELEPHONEWORK:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_stelephonenumber));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_FAX:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sfacsimiletelephonenumber));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_EMAIL:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_smail));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_FATHERSNAME:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sfathersname));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
case USER_OPT_APARTMENT:
{
aProp = xInfo->getPropertyByName(rtl::OUString(s_sapartment));
bRet = ((aProp.Attributes & css::beans::PropertyAttribute::READONLY) == css::beans::PropertyAttribute::READONLY);
break;
}
default:
SAL_WARN( "unotools.config", "SvtUserOptions_Impl::IsTokenReadonly(): invalid token" );
}
return bRet;
}
//------------------------------------------------------------------------
::rtl::OUString SvtUserOptions_Impl::GetToken(sal_uInt16 nToken) const
{
::rtl::OUString pRet;
switch(nToken)
{
case USER_OPT_COMPANY: pRet = GetCompany(); break;
case USER_OPT_FIRSTNAME: pRet = GetFirstName(); break;
case USER_OPT_LASTNAME: pRet = GetLastName(); break;
case USER_OPT_ID: pRet = GetID(); break;
case USER_OPT_STREET: pRet = GetStreet(); break;
case USER_OPT_CITY: pRet = GetCity(); break;
case USER_OPT_STATE: pRet = GetState(); break;
case USER_OPT_ZIP: pRet = GetZip(); break;
case USER_OPT_COUNTRY: pRet = GetCountry(); break;
case USER_OPT_POSITION: pRet = GetPosition(); break;
case USER_OPT_TITLE: pRet = GetTitle(); break;
case USER_OPT_TELEPHONEHOME: pRet = GetTelephoneHome(); break;
case USER_OPT_TELEPHONEWORK: pRet = GetTelephoneWork(); break;
case USER_OPT_FAX: pRet = GetFax(); break;
case USER_OPT_EMAIL: pRet = GetEmail(); break;
case USER_OPT_FATHERSNAME: pRet = GetFathersName(); break;
case USER_OPT_APARTMENT: pRet = GetApartment(); break;
default:
SAL_WARN( "unotools.config", "SvtUserOptions_Impl::GetToken(): invalid token" );
}
return pRet;
}
// class SvtUserOptions --------------------------------------------------
SvtUserOptions::SvtUserOptions()
{
// Global access, must be guarded (multithreading)
::osl::MutexGuard aGuard( GetInitMutex() );
if ( !pOptions )
{
RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtUserOptions_Impl::ctor()");
pOptions = new SvtUserOptions_Impl;
ItemHolder1::holdConfigItem(E_USEROPTIONS);
}
++nRefCount;
pImp = pOptions;
pImp->AddListener(this);
}
// -----------------------------------------------------------------------
SvtUserOptions::~SvtUserOptions()
{
// Global access, must be guarded (multithreading)
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->RemoveListener(this);
if ( !--nRefCount )
{
//if ( pOptions->IsModified() )
// pOptions->Commit();
DELETEZ( pOptions );
}
}
// -----------------------------------------------------------------------
namespace
{
class theUserOptionsMutex : public rtl::Static<osl::Mutex, theUserOptionsMutex>{};
}
::osl::Mutex& SvtUserOptions::GetInitMutex()
{
return theUserOptionsMutex::get();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetCompany() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetCompany();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetFirstName() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetFirstName();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetLastName() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetLastName();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetID() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetID();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetStreet() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetStreet();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetCity() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetCity();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetState() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetState();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetZip() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetZip();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetCountry() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetCountry();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetPosition() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetPosition();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetTitle() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetTitle();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetTelephoneHome() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetTelephoneHome();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetTelephoneWork() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetTelephoneWork();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetFax() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetFax();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetEmail() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetEmail();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetCustomerNumber() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetCustomerNumber();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetFathersName() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetFathersName() ;
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetApartment() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetApartment();
}
// -----------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetFullName() const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->GetFullName();
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetCompany( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetCompany( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetFirstName( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetFirstName( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetLastName( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetLastName( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetID( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetID( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetStreet( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetStreet( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetCity( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetCity( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetState( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetState( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetZip( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetZip( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetCountry( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetCountry( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetPosition( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetPosition( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetTitle( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetTitle( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetTelephoneHome( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetTelephoneHome( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetTelephoneWork( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetTelephoneWork( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetFax( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetFax( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetEmail( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetEmail( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetCustomerNumber( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetCustomerNumber( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetFathersName( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetFathersName( rNewToken );
}
// -----------------------------------------------------------------------
void SvtUserOptions::SetApartment( const ::rtl::OUString& rNewToken )
{
::osl::MutexGuard aGuard( GetInitMutex() );
pImp->SetApartment( rNewToken );
}
// -----------------------------------------------------------------------
sal_Bool SvtUserOptions::IsTokenReadonly( sal_uInt16 nToken ) const
{
::osl::MutexGuard aGuard( GetInitMutex() );
return pImp->IsTokenReadonly( nToken );
}
//------------------------------------------------------------------------
::rtl::OUString SvtUserOptions::GetToken(sal_uInt16 nToken) const
{ {
::osl::MutexGuard aGuard( GetInitMutex() ); osl::MutexGuard aGuard(GetInitMutex());
return pImp->GetToken( nToken ); return pImpl->GetFullName();
} }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment