[Libreoffice-commits] core.git: Branch 'distro/suse/suse-4.0' - sw/inc sw/source

Cédric Bosdonnat cedric.bosdonnat at free.fr
Wed Jul 17 01:31:55 PDT 2013


 sw/inc/swtypes.hxx             |    3 +++
 sw/source/core/bastyp/init.cxx |    1 +
 sw/source/core/doc/doctxm.cxx  |    6 +++++-
 sw/source/core/inc/txmsrt.hxx  |    3 ++-
 sw/source/core/tox/txmsrt.cxx  |   13 +++++++++++--
 sw/source/ui/index/cnttab.cxx  |    3 ++-
 sw/source/ui/uiview/view2.cxx  |   14 +++++++++++++-
 7 files changed, 37 insertions(+), 6 deletions(-)

New commits:
commit 8bb2c7f1556c10508c8ac451c579539ccf5dacfb
Author: Cédric Bosdonnat <cedric.bosdonnat at free.fr>
Date:   Tue Jul 16 15:49:44 2013 +0200

    fdo#39904, n#825976: implement hyperlinks for Illustrations index
    
    Change-Id: I6f682c382e7ab0e06259b335247fdcebd7412942

diff --git a/sw/inc/swtypes.hxx b/sw/inc/swtypes.hxx
index fe1c414..7bc54bd 100644
--- a/sw/inc/swtypes.hxx
+++ b/sw/inc/swtypes.hxx
@@ -174,6 +174,8 @@ SW_DLLPUBLIC Size GetGraphicSizeTwip( const Graphic&, OutputDevice* pOutDev );
 
 // Separator for jumps to different content types in document.
 const sal_Unicode cMarkSeperator = '|';
+// 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;
@@ -181,6 +183,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 73bc1df..5be84f7 100644
--- a/sw/source/core/bastyp/init.cxx
+++ b/sw/source/core/bastyp/init.cxx
@@ -421,6 +421,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 a25a6d6..e7b9082 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -1286,7 +1286,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 990ada1..40525e1 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 942d239..2edda92 100644
--- a/sw/source/core/tox/txmsrt.cxx
+++ b/sw/source/core/tox/txmsrt.cxx
@@ -572,12 +572,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 )
 {
 }
 
@@ -700,6 +701,14 @@ String SwTOXPara::GetURL() const
             }
         }
         break;
+    case nsSwTOXElement::TOX_SEQUENCE:
+        {
+            aTxt = '#';
+            aTxt += m_sSequenceName;
+            aTxt += cMarkSeperator;
+            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 7feb49d..28bb8fc 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -2095,6 +2095,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++)
@@ -2227,7 +2228,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 b6a7d10..f5f9da4 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>
 
@@ -1867,7 +1868,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;
 
@@ -1892,6 +1893,17 @@ bool SwView::JumpToSwMark( const String& rMark )
                 pWrtShell->EnterStdMode();
                 bRet = pWrtShell->GotoTable( sName );
             }
+            else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToSequence ) )
+            {
+                pWrtShell->EnterStdMode();
+                sal_Int32 nNoPos = sName.indexOf( cSequenceMarkSeparator );
+                if ( nNoPos != -1 )
+                {
+                    sal_uInt16 nSeqNo = sName.copy( nNoPos + 1 ).toInt32();
+                    sName = sName.copy( 0, nNoPos );
+                    pWrtShell->GotoRefMark( sName, REF_SEQUENCEFLD, nSeqNo );
+                }
+            }
             else if( COMPARE_EQUAL == sCmp.CompareToAscii( pMarkToText ) )
             {
                 // Normale Textsuche


More information about the Libreoffice-commits mailing list