Kaydet (Commit) b0658929 authored tarafından Julien Nabet's avatar Julien Nabet Kaydeden (comit) Lionel Elie Mamane

tdf#96234: Type Formatting, Primary key checkbox may be checked

Right click on a field in Type Formatting (Base, paste a table from Calc for eg)
makes a popup which takes into account now if the field is a primary key or not.

Handles multi-fields primary key, too: the selected fields must be exactly
those in the primary key, no more, no less.

Change-Id: I545b946bccd3fc02f4f6c3bdb99f914d181a3d40
üst f7c94c5b
...@@ -424,23 +424,45 @@ bool OWizTypeSelectList::PreNotify( NotifyEvent& rEvt ) ...@@ -424,23 +424,45 @@ bool OWizTypeSelectList::PreNotify( NotifyEvent& rEvt )
ptWhere = pComEvt->GetMousePosPixel(); ptWhere = pComEvt->GetMousePosPixel();
PopupMenu aContextMenu(ModuleRes(RID_SBA_RTF_PKEYPOPUP)); PopupMenu aContextMenu(ModuleRes(RID_SBA_RTF_PKEYPOPUP));
// Should primary key checkbox be checked?
const sal_Int32 nCount = GetEntryCount();
bool bCheckOk = false;
for(sal_Int32 j = 0 ; j < nCount ; ++j)
{
OFieldDescription* pFieldDescr = static_cast<OFieldDescription*>(GetEntryData(j));
// if at least one of the fields is selected but not in the primary key,
// or is in the primary key but not selected, then don't check the
// primary key checkbox.
if( pFieldDescr && pFieldDescr->IsPrimaryKey() != IsEntryPosSelected(j) )
{
bCheckOk = false;
break;
}
if (!bCheckOk && IsEntryPosSelected(j))
bCheckOk = true;
}
if (bCheckOk)
aContextMenu.CheckItem( SID_TABLEDESIGN_TABED_PRIMARYKEY, true );
switch( aContextMenu.Execute( this, ptWhere ) ) switch( aContextMenu.Execute( this, ptWhere ) )
{ {
case SID_TABLEDESIGN_TABED_PRIMARYKEY: case SID_TABLEDESIGN_TABED_PRIMARYKEY:
{ {
const sal_Int32 nCount = GetEntryCount();
for(sal_Int32 j = 0 ; j < nCount ; ++j) for(sal_Int32 j = 0 ; j < nCount ; ++j)
{ {
OFieldDescription* pFieldDescr = static_cast<OFieldDescription*>(GetEntryData(j)); OFieldDescription* pFieldDescr = static_cast<OFieldDescription*>(GetEntryData(j));
if( pFieldDescr ) if( pFieldDescr )
{ {
if(pFieldDescr->IsPrimaryKey() && !IsEntryPosSelected(j)) if(!bCheckOk && IsEntryPosSelected(j))
setPrimaryKey(pFieldDescr,j);
else if(IsEntryPosSelected(j))
{ {
setPrimaryKey(pFieldDescr,j,!pFieldDescr->IsPrimaryKey()); setPrimaryKey(pFieldDescr,j,true);
SelectEntryPos(j); SelectEntryPos(j);
} }
else
{
setPrimaryKey(pFieldDescr,j);
}
} }
} }
GetSelectHdl().Call(*this); GetSelectHdl().Call(*this);
......
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