1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_cui.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski // include ---------------------------------------------------------------
28*b1cdbd2cSJim Jagielski #include <vcl/settings.hxx>
29*b1cdbd2cSJim Jagielski #include <unotools/viewoptions.hxx>
30*b1cdbd2cSJim Jagielski #include "cuihyperdlg.hxx"
31*b1cdbd2cSJim Jagielski #include "hlinettp.hxx"
32*b1cdbd2cSJim Jagielski #include "hlmailtp.hxx"
33*b1cdbd2cSJim Jagielski #include "hldoctp.hxx"
34*b1cdbd2cSJim Jagielski #include "hldocntp.hxx"
35*b1cdbd2cSJim Jagielski #include "hyperdlg.hrc"
36*b1cdbd2cSJim Jagielski #include <svx/svxids.hrc> // SID_READONLY_MODE
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Reference;
39*b1cdbd2cSJim Jagielski using ::com::sun::star::frame::XFrame;
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski //########################################################################
42*b1cdbd2cSJim Jagielski //#                                                                      #
43*b1cdbd2cSJim Jagielski //# Childwindow-Wrapper-Class                                            #
44*b1cdbd2cSJim Jagielski //#                                                                      #
45*b1cdbd2cSJim Jagielski //########################################################################
46*b1cdbd2cSJim Jagielski 
SvxHlinkCtrl(sal_uInt16 _nId,SfxBindings & rBindings,SvxHpLinkDlg * pDlg)47*b1cdbd2cSJim Jagielski SvxHlinkCtrl::SvxHlinkCtrl( sal_uInt16 _nId, SfxBindings & rBindings, SvxHpLinkDlg* pDlg )
48*b1cdbd2cSJim Jagielski : SfxControllerItem ( _nId, rBindings )
49*b1cdbd2cSJim Jagielski   ,aOnlineForwarder  ( SID_INTERNET_ONLINE , *this )
50*b1cdbd2cSJim Jagielski   ,aRdOnlyForwarder  ( SID_READONLY_MODE, *this )
51*b1cdbd2cSJim Jagielski {
52*b1cdbd2cSJim Jagielski 	pParent = pDlg;
53*b1cdbd2cSJim Jagielski }
54*b1cdbd2cSJim Jagielski 
StateChanged(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState)55*b1cdbd2cSJim Jagielski void SvxHlinkCtrl::StateChanged( sal_uInt16 nSID, SfxItemState eState,
56*b1cdbd2cSJim Jagielski 								 const SfxPoolItem* pState )
57*b1cdbd2cSJim Jagielski {
58*b1cdbd2cSJim Jagielski     if ( eState == SFX_ITEM_AVAILABLE )
59*b1cdbd2cSJim Jagielski     {
60*b1cdbd2cSJim Jagielski         switch ( nSID )
61*b1cdbd2cSJim Jagielski         {
62*b1cdbd2cSJim Jagielski 	        case SID_INTERNET_ONLINE :
63*b1cdbd2cSJim Jagielski             {
64*b1cdbd2cSJim Jagielski     		    pParent->EnableInetBrowse( !( (SfxBoolItem*)pState)->GetValue() );
65*b1cdbd2cSJim Jagielski             }
66*b1cdbd2cSJim Jagielski             break;
67*b1cdbd2cSJim Jagielski 		    case SID_HYPERLINK_GETLINK :
68*b1cdbd2cSJim Jagielski 		    {
69*b1cdbd2cSJim Jagielski 			    pParent->SetPage ( (SvxHyperlinkItem*)pState);
70*b1cdbd2cSJim Jagielski 		    }
71*b1cdbd2cSJim Jagielski             break;
72*b1cdbd2cSJim Jagielski             case SID_READONLY_MODE :
73*b1cdbd2cSJim Jagielski             {
74*b1cdbd2cSJim Jagielski                 pParent->SetReadOnlyMode( ( (SfxBoolItem*)pState)->GetValue() == sal_True );
75*b1cdbd2cSJim Jagielski             }
76*b1cdbd2cSJim Jagielski             break;
77*b1cdbd2cSJim Jagielski         }
78*b1cdbd2cSJim Jagielski     }
79*b1cdbd2cSJim Jagielski }
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski 
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski //########################################################################
88*b1cdbd2cSJim Jagielski //#                                                                      #
89*b1cdbd2cSJim Jagielski //# Hyperlink - Dialog                                                   #
90*b1cdbd2cSJim Jagielski //#                                                                      #
91*b1cdbd2cSJim Jagielski //########################################################################
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski /*************************************************************************
94*b1cdbd2cSJim Jagielski |*
95*b1cdbd2cSJim Jagielski |* Contructor / Destructor
96*b1cdbd2cSJim Jagielski |*
97*b1cdbd2cSJim Jagielski |************************************************************************/
98*b1cdbd2cSJim Jagielski 
SvxHpLinkDlg(Window * pParent,SfxBindings * pBindings)99*b1cdbd2cSJim Jagielski SvxHpLinkDlg::SvxHpLinkDlg (Window* pParent, SfxBindings* pBindings)
100*b1cdbd2cSJim Jagielski :	IconChoiceDialog( pParent, CUI_RES ( RID_SVXDLG_NEWHYPERLINK ) ),
101*b1cdbd2cSJim Jagielski 	maCtrl			( SID_HYPERLINK_GETLINK, *pBindings, this ),
102*b1cdbd2cSJim Jagielski 	mpBindings		( pBindings ),
103*b1cdbd2cSJim Jagielski     mbReadOnly      ( sal_False ),
104*b1cdbd2cSJim Jagielski     mbIsHTMLDoc     ( sal_False )
105*b1cdbd2cSJim Jagielski {
106*b1cdbd2cSJim Jagielski     SetUniqueId( HID_HYPERLINK_DIALOG );
107*b1cdbd2cSJim Jagielski     mbGrabFocus = sal_True;
108*b1cdbd2cSJim Jagielski 	// insert pages
109*b1cdbd2cSJim Jagielski 	Image aImage;
110*b1cdbd2cSJim Jagielski 	Image aImageHC;
111*b1cdbd2cSJim Jagielski 	String aStrTitle;
112*b1cdbd2cSJim Jagielski 	SvxIconChoiceCtrlEntry* pEntry = NULL;
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 	aStrTitle = CUI_RESSTR( RID_SVXSTR_HYPERDLG_HLINETTP );
115*b1cdbd2cSJim Jagielski 	aImage = Image( CUI_RES ( RID_SVXBMP_HLINETTP ) );
116*b1cdbd2cSJim Jagielski 	aImageHC = Image( CUI_RES ( RID_SVXBMP_HLINETTP_H ) );
117*b1cdbd2cSJim Jagielski 	pEntry = AddTabPage ( RID_SVXPAGE_HYPERLINK_INTERNET, aStrTitle, aImage, aImageHC, SvxHyperlinkInternetTp::Create );
118*b1cdbd2cSJim Jagielski 	pEntry->SetQuickHelpText( CUI_RESSTR( RID_SVXSTR_HYPERDLG_HLINETTP_HELP ) );
119*b1cdbd2cSJim Jagielski 	aStrTitle = CUI_RESSTR( RID_SVXSTR_HYPERDLG_HLMAILTP );
120*b1cdbd2cSJim Jagielski 	aImage = Image( CUI_RES ( RID_SVXBMP_HLMAILTP ) );
121*b1cdbd2cSJim Jagielski 	aImageHC = Image( CUI_RES ( RID_SVXBMP_HLMAILTP_H ) );
122*b1cdbd2cSJim Jagielski 	pEntry = AddTabPage ( RID_SVXPAGE_HYPERLINK_MAIL, aStrTitle, aImage, aImageHC, SvxHyperlinkMailTp::Create );
123*b1cdbd2cSJim Jagielski 	pEntry->SetQuickHelpText( CUI_RESSTR( RID_SVXSTR_HYPERDLG_HLMAILTP_HELP ) );
124*b1cdbd2cSJim Jagielski 	aStrTitle = CUI_RESSTR( RID_SVXSTR_HYPERDLG_HLDOCTP );
125*b1cdbd2cSJim Jagielski 	aImage = Image( CUI_RES ( RID_SVXBMP_HLDOCTP ) );
126*b1cdbd2cSJim Jagielski 	aImageHC = Image( CUI_RES ( RID_SVXBMP_HLDOCTP_H ) );
127*b1cdbd2cSJim Jagielski 	pEntry = AddTabPage ( RID_SVXPAGE_HYPERLINK_DOCUMENT, aStrTitle, aImage, aImageHC, SvxHyperlinkDocTp::Create );
128*b1cdbd2cSJim Jagielski 	pEntry->SetQuickHelpText( CUI_RESSTR( RID_SVXSTR_HYPERDLG_HLDOCTP_HELP ) );
129*b1cdbd2cSJim Jagielski 	aStrTitle = CUI_RESSTR( RID_SVXSTR_HYPERDLG_HLDOCNTP );
130*b1cdbd2cSJim Jagielski 	aImage = Image( CUI_RES ( RID_SVXBMP_HLDOCNTP ) );
131*b1cdbd2cSJim Jagielski 	aImageHC = Image( CUI_RES ( RID_SVXBMP_HLDOCNTP_H ) );
132*b1cdbd2cSJim Jagielski 	pEntry = AddTabPage ( RID_SVXPAGE_HYPERLINK_NEWDOCUMENT, aStrTitle, aImage, aImageHC, SvxHyperlinkNewDocTp::Create );
133*b1cdbd2cSJim Jagielski 	pEntry->SetQuickHelpText( CUI_RESSTR( RID_SVXSTR_HYPERDLG_HLDOCNTP_HELP ) );
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski 	// create itemset for tabpages
136*b1cdbd2cSJim Jagielski 	mpItemSet = new SfxItemSet( SFX_APP()->GetPool(), SID_HYPERLINK_GETLINK,
137*b1cdbd2cSJim Jagielski 		                       SID_HYPERLINK_SETLINK );
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski 	SvxHyperlinkItem aItem;
140*b1cdbd2cSJim Jagielski 	mpItemSet->Put (aItem, SID_HYPERLINK_GETLINK);
141*b1cdbd2cSJim Jagielski 
142*b1cdbd2cSJim Jagielski 	SetInputSet (mpItemSet);
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski 	// Init Dialog
145*b1cdbd2cSJim Jagielski 	Start (sal_False);
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski 	pBindings->Update( SID_READONLY_MODE );
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski 	// set OK/Cancel - button
150*b1cdbd2cSJim Jagielski 	GetOKButton().SetText ( CUI_RESSTR(RID_SVXSTR_HYPDLG_APPLYBUT) );
151*b1cdbd2cSJim Jagielski 	GetCancelButton().SetText ( CUI_RESSTR(RID_SVXSTR_HYPDLG_CLOSEBUT) );
152*b1cdbd2cSJim Jagielski 
153*b1cdbd2cSJim Jagielski 	GetOKButton().SetClickHdl    ( LINK ( this, SvxHpLinkDlg, ClickApplyHdl_Impl ) );
154*b1cdbd2cSJim Jagielski 	GetCancelButton().SetClickHdl( LINK ( this, SvxHpLinkDlg, ClickCloseHdl_Impl ) );
155*b1cdbd2cSJim Jagielski }
156*b1cdbd2cSJim Jagielski 
~SvxHpLinkDlg()157*b1cdbd2cSJim Jagielski SvxHpLinkDlg::~SvxHpLinkDlg ()
158*b1cdbd2cSJim Jagielski {
159*b1cdbd2cSJim Jagielski 	// delete config item, so the base class (IconChoiceDialog) can not load it on the next start
160*b1cdbd2cSJim Jagielski 	SvtViewOptions aViewOpt( E_TABDIALOG, String::CreateFromInt32( SID_HYPERLINK_DIALOG ) );
161*b1cdbd2cSJim Jagielski 	aViewOpt.Delete();
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski 	delete mpItemSet;
164*b1cdbd2cSJim Jagielski }
165*b1cdbd2cSJim Jagielski 
166*b1cdbd2cSJim Jagielski /*************************************************************************
167*b1cdbd2cSJim Jagielski |*
168*b1cdbd2cSJim Jagielski |* Close Dialog-Window
169*b1cdbd2cSJim Jagielski |*
170*b1cdbd2cSJim Jagielski |************************************************************************/
171*b1cdbd2cSJim Jagielski 
Close()172*b1cdbd2cSJim Jagielski sal_Bool SvxHpLinkDlg::Close()
173*b1cdbd2cSJim Jagielski {
174*b1cdbd2cSJim Jagielski 	GetDispatcher()->Execute( SID_HYPERLINK_DIALOG,
175*b1cdbd2cSJim Jagielski 		                      SFX_CALLMODE_ASYNCHRON |
176*b1cdbd2cSJim Jagielski 							  SFX_CALLMODE_RECORD);
177*b1cdbd2cSJim Jagielski 	return sal_True;
178*b1cdbd2cSJim Jagielski }
179*b1cdbd2cSJim Jagielski 
180*b1cdbd2cSJim Jagielski /*************************************************************************
181*b1cdbd2cSJim Jagielski |*
182*b1cdbd2cSJim Jagielski |* When extrawindow is visible and its never moved by user, then move that
183*b1cdbd2cSJim Jagielski |* window, too.
184*b1cdbd2cSJim Jagielski |*
185*b1cdbd2cSJim Jagielski |************************************************************************/
186*b1cdbd2cSJim Jagielski 
Move()187*b1cdbd2cSJim Jagielski void SvxHpLinkDlg::Move()
188*b1cdbd2cSJim Jagielski {
189*b1cdbd2cSJim Jagielski 	SvxHyperlinkTabPageBase* pCurrentPage = ( SvxHyperlinkTabPageBase* )
190*b1cdbd2cSJim Jagielski 		                                    GetTabPage ( GetCurPageId() );
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski 	if( pCurrentPage->IsMarkWndVisible () )
193*b1cdbd2cSJim Jagielski 	{
194*b1cdbd2cSJim Jagielski 		// Pos&Size of this dialog-window
195*b1cdbd2cSJim Jagielski 		Point aDlgPos ( GetPosPixel () );
196*b1cdbd2cSJim Jagielski 		Size aDlgSize (	GetSizePixel () );
197*b1cdbd2cSJim Jagielski 
198*b1cdbd2cSJim Jagielski 		// Size of Office-Main-Window
199*b1cdbd2cSJim Jagielski 		Size aWindowSize( SFX_APP()->GetTopWindow()->GetSizePixel() );
200*b1cdbd2cSJim Jagielski 
201*b1cdbd2cSJim Jagielski 		// Size of Extrawindow
202*b1cdbd2cSJim Jagielski 		Size aExtraWndSize( pCurrentPage->GetSizeExtraWnd() );
203*b1cdbd2cSJim Jagielski 
204*b1cdbd2cSJim Jagielski 		sal_Bool bDoInvalid ;
205*b1cdbd2cSJim Jagielski 		if( aDlgPos.X()+(1.02*aDlgSize.Width())+aExtraWndSize.Width() > aWindowSize.Width() )
206*b1cdbd2cSJim Jagielski 		{
207*b1cdbd2cSJim Jagielski 			if( aDlgPos.X() - ( 0.02*aDlgSize.Width() ) - aExtraWndSize.Width() < 0 )
208*b1cdbd2cSJim Jagielski 			{
209*b1cdbd2cSJim Jagielski 				// Pos Extrawindow anywhere
210*b1cdbd2cSJim Jagielski 				bDoInvalid = pCurrentPage->MoveToExtraWnd( Point( 1, long(1.1*aDlgPos.Y()) ), sal_True );
211*b1cdbd2cSJim Jagielski 			}
212*b1cdbd2cSJim Jagielski 			else
213*b1cdbd2cSJim Jagielski 			{
214*b1cdbd2cSJim Jagielski 				// Pos Extrawindow on the left side of Dialog
215*b1cdbd2cSJim Jagielski 				bDoInvalid = pCurrentPage->MoveToExtraWnd( aDlgPos -
216*b1cdbd2cSJim Jagielski 														   Point( long(0.02*aDlgSize.Width()), 0 ) -
217*b1cdbd2cSJim Jagielski 														   Point( aExtraWndSize.Width(), 0 ) );
218*b1cdbd2cSJim Jagielski 			}
219*b1cdbd2cSJim Jagielski 		}
220*b1cdbd2cSJim Jagielski 		else
221*b1cdbd2cSJim Jagielski 		{
222*b1cdbd2cSJim Jagielski 			// Pos Extrawindow on the right side of Dialog
223*b1cdbd2cSJim Jagielski 			bDoInvalid = pCurrentPage->MoveToExtraWnd ( aDlgPos + Point( long(1.02*aDlgSize.Width()), 0 ) );
224*b1cdbd2cSJim Jagielski 		}
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski 		if ( bDoInvalid )
227*b1cdbd2cSJim Jagielski 			Invalidate(INVALIDATE_BACKGROUND);
228*b1cdbd2cSJim Jagielski 	}
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski 	Window::Move();
231*b1cdbd2cSJim Jagielski }
232*b1cdbd2cSJim Jagielski 
233*b1cdbd2cSJim Jagielski /*long SvxHpLinkDlg::PreNotify( NotifyEvent& rNEvt )
234*b1cdbd2cSJim Jagielski {
235*b1cdbd2cSJim Jagielski 	long nRet = 0;
236*b1cdbd2cSJim Jagielski 
237*b1cdbd2cSJim Jagielski 	if( rNEvt.GetType() == EVENT_KEYINPUT )
238*b1cdbd2cSJim Jagielski 	{
239*b1cdbd2cSJim Jagielski 		DBG_ASSERT( rNEvt.GetKeyEvent(), "-SvxHpLinkDlg::PreNotify(): no KeyEvent for key event?!" );
240*b1cdbd2cSJim Jagielski 
241*b1cdbd2cSJim Jagielski         const KeyEvent* pKEvt = rNEvt.GetKeyEvent();
242*b1cdbd2cSJim Jagielski 
243*b1cdbd2cSJim Jagielski 		if( KEY_MOD2 == pKEvt->GetKeyCode().GetModifier() && pKEvt->GetCharCode() && HandleShortCutKey( *pKEvt ) )
244*b1cdbd2cSJim Jagielski 			nRet = 1;
245*b1cdbd2cSJim Jagielski 	}
246*b1cdbd2cSJim Jagielski 
247*b1cdbd2cSJim Jagielski 	if( !nRet )
248*b1cdbd2cSJim Jagielski 		nRet = IconChoiceDialog::PreNotify( rNEvt );
249*b1cdbd2cSJim Jagielski 
250*b1cdbd2cSJim Jagielski 	return nRet;
251*b1cdbd2cSJim Jagielski }*/
252*b1cdbd2cSJim Jagielski 
253*b1cdbd2cSJim Jagielski /*************************************************************************
254*b1cdbd2cSJim Jagielski |*
255*b1cdbd2cSJim Jagielski |* Click on Apply-button
256*b1cdbd2cSJim Jagielski |*
257*b1cdbd2cSJim Jagielski |************************************************************************/
258*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxHpLinkDlg,ClickApplyHdl_Impl,void *,EMPTYARG)259*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHpLinkDlg, ClickApplyHdl_Impl, void *, EMPTYARG )
260*b1cdbd2cSJim Jagielski {
261*b1cdbd2cSJim Jagielski 	SfxItemSet aItemSet( SFX_APP()->GetPool(), SID_HYPERLINK_GETLINK,
262*b1cdbd2cSJim Jagielski 		                 SID_HYPERLINK_SETLINK );
263*b1cdbd2cSJim Jagielski 
264*b1cdbd2cSJim Jagielski 	SvxHyperlinkTabPageBase* pCurrentPage = (SvxHyperlinkTabPageBase*)
265*b1cdbd2cSJim Jagielski 		                                    GetTabPage ( GetCurPageId() );
266*b1cdbd2cSJim Jagielski 
267*b1cdbd2cSJim Jagielski 	if ( pCurrentPage->AskApply() )
268*b1cdbd2cSJim Jagielski 	{
269*b1cdbd2cSJim Jagielski 		pCurrentPage->FillItemSet( aItemSet );
270*b1cdbd2cSJim Jagielski 
271*b1cdbd2cSJim Jagielski 		SvxHyperlinkItem *aItem = (SvxHyperlinkItem *)
272*b1cdbd2cSJim Jagielski 			                      aItemSet.GetItem (SID_HYPERLINK_SETLINK);
273*b1cdbd2cSJim Jagielski 
274*b1cdbd2cSJim Jagielski 		String aStrEmpty;
275*b1cdbd2cSJim Jagielski 		if ( aItem->GetURL() != aStrEmpty )
276*b1cdbd2cSJim Jagielski 			GetDispatcher()->Execute( SID_HYPERLINK_SETLINK, SFX_CALLMODE_ASYNCHRON |
277*b1cdbd2cSJim Jagielski 									  SFX_CALLMODE_RECORD, aItem, 0L);
278*b1cdbd2cSJim Jagielski 
279*b1cdbd2cSJim Jagielski 		( (SvxHyperlinkTabPageBase*)GetTabPage ( GetCurPageId() ) )->DoApply();
280*b1cdbd2cSJim Jagielski 	}
281*b1cdbd2cSJim Jagielski 
282*b1cdbd2cSJim Jagielski 	return( 0L );
283*b1cdbd2cSJim Jagielski }
284*b1cdbd2cSJim Jagielski 
285*b1cdbd2cSJim Jagielski /*************************************************************************
286*b1cdbd2cSJim Jagielski |*
287*b1cdbd2cSJim Jagielski |* Click on Close-button
288*b1cdbd2cSJim Jagielski |*
289*b1cdbd2cSJim Jagielski |************************************************************************/
290*b1cdbd2cSJim Jagielski 
IMPL_LINK(SvxHpLinkDlg,ClickCloseHdl_Impl,void *,EMPTYARG)291*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHpLinkDlg, ClickCloseHdl_Impl, void *, EMPTYARG )
292*b1cdbd2cSJim Jagielski {
293*b1cdbd2cSJim Jagielski 	Close();
294*b1cdbd2cSJim Jagielski 
295*b1cdbd2cSJim Jagielski 	return( 0L );
296*b1cdbd2cSJim Jagielski }
297*b1cdbd2cSJim Jagielski 
298*b1cdbd2cSJim Jagielski /*************************************************************************
299*b1cdbd2cSJim Jagielski |*
300*b1cdbd2cSJim Jagielski |* Set Page
301*b1cdbd2cSJim Jagielski |*
302*b1cdbd2cSJim Jagielski |************************************************************************/
303*b1cdbd2cSJim Jagielski 
SetPage(SvxHyperlinkItem * pItem)304*b1cdbd2cSJim Jagielski sal_uInt16 SvxHpLinkDlg::SetPage ( SvxHyperlinkItem* pItem )
305*b1cdbd2cSJim Jagielski {
306*b1cdbd2cSJim Jagielski 	sal_uInt16 nPageId = RID_SVXPAGE_HYPERLINK_INTERNET;
307*b1cdbd2cSJim Jagielski 
308*b1cdbd2cSJim Jagielski 	String aStrURL ( pItem->GetURL() );
309*b1cdbd2cSJim Jagielski 	INetURLObject aURL ( aStrURL );
310*b1cdbd2cSJim Jagielski 	INetProtocol eProtocolTyp = aURL.GetProtocol();
311*b1cdbd2cSJim Jagielski 
312*b1cdbd2cSJim Jagielski 	switch ( eProtocolTyp )
313*b1cdbd2cSJim Jagielski 	{
314*b1cdbd2cSJim Jagielski 		case INET_PROT_HTTP :
315*b1cdbd2cSJim Jagielski 		case INET_PROT_FTP :
316*b1cdbd2cSJim Jagielski         case INET_PROT_TELNET :
317*b1cdbd2cSJim Jagielski 			nPageId = RID_SVXPAGE_HYPERLINK_INTERNET;
318*b1cdbd2cSJim Jagielski 			break;
319*b1cdbd2cSJim Jagielski 		case INET_PROT_FILE :
320*b1cdbd2cSJim Jagielski 		case INET_PROT_POP3 :
321*b1cdbd2cSJim Jagielski 		case INET_PROT_IMAP :
322*b1cdbd2cSJim Jagielski 			nPageId = RID_SVXPAGE_HYPERLINK_DOCUMENT;
323*b1cdbd2cSJim Jagielski 			break;
324*b1cdbd2cSJim Jagielski 		case INET_PROT_MAILTO :
325*b1cdbd2cSJim Jagielski 		case INET_PROT_NEWS :
326*b1cdbd2cSJim Jagielski 			nPageId = RID_SVXPAGE_HYPERLINK_MAIL;
327*b1cdbd2cSJim Jagielski 			break;
328*b1cdbd2cSJim Jagielski 		default :
329*b1cdbd2cSJim Jagielski 			sal_Char const sNewsSrvScheme[] = "news://";
330*b1cdbd2cSJim Jagielski                 // TODO news:// is nonsense
331*b1cdbd2cSJim Jagielski 
332*b1cdbd2cSJim Jagielski             if ( aStrURL.SearchAscii( sNewsSrvScheme ) == 0 )
333*b1cdbd2cSJim Jagielski 				nPageId = RID_SVXPAGE_HYPERLINK_DOCUMENT;
334*b1cdbd2cSJim Jagielski 			else
335*b1cdbd2cSJim Jagielski 			{
336*b1cdbd2cSJim Jagielski 				sal_Char const sHash[] = "#";
337*b1cdbd2cSJim Jagielski 				if( aStrURL.SearchAscii( sHash ) == 0 )
338*b1cdbd2cSJim Jagielski 					nPageId = RID_SVXPAGE_HYPERLINK_DOCUMENT;
339*b1cdbd2cSJim Jagielski 				else
340*b1cdbd2cSJim Jagielski 				{
341*b1cdbd2cSJim Jagielski 					eProtocolTyp = INET_PROT_NOT_VALID;
342*b1cdbd2cSJim Jagielski 					nPageId = GetCurPageId();
343*b1cdbd2cSJim Jagielski 				}
344*b1cdbd2cSJim Jagielski 			}
345*b1cdbd2cSJim Jagielski 			break;
346*b1cdbd2cSJim Jagielski 	}
347*b1cdbd2cSJim Jagielski 
348*b1cdbd2cSJim Jagielski 	ShowPage (nPageId);
349*b1cdbd2cSJim Jagielski 
350*b1cdbd2cSJim Jagielski 	SvxHyperlinkTabPageBase* pCurrentPage = (SvxHyperlinkTabPageBase*)GetTabPage( nPageId );
351*b1cdbd2cSJim Jagielski 
352*b1cdbd2cSJim Jagielski     mbIsHTMLDoc = (pItem->GetInsertMode() & HLINK_HTMLMODE) ? true : false;
353*b1cdbd2cSJim Jagielski 
354*b1cdbd2cSJim Jagielski 	SfxItemSet& aPageSet =  (SfxItemSet&)GetTabPage (nPageId)->GetItemSet ();
355*b1cdbd2cSJim Jagielski 	aPageSet.Put ( *pItem );
356*b1cdbd2cSJim Jagielski 
357*b1cdbd2cSJim Jagielski 	pCurrentPage->Reset( aPageSet );
358*b1cdbd2cSJim Jagielski     if ( mbGrabFocus )
359*b1cdbd2cSJim Jagielski     {
360*b1cdbd2cSJim Jagielski     	pCurrentPage->SetInitFocus();   // #92535# grab the focus only once at initialization
361*b1cdbd2cSJim Jagielski         mbGrabFocus = sal_False;
362*b1cdbd2cSJim Jagielski     }
363*b1cdbd2cSJim Jagielski 	return nPageId;
364*b1cdbd2cSJim Jagielski }
365*b1cdbd2cSJim Jagielski 
366*b1cdbd2cSJim Jagielski /*************************************************************************
367*b1cdbd2cSJim Jagielski |*
368*b1cdbd2cSJim Jagielski |* Enable/Disable to browse targets in a html-doc
369*b1cdbd2cSJim Jagielski |*
370*b1cdbd2cSJim Jagielski |************************************************************************/
371*b1cdbd2cSJim Jagielski 
EnableInetBrowse(sal_Bool bEnable)372*b1cdbd2cSJim Jagielski void SvxHpLinkDlg::EnableInetBrowse( sal_Bool bEnable )
373*b1cdbd2cSJim Jagielski {
374*b1cdbd2cSJim Jagielski 	SvxHyperlinkTabPageBase* pCurrentPage = ( SvxHyperlinkTabPageBase* )
375*b1cdbd2cSJim Jagielski 		                                    GetTabPage ( GetCurPageId() );
376*b1cdbd2cSJim Jagielski 	pCurrentPage->SetOnlineMode( bEnable );
377*b1cdbd2cSJim Jagielski }
378*b1cdbd2cSJim Jagielski 
379*b1cdbd2cSJim Jagielski /*************************************************************************
380*b1cdbd2cSJim Jagielski |*
381*b1cdbd2cSJim Jagielski |* Enable/Disable ReadOnly mode
382*b1cdbd2cSJim Jagielski |*
383*b1cdbd2cSJim Jagielski |************************************************************************/
384*b1cdbd2cSJim Jagielski 
SetReadOnlyMode(sal_Bool bRdOnly)385*b1cdbd2cSJim Jagielski void SvxHpLinkDlg::SetReadOnlyMode( sal_Bool bRdOnly )
386*b1cdbd2cSJim Jagielski {
387*b1cdbd2cSJim Jagielski     mbReadOnly = bRdOnly;
388*b1cdbd2cSJim Jagielski     if ( bRdOnly )
389*b1cdbd2cSJim Jagielski         GetOKButton().Disable();
390*b1cdbd2cSJim Jagielski     else
391*b1cdbd2cSJim Jagielski         GetOKButton().Enable();
392*b1cdbd2cSJim Jagielski }
393*b1cdbd2cSJim Jagielski 
394*b1cdbd2cSJim Jagielski /*************************************************************************
395*b1cdbd2cSJim Jagielski |*
396*b1cdbd2cSJim Jagielski |* late-initialization of newly created pages
397*b1cdbd2cSJim Jagielski |*
398*b1cdbd2cSJim Jagielski |************************************************************************/
399*b1cdbd2cSJim Jagielski 
PageCreated(sal_uInt16,IconChoicePage & rPage)400*b1cdbd2cSJim Jagielski void SvxHpLinkDlg::PageCreated( sal_uInt16 /*nId*/, IconChoicePage& rPage )
401*b1cdbd2cSJim Jagielski {
402*b1cdbd2cSJim Jagielski     SvxHyperlinkTabPageBase& rHyperlinkPage = dynamic_cast< SvxHyperlinkTabPageBase& >( rPage );
403*b1cdbd2cSJim Jagielski     Reference< XFrame > xDocumentFrame;
404*b1cdbd2cSJim Jagielski     if ( mpBindings )
405*b1cdbd2cSJim Jagielski         xDocumentFrame = mpBindings->GetActiveFrame();
406*b1cdbd2cSJim Jagielski     OSL_ENSURE( xDocumentFrame.is(), "SvxHpLinkDlg::PageCreated: macro assignment functionality won't work with a proper frame!" );
407*b1cdbd2cSJim Jagielski     rHyperlinkPage.SetDocumentFrame( xDocumentFrame );
408*b1cdbd2cSJim Jagielski }
409