1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_svx.hxx" 30*cdf0e10cSrcweir #include <tools/urlobj.hxx> 31*cdf0e10cSrcweir #include <vcl/msgbox.hxx> 32*cdf0e10cSrcweir #include <unotools/configitem.hxx> 33*cdf0e10cSrcweir #include <unotools/cmdoptions.hxx> 34*cdf0e10cSrcweir #include <svtools/inetimg.hxx> 35*cdf0e10cSrcweir #include <svl/urlbmk.hxx> 36*cdf0e10cSrcweir #include <svl/eitem.hxx> 37*cdf0e10cSrcweir #include <svl/stritem.hxx> 38*cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 39*cdf0e10cSrcweir #include <sfx2/docfile.hxx> 40*cdf0e10cSrcweir #include <sfx2/imgmgr.hxx> 41*cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 42*cdf0e10cSrcweir #include <svl/urihelper.hxx> 43*cdf0e10cSrcweir #include <sfx2/objsh.hxx> 44*cdf0e10cSrcweir #include <comphelper/processfactory.hxx> 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir #include "svx/hlnkitem.hxx" 47*cdf0e10cSrcweir #include <svx/dialogs.hrc> 48*cdf0e10cSrcweir #include "hyprlink.hrc" 49*cdf0e10cSrcweir #include <svx/dialmgr.hxx> 50*cdf0e10cSrcweir #include "svx/hyprlink.hxx" 51*cdf0e10cSrcweir #include "hyprdlg.hxx" 52*cdf0e10cSrcweir 53*cdf0e10cSrcweir using namespace ::rtl; 54*cdf0e10cSrcweir using namespace ::com::sun::star; 55*cdf0e10cSrcweir 56*cdf0e10cSrcweir // ----------------------------------------------------------------------- 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir class SearchDefaultConfigItem_Impl : public ::utl::ConfigItem 59*cdf0e10cSrcweir { 60*cdf0e10cSrcweir OUString sDefaultEngine; 61*cdf0e10cSrcweir public: 62*cdf0e10cSrcweir SearchDefaultConfigItem_Impl(); 63*cdf0e10cSrcweir ~SearchDefaultConfigItem_Impl(); 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir const OUString& GetDefaultSearchEngine(){ return sDefaultEngine;} 66*cdf0e10cSrcweir virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames ); 67*cdf0e10cSrcweir virtual void Commit(); 68*cdf0e10cSrcweir }; 69*cdf0e10cSrcweir 70*cdf0e10cSrcweir /*-- 11.11.2003 14:20:59--------------------------------------------------- 71*cdf0e10cSrcweir 72*cdf0e10cSrcweir -----------------------------------------------------------------------*/ 73*cdf0e10cSrcweir SearchDefaultConfigItem_Impl::SearchDefaultConfigItem_Impl() : 74*cdf0e10cSrcweir ConfigItem(OUString::createFromAscii("Inet/DefaultSearchEngine")) 75*cdf0e10cSrcweir { 76*cdf0e10cSrcweir uno::Sequence<OUString> aNames(1); 77*cdf0e10cSrcweir aNames.getArray()[0] = OUString::createFromAscii("Name"); 78*cdf0e10cSrcweir uno::Sequence< uno::Any > aValues = GetProperties(aNames); 79*cdf0e10cSrcweir aValues.getConstArray()[0] >>= sDefaultEngine; 80*cdf0e10cSrcweir } 81*cdf0e10cSrcweir /*-- 11.11.2003 14:21:00--------------------------------------------------- 82*cdf0e10cSrcweir 83*cdf0e10cSrcweir -----------------------------------------------------------------------*/ 84*cdf0e10cSrcweir SearchDefaultConfigItem_Impl::~SearchDefaultConfigItem_Impl() 85*cdf0e10cSrcweir { 86*cdf0e10cSrcweir } 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir void SearchDefaultConfigItem_Impl::Notify( const com::sun::star::uno::Sequence< rtl::OUString >& ) 89*cdf0e10cSrcweir { 90*cdf0e10cSrcweir } 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir void SearchDefaultConfigItem_Impl::Commit() 93*cdf0e10cSrcweir { 94*cdf0e10cSrcweir } 95*cdf0e10cSrcweir 96*cdf0e10cSrcweir /************************************************************************* 97*cdf0e10cSrcweir |* 98*cdf0e10cSrcweir |* Dialog zum Einf"ugen/"Andern eines Hyperlink 99*cdf0e10cSrcweir |* 100*cdf0e10cSrcweir \************************************************************************/ 101*cdf0e10cSrcweir 102*cdf0e10cSrcweir SvxHyperlinkDlg::SvxHyperlinkDlg( SfxBindings *_pBindings, Window* pParent) : 103*cdf0e10cSrcweir 104*cdf0e10cSrcweir ToolBox ( pParent, SVX_RES( RID_SVXDLG_HYPERLINK ) ), 105*cdf0e10cSrcweir SfxControllerItem ( SID_HYPERLINK_SETLINK, *_pBindings ), 106*cdf0e10cSrcweir 107*cdf0e10cSrcweir aForwarder ( SID_HYPERLINK_GETLINK, *this ), 108*cdf0e10cSrcweir aHyperlinkDlgForward( SID_HYPERLINK_DIALOG , *this), 109*cdf0e10cSrcweir 110*cdf0e10cSrcweir aNameCB ( this, SVX_RES( CB_NAME ) ), 111*cdf0e10cSrcweir aUrlFT ( this, SVX_RES( FT_URL ) ), 112*cdf0e10cSrcweir aUrlCB ( this, SVX_RES( CB_URL ) ), 113*cdf0e10cSrcweir aSearchConfig (sal_True), 114*cdf0e10cSrcweir sAddress ( SVX_RES( STR_ADDRESS ) ), 115*cdf0e10cSrcweir sExplorer ( SVX_RES( STR_EXPLORER ) ), 116*cdf0e10cSrcweir sSearchTitle ( SVX_RES( STR_BOOKMARK_SEARCH ) ), 117*cdf0e10cSrcweir aLinkPopup ( SVX_RES( RID_SVXMN_HYPERLINK ) ), 118*cdf0e10cSrcweir pTargetMenu ( NULL ), 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir bNoDoc ( sal_True ), 121*cdf0e10cSrcweir bSend ( sal_False ), 122*cdf0e10cSrcweir bHasOldName ( sal_False ), 123*cdf0e10cSrcweir bHtmlMode ( sal_False ) 124*cdf0e10cSrcweir 125*cdf0e10cSrcweir { 126*cdf0e10cSrcweir FreeResource(); 127*cdf0e10cSrcweir 128*cdf0e10cSrcweir mpManager = SfxImageManager::GetImageManager( 0 ); 129*cdf0e10cSrcweir mpManager->RegisterToolBox( this ); 130*cdf0e10cSrcweir 131*cdf0e10cSrcweir SetImages(); 132*cdf0e10cSrcweir 133*cdf0e10cSrcweir // save initial size 134*cdf0e10cSrcweir nMaxWidth = GetSizePixel().Width(); 135*cdf0e10cSrcweir nMaxHeight = GetSizePixel().Height(); 136*cdf0e10cSrcweir 137*cdf0e10cSrcweir 138*cdf0e10cSrcweir InsertSeparator( 0 ); 139*cdf0e10cSrcweir InsertWindow( CB_URL, &aUrlCB, 0, 0 ); 140*cdf0e10cSrcweir // we need an item text for accessibility 141*cdf0e10cSrcweir String sItemText = aUrlCB.GetText(); 142*cdf0e10cSrcweir if ( sItemText.Len() == 0 ) 143*cdf0e10cSrcweir sItemText = aUrlCB.GetQuickHelpText(); 144*cdf0e10cSrcweir if ( sItemText.Len() > 0 ) 145*cdf0e10cSrcweir { 146*cdf0e10cSrcweir SetItemText( CB_URL, sItemText ); 147*cdf0e10cSrcweir sItemText.Erase(); 148*cdf0e10cSrcweir } 149*cdf0e10cSrcweir InsertWindow( FT_URL, &aUrlFT, 0, 0 ); 150*cdf0e10cSrcweir InsertSeparator( 0 ); 151*cdf0e10cSrcweir InsertWindow( CB_NAME, &aNameCB, 0, 0 ); 152*cdf0e10cSrcweir sItemText = aNameCB.GetText(); 153*cdf0e10cSrcweir if ( sItemText.Len() == 0 ) 154*cdf0e10cSrcweir sItemText = aNameCB.GetQuickHelpText(); 155*cdf0e10cSrcweir if ( sItemText.Len() > 0 ) 156*cdf0e10cSrcweir SetItemText( CB_NAME, sItemText ); 157*cdf0e10cSrcweir 158*cdf0e10cSrcweir SetSizePixel(CalcWindowSizePixel()); // Groesse initialisieren 159*cdf0e10cSrcweir 160*cdf0e10cSrcweir nMaxHeight = GetSizePixel().Height(); // Hoehe nochmal merken, da sie veraendert wurde 161*cdf0e10cSrcweir // SetSizePixel ruft Resize-Handler! 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir Show(); 164*cdf0e10cSrcweir Resize(); 165*cdf0e10cSrcweir 166*cdf0e10cSrcweir long nUrlWidth = aUrlCB.GetResizeWidth(); 167*cdf0e10cSrcweir long nNameWidth = aNameCB.GetResizeWidth(); 168*cdf0e10cSrcweir long nSum = nUrlWidth + nNameWidth; 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir aUrlCB.SetRatio((nUrlWidth * 100L) / nSum); 171*cdf0e10cSrcweir aNameCB.SetRatio((nNameWidth * 100L) / nSum); 172*cdf0e10cSrcweir 173*cdf0e10cSrcweir SetClickHdl( LINK( this, SvxHyperlinkDlg, TBClickHdl ) ); 174*cdf0e10cSrcweir SetSelectHdl( LINK( this, SvxHyperlinkDlg, TBSelectHdl ) ); 175*cdf0e10cSrcweir SetDropdownClickHdl( LINK( this, SvxHyperlinkDlg, DropdownClick ) ); 176*cdf0e10cSrcweir 177*cdf0e10cSrcweir SetItemBits( BTN_TARGET, GetItemBits( BTN_TARGET ) | TIB_DROPDOWNONLY ); 178*cdf0e10cSrcweir SetItemBits( BTN_INET_SEARCH, GetItemBits( BTN_INET_SEARCH ) | TIB_DROPDOWN ); 179*cdf0e10cSrcweir SetItemBits( BTN_INET_SEARCH, GetItemBits( BTN_TARGET ) | TIB_DROPDOWNONLY ); 180*cdf0e10cSrcweir 181*cdf0e10cSrcweir aLinkPopup.SetSelectHdl(LINK(this, SvxHyperlinkDlg, LinkPopupSelectHdl)); 182*cdf0e10cSrcweir 183*cdf0e10cSrcweir Link aLk = LINK(this, SvxHyperlinkDlg, ComboSelectHdl); 184*cdf0e10cSrcweir aNameCB.SetSelectHdl(aLk); 185*cdf0e10cSrcweir aUrlCB.SetSelectHdl(aLk); 186*cdf0e10cSrcweir 187*cdf0e10cSrcweir aLk = LINK(this, SvxHyperlinkDlg, ComboModifyHdl); 188*cdf0e10cSrcweir aNameCB.SetModifyHdl(aLk); 189*cdf0e10cSrcweir aUrlCB.SetModifyHdl(aLk); 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir // Accessibility: Set the quick help text as accessible name for the 192*cdf0e10cSrcweir // drop down lists. 193*cdf0e10cSrcweir aNameCB.SetAccessibleName (aNameCB.GetQuickHelpText()); 194*cdf0e10cSrcweir aUrlCB.SetAccessibleName (aUrlCB.GetQuickHelpText()); 195*cdf0e10cSrcweir 196*cdf0e10cSrcweir // Hide button according to config item. 197*cdf0e10cSrcweir SvtCommandOptions aCmdOpts; 198*cdf0e10cSrcweir if ( aCmdOpts.Lookup( SvtCommandOptions::CMDOPTION_DISABLED, 199*cdf0e10cSrcweir rtl::OUString( 200*cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM( 201*cdf0e10cSrcweir "InternetSearch" ) ) ) ) 202*cdf0e10cSrcweir HideItem( BTN_INET_SEARCH ); 203*cdf0e10cSrcweir } 204*cdf0e10cSrcweir 205*cdf0e10cSrcweir /*-------------------------------------------------------------------- 206*cdf0e10cSrcweir Beschreibung: 207*cdf0e10cSrcweir --------------------------------------------------------------------*/ 208*cdf0e10cSrcweir 209*cdf0e10cSrcweir SvxHyperlinkDlg::~SvxHyperlinkDlg() 210*cdf0e10cSrcweir { 211*cdf0e10cSrcweir SfxImageManager::GetImageManager( 0 )->ReleaseToolBox(this); 212*cdf0e10cSrcweir 213*cdf0e10cSrcweir if (pTargetMenu != NULL) 214*cdf0e10cSrcweir delete pTargetMenu; 215*cdf0e10cSrcweir } 216*cdf0e10cSrcweir 217*cdf0e10cSrcweir /*-------------------------------------------------------------------- 218*cdf0e10cSrcweir Beschreibung: Leiste so resizen, dass die Comboboxen automatisch mit 219*cdf0e10cSrcweir verkleinert werden 220*cdf0e10cSrcweir --------------------------------------------------------------------*/ 221*cdf0e10cSrcweir 222*cdf0e10cSrcweir void SvxHyperlinkDlg::Resize() 223*cdf0e10cSrcweir { 224*cdf0e10cSrcweir long nWidth = GetSizePixel().Width(); 225*cdf0e10cSrcweir 226*cdf0e10cSrcweir ToolBox::Resize(); 227*cdf0e10cSrcweir 228*cdf0e10cSrcweir if (nWidth) // nWidth ist manchmal 0 229*cdf0e10cSrcweir { 230*cdf0e10cSrcweir long nDeltaW = nMaxWidth - nWidth + aUrlCB.LogicToPixel(Size(3, 1)).Width() + 1; 231*cdf0e10cSrcweir 232*cdf0e10cSrcweir long nNewUrlWidth = aUrlCB.CalcResizeWidth(nDeltaW); 233*cdf0e10cSrcweir long nNewNameWidth = aNameCB.CalcResizeWidth(nDeltaW); 234*cdf0e10cSrcweir 235*cdf0e10cSrcweir if (nNewUrlWidth && nNewNameWidth) // Flackern reduzieren 236*cdf0e10cSrcweir { 237*cdf0e10cSrcweir SetUpdateMode(sal_False); 238*cdf0e10cSrcweir 239*cdf0e10cSrcweir // Comboboxen resizen 240*cdf0e10cSrcweir aUrlCB.DoResize(nNewUrlWidth); 241*cdf0e10cSrcweir aNameCB.DoResize(nNewNameWidth); 242*cdf0e10cSrcweir RecalcItems(); // Alle Elemente neu anordnen 243*cdf0e10cSrcweir 244*cdf0e10cSrcweir SetUpdateMode(sal_True); 245*cdf0e10cSrcweir } 246*cdf0e10cSrcweir } 247*cdf0e10cSrcweir } 248*cdf0e10cSrcweir 249*cdf0e10cSrcweir /*-------------------------------------------------------------------- 250*cdf0e10cSrcweir Beschreibung: 251*cdf0e10cSrcweir --------------------------------------------------------------------*/ 252*cdf0e10cSrcweir 253*cdf0e10cSrcweir void SvxHyperlinkDlg::Resizing(Size& rSize) 254*cdf0e10cSrcweir { 255*cdf0e10cSrcweir if (rSize.Height() > nMaxHeight) 256*cdf0e10cSrcweir rSize.Height() = nMaxHeight; 257*cdf0e10cSrcweir 258*cdf0e10cSrcweir if (rSize.Width() > nMaxWidth) 259*cdf0e10cSrcweir rSize.Width() = nMaxWidth; 260*cdf0e10cSrcweir 261*cdf0e10cSrcweir ToolBox::Resizing(rSize); 262*cdf0e10cSrcweir } 263*cdf0e10cSrcweir 264*cdf0e10cSrcweir /*-------------------------------------------------------------------- 265*cdf0e10cSrcweir Beschreibung: Im Dokument selektierten Hyperlink in Leiste anzeigen 266*cdf0e10cSrcweir --------------------------------------------------------------------*/ 267*cdf0e10cSrcweir 268*cdf0e10cSrcweir void SvxHyperlinkDlg::StateChanged( sal_uInt16 nSID, SfxItemState eState, 269*cdf0e10cSrcweir const SfxPoolItem* pState ) 270*cdf0e10cSrcweir { 271*cdf0e10cSrcweir if ( nSID == SID_HYPERLINK_DIALOG ) 272*cdf0e10cSrcweir { 273*cdf0e10cSrcweir if( eState != SFX_ITEM_DISABLED) 274*cdf0e10cSrcweir { 275*cdf0e10cSrcweir EnableItem( BTN_OPENDIALOG, sal_True ); 276*cdf0e10cSrcweir 277*cdf0e10cSrcweir sal_Bool bItem = sal_False; 278*cdf0e10cSrcweir if ( pState && eState == SFX_ITEM_AVAILABLE ) 279*cdf0e10cSrcweir bItem = ((SfxBoolItem*)pState)->GetValue(); 280*cdf0e10cSrcweir SetItemState ( BTN_OPENDIALOG, bItem ? STATE_CHECK : STATE_NOCHECK ); 281*cdf0e10cSrcweir } 282*cdf0e10cSrcweir else 283*cdf0e10cSrcweir { 284*cdf0e10cSrcweir SetItemState ( BTN_OPENDIALOG, STATE_NOCHECK ); 285*cdf0e10cSrcweir EnableItem( BTN_OPENDIALOG, sal_False ); 286*cdf0e10cSrcweir } 287*cdf0e10cSrcweir } 288*cdf0e10cSrcweir 289*cdf0e10cSrcweir if (nSID == SID_HYPERLINK_SETLINK) 290*cdf0e10cSrcweir { 291*cdf0e10cSrcweir if (eState == SFX_ITEM_DISABLED) 292*cdf0e10cSrcweir bNoDoc = sal_True; 293*cdf0e10cSrcweir else 294*cdf0e10cSrcweir bNoDoc = sal_False; 295*cdf0e10cSrcweir EnableItem(BTN_TARGET, !bNoDoc); 296*cdf0e10cSrcweir EnableLink(); 297*cdf0e10cSrcweir } 298*cdf0e10cSrcweir 299*cdf0e10cSrcweir if (nSID == SID_HYPERLINK_GETLINK) 300*cdf0e10cSrcweir { 301*cdf0e10cSrcweir if (eState == SFX_ITEM_AVAILABLE) 302*cdf0e10cSrcweir { 303*cdf0e10cSrcweir const SvxHyperlinkItem& rHLnkItem = *((const SvxHyperlinkItem*)pState); 304*cdf0e10cSrcweir 305*cdf0e10cSrcweir sal_uInt16 nNamePos = aNameCB.GetEntryPos(aNameCB.GetText()); 306*cdf0e10cSrcweir sal_uInt16 nUrlPos = aUrlCB.GetEntryPos(aUrlCB.GetText()); 307*cdf0e10cSrcweir sal_uInt16 nNotFound = COMBOBOX_ENTRY_NOTFOUND; 308*cdf0e10cSrcweir 309*cdf0e10cSrcweir if (!bHasOldName && 310*cdf0e10cSrcweir (nNamePos == nNotFound || nUrlPos == nNotFound)) 311*cdf0e10cSrcweir { 312*cdf0e10cSrcweir sOldName = aNameCB.GetText(); 313*cdf0e10cSrcweir bHasOldName = sal_True; 314*cdf0e10cSrcweir } 315*cdf0e10cSrcweir if (rHLnkItem.GetName().Len()) 316*cdf0e10cSrcweir { 317*cdf0e10cSrcweir aNameCB.SetText(rHLnkItem.GetName()); 318*cdf0e10cSrcweir ComboModifyHdl(&aNameCB); 319*cdf0e10cSrcweir } 320*cdf0e10cSrcweir if (rHLnkItem.GetURL().Len() || rHLnkItem.GetName().Len()) 321*cdf0e10cSrcweir { 322*cdf0e10cSrcweir String sUrl = INetURLObject(rHLnkItem.GetURL()).GetURLNoPass(); 323*cdf0e10cSrcweir aUrlCB.SetText(sUrl); 324*cdf0e10cSrcweir } 325*cdf0e10cSrcweir else if (aUrlCB.GetEntryCount()) 326*cdf0e10cSrcweir { // Letzten Eintrag wieder selektieren 327*cdf0e10cSrcweir aNameCB.SetText(aNameCB.GetEntry(0)); 328*cdf0e10cSrcweir aUrlCB.SetText(aUrlCB.GetEntry(0)); 329*cdf0e10cSrcweir } 330*cdf0e10cSrcweir 331*cdf0e10cSrcweir TargetMenu(rHLnkItem.GetTargetFrame(), sal_False); 332*cdf0e10cSrcweir bHtmlMode = (rHLnkItem.GetInsertMode() & HLINK_HTMLMODE) != 0; 333*cdf0e10cSrcweir } 334*cdf0e10cSrcweir else 335*cdf0e10cSrcweir return; 336*cdf0e10cSrcweir 337*cdf0e10cSrcweir ComboModifyHdl(&aUrlCB); 338*cdf0e10cSrcweir } 339*cdf0e10cSrcweir } 340*cdf0e10cSrcweir 341*cdf0e10cSrcweir /*-------------------------------------------------------------------- 342*cdf0e10cSrcweir Beschreibung: 343*cdf0e10cSrcweir --------------------------------------------------------------------*/ 344*cdf0e10cSrcweir 345*cdf0e10cSrcweir IMPL_LINK( SvxHyperlinkDlg, TBClickHdl, ToolBox *, pBox ) 346*cdf0e10cSrcweir { 347*cdf0e10cSrcweir switch (pBox->GetCurItemId()) 348*cdf0e10cSrcweir { 349*cdf0e10cSrcweir case BTN_LINK: 350*cdf0e10cSrcweir { 351*cdf0e10cSrcweir if (!bSend) // Link ins Dokument einfuegen 352*cdf0e10cSrcweir SendToApp(HLINK_DEFAULT); 353*cdf0e10cSrcweir } 354*cdf0e10cSrcweir break; 355*cdf0e10cSrcweir 356*cdf0e10cSrcweir case BTN_OPENDIALOG: 357*cdf0e10cSrcweir { 358*cdf0e10cSrcweir GetBindings().GetDispatcher()->Execute( SID_HYPERLINK_DIALOG ); 359*cdf0e10cSrcweir } 360*cdf0e10cSrcweir break; 361*cdf0e10cSrcweir } 362*cdf0e10cSrcweir 363*cdf0e10cSrcweir return sal_True; 364*cdf0e10cSrcweir } 365*cdf0e10cSrcweir 366*cdf0e10cSrcweir /*-------------------------------------------------------------------- 367*cdf0e10cSrcweir Beschreibung: 368*cdf0e10cSrcweir --------------------------------------------------------------------*/ 369*cdf0e10cSrcweir 370*cdf0e10cSrcweir IMPL_LINK( SvxHyperlinkDlg, TBSelectHdl, ToolBox *, pBox ) 371*cdf0e10cSrcweir { 372*cdf0e10cSrcweir switch (pBox->GetCurItemId()) 373*cdf0e10cSrcweir { 374*cdf0e10cSrcweir // Link als Bookmark im Explorer eintragen 375*cdf0e10cSrcweir // Soll erst im Loslassen der Maus gerufen werden, daher im Select-Hdl 376*cdf0e10cSrcweir case BTN_INSERT_BOOKMARK: 377*cdf0e10cSrcweir { 378*cdf0e10cSrcweir String sName = aNameCB.GetText(); 379*cdf0e10cSrcweir if ( !sName.Len() ) 380*cdf0e10cSrcweir sName = aUrlCB.GetText(); 381*cdf0e10cSrcweir 382*cdf0e10cSrcweir String aBase = GetBindings().GetDispatcher()->GetFrame()->GetObjectShell()->GetMedium()->GetBaseURL(); 383*cdf0e10cSrcweir SfxStringItem aName( SID_BOOKMARK_TITLE, sName ); 384*cdf0e10cSrcweir SfxStringItem aURL( SID_BOOKMARK_URL, 385*cdf0e10cSrcweir URIHelper::SmartRel2Abs( INetURLObject(aBase), aUrlCB.GetText(), URIHelper::GetMaybeFileHdl(), true, false, 386*cdf0e10cSrcweir INetURLObject::WAS_ENCODED, 387*cdf0e10cSrcweir INetURLObject::DECODE_UNAMBIGUOUS ) ); 388*cdf0e10cSrcweir GetBindings().GetDispatcher()->Execute( 389*cdf0e10cSrcweir SID_CREATELINK, SFX_CALLMODE_ASYNCHRON, &aName, &aURL, 0L ); 390*cdf0e10cSrcweir } 391*cdf0e10cSrcweir break; 392*cdf0e10cSrcweir } 393*cdf0e10cSrcweir 394*cdf0e10cSrcweir return sal_True; 395*cdf0e10cSrcweir } 396*cdf0e10cSrcweir 397*cdf0e10cSrcweir IMPL_LINK( SvxHyperlinkDlg, DropdownClick, ToolBox *, pBox ) 398*cdf0e10cSrcweir { 399*cdf0e10cSrcweir switch (pBox->GetCurItemId()) 400*cdf0e10cSrcweir { 401*cdf0e10cSrcweir case BTN_LINK: 402*cdf0e10cSrcweir { 403*cdf0e10cSrcweir // Link-Popup anstossen 404*cdf0e10cSrcweir EndSelection(); // Vor dem Execute, damit Popup den Focus bekommt 405*cdf0e10cSrcweir aLinkPopup.EnableItem(MN_BUTTON, !bHtmlMode); 406*cdf0e10cSrcweir aLinkPopup.Execute( this, GetItemRect( BTN_LINK ), FLOATWIN_POPUPMODE_DOWN ); 407*cdf0e10cSrcweir } 408*cdf0e10cSrcweir break; 409*cdf0e10cSrcweir 410*cdf0e10cSrcweir case BTN_INET_SEARCH: 411*cdf0e10cSrcweir { 412*cdf0e10cSrcweir // Search-Engines per Popup auswaehlen 413*cdf0e10cSrcweir PopupMenu *pMenu = new PopupMenu; 414*cdf0e10cSrcweir pMenu->SetSelectHdl(LINK(this, SvxHyperlinkDlg, SearchPopupSelectHdl)); 415*cdf0e10cSrcweir SearchDefaultConfigItem_Impl aDefaultEngine; 416*cdf0e10cSrcweir String sDefault(aDefaultEngine.GetDefaultSearchEngine()); 417*cdf0e10cSrcweir sDefault.ToLowerAscii(); 418*cdf0e10cSrcweir const bool bHasDefault = sDefault.Len() > 0; 419*cdf0e10cSrcweir 420*cdf0e10cSrcweir sal_uInt16 nCount = aSearchConfig.Count(); 421*cdf0e10cSrcweir String sFound; 422*cdf0e10cSrcweir for (sal_uInt16 i = 0; i < nCount; i++) 423*cdf0e10cSrcweir { 424*cdf0e10cSrcweir const SvxSearchEngineData& rData = aSearchConfig.GetData(i); 425*cdf0e10cSrcweir //check if it's the configured default search engine 426*cdf0e10cSrcweir String sTest(rData.sEngineName); 427*cdf0e10cSrcweir sTest.ToLowerAscii(); 428*cdf0e10cSrcweir bool bIsDefaultEngine = bHasDefault && STRING_NOTFOUND != sTest.Search( sDefault ); 429*cdf0e10cSrcweir //then put it at the top 430*cdf0e10cSrcweir if(i && bIsDefaultEngine) 431*cdf0e10cSrcweir { 432*cdf0e10cSrcweir pMenu->InsertItem( i + 1, rData.sEngineName, 0, 0); 433*cdf0e10cSrcweir pMenu->InsertSeparator(1); 434*cdf0e10cSrcweir } 435*cdf0e10cSrcweir else 436*cdf0e10cSrcweir { 437*cdf0e10cSrcweir if (i) 438*cdf0e10cSrcweir pMenu->InsertSeparator(); 439*cdf0e10cSrcweir pMenu->InsertItem( i + 1, rData.sEngineName); 440*cdf0e10cSrcweir } 441*cdf0e10cSrcweir } 442*cdf0e10cSrcweir pBox->SetItemDown(BTN_INET_SEARCH, sal_True, sal_True); 443*cdf0e10cSrcweir pMenu->Execute( this, GetItemRect( BTN_INET_SEARCH ), FLOATWIN_POPUPMODE_DOWN ); 444*cdf0e10cSrcweir pBox->SetItemDown(BTN_INET_SEARCH, sal_False, sal_True); 445*cdf0e10cSrcweir EndSelection(); 446*cdf0e10cSrcweir delete pMenu; 447*cdf0e10cSrcweir } 448*cdf0e10cSrcweir break; 449*cdf0e10cSrcweir 450*cdf0e10cSrcweir case BTN_TARGET: 451*cdf0e10cSrcweir { 452*cdf0e10cSrcweir // Target Frame einstellen 453*cdf0e10cSrcweir TargetMenu(GetSelTarget(), sal_True); 454*cdf0e10cSrcweir EndSelection(); 455*cdf0e10cSrcweir } 456*cdf0e10cSrcweir break; 457*cdf0e10cSrcweir } 458*cdf0e10cSrcweir 459*cdf0e10cSrcweir return sal_True; 460*cdf0e10cSrcweir } 461*cdf0e10cSrcweir 462*cdf0e10cSrcweir /*-------------------------------------------------------------------- 463*cdf0e10cSrcweir Beschreibung: 464*cdf0e10cSrcweir --------------------------------------------------------------------*/ 465*cdf0e10cSrcweir 466*cdf0e10cSrcweir void SvxHyperlinkDlg::TargetMenu(const String& rSelEntry, sal_Bool bExecute) 467*cdf0e10cSrcweir { 468*cdf0e10cSrcweir if (pTargetMenu && !bExecute) 469*cdf0e10cSrcweir { 470*cdf0e10cSrcweir for (sal_uInt16 i = 1; i <= pTargetMenu->GetItemCount(); i++) 471*cdf0e10cSrcweir { 472*cdf0e10cSrcweir if (pTargetMenu->GetItemText(i) == rSelEntry) 473*cdf0e10cSrcweir { 474*cdf0e10cSrcweir pTargetMenu->CheckItem(i); 475*cdf0e10cSrcweir return; 476*cdf0e10cSrcweir } 477*cdf0e10cSrcweir } 478*cdf0e10cSrcweir } 479*cdf0e10cSrcweir 480*cdf0e10cSrcweir SfxViewFrame* pVwFrm = SfxViewFrame::Current(); 481*cdf0e10cSrcweir 482*cdf0e10cSrcweir if (pVwFrm) // Alle moeglichen Target Frames zusammensammeln und anzeigen 483*cdf0e10cSrcweir { 484*cdf0e10cSrcweir TargetList aList; 485*cdf0e10cSrcweir pVwFrm->GetTopFrame().GetTargetList(aList); 486*cdf0e10cSrcweir 487*cdf0e10cSrcweir sal_uInt16 nCount = (sal_uInt16)aList.Count(); 488*cdf0e10cSrcweir if( nCount ) 489*cdf0e10cSrcweir { 490*cdf0e10cSrcweir sal_Bool bChecked = sal_False; 491*cdf0e10cSrcweir 492*cdf0e10cSrcweir if (pTargetMenu != NULL) 493*cdf0e10cSrcweir delete pTargetMenu; 494*cdf0e10cSrcweir 495*cdf0e10cSrcweir pTargetMenu = new PopupMenu; 496*cdf0e10cSrcweir pTargetMenu->SetMenuFlags( pTargetMenu->GetMenuFlags() | 497*cdf0e10cSrcweir MENU_FLAG_NOAUTOMNEMONICS ); 498*cdf0e10cSrcweir sal_uInt16 i; 499*cdf0e10cSrcweir for ( i = 0; i < nCount; i++ ) 500*cdf0e10cSrcweir { 501*cdf0e10cSrcweir String sEntry(*aList.GetObject(i)); 502*cdf0e10cSrcweir pTargetMenu->InsertItem(i + 1, sEntry, MIB_RADIOCHECK|MIB_AUTOCHECK); 503*cdf0e10cSrcweir 504*cdf0e10cSrcweir if (sEntry == rSelEntry) 505*cdf0e10cSrcweir { 506*cdf0e10cSrcweir pTargetMenu->CheckItem(i + 1); 507*cdf0e10cSrcweir bChecked = sal_True; 508*cdf0e10cSrcweir } 509*cdf0e10cSrcweir } 510*cdf0e10cSrcweir for ( i = nCount; i; i-- ) 511*cdf0e10cSrcweir delete aList.GetObject( i - 1 ); 512*cdf0e10cSrcweir 513*cdf0e10cSrcweir if (!bChecked) 514*cdf0e10cSrcweir pTargetMenu->CheckItem(1); 515*cdf0e10cSrcweir 516*cdf0e10cSrcweir if (bExecute) 517*cdf0e10cSrcweir { 518*cdf0e10cSrcweir sal_uInt16 nEntry = pTargetMenu->Execute( 519*cdf0e10cSrcweir this, GetItemRect( BTN_TARGET ), FLOATWIN_POPUPMODE_DOWN ); 520*cdf0e10cSrcweir if ( nEntry ) 521*cdf0e10cSrcweir pTargetMenu->CheckItem( nEntry ); 522*cdf0e10cSrcweir } 523*cdf0e10cSrcweir } 524*cdf0e10cSrcweir } 525*cdf0e10cSrcweir } 526*cdf0e10cSrcweir 527*cdf0e10cSrcweir /*-------------------------------------------------------------------- 528*cdf0e10cSrcweir Beschreibung: 529*cdf0e10cSrcweir --------------------------------------------------------------------*/ 530*cdf0e10cSrcweir 531*cdf0e10cSrcweir IMPL_LINK( SvxHyperlinkDlg, LinkPopupSelectHdl, Menu *, pMenu ) 532*cdf0e10cSrcweir { 533*cdf0e10cSrcweir switch (pMenu->GetCurItemId()) 534*cdf0e10cSrcweir { 535*cdf0e10cSrcweir case MN_FIELD: // URL als Hyperlink ins Dok einfuegen 536*cdf0e10cSrcweir SendToApp(HLINK_FIELD); 537*cdf0e10cSrcweir break; 538*cdf0e10cSrcweir case MN_BUTTON: // URL als Button ins Dok einfuegen 539*cdf0e10cSrcweir SendToApp(HLINK_BUTTON); 540*cdf0e10cSrcweir break; 541*cdf0e10cSrcweir } 542*cdf0e10cSrcweir 543*cdf0e10cSrcweir return sal_True; 544*cdf0e10cSrcweir } 545*cdf0e10cSrcweir 546*cdf0e10cSrcweir /*-------------------------------------------------------------------- 547*cdf0e10cSrcweir Beschreibung: 548*cdf0e10cSrcweir --------------------------------------------------------------------*/ 549*cdf0e10cSrcweir 550*cdf0e10cSrcweir IMPL_LINK( SvxHyperlinkDlg, SearchPopupSelectHdl, Menu *, pMenu ) 551*cdf0e10cSrcweir { 552*cdf0e10cSrcweir const SvxSearchEngineData& rData = aSearchConfig.GetData(pMenu->GetCurItemId() - 1); 553*cdf0e10cSrcweir String sText(aNameCB.GetText()); 554*cdf0e10cSrcweir sText.EraseLeadingChars().EraseTrailingChars(); 555*cdf0e10cSrcweir 556*cdf0e10cSrcweir rtl::OUString sPrefix; 557*cdf0e10cSrcweir rtl::OUString sSuffix; 558*cdf0e10cSrcweir rtl::OUString sSeparator; 559*cdf0e10cSrcweir sal_Int32 nCaseMatch; 560*cdf0e10cSrcweir sal_Unicode cToken = 0; 561*cdf0e10cSrcweir 562*cdf0e10cSrcweir if (sText.Search(' ') != STRING_NOTFOUND) 563*cdf0e10cSrcweir { 564*cdf0e10cSrcweir sPrefix = rData.sExactPrefix; 565*cdf0e10cSrcweir sSuffix = rData.sExactSuffix; 566*cdf0e10cSrcweir sSeparator = rData.sExactSeparator; 567*cdf0e10cSrcweir nCaseMatch = rData.nExactCaseMatch; 568*cdf0e10cSrcweir cToken = ' '; 569*cdf0e10cSrcweir } 570*cdf0e10cSrcweir else if (sText.Search('+') != STRING_NOTFOUND) 571*cdf0e10cSrcweir { 572*cdf0e10cSrcweir sPrefix = rData.sAndPrefix; 573*cdf0e10cSrcweir sSuffix = rData.sAndSuffix; 574*cdf0e10cSrcweir sSeparator = rData.sAndSeparator; 575*cdf0e10cSrcweir nCaseMatch = rData.nAndCaseMatch; 576*cdf0e10cSrcweir cToken = '+'; 577*cdf0e10cSrcweir } 578*cdf0e10cSrcweir else if (sText.Search(',') != STRING_NOTFOUND) 579*cdf0e10cSrcweir { 580*cdf0e10cSrcweir sPrefix = rData.sOrPrefix; 581*cdf0e10cSrcweir sSuffix = rData.sOrSuffix; 582*cdf0e10cSrcweir sSeparator = rData.sOrSeparator; 583*cdf0e10cSrcweir nCaseMatch = rData.nOrCaseMatch; 584*cdf0e10cSrcweir cToken = ','; 585*cdf0e10cSrcweir } 586*cdf0e10cSrcweir else 587*cdf0e10cSrcweir { 588*cdf0e10cSrcweir sPrefix = rData.sExactPrefix; 589*cdf0e10cSrcweir sSuffix = rData.sExactSuffix; 590*cdf0e10cSrcweir nCaseMatch = rData.nExactCaseMatch; 591*cdf0e10cSrcweir cToken = 0; 592*cdf0e10cSrcweir } 593*cdf0e10cSrcweir 594*cdf0e10cSrcweir String sURL = sPrefix; 595*cdf0e10cSrcweir xub_StrLen nTok; 596*cdf0e10cSrcweir 597*cdf0e10cSrcweir if(1 == nCaseMatch) 598*cdf0e10cSrcweir sText.ToUpperAscii(); 599*cdf0e10cSrcweir else if(2 == nCaseMatch) 600*cdf0e10cSrcweir sText.ToLowerAscii(); 601*cdf0e10cSrcweir 602*cdf0e10cSrcweir if ((nTok = sText.GetTokenCount(cToken)) > 1) 603*cdf0e10cSrcweir { 604*cdf0e10cSrcweir for (sal_uInt16 i = 0; i < nTok; i++) 605*cdf0e10cSrcweir { 606*cdf0e10cSrcweir sURL += sText.GetToken(i, cToken); 607*cdf0e10cSrcweir if(i < nTok -1) 608*cdf0e10cSrcweir sURL += (String)sSeparator; 609*cdf0e10cSrcweir } 610*cdf0e10cSrcweir sURL += (String)sSuffix; 611*cdf0e10cSrcweir } 612*cdf0e10cSrcweir else 613*cdf0e10cSrcweir { 614*cdf0e10cSrcweir sURL += sText; 615*cdf0e10cSrcweir sURL += (String)sSuffix; 616*cdf0e10cSrcweir } 617*cdf0e10cSrcweir sURL.EraseAllChars(); // remove all spaces 618*cdf0e10cSrcweir SfxViewFrame* pViewFrame = SfxViewFrame::Current(); 619*cdf0e10cSrcweir if ( pViewFrame ) 620*cdf0e10cSrcweir pViewFrame = pViewFrame->GetTopViewFrame(); 621*cdf0e10cSrcweir OpenDoc( sURL, pViewFrame ); 622*cdf0e10cSrcweir 623*cdf0e10cSrcweir return sal_True; 624*cdf0e10cSrcweir } 625*cdf0e10cSrcweir 626*cdf0e10cSrcweir /*-------------------------------------------------------------------- 627*cdf0e10cSrcweir Beschreibung: 628*cdf0e10cSrcweir --------------------------------------------------------------------*/ 629*cdf0e10cSrcweir 630*cdf0e10cSrcweir IMPL_LINK( SvxHyperlinkDlg, BookmarkFoundHdl, String *, pUrl ) 631*cdf0e10cSrcweir { 632*cdf0e10cSrcweir if (pUrl && pUrl->Len()) 633*cdf0e10cSrcweir { 634*cdf0e10cSrcweir aUrlCB.SetText(*pUrl); 635*cdf0e10cSrcweir ComboModifyHdl(&aUrlCB); 636*cdf0e10cSrcweir } 637*cdf0e10cSrcweir 638*cdf0e10cSrcweir return sal_True; 639*cdf0e10cSrcweir } 640*cdf0e10cSrcweir /*-------------------------------------------------------------------- 641*cdf0e10cSrcweir Beschreibung: Link-Button enablen/disablen 642*cdf0e10cSrcweir --------------------------------------------------------------------*/ 643*cdf0e10cSrcweir 644*cdf0e10cSrcweir void SvxHyperlinkDlg::EnableLink() 645*cdf0e10cSrcweir { 646*cdf0e10cSrcweir sal_Bool bEnable = aUrlCB.GetText().Len() != 0; 647*cdf0e10cSrcweir 648*cdf0e10cSrcweir EnableItem(BTN_LINK, (!bNoDoc) & bEnable); 649*cdf0e10cSrcweir } 650*cdf0e10cSrcweir 651*cdf0e10cSrcweir /*-------------------------------------------------------------------- 652*cdf0e10cSrcweir Beschreibung: URL im Dokument einfuegen 653*cdf0e10cSrcweir --------------------------------------------------------------------*/ 654*cdf0e10cSrcweir 655*cdf0e10cSrcweir void SvxHyperlinkDlg::SendToApp(sal_uInt16 nType) 656*cdf0e10cSrcweir { 657*cdf0e10cSrcweir sal_Bool bIsFile = sal_False; 658*cdf0e10cSrcweir bSend = sal_True; 659*cdf0e10cSrcweir String sURL( aUrlCB.GetText() ); 660*cdf0e10cSrcweir 661*cdf0e10cSrcweir if ( !sURL.Len() ) 662*cdf0e10cSrcweir return; 663*cdf0e10cSrcweir 664*cdf0e10cSrcweir String aBase = GetBindings().GetDispatcher()->GetFrame()->GetObjectShell()->GetMedium()->GetBaseURL(); 665*cdf0e10cSrcweir INetURLObject aObj( URIHelper::SmartRel2Abs( INetURLObject(aBase), sURL, URIHelper::GetMaybeFileHdl(), true, false, 666*cdf0e10cSrcweir INetURLObject::WAS_ENCODED, 667*cdf0e10cSrcweir INetURLObject::DECODE_UNAMBIGUOUS ) ); 668*cdf0e10cSrcweir sURL = aObj.GetMainURL( INetURLObject::NO_DECODE ); 669*cdf0e10cSrcweir if ( aObj.GetProtocol() == INET_PROT_FILE ) 670*cdf0e10cSrcweir bIsFile = sal_True; 671*cdf0e10cSrcweir 672*cdf0e10cSrcweir if ( bIsFile ) 673*cdf0e10cSrcweir { 674*cdf0e10cSrcweir EnterWait(); 675*cdf0e10cSrcweir SfxMedium aMedium( sURL, STREAM_STD_READ, sal_True ); 676*cdf0e10cSrcweir if ( aMedium.Exists( sal_False ) == sal_False ) 677*cdf0e10cSrcweir { 678*cdf0e10cSrcweir LeaveWait(); 679*cdf0e10cSrcweir QueryBox aBox( this, SVX_RES( RID_SVXQB_DONTEXIST ) ); 680*cdf0e10cSrcweir if ( aBox.Execute() == RET_NO ) 681*cdf0e10cSrcweir return; 682*cdf0e10cSrcweir } 683*cdf0e10cSrcweir else 684*cdf0e10cSrcweir LeaveWait(); 685*cdf0e10cSrcweir } 686*cdf0e10cSrcweir 687*cdf0e10cSrcweir SvxHyperlinkItem aItem( SID_HYPERLINK_SETLINK ); 688*cdf0e10cSrcweir 689*cdf0e10cSrcweir if (aNameCB.GetText().Len()) 690*cdf0e10cSrcweir aItem.SetName( aNameCB.GetText() ); 691*cdf0e10cSrcweir else 692*cdf0e10cSrcweir aItem.SetName( sURL ); 693*cdf0e10cSrcweir 694*cdf0e10cSrcweir sOldName = aNameCB.GetText(); 695*cdf0e10cSrcweir 696*cdf0e10cSrcweir aItem.SetURL(sURL); 697*cdf0e10cSrcweir aItem.SetInsertMode( (SvxLinkInsertMode)nType ); 698*cdf0e10cSrcweir aItem.SetTargetFrame( GetSelTarget() ); 699*cdf0e10cSrcweir 700*cdf0e10cSrcweir GetBindings().GetDispatcher()->Execute( 701*cdf0e10cSrcweir SID_HYPERLINK_SETLINK, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L ); 702*cdf0e10cSrcweir 703*cdf0e10cSrcweir AddToHistory( aNameCB.GetText(), sURL ); 704*cdf0e10cSrcweir 705*cdf0e10cSrcweir if ( sURL != aUrlCB.GetText() ) 706*cdf0e10cSrcweir aUrlCB.SetText( sURL ); 707*cdf0e10cSrcweir } 708*cdf0e10cSrcweir 709*cdf0e10cSrcweir /*-------------------------------------------------------------------- 710*cdf0e10cSrcweir Beschreibung: Selektierten Target Frame Eintrag im Popup ermitteln 711*cdf0e10cSrcweir --------------------------------------------------------------------*/ 712*cdf0e10cSrcweir 713*cdf0e10cSrcweir String SvxHyperlinkDlg::GetSelTarget() 714*cdf0e10cSrcweir { 715*cdf0e10cSrcweir String sTarget; 716*cdf0e10cSrcweir 717*cdf0e10cSrcweir if (pTargetMenu != NULL) 718*cdf0e10cSrcweir { 719*cdf0e10cSrcweir for (sal_uInt16 i = 1; i <= pTargetMenu->GetItemCount(); i++) 720*cdf0e10cSrcweir { 721*cdf0e10cSrcweir if (pTargetMenu->IsItemChecked(i)) 722*cdf0e10cSrcweir { 723*cdf0e10cSrcweir sTarget = pTargetMenu->GetItemText(i); 724*cdf0e10cSrcweir break; 725*cdf0e10cSrcweir } 726*cdf0e10cSrcweir } 727*cdf0e10cSrcweir } 728*cdf0e10cSrcweir 729*cdf0e10cSrcweir return sTarget; 730*cdf0e10cSrcweir } 731*cdf0e10cSrcweir 732*cdf0e10cSrcweir /*-------------------------------------------------------------------- 733*cdf0e10cSrcweir Beschreibung: URL in History der Leiste aufnehmen 734*cdf0e10cSrcweir --------------------------------------------------------------------*/ 735*cdf0e10cSrcweir 736*cdf0e10cSrcweir void SvxHyperlinkDlg::AddToHistory(const String& rName, const String& rURL) 737*cdf0e10cSrcweir { 738*cdf0e10cSrcweir String sName(rName); 739*cdf0e10cSrcweir 740*cdf0e10cSrcweir if (bHasOldName && sOldName.Len()) 741*cdf0e10cSrcweir { 742*cdf0e10cSrcweir sName = sOldName; 743*cdf0e10cSrcweir bHasOldName = sal_False; 744*cdf0e10cSrcweir } 745*cdf0e10cSrcweir 746*cdf0e10cSrcweir if (!sName.Len()) 747*cdf0e10cSrcweir sName = rURL; 748*cdf0e10cSrcweir 749*cdf0e10cSrcweir if (rURL.Len()) 750*cdf0e10cSrcweir { 751*cdf0e10cSrcweir sal_uInt16 nNamePos = aNameCB.GetEntryPos(sName); 752*cdf0e10cSrcweir sal_uInt16 nUrlPos = aUrlCB.GetEntryPos(rURL); 753*cdf0e10cSrcweir sal_uInt16 nPos = COMBOBOX_ENTRY_NOTFOUND; 754*cdf0e10cSrcweir 755*cdf0e10cSrcweir if (nNamePos != COMBOBOX_ENTRY_NOTFOUND) 756*cdf0e10cSrcweir nPos = nNamePos; 757*cdf0e10cSrcweir else 758*cdf0e10cSrcweir nPos = nUrlPos; 759*cdf0e10cSrcweir 760*cdf0e10cSrcweir // Alten Eintrag durch neuen Eintrag ersetzen 761*cdf0e10cSrcweir if (nPos != COMBOBOX_ENTRY_NOTFOUND) 762*cdf0e10cSrcweir { 763*cdf0e10cSrcweir aNameCB.RemoveEntry(nPos); 764*cdf0e10cSrcweir aUrlCB.RemoveEntry(nPos); 765*cdf0e10cSrcweir aNameCB.SetText(rName); 766*cdf0e10cSrcweir aUrlCB.SetText(rURL); 767*cdf0e10cSrcweir } 768*cdf0e10cSrcweir 769*cdf0e10cSrcweir aNameCB.InsertEntry(sName, 0); 770*cdf0e10cSrcweir aUrlCB.InsertEntry(rURL, 0); 771*cdf0e10cSrcweir } 772*cdf0e10cSrcweir } 773*cdf0e10cSrcweir 774*cdf0e10cSrcweir /*-------------------------------------------------------------------- 775*cdf0e10cSrcweir Beschreibung: Bookmark und Search-Button enablen/disablen 776*cdf0e10cSrcweir --------------------------------------------------------------------*/ 777*cdf0e10cSrcweir 778*cdf0e10cSrcweir IMPL_LINK( SvxHyperlinkDlg, ComboSelectHdl, ComboBox *, pCombo ) 779*cdf0e10cSrcweir { 780*cdf0e10cSrcweir sal_uInt16 nPos = pCombo->GetEntryPos(pCombo->GetText()); 781*cdf0e10cSrcweir 782*cdf0e10cSrcweir if (nPos != COMBOBOX_ENTRY_NOTFOUND) 783*cdf0e10cSrcweir { 784*cdf0e10cSrcweir aNameCB.SetText(aNameCB.GetEntry(nPos)); 785*cdf0e10cSrcweir aUrlCB.SetText(aUrlCB.GetEntry(nPos)); 786*cdf0e10cSrcweir 787*cdf0e10cSrcweir EnableLink(); 788*cdf0e10cSrcweir EnableItem(BTN_INSERT_BOOKMARK, sal_True); 789*cdf0e10cSrcweir EnableItem(BTN_INET_SEARCH, sal_True); 790*cdf0e10cSrcweir } 791*cdf0e10cSrcweir return sal_True; 792*cdf0e10cSrcweir } 793*cdf0e10cSrcweir 794*cdf0e10cSrcweir /*-------------------------------------------------------------------- 795*cdf0e10cSrcweir Beschreibung: 796*cdf0e10cSrcweir --------------------------------------------------------------------*/ 797*cdf0e10cSrcweir 798*cdf0e10cSrcweir IMPL_LINK( SvxHyperlinkDlg, ComboModifyHdl, ComboBox *, pCombo ) 799*cdf0e10cSrcweir { 800*cdf0e10cSrcweir sal_Bool bEnable = sal_True; 801*cdf0e10cSrcweir 802*cdf0e10cSrcweir if (!pCombo->GetText().Len()) 803*cdf0e10cSrcweir bEnable = sal_False; 804*cdf0e10cSrcweir 805*cdf0e10cSrcweir if (pCombo == &aNameCB) 806*cdf0e10cSrcweir { 807*cdf0e10cSrcweir if (IsItemEnabled(BTN_INET_SEARCH) != bEnable) 808*cdf0e10cSrcweir EnableItem(BTN_INET_SEARCH, bEnable); 809*cdf0e10cSrcweir } 810*cdf0e10cSrcweir 811*cdf0e10cSrcweir EnableLink(); 812*cdf0e10cSrcweir 813*cdf0e10cSrcweir if (aUrlCB.GetText().Len()) 814*cdf0e10cSrcweir bEnable = sal_True; 815*cdf0e10cSrcweir else 816*cdf0e10cSrcweir bEnable = sal_False; 817*cdf0e10cSrcweir 818*cdf0e10cSrcweir if (IsItemEnabled(BTN_INSERT_BOOKMARK) != bEnable) 819*cdf0e10cSrcweir EnableItem(BTN_INSERT_BOOKMARK, bEnable); 820*cdf0e10cSrcweir 821*cdf0e10cSrcweir return sal_True; 822*cdf0e10cSrcweir } 823*cdf0e10cSrcweir 824*cdf0e10cSrcweir // -------------------------------------------------------------------- 825*cdf0e10cSrcweir 826*cdf0e10cSrcweir void SvxHyperlinkDlg::DataChanged( const DataChangedEvent& rDCEvt ) 827*cdf0e10cSrcweir { 828*cdf0e10cSrcweir ToolBox::DataChanged( rDCEvt ); 829*cdf0e10cSrcweir 830*cdf0e10cSrcweir if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE)) 831*cdf0e10cSrcweir SetImages(); 832*cdf0e10cSrcweir } 833*cdf0e10cSrcweir 834*cdf0e10cSrcweir // -------------------------------------------------------------------- 835*cdf0e10cSrcweir 836*cdf0e10cSrcweir void SvxHyperlinkDlg::SetImages() 837*cdf0e10cSrcweir { 838*cdf0e10cSrcweir bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode(); 839*cdf0e10cSrcweir 840*cdf0e10cSrcweir SetItemImage( BTN_LINK, mpManager->GetImage( BTN_LINK, bHighContrast ) ); 841*cdf0e10cSrcweir SetItemImage( BTN_INSERT_BOOKMARK, mpManager->GetImage( BTN_INSERT_BOOKMARK, bHighContrast ) ); 842*cdf0e10cSrcweir SetItemImage( BTN_INET_SEARCH, mpManager->GetImage( BTN_INET_SEARCH, bHighContrast ) ); 843*cdf0e10cSrcweir SetItemImage( BTN_TARGET, mpManager->GetImage( BTN_TARGET, bHighContrast ) ); 844*cdf0e10cSrcweir SetItemImage( BTN_OPENDIALOG, mpManager->GetImage( BTN_OPENDIALOG, bHighContrast ) ); 845*cdf0e10cSrcweir } 846*cdf0e10cSrcweir 847*cdf0e10cSrcweir /*-------------------------------------------------------------------- 848*cdf0e10cSrcweir Beschreibung: Comboboxen 849*cdf0e10cSrcweir --------------------------------------------------------------------*/ 850*cdf0e10cSrcweir 851*cdf0e10cSrcweir HyperCombo::HyperCombo( SvxHyperlinkDlg* pDialog, const ResId& rResId ) : 852*cdf0e10cSrcweir ComboBox( (Window *)pDialog, rResId ) 853*cdf0e10cSrcweir { 854*cdf0e10cSrcweir pDlg = pDialog; 855*cdf0e10cSrcweir 856*cdf0e10cSrcweir nMaxWidth = GetSizePixel().Width(); 857*cdf0e10cSrcweir if (this == &pDlg->aUrlCB) 858*cdf0e10cSrcweir nMinWidth = GetTextWidth(String::CreateFromAscii("http://www.stardiv.dewww")); 859*cdf0e10cSrcweir else 860*cdf0e10cSrcweir nMinWidth = GetTextWidth(String::CreateFromAscii("StarDivision GmbHwww")); 861*cdf0e10cSrcweir } 862*cdf0e10cSrcweir 863*cdf0e10cSrcweir /*-------------------------------------------------------------------- 864*cdf0e10cSrcweir Beschreibung: Comboboxen KeyInput 865*cdf0e10cSrcweir --------------------------------------------------------------------*/ 866*cdf0e10cSrcweir 867*cdf0e10cSrcweir long HyperCombo::Notify( NotifyEvent& rNEvt ) 868*cdf0e10cSrcweir { 869*cdf0e10cSrcweir long nHandled = 0; 870*cdf0e10cSrcweir static sal_Bool bLocked = sal_False; 871*cdf0e10cSrcweir 872*cdf0e10cSrcweir if (bLocked) // Keine weiteren RETURNs annehmen (nicht Reentrant!) 873*cdf0e10cSrcweir return nHandled; 874*cdf0e10cSrcweir 875*cdf0e10cSrcweir bLocked = sal_True; 876*cdf0e10cSrcweir 877*cdf0e10cSrcweir if ( rNEvt.GetType() == EVENT_KEYINPUT ) 878*cdf0e10cSrcweir { 879*cdf0e10cSrcweir const KeyEvent* pKEvt = rNEvt.GetKeyEvent(); 880*cdf0e10cSrcweir const KeyCode aKeyCode = pKEvt->GetKeyCode(); 881*cdf0e10cSrcweir 882*cdf0e10cSrcweir if (aKeyCode.GetCode() == KEY_RETURN) 883*cdf0e10cSrcweir { 884*cdf0e10cSrcweir pDlg->SendToApp(HLINK_DEFAULT); 885*cdf0e10cSrcweir nHandled = 1; 886*cdf0e10cSrcweir } 887*cdf0e10cSrcweir } 888*cdf0e10cSrcweir if (this == &pDlg->aNameCB) 889*cdf0e10cSrcweir pDlg->sOldName = GetText(); 890*cdf0e10cSrcweir 891*cdf0e10cSrcweir if (!nHandled) 892*cdf0e10cSrcweir nHandled = ComboBox::Notify( rNEvt ); 893*cdf0e10cSrcweir 894*cdf0e10cSrcweir bLocked = sal_False; 895*cdf0e10cSrcweir 896*cdf0e10cSrcweir return nHandled; 897*cdf0e10cSrcweir } 898*cdf0e10cSrcweir 899*cdf0e10cSrcweir /*-------------------------------------------------------------------- 900*cdf0e10cSrcweir Beschreibung: Drag&Drop vor dem Combo-Edit abfangen und weiterleiten 901*cdf0e10cSrcweir --------------------------------------------------------------------*/ 902*cdf0e10cSrcweir 903*cdf0e10cSrcweir long HyperCombo::PreNotify( NotifyEvent& rNEvt ) 904*cdf0e10cSrcweir { 905*cdf0e10cSrcweir long nHandled = 0; 906*cdf0e10cSrcweir 907*cdf0e10cSrcweir nHandled = ComboBox::PreNotify( rNEvt ); 908*cdf0e10cSrcweir 909*cdf0e10cSrcweir return nHandled; 910*cdf0e10cSrcweir } 911*cdf0e10cSrcweir 912*cdf0e10cSrcweir /*-------------------------------------------------------------------- 913*cdf0e10cSrcweir Beschreibung: 914*cdf0e10cSrcweir --------------------------------------------------------------------*/ 915*cdf0e10cSrcweir 916*cdf0e10cSrcweir long HyperCombo::CalcResizeWidth( long nW ) 917*cdf0e10cSrcweir { 918*cdf0e10cSrcweir long nNewWidth = Max(nMaxWidth - nW * GetRatio() / 100L, nMinWidth); 919*cdf0e10cSrcweir 920*cdf0e10cSrcweir if (nNewWidth > nMaxWidth) 921*cdf0e10cSrcweir nNewWidth = nMaxWidth; 922*cdf0e10cSrcweir 923*cdf0e10cSrcweir if (nNewWidth != GetSizePixel().Width()) 924*cdf0e10cSrcweir return nNewWidth; 925*cdf0e10cSrcweir else 926*cdf0e10cSrcweir return 0; // Kein Resize notwendig 927*cdf0e10cSrcweir } 928*cdf0e10cSrcweir 929*cdf0e10cSrcweir /*-------------------------------------------------------------------- 930*cdf0e10cSrcweir Beschreibung: 931*cdf0e10cSrcweir --------------------------------------------------------------------*/ 932*cdf0e10cSrcweir 933*cdf0e10cSrcweir void HyperCombo::DoResize( long nNewWidth ) 934*cdf0e10cSrcweir { 935*cdf0e10cSrcweir SetSizePixel(Size(nNewWidth, GetSizePixel().Height())); 936*cdf0e10cSrcweir } 937*cdf0e10cSrcweir 938*cdf0e10cSrcweir /*-------------------------------------------------------------------- 939*cdf0e10cSrcweir Beschreibung: FixedText 940*cdf0e10cSrcweir --------------------------------------------------------------------*/ 941*cdf0e10cSrcweir 942*cdf0e10cSrcweir HyperFixedText::HyperFixedText( SvxHyperlinkDlg* pDialog, const ResId& rResId ) : 943*cdf0e10cSrcweir FixedInfo( (Window *)pDialog, rResId ) 944*cdf0e10cSrcweir { 945*cdf0e10cSrcweir pDlg = pDialog; 946*cdf0e10cSrcweir } 947*cdf0e10cSrcweir 948*cdf0e10cSrcweir /*-------------------------------------------------------------------- 949*cdf0e10cSrcweir Beschreibung: Webseite der Search-Engine mit Suchergebnissen anzeigen 950*cdf0e10cSrcweir --------------------------------------------------------------------*/ 951*cdf0e10cSrcweir void SvxHyperlinkDlg::OpenDoc( const String& rURL, SfxViewFrame* pViewFrame ) 952*cdf0e10cSrcweir { 953*cdf0e10cSrcweir SfxStringItem aName( SID_FILE_NAME, rURL ); 954*cdf0e10cSrcweir SfxStringItem aReferer( SID_REFERER, String::CreateFromAscii("private:user") ); 955*cdf0e10cSrcweir SfxBoolItem aNewView( SID_OPEN_NEW_VIEW, sal_True ); 956*cdf0e10cSrcweir SfxBoolItem aSilent( SID_SILENT, sal_True ); 957*cdf0e10cSrcweir SfxBoolItem aReadOnly( SID_DOC_READONLY, sal_True ); 958*cdf0e10cSrcweir SfxBoolItem aExternal( SID_BROWSE, sal_True ); 959*cdf0e10cSrcweir SfxDispatcher* pDisp = SfxViewFrame::Current() ? SfxViewFrame::Current()->GetDispatcher() : NULL; 960*cdf0e10cSrcweir 961*cdf0e10cSrcweir if ( pViewFrame ) 962*cdf0e10cSrcweir { 963*cdf0e10cSrcweir SfxFrameItem aView( SID_DOCFRAME, pViewFrame ? &pViewFrame->GetFrame() : NULL ); 964*cdf0e10cSrcweir if ( pDisp ) 965*cdf0e10cSrcweir pDisp->Execute( SID_OPENDOC, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, 966*cdf0e10cSrcweir &aName, &aView, &aNewView, &aSilent, &aReadOnly, &aReferer, &aExternal, 0L ); 967*cdf0e10cSrcweir } 968*cdf0e10cSrcweir else if ( pDisp ) 969*cdf0e10cSrcweir pDisp->Execute( SID_OPENDOC, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, 970*cdf0e10cSrcweir &aName, &aNewView, &aSilent, &aReadOnly, &aReferer, 0L ); 971*cdf0e10cSrcweir } 972*cdf0e10cSrcweir // class SvxHyperlinkDialogWrapper ------------------------------------------ 973*cdf0e10cSrcweir 974*cdf0e10cSrcweir SFX_IMPL_CHILDWINDOW(SvxHyperlinkDlgWrapper, SID_HYPERLINK_INSERT) 975*cdf0e10cSrcweir 976*cdf0e10cSrcweir /*-------------------------------------------------------------------- 977*cdf0e10cSrcweir Beschreibung: Wrapper fuer Hyperlinkleiste 978*cdf0e10cSrcweir --------------------------------------------------------------------*/ 979*cdf0e10cSrcweir 980*cdf0e10cSrcweir SvxHyperlinkDlgWrapper::SvxHyperlinkDlgWrapper( Window* _pParent, sal_uInt16 nId, 981*cdf0e10cSrcweir SfxBindings* _pBindings, SfxChildWinInfo* /*pInfo*/ ) : 982*cdf0e10cSrcweir 983*cdf0e10cSrcweir SfxChildWindow( _pParent, nId ) 984*cdf0e10cSrcweir 985*cdf0e10cSrcweir { 986*cdf0e10cSrcweir pWindow = new SvxHyperlinkDlg( _pBindings, _pParent ); 987*cdf0e10cSrcweir eChildAlignment = SFX_ALIGN_TOP; 988*cdf0e10cSrcweir } 989*cdf0e10cSrcweir 990*cdf0e10cSrcweir /*-------------------------------------------------------------------- 991*cdf0e10cSrcweir Beschreibung: 992*cdf0e10cSrcweir --------------------------------------------------------------------*/ 993*cdf0e10cSrcweir 994*cdf0e10cSrcweir SfxChildWinInfo SvxHyperlinkDlgWrapper::GetInfo() const 995*cdf0e10cSrcweir { 996*cdf0e10cSrcweir SfxChildWinInfo aInfo = SfxChildWindow::GetInfo(); 997*cdf0e10cSrcweir return aInfo; 998*cdf0e10cSrcweir } 999*cdf0e10cSrcweir 1000