diff options
Diffstat (limited to 'sc/source/ui/pagedlg/scuitphfedit.cxx')
-rw-r--r-- | sc/source/ui/pagedlg/scuitphfedit.cxx | 994 |
1 files changed, 0 insertions, 994 deletions
diff --git a/sc/source/ui/pagedlg/scuitphfedit.cxx b/sc/source/ui/pagedlg/scuitphfedit.cxx deleted file mode 100644 index 59ef7fedf..000000000 --- a/sc/source/ui/pagedlg/scuitphfedit.cxx +++ /dev/null @@ -1,994 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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_sc.hxx" - -#undef SC_DLLIMPLEMENTATION - - - -//------------------------------------------------------------------ - -#define _TPHFEDIT_CXX -#include "scitems.hxx" -#include <editeng/eeitem.hxx> - -#include <editeng/editobj.hxx> -#include <editeng/editstat.hxx> -#include <editeng/editview.hxx> -#include <editeng/flditem.hxx> -#include <sfx2/basedlgs.hxx> -#include <sfx2/objsh.hxx> -#include <vcl/msgbox.hxx> -#include <vcl/svapp.hxx> -#include <unotools/useroptions.hxx> -#define _SVSTDARR_USHORTS -#include <svl/svstdarr.hxx> - -#include "editutil.hxx" -#include "global.hxx" -#include "attrib.hxx" -#include "patattr.hxx" -#include "scresid.hxx" -#include "sc.hrc" -#include "globstr.hrc" -#include "tabvwsh.hxx" -#include "prevwsh.hxx" -#include "hfedtdlg.hrc" -#include "textdlgs.hxx" -#include "AccessibleEditObject.hxx" - -#include "scuitphfedit.hxx" -#include <memory> // header file for auto_ptr - -// STATIC DATA ----------------------------------------------------------- - -static sal_uInt16 pPageRightHeaderRanges[] = { SID_SCATTR_PAGE_HEADERRIGHT, - SID_SCATTR_PAGE_HEADERRIGHT, - 0 }; - -static sal_uInt16 pPageRightFooterRanges[] = { SID_SCATTR_PAGE_FOOTERRIGHT, - SID_SCATTR_PAGE_FOOTERRIGHT, - 0 }; - -static sal_uInt16 pPageLeftHeaderRanges[] = { SID_SCATTR_PAGE_HEADERLEFT, - SID_SCATTR_PAGE_HEADERLEFT, - 0 }; - -static sal_uInt16 pPageLeftFooterRanges[] = { SID_SCATTR_PAGE_FOOTERLEFT, - SID_SCATTR_PAGE_FOOTERLEFT, - 0 }; - - -static ScEditWindow* pActiveEdWnd = NULL; - - -//======================================================================== -// class ScHFEditPage -// - -ScHFEditPage::ScHFEditPage( Window* pParent, - sal_uInt16 nResId, - const SfxItemSet& rCoreAttrs, - sal_uInt16 nWhichId, - bool bHeader ) - - : SfxTabPage ( pParent, ScResId( nResId ), rCoreAttrs ), - - aFtLeft ( this, ScResId( FT_LEFT ) ), - aWndLeft ( this, ScResId( WND_LEFT ), Left ), - aFtCenter ( this, ScResId( FT_CENTER ) ), - aWndCenter ( this, ScResId( WND_CENTER ), Center ), - aFtRight ( this, ScResId( FT_RIGHT ) ), - aWndRight ( this, ScResId( WND_RIGHT ), Right ), - maFtDefinedHF ( this, ScResId( FT_HF_DEFINED ) ), - maLbDefined ( this, ScResId( LB_DEFINED ) ), - maFtCustomHF ( this, ScResId( FT_HF_CUSTOM ) ), - aBtnText ( this, ScResId( BTN_TEXT ) ), - aBtnFile ( this, ScResId( BTN_FILE ) ), - aBtnTable ( this, ScResId( BTN_TABLE ) ), - aBtnPage ( this, ScResId( BTN_PAGE ) ), - aBtnLastPage ( this, ScResId( BTN_PAGES ) ), - aBtnDate ( this, ScResId( BTN_DATE ) ), - aBtnTime ( this, ScResId( BTN_TIME ) ), - aFlInfo ( this, ScResId( FL_INFO ) ), - aFtInfo ( this, ScResId( FT_INFO ) ), - aPopUpFile ( ScResId( RID_POPUP_FCOMMAND) ), - nWhich ( nWhichId ) -{ - //! use default style from current document? - //! if font color is used, header/footer background color must be set - - ScPatternAttr aPatAttr( rCoreAttrs.GetPool() ); - - - aBtnFile.SetPopupMenu(&aPopUpFile); - - maLbDefined.SetSelectHdl( LINK( this, ScHFEditPage, ListHdl_Impl ) ); - aBtnFile.SetMenuHdl( LINK( this, ScHFEditPage, MenuHdl ) ); - aBtnText .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) ); - aBtnPage .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) ); - aBtnLastPage.SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) ); - aBtnDate .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) ); - aBtnTime .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) ); - aBtnFile .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) ); - aBtnTable .SetClickHdl( LINK( this, ScHFEditPage, ClickHdl ) ); - - if(!bHeader) - { - maFtDefinedHF.SetText(ScGlobal::GetRscString( STR_FOOTER )); - maFtCustomHF.SetText(ScGlobal::GetRscString( STR_HF_CUSTOM_FOOTER )); - } - if( Application::GetSettings().GetLayoutRTL() ) - { - Point pt1 = aWndLeft.GetPosPixel(); - Point pt2 = aWndRight.GetPosPixel(); - aWndLeft.SetPosPixel(pt2); - aWndRight.SetPosPixel(pt1); - - pt1 = aFtLeft.GetPosPixel(); - pt2 = aFtRight.GetPosPixel(); - aFtLeft.SetPosPixel(pt2); - aFtRight.SetPosPixel(pt1); - } - aWndLeft. SetFont( aPatAttr ); - aWndCenter. SetFont( aPatAttr ); - aWndRight. SetFont( aPatAttr ); - - FillCmdArr(); - - aWndLeft.GrabFocus(); - - InitPreDefinedList(); - - FreeResource(); -} - -// ----------------------------------------------------------------------- - -ScHFEditPage::~ScHFEditPage() -{ -} - -void ScHFEditPage::SetNumType(SvxNumType eNumType) -{ - aWndLeft.SetNumType(eNumType); - aWndCenter.SetNumType(eNumType); - aWndRight.SetNumType(eNumType); -} - -// ----------------------------------------------------------------------- - -#define IS_AVAILABLE(w)(rCoreSet.GetItemState( (w) ) >= SFX_ITEM_AVAILABLE) - -void ScHFEditPage::Reset( const SfxItemSet& rCoreSet ) -{ - if ( IS_AVAILABLE( nWhich ) ) - { - const ScPageHFItem& rItem = (const ScPageHFItem&)(rCoreSet.Get( nWhich )); - - if( const EditTextObject* pLeft = rItem.GetLeftArea() ) - aWndLeft.SetText( *pLeft ); - if( const EditTextObject* pCenter = rItem.GetCenterArea() ) - aWndCenter.SetText( *pCenter ); - if( const EditTextObject* pRight = rItem.GetRightArea() ) - aWndRight.SetText( *pRight ); - - SetSelectDefinedList(); - } -} - -#undef IS_AVAILABLE - -// ----------------------------------------------------------------------- - -sal_Bool ScHFEditPage::FillItemSet( SfxItemSet& rCoreSet ) -{ - ScPageHFItem aItem( nWhich ); - EditTextObject* pLeft = aWndLeft .CreateTextObject(); - EditTextObject* pCenter = aWndCenter.CreateTextObject(); - EditTextObject* pRight = aWndRight .CreateTextObject(); - - aItem.SetLeftArea ( *pLeft ); - aItem.SetCenterArea( *pCenter ); - aItem.SetRightArea ( *pRight ); - delete pLeft; - delete pCenter; - delete pRight; - - rCoreSet.Put( aItem ); - - return sal_True; -} - -// ----------------------------------------------------------------------- - -#define SET_CMD(i,id) \ - aCmd = aDel; \ - aCmd += ScGlobal::GetRscString( id ); \ - aCmd += aDel; \ - aCmdArr[i] = aCmd; - -// ----------------------------------------------------------------------- - -void ScHFEditPage::FillCmdArr() -{ - String aDel( ScGlobal::GetRscString( STR_HFCMD_DELIMITER ) ); - String aCmd; - - SET_CMD( 0, STR_HFCMD_PAGE ) - SET_CMD( 1, STR_HFCMD_PAGES ) - SET_CMD( 2, STR_HFCMD_DATE ) - SET_CMD( 3, STR_HFCMD_TIME ) - SET_CMD( 4, STR_HFCMD_FILE ) - SET_CMD( 5, STR_HFCMD_TABLE ) -} - -#undef SET_CMD - -void ScHFEditPage::InitPreDefinedList() -{ - SvtUserOptions aUserOpt; - - Color* pTxtColour = NULL; - Color* pFldColour = NULL; - - // Get the all field values at the outset. - String aPageFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour)); - String aSheetFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxTableField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour)); - String aFileFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxFileField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour)); - String aExtFileFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxExtFileField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour)); - String aDateFieldValue(aWndLeft.GetEditEngine()->CalcFieldValue(SvxFieldItem(SvxDateField(), EE_FEATURE_FIELD), 0,0, pTxtColour, pFldColour)); - - maLbDefined.Clear(); - - maLbDefined.InsertEntry( ScGlobal::GetRscString( STR_HF_NONE_IN_BRACKETS )); - - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - aPageEntry += aPageFieldValue; - maLbDefined.InsertEntry(aPageEntry); - - String aPageOfEntry(aPageEntry); - aPageOfEntry += ' '; - aPageOfEntry += ScGlobal::GetRscString( STR_HF_OF_QUESTION ); - maLbDefined.InsertEntry( aPageOfEntry); - - maLbDefined.InsertEntry(aSheetFieldValue); - - String aConfidentialEntry(aUserOpt.GetCompany()); - aConfidentialEntry += ' '; - aConfidentialEntry += ScGlobal::GetRscString( STR_HF_CONFIDENTIAL ); - aConfidentialEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aConfidentialEntry += aDateFieldValue; - aConfidentialEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aConfidentialEntry += aPageEntry; - maLbDefined.InsertEntry( aConfidentialEntry); - - String aFileNamePageEntry(aFileFieldValue); - aFileNamePageEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aFileNamePageEntry += aPageEntry; - maLbDefined.InsertEntry( aFileNamePageEntry); - - maLbDefined.InsertEntry( aExtFileFieldValue); - - String aPageSheetNameEntry(aPageEntry); - aPageSheetNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aPageSheetNameEntry += aSheetFieldValue; - maLbDefined.InsertEntry( aPageSheetNameEntry); - - String aPageFileNameEntry(aPageEntry); - aPageFileNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aPageFileNameEntry += aFileFieldValue; - maLbDefined.InsertEntry( aPageFileNameEntry); - - String aPagePathNameEntry(aPageEntry); - aPagePathNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aPagePathNameEntry += aExtFileFieldValue; - maLbDefined.InsertEntry( aPagePathNameEntry); - - String aUserNameEntry(aUserOpt.GetFirstName()); - aUserNameEntry += ' '; - aUserNameEntry += (String)aUserOpt.GetLastName(); - aUserNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aUserNameEntry += aPageEntry; - aUserNameEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aUserNameEntry += aDateFieldValue; - maLbDefined.InsertEntry( aUserNameEntry); - - String aCreatedByEntry(ScGlobal::GetRscString( STR_HF_CREATED_BY ) ); - aCreatedByEntry += ' '; - aCreatedByEntry += (String)aUserOpt.GetFirstName(); - aCreatedByEntry += ' '; - aCreatedByEntry += (String)aUserOpt.GetLastName(); - aCreatedByEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aCreatedByEntry += aDateFieldValue; - aCreatedByEntry.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); - aCreatedByEntry += aPageEntry; - maLbDefined.InsertEntry( aCreatedByEntry); -} - -void ScHFEditPage::InsertToDefinedList() -{ - sal_uInt16 nCount = maLbDefined.GetEntryCount(); - if(nCount == eEntryCount) - { - String aCustomizedEntry(ScGlobal::GetRscString( STR_HF_CUSTOMIZED ) ); - maLbDefined.InsertEntry( aCustomizedEntry); - maLbDefined.SelectEntryPos(eEntryCount); - } -} - -void ScHFEditPage::RemoveFromDefinedList() -{ - sal_uInt16 nCount = maLbDefined.GetEntryCount(); - if(nCount > eEntryCount ) - maLbDefined.RemoveEntry( nCount-1); -} - -// determine if the header/footer exists in our predefined list and set select to it. -void ScHFEditPage::SetSelectDefinedList() -{ - SvtUserOptions aUserOpt; - - // default to customized - ScHFEntryId eSelectEntry = eEntryCount; - - ::std::auto_ptr< EditTextObject > pLeftObj; - ::std::auto_ptr< EditTextObject > pCenterObj; - ::std::auto_ptr< EditTextObject > pRightObj; - - XubString aLeftEntry; - XubString aCenterEntry; - XubString aRightEntry; - - pLeftObj.reset(aWndLeft.GetEditEngine()->CreateTextObject()); - pCenterObj.reset(aWndCenter.GetEditEngine()->CreateTextObject()); - pRightObj.reset(aWndRight.GetEditEngine()->CreateTextObject()); - - bool bFound = false; - - sal_uInt16 i; - sal_uInt16 nCount = maLbDefined.GetEntryCount(); - for(i = 0; i < nCount && !bFound; i++) - { - switch(static_cast<ScHFEntryId>(i)) - { - case eNoneEntry: - { - aLeftEntry = pLeftObj->GetText(0); - aCenterEntry = pCenterObj->GetText(0); - aRightEntry = pRightObj->GetText(0); - if(aLeftEntry == EMPTY_STRING && aCenterEntry == EMPTY_STRING - && aRightEntry == EMPTY_STRING) - { - eSelectEntry = eNoneEntry; - bFound = true; - } - } - break; - - case ePageEntry: - { - aLeftEntry = pLeftObj->GetText(0); - aRightEntry = pRightObj->GetText(0); - if(aLeftEntry == EMPTY_STRING && aRightEntry == EMPTY_STRING) - { - if(IsPageEntry(aWndCenter.GetEditEngine(), pCenterObj.get())) - { - eSelectEntry = ePageEntry; - bFound = true; - } - } - } - break; - - - //TODO - case ePagesEntry: - { - } - break; - - case eSheetEntry: - { - aLeftEntry = pLeftObj->GetText(0); - aRightEntry = pRightObj->GetText(0); - if(aLeftEntry == EMPTY_STRING && aRightEntry == EMPTY_STRING) - { - if(pCenterObj->IsFieldObject()) - { - const SvxFieldItem* pFieldItem = pCenterObj->GetField(); - if(pFieldItem) - { - const SvxFieldData* pField = pFieldItem->GetField(); - if(pField && pField->ISA(SvxTableField)) - { - eSelectEntry = eSheetEntry; - bFound = true; - } - } - } - } - } - break; - - case eConfidentialEntry: - { - if(IsDateEntry(pCenterObj.get()) && IsPageEntry(aWndRight.GetEditEngine(), pRightObj.get())) - { - String aConfidentialEntry(aUserOpt.GetCompany()); - aConfidentialEntry += ' '; - aConfidentialEntry += ScGlobal::GetRscString( STR_HF_CONFIDENTIAL ); - if(aConfidentialEntry == aWndLeft.GetEditEngine()->GetText(0)) - { - eSelectEntry = eConfidentialEntry; - bFound = true; - } - } - } - break; - - //TODO - case eFileNamePageEntry: - { - } - break; - - case eExtFileNameEntry: - { - aLeftEntry = pLeftObj->GetText(0); - aRightEntry = pRightObj->GetText(0); - if(IsExtFileNameEntry(pCenterObj.get()) && aLeftEntry == EMPTY_STRING - && aRightEntry == EMPTY_STRING) - { - eSelectEntry = eExtFileNameEntry; - bFound = true; - } - } - break; - - //TODO - case ePageSheetEntry: - { - } - break; - - //TODO - case ePageFileNameEntry: - { - } - break; - - case ePageExtFileNameEntry: - { - aLeftEntry = pLeftObj->GetText(0); - if(IsPageEntry(aWndCenter.GetEditEngine(), pCenterObj.get()) && - IsExtFileNameEntry(pRightObj.get()) && aLeftEntry == EMPTY_STRING) - { - eSelectEntry = ePageExtFileNameEntry; - bFound = true; - } - } - break; - - case eUserNameEntry: - { - if(IsDateEntry(pRightObj.get()) && IsPageEntry(aWndCenter.GetEditEngine(), pCenterObj.get())) - { - String aUserNameEntry(aUserOpt.GetFirstName()); - aUserNameEntry += ' '; - aUserNameEntry += (String)aUserOpt.GetLastName(); - if(aUserNameEntry == aWndLeft.GetEditEngine()->GetText(0)) - { - eSelectEntry = eUserNameEntry; - bFound = true; - } - } - } - break; - - case eCreatedByEntry: - { - if(IsDateEntry(pCenterObj.get()) && IsPageEntry(aWndRight.GetEditEngine(), pRightObj.get())) - { - String aCreatedByEntry(ScGlobal::GetRscString( STR_HF_CREATED_BY ) ); - aCreatedByEntry += ' '; - aCreatedByEntry += (String)aUserOpt.GetFirstName(); - aCreatedByEntry += ' '; - aCreatedByEntry += (String)aUserOpt.GetLastName(); - if(aCreatedByEntry == aWndLeft.GetEditEngine()->GetText(0)) - { - eSelectEntry = eCreatedByEntry; - bFound = true; - } - } - } - break; - - default: - { - // added to avoid warnings - } - } - } - - if(eSelectEntry == eEntryCount) - InsertToDefinedList(); - - maLbDefined.SelectEntryPos( sal::static_int_cast<sal_uInt16>( eSelectEntry ) ); -} - -bool ScHFEditPage::IsPageEntry(EditEngine*pEngine, EditTextObject* pTextObj) -{ - if(!pEngine && !pTextObj) - return false; - - bool bReturn = false; - - if(!pTextObj->IsFieldObject()) - { - SvUShorts aPosList; - pEngine->GetPortions(0,aPosList); - if(aPosList.Count() == 2) - { - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - ESelection aSel(0,0,0,0); - aSel.nEndPos = aPageEntry.Len(); - if(aPageEntry == pEngine->GetText(aSel)) - { - aSel.nStartPos = aSel.nEndPos; - aSel.nEndPos++; - ::std::auto_ptr< EditTextObject > pPageObj; - pPageObj.reset(pEngine->CreateTextObject(aSel)); - if(pPageObj.get() && pPageObj->IsFieldObject() ) - { - const SvxFieldItem* pFieldItem = pPageObj->GetField(); - if(pFieldItem) - { - const SvxFieldData* pField = pFieldItem->GetField(); - if(pField && pField->ISA(SvxPageField)) - bReturn = true; - } - } - } - } - } - return bReturn; -} - -bool ScHFEditPage::IsDateEntry(EditTextObject* pTextObj) -{ - if(!pTextObj) - return false; - - bool bReturn = false; - if(pTextObj->IsFieldObject()) - { - const SvxFieldItem* pFieldItem = pTextObj->GetField(); - if(pFieldItem) - { - const SvxFieldData* pField = pFieldItem->GetField(); - if(pField && pField->ISA(SvxDateField)) - bReturn = true; - } - } - return bReturn; -} - -bool ScHFEditPage::IsExtFileNameEntry(EditTextObject* pTextObj) -{ - if(!pTextObj) - return false; - bool bReturn = false; - if(pTextObj->IsFieldObject()) - { - const SvxFieldItem* pFieldItem = pTextObj->GetField(); - if(pFieldItem) - { - const SvxFieldData* pField = pFieldItem->GetField(); - if(pField && pField->ISA(SvxExtFileField)) - bReturn = true; - } - } - return bReturn; -} - -void ScHFEditPage::ProcessDefinedListSel(ScHFEntryId eSel, bool bTravelling) -{ - SvtUserOptions aUserOpt; - ::std::auto_ptr< EditTextObject > pTextObj; - - switch(eSel) - { - case eNoneEntry: - ClearTextAreas(); - if(!bTravelling) - aWndLeft.GrabFocus(); - break; - - case ePageEntry: - { - ClearTextAreas(); - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - aWndCenter.GetEditEngine()->SetText(aPageEntry); - aWndCenter.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) ); - if(!bTravelling) - aWndCenter.GrabFocus(); - } - break; - - case ePagesEntry: - { - ClearTextAreas(); - ESelection aSel(0,0,0,0); - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - aWndCenter.GetEditEngine()->SetText(aPageEntry); - aSel.nEndPos = aPageEntry.Len(); - aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - ++aSel.nEndPos; - String aPageOfEntry = ' '; - aPageOfEntry += ScGlobal::GetRscString( STR_HF_OF ); - aPageOfEntry += ' '; - aWndCenter.GetEditEngine()->QuickInsertText(aPageOfEntry,ESelection(aSel.nEndPara,aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aPageOfEntry.Len() ); - aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPagesField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara,aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - pTextObj.reset(aWndCenter.GetEditEngine()->CreateTextObject()); - aWndCenter.SetText(*pTextObj); - XubString aEntry(pTextObj.get()->GetText(0)); - if(!bTravelling) - aWndCenter.GrabFocus(); - } - break; - - case eSheetEntry: - ClearTextAreas(); - aWndCenter.InsertField( SvxFieldItem(SvxTableField(), EE_FEATURE_FIELD) ); - if(!bTravelling) - aWndCenter.GrabFocus(); - break; - - case eConfidentialEntry: - { - ClearTextAreas(); - String aConfidentialEntry(aUserOpt.GetCompany()); - aConfidentialEntry += ' '; - aConfidentialEntry += ScGlobal::GetRscString( STR_HF_CONFIDENTIAL ); - aWndLeft.GetEditEngine()->SetText(aConfidentialEntry); - aWndCenter.InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR), EE_FEATURE_FIELD) ); - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - aWndRight.GetEditEngine()->SetText(aPageEntry); - aWndRight.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) ); - if(!bTravelling) - aWndRight.GrabFocus(); - } - break; - - case eFileNamePageEntry: - { - ClearTextAreas(); - ESelection aSel(0,0,0,0); - aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem( SvxFileField(), EE_FEATURE_FIELD ), aSel ); - ++aSel.nEndPos; - String aPageEntry(RTL_CONSTASCII_USTRINGPARAM(", ")); - aPageEntry += ScGlobal::GetRscString( STR_PAGE ) ; - aPageEntry += ' '; - aWndCenter.GetEditEngine()->QuickInsertText(aPageEntry, ESelection(aSel.nEndPara,aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - aSel.nStartPos = aSel.nEndPos; - aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aPageEntry.Len() ); - aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara,aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - pTextObj.reset(aWndCenter.GetEditEngine()->CreateTextObject()); - aWndCenter.SetText(*pTextObj); - XubString aEntry2(pTextObj.get()->GetText(0)); - if(!bTravelling) - aWndCenter.GrabFocus(); - } - break; - - case eExtFileNameEntry: - ClearTextAreas(); - aWndCenter.InsertField( SvxFieldItem( SvxExtFileField( - EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_FULLPATH ), EE_FEATURE_FIELD ) ); - if(!bTravelling) - aWndCenter.GrabFocus(); - break; - - case ePageSheetEntry: - { - ClearTextAreas(); - ESelection aSel(0,0,0,0); - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - aWndCenter.GetEditEngine()->SetText(aPageEntry); - aSel.nEndPos = aPageEntry.Len(); - aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - ++aSel.nEndPos; - String aCommaSpace(RTL_CONSTASCII_USTRINGPARAM(", ")); - aWndCenter.GetEditEngine()->QuickInsertText(aCommaSpace,ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aCommaSpace.Len() ); - aWndCenter.GetEditEngine()->QuickInsertField( SvxFieldItem(SvxTableField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - pTextObj.reset(aWndCenter.GetEditEngine()->CreateTextObject()); - aWndCenter.SetText(*pTextObj); - if(!bTravelling) - aWndCenter.GrabFocus(); - } - break; - - case ePageFileNameEntry: - { - ClearTextAreas(); - ESelection aSel(0,0,0,0); - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - aWndCenter.GetEditEngine()->SetText(aPageEntry); - aSel.nEndPos = aPageEntry.Len(); - aWndCenter.GetEditEngine()->QuickInsertField(SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - ++aSel.nEndPos; - String aCommaSpace(RTL_CONSTASCII_USTRINGPARAM(", ")); - aWndCenter.GetEditEngine()->QuickInsertText(aCommaSpace,ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - aSel.nEndPos = sal::static_int_cast<xub_StrLen>( aSel.nEndPos + aCommaSpace.Len() ); - aWndCenter.GetEditEngine()->QuickInsertField( SvxFieldItem(SvxFileField(), EE_FEATURE_FIELD), ESelection(aSel.nEndPara, aSel.nEndPos, aSel.nEndPara, aSel.nEndPos)); - pTextObj.reset(aWndCenter.GetEditEngine()->CreateTextObject()); - aWndCenter.SetText(*pTextObj); - if(!bTravelling) - aWndCenter.GrabFocus(); - } - break; - - case ePageExtFileNameEntry: - { - ClearTextAreas(); - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - aWndCenter.GetEditEngine()->SetText(aPageEntry); - aWndCenter.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) ); - aWndRight.InsertField( SvxFieldItem( SvxExtFileField( - EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_FULLPATH ), EE_FEATURE_FIELD ) ); - if(!bTravelling) - aWndRight.GrabFocus(); - } - break; - - case eUserNameEntry: - { - ClearTextAreas(); - String aUserNameEntry(aUserOpt.GetFirstName()); - aUserNameEntry += ' '; - aUserNameEntry += (String)aUserOpt.GetLastName(); - aWndLeft.GetEditEngine()->SetText(aUserNameEntry); - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - aWndCenter.GetEditEngine()->SetText(aPageEntry); - aWndCenter.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) ); - aWndRight.InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR), EE_FEATURE_FIELD) ); - if(!bTravelling) - aWndRight.GrabFocus(); - } - break; - - case eCreatedByEntry: - { - ClearTextAreas(); - String aCreatedByEntry(ScGlobal::GetRscString( STR_HF_CREATED_BY ) ); - aCreatedByEntry += ' '; - aCreatedByEntry += (String)aUserOpt.GetFirstName(); - aCreatedByEntry += ' '; - aCreatedByEntry += (String)aUserOpt.GetLastName(); - aWndLeft.GetEditEngine()->SetText(aCreatedByEntry); - aWndCenter.InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR), EE_FEATURE_FIELD) ); - String aPageEntry(ScGlobal::GetRscString( STR_PAGE ) ); - aPageEntry += ' '; - aWndRight.GetEditEngine()->SetText(aPageEntry); - aWndRight.InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) ); - if(!bTravelling) - aWndRight.GrabFocus(); - } - break; - - default : - break; - } -} - -void ScHFEditPage::ClearTextAreas() -{ - aWndLeft.GetEditEngine()->SetText(EMPTY_STRING); - aWndLeft.Invalidate(); - aWndCenter.GetEditEngine()->SetText(EMPTY_STRING); - aWndCenter.Invalidate(); - aWndRight.GetEditEngine()->SetText(EMPTY_STRING); - aWndRight.Invalidate(); -} - -//----------------------------------------------------------------------- -// Handler: -//----------------------------------------------------------------------- - -IMPL_LINK( ScHFEditPage, ListHdl_Impl, ListBox*, pList ) -{ - if ( pList && pList == &maLbDefined ) - { - ScHFEntryId eSel = static_cast<ScHFEntryId>(maLbDefined.GetSelectEntryPos()); - if(!maLbDefined.IsTravelSelect()) - { - ProcessDefinedListSel(eSel); - - // check if we need to remove the customized entry. - if(eSel < eEntryCount) - RemoveFromDefinedList(); - } - else - { - ProcessDefinedListSel(eSel, true); - } - } - return 0; -} - -IMPL_LINK( ScHFEditPage, ClickHdl, ImageButton*, pBtn ) -{ - pActiveEdWnd = ::GetScEditWindow(); - if ( !pActiveEdWnd ) - return 0; - - if ( pBtn == &aBtnText ) - { - pActiveEdWnd->SetCharAttriutes(); - } - else - { - if ( pBtn == &aBtnPage ) - pActiveEdWnd->InsertField( SvxFieldItem(SvxPageField(), EE_FEATURE_FIELD) ); - else if ( pBtn == &aBtnLastPage ) - pActiveEdWnd->InsertField( SvxFieldItem(SvxPagesField(), EE_FEATURE_FIELD) ); - else if ( pBtn == &aBtnDate ) - pActiveEdWnd->InsertField( SvxFieldItem(SvxDateField(Date(),SVXDATETYPE_VAR), EE_FEATURE_FIELD) ); - else if ( pBtn == &aBtnTime ) - pActiveEdWnd->InsertField( SvxFieldItem(SvxTimeField(), EE_FEATURE_FIELD) ); - else if ( pBtn == &aBtnFile ) - { - pActiveEdWnd->InsertField( SvxFieldItem( SvxFileField(), EE_FEATURE_FIELD ) ); - } - else if ( pBtn == &aBtnTable ) - pActiveEdWnd->InsertField( SvxFieldItem(SvxTableField(), EE_FEATURE_FIELD) ); - } - InsertToDefinedList(); - pActiveEdWnd->GrabFocus(); - - return 0; -} - -IMPL_LINK( ScHFEditPage, MenuHdl, ScExtIButton*, pBtn ) -{ - pActiveEdWnd = ::GetScEditWindow(); - if ( !pActiveEdWnd ) - return 0; - - if(pBtn!=NULL) - { - switch(pBtn->GetSelected()) - { - case FILE_COMMAND_TITEL: - pActiveEdWnd->InsertField( SvxFieldItem( SvxFileField(), EE_FEATURE_FIELD ) ); - break; - case FILE_COMMAND_FILENAME: - pActiveEdWnd->InsertField( SvxFieldItem( SvxExtFileField( - EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_NAME_EXT ), EE_FEATURE_FIELD ) ); - break; - case FILE_COMMAND_PATH: - pActiveEdWnd->InsertField( SvxFieldItem( SvxExtFileField( - EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_FULLPATH ), EE_FEATURE_FIELD ) ); - break; - } - } - return 0; -} - -//======================================================================== -// class ScRightHeaderEditPage -//======================================================================== - -ScRightHeaderEditPage::ScRightHeaderEditPage( Window* pParent, const SfxItemSet& rCoreSet ) - : ScHFEditPage( pParent, RID_SCPAGE_HFED_HR, rCoreSet, - rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERRIGHT ), true ) - {} - -// ----------------------------------------------------------------------- - -sal_uInt16* ScRightHeaderEditPage::GetRanges() - { return pPageRightHeaderRanges; } - -// ----------------------------------------------------------------------- - -SfxTabPage* ScRightHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) - { return ( new ScRightHeaderEditPage( pParent, rCoreSet ) ); }; - - -//======================================================================== -// class ScLeftHeaderEditPage -//======================================================================== - -ScLeftHeaderEditPage::ScLeftHeaderEditPage( Window* pParent, const SfxItemSet& rCoreSet ) - : ScHFEditPage( pParent, RID_SCPAGE_HFED_HL, rCoreSet, - rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_HEADERLEFT ), true ) - {} - -// ----------------------------------------------------------------------- - -sal_uInt16* ScLeftHeaderEditPage::GetRanges() - { return pPageLeftHeaderRanges; } - -// ----------------------------------------------------------------------- - -SfxTabPage* ScLeftHeaderEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) - { return ( new ScLeftHeaderEditPage( pParent, rCoreSet ) ); }; - -//======================================================================== -// class ScRightFooterEditPage -//======================================================================== - -ScRightFooterEditPage::ScRightFooterEditPage( Window* pParent, const SfxItemSet& rCoreSet ) - : ScHFEditPage( pParent, RID_SCPAGE_HFED_FR, rCoreSet, - rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERRIGHT ), false ) - {} - -// ----------------------------------------------------------------------- - -sal_uInt16* ScRightFooterEditPage::GetRanges() - { return pPageRightFooterRanges; } - -// ----------------------------------------------------------------------- - -SfxTabPage* ScRightFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) - { return ( new ScRightFooterEditPage( pParent, rCoreSet ) ); }; - -//======================================================================== -// class ScLeftFooterEditPage -//======================================================================== - -ScLeftFooterEditPage::ScLeftFooterEditPage( Window* pParent, const SfxItemSet& rCoreSet ) - : ScHFEditPage( pParent, RID_SCPAGE_HFED_FL, rCoreSet, - rCoreSet.GetPool()->GetWhich(SID_SCATTR_PAGE_FOOTERLEFT ), false ) - {} - -// ----------------------------------------------------------------------- - -sal_uInt16* ScLeftFooterEditPage::GetRanges() - { return pPageLeftFooterRanges; } - -// ----------------------------------------------------------------------- - -SfxTabPage* ScLeftFooterEditPage::Create( Window* pParent, const SfxItemSet& rCoreSet ) - { return ( new ScLeftFooterEditPage( pParent, rCoreSet ) ); }; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |