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 <unotools/pathoptions.hxx>
28*b1cdbd2cSJim Jagielski #include <unotools/useroptions.hxx>
29*b1cdbd2cSJim Jagielski #include <svl/adrparse.hxx>
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski #include "hlinettp.hxx"
32*b1cdbd2cSJim Jagielski #include "hyperdlg.hrc"
33*b1cdbd2cSJim Jagielski #include "hlmarkwn_def.hxx" //ADD CHINA001
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski #define STD_DOC_SUBPATH "internal"
36*b1cdbd2cSJim Jagielski #define STD_DOC_NAME "url_transfer.htm"
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski sal_Char __READONLY_DATA sAnonymous[] = "anonymous";
39*b1cdbd2cSJim Jagielski sal_Char __READONLY_DATA sHTTPScheme[] = INET_HTTP_SCHEME;
40*b1cdbd2cSJim Jagielski sal_Char __READONLY_DATA sHTTPSScheme[] = INET_HTTPS_SCHEME;
41*b1cdbd2cSJim Jagielski sal_Char __READONLY_DATA sFTPScheme[] = INET_FTP_SCHEME;
42*b1cdbd2cSJim Jagielski sal_Char __READONLY_DATA sTelnetScheme[] = INET_TELNET_SCHEME;
43*b1cdbd2cSJim Jagielski
44*b1cdbd2cSJim Jagielski /*************************************************************************
45*b1cdbd2cSJim Jagielski |*
46*b1cdbd2cSJim Jagielski |* Contructor / Destructor
47*b1cdbd2cSJim Jagielski |*
48*b1cdbd2cSJim Jagielski |************************************************************************/
49*b1cdbd2cSJim Jagielski
SvxHyperlinkInternetTp(Window * pParent,const SfxItemSet & rItemSet)50*b1cdbd2cSJim Jagielski SvxHyperlinkInternetTp::SvxHyperlinkInternetTp ( Window *pParent,
51*b1cdbd2cSJim Jagielski const SfxItemSet& rItemSet)
52*b1cdbd2cSJim Jagielski : SvxHyperlinkTabPageBase ( pParent, CUI_RES( RID_SVXPAGE_HYPERLINK_INTERNET ),
53*b1cdbd2cSJim Jagielski rItemSet ) ,
54*b1cdbd2cSJim Jagielski maGrpLinkTyp ( this, CUI_RES (GRP_LINKTYPE) ),
55*b1cdbd2cSJim Jagielski maRbtLinktypInternet ( this, CUI_RES (RB_LINKTYP_INTERNET) ),
56*b1cdbd2cSJim Jagielski maRbtLinktypFTP ( this, CUI_RES (RB_LINKTYP_FTP) ),
57*b1cdbd2cSJim Jagielski maRbtLinktypTelnet ( this, CUI_RES (RB_LINKTYP_TELNET) ),
58*b1cdbd2cSJim Jagielski maFtTarget ( this, CUI_RES (FT_TARGET_HTML) ),
59*b1cdbd2cSJim Jagielski maCbbTarget ( this, INET_PROT_HTTP ),
60*b1cdbd2cSJim Jagielski maBtBrowse ( this, CUI_RES (BTN_BROWSE) ),
61*b1cdbd2cSJim Jagielski maFtLogin ( this, CUI_RES (FT_LOGIN) ),
62*b1cdbd2cSJim Jagielski maEdLogin ( this, CUI_RES (ED_LOGIN) ),
63*b1cdbd2cSJim Jagielski maBtTarget ( this, CUI_RES (BTN_TARGET) ),
64*b1cdbd2cSJim Jagielski maFtPassword ( this, CUI_RES (FT_PASSWD) ),
65*b1cdbd2cSJim Jagielski maEdPassword ( this, CUI_RES (ED_PASSWD) ),
66*b1cdbd2cSJim Jagielski maCbAnonymous ( this, CUI_RES (CBX_ANONYMOUS) ),
67*b1cdbd2cSJim Jagielski mbMarkWndOpen ( sal_False )
68*b1cdbd2cSJim Jagielski {
69*b1cdbd2cSJim Jagielski // Set HC bitmaps and display display of bitmap names.
70*b1cdbd2cSJim Jagielski maBtBrowse.SetModeImage( Image( CUI_RES( IMG_BROWSE_HC ) ), BMP_COLOR_HIGHCONTRAST );
71*b1cdbd2cSJim Jagielski maBtBrowse.EnableTextDisplay (sal_False);
72*b1cdbd2cSJim Jagielski maBtTarget.SetModeImage( Image( CUI_RES( IMG_TARGET_HC ) ), BMP_COLOR_HIGHCONTRAST );
73*b1cdbd2cSJim Jagielski maBtTarget.EnableTextDisplay (sal_False);
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski InitStdControls();
76*b1cdbd2cSJim Jagielski FreeResource();
77*b1cdbd2cSJim Jagielski
78*b1cdbd2cSJim Jagielski // Init URL-Box (pos&size, Open-Handler)
79*b1cdbd2cSJim Jagielski maCbbTarget.SetPosSizePixel ( LogicToPixel( Point( COL_2, 25 ), MAP_APPFONT ),
80*b1cdbd2cSJim Jagielski LogicToPixel( Size ( 176 - COL_DIFF, 60), MAP_APPFONT ) );
81*b1cdbd2cSJim Jagielski maCbbTarget.Show();
82*b1cdbd2cSJim Jagielski maCbbTarget.SetHelpId( HID_HYPERDLG_INET_PATH );
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski // Find Path to Std-Doc
85*b1cdbd2cSJim Jagielski String aStrBasePaths( SvtPathOptions().GetTemplatePath() );
86*b1cdbd2cSJim Jagielski for( xub_StrLen n = 0; n < aStrBasePaths.GetTokenCount(); n++ )
87*b1cdbd2cSJim Jagielski {
88*b1cdbd2cSJim Jagielski INetURLObject aURL( aStrBasePaths.GetToken( n ) );
89*b1cdbd2cSJim Jagielski aURL.Append( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( STD_DOC_SUBPATH ) ) );
90*b1cdbd2cSJim Jagielski aURL.Append( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( STD_DOC_NAME ) ) );
91*b1cdbd2cSJim Jagielski if ( FileExists( aURL ) )
92*b1cdbd2cSJim Jagielski {
93*b1cdbd2cSJim Jagielski maStrStdDocURL = aURL.GetMainURL( INetURLObject::NO_DECODE );
94*b1cdbd2cSJim Jagielski break;
95*b1cdbd2cSJim Jagielski }
96*b1cdbd2cSJim Jagielski }
97*b1cdbd2cSJim Jagielski SetExchangeSupport ();
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski ///////////////////////////////////////
100*b1cdbd2cSJim Jagielski // set defaults
101*b1cdbd2cSJim Jagielski maRbtLinktypInternet.Check ();
102*b1cdbd2cSJim Jagielski maFtLogin.Show( sal_False );
103*b1cdbd2cSJim Jagielski maFtPassword.Show( sal_False );
104*b1cdbd2cSJim Jagielski maEdLogin.Show( sal_False );
105*b1cdbd2cSJim Jagielski maEdPassword.Show( sal_False );
106*b1cdbd2cSJim Jagielski maCbAnonymous.Show( sal_False );
107*b1cdbd2cSJim Jagielski maBtTarget.Enable( sal_False );
108*b1cdbd2cSJim Jagielski maBtBrowse.Enable( maStrStdDocURL != aEmptyStr );
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski ///////////////////////////////////////
111*b1cdbd2cSJim Jagielski // overload handlers
112*b1cdbd2cSJim Jagielski Link aLink( LINK ( this, SvxHyperlinkInternetTp, Click_SmartProtocol_Impl ) );
113*b1cdbd2cSJim Jagielski maRbtLinktypInternet.SetClickHdl( aLink );
114*b1cdbd2cSJim Jagielski maRbtLinktypFTP.SetClickHdl ( aLink );
115*b1cdbd2cSJim Jagielski maRbtLinktypTelnet.SetClickHdl ( aLink );
116*b1cdbd2cSJim Jagielski maCbAnonymous.SetClickHdl ( LINK ( this, SvxHyperlinkInternetTp, ClickAnonymousHdl_Impl ) );
117*b1cdbd2cSJim Jagielski maBtBrowse.SetClickHdl ( LINK ( this, SvxHyperlinkInternetTp, ClickBrowseHdl_Impl ) );
118*b1cdbd2cSJim Jagielski maBtTarget.SetClickHdl ( LINK ( this, SvxHyperlinkInternetTp, ClickTargetHdl_Impl ) );
119*b1cdbd2cSJim Jagielski maEdLogin.SetModifyHdl ( LINK ( this, SvxHyperlinkInternetTp, ModifiedLoginHdl_Impl ) );
120*b1cdbd2cSJim Jagielski maCbbTarget.SetLoseFocusHdl ( LINK ( this, SvxHyperlinkInternetTp, LostFocusTargetHdl_Impl ) );
121*b1cdbd2cSJim Jagielski maCbbTarget.SetModifyHdl ( LINK ( this, SvxHyperlinkInternetTp, ModifiedTargetHdl_Impl ) );
122*b1cdbd2cSJim Jagielski maTimer.SetTimeoutHdl ( LINK ( this, SvxHyperlinkInternetTp, TimeoutHdl_Impl ) );
123*b1cdbd2cSJim Jagielski
124*b1cdbd2cSJim Jagielski maFtTarget.SetAccessibleRelationMemberOf( &maGrpLinkTyp );
125*b1cdbd2cSJim Jagielski maCbbTarget.SetAccessibleRelationMemberOf( &maGrpLinkTyp );
126*b1cdbd2cSJim Jagielski maBtTarget.SetAccessibleRelationMemberOf( &maGrpLinkTyp );
127*b1cdbd2cSJim Jagielski maBtTarget.SetAccessibleRelationLabeledBy( &maFtTarget );
128*b1cdbd2cSJim Jagielski maBtBrowse.SetAccessibleRelationMemberOf( &maGrpLinkTyp );
129*b1cdbd2cSJim Jagielski maBtBrowse.SetAccessibleRelationLabeledBy( &maFtTarget );
130*b1cdbd2cSJim Jagielski }
131*b1cdbd2cSJim Jagielski
~SvxHyperlinkInternetTp()132*b1cdbd2cSJim Jagielski SvxHyperlinkInternetTp::~SvxHyperlinkInternetTp ()
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski }
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski /*************************************************************************
137*b1cdbd2cSJim Jagielski |*
138*b1cdbd2cSJim Jagielski |* Fill the all dialog-controls except controls in groupbox "more..."
139*b1cdbd2cSJim Jagielski |*
140*b1cdbd2cSJim Jagielski |************************************************************************/
141*b1cdbd2cSJim Jagielski
FillDlgFields(String & aStrURL)142*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::FillDlgFields ( String& aStrURL )
143*b1cdbd2cSJim Jagielski {
144*b1cdbd2cSJim Jagielski INetURLObject aURL( aStrURL );
145*b1cdbd2cSJim Jagielski String aStrScheme = GetSchemeFromURL( aStrURL );
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski // set additional controls for FTP: Username / Password
148*b1cdbd2cSJim Jagielski if ( aStrScheme.SearchAscii( sFTPScheme ) == 0 )
149*b1cdbd2cSJim Jagielski {
150*b1cdbd2cSJim Jagielski if ( String(aURL.GetUser()).ToLowerAscii().SearchAscii ( sAnonymous ) == 0 )
151*b1cdbd2cSJim Jagielski setAnonymousFTPUser();
152*b1cdbd2cSJim Jagielski else
153*b1cdbd2cSJim Jagielski setFTPUser(aURL.GetUser(), aURL.GetPass());
154*b1cdbd2cSJim Jagielski
155*b1cdbd2cSJim Jagielski //do not show password and user in url
156*b1cdbd2cSJim Jagielski if(aURL.GetUser().getLength()!=0 || aURL.GetPass().getLength()!=0 )
157*b1cdbd2cSJim Jagielski aURL.SetUserAndPass(aEmptyStr,aEmptyStr);
158*b1cdbd2cSJim Jagielski }
159*b1cdbd2cSJim Jagielski
160*b1cdbd2cSJim Jagielski // set URL-field
161*b1cdbd2cSJim Jagielski // Show the scheme, #72740
162*b1cdbd2cSJim Jagielski if ( aURL.GetProtocol() != INET_PROT_NOT_VALID )
163*b1cdbd2cSJim Jagielski maCbbTarget.SetText( aURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS ) );
164*b1cdbd2cSJim Jagielski else
165*b1cdbd2cSJim Jagielski maCbbTarget.SetText( aStrURL ); // #77696#
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim Jagielski SetScheme( aStrScheme );
168*b1cdbd2cSJim Jagielski }
169*b1cdbd2cSJim Jagielski
setAnonymousFTPUser()170*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::setAnonymousFTPUser()
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski maEdLogin.SetText( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM ( sAnonymous ) ) );
173*b1cdbd2cSJim Jagielski SvAddressParser aAddress( SvtUserOptions().GetEmail() );
174*b1cdbd2cSJim Jagielski maEdPassword.SetText( aAddress.Count() ? aAddress.GetEmailAddress(0) : String() );
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski maFtLogin.Disable ();
177*b1cdbd2cSJim Jagielski maFtPassword.Disable ();
178*b1cdbd2cSJim Jagielski maEdLogin.Disable ();
179*b1cdbd2cSJim Jagielski maEdPassword.Disable ();
180*b1cdbd2cSJim Jagielski maCbAnonymous.Check();
181*b1cdbd2cSJim Jagielski }
182*b1cdbd2cSJim Jagielski
setFTPUser(const String & rUser,const String & rPassword)183*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::setFTPUser(const String& rUser, const String& rPassword)
184*b1cdbd2cSJim Jagielski {
185*b1cdbd2cSJim Jagielski maEdLogin.SetText ( rUser );
186*b1cdbd2cSJim Jagielski maEdPassword.SetText ( rPassword );
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski maFtLogin.Enable ();
189*b1cdbd2cSJim Jagielski maFtPassword.Enable ();
190*b1cdbd2cSJim Jagielski maEdLogin.Enable ();
191*b1cdbd2cSJim Jagielski maEdPassword.Enable ();
192*b1cdbd2cSJim Jagielski maCbAnonymous.Check(sal_False);
193*b1cdbd2cSJim Jagielski }
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski /*************************************************************************
196*b1cdbd2cSJim Jagielski |*
197*b1cdbd2cSJim Jagielski |* retrieve and prepare data from dialog-fields
198*b1cdbd2cSJim Jagielski |*
199*b1cdbd2cSJim Jagielski |************************************************************************/
200*b1cdbd2cSJim Jagielski
GetCurentItemData(String & aStrURL,String & aStrName,String & aStrIntName,String & aStrFrame,SvxLinkInsertMode & eMode)201*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::GetCurentItemData ( String& aStrURL, String& aStrName,
202*b1cdbd2cSJim Jagielski String& aStrIntName, String& aStrFrame,
203*b1cdbd2cSJim Jagielski SvxLinkInsertMode& eMode )
204*b1cdbd2cSJim Jagielski {
205*b1cdbd2cSJim Jagielski aStrURL = CreateAbsoluteURL();
206*b1cdbd2cSJim Jagielski GetDataFromCommonFields( aStrName, aStrIntName, aStrFrame, eMode );
207*b1cdbd2cSJim Jagielski }
208*b1cdbd2cSJim Jagielski
CreateAbsoluteURL() const209*b1cdbd2cSJim Jagielski String SvxHyperlinkInternetTp::CreateAbsoluteURL() const
210*b1cdbd2cSJim Jagielski {
211*b1cdbd2cSJim Jagielski String aStrURL = maCbbTarget.GetText();
212*b1cdbd2cSJim Jagielski String aScheme = GetSchemeFromURL(aStrURL);
213*b1cdbd2cSJim Jagielski
214*b1cdbd2cSJim Jagielski INetURLObject aURL(aStrURL);
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski if( aURL.GetProtocol() == INET_PROT_NOT_VALID )
217*b1cdbd2cSJim Jagielski {
218*b1cdbd2cSJim Jagielski aURL.SetSmartProtocol( GetSmartProtocolFromButtons() );
219*b1cdbd2cSJim Jagielski aURL.SetSmartURL(aStrURL);
220*b1cdbd2cSJim Jagielski }
221*b1cdbd2cSJim Jagielski
222*b1cdbd2cSJim Jagielski // username and password for ftp-url
223*b1cdbd2cSJim Jagielski if( aURL.GetProtocol() == INET_PROT_FTP && maEdLogin.GetText().Len()!=0 )
224*b1cdbd2cSJim Jagielski aURL.SetUserAndPass ( maEdLogin.GetText(), maEdPassword.GetText() );
225*b1cdbd2cSJim Jagielski
226*b1cdbd2cSJim Jagielski if ( aURL.GetProtocol() != INET_PROT_NOT_VALID )
227*b1cdbd2cSJim Jagielski return aURL.GetMainURL( INetURLObject::DECODE_WITH_CHARSET );
228*b1cdbd2cSJim Jagielski else //#105788# always create a URL even if it is not valid
229*b1cdbd2cSJim Jagielski return aStrURL;
230*b1cdbd2cSJim Jagielski }
231*b1cdbd2cSJim Jagielski
232*b1cdbd2cSJim Jagielski /*************************************************************************
233*b1cdbd2cSJim Jagielski |*
234*b1cdbd2cSJim Jagielski |* static method to create Tabpage
235*b1cdbd2cSJim Jagielski |*
236*b1cdbd2cSJim Jagielski |************************************************************************/
237*b1cdbd2cSJim Jagielski
Create(Window * pWindow,const SfxItemSet & rItemSet)238*b1cdbd2cSJim Jagielski IconChoicePage* SvxHyperlinkInternetTp::Create( Window* pWindow, const SfxItemSet& rItemSet )
239*b1cdbd2cSJim Jagielski {
240*b1cdbd2cSJim Jagielski return( new SvxHyperlinkInternetTp( pWindow, rItemSet ) );
241*b1cdbd2cSJim Jagielski }
242*b1cdbd2cSJim Jagielski
243*b1cdbd2cSJim Jagielski /*************************************************************************
244*b1cdbd2cSJim Jagielski |*
245*b1cdbd2cSJim Jagielski |* Set initial focus
246*b1cdbd2cSJim Jagielski |*
247*b1cdbd2cSJim Jagielski |************************************************************************/
248*b1cdbd2cSJim Jagielski
SetInitFocus()249*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::SetInitFocus()
250*b1cdbd2cSJim Jagielski {
251*b1cdbd2cSJim Jagielski maCbbTarget.GrabFocus();
252*b1cdbd2cSJim Jagielski }
253*b1cdbd2cSJim Jagielski
254*b1cdbd2cSJim Jagielski /*************************************************************************
255*b1cdbd2cSJim Jagielski |*
256*b1cdbd2cSJim Jagielski |* Contens of editfield "Taregt" modified
257*b1cdbd2cSJim Jagielski |*
258*b1cdbd2cSJim Jagielski |************************************************************************/
259*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxHyperlinkInternetTp,ModifiedTargetHdl_Impl,void *,EMPTYARG)260*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHyperlinkInternetTp, ModifiedTargetHdl_Impl, void *, EMPTYARG )
261*b1cdbd2cSJim Jagielski {
262*b1cdbd2cSJim Jagielski String aScheme = GetSchemeFromURL( maCbbTarget.GetText() );
263*b1cdbd2cSJim Jagielski if(aScheme.Len()!=0)
264*b1cdbd2cSJim Jagielski SetScheme( aScheme );
265*b1cdbd2cSJim Jagielski
266*b1cdbd2cSJim Jagielski // start timer
267*b1cdbd2cSJim Jagielski maTimer.SetTimeout( 2500 );
268*b1cdbd2cSJim Jagielski maTimer.Start();
269*b1cdbd2cSJim Jagielski
270*b1cdbd2cSJim Jagielski return( 0L );
271*b1cdbd2cSJim Jagielski }
272*b1cdbd2cSJim Jagielski
273*b1cdbd2cSJim Jagielski /*************************************************************************
274*b1cdbd2cSJim Jagielski |*
275*b1cdbd2cSJim Jagielski |* If target-field was modify, to browse the new doc afeter timeout
276*b1cdbd2cSJim Jagielski |*
277*b1cdbd2cSJim Jagielski |************************************************************************/
278*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxHyperlinkInternetTp,TimeoutHdl_Impl,Timer *,EMPTYARG)279*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHyperlinkInternetTp, TimeoutHdl_Impl, Timer *, EMPTYARG )
280*b1cdbd2cSJim Jagielski {
281*b1cdbd2cSJim Jagielski RefreshMarkWindow();
282*b1cdbd2cSJim Jagielski return( 0L );
283*b1cdbd2cSJim Jagielski }
284*b1cdbd2cSJim Jagielski
285*b1cdbd2cSJim Jagielski /*************************************************************************
286*b1cdbd2cSJim Jagielski |*
287*b1cdbd2cSJim Jagielski |* Contens of editfield "Login" modified
288*b1cdbd2cSJim Jagielski |*
289*b1cdbd2cSJim Jagielski |************************************************************************/
290*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxHyperlinkInternetTp,ModifiedLoginHdl_Impl,void *,EMPTYARG)291*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHyperlinkInternetTp, ModifiedLoginHdl_Impl, void *, EMPTYARG )
292*b1cdbd2cSJim Jagielski {
293*b1cdbd2cSJim Jagielski String aStrLogin ( maEdLogin.GetText() );
294*b1cdbd2cSJim Jagielski if ( aStrLogin.EqualsIgnoreCaseAscii( sAnonymous ) )
295*b1cdbd2cSJim Jagielski {
296*b1cdbd2cSJim Jagielski maCbAnonymous.Check();
297*b1cdbd2cSJim Jagielski ClickAnonymousHdl_Impl(NULL);
298*b1cdbd2cSJim Jagielski }
299*b1cdbd2cSJim Jagielski
300*b1cdbd2cSJim Jagielski return( 0L );
301*b1cdbd2cSJim Jagielski }
302*b1cdbd2cSJim Jagielski
303*b1cdbd2cSJim Jagielski /*************************************************************************
304*b1cdbd2cSJim Jagielski |************************************************************************/
305*b1cdbd2cSJim Jagielski
SetScheme(const String & aScheme)306*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::SetScheme( const String& aScheme )
307*b1cdbd2cSJim Jagielski {
308*b1cdbd2cSJim Jagielski //if aScheme is empty or unknown the default beaviour is like it where HTTP
309*b1cdbd2cSJim Jagielski
310*b1cdbd2cSJim Jagielski sal_Bool bFTP = aScheme.SearchAscii( sFTPScheme ) == 0;
311*b1cdbd2cSJim Jagielski sal_Bool bTelnet = sal_False;
312*b1cdbd2cSJim Jagielski if( !bFTP )
313*b1cdbd2cSJim Jagielski bTelnet = aScheme.SearchAscii( sTelnetScheme ) == 0;
314*b1cdbd2cSJim Jagielski sal_Bool bInternet = !(bFTP || bTelnet);
315*b1cdbd2cSJim Jagielski
316*b1cdbd2cSJim Jagielski //update protocol button selection:
317*b1cdbd2cSJim Jagielski maRbtLinktypFTP.Check(bFTP);
318*b1cdbd2cSJim Jagielski maRbtLinktypTelnet.Check(bTelnet);
319*b1cdbd2cSJim Jagielski maRbtLinktypInternet.Check(bInternet);
320*b1cdbd2cSJim Jagielski
321*b1cdbd2cSJim Jagielski //update target:
322*b1cdbd2cSJim Jagielski RemoveImproperProtocol(aScheme);
323*b1cdbd2cSJim Jagielski maCbbTarget.SetSmartProtocol( GetSmartProtocolFromButtons() );
324*b1cdbd2cSJim Jagielski
325*b1cdbd2cSJim Jagielski //show/hide special fields for FTP:
326*b1cdbd2cSJim Jagielski maFtLogin.Show( bFTP );
327*b1cdbd2cSJim Jagielski maFtPassword.Show( bFTP );
328*b1cdbd2cSJim Jagielski maEdLogin.Show( bFTP );
329*b1cdbd2cSJim Jagielski maEdPassword.Show( bFTP );
330*b1cdbd2cSJim Jagielski maCbAnonymous.Show( bFTP );
331*b1cdbd2cSJim Jagielski
332*b1cdbd2cSJim Jagielski //update 'link target in document'-window and opening-button
333*b1cdbd2cSJim Jagielski if( aScheme.SearchAscii( sHTTPScheme ) == 0 || aScheme.Len() == 0 )
334*b1cdbd2cSJim Jagielski {
335*b1cdbd2cSJim Jagielski maBtTarget.Enable();
336*b1cdbd2cSJim Jagielski if ( mbMarkWndOpen )
337*b1cdbd2cSJim Jagielski ShowMarkWnd ();
338*b1cdbd2cSJim Jagielski }
339*b1cdbd2cSJim Jagielski else
340*b1cdbd2cSJim Jagielski {
341*b1cdbd2cSJim Jagielski //disable for https, ftp and telnet
342*b1cdbd2cSJim Jagielski maBtTarget.Disable();
343*b1cdbd2cSJim Jagielski if ( mbMarkWndOpen )
344*b1cdbd2cSJim Jagielski HideMarkWnd ();
345*b1cdbd2cSJim Jagielski }
346*b1cdbd2cSJim Jagielski }
347*b1cdbd2cSJim Jagielski
348*b1cdbd2cSJim Jagielski /*************************************************************************
349*b1cdbd2cSJim Jagielski |*
350*b1cdbd2cSJim Jagielski |* Remove protocol if it does not fit to the current button selection
351*b1cdbd2cSJim Jagielski |*
352*b1cdbd2cSJim Jagielski |************************************************************************/
353*b1cdbd2cSJim Jagielski
RemoveImproperProtocol(const String & aProperScheme)354*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::RemoveImproperProtocol(const String& aProperScheme)
355*b1cdbd2cSJim Jagielski {
356*b1cdbd2cSJim Jagielski String aStrURL ( maCbbTarget.GetText() );
357*b1cdbd2cSJim Jagielski if ( aStrURL != aEmptyStr )
358*b1cdbd2cSJim Jagielski {
359*b1cdbd2cSJim Jagielski String aStrScheme = GetSchemeFromURL( aStrURL );
360*b1cdbd2cSJim Jagielski if ( aStrScheme != aEmptyStr && aStrScheme != aProperScheme )
361*b1cdbd2cSJim Jagielski {
362*b1cdbd2cSJim Jagielski aStrURL.Erase ( 0, aStrScheme.Len() );
363*b1cdbd2cSJim Jagielski maCbbTarget.SetText ( aStrURL );
364*b1cdbd2cSJim Jagielski }
365*b1cdbd2cSJim Jagielski }
366*b1cdbd2cSJim Jagielski }
367*b1cdbd2cSJim Jagielski
GetSchemeFromButtons() const368*b1cdbd2cSJim Jagielski String SvxHyperlinkInternetTp::GetSchemeFromButtons() const
369*b1cdbd2cSJim Jagielski {
370*b1cdbd2cSJim Jagielski if( maRbtLinktypFTP.IsChecked() )
371*b1cdbd2cSJim Jagielski {
372*b1cdbd2cSJim Jagielski return String::CreateFromAscii( INET_FTP_SCHEME );
373*b1cdbd2cSJim Jagielski }
374*b1cdbd2cSJim Jagielski else if( maRbtLinktypTelnet.IsChecked() )
375*b1cdbd2cSJim Jagielski {
376*b1cdbd2cSJim Jagielski return String::CreateFromAscii( INET_TELNET_SCHEME );
377*b1cdbd2cSJim Jagielski }
378*b1cdbd2cSJim Jagielski return String::CreateFromAscii( INET_HTTP_SCHEME );
379*b1cdbd2cSJim Jagielski }
380*b1cdbd2cSJim Jagielski
GetSmartProtocolFromButtons() const381*b1cdbd2cSJim Jagielski INetProtocol SvxHyperlinkInternetTp::GetSmartProtocolFromButtons() const
382*b1cdbd2cSJim Jagielski {
383*b1cdbd2cSJim Jagielski if( maRbtLinktypFTP.IsChecked() )
384*b1cdbd2cSJim Jagielski {
385*b1cdbd2cSJim Jagielski return INET_PROT_FTP;
386*b1cdbd2cSJim Jagielski }
387*b1cdbd2cSJim Jagielski else if( maRbtLinktypTelnet.IsChecked() )
388*b1cdbd2cSJim Jagielski {
389*b1cdbd2cSJim Jagielski return INET_PROT_TELNET;
390*b1cdbd2cSJim Jagielski }
391*b1cdbd2cSJim Jagielski return INET_PROT_HTTP;
392*b1cdbd2cSJim Jagielski }
393*b1cdbd2cSJim Jagielski
394*b1cdbd2cSJim Jagielski /*************************************************************************
395*b1cdbd2cSJim Jagielski |*
396*b1cdbd2cSJim Jagielski |* Click on Radiobutton : Internet, FTP or Telnet
397*b1cdbd2cSJim Jagielski |*
398*b1cdbd2cSJim Jagielski |************************************************************************/
399*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxHyperlinkInternetTp,Click_SmartProtocol_Impl,void *,EMPTYARG)400*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHyperlinkInternetTp, Click_SmartProtocol_Impl, void*, EMPTYARG )
401*b1cdbd2cSJim Jagielski {
402*b1cdbd2cSJim Jagielski String aScheme = GetSchemeFromButtons();
403*b1cdbd2cSJim Jagielski SetScheme( aScheme );
404*b1cdbd2cSJim Jagielski return( 0L );
405*b1cdbd2cSJim Jagielski }
406*b1cdbd2cSJim Jagielski
407*b1cdbd2cSJim Jagielski /*************************************************************************
408*b1cdbd2cSJim Jagielski |*
409*b1cdbd2cSJim Jagielski |* Click on Checkbox : Anonymous user
410*b1cdbd2cSJim Jagielski |*
411*b1cdbd2cSJim Jagielski |************************************************************************/
412*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxHyperlinkInternetTp,ClickAnonymousHdl_Impl,void *,EMPTYARG)413*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHyperlinkInternetTp, ClickAnonymousHdl_Impl, void *, EMPTYARG )
414*b1cdbd2cSJim Jagielski {
415*b1cdbd2cSJim Jagielski // disable login-editfields if checked
416*b1cdbd2cSJim Jagielski if ( maCbAnonymous.IsChecked() )
417*b1cdbd2cSJim Jagielski {
418*b1cdbd2cSJim Jagielski if ( maEdLogin.GetText().ToLowerAscii().SearchAscii ( sAnonymous ) == 0 )
419*b1cdbd2cSJim Jagielski {
420*b1cdbd2cSJim Jagielski maStrOldUser = aEmptyStr;
421*b1cdbd2cSJim Jagielski maStrOldPassword = aEmptyStr;
422*b1cdbd2cSJim Jagielski }
423*b1cdbd2cSJim Jagielski else
424*b1cdbd2cSJim Jagielski {
425*b1cdbd2cSJim Jagielski maStrOldUser = maEdLogin.GetText();
426*b1cdbd2cSJim Jagielski maStrOldPassword = maEdPassword.GetText();
427*b1cdbd2cSJim Jagielski }
428*b1cdbd2cSJim Jagielski
429*b1cdbd2cSJim Jagielski setAnonymousFTPUser();
430*b1cdbd2cSJim Jagielski }
431*b1cdbd2cSJim Jagielski else
432*b1cdbd2cSJim Jagielski setFTPUser(maStrOldUser, maStrOldPassword);
433*b1cdbd2cSJim Jagielski
434*b1cdbd2cSJim Jagielski return( 0L );
435*b1cdbd2cSJim Jagielski }
436*b1cdbd2cSJim Jagielski
437*b1cdbd2cSJim Jagielski /*************************************************************************
438*b1cdbd2cSJim Jagielski |*
439*b1cdbd2cSJim Jagielski |* Combobox Target lost the focus
440*b1cdbd2cSJim Jagielski |*
441*b1cdbd2cSJim Jagielski |************************************************************************/
442*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxHyperlinkInternetTp,LostFocusTargetHdl_Impl,void *,EMPTYARG)443*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHyperlinkInternetTp, LostFocusTargetHdl_Impl, void *, EMPTYARG )
444*b1cdbd2cSJim Jagielski {
445*b1cdbd2cSJim Jagielski RefreshMarkWindow();
446*b1cdbd2cSJim Jagielski return (0L);
447*b1cdbd2cSJim Jagielski }
448*b1cdbd2cSJim Jagielski
449*b1cdbd2cSJim Jagielski /*************************************************************************
450*b1cdbd2cSJim Jagielski |*
451*b1cdbd2cSJim Jagielski |* Click on imagebutton : Browse
452*b1cdbd2cSJim Jagielski |*
453*b1cdbd2cSJim Jagielski |************************************************************************/
454*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxHyperlinkInternetTp,ClickBrowseHdl_Impl,void *,EMPTYARG)455*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHyperlinkInternetTp, ClickBrowseHdl_Impl, void *, EMPTYARG )
456*b1cdbd2cSJim Jagielski {
457*b1cdbd2cSJim Jagielski /////////////////////////////////////////////////
458*b1cdbd2cSJim Jagielski // Open URL if available
459*b1cdbd2cSJim Jagielski
460*b1cdbd2cSJim Jagielski SfxStringItem aName( SID_FILE_NAME, maStrStdDocURL );
461*b1cdbd2cSJim Jagielski SfxStringItem aRefererItem( SID_REFERER, UniString::CreateFromAscii(
462*b1cdbd2cSJim Jagielski RTL_CONSTASCII_STRINGPARAM( "private:user" ) ) );
463*b1cdbd2cSJim Jagielski SfxBoolItem aNewView( SID_OPEN_NEW_VIEW, sal_True );
464*b1cdbd2cSJim Jagielski SfxBoolItem aSilent( SID_SILENT, sal_True );
465*b1cdbd2cSJim Jagielski SfxBoolItem aReadOnly( SID_DOC_READONLY, sal_True );
466*b1cdbd2cSJim Jagielski
467*b1cdbd2cSJim Jagielski SfxBoolItem aBrowse( SID_BROWSE, sal_True );
468*b1cdbd2cSJim Jagielski
469*b1cdbd2cSJim Jagielski const SfxPoolItem *ppItems[] = { &aName, &aNewView, &aSilent, &aReadOnly, &aRefererItem, &aBrowse, NULL };
470*b1cdbd2cSJim Jagielski (((SvxHpLinkDlg*)mpDialog)->GetBindings())->Execute( SID_OPENDOC, ppItems, 0, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD );
471*b1cdbd2cSJim Jagielski
472*b1cdbd2cSJim Jagielski return( 0L );
473*b1cdbd2cSJim Jagielski }
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski /*************************************************************************
476*b1cdbd2cSJim Jagielski |*
477*b1cdbd2cSJim Jagielski |* Click on imagebutton : Target
478*b1cdbd2cSJim Jagielski |*
479*b1cdbd2cSJim Jagielski |************************************************************************/
480*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxHyperlinkInternetTp,ClickTargetHdl_Impl,void *,EMPTYARG)481*b1cdbd2cSJim Jagielski IMPL_LINK ( SvxHyperlinkInternetTp, ClickTargetHdl_Impl, void *, EMPTYARG )
482*b1cdbd2cSJim Jagielski {
483*b1cdbd2cSJim Jagielski RefreshMarkWindow();
484*b1cdbd2cSJim Jagielski ShowMarkWnd ();
485*b1cdbd2cSJim Jagielski mbMarkWndOpen = IsMarkWndVisible ();
486*b1cdbd2cSJim Jagielski
487*b1cdbd2cSJim Jagielski return( 0L );
488*b1cdbd2cSJim Jagielski }
489*b1cdbd2cSJim Jagielski
RefreshMarkWindow()490*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::RefreshMarkWindow()
491*b1cdbd2cSJim Jagielski {
492*b1cdbd2cSJim Jagielski if ( maRbtLinktypInternet.IsChecked() && IsMarkWndVisible() )
493*b1cdbd2cSJim Jagielski {
494*b1cdbd2cSJim Jagielski EnterWait();
495*b1cdbd2cSJim Jagielski String aStrURL( CreateAbsoluteURL() );
496*b1cdbd2cSJim Jagielski if ( aStrURL != aEmptyStr )
497*b1cdbd2cSJim Jagielski mpMarkWnd->RefreshTree ( aStrURL );
498*b1cdbd2cSJim Jagielski else
499*b1cdbd2cSJim Jagielski mpMarkWnd->SetError( LERR_DOCNOTOPEN );
500*b1cdbd2cSJim Jagielski LeaveWait();
501*b1cdbd2cSJim Jagielski }
502*b1cdbd2cSJim Jagielski
503*b1cdbd2cSJim Jagielski }
504*b1cdbd2cSJim Jagielski
505*b1cdbd2cSJim Jagielski /*************************************************************************
506*b1cdbd2cSJim Jagielski |*
507*b1cdbd2cSJim Jagielski |* Get String from Bookmark-Wnd
508*b1cdbd2cSJim Jagielski |*
509*b1cdbd2cSJim Jagielski |************************************************************************/
510*b1cdbd2cSJim Jagielski
SetMarkStr(String & aStrMark)511*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::SetMarkStr ( String& aStrMark )
512*b1cdbd2cSJim Jagielski {
513*b1cdbd2cSJim Jagielski String aStrURL ( maCbbTarget.GetText() );
514*b1cdbd2cSJim Jagielski
515*b1cdbd2cSJim Jagielski const sal_Unicode sUHash = '#';
516*b1cdbd2cSJim Jagielski xub_StrLen nPos = aStrURL.SearchBackward( sUHash );
517*b1cdbd2cSJim Jagielski
518*b1cdbd2cSJim Jagielski if( nPos != STRING_NOTFOUND )
519*b1cdbd2cSJim Jagielski aStrURL.Erase ( nPos );
520*b1cdbd2cSJim Jagielski
521*b1cdbd2cSJim Jagielski aStrURL += sUHash;
522*b1cdbd2cSJim Jagielski aStrURL += aStrMark;
523*b1cdbd2cSJim Jagielski
524*b1cdbd2cSJim Jagielski maCbbTarget.SetText ( aStrURL );
525*b1cdbd2cSJim Jagielski }
526*b1cdbd2cSJim Jagielski
527*b1cdbd2cSJim Jagielski /*************************************************************************
528*b1cdbd2cSJim Jagielski |*
529*b1cdbd2cSJim Jagielski |* Enable Browse-Button in subject to the office is in onlinemode
530*b1cdbd2cSJim Jagielski |*
531*b1cdbd2cSJim Jagielski |************************************************************************/
532*b1cdbd2cSJim Jagielski
SetOnlineMode(sal_Bool)533*b1cdbd2cSJim Jagielski void SvxHyperlinkInternetTp::SetOnlineMode( sal_Bool /*bEnable*/ )
534*b1cdbd2cSJim Jagielski {
535*b1cdbd2cSJim Jagielski // State of target-button in subject to the current url-string
536*b1cdbd2cSJim Jagielski // ( Can't display any targets in an document, if there is no
537*b1cdbd2cSJim Jagielski // valid url to a document )
538*b1cdbd2cSJim Jagielski String aStrCurrentTarget( maCbbTarget.GetText() );
539*b1cdbd2cSJim Jagielski aStrCurrentTarget.EraseTrailingChars();
540*b1cdbd2cSJim Jagielski
541*b1cdbd2cSJim Jagielski if( aStrCurrentTarget == aEmptyStr ||
542*b1cdbd2cSJim Jagielski aStrCurrentTarget.EqualsIgnoreCaseAscii( sHTTPScheme ) ||
543*b1cdbd2cSJim Jagielski aStrCurrentTarget.EqualsIgnoreCaseAscii( sHTTPSScheme ) )
544*b1cdbd2cSJim Jagielski maBtTarget.Enable( sal_False );
545*b1cdbd2cSJim Jagielski else
546*b1cdbd2cSJim Jagielski maBtTarget.Enable( sal_True );
547*b1cdbd2cSJim Jagielski }
548