summaryrefslogtreecommitdiff
path: root/cui/source/dialogs/linkdlg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/dialogs/linkdlg.cxx')
-rw-r--r--cui/source/dialogs/linkdlg.cxx702
1 files changed, 0 insertions, 702 deletions
diff --git a/cui/source/dialogs/linkdlg.cxx b/cui/source/dialogs/linkdlg.cxx
deleted file mode 100644
index 22bd58b02..000000000
--- a/cui/source/dialogs/linkdlg.cxx
+++ /dev/null
@@ -1,702 +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.
- *
- ************************************************************************/
-
-#include <linkdlg.hxx>
-#include <vcl/svapp.hxx>
-#include "helpid.hrc"
-
-#include <tools/urlobj.hxx>
-#include <svtools/svmedit.hxx>
-#include <svtools/filedlg.hxx>
-#include <vcl/dialog.hxx>
-#include <vcl/button.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/group.hxx>
-#include <vcl/lstbox.hxx>
-#include <vcl/msgbox.hxx>
-#include <vcl/timer.hxx>
-#include <svtools/svtabbx.hxx>
-
-#include <svuidlg.hrc>
-#include <sfx2/linkmgr.hxx>
-#include <sfx2/linksrc.hxx>
-#include <svtools/soerr.hxx>
-#include <sfx2/lnkbase.hxx>
-#include <sfx2/objsh.hxx>
-
-#include <dialmgr.hxx>
-
-#define _SVSTDARR_USHORTS
-#include <svl/svstdarr.hxx>
-
-#define MAX_FILENAME 18
-#define MAX_LINKNAME 18
-#define MAX_TYPENAME 15
-#define MAX_UPDATENAME 10
-
-#define FILEOBJECT ( OBJECT_CLIENT_FILE & ~OBJECT_CLIENT_SO )
-
-using namespace sfx2;
-
-SV_DECL_IMPL_REF_LIST(SvBaseLink,SvBaseLink*)
-
-// Achtung im Code wird dieses Array direkt (0, 1, ...) indiziert
-static long nTabs[] =
- { 4, // Number of Tabs
- 0, 77, 144, 209
- };
-
-
-SvBaseLinksDlg::SvBaseLinksDlg( Window * pParent, LinkManager* pMgr, sal_Bool bHtml )
- : ModalDialog( pParent, CUI_RES( MD_UPDATE_BASELINKS ) ),
- aFtFiles( this, CUI_RES( FT_FILES ) ),
- aFtLinks( this, CUI_RES( FT_LINKS ) ),
- aFtType( this, CUI_RES( FT_TYPE ) ),
- aFtStatus( this, CUI_RES( FT_STATUS ) ),
- aTbLinks( this, CUI_RES(TB_LINKS ) ),
- aFtFiles2( this, CUI_RES( FT_FILES2 ) ),
- aFtFullFileName( this, CUI_RES( FT_FULL_FILE_NAME ) ),
- aFtSource2( this, CUI_RES( FT_SOURCE2 ) ),
- aFtFullSourceName( this, CUI_RES( FT_FULL_SOURCE_NAME ) ),
- aFtType2( this, CUI_RES( FT_TYPE2 ) ),
- aFtFullTypeName( this, CUI_RES( FT_FULL_TYPE_NAME ) ),
- aFtUpdate( this, CUI_RES( FT_UPDATE ) ),
- aRbAutomatic( this, CUI_RES( RB_AUTOMATIC ) ),
- aRbManual( this, CUI_RES( RB_MANUAL ) ),
- aCancelButton1( this, CUI_RES( 1 ) ),
- aHelpButton1( this, CUI_RES( 1 ) ),
- aPbUpdateNow( this, CUI_RES( PB_UPDATE_NOW ) ),
- aPbOpenSource( this, CUI_RES( PB_OPEN_SOURCE ) ),
- aPbChangeSource( this, CUI_RES( PB_CHANGE_SOURCE ) ),
- aPbBreakLink( this, CUI_RES( PB_BREAK_LINK ) ),
- aStrAutolink( CUI_RES( STR_AUTOLINK ) ),
- aStrManuallink( CUI_RES( STR_MANUALLINK ) ),
- aStrBrokenlink( CUI_RES( STR_BROKENLINK ) ),
- aStrGraphiclink( CUI_RES( STR_GRAPHICLINK ) ),
- aStrButtonclose( CUI_RES( STR_BUTTONCLOSE ) ),
- aStrCloselinkmsg( CUI_RES( STR_CLOSELINKMSG ) ),
- aStrCloselinkmsgMulti( CUI_RES( STR_CLOSELINKMSG_MULTI ) ),
- aStrWaitinglink( CUI_RES( STR_WAITINGLINK ) ),
- pLinkMgr( NULL ),
- bHtmlMode(bHtml)
-{
- FreeResource();
-
- aTbLinks.SetHelpId(HID_LINKDLG_TABLB);
- aTbLinks.SetSelectionMode( MULTIPLE_SELECTION );
- aTbLinks.SetTabs( &nTabs[0], MAP_APPFONT );
- aTbLinks.Resize(); // OS: Hack fuer richtige Selektion
-
- // UpdateTimer fuer DDE-/Grf-Links, auf die gewarted wird
- aUpdateTimer.SetTimeoutHdl( LINK( this, SvBaseLinksDlg, UpdateWaitingHdl ) );
- aUpdateTimer.SetTimeout( 1000 );
- //IAccessibility2 Implementation 2009-----
- // Set the ZOrder, and accessible name to the dialog's title
- aTbLinks.SetZOrder(0, WINDOW_ZORDER_FIRST);
- aTbLinks.SetAccessibleName(this->GetText());
- aTbLinks.SetAccessibleRelationLabeledBy(&aFtFiles);
- //-----IAccessibility2 Implementation 2009
-
- OpenSource().Hide();
-
- Links().SetSelectHdl( LINK( this, SvBaseLinksDlg, LinksSelectHdl ) );
- Links().SetDoubleClickHdl( LINK( this, SvBaseLinksDlg, LinksDoubleClickHdl ) );
- Automatic().SetClickHdl( LINK( this, SvBaseLinksDlg, AutomaticClickHdl ) );
- Manual().SetClickHdl( LINK( this, SvBaseLinksDlg, ManualClickHdl ) );
- UpdateNow().SetClickHdl( LINK( this, SvBaseLinksDlg, UpdateNowClickHdl ) );
- ChangeSource().SetClickHdl( LINK( this, SvBaseLinksDlg, ChangeSourceClickHdl ) );
- if(!bHtmlMode)
- BreakLink().SetClickHdl( LINK( this, SvBaseLinksDlg, BreakLinkClickHdl ) );
- else
- BreakLink().Hide();
-
- SetManager( pMgr );
-}
-
-SvBaseLinksDlg::~SvBaseLinksDlg()
-{
-}
-
-/*************************************************************************
-|* SvBaseLinksDlg::Handler()
-*************************************************************************/
-IMPL_LINK( SvBaseLinksDlg, LinksSelectHdl, SvTabListBox *, pSvTabListBox )
-{
- sal_uInt16 nSelectionCount = pSvTabListBox ?
- (sal_uInt16)pSvTabListBox->GetSelectionCount() : 0;
- if(nSelectionCount > 1)
- {
- //bei Mehrfachselektion ggf. alte Eintraege deselektieren
- SvLBoxEntry* pEntry = 0;
- SvBaseLink* pLink = 0;
- pEntry = pSvTabListBox->GetHdlEntry();
- pLink = (SvBaseLink*)pEntry->GetUserData();
- sal_uInt16 nObjectType = pLink->GetObjType();
- if((OBJECT_CLIENT_FILE & nObjectType) != OBJECT_CLIENT_FILE)
- {
- pSvTabListBox->SelectAll(sal_False);
- pSvTabListBox->Select(pEntry);
- nSelectionCount = 1;
- }
- else
- {
- for( sal_uInt16 i = 0; i < nSelectionCount; i++)
- {
- pEntry = i == 0 ? pSvTabListBox->FirstSelected() :
- pSvTabListBox->NextSelected(pEntry);
- DBG_ASSERT(pEntry, "Wo ist der Entry?");
- pLink = (SvBaseLink*)pEntry->GetUserData();
- DBG_ASSERT(pLink, "Wo ist der Link?");
- if( (OBJECT_CLIENT_FILE & pLink->GetObjType()) != OBJECT_CLIENT_FILE )
- pSvTabListBox->Select( pEntry, sal_False );
-
- }
- }
-
- UpdateNow().Enable();
-
- Automatic().Disable();
- Manual().Check();
- Manual().Disable();
- }
- else
- {
- sal_uInt16 nPos;
- SvBaseLink* pLink = GetSelEntry( &nPos );
- if( !pLink )
- return 0;
-
- UpdateNow().Enable();
-
- String sType, sLink;
- String *pLinkNm = &sLink, *pFilter = 0;
-
- if( FILEOBJECT & pLink->GetObjType() )
- {
- Automatic().Disable();
- Manual().Check();
- Manual().Disable();
- if( OBJECT_CLIENT_GRF == pLink->GetObjType() )
- pLinkNm = 0, pFilter = &sLink;
- }
- else
- {
- Automatic().Enable();
- Manual().Enable();
-
- if( LINKUPDATE_ALWAYS == pLink->GetUpdateMode() )
- Automatic().Check();
- else
- Manual().Check();
- }
-
- String aFileName;
- pLinkMgr->GetDisplayNames( pLink, &sType, &aFileName, pLinkNm, pFilter );
- aFileName = INetURLObject::decode(aFileName, INET_HEX_ESCAPE, INetURLObject::DECODE_UNAMBIGUOUS);
- FileName().SetText( aFileName );
- SourceName().SetText( sLink );
- TypeName().SetText( sType );
- }
- return 0;
-}
-
-IMPL_LINK_INLINE_START( SvBaseLinksDlg, LinksDoubleClickHdl, SvTabListBox *, pSvTabListBox )
-{
- (void)pSvTabListBox;
-
- ChangeSourceClickHdl( 0 );
- return 0;
-}
-IMPL_LINK_INLINE_END( SvBaseLinksDlg, LinksDoubleClickHdl, SvTabListBox *, pSvTabListBox )
-
-IMPL_LINK_INLINE_START( SvBaseLinksDlg, AutomaticClickHdl, RadioButton *, pRadioButton )
-{
- (void)pRadioButton;
-
- sal_uInt16 nPos;
- SvBaseLink* pLink = GetSelEntry( &nPos );
- if( pLink && !( FILEOBJECT & pLink->GetObjType() ) &&
- LINKUPDATE_ALWAYS != pLink->GetUpdateMode() )
- SetType( *pLink, nPos, LINKUPDATE_ALWAYS );
- return 0;
-}
-IMPL_LINK_INLINE_END( SvBaseLinksDlg, AutomaticClickHdl, RadioButton *, pRadioButton )
-
-IMPL_LINK_INLINE_START( SvBaseLinksDlg, ManualClickHdl, RadioButton *, pRadioButton )
-{
- (void)pRadioButton;
-
- sal_uInt16 nPos;
- SvBaseLink* pLink = GetSelEntry( &nPos );
- if( pLink && !( FILEOBJECT & pLink->GetObjType() ) &&
- LINKUPDATE_ONCALL != pLink->GetUpdateMode())
- SetType( *pLink, nPos, LINKUPDATE_ONCALL );
- return 0;
-}
-IMPL_LINK_INLINE_END( SvBaseLinksDlg, ManualClickHdl, RadioButton *, pRadioButton )
-
-IMPL_LINK( SvBaseLinksDlg, UpdateNowClickHdl, PushButton *, EMPTYARG )
-{
- SvTabListBox& rListBox = Links();
- sal_uInt16 nSelCnt = (sal_uInt16)rListBox.GetSelectionCount();
- if( 255 < nSelCnt )
- nSelCnt = 255;
-
- std::vector< SvBaseLink* > aLnkArr;
- std::vector< sal_uInt16 > aPosArr;
-
- SvLBoxEntry* pE = rListBox.FirstSelected();
- while( pE )
- {
- sal_uInt16 nFndPos = (sal_uInt16)rListBox.GetModel()->GetAbsPos( pE );
- if( LISTBOX_ENTRY_NOTFOUND != nFndPos )
- {
- aLnkArr.push_back( static_cast< SvBaseLink* >( pE->GetUserData() ) );
- aPosArr.push_back( nFndPos );
- }
- pE = rListBox.NextSelected( pE );
- }
-
- if( !aLnkArr.empty() )
- {
- for( sal_uInt16 n = 0; n < aLnkArr.size(); ++n )
- {
- SvBaseLinkRef xLink = aLnkArr[ n ];
-
- // suche erstmal im Array nach dem Eintrag
- for( sal_uInt16 i = 0; i < pLinkMgr->GetLinks().Count(); ++i )
- if( &xLink == *pLinkMgr->GetLinks()[ i ] )
- {
- xLink->SetUseCache( sal_False );
- SetType( *xLink, aPosArr[ n ], xLink->GetUpdateMode() );
- xLink->SetUseCache( sal_True );
- break;
- }
- }
-
- // falls jemand der Meinung ist, seine Links auszutauschen (SD)
- LinkManager* pNewMgr = pLinkMgr;
- pLinkMgr = 0;
- SetManager( pNewMgr );
-
-
- if( 0 == (pE = rListBox.GetEntry( aPosArr[ 0 ] )) ||
- pE->GetUserData() != aLnkArr[ 0 ] )
- {
- // suche mal den Link
- pE = rListBox.First();
- while( pE )
- {
- if( pE->GetUserData() == aLnkArr[ 0 ] )
- break;
- pE = rListBox.Next( pE );
- }
-
- if( !pE )
- pE = rListBox.FirstSelected();
- }
-
- if( pE )
- {
- SvLBoxEntry* pSelEntry = rListBox.FirstSelected();
- if( pE != pSelEntry )
- rListBox.Select( pSelEntry, sal_False );
- rListBox.Select( pE );
- rListBox.MakeVisible( pE );
- }
-
- pNewMgr->CloseCachedComps();
- }
- return 0;
-}
-
-IMPL_LINK( SvBaseLinksDlg, ChangeSourceClickHdl, PushButton *, pPushButton )
-{
- (void)pPushButton;
-
- sal_uInt16 nSelectionCount = (sal_uInt16)Links().GetSelectionCount();
- if(nSelectionCount > 1)
- {
- PathDialog aPathDlg( this );
- String sType, sFile, sLinkName;
- String sFilter;
- SvLBoxEntry* pEntry = Links().FirstSelected();
- SvBaseLink* pLink = (SvBaseLink*)pEntry->GetUserData();
- pLinkMgr->GetDisplayNames( pLink, &sType, &sFile, 0, 0 );
- INetURLObject aUrl(sFile);
- if(aUrl.GetProtocol() == INET_PROT_FILE)
- {
- rtl::OUString sOldPath(aUrl.PathToFileName());
- sal_Int32 nLen = aUrl.GetName().getLength();
- sOldPath = sOldPath.copy(0, sOldPath.getLength() - nLen);
- aPathDlg.SetPath(sOldPath);
- }
- if(aPathDlg.Execute() == RET_OK)
- {
- String aPath = aPathDlg.GetPath();
-
- for( sal_uInt16 i = 0; i < nSelectionCount; i++)
- {
- pEntry = i==0 ?
- Links().FirstSelected() :
- Links().NextSelected( pEntry );
- DBG_ASSERT(pEntry,"Wo ist der Entry");
- pLink = (SvBaseLink*)pEntry->GetUserData();
- DBG_ASSERT(pLink,"Wo ist der Link");
- pLinkMgr->GetDisplayNames( pLink, &sType, &sFile, &sLinkName, &sFilter );
- INetURLObject aUrl_(sFile);
- INetURLObject aUrl2(aPath, INET_PROT_FILE);
- aUrl2.insertName( aUrl_.getName() );
- String sNewLinkName;
- MakeLnkName( sNewLinkName, 0 ,
- aUrl2.GetMainURL(INetURLObject::DECODE_TO_IURI), sLinkName, &sFilter);
- pLink->SetLinkSourceName( sNewLinkName );
- pLink->Update();
- }
- if( pLinkMgr->GetPersist() )
- pLinkMgr->GetPersist()->SetModified();
- LinkManager* pNewMgr = pLinkMgr;
- pLinkMgr = 0;
- SetManager( pNewMgr );
- }
- }
- else
- {
- sal_uInt16 nPos;
- SvBaseLink* pLink = GetSelEntry( &nPos );
- if ( pLink && (pLink->GetLinkSourceName().Len() != 0) )
- pLink->Edit( this, LINK( this, SvBaseLinksDlg, EndEditHdl ) );
- }
- return 0;
-}
-
-IMPL_LINK( SvBaseLinksDlg, BreakLinkClickHdl, PushButton *, pPushButton )
-{
- (void)pPushButton;
-
- sal_Bool bModified = sal_False;
- if(Links().GetSelectionCount() <= 1)
- {
- sal_uInt16 nPos;
- SvBaseLinkRef xLink = GetSelEntry( &nPos );
- if( !xLink.Is() )
- return 0;
-
- QueryBox aBox( this, WB_YES_NO | WB_DEF_YES, Closelinkmsg() );
-
- if( RET_YES == aBox.Execute() )
- {
- Links().GetModel()->Remove( Links().GetEntry( nPos ) );
-
- // falls Object noch vorhanden, dann das schliessen
- sal_Bool bNewLnkMgr = OBJECT_CLIENT_FILE == xLink->GetObjType();
-
- // dem Link sagen, das er aufgeloest wird!
- xLink->Closed();
-
- // falls einer vergessen hat sich auszutragen
- if( xLink.Is() )
- pLinkMgr->Remove( &xLink );
-
- if( bNewLnkMgr )
- {
- LinkManager* pNewMgr = pLinkMgr;
- pLinkMgr = 0;
- SetManager( pNewMgr );
-
- SvLBoxEntry* pEntry = Links().GetEntry( nPos ? --nPos : 0 );
- if( pEntry )
- Links().SetCurEntry( pEntry );
- }
- bModified = sal_True;
- }
- }
- else
- {
- QueryBox aBox( this, WB_YES_NO | WB_DEF_YES, CloselinkmsgMulti() );
-
- if( RET_YES == aBox.Execute() )
- {
-
- SvBaseLinkMemberList aLinkList;
- SvLBoxEntry* pEntry = Links().FirstSelected();
- while ( pEntry )
- {
- void * pUD = pEntry->GetUserData();
- if( pUD )
- aLinkList.Append( (SvBaseLink*)pUD );
- pEntry = Links().NextSelected(pEntry);
- }
- Links().RemoveSelection();
- for( sal_uLong i = 0; i < aLinkList.Count(); i++ )
- {
- SvBaseLinkRef xLink = aLinkList.GetObject( i );
- // dem Link sagen, das er aufgeloest wird!
- xLink->Closed();
-
- // falls einer vergessen hat sich auszutragen
- pLinkMgr->Remove( &xLink );
- bModified = sal_True;
- }
- //Danach alle selektierten Eintraege entfernen
- }
- }
- if(bModified)
- {
- if( !Links().GetEntryCount() )
- {
- // Der letzte macht das Licht aus
- Automatic().Disable();
- Manual().Disable();
- UpdateNow().Disable();
- ChangeSource().Disable();
- BreakLink().Disable();
-
- String aEmpty;
- SourceName().SetText( aEmpty );
- TypeName().SetText( aEmpty );
- }
- if( pLinkMgr->GetPersist() )
- pLinkMgr->GetPersist()->SetModified();
- }
- return 0;
-}
-
-IMPL_LINK( SvBaseLinksDlg, UpdateWaitingHdl, Timer*, pTimer )
-{
- (void)pTimer;
-
- Links().SetUpdateMode(sal_False);
- for( sal_uLong nPos = Links().GetEntryCount(); nPos; )
- {
- SvLBoxEntry* pBox = Links().GetEntry( --nPos );
- SvBaseLinkRef xLink( (SvBaseLink*)pBox->GetUserData() );
- if( xLink.Is() )
- {
- String sCur( ImplGetStateStr( *xLink ) ),
- sOld( Links().GetEntryText( pBox, 3 ) );
- if( sCur != sOld )
- Links().SetEntryText( sCur, pBox, 3 );
- }
- }
- Links().SetUpdateMode(sal_True);
- return 0;
-}
-
-IMPL_LINK( SvBaseLinksDlg, EndEditHdl, sfx2::SvBaseLink*, _pLink )
-{
- sal_uInt16 nPos;
- GetSelEntry( &nPos );
-
- if( _pLink && _pLink->WasLastEditOK() )
- {
- // StarImpress/Draw tauschen die LinkObjecte selbst aus!
- // also suche den Link im Manager, wenn der nicht mehr existiert,
- // dann setze fuelle die Liste komplett neu. Ansonsten braucht
- // nur der editierte Linkt aktualisiert werden.
- sal_Bool bLinkFnd = sal_False;
- for( sal_uInt16 n = pLinkMgr->GetLinks().Count(); n; )
- if( _pLink == &(*pLinkMgr->GetLinks()[ --n ]) )
- {
- bLinkFnd = sal_True;
- break;
- }
-
- if( bLinkFnd )
- {
- Links().SetUpdateMode(sal_False);
- Links().GetModel()->Remove( Links().GetEntry( nPos ) );
- SvLBoxEntry* pToUnselect = Links().FirstSelected();
- InsertEntry( *_pLink, nPos, sal_True );
- if(pToUnselect)
- Links().Select(pToUnselect, sal_False);
- Links().SetUpdateMode(sal_True);
- }
- else
- {
- LinkManager* pNewMgr = pLinkMgr;
- pLinkMgr = 0;
- SetManager( pNewMgr );
- }
- if( pLinkMgr->GetPersist() )
- pLinkMgr->GetPersist()->SetModified();
- }
- return 0;
-}
-
-String SvBaseLinksDlg::ImplGetStateStr( const SvBaseLink& rLnk )
-{
- String sRet;
- if( !rLnk.GetObj() )
- sRet = Brokenlink();
- else if( rLnk.GetObj()->IsPending() )
- {
- sRet = Waitinglink();
- StartUpdateTimer();
- }
- else if( LINKUPDATE_ALWAYS == rLnk.GetUpdateMode() )
- sRet = Autolink();
- else
- sRet = Manuallink();
-
- return sRet;
-}
-
-void SvBaseLinksDlg::SetManager( LinkManager* pNewMgr )
-{
- if( pLinkMgr == pNewMgr )
- return;
-
- if( pNewMgr )
- // Update muss vor Clear gestoppt werden
- Links().SetUpdateMode( sal_False );
-
- Links().Clear();
- pLinkMgr = pNewMgr;
-
- if( pLinkMgr )
- {
- SvBaseLinks& rLnks = (SvBaseLinks&)pLinkMgr->GetLinks();
- for( sal_uInt16 n = 0; n < rLnks.Count(); ++n )
- {
- SvBaseLinkRef* pLinkRef = rLnks[ n ];
- if( !pLinkRef->Is() )
- {
- rLnks.Remove( n, 1 );
- --n;
- continue;
- }
- if( (*pLinkRef)->IsVisible() )
- InsertEntry( **pLinkRef );
- }
-
- if( rLnks.Count() )
- {
- SvLBoxEntry* pEntry = Links().GetEntry( 0 );
- Links().SetCurEntry( pEntry );
- Links().Select( pEntry );
- LinksSelectHdl( 0 );
- }
- Links().SetUpdateMode( sal_True );
- Links().Invalidate();
- }
-}
-
-
-void SvBaseLinksDlg::InsertEntry( const SvBaseLink& rLink, sal_uInt16 nPos, sal_Bool bSelect )
-{
- String aEntry, sFileNm, sLinkNm, sTypeNm, sFilter;
-
- pLinkMgr->GetDisplayNames( (SvBaseLink*)&rLink, &sTypeNm, &sFileNm, &sLinkNm, &sFilter );
-
- // GetTab(0) gibt die Position der von der TabListBox automatisch eingefuegten
- // Bitmap. Die Breite der ersten Textspalte ergibt sich deshalb aus Tab(2)-Tab(1)
- long nWidthPixel = Links().GetLogicTab( 2 ) - Links().GetLogicTab( 1 );
- nWidthPixel -= SV_TAB_BORDER;
- XubString aTxt = Links().GetEllipsisString( sFileNm, nWidthPixel, TEXT_DRAW_PATHELLIPSIS );
- INetURLObject aPath( sFileNm, INET_PROT_FILE );
- String aFileName = aPath.getName();
- aFileName = INetURLObject::decode(aFileName, INET_HEX_ESCAPE, INetURLObject::DECODE_UNAMBIGUOUS);
-
- if( aFileName.Len() > aTxt.Len() )
- aTxt = aFileName;
- else if( aTxt.Search( aFileName, aTxt.Len() - aFileName.Len() ) == STRING_NOTFOUND )
- // filename not in string
- aTxt = aFileName;
-
- aEntry = aTxt;
- aEntry += '\t';
- if( OBJECT_CLIENT_GRF == rLink.GetObjType() )
- aEntry += sFilter;
- else
- aEntry += sLinkNm;
- aEntry += '\t';
- aEntry += sTypeNm;
- aEntry += '\t';
- aEntry += ImplGetStateStr( rLink );
-
- SvLBoxEntry * pE = Links().InsertEntryToColumn( aEntry, nPos );
- pE->SetUserData( (void*)&rLink );
- if(bSelect)
- Links().Select(pE);
-}
-
-SvBaseLink* SvBaseLinksDlg::GetSelEntry( sal_uInt16* pPos )
-{
- SvLBoxEntry* pE = Links().FirstSelected();
- sal_uInt16 nPos;
- if( pE && LISTBOX_ENTRY_NOTFOUND !=
- ( nPos = (sal_uInt16)Links().GetModel()->GetAbsPos( pE ) ) )
- {
- DBG_ASSERT( pE, "wo kommt der leere Eintrag her?" );
-
- if( pPos )
- *pPos = nPos;
- return (SvBaseLink*)pE->GetUserData();
- }
- return 0;
-}
-
-void SvBaseLinksDlg::SetType( SvBaseLink& rLink,
- sal_uInt16 nSelPos,
- sal_uInt16 nType )
-{
- rLink.SetUpdateMode( nType );
- rLink.Update();
- SvLBoxEntry* pBox = Links().GetEntry( nSelPos );
- Links().SetEntryText( ImplGetStateStr( rLink ), pBox, 3 );
- if( pLinkMgr->GetPersist() )
- pLinkMgr->GetPersist()->SetModified();
-}
-
-void SvBaseLinksDlg::SetActLink( SvBaseLink * pLink )
-{
- if( pLinkMgr )
- {
- const SvBaseLinks& rLnks = pLinkMgr->GetLinks();
- sal_uInt16 nSelect = 0;
- for( sal_uInt16 n = 0; n < rLnks.Count(); ++n )
- {
- SvBaseLinkRef* pLinkRef = rLnks[ n ];
- // #109573# only visible links have been inserted into the TreeListBox,
- // invisible ones have to be skipped here
- if( (*pLinkRef)->IsVisible() )
- {
- if( pLink == *pLinkRef )
- {
- Links().Select( Links().GetEntry( nSelect ) );
- LinksSelectHdl( 0 );
- return ;
- }
- nSelect++;
- }
- }
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */