sw/source/ui/fldui/fldvar.cxx | 720 +++++++++++++++++++++--------------------- 1 file changed, 361 insertions(+), 359 deletions(-)
New commits: commit fdef33c3dfad1badab0a6f8d447763f565f1fca7 Author: Oliver-Rainer Wittmann <[email protected]> Date: Fri Jul 18 07:48:50 2014 +0000 124231: field variable dialog: check access to current field as it could be unavailable caused by its change and a followed removal from the document by e.g. a conditional hide of a section diff --git a/sw/source/ui/fldui/fldvar.cxx b/sw/source/ui/fldui/fldvar.cxx index 099cddb..21e9fa6 100644 --- a/sw/source/ui/fldui/fldvar.cxx +++ b/sw/source/ui/fldui/fldvar.cxx @@ -34,27 +34,17 @@ #include <docufld.hxx> #include <expfld.hxx> #include <ddefld.hxx> -#ifndef _VIEW_HXX #include <view.hxx> -#endif #include <wrtsh.hxx> #include <doc.hxx> #include <docary.hxx> #include <swmodule.hxx> -#ifndef _FLDVAR_HXX #include <fldvar.hxx> -#endif #include <calc.hxx> #include <svl/zformat.hxx> -#ifndef _GLOBALS_HRC #include <globals.hrc> -#endif -#ifndef _FLDUI_HRC #include <fldui.hrc> -#endif -#ifndef _FLDTDLG_HRC #include <fldtdlg.hrc> -#endif #define USER_DATA_VERSION_1 "1" #define USER_DATA_VERSION USER_DATA_VERSION_1 @@ -142,21 +132,23 @@ void SwFldVarPage::Reset(const SfxItemSet& ) } else { - SwField* pCurField = GetCurField(); + const SwField* pCurField = GetCurField(); + ASSERT( pCurField != NULL, + "<SwFldVarPage::Reset(..)> - <SwField> instance missing!" ); nTypeId = pCurField->GetTypeId(); - if (nTypeId == TYP_SETINPFLD) + if ( nTypeId == TYP_SETINPFLD ) nTypeId = TYP_INPUTFLD; - nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId))); - aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId)); - aNumFormatLB.SetAutomaticLanguage(pCurField->IsAutomaticLanguage()); + nPos = aTypeLB.InsertEntry( GetFldMgr().GetTypeStr( GetFldMgr().GetPos( nTypeId ) ) ); + aTypeLB.SetEntryData( nPos, reinterpret_cast< void* >( nTypeId ) ); + aNumFormatLB.SetAutomaticLanguage( pCurField->IsAutomaticLanguage() ); SwWrtShell *pSh = GetWrtShell(); - if(!pSh) + if ( !pSh ) pSh = ::GetActiveWrtShell(); - if(pSh) + if ( pSh ) { - const SvNumberformat* pFormat = pSh->GetNumberFormatter()->GetEntry(pCurField->GetFormat()); - if(pFormat) - aNumFormatLB.SetLanguage(pFormat->GetLanguage()); + const SvNumberformat* pFormat = pSh->GetNumberFormatter()->GetEntry( pCurField->GetFormat() ); + if ( pFormat ) + aNumFormatLB.SetLanguage( pFormat->GetLanguage() ); } } @@ -281,333 +273,334 @@ IMPL_LINK( SwFldVarPage, SubTypeHdl, ListBox *, pBox ) bInvisible = sal_False, bSeparator = sal_False, bChapterLevel = sal_False; sal_Bool bFormat = nSize != 0; - switch (nTypeId) + switch ( nTypeId ) { - case TYP_USERFLD: + case TYP_USERFLD: { // Benutzertyp aendern oder anlegen SwUserFieldType* pType = (SwUserFieldType*) - GetFldMgr().GetFldType(RES_USERFLD, nSelPos); + GetFldMgr().GetFldType( RES_USERFLD, nSelPos ); - if (pType) + if ( pType ) { - if (!IsFldEdit()) + if ( !IsFldEdit() ) { - if (pBox || (bInit && !IsRefresh())) // Nur bei Interaktion mit Maus + if ( pBox || ( bInit && !IsRefresh() ) ) // Nur bei Interaktion mit Maus { - aNameED.SetText(pType->GetName()); + aNameED.SetText( pType->GetName() ); - if (pType->GetType() == UF_STRING) + if ( pType->GetType() == UF_STRING ) { - aValueED.SetText(pType->GetContent()); - aNumFormatLB.SelectEntryPos(0); + aValueED.SetText( pType->GetContent() ); + aNumFormatLB.SelectEntryPos( 0 ); } else - aValueED.SetText(pType->GetContent()); + aValueED.SetText( pType->GetContent() ); // aValueED.SetText(pType->GetContent(aNumFormatLB.GetFormat())); } } else - aValueED.SetText(pType->GetContent()); + aValueED.SetText( pType->GetContent() ); } else { - if (pBox) // Nur bei Interaktion mit Maus + if ( pBox ) // Nur bei Interaktion mit Maus { - aNameED.SetText(aEmptyStr); - aValueED.SetText(aEmptyStr); + aNameED.SetText( aEmptyStr ); + aValueED.SetText( aEmptyStr ); } } bValue = bName = bNumFmt = bInvisible = sal_True; - aValueED.SetDropEnable(sal_True); + aValueED.SetDropEnable( sal_True ); break; } - case TYP_SETFLD: - bValue = sal_True; + case TYP_SETFLD: + bValue = sal_True; - bNumFmt = bInvisible = sal_True; + bNumFmt = bInvisible = sal_True; - if (!IsFldDlgHtmlMode()) - bName = sal_True; - else - { - aNumFormatLB.Clear(); - sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_SETVAR_TEXT), 0); - aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); - aNumFormatLB.SelectEntryPos(0); - } - // gibt es ein entprechendes SetField - if (IsFldEdit() || pBox) // Nur bei Interaktion mit Maus + if ( !IsFldDlgHtmlMode() ) + bName = sal_True; + else + { + aNumFormatLB.Clear(); + sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_SETVAR_TEXT ), 0 ); + aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX ); + aNumFormatLB.SelectEntryPos( 0 ); + } + // gibt es ein entprechendes SetField + if ( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus + { + if ( nSelPos != LISTBOX_ENTRY_NOTFOUND ) { - if (nSelPos != LISTBOX_ENTRY_NOTFOUND) - { - String sName(aSelectionLB.GetSelectEntry()); - aNameED.SetText(sName); + String sName( aSelectionLB.GetSelectEntry() ); + aNameED.SetText( sName ); - if (!IsFldDlgHtmlMode()) + if ( !IsFldDlgHtmlMode() ) + { + SwWrtShell *pSh = GetWrtShell(); + if ( !pSh ) + pSh = ::GetActiveWrtShell(); + if ( pSh ) { - SwWrtShell *pSh = GetWrtShell(); - if(!pSh) - pSh = ::GetActiveWrtShell(); - if(pSh) - { - SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*) - pSh->GetFldType(RES_SETEXPFLD, sName); + SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*) + pSh->GetFldType( RES_SETEXPFLD, sName ); - if (pSetTyp && pSetTyp->GetType() == nsSwGetSetExpType::GSE_STRING) - aNumFormatLB.SelectEntryPos(0); // Textuell - } + if ( pSetTyp && pSetTyp->GetType() == nsSwGetSetExpType::GSE_STRING ) + aNumFormatLB.SelectEntryPos( 0 ); // Textuell } } } - if (IsFldEdit()) - { - // GetFormula fuehrt bei Datumsformaten zu Problemen, - // da nur der numerische Wert ohne Formatierung returned wird. - // Muss aber verwendet werden, da sonst bei GetPar2 nur der vom - // Kalkulator errechnete Wert angezeigt werden wuerde - // (statt test2 = test + 1) - aValueED.SetText(((SwSetExpField*)GetCurField())->GetFormula()); - } - aValueED.SetDropEnable(sal_True); - break; + } + if ( GetCurField() != NULL && IsFldEdit() ) + { + // GetFormula fuehrt bei Datumsformaten zu Problemen, + // da nur der numerische Wert ohne Formatierung returned wird. + // Muss aber verwendet werden, da sonst bei GetPar2 nur der vom + // Kalkulator errechnete Wert angezeigt werden wuerde + // (statt test2 = test + 1) + aValueED.SetText( ( (SwSetExpField*) GetCurField() )->GetFormula() ); + } + aValueED.SetDropEnable( sal_True ); + break; - case TYP_FORMELFLD: + case TYP_FORMELFLD: + { + bValue = sal_True; + bNumFmt = sal_True; + aValueFT.SetText( SW_RESSTR( STR_FORMULA ) ); + aValueED.SetDropEnable( sal_True ); + } + break; + + case TYP_GETFLD: + { + if ( !IsFldEdit() ) { - bValue = sal_True; - bNumFmt = sal_True; - aValueFT.SetText(SW_RESSTR(STR_FORMULA)); - aValueED.SetDropEnable(sal_True); + aNameED.SetText( aEmptyStr ); + aValueED.SetText( aEmptyStr ); } - break; - case TYP_GETFLD: + if ( nSelPos != LISTBOX_ENTRY_NOTFOUND ) { - if (!IsFldEdit()) - { - aNameED.SetText(aEmptyStr); - aValueED.SetText(aEmptyStr); - } + String sName( aSelectionLB.GetSelectEntry() ); + if ( !IsFldEdit() ) + aNameED.SetText( sName ); - if (nSelPos != LISTBOX_ENTRY_NOTFOUND) + // gibt es ein entprechendes SetField + SwWrtShell *pSh = GetWrtShell(); + if ( !pSh ) + pSh = ::GetActiveWrtShell(); + if ( pSh ) { - String sName(aSelectionLB.GetSelectEntry()); - if (!IsFldEdit()) - aNameED.SetText(sName); + SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*) + pSh->GetFldType( RES_SETEXPFLD, sName ); - // gibt es ein entprechendes SetField - SwWrtShell *pSh = GetWrtShell(); - if(!pSh) - pSh = ::GetActiveWrtShell(); - if(pSh) + if ( pSetTyp ) { - SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*) - pSh->GetFldType(RES_SETEXPFLD, sName); - - if(pSetTyp) - { - if (pSetTyp->GetType() & nsSwGetSetExpType::GSE_STRING) // Textuell? - bFormat = sal_True; - else // Numerisch - bNumFmt = sal_True; - } + if ( pSetTyp->GetType() & nsSwGetSetExpType::GSE_STRING ) // Textuell? + bFormat = sal_True; + else + // Numerisch + bNumFmt = sal_True; } } - else - bFormat = sal_False; - - EnableInsert(bFormat|bNumFmt); } - break; + else + bFormat = sal_False; - case TYP_INPUTFLD: - aValueFT.SetText(SW_RESSTR(STR_PROMPT)); + EnableInsert( bFormat | bNumFmt ); + } + break; - if (nSelPos != LISTBOX_ENTRY_NOTFOUND) - { - bValue = bNumFmt = sal_True; + case TYP_INPUTFLD: + aValueFT.SetText( SW_RESSTR( STR_PROMPT ) ); - String sName; + if ( nSelPos != LISTBOX_ENTRY_NOTFOUND ) + { + bValue = bNumFmt = sal_True; - sName = aSelectionLB.GetSelectEntry(); - aNameED.SetText( sName ); + String sName; - // User- oder SetField ? - sal_uInt16 nInpType = 0; - nInpType = static_cast< sal_uInt16 >(GetFldMgr().GetFldType(RES_USERFLD, sName) ? 0 : TYP_SETINPFLD); + sName = aSelectionLB.GetSelectEntry(); + aNameED.SetText( sName ); - if (nInpType) // SETEXPFLD - { - // gibt es ein entprechendes SetField - SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*) - GetFldMgr().GetFldType(RES_SETEXPFLD, sName); + // User- oder SetField ? + sal_uInt16 nInpType = 0; + nInpType = static_cast< sal_uInt16 >( GetFldMgr().GetFldType( RES_USERFLD, sName ) ? 0 : TYP_SETINPFLD ); + + if ( nInpType ) // SETEXPFLD + { + // gibt es ein entprechendes SetField + SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*) + GetFldMgr().GetFldType( RES_SETEXPFLD, sName ); - if(pSetTyp) + if ( pSetTyp ) + { + if ( pSetTyp->GetType() == nsSwGetSetExpType::GSE_STRING ) // Textuell? { - if (pSetTyp->GetType() == nsSwGetSetExpType::GSE_STRING) // Textuell? - { - aNumFormatLB.Clear(); + aNumFormatLB.Clear(); - sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_USERVAR_TEXT), 0); - aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); - aNumFormatLB.SelectEntryPos(0); - } + sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_USERVAR_TEXT ), 0 ); + aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX ); + aNumFormatLB.SelectEntryPos( 0 ); } - if (IsFldEdit() && (!pBox || bInit) ) - aValueED.SetText(((SwSetExpField*)GetCurField())->GetPromptText()); } - else // USERFLD - bFormat = bNumFmt = sal_False; + if ( GetCurField() != NULL + && IsFldEdit() && ( !pBox || bInit ) ) + { + aValueED.SetText( ( (SwSetExpField*) GetCurField() )->GetPromptText() ); + } } - break; + else + // USERFLD + bFormat = bNumFmt = sal_False; + } + break; - case TYP_DDEFLD: - aValueFT.SetText(SW_RESSTR(STR_DDE_CMD)); + case TYP_DDEFLD: + aValueFT.SetText( SW_RESSTR( STR_DDE_CMD ) ); - if (IsFldEdit() || pBox) // Nur bei Interaktion mit Maus + if ( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus + { + if ( nSelPos != LISTBOX_ENTRY_NOTFOUND ) { - if (nSelPos != LISTBOX_ENTRY_NOTFOUND) - { - SwDDEFieldType* pType = - (SwDDEFieldType*) GetFldMgr().GetFldType(RES_DDEFLD, nSelPos); + SwDDEFieldType* pType = + (SwDDEFieldType*) GetFldMgr().GetFldType( RES_DDEFLD, nSelPos ); - if(pType) - { - aNameED.SetText(pType->GetName()); + if ( pType ) + { + aNameED.SetText( pType->GetName() ); - //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren - // Namen haben! Wird hier noch nicht beachtet - String sCmd( pType->GetCmd() ); - sal_uInt16 nTmpPos = sCmd.SearchAndReplace( sfx2::cTokenSeperator, ' ' ); - sCmd.SearchAndReplace( sfx2::cTokenSeperator, ' ', nTmpPos ); + //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren + // Namen haben! Wird hier noch nicht beachtet + String sCmd( pType->GetCmd() ); + sal_uInt16 nTmpPos = sCmd.SearchAndReplace( sfx2::cTokenSeperator, ' ' ); + sCmd.SearchAndReplace( sfx2::cTokenSeperator, ' ', nTmpPos ); - aValueED.SetText( sCmd ); - aFormatLB.SelectEntryPos(pType->GetType()); - } + aValueED.SetText( sCmd ); + aFormatLB.SelectEntryPos( pType->GetType() ); } } - bName = bValue = sal_True; - break; + } + bName = bValue = sal_True; + break; - case TYP_SEQFLD: - { - // aNumRB.Check(sal_True); - bName = bValue = bSeparator = bChapterLevel = sal_True; + case TYP_SEQFLD: + { + // aNumRB.Check(sal_True); + bName = bValue = bSeparator = bChapterLevel = sal_True; - SwFieldType* pFldTyp; - if( IsFldEdit() ) - pFldTyp = GetCurField()->GetTyp(); + SwFieldType* pFldTyp; + if ( GetCurField() != NULL && IsFldEdit() ) + pFldTyp = GetCurField()->GetTyp(); + else + { + String sFldTypeName( aSelectionLB.GetEntry( nSelPos ) ); + if ( sFldTypeName.Len() ) + pFldTyp = GetFldMgr().GetFldType( RES_SETEXPFLD, sFldTypeName ); else - { - String sFldTypeName( aSelectionLB.GetEntry( nSelPos )); - if( sFldTypeName.Len() ) - pFldTyp = GetFldMgr().GetFldType( RES_SETEXPFLD, - sFldTypeName ); - else - pFldTyp = 0; - } + pFldTyp = 0; + } - if( IsFldEdit() ) - aValueED.SetText( ((SwSetExpField*)GetCurField())-> - GetFormula() ); + if ( GetCurField() != NULL && IsFldEdit() ) + aValueED.SetText( ( (SwSetExpField*) GetCurField() )-> GetFormula() ); - if( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus - aNameED.SetText( aSelectionLB.GetSelectEntry() ); + if ( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus + aNameED.SetText( aSelectionLB.GetSelectEntry() ); - if( pFldTyp ) - { - sal_uInt8 nLevel = ((SwSetExpFieldType*)pFldTyp)->GetOutlineLvl(); - if( 0x7f == nLevel ) - aChapterLevelLB.SelectEntryPos( 0 ); - else - aChapterLevelLB.SelectEntryPos( nLevel + 1 ); - String sDelim = ((SwSetExpFieldType*)pFldTyp)->GetDelimiter(); - aSeparatorED.SetText( sDelim ); - ChapterHdl(); - } + if ( pFldTyp ) + { + sal_uInt8 nLevel = ( (SwSetExpFieldType*) pFldTyp )->GetOutlineLvl(); + if ( 0x7f == nLevel ) + aChapterLevelLB.SelectEntryPos( 0 ); + else + aChapterLevelLB.SelectEntryPos( nLevel + 1 ); + String sDelim = ( (SwSetExpFieldType*) pFldTyp )->GetDelimiter(); + aSeparatorED.SetText( sDelim ); + ChapterHdl(); } - break; + } + break; - case TYP_SETREFPAGEFLD: - { - bValue = sal_False; - aValueFT.SetText( SW_RESSTR( STR_OFFSET )); + case TYP_SETREFPAGEFLD: + { + bValue = sal_False; + aValueFT.SetText( SW_RESSTR( STR_OFFSET ) ); - if (IsFldEdit() || pBox) // Nur bei Interaktion mit Maus - aNameED.SetText(aEmptyStr); + if ( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus + aNameED.SetText( aEmptyStr ); - if (nSelPos != 0 && nSelPos != LISTBOX_ENTRY_NOTFOUND) - { - bValue = sal_True; // SubType OFF - kennt keinen Offset - if (IsFldEdit()) - aValueED.SetText(String::CreateFromInt32(((SwRefPageSetField*)GetCurField())->GetOffset())); - } + if ( nSelPos != 0 && nSelPos != LISTBOX_ENTRY_NOTFOUND ) + { + bValue = sal_True; // SubType OFF - kennt keinen Offset + if ( GetCurField() != NULL && IsFldEdit() ) + aValueED.SetText( String::CreateFromInt32( ( (SwRefPageSetField*) GetCurField() )->GetOffset() ) ); } - break; + } + break; - case TYP_GETREFPAGEFLD: - aNameED.SetText(aEmptyStr); - aValueED.SetText(aEmptyStr); - break; + case TYP_GETREFPAGEFLD: + aNameED.SetText( aEmptyStr ); + aValueED.SetText( aEmptyStr ); + break; } - aNumFormatLB.Show(bNumFmt); - aFormatLB.Show(!bNumFmt); + aNumFormatLB.Show( bNumFmt ); + aFormatLB.Show( !bNumFmt ); - if (IsFldEdit()) + if ( IsFldEdit() ) bName = sal_False; - aFormatLB.Enable(bFormat); - aFormatFT.Enable(bFormat|bNumFmt); - aNameFT.Enable(bName); - aNameED.Enable(bName); - aValueFT.Enable(bValue); - aValueED.Enable(bValue); - - Size aSz(aFormatLB.GetSizePixel()); + aFormatLB.Enable( bFormat ); + aFormatFT.Enable( bFormat | bNumFmt ); + aNameFT.Enable( bName ); + aNameED.Enable( bName ); + aValueFT.Enable( bValue ); + aValueED.Enable( bValue ); - if (bChapterLevel) - aSz.Height() = aFormatLB.LogicToPixel(Size(1, 94), MAP_APPFONT).Height(); + Size aSz( aFormatLB.GetSizePixel() ); + if ( bChapterLevel ) + aSz.Height() = aFormatLB.LogicToPixel( Size( 1, 94 ), MAP_APPFONT ).Height(); else - aSz.Height() = aFormatLB.LogicToPixel(Size(1, 123), MAP_APPFONT).Height(); + aSz.Height() = aFormatLB.LogicToPixel( Size( 1, 123 ), MAP_APPFONT ).Height(); + aFormatLB.SetSizePixel( aSz ); - aFormatLB.SetSizePixel(aSz); - - aInvisibleCB.Show(!bSeparator); - aSeparatorFT.Show(bSeparator); - aSeparatorED.Show(bSeparator); - aChapterHeaderFT.Show(bChapterLevel); - aChapterLevelFT.Show(bChapterLevel); - aChapterLevelLB.Show(bChapterLevel); - aInvisibleCB.Enable(bInvisible); + aInvisibleCB.Show( !bSeparator ); + aSeparatorFT.Show( bSeparator ); + aSeparatorED.Show( bSeparator ); + aChapterHeaderFT.Show( bChapterLevel ); + aChapterLevelFT.Show( bChapterLevel ); + aChapterLevelLB.Show( bChapterLevel ); + aInvisibleCB.Enable( bInvisible ); ModifyHdl(); // Anwenden/Einfuegen/Loeschen Status update - aNumFormatLB.SetUpdateMode(sal_True); - aFormatLB.SetUpdateMode(sal_True); + aNumFormatLB.SetUpdateMode( sal_True ); + aFormatLB.SetUpdateMode( sal_True ); - if(aSelectionLB.IsCallAddSelection()) + if ( aSelectionLB.IsCallAddSelection() ) { - nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel()); + nTypeId = (sal_uInt16) (sal_uLong) aTypeLB.GetEntryData( GetTypeSel() ); - switch (nTypeId) + switch ( nTypeId ) { - case TYP_FORMELFLD: - { - nSelPos = aSelectionLB.GetSelectEntryPos(); + case TYP_FORMELFLD: + { + nSelPos = aSelectionLB.GetSelectEntryPos(); - if (nSelPos != LISTBOX_ENTRY_NOTFOUND) - nSelPos = (sal_uInt16)(sal_uLong)aSelectionLB.GetEntryData(nSelPos); + if ( nSelPos != LISTBOX_ENTRY_NOTFOUND ) + nSelPos = (sal_uInt16) (sal_uLong) aSelectionLB.GetEntryData( nSelPos ); - if (nSelPos != LISTBOX_ENTRY_NOTFOUND && pBox && !bInit) - { - aValueED.ReplaceSelected(aSelectionLB.GetSelectEntry()); - ModifyHdl(); - } + if ( nSelPos != LISTBOX_ENTRY_NOTFOUND && pBox && !bInit ) + { + aValueED.ReplaceSelected( aSelectionLB.GetSelectEntry() ); + ModifyHdl(); } - break; + } + break; } aSelectionLB.ResetCallAddSelection(); } @@ -620,96 +613,100 @@ IMPL_LINK( SwFldVarPage, SubTypeHdl, ListBox *, pBox ) void SwFldVarPage::UpdateSubType() { - String sOldSel; - sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel()); + SetSelectionSel( aSelectionLB.GetSelectEntryPos() ); - SetSelectionSel(aSelectionLB.GetSelectEntryPos()); - if(GetSelectionSel() != LISTBOX_ENTRY_NOTFOUND) - sOldSel = aSelectionLB.GetEntry(GetSelectionSel()); + String sOldSel; + if ( GetSelectionSel() != LISTBOX_ENTRY_NOTFOUND ) + sOldSel = aSelectionLB.GetEntry( GetSelectionSel() ); // Auswahl-Listbox fuellen - aSelectionLB.SetUpdateMode(sal_False); + aSelectionLB.SetUpdateMode( sal_False ); aSelectionLB.Clear(); + const sal_uInt16 nTypeId = (sal_uInt16) (sal_uLong) aTypeLB.GetEntryData( GetTypeSel() ); SvStringsDtor aList; - GetFldMgr().GetSubTypes(nTypeId, aList); - sal_uInt16 nCount = aList.Count(); - sal_uInt16 nPos; - - for (sal_uInt16 i = 0; i < nCount; ++i) + GetFldMgr().GetSubTypes( nTypeId, aList ); + const sal_uInt16 nCount = aList.Count(); + for ( sal_uInt16 i = 0; i < nCount; ++i ) { - if (nTypeId != TYP_INPUTFLD || i) + if ( nTypeId != TYP_INPUTFLD || i ) { - if (!IsFldEdit()) + if ( !IsFldEdit() ) { - nPos = aSelectionLB.InsertEntry(*aList[i]); - aSelectionLB.SetEntryData(nPos, reinterpret_cast<void*>(i)); + const sal_uInt16 nPos = aSelectionLB.InsertEntry( *aList[i] ); + aSelectionLB.SetEntryData( nPos, reinterpret_cast< void* >( i ) ); } else { sal_Bool bInsert = sal_False; - switch (nTypeId) + switch ( nTypeId ) { - case TYP_INPUTFLD: - if (*aList[i] == GetCurField()->GetPar1()) - bInsert = sal_True; - break; + case TYP_INPUTFLD: + if ( GetCurField() != NULL && *aList[i] == GetCurField()->GetPar1() ) + bInsert = sal_True; + break; + + case TYP_FORMELFLD: + bInsert = sal_True; + break; - case TYP_FORMELFLD: + case TYP_GETFLD: + if ( GetCurField() != NULL && *aList[i] == ( (SwFormulaField*) GetCurField() )->GetFormula() ) bInsert = sal_True; - break; + break; - case TYP_GETFLD: - if (*aList[i] == ((SwFormulaField*)GetCurField())->GetFormula()) - bInsert = sal_True; - break; + case TYP_SETFLD: + case TYP_USERFLD: + if ( GetCurField() != NULL && *aList[i] == GetCurField()->GetTyp()->GetName() ) + { + bInsert = sal_True; + if ( GetCurField()->GetSubType() & nsSwExtendedSubType::SUB_INVISIBLE ) + aInvisibleCB.Check(); + } + break; - case TYP_SETFLD: - case TYP_USERFLD: - if (*aList[i] == GetCurField()->GetTyp()->GetName()) + case TYP_SETREFPAGEFLD: + { + if ( GetCurField() != NULL + && ( ( ( (SwRefPageSetField*) GetCurField() )->IsOn() && i ) + || ( !( (SwRefPageSetField*) GetCurField() )->IsOn() && !i ) ) ) { - bInsert = sal_True; - if (GetCurField()->GetSubType() & nsSwExtendedSubType::SUB_INVISIBLE) - aInvisibleCB.Check(); - } - break; - - case TYP_SETREFPAGEFLD: - if ((((SwRefPageSetField*)GetCurField())->IsOn() && i) || - (!((SwRefPageSetField*)GetCurField())->IsOn() && !i)) sOldSel = *aList[i]; + } // Alle Eintr?ge zur Auswahl zulassen: - nPos = aSelectionLB.InsertEntry(*aList[i]); - aSelectionLB.SetEntryData(nPos, reinterpret_cast<void*>(i)); - break; + const sal_uInt16 nPos = aSelectionLB.InsertEntry( *aList[i] ); + aSelectionLB.SetEntryData( nPos, reinterpret_cast< void* >( i ) ); + } + break; - default: - if (*aList[i] == GetCurField()->GetPar1()) - bInsert = sal_True; - break; + default: + if ( GetCurField() != NULL && *aList[i] == GetCurField()->GetPar1() ) + bInsert = sal_True; + break; } - if (bInsert) + + if ( bInsert ) { - nPos = aSelectionLB.InsertEntry(*aList[i]); - aSelectionLB.SetEntryData(nPos, reinterpret_cast<void*>(i)); - if (nTypeId != TYP_FORMELFLD) + const sal_uInt16 nPos = aSelectionLB.InsertEntry( *aList[i] ); + aSelectionLB.SetEntryData( nPos, reinterpret_cast< void* >( i ) ); + if ( nTypeId != TYP_FORMELFLD ) break; } } } } - sal_Bool bEnable = aSelectionLB.GetEntryCount() != 0; + const sal_Bool bEnable = aSelectionLB.GetEntryCount() != 0; ListBox *pLB = 0; - if (bEnable) + if ( bEnable ) { - aSelectionLB.SelectEntry(sOldSel); - if (!aSelectionLB.GetSelectEntryCount()) + aSelectionLB.SelectEntry( sOldSel ); + if ( !aSelectionLB.GetSelectEntryCount() ) { - aSelectionLB.SelectEntryPos(0); + aSelectionLB.SelectEntryPos( 0 ); pLB = &aSelectionLB; // Alle Controls neu initialisieren } } @@ -717,8 +714,8 @@ void SwFldVarPage::UpdateSubType() aSelectionLB.Enable( bEnable ); aSelectionFT.Enable( bEnable ); - SubTypeHdl(pLB); - aSelectionLB.SetUpdateMode(sal_True); + SubTypeHdl( pLB ); + aSelectionLB.SetUpdateMode( sal_True ); } /*-------------------------------------------------------------------- @@ -727,126 +724,131 @@ void SwFldVarPage::UpdateSubType() sal_uInt16 SwFldVarPage::FillFormatLB(sal_uInt16 nTypeId) { - String sOldSel, sOldNumSel; - sal_uLong nOldNumFormat = 0; - - sal_uInt16 nFormatSel = aFormatLB.GetSelectEntryPos(); - if (nFormatSel != LISTBOX_ENTRY_NOTFOUND) - sOldSel = aFormatLB.GetEntry(nFormatSel); + String sOldSel; + const sal_uInt16 nFormatSel = aFormatLB.GetSelectEntryPos(); + if ( nFormatSel != LISTBOX_ENTRY_NOTFOUND ) + sOldSel = aFormatLB.GetEntry( nFormatSel ); + String sOldNumSel; + sal_uLong nOldNumFormat = 0; sal_uInt16 nNumFormatSel = aNumFormatLB.GetSelectEntryPos(); - if (nNumFormatSel != LISTBOX_ENTRY_NOTFOUND) + if ( nNumFormatSel != LISTBOX_ENTRY_NOTFOUND ) { - sOldNumSel = aNumFormatLB.GetEntry(nNumFormatSel); + sOldNumSel = aNumFormatLB.GetEntry( nNumFormatSel ); nOldNumFormat = aNumFormatLB.GetFormat(); } // Format-Listbox fuellen aFormatLB.Clear(); aNumFormatLB.Clear(); - sal_Bool bSpecialFmt = sal_False; + bool bSpecialFmt = false; - if( TYP_GETREFPAGEFLD != nTypeId ) + if ( TYP_GETREFPAGEFLD != nTypeId ) { - if (IsFldEdit()) + if ( GetCurField() != NULL && IsFldEdit() ) { bSpecialFmt = GetCurField()->GetFormat() == SAL_MAX_UINT32; - if (!bSpecialFmt) + if ( !bSpecialFmt ) { - aNumFormatLB.SetDefFormat(GetCurField()->GetFormat()); + aNumFormatLB.SetDefFormat( GetCurField()->GetFormat() ); sOldNumSel = aEmptyStr; } - else - if (nTypeId == TYP_GETFLD || nTypeId == TYP_FORMELFLD) - aNumFormatLB.SetFormatType(NUMBERFORMAT_NUMBER); + else if ( nTypeId == TYP_GETFLD || nTypeId == TYP_FORMELFLD ) + { + aNumFormatLB.SetFormatType( NUMBERFORMAT_NUMBER ); + } } else { - if (nOldNumFormat && nOldNumFormat != ULONG_MAX) - aNumFormatLB.SetDefFormat(nOldNumFormat); + if ( nOldNumFormat && nOldNumFormat != ULONG_MAX ) + aNumFormatLB.SetDefFormat( nOldNumFormat ); else - aNumFormatLB.SetFormatType(NUMBERFORMAT_NUMBER); + aNumFormatLB.SetFormatType( NUMBERFORMAT_NUMBER ); } } - switch (nTypeId) + switch ( nTypeId ) { case TYP_USERFLD: { - if (!IsFldEdit() || bSpecialFmt) + if ( !IsFldEdit() || bSpecialFmt ) { - sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_MARK_TEXT), 0); - aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); - nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_USERVAR_CMD), 1); - aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); + sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_MARK_TEXT ), 0 ); + aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX ); + nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_USERVAR_CMD ), 1 ); + aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX ); } } break; case TYP_SETFLD: { - if (!IsFldEdit() || bSpecialFmt) + if ( !IsFldEdit() || bSpecialFmt ) { - sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_SETVAR_TEXT), 0); - aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); + sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_SETVAR_TEXT ), 0 ); + aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX ); } } break; case TYP_FORMELFLD: { - sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_GETVAR_NAME), 0); - aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); + sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_GETVAR_NAME ), 0 ); + aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX ); } break; case TYP_GETFLD: { - sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_GETVAR_NAME), 0); - aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); + sal_uInt16 nPos = aNumFormatLB.InsertEntry( SW_RESSTR( FMT_GETVAR_NAME ), 0 ); + aNumFormatLB.SetEntryData( nPos, (void *) ULONG_MAX ); } break; } - if (IsFldEdit() && bSpecialFmt) + if ( IsFldEdit() && bSpecialFmt ) { - if (nTypeId == TYP_USERFLD && (GetCurField()->GetSubType() & nsSwExtendedSubType::SUB_CMD)) - aNumFormatLB.SelectEntryPos(1); + if ( nTypeId == TYP_USERFLD && ( GetCurField()->GetSubType() & nsSwExtendedSubType::SUB_CMD ) ) + aNumFormatLB.SelectEntryPos( 1 ); else - aNumFormatLB.SelectEntryPos(0); + aNumFormatLB.SelectEntryPos( 0 ); } else { - if (!nOldNumFormat && (nNumFormatSel = aNumFormatLB.GetEntryPos(sOldNumSel)) != LISTBOX_ENTRY_NOTFOUND) - aNumFormatLB.SelectEntryPos(nNumFormatSel); - else if (nOldNumFormat && nOldNumFormat == ULONG_MAX) - aNumFormatLB.SelectEntry(sOldSel); + if ( !nOldNumFormat && ( nNumFormatSel = aNumFormatLB.GetEntryPos( sOldNumSel ) ) != LISTBOX_ENTRY_NOTFOUND ) + aNumFormatLB.SelectEntryPos( nNumFormatSel ); + else if ( nOldNumFormat && nOldNumFormat == ULONG_MAX ) + aNumFormatLB.SelectEntry( sOldSel ); } - sal_uInt16 nSize = GetFldMgr().GetFormatCount(nTypeId, sal_False, IsFldDlgHtmlMode()); + const sal_uInt16 nSize = GetFldMgr().GetFormatCount(nTypeId, sal_False, IsFldDlgHtmlMode()); - for (sal_uInt16 i = 0; i < nSize; i++) + for ( sal_uInt16 i = 0; i < nSize; i++ ) { - sal_uInt16 nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i)); - sal_uInt16 nFldId = GetFldMgr().GetFormatId( nTypeId, i ); - aFormatLB.SetEntryData( nPos, reinterpret_cast<void*>(nFldId) ); - if (IsFldEdit() && nFldId == GetCurField()->GetFormat()) + const sal_uInt16 nPos = aFormatLB.InsertEntry( GetFldMgr().GetFormatStr( nTypeId, i ) ); + const sal_uInt16 nFldId = GetFldMgr().GetFormatId( nTypeId, i ); + aFormatLB.SetEntryData( nPos, reinterpret_cast< void* >( nFldId ) ); + if ( IsFldEdit() + && GetCurField() != NULL + && nFldId == GetCurField()->GetFormat() ) + { aFormatLB.SelectEntryPos( nPos ); + } } - if (nSize && (!IsFldEdit() || !aFormatLB.GetSelectEntryCount())) + if ( nSize && ( !IsFldEdit() || !aFormatLB.GetSelectEntryCount() ) ) { - aFormatLB.SelectEntry(sOldSel); + aFormatLB.SelectEntry( sOldSel ); - if (!aFormatLB.GetSelectEntryCount()) + if ( !aFormatLB.GetSelectEntryCount() ) { - aFormatLB.SelectEntry(SW_RESSTR(FMT_NUM_PAGEDESC)); - if (!aFormatLB.GetSelectEntryCount()) + aFormatLB.SelectEntry( SW_RESSTR( FMT_NUM_PAGEDESC ) ); + if ( !aFormatLB.GetSelectEntryCount() ) { - aFormatLB.SelectEntry(SW_RESSTR(FMT_NUM_ARABIC)); - if (!aFormatLB.GetSelectEntryCount()) - aFormatLB.SelectEntryPos(0); + aFormatLB.SelectEntry( SW_RESSTR( FMT_NUM_ARABIC ) ); + if ( !aFormatLB.GetSelectEntryCount() ) + aFormatLB.SelectEntryPos( 0 ); } } } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
