12ee96f1cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
32ee96f1cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
42ee96f1cSAndrew Rist * or more contributor license agreements. See the NOTICE file
52ee96f1cSAndrew Rist * distributed with this work for additional information
62ee96f1cSAndrew Rist * regarding copyright ownership. The ASF licenses this file
72ee96f1cSAndrew Rist * to you under the Apache License, Version 2.0 (the
82ee96f1cSAndrew Rist * "License"); you may not use this file except in compliance
92ee96f1cSAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
112ee96f1cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
132ee96f1cSAndrew Rist * Unless required by applicable law or agreed to in writing,
142ee96f1cSAndrew Rist * software distributed under the License is distributed on an
152ee96f1cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
162ee96f1cSAndrew Rist * KIND, either express or implied. See the License for the
172ee96f1cSAndrew Rist * specific language governing permissions and limitations
182ee96f1cSAndrew Rist * under the License.
19cdf0e10cSrcweir *
202ee96f1cSAndrew Rist *************************************************************/
212ee96f1cSAndrew Rist
222ee96f1cSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_cui.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include <sfx2/frame.hxx>
28cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
29cdf0e10cSrcweir #include <sot/formats.hxx>
30cdf0e10cSrcweir #include <sfx2/sfxsids.hrc>
31cdf0e10cSrcweir #include <svl/macitem.hxx>
32cdf0e10cSrcweir #include <ucbhelper/content.hxx>
33cdf0e10cSrcweir #include <unotools/localfilehelper.hxx>
34cdf0e10cSrcweir #include "hyperdlg.hrc"
35cdf0e10cSrcweir #include "cuihyperdlg.hxx" //CHINA001
36cdf0e10cSrcweir #include "hltpbase.hxx"
37cdf0e10cSrcweir #include "macroass.hxx"
38cdf0e10cSrcweir #include <svx/svxdlg.hxx> //CHINA001
39cdf0e10cSrcweir #include <cuires.hrc> //CHINA001
40cdf0e10cSrcweir
41cdf0e10cSrcweir using namespace ::ucbhelper;
42cdf0e10cSrcweir
43cdf0e10cSrcweir //########################################################################
44cdf0e10cSrcweir //# #
45*a8b96517SJohn Bampton //# ComboBox-Control, which is filled with all current framenames #
46cdf0e10cSrcweir //# #
47cdf0e10cSrcweir //########################################################################
48cdf0e10cSrcweir
49cdf0e10cSrcweir /*************************************************************************
50cdf0e10cSrcweir |*
51a8f4084dSMatthias Seidel |* Constructor / Destructor
52cdf0e10cSrcweir |*
53cdf0e10cSrcweir |************************************************************************/
54cdf0e10cSrcweir
SvxFramesComboBox(Window * pParent,const ResId & rResId,SfxDispatcher * pDispatch)55cdf0e10cSrcweir SvxFramesComboBox::SvxFramesComboBox ( Window* pParent, const ResId& rResId,
56cdf0e10cSrcweir SfxDispatcher* pDispatch )
57cdf0e10cSrcweir : ComboBox (pParent, rResId)
58cdf0e10cSrcweir {
59cdf0e10cSrcweir TargetList* pList = new TargetList;
60cdf0e10cSrcweir SfxViewFrame* pViewFrame = pDispatch ? pDispatch->GetFrame() : 0;
61cdf0e10cSrcweir SfxFrame* pFrame = pViewFrame ? &pViewFrame->GetTopFrame() : 0;
62cdf0e10cSrcweir if ( pFrame )
63cdf0e10cSrcweir {
64cdf0e10cSrcweir pFrame->GetTargetList(*pList);
65cdf0e10cSrcweir sal_uInt16 nCount = (sal_uInt16)pList->Count();
66cdf0e10cSrcweir if( nCount )
67cdf0e10cSrcweir {
68cdf0e10cSrcweir sal_uInt16 i;
69cdf0e10cSrcweir for ( i = 0; i < nCount; i++ )
70cdf0e10cSrcweir {
71cdf0e10cSrcweir InsertEntry(*pList->GetObject(i));
72cdf0e10cSrcweir }
73cdf0e10cSrcweir for ( i = nCount; i; i-- )
74cdf0e10cSrcweir {
75cdf0e10cSrcweir delete pList->GetObject( i - 1 );
76cdf0e10cSrcweir }
77cdf0e10cSrcweir }
78cdf0e10cSrcweir delete pList;
79cdf0e10cSrcweir }
80cdf0e10cSrcweir }
81cdf0e10cSrcweir
~SvxFramesComboBox()82cdf0e10cSrcweir SvxFramesComboBox::~SvxFramesComboBox ()
83cdf0e10cSrcweir {
84cdf0e10cSrcweir }
85cdf0e10cSrcweir //########################################################################
86cdf0e10cSrcweir //# #
87cdf0e10cSrcweir //# ComboBox-Control for URL's with History and Autocompletion #
88cdf0e10cSrcweir //# #
89cdf0e10cSrcweir //########################################################################
90cdf0e10cSrcweir
91cdf0e10cSrcweir /*************************************************************************
92cdf0e10cSrcweir |*
93a8f4084dSMatthias Seidel |* Constructor / Destructor
94cdf0e10cSrcweir |*
95cdf0e10cSrcweir |************************************************************************/
96cdf0e10cSrcweir
SvxHyperURLBox(Window * pParent,INetProtocol eSmart,sal_Bool bAddresses)97cdf0e10cSrcweir SvxHyperURLBox::SvxHyperURLBox( Window* pParent, INetProtocol eSmart, sal_Bool bAddresses )
98cdf0e10cSrcweir : SvtURLBox ( pParent, eSmart ),
99cdf0e10cSrcweir DropTargetHelper ( this ),
100cdf0e10cSrcweir mbAccessAddress (bAddresses)
101cdf0e10cSrcweir {
102cdf0e10cSrcweir }
103cdf0e10cSrcweir
AcceptDrop(const AcceptDropEvent &)104cdf0e10cSrcweir sal_Int8 SvxHyperURLBox::AcceptDrop( const AcceptDropEvent& /* rEvt */ )
105cdf0e10cSrcweir {
106cdf0e10cSrcweir return( IsDropFormatSupported( FORMAT_STRING ) ? DND_ACTION_COPY : DND_ACTION_NONE );
107cdf0e10cSrcweir }
108cdf0e10cSrcweir
ExecuteDrop(const ExecuteDropEvent & rEvt)109cdf0e10cSrcweir sal_Int8 SvxHyperURLBox::ExecuteDrop( const ExecuteDropEvent& rEvt )
110cdf0e10cSrcweir {
111cdf0e10cSrcweir TransferableDataHelper aDataHelper( rEvt.maDropEvent.Transferable );
112cdf0e10cSrcweir String aString;
113cdf0e10cSrcweir sal_Int8 nRet = DND_ACTION_NONE;
114cdf0e10cSrcweir
115cdf0e10cSrcweir if( aDataHelper.GetString( FORMAT_STRING, aString ) )
116cdf0e10cSrcweir {
117cdf0e10cSrcweir SetText( aString );
118cdf0e10cSrcweir nRet = DND_ACTION_COPY;
119cdf0e10cSrcweir }
120cdf0e10cSrcweir
121cdf0e10cSrcweir return nRet;
122cdf0e10cSrcweir }
123cdf0e10cSrcweir
124cdf0e10cSrcweir /*
125cdf0e10cSrcweir Diese Methode parsed eine EMailadresse aus einem D&D-DataObjekt aus der Adre�datenbank heraus
126cdf0e10cSrcweir
127cdf0e10cSrcweir #ifndef _OFF_OFADBMGR_HXX
128cdf0e10cSrcweir #include <offmgr/ofadbmgr.hxx>
129cdf0e10cSrcweir #endif
130cdf0e10cSrcweir #ifndef _SFX_APP_HXX
131cdf0e10cSrcweir #include <offmgr/app.hxx>
132cdf0e10cSrcweir #endif
133cdf0e10cSrcweir #ifndef _SDB_SDBCURS_HXX
134cdf0e10cSrcweir #include <sdb/sdbcurs.hxx>
135cdf0e10cSrcweir #endif
136cdf0e10cSrcweir
137cdf0e10cSrcweir #define DB_DD_DELIM ((char)11)
138cdf0e10cSrcweir
139cdf0e10cSrcweir String SvxHyperURLBox::GetAllEmailNamesFromDragItem( sal_uInt16 nItem )
140cdf0e10cSrcweir {
141cdf0e10cSrcweir #if !defined( ICC ) && !defined( SOLARIS )
142cdf0e10cSrcweir String aAddress;
143cdf0e10cSrcweir
144cdf0e10cSrcweir if ( DragServer::HasFormat( nItem, SOT_FORMATSTR_ID_SBA_DATAEXCHANGE ) )
145cdf0e10cSrcweir {
146cdf0e10cSrcweir sal_uLong nLen = DragServer::GetDataLen( nItem, SOT_FORMATSTR_ID_SBA_DATAEXCHANGE ) - 1;
147cdf0e10cSrcweir sal_uInt16 i = 0;
148cdf0e10cSrcweir String aTxt;
149cdf0e10cSrcweir char *pTxt = aTxt.AllocStrBuf( (sal_uInt16)nLen );
150cdf0e10cSrcweir DragServer::PasteData( nItem, pTxt, nLen, SOT_FORMATSTR_ID_SBA_DATAEXCHANGE );
151cdf0e10cSrcweir String aDBName = aTxt.GetToken( i++, DB_DD_DELIM );
152cdf0e10cSrcweir String aTableName = aTxt.GetToken( i++, DB_DD_DELIM );
153cdf0e10cSrcweir i++; // Format"anderung
154cdf0e10cSrcweir String aStatement = aTxt.GetToken( i++, DB_DD_DELIM );
155cdf0e10cSrcweir if ( !aStatement )
156cdf0e10cSrcweir {
157cdf0e10cSrcweir aDBName += DB_DELIM;
158cdf0e10cSrcweir aDBName += aTableName;
159cdf0e10cSrcweir }
160cdf0e10cSrcweir else
161cdf0e10cSrcweir {
162cdf0e10cSrcweir // use here another delimiter, because the OfaDBMgr uses two
163cdf0e10cSrcweir // delimiters ( (char)11 and ; )
164cdf0e10cSrcweir aDBName += ';';
165cdf0e10cSrcweir aDBName += aStatement;
166cdf0e10cSrcweir }
167cdf0e10cSrcweir SbaSelectionListRef pSelectionList;
168cdf0e10cSrcweir pSelectionList.Clear();
169cdf0e10cSrcweir pSelectionList = new SbaSelectionList;
170cdf0e10cSrcweir sal_uInt16 nTokCnt = aTxt.GetTokenCount( DB_DD_DELIM );
171cdf0e10cSrcweir
172cdf0e10cSrcweir for ( ; i < nTokCnt; ++i )
173cdf0e10cSrcweir pSelectionList->Insert(
174cdf0e10cSrcweir (void*)(sal_uInt16)aTxt.GetToken( i, DB_DD_DELIM ), LIST_APPEND );
175cdf0e10cSrcweir
176cdf0e10cSrcweir OfaDBMgr* pDBMgr = SFX_APP()->GetOfaDBMgr();
177cdf0e10cSrcweir sal_Bool bBasic = DBMGR_STD;
178cdf0e10cSrcweir
179cdf0e10cSrcweir if ( !pDBMgr->OpenDB( bBasic, aDBName ) )
180cdf0e10cSrcweir return aAddress;
181cdf0e10cSrcweir
182cdf0e10cSrcweir OfaDBParam& rParam = pDBMgr->GetDBData( bBasic );
183cdf0e10cSrcweir pDBMgr->ChangeStatement( bBasic, aStatement );
184cdf0e10cSrcweir rParam.pSelectionList->Clear();
185cdf0e10cSrcweir
186cdf0e10cSrcweir if ( pSelectionList.Is() &&
187cdf0e10cSrcweir (long)pSelectionList->GetObject(0) != -1L )
188cdf0e10cSrcweir *rParam.pSelectionList = *pSelectionList;
189cdf0e10cSrcweir
190cdf0e10cSrcweir if ( !pDBMgr->ToFirstSelectedRecord( bBasic ) )
191cdf0e10cSrcweir {
192cdf0e10cSrcweir pDBMgr->CloseAll();
193cdf0e10cSrcweir return aAddress;
194cdf0e10cSrcweir }
195cdf0e10cSrcweir
196cdf0e10cSrcweir if ( pDBMgr->IsSuccessful( bBasic ) )
197cdf0e10cSrcweir {
198cdf0e10cSrcweir // Spaltenk"opfe
199cdf0e10cSrcweir SbaDBDataDefRef aDBDef = pDBMgr->OpenColumnNames( bBasic );
200cdf0e10cSrcweir
201cdf0e10cSrcweir if ( aDBDef.Is() )
202cdf0e10cSrcweir {
203cdf0e10cSrcweir SbaColumn* pCol = aDBDef->GetColumn("EMAIL");
204cdf0e10cSrcweir sal_uLong nPos = 0;
205cdf0e10cSrcweir
206cdf0e10cSrcweir if ( pCol )
207cdf0e10cSrcweir nPos = aDBDef->GetOriginalColumns().GetPos( pCol ) + 1;
208cdf0e10cSrcweir for ( i = 0 ; nPos && i < pSelectionList->Count(); ++i )
209cdf0e10cSrcweir {
210cdf0e10cSrcweir sal_uLong nIndex = (sal_uLong)pSelectionList->GetObject(i);
211cdf0e10cSrcweir
212cdf0e10cSrcweir // N"achsten zu lesenden Datensatz ansteuern
213cdf0e10cSrcweir
214cdf0e10cSrcweir sal_Bool bEnd = rParam.GetCursor()->IsOffRange();
215cdf0e10cSrcweir
216cdf0e10cSrcweir if ( !bEnd )
217cdf0e10cSrcweir {
218cdf0e10cSrcweir const ODbRowRef aRow =
219cdf0e10cSrcweir pDBMgr->GetSelectedRecord( bBasic, i );
220cdf0e10cSrcweir
221cdf0e10cSrcweir if ( aRow.Is() )
222cdf0e10cSrcweir {
223cdf0e10cSrcweir aAddress += pDBMgr->
224cdf0e10cSrcweir ImportDBField( (sal_uInt16)nPos, &aDBDef, aRow.getBodyPtr() );
225cdf0e10cSrcweir aAddress += ',';
226cdf0e10cSrcweir }
227cdf0e10cSrcweir else
228cdf0e10cSrcweir {
229cdf0e10cSrcweir aAddress.Erase();
230cdf0e10cSrcweir break;
231cdf0e10cSrcweir }
232cdf0e10cSrcweir }
233cdf0e10cSrcweir else
234cdf0e10cSrcweir break;
235cdf0e10cSrcweir }
236cdf0e10cSrcweir }
237cdf0e10cSrcweir }
238cdf0e10cSrcweir pDBMgr->CloseAll();
239cdf0e10cSrcweir }
240cdf0e10cSrcweir aAddress.EraseTrailingChars( ',' );
241cdf0e10cSrcweir return aAddress;
242cdf0e10cSrcweir #else
243cdf0e10cSrcweir return String();
244cdf0e10cSrcweir #endif
245cdf0e10cSrcweir }
246cdf0e10cSrcweir */
247cdf0e10cSrcweir
Select()248cdf0e10cSrcweir void SvxHyperURLBox::Select()
249cdf0e10cSrcweir {
250cdf0e10cSrcweir SvtURLBox::Select();
251cdf0e10cSrcweir }
Modify()252cdf0e10cSrcweir void SvxHyperURLBox::Modify()
253cdf0e10cSrcweir {
254cdf0e10cSrcweir SvtURLBox::Modify();
255cdf0e10cSrcweir }
Notify(NotifyEvent & rNEvt)256cdf0e10cSrcweir long SvxHyperURLBox::Notify( NotifyEvent& rNEvt )
257cdf0e10cSrcweir {
258cdf0e10cSrcweir return SvtURLBox::Notify( rNEvt );
259cdf0e10cSrcweir }
PreNotify(NotifyEvent & rNEvt)260cdf0e10cSrcweir long SvxHyperURLBox::PreNotify( NotifyEvent& rNEvt )
261cdf0e10cSrcweir {
262cdf0e10cSrcweir return SvtURLBox::PreNotify( rNEvt );
263cdf0e10cSrcweir }
264cdf0e10cSrcweir
265cdf0e10cSrcweir //########################################################################
266cdf0e10cSrcweir //# #
267cdf0e10cSrcweir //# Hyperlink-Dialog: Tabpages-Baseclass #
268cdf0e10cSrcweir //# #
269cdf0e10cSrcweir //########################################################################
270cdf0e10cSrcweir
271cdf0e10cSrcweir /*************************************************************************
272cdf0e10cSrcweir |*
273cdf0e10cSrcweir |* Con/Destructor, Initialize
274cdf0e10cSrcweir |*
275cdf0e10cSrcweir \************************************************************************/
276cdf0e10cSrcweir
SvxHyperlinkTabPageBase(Window * pParent,const ResId & rResId,const SfxItemSet & rItemSet)277cdf0e10cSrcweir SvxHyperlinkTabPageBase::SvxHyperlinkTabPageBase ( Window *pParent,
278cdf0e10cSrcweir const ResId &rResId,
279cdf0e10cSrcweir const SfxItemSet& rItemSet )
280cdf0e10cSrcweir : IconChoicePage ( pParent, rResId, rItemSet ),
281cdf0e10cSrcweir mpGrpMore ( NULL ),
282cdf0e10cSrcweir mpFtFrame ( NULL ),
283cdf0e10cSrcweir mpCbbFrame ( NULL ),
284cdf0e10cSrcweir mpFtForm ( NULL ),
285cdf0e10cSrcweir mpLbForm ( NULL ),
286cdf0e10cSrcweir mpFtIndication ( NULL ),
287cdf0e10cSrcweir mpEdIndication ( NULL ),
288cdf0e10cSrcweir mpFtText ( NULL ),
289cdf0e10cSrcweir mpEdText ( NULL ),
290cdf0e10cSrcweir mpBtScript ( NULL ),
291cdf0e10cSrcweir mbIsCloseDisabled ( sal_False ),
292cdf0e10cSrcweir mpDialog ( pParent ),
293cdf0e10cSrcweir mbStdControlsInit ( sal_False ),
294cdf0e10cSrcweir aEmptyStr()
295cdf0e10cSrcweir {
296cdf0e10cSrcweir // create bookmark-window
297cdf0e10cSrcweir mpMarkWnd = new SvxHlinkDlgMarkWnd ( this );
298cdf0e10cSrcweir }
299cdf0e10cSrcweir
~SvxHyperlinkTabPageBase()300cdf0e10cSrcweir SvxHyperlinkTabPageBase::~SvxHyperlinkTabPageBase ()
301cdf0e10cSrcweir {
302cdf0e10cSrcweir maTimer.Stop();
303cdf0e10cSrcweir
304cdf0e10cSrcweir if ( mbStdControlsInit )
305cdf0e10cSrcweir {
306cdf0e10cSrcweir delete mpGrpMore;
307cdf0e10cSrcweir delete mpFtFrame;
308cdf0e10cSrcweir delete mpCbbFrame;
309cdf0e10cSrcweir delete mpFtForm;
310cdf0e10cSrcweir delete mpLbForm;
311cdf0e10cSrcweir delete mpFtIndication;
312cdf0e10cSrcweir delete mpEdIndication;
313cdf0e10cSrcweir delete mpFtText;
314cdf0e10cSrcweir delete mpEdText ;
315cdf0e10cSrcweir delete mpBtScript;
316cdf0e10cSrcweir }
317cdf0e10cSrcweir
318cdf0e10cSrcweir delete mpMarkWnd;
319cdf0e10cSrcweir }
320cdf0e10cSrcweir
ActivatePage()321cdf0e10cSrcweir void SvxHyperlinkTabPageBase::ActivatePage()
322cdf0e10cSrcweir {
323cdf0e10cSrcweir TabPage::ActivatePage();
324cdf0e10cSrcweir }
325cdf0e10cSrcweir
DeactivatePage()326cdf0e10cSrcweir void SvxHyperlinkTabPageBase::DeactivatePage()
327cdf0e10cSrcweir {
328cdf0e10cSrcweir TabPage::DeactivatePage();
329cdf0e10cSrcweir }
330cdf0e10cSrcweir
QueryClose()331cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::QueryClose()
332cdf0e10cSrcweir {
333cdf0e10cSrcweir return !mbIsCloseDisabled;
334cdf0e10cSrcweir }
335cdf0e10cSrcweir
InitStdControls()336cdf0e10cSrcweir void SvxHyperlinkTabPageBase::InitStdControls ()
337cdf0e10cSrcweir {
338cdf0e10cSrcweir if ( !mbStdControlsInit )
339cdf0e10cSrcweir {
340cdf0e10cSrcweir mpGrpMore = new FixedLine ( this, ResId (GRP_MORE, *m_pResMgr) );
341cdf0e10cSrcweir mpFtFrame = new FixedText ( this, ResId (FT_FRAME, *m_pResMgr) );
342cdf0e10cSrcweir mpCbbFrame = new SvxFramesComboBox ( this, ResId (CB_FRAME, *m_pResMgr), GetDispatcher() );
343cdf0e10cSrcweir mpFtForm = new FixedText ( this, ResId (FT_FORM, *m_pResMgr) );
344cdf0e10cSrcweir mpLbForm = new ListBox ( this, ResId (LB_FORM, *m_pResMgr) );
345cdf0e10cSrcweir mpFtIndication= new FixedText ( this, ResId (FT_INDICATION, *m_pResMgr) );
346cdf0e10cSrcweir mpEdIndication= new Edit ( this, ResId (ED_INDICATION, *m_pResMgr) );
347cdf0e10cSrcweir mpFtText = new FixedText ( this, ResId (FT_TEXT, *m_pResMgr) );
348cdf0e10cSrcweir mpEdText = new Edit ( this, ResId (ED_TEXT, *m_pResMgr) );
349cdf0e10cSrcweir mpBtScript = new ImageButton ( this, ResId (BTN_SCRIPT, *m_pResMgr) );
350cdf0e10cSrcweir
351cdf0e10cSrcweir mpBtScript->SetClickHdl ( LINK ( this, SvxHyperlinkTabPageBase, ClickScriptHdl_Impl ) );
352cdf0e10cSrcweir
353cdf0e10cSrcweir mpBtScript->SetModeImage( Image( ResId( IMG_SCRIPT_HC, *m_pResMgr ) ), BMP_COLOR_HIGHCONTRAST );
354cdf0e10cSrcweir mpBtScript->EnableTextDisplay (sal_False);
355cdf0e10cSrcweir
356cdf0e10cSrcweir mpBtScript->SetAccessibleRelationMemberOf( mpGrpMore );
357cdf0e10cSrcweir mpBtScript->SetAccessibleRelationLabeledBy( mpFtForm );
358cdf0e10cSrcweir }
359cdf0e10cSrcweir
360cdf0e10cSrcweir mbStdControlsInit = sal_True;
361cdf0e10cSrcweir }
362cdf0e10cSrcweir
363cdf0e10cSrcweir /*************************************************************************
364cdf0e10cSrcweir |*
365cdf0e10cSrcweir |* Move Extra-Window
366cdf0e10cSrcweir |*
367cdf0e10cSrcweir \************************************************************************/
368cdf0e10cSrcweir
MoveToExtraWnd(Point aNewPos,sal_Bool bDisConnectDlg)369cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::MoveToExtraWnd( Point aNewPos, sal_Bool bDisConnectDlg )
370cdf0e10cSrcweir {
371cdf0e10cSrcweir sal_Bool bReturn = mpMarkWnd->MoveTo ( aNewPos );
372cdf0e10cSrcweir
373cdf0e10cSrcweir if( bDisConnectDlg )
374cdf0e10cSrcweir mpMarkWnd->ConnectToDialog( sal_False );
375cdf0e10cSrcweir
376cdf0e10cSrcweir return ( !bReturn && IsMarkWndVisible() );
377cdf0e10cSrcweir }
378cdf0e10cSrcweir
379cdf0e10cSrcweir /*************************************************************************
380cdf0e10cSrcweir |*
381cdf0e10cSrcweir |* Show Extra-Window
382cdf0e10cSrcweir |*
383cdf0e10cSrcweir \************************************************************************/
384cdf0e10cSrcweir
ShowMarkWnd()385cdf0e10cSrcweir void SvxHyperlinkTabPageBase::ShowMarkWnd ()
386cdf0e10cSrcweir {
387cdf0e10cSrcweir ( ( Window* ) mpMarkWnd )->Show();
388cdf0e10cSrcweir
389cdf0e10cSrcweir // Size of dialog-window in screen pixels
390cdf0e10cSrcweir Rectangle aDlgRect( mpDialog->GetWindowExtentsRelative( NULL ) );
391cdf0e10cSrcweir Point aDlgPos ( aDlgRect.TopLeft() );
392cdf0e10cSrcweir Size aDlgSize ( mpDialog->GetSizePixel () );
393cdf0e10cSrcweir
394cdf0e10cSrcweir // Absolute size of the screen
395cdf0e10cSrcweir Rectangle aScreen( mpDialog->GetDesktopRectPixel() );
396cdf0e10cSrcweir
397cdf0e10cSrcweir // Size of Extrawindow
398cdf0e10cSrcweir Size aExtraWndSize( mpMarkWnd->GetSizePixel () );
399cdf0e10cSrcweir
400cdf0e10cSrcweir // mpMarkWnd is a child of mpDialog, so coordinates for positioning must be relative to mpDialog
401cdf0e10cSrcweir if( aDlgPos.X()+(1.05*aDlgSize.Width())+aExtraWndSize.Width() > aScreen.Right() )
402cdf0e10cSrcweir {
403cdf0e10cSrcweir if( aDlgPos.X() - ( 0.05*aDlgSize.Width() ) - aExtraWndSize.Width() < 0 )
404cdf0e10cSrcweir {
405cdf0e10cSrcweir // Pos Extrawindow anywhere
406cdf0e10cSrcweir MoveToExtraWnd( Point(10,10) ); // very unlikely
407cdf0e10cSrcweir mpMarkWnd->ConnectToDialog( sal_False );
408cdf0e10cSrcweir }
409cdf0e10cSrcweir else
410cdf0e10cSrcweir {
411cdf0e10cSrcweir // Pos Extrawindow on the left side of Dialog
412cdf0e10cSrcweir MoveToExtraWnd( Point(0,0) - Point( long(0.05*aDlgSize.Width()), 0 ) - Point( aExtraWndSize.Width(), 0 ) );
413cdf0e10cSrcweir }
414cdf0e10cSrcweir }
415cdf0e10cSrcweir else
416cdf0e10cSrcweir {
417cdf0e10cSrcweir // Pos Extrawindow on the right side of Dialog
418cdf0e10cSrcweir MoveToExtraWnd ( Point( long(1.05*aDlgSize.getWidth()), 0 ) );
419cdf0e10cSrcweir }
420cdf0e10cSrcweir
421cdf0e10cSrcweir // Set size of Extra-Window
422cdf0e10cSrcweir mpMarkWnd->SetSizePixel( Size( aExtraWndSize.Width(), aDlgSize.Height() ) );
423cdf0e10cSrcweir }
424cdf0e10cSrcweir
425cdf0e10cSrcweir /*************************************************************************
426cdf0e10cSrcweir |*
427cdf0e10cSrcweir |* Fill Dialogfields
428cdf0e10cSrcweir |*
429cdf0e10cSrcweir \************************************************************************/
430cdf0e10cSrcweir
FillStandardDlgFields(SvxHyperlinkItem * pHyperlinkItem)431cdf0e10cSrcweir void SvxHyperlinkTabPageBase::FillStandardDlgFields ( SvxHyperlinkItem* pHyperlinkItem )
432cdf0e10cSrcweir {
433cdf0e10cSrcweir // Frame
434cdf0e10cSrcweir sal_uInt16 nPos = mpCbbFrame->GetEntryPos ( pHyperlinkItem->GetTargetFrame() );
435cdf0e10cSrcweir if ( nPos != LISTBOX_ENTRY_NOTFOUND)
436cdf0e10cSrcweir mpCbbFrame->SetText ( pHyperlinkItem->GetTargetFrame() );
437cdf0e10cSrcweir
438cdf0e10cSrcweir // Form
439cdf0e10cSrcweir String aStrFormText = CUI_RESSTR( RID_SVXSTR_HYPERDLG_FROM_TEXT );
440cdf0e10cSrcweir String aStrFormButton = CUI_RESSTR( RID_SVXSTR_HYPERDLG_FORM_BUTTON );
441cdf0e10cSrcweir
442cdf0e10cSrcweir if( pHyperlinkItem->GetInsertMode() & HLINK_HTMLMODE )
443cdf0e10cSrcweir {
444cdf0e10cSrcweir mpLbForm->Clear();
445cdf0e10cSrcweir mpLbForm->InsertEntry( aStrFormText );
446cdf0e10cSrcweir mpLbForm->SelectEntryPos ( 0 );
447cdf0e10cSrcweir }
448cdf0e10cSrcweir else
449cdf0e10cSrcweir {
450cdf0e10cSrcweir mpLbForm->Clear();
451cdf0e10cSrcweir mpLbForm->InsertEntry( aStrFormText );
452cdf0e10cSrcweir mpLbForm->InsertEntry( aStrFormButton );
453cdf0e10cSrcweir mpLbForm->SelectEntryPos ( pHyperlinkItem->GetInsertMode() == HLINK_BUTTON ? 1 : 0 );
454cdf0e10cSrcweir }
455cdf0e10cSrcweir
456cdf0e10cSrcweir // URL
457cdf0e10cSrcweir mpEdIndication->SetText ( pHyperlinkItem->GetName() );
458cdf0e10cSrcweir
459cdf0e10cSrcweir // Name
460cdf0e10cSrcweir mpEdText->SetText ( pHyperlinkItem->GetIntName() );
461cdf0e10cSrcweir
462cdf0e10cSrcweir // Script-button
463cdf0e10cSrcweir if ( !pHyperlinkItem->GetMacroEvents() )
464cdf0e10cSrcweir mpBtScript->Disable();
465cdf0e10cSrcweir else
466cdf0e10cSrcweir mpBtScript->Enable();
467cdf0e10cSrcweir }
468cdf0e10cSrcweir
469cdf0e10cSrcweir /*************************************************************************
470cdf0e10cSrcweir |*
471cdf0e10cSrcweir |* Any action to do after apply-button is pressed
472cdf0e10cSrcweir |*
473cdf0e10cSrcweir \************************************************************************/
474cdf0e10cSrcweir
DoApply()475cdf0e10cSrcweir void SvxHyperlinkTabPageBase::DoApply ()
476cdf0e10cSrcweir {
477cdf0e10cSrcweir // default-implemtation : do nothing
478cdf0e10cSrcweir }
479cdf0e10cSrcweir
480cdf0e10cSrcweir /*************************************************************************
481cdf0e10cSrcweir |*
482cdf0e10cSrcweir |* Ask page whether an insert is possible
483cdf0e10cSrcweir |*
484cdf0e10cSrcweir \************************************************************************/
485cdf0e10cSrcweir
AskApply()486cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::AskApply ()
487cdf0e10cSrcweir {
488cdf0e10cSrcweir // default-implementation
489cdf0e10cSrcweir return sal_True;
490cdf0e10cSrcweir }
491cdf0e10cSrcweir
492cdf0e10cSrcweir /*************************************************************************
493cdf0e10cSrcweir |*
494cdf0e10cSrcweir |* This method would be called from bookmark-window to set new mark-string
495cdf0e10cSrcweir |*
496cdf0e10cSrcweir \************************************************************************/
497cdf0e10cSrcweir
SetMarkStr(String &)498cdf0e10cSrcweir void SvxHyperlinkTabPageBase::SetMarkStr ( String& /*aStrMark*/ )
499cdf0e10cSrcweir {
500cdf0e10cSrcweir // default-implemtation : do nothing
501cdf0e10cSrcweir }
502cdf0e10cSrcweir
503cdf0e10cSrcweir /*************************************************************************
504cdf0e10cSrcweir |*
505cdf0e10cSrcweir |* This method will be called from the dialog-class if the state off
506cdf0e10cSrcweir |* the online-mode has changed.
507cdf0e10cSrcweir |*
508cdf0e10cSrcweir \************************************************************************/
509cdf0e10cSrcweir
SetOnlineMode(sal_Bool)510cdf0e10cSrcweir void SvxHyperlinkTabPageBase::SetOnlineMode( sal_Bool /*bEnable*/ )
511cdf0e10cSrcweir {
512cdf0e10cSrcweir // default-implemtation : do nothing
513cdf0e10cSrcweir }
514cdf0e10cSrcweir
515cdf0e10cSrcweir /*************************************************************************
516cdf0e10cSrcweir |*
517cdf0e10cSrcweir |* Set initial focus
518cdf0e10cSrcweir |*
519cdf0e10cSrcweir |************************************************************************/
520cdf0e10cSrcweir
SetInitFocus()521cdf0e10cSrcweir void SvxHyperlinkTabPageBase::SetInitFocus()
522cdf0e10cSrcweir {
523cdf0e10cSrcweir GrabFocus();
524cdf0e10cSrcweir }
525cdf0e10cSrcweir
526cdf0e10cSrcweir /*************************************************************************
527cdf0e10cSrcweir |*
528cdf0e10cSrcweir |* Ask dialog whether the curretn doc is a HTML-doc
529cdf0e10cSrcweir |*
530cdf0e10cSrcweir |************************************************************************/
531cdf0e10cSrcweir
IsHTMLDoc() const532cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::IsHTMLDoc() const
533cdf0e10cSrcweir {
534cdf0e10cSrcweir return ((SvxHpLinkDlg*)mpDialog)->IsHTMLDoc();
535cdf0e10cSrcweir }
536cdf0e10cSrcweir
537cdf0e10cSrcweir /*************************************************************************
538cdf0e10cSrcweir |*
539cdf0e10cSrcweir |* retrieve dispatcher
540cdf0e10cSrcweir |*
541cdf0e10cSrcweir |************************************************************************/
542cdf0e10cSrcweir
GetDispatcher() const543cdf0e10cSrcweir SfxDispatcher* SvxHyperlinkTabPageBase::GetDispatcher() const
544cdf0e10cSrcweir {
545cdf0e10cSrcweir return ((SvxHpLinkDlg*)mpDialog)->GetDispatcher();
546cdf0e10cSrcweir }
547cdf0e10cSrcweir
548cdf0e10cSrcweir /*************************************************************************
549cdf0e10cSrcweir |*
550cdf0e10cSrcweir |* Click on imagebutton : Script
551cdf0e10cSrcweir |*
552cdf0e10cSrcweir |************************************************************************/
553cdf0e10cSrcweir
IMPL_LINK(SvxHyperlinkTabPageBase,ClickScriptHdl_Impl,void *,EMPTYARG)554cdf0e10cSrcweir IMPL_LINK ( SvxHyperlinkTabPageBase, ClickScriptHdl_Impl, void *, EMPTYARG )
555cdf0e10cSrcweir {
556cdf0e10cSrcweir SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
557cdf0e10cSrcweir GetItemSet().GetItem (SID_HYPERLINK_GETLINK);
558cdf0e10cSrcweir
559cdf0e10cSrcweir if ( pHyperlinkItem->GetMacroEvents() )
560cdf0e10cSrcweir {
561cdf0e10cSrcweir // get macros from itemset
562cdf0e10cSrcweir const SvxMacroTableDtor* pMacroTbl = pHyperlinkItem->GetMacroTbl();
563cdf0e10cSrcweir SvxMacroItem aItem ( GetWhich(SID_ATTR_MACROITEM) );
564cdf0e10cSrcweir if( pMacroTbl )
565cdf0e10cSrcweir aItem.SetMacroTable( *pMacroTbl );
566cdf0e10cSrcweir
567cdf0e10cSrcweir // create empty itemset for macro-dlg
568cdf0e10cSrcweir SfxItemSet* pItemSet = new SfxItemSet(SFX_APP()->GetPool(),
569cdf0e10cSrcweir SID_ATTR_MACROITEM,
570cdf0e10cSrcweir SID_ATTR_MACROITEM );
571cdf0e10cSrcweir pItemSet->Put ( aItem, SID_ATTR_MACROITEM );
572cdf0e10cSrcweir
573cdf0e10cSrcweir // --> PB 2006-01-13 #123474#
574cdf0e10cSrcweir /* disable HyperLinkDlg for input while the MacroAssignDlg is working
575cdf0e10cSrcweir because if no JAVA is installed an error box occurs and then it is possible
576cdf0e10cSrcweir to close the HyperLinkDlg before its child (MacroAssignDlg) -> GPF
577cdf0e10cSrcweir */
578cdf0e10cSrcweir sal_Bool bIsInputEnabled = GetParent()->IsInputEnabled();
579cdf0e10cSrcweir if ( bIsInputEnabled )
580cdf0e10cSrcweir GetParent()->EnableInput( sal_False );
581cdf0e10cSrcweir // <--
582cdf0e10cSrcweir SfxMacroAssignDlg aDlg( this, mxDocumentFrame, *pItemSet );
583cdf0e10cSrcweir
584cdf0e10cSrcweir // add events
585cdf0e10cSrcweir SfxMacroTabPage *pMacroPage = (SfxMacroTabPage*) aDlg.GetTabPage();
586cdf0e10cSrcweir
587cdf0e10cSrcweir if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSEOVER_OBJECT )
588cdf0e10cSrcweir pMacroPage->AddEvent( String( CUI_RESSTR(RID_SVXSTR_HYPDLG_MACROACT1) ),
589cdf0e10cSrcweir SFX_EVENT_MOUSEOVER_OBJECT );
590cdf0e10cSrcweir if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSECLICK_OBJECT )
591cdf0e10cSrcweir pMacroPage->AddEvent( String( CUI_RESSTR(RID_SVXSTR_HYPDLG_MACROACT2) ),
592cdf0e10cSrcweir SFX_EVENT_MOUSECLICK_OBJECT);
593cdf0e10cSrcweir if ( pHyperlinkItem->GetMacroEvents() & HYPERDLG_EVENT_MOUSEOUT_OBJECT )
594cdf0e10cSrcweir pMacroPage->AddEvent( String( CUI_RESSTR(RID_SVXSTR_HYPDLG_MACROACT3) ),
595cdf0e10cSrcweir SFX_EVENT_MOUSEOUT_OBJECT);
596cdf0e10cSrcweir
597cdf0e10cSrcweir // --> PB 2006-01-13 #123474#
598cdf0e10cSrcweir if ( bIsInputEnabled )
599cdf0e10cSrcweir GetParent()->EnableInput( sal_True );
600cdf0e10cSrcweir // <--
601cdf0e10cSrcweir // execute dlg
602cdf0e10cSrcweir DisableClose( sal_True );
603cdf0e10cSrcweir short nRet = aDlg.Execute();
604cdf0e10cSrcweir DisableClose( sal_False );
605cdf0e10cSrcweir if ( RET_OK == nRet )
606cdf0e10cSrcweir {
607cdf0e10cSrcweir const SfxItemSet* pOutSet = aDlg.GetOutputItemSet();
608cdf0e10cSrcweir const SfxPoolItem* pItem;
609cdf0e10cSrcweir if( SFX_ITEM_SET == pOutSet->GetItemState( SID_ATTR_MACROITEM, sal_False, &pItem ))
610cdf0e10cSrcweir {
611cdf0e10cSrcweir pHyperlinkItem->SetMacroTable( ((SvxMacroItem*)pItem)->GetMacroTable() );
612cdf0e10cSrcweir }
613cdf0e10cSrcweir }
614cdf0e10cSrcweir delete pItemSet;
615cdf0e10cSrcweir }
616cdf0e10cSrcweir
617cdf0e10cSrcweir return( 0L );
618cdf0e10cSrcweir }
619cdf0e10cSrcweir
620cdf0e10cSrcweir /*************************************************************************
621cdf0e10cSrcweir |*
622cdf0e10cSrcweir |* Get Macro-Infos
623cdf0e10cSrcweir |*
624cdf0e10cSrcweir |************************************************************************/
625cdf0e10cSrcweir
GetMacroEvents()626cdf0e10cSrcweir sal_uInt16 SvxHyperlinkTabPageBase::GetMacroEvents()
627cdf0e10cSrcweir {
628cdf0e10cSrcweir SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
629cdf0e10cSrcweir GetItemSet().GetItem (SID_HYPERLINK_GETLINK);
630cdf0e10cSrcweir
631cdf0e10cSrcweir return pHyperlinkItem->GetMacroEvents();
632cdf0e10cSrcweir }
633cdf0e10cSrcweir
GetMacroTable()634cdf0e10cSrcweir SvxMacroTableDtor* SvxHyperlinkTabPageBase::GetMacroTable()
635cdf0e10cSrcweir {
636cdf0e10cSrcweir SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
637cdf0e10cSrcweir GetItemSet().GetItem (SID_HYPERLINK_GETLINK);
638cdf0e10cSrcweir
639cdf0e10cSrcweir return ( (SvxMacroTableDtor*)pHyperlinkItem->GetMacroTbl() );
640cdf0e10cSrcweir }
641cdf0e10cSrcweir
642cdf0e10cSrcweir /*************************************************************************
643cdf0e10cSrcweir |*
644cdf0e10cSrcweir |* Does the given file exists ?
645cdf0e10cSrcweir |*
646cdf0e10cSrcweir |************************************************************************/
647cdf0e10cSrcweir
FileExists(const INetURLObject & rURL)648cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::FileExists( const INetURLObject& rURL )
649cdf0e10cSrcweir {
650cdf0e10cSrcweir sal_Bool bRet = sal_False;
651cdf0e10cSrcweir
652cdf0e10cSrcweir if( rURL.GetFull().getLength() > 0 )
653cdf0e10cSrcweir {
654cdf0e10cSrcweir try
655cdf0e10cSrcweir {
656cdf0e10cSrcweir Content aCnt( rURL.GetMainURL( INetURLObject::NO_DECODE ), ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >() );
657cdf0e10cSrcweir ::rtl::OUString aTitle;
658cdf0e10cSrcweir
659cdf0e10cSrcweir aCnt.getPropertyValue( ::rtl::OUString::createFromAscii( "Title" ) ) >>= aTitle;
660cdf0e10cSrcweir bRet = ( aTitle.getLength() > 0 );
661cdf0e10cSrcweir }
662cdf0e10cSrcweir catch( ... )
663cdf0e10cSrcweir {
664cdf0e10cSrcweir DBG_ERROR( "FileExists: ucb error" );
665cdf0e10cSrcweir }
666cdf0e10cSrcweir }
667cdf0e10cSrcweir
668cdf0e10cSrcweir return bRet;
669cdf0e10cSrcweir }
670cdf0e10cSrcweir
671cdf0e10cSrcweir /*************************************************************************
672cdf0e10cSrcweir |*
673cdf0e10cSrcweir |* try to detect the current protocol that is used in aStrURL
674cdf0e10cSrcweir |*
675cdf0e10cSrcweir |************************************************************************/
676cdf0e10cSrcweir
GetSchemeFromURL(String aStrURL)677cdf0e10cSrcweir String SvxHyperlinkTabPageBase::GetSchemeFromURL( String aStrURL )
678cdf0e10cSrcweir {
679cdf0e10cSrcweir String aStrScheme;
680cdf0e10cSrcweir
681cdf0e10cSrcweir INetURLObject aURL( aStrURL );
682cdf0e10cSrcweir INetProtocol aProtocol = aURL.GetProtocol();
683cdf0e10cSrcweir
684cdf0e10cSrcweir // #77696#
685cdf0e10cSrcweir // our new INetUrlObject now has the ability
686cdf0e10cSrcweir // to detect if an Url is valid or not :-(
687cdf0e10cSrcweir if ( aProtocol == INET_PROT_NOT_VALID )
688cdf0e10cSrcweir {
689cdf0e10cSrcweir if ( aStrURL.EqualsIgnoreCaseAscii( INET_HTTP_SCHEME, 0, 7 ) )
690cdf0e10cSrcweir {
691cdf0e10cSrcweir aStrScheme = String::CreateFromAscii( INET_HTTP_SCHEME );
692cdf0e10cSrcweir }
693cdf0e10cSrcweir else if ( aStrURL.EqualsIgnoreCaseAscii( INET_HTTPS_SCHEME, 0, 8 ) )
694cdf0e10cSrcweir {
695cdf0e10cSrcweir aStrScheme = String::CreateFromAscii( INET_HTTPS_SCHEME );
696cdf0e10cSrcweir }
697cdf0e10cSrcweir else if ( aStrURL.EqualsIgnoreCaseAscii( INET_FTP_SCHEME, 0, 6 ) )
698cdf0e10cSrcweir {
699cdf0e10cSrcweir aStrScheme = String::CreateFromAscii( INET_FTP_SCHEME );
700cdf0e10cSrcweir }
701cdf0e10cSrcweir else if ( aStrURL.EqualsIgnoreCaseAscii( INET_MAILTO_SCHEME, 0, 7 ) )
702cdf0e10cSrcweir {
703cdf0e10cSrcweir aStrScheme = String::CreateFromAscii( INET_MAILTO_SCHEME );
704cdf0e10cSrcweir }
705cdf0e10cSrcweir else if ( aStrURL.EqualsIgnoreCaseAscii( INET_NEWS_SCHEME, 0, 5 ) )
706cdf0e10cSrcweir {
707cdf0e10cSrcweir aStrScheme = String::CreateFromAscii( INET_NEWS_SCHEME );
708cdf0e10cSrcweir }
709cdf0e10cSrcweir else if ( aStrURL.EqualsIgnoreCaseAscii( INET_TELNET_SCHEME, 0, 9 ) )
710cdf0e10cSrcweir {
711cdf0e10cSrcweir aStrScheme = String::CreateFromAscii( INET_TELNET_SCHEME );
712cdf0e10cSrcweir }
713cdf0e10cSrcweir }
714cdf0e10cSrcweir else
715cdf0e10cSrcweir aStrScheme = INetURLObject::GetScheme( aProtocol );
716cdf0e10cSrcweir return aStrScheme;
717cdf0e10cSrcweir }
718cdf0e10cSrcweir
719cdf0e10cSrcweir
GetDataFromCommonFields(String & aStrName,String & aStrIntName,String & aStrFrame,SvxLinkInsertMode & eMode)720cdf0e10cSrcweir void SvxHyperlinkTabPageBase::GetDataFromCommonFields( String& aStrName,
721cdf0e10cSrcweir String& aStrIntName, String& aStrFrame,
722cdf0e10cSrcweir SvxLinkInsertMode& eMode )
723cdf0e10cSrcweir {
724cdf0e10cSrcweir aStrIntName = mpEdText->GetText();
725cdf0e10cSrcweir aStrName = mpEdIndication->GetText();
726cdf0e10cSrcweir aStrFrame = mpCbbFrame->GetText();
727cdf0e10cSrcweir eMode = (SvxLinkInsertMode) (mpLbForm->GetSelectEntryPos()+1);
728cdf0e10cSrcweir if( IsHTMLDoc() )
729cdf0e10cSrcweir eMode = (SvxLinkInsertMode) ( sal_uInt16(eMode) | HLINK_HTMLMODE );
730cdf0e10cSrcweir }
731cdf0e10cSrcweir
732cdf0e10cSrcweir /*************************************************************************
733cdf0e10cSrcweir |*
734cdf0e10cSrcweir |* reset dialog-fields
735cdf0e10cSrcweir |*
736cdf0e10cSrcweir |************************************************************************/
737cdf0e10cSrcweir
Reset(const SfxItemSet & rItemSet)738cdf0e10cSrcweir void SvxHyperlinkTabPageBase::Reset( const SfxItemSet& rItemSet)
739cdf0e10cSrcweir {
740cdf0e10cSrcweir ///////////////////////////////////////
741cdf0e10cSrcweir // Set dialog-fields from create-itemset
742cdf0e10cSrcweir maStrInitURL = aEmptyStr;
743cdf0e10cSrcweir
744cdf0e10cSrcweir SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
745cdf0e10cSrcweir rItemSet.GetItem (SID_HYPERLINK_GETLINK);
746cdf0e10cSrcweir
747cdf0e10cSrcweir if ( pHyperlinkItem )
748cdf0e10cSrcweir {
749cdf0e10cSrcweir // set dialog-fields
750cdf0e10cSrcweir FillStandardDlgFields (pHyperlinkItem);
751cdf0e10cSrcweir
752cdf0e10cSrcweir // set all other fields
753cdf0e10cSrcweir FillDlgFields ( (String&)pHyperlinkItem->GetURL() );
754cdf0e10cSrcweir
755cdf0e10cSrcweir // Store initial URL
756cdf0e10cSrcweir maStrInitURL = pHyperlinkItem->GetURL();
757cdf0e10cSrcweir }
758cdf0e10cSrcweir }
759cdf0e10cSrcweir
760cdf0e10cSrcweir /*************************************************************************
761cdf0e10cSrcweir |*
762cdf0e10cSrcweir |* Fill output-ItemSet
763cdf0e10cSrcweir |*
764cdf0e10cSrcweir |************************************************************************/
765cdf0e10cSrcweir
FillItemSet(SfxItemSet & rOut)766cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::FillItemSet( SfxItemSet& rOut)
767cdf0e10cSrcweir {
768cdf0e10cSrcweir String aStrURL, aStrName, aStrIntName, aStrFrame;
769cdf0e10cSrcweir SvxLinkInsertMode eMode;
770cdf0e10cSrcweir
771cdf0e10cSrcweir GetCurentItemData ( aStrURL, aStrName, aStrIntName, aStrFrame, eMode);
772cdf0e10cSrcweir if ( !aStrName.Len() ) //automatically create a visible name if the link is created without name
773cdf0e10cSrcweir aStrName = CreateUiNameFromURL(aStrURL);
774cdf0e10cSrcweir
775cdf0e10cSrcweir sal_uInt16 nEvents = GetMacroEvents();
776cdf0e10cSrcweir SvxMacroTableDtor* pTable = GetMacroTable();
777cdf0e10cSrcweir
778cdf0e10cSrcweir SvxHyperlinkItem aItem( SID_HYPERLINK_SETLINK, aStrName, aStrURL, aStrFrame,
779cdf0e10cSrcweir aStrIntName, eMode, nEvents, pTable );
780cdf0e10cSrcweir rOut.Put (aItem);
781cdf0e10cSrcweir
782cdf0e10cSrcweir return sal_True;
783cdf0e10cSrcweir }
784cdf0e10cSrcweir
CreateUiNameFromURL(const String & aStrURL)785cdf0e10cSrcweir String SvxHyperlinkTabPageBase::CreateUiNameFromURL( const String& aStrURL )
786cdf0e10cSrcweir {
787cdf0e10cSrcweir String aStrUiURL;
788cdf0e10cSrcweir INetURLObject aURLObj( aStrURL );
789cdf0e10cSrcweir
790cdf0e10cSrcweir switch(aURLObj.GetProtocol())
791cdf0e10cSrcweir {
792cdf0e10cSrcweir case INET_PROT_FILE:
793cdf0e10cSrcweir utl::LocalFileHelper::ConvertURLToSystemPath( aURLObj.GetMainURL(INetURLObject::NO_DECODE), aStrUiURL );
794cdf0e10cSrcweir break;
795cdf0e10cSrcweir case INET_PROT_FTP :
796cdf0e10cSrcweir {
797cdf0e10cSrcweir //remove password from name
798cdf0e10cSrcweir INetURLObject aTmpURL(aURLObj);
799cdf0e10cSrcweir aTmpURL.SetPass(aEmptyStr);
800cdf0e10cSrcweir aStrUiURL = aTmpURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS );
801cdf0e10cSrcweir }
802cdf0e10cSrcweir break;
803cdf0e10cSrcweir default :
804cdf0e10cSrcweir {
805cdf0e10cSrcweir aStrUiURL = aURLObj.GetMainURL(INetURLObject::DECODE_UNAMBIGUOUS);
806cdf0e10cSrcweir }
807cdf0e10cSrcweir }
808cdf0e10cSrcweir if(!aStrUiURL.Len())
809cdf0e10cSrcweir return aStrURL;
810cdf0e10cSrcweir return aStrUiURL;
811cdf0e10cSrcweir }
812cdf0e10cSrcweir
813cdf0e10cSrcweir /*************************************************************************
814cdf0e10cSrcweir |*
815cdf0e10cSrcweir |* Activate / Deactivate Tabpage
816cdf0e10cSrcweir |*
817cdf0e10cSrcweir |************************************************************************/
818cdf0e10cSrcweir
ActivatePage(const SfxItemSet & rItemSet)819cdf0e10cSrcweir void SvxHyperlinkTabPageBase::ActivatePage( const SfxItemSet& rItemSet )
820cdf0e10cSrcweir {
821cdf0e10cSrcweir ///////////////////////////////////////
822cdf0e10cSrcweir // Set dialog-fields from input-itemset
823cdf0e10cSrcweir SvxHyperlinkItem *pHyperlinkItem = (SvxHyperlinkItem *)
824cdf0e10cSrcweir rItemSet.GetItem (SID_HYPERLINK_GETLINK);
825cdf0e10cSrcweir
826cdf0e10cSrcweir if ( pHyperlinkItem )
827cdf0e10cSrcweir {
828cdf0e10cSrcweir // standard-fields
829cdf0e10cSrcweir FillStandardDlgFields (pHyperlinkItem);
830cdf0e10cSrcweir }
831cdf0e10cSrcweir
832cdf0e10cSrcweir // show mark-window if it was open before
833cdf0e10cSrcweir if ( ShouldOpenMarkWnd () )
834cdf0e10cSrcweir ShowMarkWnd ();
835cdf0e10cSrcweir }
836cdf0e10cSrcweir
DeactivatePage(SfxItemSet * _pSet)837cdf0e10cSrcweir int SvxHyperlinkTabPageBase::DeactivatePage( SfxItemSet* _pSet)
838cdf0e10cSrcweir {
839cdf0e10cSrcweir // hide mark-wnd
840cdf0e10cSrcweir SetMarkWndShouldOpen( IsMarkWndVisible () );
841cdf0e10cSrcweir HideMarkWnd ();
842cdf0e10cSrcweir
843cdf0e10cSrcweir // retrieve data of dialog
844cdf0e10cSrcweir String aStrURL, aStrName, aStrIntName, aStrFrame;
845cdf0e10cSrcweir SvxLinkInsertMode eMode;
846cdf0e10cSrcweir
847cdf0e10cSrcweir GetCurentItemData ( aStrURL, aStrName, aStrIntName, aStrFrame, eMode);
848cdf0e10cSrcweir
849cdf0e10cSrcweir sal_uInt16 nEvents = GetMacroEvents();
850cdf0e10cSrcweir SvxMacroTableDtor* pTable = GetMacroTable();
851cdf0e10cSrcweir
852cdf0e10cSrcweir if( _pSet )
853cdf0e10cSrcweir {
854cdf0e10cSrcweir SvxHyperlinkItem aItem( SID_HYPERLINK_GETLINK, aStrName, aStrURL, aStrFrame,
855cdf0e10cSrcweir aStrIntName, eMode, nEvents, pTable );
856cdf0e10cSrcweir _pSet->Put( aItem );
857cdf0e10cSrcweir }
858cdf0e10cSrcweir
859cdf0e10cSrcweir return( LEAVE_PAGE );
860cdf0e10cSrcweir }
861cdf0e10cSrcweir
ShouldOpenMarkWnd()862cdf0e10cSrcweir sal_Bool SvxHyperlinkTabPageBase::ShouldOpenMarkWnd()
863cdf0e10cSrcweir {
864cdf0e10cSrcweir return sal_False;
865cdf0e10cSrcweir }
866cdf0e10cSrcweir
SetMarkWndShouldOpen(sal_Bool)867cdf0e10cSrcweir void SvxHyperlinkTabPageBase::SetMarkWndShouldOpen(sal_Bool)
868cdf0e10cSrcweir {
869cdf0e10cSrcweir }
870