2000-09-18 16:07:07 +00:00
|
|
|
|
/*************************************************************************
|
|
|
|
|
*
|
2008-04-10 21:43:31 +00:00
|
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 21:43:31 +00:00
|
|
|
|
* Copyright 2008 by Sun Microsystems, Inc.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 21:43:31 +00:00
|
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 21:43:31 +00:00
|
|
|
|
* $RCSfile: hltpbase.cxx,v $
|
|
|
|
|
* $Revision: 1.37 $
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 21:43:31 +00:00
|
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 21:43:31 +00:00
|
|
|
|
* 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.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 21:43:31 +00:00
|
|
|
|
* 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).
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
2008-04-10 21:43:31 +00:00
|
|
|
|
* 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.
|
2000-09-18 16:07:07 +00:00
|
|
|
|
*
|
|
|
|
|
************************************************************************/
|
|
|
|
|
|
2006-09-17 03:24:00 +00:00
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
|
#include "precompiled_svx.hxx"
|
|
|
|
|
|
2005-01-21 15:38:31 +00:00
|
|
|
|
#ifdef SVX_DLLIMPLEMENTATION
|
|
|
|
|
#undef SVX_DLLIMPLEMENTATION
|
|
|
|
|
#endif
|
2000-09-18 16:07:07 +00:00
|
|
|
|
#include <sfx2/frame.hxx>
|
|
|
|
|
#include <sfx2/viewfrm.hxx>
|
|
|
|
|
#include <sot/formats.hxx>
|
|
|
|
|
#include <sfx2/sfxsids.hrc>
|
|
|
|
|
#include <svtools/macitem.hxx>
|
2000-10-10 11:35:10 +00:00
|
|
|
|
#include <ucbhelper/content.hxx>
|
2002-10-15 10:54:23 +00:00
|
|
|
|
#include <unotools/localfilehelper.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
#include "hyperdlg.hrc"
|
2004-02-03 17:30:12 +00:00
|
|
|
|
//CHINA001 #ifndef _SVX_TAB_HYPERLINK_HXX
|
|
|
|
|
//CHINA001 #include "hyperdlg.hxx"
|
|
|
|
|
//CHINA001 #endif
|
|
|
|
|
#include "cuihyperdlg.hxx" //CHINA001
|
2000-09-18 16:07:07 +00:00
|
|
|
|
#include "hltpbase.hxx"
|
|
|
|
|
|
2007-06-27 16:11:35 +00:00
|
|
|
|
#include <svx/svxdlg.hxx> //CHINA001
|
|
|
|
|
#include <svx/dialogs.hrc> //CHINA001
|
2004-02-03 17:30:12 +00:00
|
|
|
|
|
2007-06-05 13:33:12 +00:00
|
|
|
|
using namespace ::ucbhelper;
|
2000-10-10 11:35:10 +00:00
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
//########################################################################
|
|
|
|
|
//# #
|
|
|
|
|
//# ComboBox-Control, wich is filled with all current framenames #
|
|
|
|
|
//# #
|
|
|
|
|
//########################################################################
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Contructor / Destructor
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
2003-09-04 10:39:11 +00:00
|
|
|
|
SvxFramesComboBox::SvxFramesComboBox ( Window* pParent, const ResId& rResId,
|
|
|
|
|
SfxDispatcher* pDispatch )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
: ComboBox (pParent, rResId)
|
|
|
|
|
{
|
|
|
|
|
TargetList* pList = new TargetList;
|
2003-09-04 10:39:11 +00:00
|
|
|
|
SfxViewFrame* pViewFrame = pDispatch ? pDispatch->GetFrame() : 0;
|
|
|
|
|
SfxFrame* pFrame = pViewFrame ? pViewFrame->GetTopFrame() : 0;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
if ( pFrame )
|
|
|
|
|
{
|
|
|
|
|
pFrame->GetTargetList(*pList);
|
|
|
|
|
USHORT nCount = (USHORT)pList->Count();
|
|
|
|
|
if( nCount )
|
|
|
|
|
{
|
|
|
|
|
USHORT i;
|
|
|
|
|
for ( i = 0; i < nCount; i++ )
|
|
|
|
|
{
|
|
|
|
|
InsertEntry(*pList->GetObject(i));
|
|
|
|
|
}
|
|
|
|
|
for ( i = nCount; i; i-- )
|
|
|
|
|
{
|
|
|
|
|
delete pList->GetObject( i - 1 );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
delete pList;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2003-09-04 10:39:11 +00:00
|
|
|
|
SvxFramesComboBox::~SvxFramesComboBox ()
|
|
|
|
|
{
|
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
//########################################################################
|
|
|
|
|
//# #
|
|
|
|
|
//# ComboBox-Control for URL's with History and Autocompletion #
|
|
|
|
|
//# #
|
|
|
|
|
//########################################################################
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Contructor / Destructor
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
2001-07-09 13:54:43 +00:00
|
|
|
|
SvxHyperURLBox::SvxHyperURLBox( Window* pParent, INetProtocol eSmart, BOOL bAddresses )
|
|
|
|
|
: SvtURLBox ( pParent, eSmart ),
|
2001-07-04 07:09:25 +00:00
|
|
|
|
DropTargetHelper ( this ),
|
2000-09-18 16:07:07 +00:00
|
|
|
|
mbAccessAddress (bAddresses)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2006-06-19 14:13:40 +00:00
|
|
|
|
sal_Int8 SvxHyperURLBox::AcceptDrop( const AcceptDropEvent& /* rEvt */ )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2001-07-04 07:09:25 +00:00
|
|
|
|
return( IsDropFormatSupported( FORMAT_STRING ) ? DND_ACTION_COPY : DND_ACTION_NONE );
|
|
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2001-07-04 07:09:25 +00:00
|
|
|
|
sal_Int8 SvxHyperURLBox::ExecuteDrop( const ExecuteDropEvent& rEvt )
|
|
|
|
|
{
|
|
|
|
|
TransferableDataHelper aDataHelper( rEvt.maDropEvent.Transferable );
|
|
|
|
|
String aString;
|
|
|
|
|
sal_Int8 nRet = DND_ACTION_NONE;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
2001-07-04 07:09:25 +00:00
|
|
|
|
if( aDataHelper.GetString( FORMAT_STRING, aString ) )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2001-07-04 07:09:25 +00:00
|
|
|
|
SetText( aString );
|
|
|
|
|
nRet = DND_ACTION_COPY;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
2001-07-04 07:09:25 +00:00
|
|
|
|
return nRet;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2007-04-26 06:33:49 +00:00
|
|
|
|
Diese Methode parsed eine EMailadresse aus einem D&D-DataObjekt aus der Adre<EFBFBD>datenbank heraus
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
#ifndef _OFF_OFADBMGR_HXX
|
|
|
|
|
#include <offmgr/ofadbmgr.hxx>
|
|
|
|
|
#endif
|
2006-05-02 14:31:55 +00:00
|
|
|
|
#ifndef _SFX_APP_HXX
|
2000-09-18 16:07:07 +00:00
|
|
|
|
#include <offmgr/app.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _SDB_SDBCURS_HXX
|
|
|
|
|
#include <sdb/sdbcurs.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define DB_DD_DELIM ((char)11)
|
|
|
|
|
|
|
|
|
|
String SvxHyperURLBox::GetAllEmailNamesFromDragItem( USHORT nItem )
|
|
|
|
|
{
|
|
|
|
|
#if !defined( ICC ) && !defined( SOLARIS )
|
|
|
|
|
String aAddress;
|
|
|
|
|
|
|
|
|
|
if ( DragServer::HasFormat( nItem, SOT_FORMATSTR_ID_SBA_DATAEXCHANGE ) )
|
|
|
|
|
{
|
|
|
|
|
ULONG nLen = DragServer::GetDataLen( nItem, SOT_FORMATSTR_ID_SBA_DATAEXCHANGE ) - 1;
|
|
|
|
|
USHORT i = 0;
|
|
|
|
|
String aTxt;
|
|
|
|
|
char *pTxt = aTxt.AllocStrBuf( (USHORT)nLen );
|
|
|
|
|
DragServer::PasteData( nItem, pTxt, nLen, SOT_FORMATSTR_ID_SBA_DATAEXCHANGE );
|
|
|
|
|
String aDBName = aTxt.GetToken( i++, DB_DD_DELIM );
|
|
|
|
|
String aTableName = aTxt.GetToken( i++, DB_DD_DELIM );
|
|
|
|
|
i++; // Format"anderung
|
|
|
|
|
String aStatement = aTxt.GetToken( i++, DB_DD_DELIM );
|
|
|
|
|
if ( !aStatement )
|
|
|
|
|
{
|
|
|
|
|
aDBName += DB_DELIM;
|
|
|
|
|
aDBName += aTableName;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// use here another delimiter, because the OfaDBMgr uses two
|
|
|
|
|
// delimiters ( (char)11 and ; )
|
|
|
|
|
aDBName += ';';
|
|
|
|
|
aDBName += aStatement;
|
|
|
|
|
}
|
|
|
|
|
SbaSelectionListRef pSelectionList;
|
|
|
|
|
pSelectionList.Clear();
|
|
|
|
|
pSelectionList = new SbaSelectionList;
|
|
|
|
|
USHORT nTokCnt = aTxt.GetTokenCount( DB_DD_DELIM );
|
|
|
|
|
|
|
|
|
|
for ( ; i < nTokCnt; ++i )
|
|
|
|
|
pSelectionList->Insert(
|
|
|
|
|
(void*)(USHORT)aTxt.GetToken( i, DB_DD_DELIM ), LIST_APPEND );
|
|
|
|
|
|
2006-05-02 14:31:55 +00:00
|
|
|
|
OfaDBMgr* pDBMgr = SFX_APP()->GetOfaDBMgr();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
BOOL bBasic = DBMGR_STD;
|
|
|
|
|
|
|
|
|
|
if ( !pDBMgr->OpenDB( bBasic, aDBName ) )
|
|
|
|
|
return aAddress;
|
|
|
|
|
|
|
|
|
|
OfaDBParam& rParam = pDBMgr->GetDBData( bBasic );
|
|
|
|
|
pDBMgr->ChangeStatement( bBasic, aStatement );
|
|
|
|
|
rParam.pSelectionList->Clear();
|
|
|
|
|
|
|
|
|
|
if ( pSelectionList.Is() &&
|
|
|
|
|
(long)pSelectionList->GetObject(0) != -1L )
|
|
|
|
|
*rParam.pSelectionList = *pSelectionList;
|
|
|
|
|
|
|
|
|
|
if ( !pDBMgr->ToFirstSelectedRecord( bBasic ) )
|
|
|
|
|
{
|
|
|
|
|
pDBMgr->CloseAll();
|
|
|
|
|
return aAddress;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( pDBMgr->IsSuccessful( bBasic ) )
|
|
|
|
|
{
|
|
|
|
|
// Spaltenk"opfe
|
|
|
|
|
SbaDBDataDefRef aDBDef = pDBMgr->OpenColumnNames( bBasic );
|
|
|
|
|
|
|
|
|
|
if ( aDBDef.Is() )
|
|
|
|
|
{
|
|
|
|
|
SbaColumn* pCol = aDBDef->GetColumn("EMAIL");
|
|
|
|
|
ULONG nPos = 0;
|
|
|
|
|
|
|
|
|
|
if ( pCol )
|
|
|
|
|
nPos = aDBDef->GetOriginalColumns().GetPos( pCol ) + 1;
|
|
|
|
|
for ( i = 0 ; nPos && i < pSelectionList->Count(); ++i )
|
|
|
|
|
{
|
|
|
|
|
ULONG nIndex = (ULONG)pSelectionList->GetObject(i);
|
|
|
|
|
|
|
|
|
|
// N"achsten zu lesenden Datensatz ansteuern
|
|
|
|
|
|
|
|
|
|
BOOL bEnd = rParam.GetCursor()->IsOffRange();
|
|
|
|
|
|
|
|
|
|
if ( !bEnd )
|
|
|
|
|
{
|
|
|
|
|
const ODbRowRef aRow =
|
|
|
|
|
pDBMgr->GetSelectedRecord( bBasic, i );
|
|
|
|
|
|
|
|
|
|
if ( aRow.Is() )
|
|
|
|
|
{
|
|
|
|
|
aAddress += pDBMgr->
|
|
|
|
|
ImportDBField( (USHORT)nPos, &aDBDef, aRow.getBodyPtr() );
|
|
|
|
|
aAddress += ',';
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
aAddress.Erase();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
pDBMgr->CloseAll();
|
|
|
|
|
}
|
|
|
|
|
aAddress.EraseTrailingChars( ',' );
|
|
|
|
|
return aAddress;
|
|
|
|
|
#else
|
|
|
|
|
return String();
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
void SvxHyperURLBox::Select()
|
|
|
|
|
{
|
2001-07-09 13:54:43 +00:00
|
|
|
|
SvtURLBox::Select();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
void SvxHyperURLBox::Modify()
|
|
|
|
|
{
|
2001-07-09 13:54:43 +00:00
|
|
|
|
SvtURLBox::Modify();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
long SvxHyperURLBox::Notify( NotifyEvent& rNEvt )
|
|
|
|
|
{
|
2001-07-09 13:54:43 +00:00
|
|
|
|
return SvtURLBox::Notify( rNEvt );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
long SvxHyperURLBox::PreNotify( NotifyEvent& rNEvt )
|
|
|
|
|
{
|
2001-07-09 13:54:43 +00:00
|
|
|
|
return SvtURLBox::PreNotify( rNEvt );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//########################################################################
|
|
|
|
|
//# #
|
|
|
|
|
//# Hyperlink-Dialog: Tabpages-Baseclass #
|
|
|
|
|
//# #
|
|
|
|
|
//########################################################################
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Con/Destructor, Initialize
|
|
|
|
|
|*
|
|
|
|
|
\************************************************************************/
|
|
|
|
|
|
|
|
|
|
SvxHyperlinkTabPageBase::SvxHyperlinkTabPageBase ( Window *pParent,
|
|
|
|
|
const ResId &rResId,
|
|
|
|
|
const SfxItemSet& rItemSet)
|
2004-04-21 13:14:21 +00:00
|
|
|
|
: IconChoicePage ( pParent, rResId, rItemSet ),
|
|
|
|
|
mpGrpMore ( NULL ),
|
2000-09-18 16:07:07 +00:00
|
|
|
|
mpFtFrame ( NULL ),
|
|
|
|
|
mpCbbFrame ( NULL ),
|
|
|
|
|
mpFtForm ( NULL ),
|
|
|
|
|
mpLbForm ( NULL ),
|
|
|
|
|
mpFtIndication ( NULL ),
|
|
|
|
|
mpEdIndication ( NULL ),
|
|
|
|
|
mpFtText ( NULL ),
|
|
|
|
|
mpEdText ( NULL ),
|
|
|
|
|
mpBtScript ( NULL ),
|
2006-11-07 13:49:37 +00:00
|
|
|
|
mbIsCloseDisabled ( sal_False ),
|
2000-09-18 16:07:07 +00:00
|
|
|
|
mpDialog ( pParent ),
|
|
|
|
|
mbStdControlsInit ( FALSE )
|
2006-11-07 13:49:37 +00:00
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
// create bookmark-window
|
|
|
|
|
mpMarkWnd = new SvxHlinkDlgMarkWnd ( this );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SvxHyperlinkTabPageBase::~SvxHyperlinkTabPageBase ()
|
|
|
|
|
{
|
|
|
|
|
maTimer.Stop();
|
|
|
|
|
|
|
|
|
|
if ( mbStdControlsInit )
|
|
|
|
|
{
|
|
|
|
|
delete mpGrpMore;
|
|
|
|
|
delete mpFtFrame;
|
|
|
|
|
delete mpCbbFrame;
|
|
|
|
|
delete mpFtForm;
|
|
|
|
|
delete mpLbForm;
|
|
|
|
|
delete mpFtIndication;
|
|
|
|
|
delete mpEdIndication;
|
|
|
|
|
delete mpFtText;
|
|
|
|
|
delete mpEdText ;
|
|
|
|
|
delete mpBtScript;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
delete mpMarkWnd;
|
|
|
|
|
}
|
|
|
|
|
|
2006-10-12 11:14:56 +00:00
|
|
|
|
void SvxHyperlinkTabPageBase::ActivatePage()
|
|
|
|
|
{
|
|
|
|
|
TabPage::ActivatePage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SvxHyperlinkTabPageBase::DeactivatePage()
|
|
|
|
|
{
|
|
|
|
|
TabPage::DeactivatePage();
|
|
|
|
|
}
|
|
|
|
|
|
2006-11-07 13:49:37 +00:00
|
|
|
|
sal_Bool SvxHyperlinkTabPageBase::QueryClose()
|
|
|
|
|
{
|
|
|
|
|
return !mbIsCloseDisabled;
|
|
|
|
|
}
|
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
|
void SvxHyperlinkTabPageBase::InitStdControls ()
|
|
|
|
|
{
|
|
|
|
|
if ( !mbStdControlsInit )
|
|
|
|
|
{
|
2007-04-26 06:33:49 +00:00
|
|
|
|
mpGrpMore = new FixedLine ( this, ResId (GRP_MORE, *m_pResMgr) );
|
|
|
|
|
mpFtFrame = new FixedText ( this, ResId (FT_FRAME, *m_pResMgr) );
|
|
|
|
|
mpCbbFrame = new SvxFramesComboBox ( this, ResId (CB_FRAME, *m_pResMgr), GetDispatcher() );
|
|
|
|
|
mpFtForm = new FixedText ( this, ResId (FT_FORM, *m_pResMgr) );
|
|
|
|
|
mpLbForm = new ListBox ( this, ResId (LB_FORM, *m_pResMgr) );
|
|
|
|
|
mpFtIndication= new FixedText ( this, ResId (FT_INDICATION, *m_pResMgr) );
|
|
|
|
|
mpEdIndication= new Edit ( this, ResId (ED_INDICATION, *m_pResMgr) );
|
|
|
|
|
mpFtText = new FixedText ( this, ResId (FT_TEXT, *m_pResMgr) );
|
|
|
|
|
mpEdText = new Edit ( this, ResId (ED_TEXT, *m_pResMgr) );
|
|
|
|
|
mpBtScript = new ImageButton ( this, ResId (BTN_SCRIPT, *m_pResMgr) );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
mpBtScript->SetClickHdl ( LINK ( this, SvxHyperlinkTabPageBase, ClickScriptHdl_Impl ) );
|
2002-05-21 08:06:09 +00:00
|
|
|
|
|
2007-04-26 06:33:49 +00:00
|
|
|
|
mpBtScript->SetModeImage( Image( ResId( IMG_SCRIPT_HC, *m_pResMgr ) ), BMP_COLOR_HIGHCONTRAST );
|
2002-07-16 11:51:46 +00:00
|
|
|
|
mpBtScript->EnableTextDisplay (FALSE);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mbStdControlsInit = TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Move Extra-Window
|
|
|
|
|
|*
|
|
|
|
|
\************************************************************************/
|
|
|
|
|
|
|
|
|
|
BOOL SvxHyperlinkTabPageBase::MoveToExtraWnd( Point aNewPos, BOOL bDisConnectDlg )
|
|
|
|
|
{
|
|
|
|
|
BOOL bReturn = mpMarkWnd->MoveTo ( aNewPos );
|
2000-11-22 12:46:00 +00:00
|
|
|
|
|
|
|
|
|
if( bDisConnectDlg )
|
|
|
|
|
mpMarkWnd->ConnectToDialog( FALSE );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
return ( !bReturn && IsMarkWndVisible() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Show Extra-Window
|
|
|
|
|
|*
|
|
|
|
|
\************************************************************************/
|
|
|
|
|
|
|
|
|
|
void SvxHyperlinkTabPageBase::ShowMarkWnd ()
|
|
|
|
|
{
|
|
|
|
|
( ( Window* ) mpMarkWnd )->Show();
|
|
|
|
|
|
2001-11-06 15:20:11 +00:00
|
|
|
|
// Size of dialog-window in screen pixels
|
|
|
|
|
Rectangle aDlgRect( mpDialog->GetWindowExtentsRelative( NULL ) );
|
|
|
|
|
Point aDlgPos ( aDlgRect.TopLeft() );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
Size aDlgSize ( mpDialog->GetSizePixel () );
|
|
|
|
|
|
2001-11-06 15:20:11 +00:00
|
|
|
|
// Absolute size of the screen
|
|
|
|
|
Rectangle aScreen( mpDialog->GetDesktopRectPixel() );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
// Size of Extrawindow
|
|
|
|
|
Size aExtraWndSize( mpMarkWnd->GetSizePixel () );
|
|
|
|
|
|
2001-11-06 15:20:11 +00:00
|
|
|
|
// mpMarkWnd is a child of mpDialog, so coordinates for positioning must be relative to mpDialog
|
|
|
|
|
if( aDlgPos.X()+(1.05*aDlgSize.Width())+aExtraWndSize.Width() > aScreen.Right() )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
2001-11-06 15:20:11 +00:00
|
|
|
|
if( aDlgPos.X() - ( 0.05*aDlgSize.Width() ) - aExtraWndSize.Width() < 0 )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
// Pos Extrawindow anywhere
|
2001-11-06 15:20:11 +00:00
|
|
|
|
MoveToExtraWnd( Point(10,10) ); // very unlikely
|
2000-09-18 16:07:07 +00:00
|
|
|
|
mpMarkWnd->ConnectToDialog( FALSE );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// Pos Extrawindow on the left side of Dialog
|
2001-11-06 15:20:11 +00:00
|
|
|
|
MoveToExtraWnd( Point(0,0) - Point( long(0.05*aDlgSize.Width()), 0 ) - Point( aExtraWndSize.Width(), 0 ) );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// Pos Extrawindow on the right side of Dialog
|
2001-11-06 15:20:11 +00:00
|
|
|
|
MoveToExtraWnd ( Point( long(1.05*aDlgSize.getWidth()), 0 ) );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Set size of Extra-Window
|
|
|
|
|
mpMarkWnd->SetSizePixel( Size( aExtraWndSize.Width(), aDlgSize.Height() ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Fill Dialogfields
|
|
|
|
|
|*
|
|
|
|
|
\************************************************************************/
|
|
|
|
|
|
|
|
|
|
void SvxHyperlinkTabPageBase::FillStandardDlgFields ( SvxHyperlinkItem* pHyperlinkItem )
|
|
|
|
|
{
|
|
|
|
|
// Frame
|
|
|
|
|
USHORT nPos = mpCbbFrame->GetEntryPos ( pHyperlinkItem->GetTargetFrame() );
|
|
|
|
|
if ( nPos != LISTBOX_ENTRY_NOTFOUND)
|
|
|
|
|
mpCbbFrame->SetText ( pHyperlinkItem->GetTargetFrame() );
|
|
|
|
|
|
|
|
|
|
// Form
|
|
|
|
|
String aStrFormText = SVX_RESSTR( RID_SVXSTR_HYPERDLG_FROM_TEXT );
|
|
|
|
|
String aStrFormButton = SVX_RESSTR( RID_SVXSTR_HYPERDLG_FORM_BUTTON );
|
|
|
|
|
|
|
|
|
|
if( pHyperlinkItem->GetInsertMode() & HLINK_HTMLMODE )
|
|
|
|
|
{
|
|
|
|
|
mpLbForm->Clear();
|
|
|
|
|
mpLbForm->InsertEntry( aStrFormText );
|
|
|
|
|
mpLbForm->SelectEntryPos ( 0 );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
mpLbForm->Clear();
|
|
|
|
|
mpLbForm->InsertEntry( aStrFormText );
|
|
|
|
|
mpLbForm->InsertEntry( aStrFormButton );
|
|
|
|
|
mpLbForm->SelectEntryPos ( pHyperlinkItem->GetInsertMode() == HLINK_BUTTON ? 1 : 0 );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// URL
|
|
|
|
|
mpEdIndication->SetText ( pHyperlinkItem->GetName() );
|
|
|
|
|
|
|
|
|
|
// Name
|
|
|
|
|
mpEdText->SetText ( pHyperlinkItem->GetIntName() );
|
|
|
|
|
|
|
|
|
|
// Script-button
|
|
|
|
|
if ( !pHyperlinkItem->GetMacroEvents() )
|
|
|
|
|
mpBtScript->Disable();
|
|
|
|
|
else
|
|
|
|
|
mpBtScript->Enable();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Any action to do after apply-button is pressed
|
|
|
|
|
|*
|
|
|
|
|
\************************************************************************/
|
|
|
|
|
|
|
|
|
|
void SvxHyperlinkTabPageBase::DoApply ()
|
|
|
|
|
{
|
|
|
|
|
// default-implemtation : do nothing
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Ask page whether an insert is possible
|
|
|
|
|
|*
|
|
|
|
|
\************************************************************************/
|
|
|
|
|
|
|
|
|
|
BOOL SvxHyperlinkTabPageBase::AskApply ()
|
|
|
|
|
{
|
|
|
|
|
// default-implementation
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* This method would be called from bookmark-window to set new mark-string
|
|
|
|
|
|*
|
|
|
|
|
\************************************************************************/
|
|
|
|
|
|
2006-06-19 14:13:40 +00:00
|
|
|
|
void SvxHyperlinkTabPageBase::SetMarkStr ( String& /*aStrMark*/ )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
// default-implemtation : do nothing
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* This method will be called from the dialog-class if the state off
|
|
|
|
|
|* the online-mode has changed.
|
|
|
|
|
|*
|
|
|
|
|
\************************************************************************/
|
|
|
|
|
|
2006-06-19 14:13:40 +00:00
|
|
|
|
void SvxHyperlinkTabPageBase::SetOnlineMode( BOOL /*bEnable*/ )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
// default-implemtation : do nothing
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Set initial focus
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
|
|
|
|
void SvxHyperlinkTabPageBase::SetInitFocus()
|
|
|
|
|
{
|
|
|
|
|
GrabFocus();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Ask dialog whether the curretn doc is a HTML-doc
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
|
|
|
|
const BOOL SvxHyperlinkTabPageBase::IsHTMLDoc() const
|
|
|
|
|
{
|
|
|
|
|
return ((SvxHpLinkDlg*)mpDialog)->IsHTMLDoc();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* retrieve dispatcher
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
|
|
|
|
SfxDispatcher* SvxHyperlinkTabPageBase::GetDispatcher() const
|
|
|
|
|
{
|
|
|
|
|
return ((SvxHpLinkDlg*)mpDialog)->GetDispatcher();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Click on imagebutton : Script
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
|
|
|
|
IMPL_LINK ( SvxHyperlinkTabPageBase, ClickScriptHdl_Impl, void *, EMPTYARG )
|
|
|
|
|
{
|
|
|
|
|
SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
|
|
|
|
|
GetItemSet().GetItem (SID_HYPERLINK_GETLINK);
|
|
|
|
|
|
|
|
|
|
if ( pHyperlinkItem->GetMacroEvents() )
|
|
|
|
|
{
|
|
|
|
|
// get macros from itemset
|
|
|
|
|
const SvxMacroTableDtor* pMacroTbl = pHyperlinkItem->GetMacroTbl();
|
|
|
|
|
SvxMacroItem aItem ( GetWhich(SID_ATTR_MACROITEM) );
|
|
|
|
|
if( pMacroTbl )
|
|
|
|
|
aItem.SetMacroTable( *pMacroTbl );
|
|
|
|
|
|
|
|
|
|
// create empty itemset for macro-dlg
|
|
|
|
|
SfxItemSet* pItemSet = new SfxItemSet(SFX_APP()->GetPool(),
|
|
|
|
|
SID_ATTR_MACROITEM,
|
|
|
|
|
SID_ATTR_MACROITEM );
|
|
|
|
|
pItemSet->Put ( aItem, SID_ATTR_MACROITEM );
|
|
|
|
|
|
2006-02-07 09:19:09 +00:00
|
|
|
|
// --> PB 2006-01-13 #123474#
|
|
|
|
|
/* disable HyperLinkDlg for input while the MacroAssignDlg is working
|
|
|
|
|
because if no JAVA is installed an error box occurs and then it is possible
|
|
|
|
|
to close the HyperLinkDlg before its child (MacroAssignDlg) -> GPF
|
|
|
|
|
*/
|
|
|
|
|
BOOL bIsInputEnabled = GetParent()->IsInputEnabled();
|
|
|
|
|
if ( bIsInputEnabled )
|
|
|
|
|
GetParent()->EnableInput( FALSE );
|
|
|
|
|
// <--
|
|
|
|
|
SfxMacroAssignDlg aDlg( this, *pItemSet );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
// add events
|
2002-08-14 06:31:25 +00:00
|
|
|
|
SfxMacroTabPage *pMacroPage = (SfxMacroTabPage*) aDlg.GetTabPage();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
|
|
if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSEOVER_OBJECT )
|
|
|
|
|
pMacroPage->AddEvent( String( SVX_RESSTR(RID_SVXSTR_HYPDLG_MACROACT1) ),
|
|
|
|
|
SFX_EVENT_MOUSEOVER_OBJECT );
|
|
|
|
|
if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSECLICK_OBJECT )
|
|
|
|
|
pMacroPage->AddEvent( String( SVX_RESSTR(RID_SVXSTR_HYPDLG_MACROACT2) ),
|
|
|
|
|
SFX_EVENT_MOUSECLICK_OBJECT);
|
|
|
|
|
if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSEOUT_OBJECT )
|
|
|
|
|
pMacroPage->AddEvent( String( SVX_RESSTR(RID_SVXSTR_HYPDLG_MACROACT3) ),
|
|
|
|
|
SFX_EVENT_MOUSEOUT_OBJECT);
|
|
|
|
|
|
2006-02-07 09:19:09 +00:00
|
|
|
|
// --> PB 2006-01-13 #123474#
|
|
|
|
|
if ( bIsInputEnabled )
|
|
|
|
|
GetParent()->EnableInput( TRUE );
|
|
|
|
|
// <--
|
2000-09-18 16:07:07 +00:00
|
|
|
|
// execute dlg
|
2006-11-07 13:49:37 +00:00
|
|
|
|
DisableClose( sal_True );
|
|
|
|
|
short nRet = aDlg.Execute();
|
|
|
|
|
DisableClose( sal_False );
|
|
|
|
|
if ( RET_OK == nRet )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
{
|
|
|
|
|
const SfxItemSet* pOutSet = aDlg.GetOutputItemSet();
|
|
|
|
|
const SfxPoolItem* pItem;
|
|
|
|
|
if( SFX_ITEM_SET == pOutSet->GetItemState( SID_ATTR_MACROITEM, FALSE, &pItem ))
|
|
|
|
|
{
|
|
|
|
|
pHyperlinkItem->SetMacroTable( ((SvxMacroItem*)pItem)->GetMacroTable() );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
delete pItemSet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return( 0L );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Get Macro-Infos
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
|
|
|
|
USHORT SvxHyperlinkTabPageBase::GetMacroEvents()
|
|
|
|
|
{
|
|
|
|
|
SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
|
|
|
|
|
GetItemSet().GetItem (SID_HYPERLINK_GETLINK);
|
|
|
|
|
|
|
|
|
|
return pHyperlinkItem->GetMacroEvents();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SvxMacroTableDtor* SvxHyperlinkTabPageBase::GetMacroTable()
|
|
|
|
|
{
|
|
|
|
|
SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
|
|
|
|
|
GetItemSet().GetItem (SID_HYPERLINK_GETLINK);
|
|
|
|
|
|
|
|
|
|
return ( (SvxMacroTableDtor*)pHyperlinkItem->GetMacroTbl() );
|
|
|
|
|
}
|
|
|
|
|
|
2000-10-10 11:35:10 +00:00
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Does the given file exists ?
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
|
|
|
|
BOOL SvxHyperlinkTabPageBase::FileExists( const INetURLObject& rURL )
|
|
|
|
|
{
|
|
|
|
|
BOOL bRet = FALSE;
|
|
|
|
|
|
2004-12-13 11:15:32 +00:00
|
|
|
|
if( rURL.GetFull().getLength() > 0 )
|
2000-10-10 11:35:10 +00:00
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2001-07-30 13:49:07 +00:00
|
|
|
|
Content aCnt( rURL.GetMainURL( INetURLObject::NO_DECODE ), ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >() );
|
2000-10-10 11:35:10 +00:00
|
|
|
|
::rtl::OUString aTitle;
|
|
|
|
|
|
|
|
|
|
aCnt.getPropertyValue( ::rtl::OUString::createFromAscii( "Title" ) ) >>= aTitle;
|
|
|
|
|
bRet = ( aTitle.getLength() > 0 );
|
|
|
|
|
}
|
|
|
|
|
catch( ... )
|
|
|
|
|
{
|
|
|
|
|
DBG_ERROR( "FileExists: ucb error" );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
2002-07-25 09:51:33 +00:00
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* try to detect the current protocol that is used in aStrURL
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
2002-12-03 12:36:45 +00:00
|
|
|
|
String SvxHyperlinkTabPageBase::GetSchemeFromURL( String aStrURL )
|
2002-07-25 09:51:33 +00:00
|
|
|
|
{
|
2002-12-03 12:36:45 +00:00
|
|
|
|
String aStrScheme;
|
|
|
|
|
|
2002-07-25 09:51:33 +00:00
|
|
|
|
INetURLObject aURL( aStrURL );
|
|
|
|
|
INetProtocol aProtocol = aURL.GetProtocol();
|
|
|
|
|
|
|
|
|
|
// #77696#
|
|
|
|
|
// our new INetUrlObject now has the ability
|
|
|
|
|
// to detect if an Url is valid or not :-(
|
|
|
|
|
if ( aProtocol == INET_PROT_NOT_VALID )
|
|
|
|
|
{
|
|
|
|
|
if ( aStrURL.EqualsIgnoreCaseAscii( INET_HTTP_SCHEME, 0, 7 ) )
|
|
|
|
|
{
|
|
|
|
|
aStrScheme = String::CreateFromAscii( INET_HTTP_SCHEME );
|
|
|
|
|
}
|
|
|
|
|
else if ( aStrURL.EqualsIgnoreCaseAscii( INET_HTTPS_SCHEME, 0, 8 ) )
|
|
|
|
|
{
|
|
|
|
|
aStrScheme = String::CreateFromAscii( INET_HTTPS_SCHEME );
|
|
|
|
|
}
|
|
|
|
|
else if ( aStrURL.EqualsIgnoreCaseAscii( INET_FTP_SCHEME, 0, 6 ) )
|
|
|
|
|
{
|
|
|
|
|
aStrScheme = String::CreateFromAscii( INET_FTP_SCHEME );
|
|
|
|
|
}
|
|
|
|
|
else if ( aStrURL.EqualsIgnoreCaseAscii( INET_MAILTO_SCHEME, 0, 7 ) )
|
|
|
|
|
{
|
|
|
|
|
aStrScheme = String::CreateFromAscii( INET_MAILTO_SCHEME );
|
|
|
|
|
}
|
|
|
|
|
else if ( aStrURL.EqualsIgnoreCaseAscii( INET_NEWS_SCHEME, 0, 5 ) )
|
|
|
|
|
{
|
|
|
|
|
aStrScheme = String::CreateFromAscii( INET_NEWS_SCHEME );
|
|
|
|
|
}
|
2002-12-03 12:36:45 +00:00
|
|
|
|
else if ( aStrURL.EqualsIgnoreCaseAscii( INET_TELNET_SCHEME, 0, 9 ) )
|
|
|
|
|
{
|
|
|
|
|
aStrScheme = String::CreateFromAscii( INET_TELNET_SCHEME );
|
|
|
|
|
}
|
2002-07-25 09:51:33 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
aStrScheme = INetURLObject::GetScheme( aProtocol );
|
2002-12-03 12:36:45 +00:00
|
|
|
|
return aStrScheme;
|
2002-07-25 09:51:33 +00:00
|
|
|
|
}
|
2002-10-08 15:46:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SvxHyperlinkTabPageBase::GetDataFromCommonFields( String& aStrName,
|
|
|
|
|
String& aStrIntName, String& aStrFrame,
|
|
|
|
|
SvxLinkInsertMode& eMode )
|
|
|
|
|
{
|
|
|
|
|
aStrIntName = mpEdText->GetText();
|
|
|
|
|
aStrName = mpEdIndication->GetText();
|
|
|
|
|
aStrFrame = mpCbbFrame->GetText();
|
|
|
|
|
eMode = (SvxLinkInsertMode) (mpLbForm->GetSelectEntryPos()+1);
|
|
|
|
|
if( IsHTMLDoc() )
|
|
|
|
|
eMode = (SvxLinkInsertMode) ( UINT16(eMode) | HLINK_HTMLMODE );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* reset dialog-fields
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
|
|
|
|
void SvxHyperlinkTabPageBase::Reset( const SfxItemSet& rItemSet)
|
|
|
|
|
{
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
|
// Set dialog-fields from create-itemset
|
|
|
|
|
maStrInitURL = aEmptyStr;
|
|
|
|
|
|
|
|
|
|
SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
|
|
|
|
|
rItemSet.GetItem (SID_HYPERLINK_GETLINK);
|
|
|
|
|
|
|
|
|
|
if ( pHyperlinkItem )
|
|
|
|
|
{
|
|
|
|
|
// set dialog-fields
|
|
|
|
|
FillStandardDlgFields (pHyperlinkItem);
|
|
|
|
|
|
|
|
|
|
// set all other fields
|
|
|
|
|
FillDlgFields ( (String&)pHyperlinkItem->GetURL() );
|
|
|
|
|
|
|
|
|
|
// Store initial URL
|
|
|
|
|
maStrInitURL = pHyperlinkItem->GetURL();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Fill output-ItemSet
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
|
|
|
|
BOOL SvxHyperlinkTabPageBase::FillItemSet( SfxItemSet& rOut)
|
|
|
|
|
{
|
|
|
|
|
String aStrURL, aStrName, aStrIntName, aStrFrame;
|
|
|
|
|
SvxLinkInsertMode eMode;
|
|
|
|
|
|
|
|
|
|
GetCurentItemData ( aStrURL, aStrName, aStrIntName, aStrFrame, eMode);
|
|
|
|
|
if ( !aStrName.Len() ) //automatically create a visible name if the link is created without name
|
|
|
|
|
aStrName = CreateUiNameFromURL(aStrURL);
|
|
|
|
|
|
|
|
|
|
USHORT nEvents = GetMacroEvents();
|
|
|
|
|
SvxMacroTableDtor* pTable = GetMacroTable();
|
|
|
|
|
|
|
|
|
|
SvxHyperlinkItem aItem( SID_HYPERLINK_SETLINK, aStrName, aStrURL, aStrFrame,
|
|
|
|
|
aStrIntName, eMode, nEvents, pTable );
|
|
|
|
|
rOut.Put (aItem);
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String SvxHyperlinkTabPageBase::CreateUiNameFromURL( const String& aStrURL )
|
|
|
|
|
{
|
2002-10-15 10:54:23 +00:00
|
|
|
|
String aStrUiURL;
|
|
|
|
|
INetURLObject aURLObj( aStrURL );
|
|
|
|
|
|
|
|
|
|
switch(aURLObj.GetProtocol())
|
|
|
|
|
{
|
|
|
|
|
case INET_PROT_FILE:
|
|
|
|
|
utl::LocalFileHelper::ConvertURLToSystemPath( aURLObj.GetMainURL(INetURLObject::NO_DECODE), aStrUiURL );
|
|
|
|
|
break;
|
|
|
|
|
case INET_PROT_FTP :
|
|
|
|
|
{
|
|
|
|
|
//remove password from name
|
|
|
|
|
INetURLObject aTmpURL(aURLObj);
|
|
|
|
|
aTmpURL.SetPass(aEmptyStr);
|
|
|
|
|
aStrUiURL = aTmpURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS );
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default :
|
|
|
|
|
{
|
2002-12-03 12:36:45 +00:00
|
|
|
|
aStrUiURL = aURLObj.GetMainURL(INetURLObject::DECODE_UNAMBIGUOUS);
|
2002-10-15 10:54:23 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2003-04-24 13:46:53 +00:00
|
|
|
|
if(!aStrUiURL.Len())
|
|
|
|
|
return aStrURL;
|
2002-10-15 10:54:23 +00:00
|
|
|
|
return aStrUiURL;
|
2002-10-08 15:46:17 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
|
|*
|
|
|
|
|
|* Activate / Deactivate Tabpage
|
|
|
|
|
|*
|
|
|
|
|
|************************************************************************/
|
|
|
|
|
|
|
|
|
|
void SvxHyperlinkTabPageBase::ActivatePage( const SfxItemSet& rItemSet )
|
|
|
|
|
{
|
|
|
|
|
///////////////////////////////////////
|
|
|
|
|
// Set dialog-fields from input-itemset
|
|
|
|
|
SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
|
|
|
|
|
rItemSet.GetItem (SID_HYPERLINK_GETLINK);
|
|
|
|
|
|
|
|
|
|
if ( pHyperlinkItem )
|
|
|
|
|
{
|
|
|
|
|
// standard-fields
|
|
|
|
|
FillStandardDlgFields (pHyperlinkItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// show mark-window if it was open before
|
|
|
|
|
if ( ShouldOpenMarkWnd () )
|
|
|
|
|
ShowMarkWnd ();
|
|
|
|
|
}
|
|
|
|
|
|
2006-06-19 14:13:40 +00:00
|
|
|
|
int SvxHyperlinkTabPageBase::DeactivatePage( SfxItemSet* _pSet)
|
2002-10-08 15:46:17 +00:00
|
|
|
|
{
|
|
|
|
|
// hide mark-wnd
|
|
|
|
|
SetMarkWndShouldOpen( IsMarkWndVisible () );
|
|
|
|
|
HideMarkWnd ();
|
|
|
|
|
|
|
|
|
|
// retrieve data of dialog
|
|
|
|
|
String aStrURL, aStrName, aStrIntName, aStrFrame;
|
|
|
|
|
SvxLinkInsertMode eMode;
|
|
|
|
|
|
|
|
|
|
GetCurentItemData ( aStrURL, aStrName, aStrIntName, aStrFrame, eMode);
|
|
|
|
|
|
|
|
|
|
USHORT nEvents = GetMacroEvents();
|
|
|
|
|
SvxMacroTableDtor* pTable = GetMacroTable();
|
|
|
|
|
|
2006-06-19 14:13:40 +00:00
|
|
|
|
if( _pSet )
|
2002-10-08 15:46:17 +00:00
|
|
|
|
{
|
|
|
|
|
SvxHyperlinkItem aItem( SID_HYPERLINK_GETLINK, aStrName, aStrURL, aStrFrame,
|
|
|
|
|
aStrIntName, eMode, nEvents, pTable );
|
2006-06-19 14:13:40 +00:00
|
|
|
|
_pSet->Put( aItem );
|
2002-10-08 15:46:17 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return( LEAVE_PAGE );
|
|
|
|
|
}
|
2006-06-19 14:13:40 +00:00
|
|
|
|
|
|
|
|
|
BOOL SvxHyperlinkTabPageBase::ShouldOpenMarkWnd()
|
|
|
|
|
{
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SvxHyperlinkTabPageBase::SetMarkWndShouldOpen(BOOL)
|
|
|
|
|
{
|
|
|
|
|
}
|