diff options
author | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2013-07-16 15:49:44 +0200 |
---|---|---|
committer | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2013-07-17 13:20:17 +0200 |
commit | 2c10d784deb86501b5488044a61d9fc2efc6321a (patch) | |
tree | 5bebbced3704de8931161bef3141c80261a315a5 | |
parent | 41aa886a7b516c842cc4d74dbbe475c980a28ca4 (diff) |
fdo#39904, n#825976: implement hyperlinks for Illustrations index
(cherry picked from commit 8bb2c7f1556c10508c8ac451c579539ccf5dacfb)
Conflicts:
sw/inc/swtypes.hxx
Change-Id: I6f682c382e7ab0e06259b335247fdcebd7412942
-rw-r--r-- | sw/inc/swtypes.hxx | 3 | ||||
-rw-r--r-- | sw/source/core/bastyp/init.cxx | 1 | ||||
-rw-r--r-- | sw/source/core/doc/doctxm.cxx | 6 | ||||
-rw-r--r-- | sw/source/core/inc/txmsrt.hxx | 3 | ||||
-rw-r--r-- | sw/source/core/tox/txmsrt.cxx | 13 | ||||
-rw-r--r-- | sw/source/ui/index/cnttab.cxx | 3 | ||||
-rw-r--r-- | sw/source/ui/uiview/view2.cxx | 14 |
7 files changed, 37 insertions, 6 deletions
diff --git a/sw/inc/swtypes.hxx b/sw/inc/swtypes.hxx index d3c668818495..245c7cce6e31 100644 --- a/sw/inc/swtypes.hxx +++ b/sw/inc/swtypes.hxx @@ -170,6 +170,8 @@ SW_DLLPUBLIC Size GetGraphicSizeTwip( const Graphic&, OutputDevice* pOutDev ); // Separator for jumps to different content types in document. const sal_Unicode cMarkSeparator = '|'; +// Sequences names for jumps are <name of sequence>!<no> +const sal_Unicode cSequenceMarkSeparator = '!'; extern const sal_Char* pMarkToTable; // Strings are extern const sal_Char* pMarkToFrame; // in Init.cxx. extern const sal_Char* pMarkToRegion; @@ -177,6 +179,7 @@ SW_DLLPUBLIC extern const sal_Char* pMarkToOutline; extern const sal_Char* pMarkToText; extern const sal_Char* pMarkToGraphic; extern const sal_Char* pMarkToOLE; +extern const sal_Char* pMarkToSequence; #ifndef DB_DELIM // This is defined in OFA! #define DB_DELIM ((sal_Unicode)0xff) // Database <-> table separator. diff --git a/sw/source/core/bastyp/init.cxx b/sw/source/core/bastyp/init.cxx index 009600c64268..4e5719358ca6 100644 --- a/sw/source/core/bastyp/init.cxx +++ b/sw/source/core/bastyp/init.cxx @@ -425,6 +425,7 @@ const sal_Char* pMarkToText = "text"; const sal_Char* pMarkToOutline = "outline"; const sal_Char* pMarkToGraphic = "graphic"; const sal_Char* pMarkToOLE = "ole"; +const sal_Char* pMarkToSequence = "sequence"; std::vector<SvGlobalName*> *pGlobalOLEExcludeList = 0; diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx index e0157ffeddd8..3cd4f0796730 100644 --- a/sw/source/core/doc/doctxm.cxx +++ b/sw/source/core/doc/doctxm.cxx @@ -1263,7 +1263,11 @@ void SwTOXBaseSection::UpdateSequence( const SwTxtNode* pOwnChapterNode ) ( !IsFromChapter() || ::lcl_FindChapterNode( rTxtNode, 0 ) == pOwnChapterNode ) ) { - SwTOXPara * pNew = new SwTOXPara( rTxtNode, nsSwTOXElement::TOX_SEQUENCE, 1 ); + const SwSetExpField* pSeqField = dynamic_cast< const SwSetExpField* >( pFmtFld->GetFld() ); + OUString sName = GetSequenceName(); + sName += OUString( cSequenceMarkSeparator ); + sName += OUString::valueOf( sal_Int32( pSeqField->GetSeqNumber() ) ); + SwTOXPara * pNew = new SwTOXPara( rTxtNode, nsSwTOXElement::TOX_SEQUENCE, 1, sName ); // set indexes if the number or the reference text are to be displayed if( GetCaptionDisplay() == CAPTION_TEXT ) { diff --git a/sw/source/core/inc/txmsrt.hxx b/sw/source/core/inc/txmsrt.hxx index 05cdaf1b9d74..356f49d9fb1c 100644 --- a/sw/source/core/inc/txmsrt.hxx +++ b/sw/source/core/inc/txmsrt.hxx @@ -229,7 +229,7 @@ private: struct SwTOXPara : public SwTOXSortTabBase { - SwTOXPara( const SwCntntNode&, SwTOXElement, sal_uInt16 nLevel = FORM_ALPHA_DELIMITTER ); + SwTOXPara( const SwCntntNode&, SwTOXElement, sal_uInt16 nLevel = FORM_ALPHA_DELIMITTER, OUString sSeqName = OUString() ); virtual ~SwTOXPara() {} void SetStartIndex( xub_StrLen nSet) { nStartIndex = nSet;} @@ -246,6 +246,7 @@ private: sal_uInt16 m_nLevel; xub_StrLen nStartIndex; xub_StrLen nEndIndex; + OUString m_sSequenceName; }; struct SwTOXTable : public SwTOXSortTabBase diff --git a/sw/source/core/tox/txmsrt.cxx b/sw/source/core/tox/txmsrt.cxx index 20e4975f9ebe..d916be98832c 100644 --- a/sw/source/core/tox/txmsrt.cxx +++ b/sw/source/core/tox/txmsrt.cxx @@ -571,12 +571,13 @@ sal_uInt16 SwTOXContent::GetLevel() const The position must not come from the document, but from the "anchor"! --------------------------------------------------------------------*/ -SwTOXPara::SwTOXPara( const SwCntntNode& rNd, SwTOXElement eT, sal_uInt16 nLevel ) +SwTOXPara::SwTOXPara( const SwCntntNode& rNd, SwTOXElement eT, sal_uInt16 nLevel, OUString sSeqName ) : SwTOXSortTabBase( TOX_SORT_PARA, &rNd, 0, 0 ), eType( eT ), m_nLevel(nLevel), nStartIndex(0), - nEndIndex(STRING_LEN) + nEndIndex(STRING_LEN), + m_sSequenceName( sSeqName ) { } @@ -699,6 +700,14 @@ String SwTOXPara::GetURL() const } } break; + case nsSwTOXElement::TOX_SEQUENCE: + { + aTxt = '#'; + aTxt += m_sSequenceName; + aTxt += cMarkSeparator; + aTxt.AppendAscii( pMarkToSequence ); + } + break; default: break; } return aTxt; diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx index 20fa51c7833b..d98b2d8ec603 100644 --- a/sw/source/ui/index/cnttab.cxx +++ b/sw/source/ui/index/cnttab.cxx @@ -2091,6 +2091,7 @@ void SwTOXEntryTabPage::ActivatePage( const SfxItemSet& /*rSet*/) sal_Bool bToxIsAuthorities = TOX_AUTHORITIES == aCurType.eType; sal_Bool bToxIsIndex = TOX_INDEX == aCurType.eType; sal_Bool bToxIsContent = TOX_CONTENT == aCurType.eType; + sal_Bool bToxIsSequence = TOX_ILLUSTRATIONS == aCurType.eType; aLevelLB.Clear(); for(sal_uInt16 i = 1; i < m_pCurrentForm->GetFormMax(); i++) @@ -2223,7 +2224,7 @@ void SwTOXEntryTabPage::ActivatePage( const SfxItemSet& /*rSet*/) //show or hide controls aEntryNoPB.Show( bToxIsContent ); - aHyperLinkPB.Show( bToxIsContent ); + aHyperLinkPB.Show( bToxIsContent || bToxIsSequence ); aRelToStyleCB.Show( !bToxIsAuthorities ); aChapterInfoPB.Show( !bToxIsContent && !bToxIsAuthorities); aEntryPB.Show( !bToxIsAuthorities ); diff --git a/sw/source/ui/uiview/view2.cxx b/sw/source/ui/uiview/view2.cxx index 3805b6980511..514f76dc821a 100644 --- a/sw/source/ui/uiview/view2.cxx +++ b/sw/source/ui/uiview/view2.cxx @@ -115,6 +115,7 @@ #include <svtools/templdlg.hxx> #include <dbconfig.hxx> #include <dbmgr.hxx> +#include <reffld.hxx> #include <PostItMgr.hxx> @@ -1880,7 +1881,7 @@ bool SwView::JumpToSwMark( const String& rMark ) if( sCmp.Len() ) { - String sName( sMark.Copy( 0, nPos ) ); + rtl::OUString sName( sMark.Copy( 0, nPos ) ); sCmp.ToLowerAscii(); FlyCntType eFlyType = FLYCNTTYPE_ALL; @@ -1905,6 +1906,17 @@ bool SwView::JumpToSwMark( const String& rMark ) m_pWrtShell->EnterStdMode(); bRet = m_pWrtShell->GotoTable( sName ); } + else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToSequence ) ) + { + m_pWrtShell->EnterStdMode(); + sal_Int32 nNoPos = sName.indexOf( cSequenceMarkSeparator ); + if ( nNoPos != -1 ) + { + sal_uInt16 nSeqNo = sName.copy( nNoPos + 1 ).toInt32(); + sName = sName.copy( 0, nNoPos ); + m_pWrtShell->GotoRefMark( sName, REF_SEQUENCEFLD, nSeqNo ); + } + } else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToText ) ) { // Normale Textsuche |