xref: /trunk/main/cui/source/dialogs/hltpbase.cxx (revision cf6516809c57e1bb0a940545cca99cdad54d4ce2)
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