summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cui/source/inc/cuioptgenrl.hxx1
-rw-r--r--cui/source/options/optgenrl.cxx102
-rw-r--r--cui/uiconfig/ui/optuserpage.ui204
3 files changed, 60 insertions, 247 deletions
diff --git a/cui/source/inc/cuioptgenrl.hxx b/cui/source/inc/cuioptgenrl.hxx
index 0b93ebd1bd65..ee5cf822eca7 100644
--- a/cui/source/inc/cuioptgenrl.hxx
+++ b/cui/source/inc/cuioptgenrl.hxx
@@ -47,7 +47,6 @@ private:
struct Field;
std::vector<std::shared_ptr<Field> > vFields;
// "name" fields
- unsigned nNameRow;
unsigned nShortNameField;
DECL_LINK_TYPED( ModifyHdl_Impl, Edit&, void );
diff --git a/cui/source/options/optgenrl.cxx b/cui/source/options/optgenrl.cxx
index 33b7624500e8..bccdb88610ce 100644
--- a/cui/source/options/optgenrl.cxx
+++ b/cui/source/options/optgenrl.cxx
@@ -41,8 +41,6 @@ enum RowType
{
Row_Company,
Row_Name,
- Row_Name_Russian,
- Row_Name_Eastern,
Row_Street,
Row_Street_Russian,
Row_City,
@@ -60,7 +58,6 @@ namespace Lang
{
unsigned const Others = 1;
unsigned const Russian = 2;
- unsigned const Eastern = 4;
unsigned const US = 8;
unsigned const All = static_cast<unsigned>(-1);
}
@@ -80,9 +77,7 @@ struct
const vRowInfo[] =
{
{ "companyft", Lang::All },
- { "nameft", Lang::All & ~Lang::Russian & ~Lang::Eastern },
- { "rusnameft", Lang::Russian },
- { "eastnameft", Lang::Eastern },
+ { "nameft", Lang::All },
{ "streetft", Lang::All & ~Lang::Russian },
{ "russtreetft", Lang::Russian },
{ "icityft", Lang::All & ~Lang::US },
@@ -113,18 +108,8 @@ const vFieldInfo[] =
// Company
{ Row_Company, "company", UserOptToken::Company, EditPosition::COMPANY },
// Name
- { Row_Name, "firstname", UserOptToken::FirstName, EditPosition::FIRSTNAME },
{ Row_Name, "lastname", UserOptToken::LastName, EditPosition::LASTNAME },
{ Row_Name, "shortname", UserOptToken::ID, EditPosition::SHORTNAME },
- // Name (russian)
- { Row_Name_Russian, "ruslastname", UserOptToken::LastName, EditPosition::LASTNAME },
- { Row_Name_Russian, "rusfirstname", UserOptToken::FirstName, EditPosition::FIRSTNAME },
- { Row_Name_Russian, "rusfathersname", UserOptToken::FathersName, EditPosition::UNKNOWN },
- { Row_Name_Russian, "russhortname", UserOptToken::ID, EditPosition::SHORTNAME },
- // Name (eastern: reversed name ord
- { Row_Name_Eastern, "eastlastname", UserOptToken::LastName, EditPosition::LASTNAME },
- { Row_Name_Eastern, "eastfirstname", UserOptToken::FirstName, EditPosition::FIRSTNAME },
- { Row_Name_Eastern, "eastshortname", UserOptToken::ID, EditPosition::SHORTNAME },
// Street
{ Row_Street, "street", UserOptToken::Street, EditPosition::STREET },
// Street (russian)
@@ -235,10 +220,7 @@ void SvxGeneralTabPage::InitControls ()
LangBit = Lang::Russian;
break;
default:
- if (MsLangId::isFamilyNameFirst(eLang))
- LangBit = Lang::Eastern;
- else
- LangBit = Lang::Others;
+ LangBit = Lang::Others;
break;
}
@@ -269,7 +251,6 @@ void SvxGeneralTabPage::InitControls ()
// "short name" field?
if (vFieldInfo[iField].nUserOptionsId == UserOptToken::ID)
{
- nNameRow = vRows.size() - 1;
nShortNameField = vFields.size() - 1;
}
}
@@ -282,7 +263,7 @@ void SvxGeneralTabPage::SetLinks ()
{
// link for updating the initials
Link<Edit&,void> aLink = LINK( this, SvxGeneralTabPage, ModifyHdl_Impl );
- Row& rNameRow = *vRows[nNameRow];
+ Row& rNameRow = *vRows[Row_Name];
for (unsigned i = rNameRow.nFirstField; i != rNameRow.nLastField - 1; ++i)
vFields[i]->pEdit->SetModifyHdl(aLink);
}
@@ -335,36 +316,22 @@ void SvxGeneralTabPage::Reset( const SfxItemSet* rSet )
// ModifyHdl_Impl()
// This handler updates the initials (short name)
-// when one of the name fields was updated.
+// when the name field was updated.
IMPL_LINK_TYPED( SvxGeneralTabPage, ModifyHdl_Impl, Edit&, rEdit, void )
{
// 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]->pEdit == &rEdit)
- nField = i;
- }
- // updating the initial
- if (nField < nInits && rShortName.pEdit->IsEnabled())
+ if (rShortName.pEdit->IsEnabled())
{
- OUString sShortName = rShortName.pEdit->GetText();
- // clear short name if it contains more characters than the number of initials
- if ((unsigned)sShortName.getLength() > nInits)
- {
- rShortName.pEdit->SetText(OUString());
- }
- while ((unsigned)sShortName.getLength() < nInits)
- sShortName += " ";
+ sal_Int32 nIndex = 0;
OUString sName = rEdit.GetText();
- OUString sLetter = sName.isEmpty()
- ? OUString(sal_Unicode(' ')) : sName.copy(0, 1);
- rShortName.pEdit->SetText(sShortName.replaceAt(nField, 1, sLetter).trim());
+ OUString sShortName;
+ do {
+ OUString sToken = sName.getToken(0, ' ', nIndex);
+ if (!sToken.isEmpty())
+ sShortName += sToken.copy(0, 1);
+ } while (nIndex != -1);
+ rShortName.pEdit->SetText(sShortName);
}
}
@@ -374,10 +341,18 @@ bool SvxGeneralTabPage::GetData_Impl()
// updating
SvtUserOptions aUserOpt;
for (unsigned i = 0; i != vFields.size(); ++i)
+ {
aUserOpt.SetToken(
vFieldInfo[vFields[i]->iField].nUserOptionsId,
vFields[i]->pEdit->GetText()
);
+ // Blank out first name and father's name which aren't kept separately any longer
+ if (vFieldInfo[vFields[i]->iField].nUserOptionsId == UserOptToken::LastName)
+ {
+ aUserOpt.SetToken(UserOptToken::FirstName, "");
+ aUserOpt.SetToken(UserOptToken::FathersName, "");
+ }
+ }
// modified?
for (unsigned i = 0; i != vFields.size(); ++i)
@@ -401,7 +376,40 @@ void SvxGeneralTabPage::SetData_Impl()
Field& rField = *vFields[iField];
// updating content
UserOptToken const nToken = vFieldInfo[rField.iField].nUserOptionsId;
- rField.pEdit->SetText(aUserOpt.GetToken(nToken));
+ if (nToken == UserOptToken::LastName)
+ {
+ // When using old-style data (with separated name), if
+ // "family name" comes first in the locale, use that
+ // order. If Russian, use also father's name if
+ // present.
+ OUString sName;
+
+ if (MsLangId::isFamilyNameFirst(Application::GetSettings().GetUILanguageTag().getLanguageType()))
+ {
+ sName += aUserOpt.GetToken(UserOptToken::LastName);
+ OUString sFirstName = aUserOpt.GetToken(UserOptToken::FirstName);
+ if (!sName.isEmpty() && !sFirstName.isEmpty())
+ sName += " ";
+ sName += sFirstName;
+ }
+ else
+ {
+ sName += aUserOpt.GetToken(UserOptToken::FirstName);
+ OUString sFathersName;
+ if (Application::GetSettings().GetUILanguageTag().getLanguageType() == LANGUAGE_RUSSIAN)
+ sFathersName = aUserOpt.GetToken(UserOptToken::FathersName);
+ if (!sName.isEmpty() && !sFathersName.isEmpty())
+ sName += " ";
+ sName += sFathersName;
+ OUString sLastName = aUserOpt.GetToken(UserOptToken::LastName);
+ if (!sName.isEmpty() && !sLastName.isEmpty())
+ sName += " ";
+ sName += sLastName;
+ }
+ rField.pEdit->SetText(sName);
+ }
+ else
+ rField.pEdit->SetText(aUserOpt.GetToken(nToken));
// is enabled?
bool const bEnableEdit = !aUserOpt.IsTokenReadonly(nToken);
rField.pEdit->Enable(bEnableEdit);
diff --git a/cui/uiconfig/ui/optuserpage.ui b/cui/uiconfig/ui/optuserpage.ui
index 93a7db478f96..009ec6ec73be 100644
--- a/cui/uiconfig/ui/optuserpage.ui
+++ b/cui/uiconfig/ui/optuserpage.ui
@@ -39,9 +39,9 @@
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="halign">end</property>
- <property name="label" translatable="yes">First/last _name/initials:</property>
+ <property name="label" translatable="yes">Name/initials:</property>
<property name="use_underline">True</property>
- <property name="mnemonic_widget">firstname</property>
+ <property name="mnemonic_widget">lastname</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -143,24 +143,6 @@
<property name="no_show_all">True</property>
<property name="column_spacing">6</property>
<child>
- <object class="GtkEntry" id="firstname">
- <property name="can_focus">True</property>
- <property name="no_show_all">True</property>
- <property name="valign">center</property>
- <property name="hexpand">True</property>
- <property name="invisible_char">•</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="firstname-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">First name</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
<object class="GtkEntry" id="lastname">
<property name="can_focus">True</property>
<property name="no_show_all">True</property>
@@ -169,12 +151,12 @@
<property name="invisible_char">•</property>
<child internal-child="accessible">
<object class="AtkObject" id="lastname-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">Last name</property>
+ <property name="AtkObject::accessible-name" translatable="yes">Name</property>
</object>
</child>
</object>
<packing>
- <property name="left_attach">1</property>
+ <property name="left_attach">0</property>
<property name="top_attach">0</property>
</packing>
</child>
@@ -192,7 +174,7 @@
</child>
</object>
<packing>
- <property name="left_attach">2</property>
+ <property name="left_attach">1</property>
<property name="top_attach">0</property>
</packing>
</child>
@@ -425,182 +407,6 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="rusnameft">
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes">Last name/first _name/father’s name/initials:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">ruslastname</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="grid8">
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="column_spacing">6</property>
- <child>
- <object class="GtkEntry" id="ruslastname">
- <property name="can_focus">True</property>
- <property name="no_show_all">True</property>
- <property name="valign">center</property>
- <property name="hexpand">True</property>
- <property name="invisible_char">•</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="ruslastname-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">Last name</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="rusfathersname">
- <property name="can_focus">True</property>
- <property name="no_show_all">True</property>
- <property name="valign">center</property>
- <property name="hexpand">True</property>
- <property name="invisible_char">•</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="rusfathersname-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">Father's name</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="russhortname">
- <property name="can_focus">True</property>
- <property name="no_show_all">True</property>
- <property name="valign">center</property>
- <property name="invisible_char">•</property>
- <property name="width_chars">7</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="russhortname-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">Initials</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">3</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="rusfirstname">
- <property name="can_focus">True</property>
- <property name="no_show_all">True</property>
- <property name="valign">center</property>
- <property name="hexpand">True</property>
- <property name="invisible_char">•</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="rusfirstname-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">First name</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="eastnameft">
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="halign">end</property>
- <property name="label" translatable="yes">Last/first _name/initials:</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">eastlastname</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="grid9">
- <property name="can_focus">False</property>
- <property name="no_show_all">True</property>
- <property name="column_spacing">6</property>
- <child>
- <object class="GtkEntry" id="eastlastname">
- <property name="can_focus">True</property>
- <property name="no_show_all">True</property>
- <property name="valign">center</property>
- <property name="hexpand">True</property>
- <property name="invisible_char">•</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="eastlastname-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">Last name</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="eastfirstname">
- <property name="can_focus">True</property>
- <property name="no_show_all">True</property>
- <property name="valign">center</property>
- <property name="hexpand">True</property>
- <property name="invisible_char">•</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="eastfirstname-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">First name</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="eastshortname">
- <property name="can_focus">True</property>
- <property name="no_show_all">True</property>
- <property name="valign">center</property>
- <property name="invisible_char">•</property>
- <property name="width_chars">7</property>
- <child internal-child="accessible">
- <object class="AtkObject" id="eastshortname-atkobject">
- <property name="AtkObject::accessible-name" translatable="yes">Initials</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">3</property>
- </packing>
- </child>
- <child>
<object class="GtkLabel" id="russtreetft">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>