summaryrefslogtreecommitdiff
path: root/sw/source/ui/fldui/fldfunc.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/fldui/fldfunc.cxx')
-rw-r--r--sw/source/ui/fldui/fldfunc.cxx744
1 files changed, 744 insertions, 0 deletions
diff --git a/sw/source/ui/fldui/fldfunc.cxx b/sw/source/ui/fldui/fldfunc.cxx
new file mode 100644
index 000000000000..ae05a35681a7
--- /dev/null
+++ b/sw/source/ui/fldui/fldfunc.cxx
@@ -0,0 +1,744 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_sw.hxx"
+#ifdef SW_DLLIMPLEMENTATION
+#undef SW_DLLIMPLEMENTATION
+#endif
+
+
+#include <sfx2/app.hxx>
+#include <basic/basmgr.hxx>
+#include <basic/sbmod.hxx>
+#include <docsh.hxx>
+#include <swtypes.hxx>
+#ifndef _GLOBALS_HRC
+#include <globals.hrc>
+#endif
+#include <fldbas.hxx>
+#include <docufld.hxx>
+#ifndef _VIEW_HXX
+#include <view.hxx>
+#endif
+#include <wrtsh.hxx>
+#include <swmodule.hxx>
+#ifndef _FLDFUNC_HXX
+#include <fldfunc.hxx>
+#endif
+#include <flddropdown.hxx>
+#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
+
+using namespace ::com::sun::star;
+
+using rtl::OUString;
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldFuncPage::SwFldFuncPage(Window* pParent, const SfxItemSet& rCoreSet ) :
+ SwFldPage( pParent, SW_RES( TP_FLD_FUNC ), rCoreSet ),
+
+ aTypeFT (this, SW_RES(FT_FUNCTYPE)),
+ aTypeLB (this, SW_RES(LB_FUNCTYPE)),
+ aSelectionFT(this, SW_RES(FT_FUNCSELECTION)),
+ aSelectionLB(this, SW_RES(LB_FUNCSELECTION)),
+ aFormatFT (this, SW_RES(FT_FUNCFORMAT)),
+ aFormatLB (this, SW_RES(LB_FUNCFORMAT)),
+ aNameFT (this, SW_RES(FT_FUNCNAME)),
+ aNameED (this, SW_RES(ED_FUNCNAME)),
+ aValueFT (this, SW_RES(FT_FUNCVALUE)),
+ aValueED (this, SW_RES(ED_FUNCVALUE)),
+ aCond1FT (this, SW_RES(FT_FUNCCOND1)),
+ aCond1ED (this, SW_RES(ED_FUNCCOND1)),
+ aCond2FT (this, SW_RES(FT_FUNCCOND2)),
+ aCond2ED (this, SW_RES(ED_FUNCCOND2)),
+ aMacroBT (this, SW_RES(BT_FUNCMACRO)),
+ aListItemFT( this, SW_RES( FT_LISTITEM )),
+ aListItemED( this, SW_RES( ED_LISTITEM )),
+ aListAddPB( this, SW_RES( PB_LISTADD )),
+ aListItemsFT( this, SW_RES( FT_LISTITEMS )),
+ aListItemsLB( this, SW_RES( LB_LISTITEMS )),
+ aListRemovePB( this, SW_RES( PB_LISTREMOVE )),
+ aListUpPB( this, SW_RES( PB_LISTUP )),
+ aListDownPB( this, SW_RES( PB_LISTDOWN )),
+ aListNameFT( this, SW_RES( FT_LISTNAME )),
+ aListNameED( this, SW_RES( ED_LISTNAME )),
+ bDropDownLBChanged(false)
+{
+ FreeResource();
+
+ aNameED.SetPosPixel(Point(aNameED.GetPosPixel().X(), aFormatLB.GetPosPixel().Y()));
+
+ aNameED.SetModifyHdl(LINK(this, SwFldFuncPage, ModifyHdl));
+
+ sOldValueFT = aValueFT.GetText();
+ sOldNameFT = aNameFT.GetText();
+
+ aCond1ED.ShowBrackets(FALSE);
+ aCond2ED.ShowBrackets(FALSE);
+
+// SwWrtShell* pSh = (SwWrtShell*)ViewShell::GetCurrShell();
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SwFldFuncPage::~SwFldFuncPage()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+void SwFldFuncPage::Reset(const SfxItemSet& )
+{
+ SavePos(&aTypeLB);
+ Init(); // Allgemeine initialisierung
+
+ aTypeLB.SetUpdateMode(FALSE);
+ aTypeLB.Clear();
+
+ USHORT nPos, nTypeId;
+
+ if (!IsFldEdit())
+ {
+ // TypeListBox initialisieren
+ const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
+
+ // Typ-Listbox fuellen
+ for(short i = rRg.nStart; i < rRg.nEnd; ++i)
+ {
+ nTypeId = GetFldMgr().GetTypeId(i);
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i));
+ aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId));
+ }
+ }
+ else
+ {
+ nTypeId = GetCurField()->GetTypeId();
+ nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId)));
+ aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId));
+
+ if (nTypeId == TYP_MACROFLD)
+ {
+ String sName(GetCurField()->GetPar1());
+ GetFldMgr().SetMacroPath(sName);
+ }
+ }
+
+ // alte Pos selektieren
+ RestorePos(&aTypeLB);
+
+ aTypeLB.SetDoubleClickHdl (LINK(this, SwFldFuncPage, InsertHdl));
+ aTypeLB.SetSelectHdl (LINK(this, SwFldFuncPage, TypeHdl));
+ aSelectionLB.SetSelectHdl (LINK(this, SwFldFuncPage, SelectHdl));
+ aSelectionLB.SetDoubleClickHdl (LINK(this, SwFldFuncPage, InsertMacroHdl));
+ aFormatLB.SetDoubleClickHdl (LINK(this, SwFldFuncPage, InsertHdl));
+ aMacroBT.SetClickHdl (LINK(this, SwFldFuncPage, MacroHdl));
+ Link aListModifyLk( LINK(this, SwFldFuncPage, ListModifyHdl));
+ aListAddPB.SetClickHdl(aListModifyLk);
+ aListRemovePB.SetClickHdl(aListModifyLk);
+ aListUpPB.SetClickHdl(aListModifyLk);
+ aListDownPB.SetClickHdl(aListModifyLk);
+ aListItemED.SetReturnActionLink(aListModifyLk);
+ Link aListEnableLk = LINK(this, SwFldFuncPage, ListEnableHdl);
+ aListItemED.SetModifyHdl(aListEnableLk);
+ aListItemsLB.SetSelectHdl(aListEnableLk);
+
+ if( !IsRefresh() )
+ {
+ String sUserData = GetUserData();
+ if(sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
+ {
+ String sVal = sUserData.GetToken(1, ';');
+ USHORT nVal = static_cast< USHORT >(sVal.ToInt32());
+ if(nVal != USHRT_MAX)
+ {
+ for(USHORT i = 0; i < aTypeLB.GetEntryCount(); i++)
+ if(nVal == (USHORT)(ULONG)aTypeLB.GetEntryData(i))
+ {
+ aTypeLB.SelectEntryPos(i);
+ break;
+ }
+ }
+ }
+ }
+ TypeHdl(0);
+
+ aTypeLB.SetUpdateMode(TRUE);
+
+ if (IsFldEdit())
+ {
+ aNameED.SaveValue();
+ aValueED.SaveValue();
+ aCond1ED.SaveValue();
+ aCond2ED.SaveValue();
+ nOldFormat = GetCurField()->GetFormat();
+ }
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldFuncPage, TypeHdl, ListBox *, EMPTYARG )
+{
+ // Alte ListBoxPos sichern
+ const USHORT nOld = GetTypeSel();
+
+ // Aktuelle ListBoxPos
+ SetTypeSel(aTypeLB.GetSelectEntryPos());
+
+ if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
+ {
+ SetTypeSel(0);
+ aTypeLB.SelectEntryPos(0);
+ }
+
+ if (nOld != GetTypeSel())
+ {
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ // Auswahl-Listbox fuellen
+ UpdateSubType();
+
+ // Format-Listbox fuellen
+ aFormatLB.Clear();
+
+ USHORT nSize = GetFldMgr().GetFormatCount(nTypeId, FALSE, IsFldDlgHtmlMode());
+
+ for (USHORT i = 0; i < nSize; i++)
+ {
+ USHORT nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i));
+ aFormatLB.SetEntryData( nPos, reinterpret_cast<void*>(GetFldMgr().GetFormatId( nTypeId, i )) );
+ }
+
+ if (nSize)
+ {
+ if (IsFldEdit() && nTypeId == TYP_JUMPEDITFLD)
+ aFormatLB.SelectEntry(SW_RESSTR(FMT_MARK_BEGIN + (USHORT)GetCurField()->GetFormat()));
+
+ if (!aFormatLB.GetSelectEntryCount())
+ aFormatLB.SelectEntryPos(0);
+ }
+
+ BOOL bValue = FALSE, bName = FALSE, bMacro = FALSE, bInsert = TRUE;
+ BOOL bShowSelection = FALSE;
+ BOOL bFormat = nSize != 0;
+
+ // fuer Conditional Text zwei Controls
+ BOOL bDropDown = TYP_DROPDOWN == nTypeId;
+ BOOL bCondTxtFld = TYP_CONDTXTFLD == nTypeId;
+
+ aCond1FT.Show(!bDropDown && bCondTxtFld);
+ aCond1ED.Show(!bDropDown && bCondTxtFld);
+ aCond2FT.Show(!bDropDown && bCondTxtFld);
+ aCond2ED.Show(!bDropDown && bCondTxtFld);
+ aValueFT.Show(!bDropDown && !bCondTxtFld);
+ aValueED.Show(!bDropDown && !bCondTxtFld);
+ aMacroBT.Show(!bDropDown);
+ aNameED.Show(!bDropDown);
+ aNameFT.Show(!bDropDown);
+
+ aListItemFT.Show(bDropDown);
+ aListItemED.Show(bDropDown);
+ aListAddPB.Show(bDropDown);
+ aListItemsFT.Show(bDropDown);
+ aListItemsLB.Show(bDropDown);
+ aListRemovePB.Show(bDropDown);
+ aListUpPB.Show(bDropDown);
+ aListDownPB.Show(bDropDown);
+ aListNameFT.Show(bDropDown);
+ aListNameED.Show(bDropDown);
+
+ aNameED.SetDropEnable(FALSE);
+
+ if (IsFldEdit())
+ {
+ if(bDropDown)
+ {
+ const SwDropDownField* pDrop = (const SwDropDownField*)GetCurField();
+ uno::Sequence<OUString> aItems = pDrop->GetItemSequence();
+ const OUString* pArray = aItems.getConstArray();
+ aListItemsLB.Clear();
+ for(sal_Int32 i = 0; i < aItems.getLength(); i++)
+ aListItemsLB.InsertEntry(pArray[i]);
+ aListItemsLB.SelectEntry(pDrop->GetSelectedItem());
+ aListNameED.SetText(pDrop->GetPar2());
+ aListNameED.SaveValue();
+ bDropDownLBChanged = false;
+ }
+ else
+ {
+ aNameED.SetText(GetCurField()->GetPar1());
+ aValueED.SetText(GetCurField()->GetPar2());
+ }
+ }
+ else
+ {
+ aNameED.SetText(aEmptyStr);
+ aValueED.SetText(aEmptyStr);
+ }
+ if(bDropDown)
+ ListEnableHdl(0);
+
+ if( aNameFT.GetText() != sOldNameFT )
+ aNameFT.SetText(sOldNameFT);
+ if (aValueFT.GetText() != sOldValueFT)
+ aValueFT.SetText(sOldValueFT);
+
+ switch (nTypeId)
+ {
+ case TYP_MACROFLD:
+ bMacro = TRUE;
+ if (GetFldMgr().GetMacroPath().Len())
+ bValue = TRUE;
+ else
+ bInsert = FALSE;
+
+ aNameFT.SetText(SW_RESSTR(STR_MACNAME));
+ aValueFT.SetText(SW_RESSTR(STR_PROMPT));
+ aNameED.SetText(GetFldMgr().GetMacroName());
+ break;
+
+ case TYP_HIDDENPARAFLD:
+ aNameFT.SetText(SW_RESSTR(STR_COND));
+ aNameED.SetDropEnable(TRUE);
+ bName = TRUE;
+ break;
+
+ case TYP_HIDDENTXTFLD:
+ {
+ aNameFT.SetText(SW_RESSTR(STR_COND));
+ aNameED.SetDropEnable(TRUE);
+ aValueFT.SetText(SW_RESSTR(STR_INSTEXT));
+ SwWrtShell* pSh = GetActiveWrtShell();
+ if (!IsFldEdit() && pSh )
+ aValueED.SetText(pSh->GetSelTxt());
+ bName = bValue = TRUE;
+ }
+ break;
+
+ case TYP_CONDTXTFLD:
+ aNameFT.SetText(SW_RESSTR(STR_COND));
+ aNameED.SetDropEnable(TRUE);
+ if (IsFldEdit())
+ {
+ aCond1ED.SetText(GetCurField()->GetPar2().GetToken(0, '|'));
+ aCond2ED.SetText(GetCurField()->GetPar2().GetToken(1, '|'));
+ }
+
+ bName = bValue = TRUE;
+ break;
+
+ case TYP_JUMPEDITFLD:
+ aNameFT.SetText(SW_RESSTR(STR_JUMPEDITFLD));
+ aValueFT.SetText(SW_RESSTR(STR_PROMPT));
+ bName = bValue = TRUE;
+ break;
+
+ case TYP_INPUTFLD:
+ aValueFT.SetText(SW_RESSTR(STR_PROMPT));
+ bValue = TRUE;
+ // bShowSelection = TRUE;
+ break;
+
+ case TYP_COMBINED_CHARS:
+ {
+ aNameFT.SetText(SW_RESSTR(STR_COMBCHRS_FT));
+ aNameED.SetDropEnable(TRUE);
+ bName = TRUE;
+
+ const USHORT nLen = aNameED.GetText().Len();
+ if( !nLen || nLen > MAX_COMBINED_CHARACTERS )
+ bInsert = FALSE;
+ }
+ break;
+ case TYP_DROPDOWN :
+ break;
+ default:
+ break;
+ }
+
+ if (bShowSelection)
+ {
+ aSelectionLB.Show();
+ aSelectionFT.Show();
+ aFormatLB.Hide();
+ aFormatFT.Hide();
+ }
+ else
+ {
+ aFormatLB.Show();
+ aFormatFT.Show();
+ aSelectionLB.Hide();
+ aSelectionFT.Hide();
+ }
+
+ aFormatLB.Enable(bFormat);
+ aFormatFT.Enable(bFormat);
+ aNameFT.Enable(bName);
+ aNameED.Enable(bName);
+ aValueFT.Enable(bValue);
+ aValueED.Enable(bValue);
+ aMacroBT.Enable(bMacro);
+
+ EnableInsert( bInsert );
+ }
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldFuncPage, SelectHdl, ListBox *, EMPTYARG )
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ if( TYP_MACROFLD == nTypeId )
+ aNameED.SetText( aSelectionLB.GetSelectEntry() );
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldFuncPage, InsertMacroHdl, ListBox *, EMPTYARG )
+{
+ SelectHdl();
+ InsertHdl();
+
+ return 0;
+}
+/* -----------------16.06.2003 16:24-----------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwFldFuncPage, ListModifyHdl, Control*, pControl)
+{
+ aListItemsLB.SetUpdateMode(FALSE);
+ if(pControl == &aListAddPB ||
+ (pControl == &aListItemED && aListAddPB.IsEnabled()))
+ {
+ String sEntry(aListItemED.GetText());
+ aListItemsLB.InsertEntry(sEntry);
+ aListItemsLB.SelectEntry(sEntry);
+ }
+ else if(aListItemsLB.GetSelectEntryCount())
+ {
+ USHORT nSelPos = aListItemsLB.GetSelectEntryPos();
+ if(pControl == &aListRemovePB)
+ {
+ aListItemsLB.RemoveEntry(nSelPos);
+ aListItemsLB.SelectEntryPos(nSelPos ? nSelPos - 1 : 0);
+ }
+ else if(pControl == &aListUpPB)
+ {
+ if(nSelPos)
+ {
+ String sEntry = aListItemsLB.GetSelectEntry();
+ aListItemsLB.RemoveEntry(nSelPos);
+ nSelPos--;
+ aListItemsLB.InsertEntry(sEntry, nSelPos);
+ aListItemsLB.SelectEntryPos(nSelPos);
+ }
+ }
+ else if(pControl == &aListDownPB)
+ {
+ if(nSelPos < aListItemsLB.GetEntryCount() - 1)
+ {
+ String sEntry = aListItemsLB.GetSelectEntry();
+ aListItemsLB.RemoveEntry(nSelPos);
+ nSelPos++;
+ aListItemsLB.InsertEntry(sEntry, nSelPos);
+ aListItemsLB.SelectEntryPos(nSelPos);
+ }
+ }
+ }
+ bDropDownLBChanged = true;
+ aListItemsLB.SetUpdateMode(TRUE);
+ ListEnableHdl(0);
+ return 0;
+}
+/* -----------------17.06.2003 08:36-----------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwFldFuncPage, ListEnableHdl, void*, EMPTYARG)
+{
+ //enable "Add" button when text is in the Edit that's not already member of the box
+ aListAddPB.Enable(aListItemED.GetText().Len() &&
+ LISTBOX_ENTRY_NOTFOUND == aListItemsLB.GetEntryPos(aListItemED.GetText()));
+ BOOL bEnableButtons = aListItemsLB.GetSelectEntryCount() > 0;
+ aListRemovePB.Enable(bEnableButtons);
+ aListUpPB.Enable(bEnableButtons && (aListItemsLB.GetSelectEntryPos() > 0));
+ aListDownPB.Enable(bEnableButtons &&
+ (aListItemsLB.GetSelectEntryPos() < (aListItemsLB.GetEntryCount() - 1)));
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Typen in der SelectionBox erneuern
+ --------------------------------------------------------------------*/
+
+
+void SwFldFuncPage::UpdateSubType()
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ // Auswahl-Listbox fuellen
+ aSelectionLB.SetUpdateMode(FALSE);
+ aSelectionLB.Clear();
+
+ SvStringsDtor aLst;
+ GetFldMgr().GetSubTypes(nTypeId, aLst);
+ USHORT nCount = aLst.Count();
+
+ for (USHORT i = 0; i < nCount; ++i)
+ {
+ USHORT nPos = aSelectionLB.InsertEntry(*aLst[i]);
+ aSelectionLB.SetEntryData(nPos, reinterpret_cast<void*>(i));
+ }
+
+ BOOL bEnable = nCount != 0;
+
+ aSelectionLB.Enable( bEnable );
+ aSelectionFT.Enable( bEnable );
+
+ if (bEnable)
+ {
+ aSelectionLB.SelectEntryPos(0);
+ }
+
+ if (nTypeId == TYP_MACROFLD)
+ {
+ BOOL bHasMacro = GetFldMgr().GetMacroPath().Len() != 0;
+
+ if (bHasMacro)
+ {
+ aNameED.SetText(GetFldMgr().GetMacroName());
+ aValueFT.Enable();
+ aValueED.Enable();
+ }
+ EnableInsert(bHasMacro);
+ }
+
+ aSelectionLB.SetUpdateMode(TRUE);
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: MacroBrowser aufrufen, Listbox mit Macros fuellen
+ --------------------------------------------------------------------*/
+
+IMPL_LINK( SwFldFuncPage, MacroHdl, Button *, pBtn )
+{
+ Window* pDefModalDlgParent = Application::GetDefDialogParent();
+ Application::SetDefDialogParent( pBtn );
+
+ String sMacro(TurnMacroString(aNameED.GetText()));
+ while (sMacro.SearchAndReplace('.', ';') != STRING_NOTFOUND) ;
+
+ if (GetFldMgr().ChooseMacro(sMacro))
+ UpdateSubType();
+
+ Application::SetDefDialogParent( pDefModalDlgParent );
+
+ return 0;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+BOOL SwFldFuncPage::FillItemSet(SfxItemSet& )
+{
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ USHORT nSubType = 0;
+
+ ULONG nFormat = aFormatLB.GetSelectEntryPos();
+
+ if(nFormat == LISTBOX_ENTRY_NOTFOUND)
+ nFormat = 0;
+ else
+ nFormat = (ULONG)aFormatLB.GetEntryData((USHORT)nFormat);
+
+ String aVal(aValueED.GetText());
+ String aName(aNameED.GetText());
+
+ switch(nTypeId)
+ {
+ case TYP_INPUTFLD:
+ nSubType = INP_TXT;
+ // to prevent removal of CR/LF restore old content
+ if(!aNameED.IsModified() && IsFldEdit())
+ aName = GetCurField()->GetPar1();
+
+ break;
+
+ case TYP_MACROFLD:
+ // use the full script URL, not the name in the Edit control
+ aName = GetFldMgr().GetMacroPath();
+ break;
+
+ case TYP_CONDTXTFLD:
+ aVal = aCond1ED.GetText();
+ aVal += '|';
+ aVal += aCond2ED.GetText();
+ break;
+ case TYP_DROPDOWN :
+ {
+ aName = aListNameED.GetText();
+ for(USHORT i = 0; i < aListItemsLB.GetEntryCount(); i++)
+ {
+ if(i)
+ aVal += DB_DELIM;
+ aVal += aListItemsLB.GetEntry(i);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (!IsFldEdit() ||
+ aNameED.GetSavedValue() != aNameED.GetText() ||
+ aValueED.GetSavedValue() != aValueED.GetText() ||
+ aCond1ED.GetSavedValue() != aCond1ED.GetText() ||
+ aCond2ED.GetSavedValue() != aCond2ED.GetText() ||
+ aListNameED.GetSavedValue() != aListNameED.GetText() ||
+ bDropDownLBChanged ||
+ nOldFormat != nFormat)
+ {
+ InsertFld( nTypeId, nSubType, aName, aVal, nFormat );
+ }
+
+ ModifyHdl(); // Insert ggf enablen/disablen
+
+ return FALSE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+String SwFldFuncPage::TurnMacroString(const String &rMacro)
+{
+ if (rMacro.Len())
+ {
+ // Inhalt von aName umdrehen
+ String sTmp, sBuf;
+ USHORT nPos = 0;
+
+ for (USHORT i = 0; i < 4 && nPos != STRING_NOTFOUND; i++)
+ {
+ if (i == 3)
+ sTmp = rMacro.Copy(nPos);
+ else
+ sTmp = rMacro.GetToken(0, '.', nPos);
+
+ if( sBuf.Len() )
+ sTmp += '.';
+ sBuf.Insert( sTmp, 0 );
+ }
+ return sBuf;
+ }
+
+ return rMacro;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+SfxTabPage* SwFldFuncPage::Create( Window* pParent,
+ const SfxItemSet& rAttrSet )
+{
+ return ( new SwFldFuncPage( pParent, rAttrSet ) );
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung:
+ --------------------------------------------------------------------*/
+
+USHORT SwFldFuncPage::GetGroup()
+{
+ return GRP_FKT;
+}
+
+/* -----------------12.01.99 10:09-------------------
+ *
+ * --------------------------------------------------*/
+void SwFldFuncPage::FillUserData()
+{
+ String sData( String::CreateFromAscii(
+ RTL_CONSTASCII_STRINGPARAM( USER_DATA_VERSION )));
+ sData += ';';
+ USHORT nTypeSel = aTypeLB.GetSelectEntryPos();
+ if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
+ nTypeSel = USHRT_MAX;
+ else
+ nTypeSel = sal::static_int_cast< USHORT >(reinterpret_cast< sal_uIntPtr >(aTypeLB.GetEntryData( nTypeSel )));
+ sData += String::CreateFromInt32( nTypeSel );
+ SetUserData(sData);
+}
+
+IMPL_LINK( SwFldFuncPage, ModifyHdl, Edit *, EMPTYARG )
+{
+ String aName(aNameED.GetText());
+ const USHORT nLen = aName.Len();
+
+ BOOL bEnable = TRUE;
+ USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
+
+ if( TYP_COMBINED_CHARS == nTypeId &&
+ (!nLen || nLen > MAX_COMBINED_CHARACTERS ))
+ bEnable = FALSE;
+
+ EnableInsert( bEnable );
+
+ return 0;
+}
+
+
+
+