| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sw.hxx" |
| |
| #ifdef SW_DLLIMPLEMENTATION |
| #undef SW_DLLIMPLEMENTATION |
| #endif |
| |
| #include <vcl/msgbox.hxx> |
| #include <unotools/charclass.hxx> |
| #include <editeng/unolingu.hxx> |
| #include <wrtsh.hxx> |
| #include <fldbas.hxx> |
| #include <expfld.hxx> |
| #include <usrfld.hxx> |
| #include <inpdlg.hxx> |
| #include <fldmgr.hxx> |
| |
| #include <fldui.hrc> |
| #include <inpdlg.hrc> |
| |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Feldeinfuegen bearbeiten |
| --------------------------------------------------------------------*/ |
| |
| SwFldInputDlg::SwFldInputDlg( Window *pParent, SwWrtShell &rS, |
| SwField* pField, sal_Bool bNextButton ) : |
| |
| SvxStandardDialog(pParent, SW_RES(DLG_FLD_INPUT)), |
| |
| rSh( rS ), |
| pInpFld(0), |
| pSetFld(0), |
| pUsrType(0), |
| |
| aLabelED (this, SW_RES(ED_LABEL )), |
| aEditED (this, SW_RES(ED_EDIT )), |
| aEditFL (this, SW_RES(FL_EDIT )), |
| |
| aOKBT (this, SW_RES(BT_OK )), |
| aCancelBT (this, SW_RES(BT_CANCEL )), |
| aNextBT (this, SW_RES(PB_NEXT )), |
| aHelpBT (this, SW_RES(PB_HELP )) |
| { |
| // Font fuers Edit umschalten |
| Font aFont(aEditED.GetFont()); |
| aFont.SetWeight(WEIGHT_LIGHT); |
| aEditED.SetFont(aFont); |
| |
| if( bNextButton ) |
| { |
| aNextBT.Show(); |
| aNextBT.SetClickHdl(LINK(this, SwFldInputDlg, NextHdl)); |
| } |
| else |
| { |
| long nDiff = aCancelBT.GetPosPixel().Y() - aOKBT.GetPosPixel().Y(); |
| Point aPos = aHelpBT.GetPosPixel(); |
| aPos.Y() -= nDiff; |
| aHelpBT.SetPosPixel(aPos); |
| } |
| |
| // Auswertung hier |
| String aStr; |
| if( RES_INPUTFLD == pField->GetTyp()->Which() ) |
| { // Es ist eine Eingabefeld |
| // |
| pInpFld = (SwInputField*)pField; |
| aLabelED.SetText( pInpFld->GetPar2() ); |
| sal_uInt16 nSubType = pInpFld->GetSubType(); |
| |
| switch(nSubType & 0xff) |
| { |
| case INP_TXT: |
| aStr = pInpFld->GetPar1(); |
| break; |
| |
| case INP_USR: |
| // Benutzerfeld |
| if( 0 != ( pUsrType = (SwUserFieldType*)rSh.GetFldType( |
| RES_USERFLD, pInpFld->GetPar1() ) ) ) |
| aStr = pUsrType->GetContent(); |
| break; |
| } |
| } |
| else |
| { |
| // es ist eine SetExpression |
| pSetFld = (SwSetExpField*)pField; |
| String sFormula(pSetFld->GetFormula()); |
| //values are formatted - formulas are not |
| CharClass aCC( SvxCreateLocale( pSetFld->GetLanguage() )); |
| if( aCC.isNumeric( sFormula )) |
| { |
| aStr = pSetFld->ExpandField(true); |
| } |
| else |
| aStr = sFormula; |
| aLabelED.SetText( pSetFld->GetPromptText() ); |
| } |
| |
| // JP 31.3.00: Inputfields in readonly regions must be allowed to |
| // input any content. - 74639 |
| sal_Bool bEnable = !rSh.IsCrsrReadonly(); |
| /*!rSh.IsReadOnlyAvailable() || !rSh.HasReadonlySel()*/; |
| aOKBT.Enable( bEnable ); |
| aEditED.SetReadOnly( !bEnable ); |
| |
| if( aStr.Len() ) |
| aEditED.SetText( aStr.ConvertLineEnd() ); |
| FreeResource(); |
| } |
| |
| SwFldInputDlg::~SwFldInputDlg() |
| { |
| } |
| |
| void SwFldInputDlg::StateChanged( StateChangedType nType ) |
| { |
| if ( nType == STATE_CHANGE_INITSHOW ) |
| aEditED.GrabFocus(); |
| SvxStandardDialog::StateChanged( nType ); |
| } |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Schliessen |
| --------------------------------------------------------------------*/ |
| |
| void SwFldInputDlg::Apply() |
| { |
| String aTmp( aEditED.GetText() ); |
| aTmp.EraseAllChars( '\r' ); |
| |
| rSh.StartAllAction(); |
| sal_Bool bModified = sal_False; |
| if(pInpFld) |
| { |
| if(pUsrType) |
| { |
| if( aTmp != pUsrType->GetContent() ) |
| { |
| pUsrType->SetContent(aTmp); |
| pUsrType->UpdateFlds(); |
| bModified = sal_True; |
| } |
| } |
| else if( aTmp != pInpFld->GetPar1() ) |
| { |
| pInpFld->SetPar1(aTmp); |
| rSh.SwEditShell::UpdateFlds(*pInpFld); |
| bModified = sal_True; |
| } |
| } |
| else if( aTmp != pSetFld->GetPar2() ) |
| { |
| pSetFld->SetPar2(aTmp); |
| rSh.SwEditShell::UpdateFlds(*pSetFld); |
| bModified = sal_True; |
| } |
| |
| if( bModified ) |
| rSh.SetUndoNoResetModified(); |
| |
| rSh.EndAllAction(); |
| } |
| |
| |
| IMPL_LINK(SwFldInputDlg, NextHdl, PushButton*, EMPTYARG) |
| { |
| EndDialog(RET_OK); |
| return 0; |
| } |
| |
| |