1*859212d1SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*859212d1SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*859212d1SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*859212d1SAndrew Rist * distributed with this work for additional information
6*859212d1SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*859212d1SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*859212d1SAndrew Rist * "License"); you may not use this file except in compliance
9*859212d1SAndrew Rist * with the License. You may obtain a copy of the License at
10*859212d1SAndrew Rist *
11*859212d1SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*859212d1SAndrew Rist *
13*859212d1SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*859212d1SAndrew Rist * software distributed under the License is distributed on an
15*859212d1SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*859212d1SAndrew Rist * KIND, either express or implied. See the License for the
17*859212d1SAndrew Rist * specific language governing permissions and limitations
18*859212d1SAndrew Rist * under the License.
19*859212d1SAndrew Rist *
20*859212d1SAndrew Rist *************************************************************/
21*859212d1SAndrew Rist
22*859212d1SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir #include <svtools/filedlg.hxx>
25cdf0e10cSrcweir #include <vcl/msgbox.hxx>
26cdf0e10cSrcweir #include "logindlg.hxx"
27cdf0e10cSrcweir
28cdf0e10cSrcweir #ifndef UUI_LOGINDLG_HRC
29cdf0e10cSrcweir #include "logindlg.hrc"
30cdf0e10cSrcweir #endif
31cdf0e10cSrcweir #ifndef UUI_IDS_HRC
32cdf0e10cSrcweir #include "ids.hrc"
33cdf0e10cSrcweir #endif
34cdf0e10cSrcweir #include <tools/resid.hxx>
35cdf0e10cSrcweir
36cdf0e10cSrcweir #ifdef UNX
37cdf0e10cSrcweir #include <limits.h>
38cdf0e10cSrcweir #define _MAX_PATH PATH_MAX
39cdf0e10cSrcweir #endif
40cdf0e10cSrcweir
41cdf0e10cSrcweir // LoginDialog -------------------------------------------------------
42cdf0e10cSrcweir
43cdf0e10cSrcweir //............................................................................
44cdf0e10cSrcweir //............................................................................
45cdf0e10cSrcweir
lcl_Move(Window & rWin,long nOffset)46cdf0e10cSrcweir static void lcl_Move( Window &rWin, long nOffset )
47cdf0e10cSrcweir {
48cdf0e10cSrcweir Point aTmp( rWin.GetPosPixel() );
49cdf0e10cSrcweir aTmp.Y() -= nOffset;
50cdf0e10cSrcweir rWin.SetPosPixel( aTmp );
51cdf0e10cSrcweir }
52cdf0e10cSrcweir
53cdf0e10cSrcweir
HideControls_Impl(sal_uInt16 nFlags)54cdf0e10cSrcweir void LoginDialog::HideControls_Impl( sal_uInt16 nFlags )
55cdf0e10cSrcweir {
56cdf0e10cSrcweir bool bPathHide = sal_False;
57cdf0e10cSrcweir bool bErrorHide = sal_False;
58cdf0e10cSrcweir bool bAccountHide = sal_False;
59cdf0e10cSrcweir bool bUseSysCredsHide = sal_False;
60cdf0e10cSrcweir
61cdf0e10cSrcweir if ( ( nFlags & LF_NO_PATH ) == LF_NO_PATH )
62cdf0e10cSrcweir {
63cdf0e10cSrcweir aPathFT.Hide();
64cdf0e10cSrcweir aPathED.Hide();
65cdf0e10cSrcweir aPathBtn.Hide();
66cdf0e10cSrcweir bPathHide = sal_True;
67cdf0e10cSrcweir }
68cdf0e10cSrcweir else if ( ( nFlags & LF_PATH_READONLY ) == LF_PATH_READONLY )
69cdf0e10cSrcweir {
70cdf0e10cSrcweir aPathED.Enable( sal_False );
71cdf0e10cSrcweir aPathBtn.Enable( sal_False );
72cdf0e10cSrcweir }
73cdf0e10cSrcweir
74cdf0e10cSrcweir if ( ( nFlags & LF_NO_USERNAME ) == LF_NO_USERNAME )
75cdf0e10cSrcweir {
76cdf0e10cSrcweir aNameFT.Hide();
77cdf0e10cSrcweir aNameED.Hide();
78cdf0e10cSrcweir }
79cdf0e10cSrcweir else if ( ( nFlags & LF_USERNAME_READONLY ) == LF_USERNAME_READONLY )
80cdf0e10cSrcweir {
81cdf0e10cSrcweir aNameED.Enable( sal_False );
82cdf0e10cSrcweir }
83cdf0e10cSrcweir
84cdf0e10cSrcweir if ( ( nFlags & LF_NO_PASSWORD ) == LF_NO_PASSWORD )
85cdf0e10cSrcweir {
86cdf0e10cSrcweir aPasswordFT.Hide();
87cdf0e10cSrcweir aPasswordED.Hide();
88cdf0e10cSrcweir }
89cdf0e10cSrcweir
90cdf0e10cSrcweir if ( ( nFlags & LF_NO_SAVEPASSWORD ) == LF_NO_SAVEPASSWORD )
91cdf0e10cSrcweir aSavePasswdBtn.Hide();
92cdf0e10cSrcweir
93cdf0e10cSrcweir if ( ( nFlags & LF_NO_ERRORTEXT ) == LF_NO_ERRORTEXT )
94cdf0e10cSrcweir {
95cdf0e10cSrcweir aErrorInfo.Hide();
96cdf0e10cSrcweir aErrorFT.Hide();
97cdf0e10cSrcweir aLogin1FL.Hide();
98cdf0e10cSrcweir bErrorHide = sal_True;
99cdf0e10cSrcweir }
100cdf0e10cSrcweir
101cdf0e10cSrcweir if ( ( nFlags & LF_NO_ACCOUNT ) == LF_NO_ACCOUNT )
102cdf0e10cSrcweir {
103cdf0e10cSrcweir aAccountFT.Hide();
104cdf0e10cSrcweir aAccountED.Hide();
105cdf0e10cSrcweir bAccountHide = sal_True;
106cdf0e10cSrcweir }
107cdf0e10cSrcweir
108cdf0e10cSrcweir if ( ( nFlags & LF_NO_USESYSCREDS ) == LF_NO_USESYSCREDS )
109cdf0e10cSrcweir {
110cdf0e10cSrcweir aUseSysCredsCB.Hide();
111cdf0e10cSrcweir bUseSysCredsHide = sal_True;
112cdf0e10cSrcweir }
113cdf0e10cSrcweir
114cdf0e10cSrcweir if ( bErrorHide )
115cdf0e10cSrcweir {
116cdf0e10cSrcweir long nOffset = aRequestInfo.GetPosPixel().Y() -
117cdf0e10cSrcweir aErrorFT.GetPosPixel().Y();
118cdf0e10cSrcweir lcl_Move( aRequestInfo, nOffset );
119cdf0e10cSrcweir lcl_Move( aLogin2FL, nOffset );
120cdf0e10cSrcweir lcl_Move( aPathFT, nOffset );
121cdf0e10cSrcweir lcl_Move( aPathED, nOffset );
122cdf0e10cSrcweir lcl_Move( aPathBtn, nOffset );
123cdf0e10cSrcweir lcl_Move( aNameFT, nOffset );
124cdf0e10cSrcweir lcl_Move( aNameED, nOffset );
125cdf0e10cSrcweir lcl_Move( aPasswordFT, nOffset );
126cdf0e10cSrcweir lcl_Move( aPasswordED, nOffset );
127cdf0e10cSrcweir lcl_Move( aAccountFT, nOffset );
128cdf0e10cSrcweir lcl_Move( aAccountED, nOffset );
129cdf0e10cSrcweir lcl_Move( aSavePasswdBtn, nOffset );
130cdf0e10cSrcweir lcl_Move( aUseSysCredsCB, nOffset );
131cdf0e10cSrcweir lcl_Move( aButtonsFL, nOffset );
132cdf0e10cSrcweir lcl_Move( aOKBtn, nOffset );
133cdf0e10cSrcweir lcl_Move( aCancelBtn, nOffset );
134cdf0e10cSrcweir lcl_Move( aHelpBtn, nOffset );
135cdf0e10cSrcweir
136cdf0e10cSrcweir Size aNewSiz = GetSizePixel();
137cdf0e10cSrcweir aNewSiz.Height() -= nOffset;
138cdf0e10cSrcweir SetSizePixel( aNewSiz );
139cdf0e10cSrcweir }
140cdf0e10cSrcweir
141cdf0e10cSrcweir if ( bPathHide )
142cdf0e10cSrcweir {
143cdf0e10cSrcweir long nOffset = aNameED.GetPosPixel().Y() -
144cdf0e10cSrcweir aPathED.GetPosPixel().Y();
145cdf0e10cSrcweir lcl_Move( aNameFT, nOffset );
146cdf0e10cSrcweir lcl_Move( aNameED, nOffset );
147cdf0e10cSrcweir lcl_Move( aPasswordFT, nOffset );
148cdf0e10cSrcweir lcl_Move( aPasswordED, nOffset );
149cdf0e10cSrcweir lcl_Move( aAccountFT, nOffset );
150cdf0e10cSrcweir lcl_Move( aAccountED, nOffset );
151cdf0e10cSrcweir lcl_Move( aSavePasswdBtn, nOffset );
152cdf0e10cSrcweir lcl_Move( aUseSysCredsCB, nOffset );
153cdf0e10cSrcweir lcl_Move( aButtonsFL, nOffset );
154cdf0e10cSrcweir lcl_Move( aOKBtn, nOffset );
155cdf0e10cSrcweir lcl_Move( aCancelBtn, nOffset );
156cdf0e10cSrcweir lcl_Move( aHelpBtn, nOffset );
157cdf0e10cSrcweir
158cdf0e10cSrcweir Size aNewSz = GetSizePixel();
159cdf0e10cSrcweir aNewSz.Height() -= nOffset;
160cdf0e10cSrcweir SetSizePixel( aNewSz );
161cdf0e10cSrcweir }
162cdf0e10cSrcweir
163cdf0e10cSrcweir if ( bAccountHide )
164cdf0e10cSrcweir {
165cdf0e10cSrcweir long nOffset = aAccountED.GetPosPixel().Y() -
166cdf0e10cSrcweir aPasswordED.GetPosPixel().Y();
167cdf0e10cSrcweir lcl_Move( aSavePasswdBtn, nOffset );
168cdf0e10cSrcweir lcl_Move( aUseSysCredsCB, nOffset );
169cdf0e10cSrcweir lcl_Move( aButtonsFL, nOffset );
170cdf0e10cSrcweir lcl_Move( aOKBtn, nOffset );
171cdf0e10cSrcweir lcl_Move( aCancelBtn, nOffset );
172cdf0e10cSrcweir lcl_Move( aHelpBtn, nOffset );
173cdf0e10cSrcweir
174cdf0e10cSrcweir Size aNewSz = GetSizePixel();
175cdf0e10cSrcweir aNewSz.Height() -= nOffset;
176cdf0e10cSrcweir SetSizePixel( aNewSz );
177cdf0e10cSrcweir }
178cdf0e10cSrcweir
179cdf0e10cSrcweir if ( bUseSysCredsHide )
180cdf0e10cSrcweir {
181cdf0e10cSrcweir long nOffset = aUseSysCredsCB.GetPosPixel().Y() -
182cdf0e10cSrcweir aSavePasswdBtn.GetPosPixel().Y();
183cdf0e10cSrcweir lcl_Move( aButtonsFL, nOffset );
184cdf0e10cSrcweir lcl_Move( aOKBtn, nOffset );
185cdf0e10cSrcweir lcl_Move( aCancelBtn, nOffset );
186cdf0e10cSrcweir lcl_Move( aHelpBtn, nOffset );
187cdf0e10cSrcweir
188cdf0e10cSrcweir Size aNewSz = GetSizePixel();
189cdf0e10cSrcweir aNewSz.Height() -= nOffset;
190cdf0e10cSrcweir SetSizePixel( aNewSz );
191cdf0e10cSrcweir }
192cdf0e10cSrcweir };
193cdf0e10cSrcweir
194cdf0e10cSrcweir // -----------------------------------------------------------------------
EnableUseSysCredsControls_Impl(sal_Bool bUseSysCredsEnabled)195cdf0e10cSrcweir void LoginDialog::EnableUseSysCredsControls_Impl( sal_Bool bUseSysCredsEnabled )
196cdf0e10cSrcweir {
197cdf0e10cSrcweir aErrorInfo.Enable( !bUseSysCredsEnabled );
198cdf0e10cSrcweir aErrorFT.Enable( !bUseSysCredsEnabled );
199cdf0e10cSrcweir aRequestInfo.Enable( !bUseSysCredsEnabled );
200cdf0e10cSrcweir aPathFT.Enable( !bUseSysCredsEnabled );
201cdf0e10cSrcweir aPathED.Enable( !bUseSysCredsEnabled );
202cdf0e10cSrcweir aPathBtn.Enable( !bUseSysCredsEnabled );
203cdf0e10cSrcweir aNameFT.Enable( !bUseSysCredsEnabled );
204cdf0e10cSrcweir aNameED.Enable( !bUseSysCredsEnabled );
205cdf0e10cSrcweir aPasswordFT.Enable( !bUseSysCredsEnabled );
206cdf0e10cSrcweir aPasswordED.Enable( !bUseSysCredsEnabled );
207cdf0e10cSrcweir aAccountFT.Enable( !bUseSysCredsEnabled );
208cdf0e10cSrcweir aAccountED.Enable( !bUseSysCredsEnabled );
209cdf0e10cSrcweir }
210cdf0e10cSrcweir
211cdf0e10cSrcweir // -----------------------------------------------------------------------
212cdf0e10cSrcweir
IMPL_LINK(LoginDialog,OKHdl_Impl,OKButton *,EMPTYARG)213cdf0e10cSrcweir IMPL_LINK( LoginDialog, OKHdl_Impl, OKButton *, EMPTYARG )
214cdf0e10cSrcweir {
215cdf0e10cSrcweir // trim the strings
216cdf0e10cSrcweir aNameED.SetText( aNameED.GetText().EraseLeadingChars().
217cdf0e10cSrcweir EraseTrailingChars() );
218cdf0e10cSrcweir aPasswordED.SetText( aPasswordED.GetText().EraseLeadingChars().
219cdf0e10cSrcweir EraseTrailingChars() );
220cdf0e10cSrcweir EndDialog( RET_OK );
221cdf0e10cSrcweir return 1;
222cdf0e10cSrcweir }
223cdf0e10cSrcweir
224cdf0e10cSrcweir // -----------------------------------------------------------------------
225cdf0e10cSrcweir
IMPL_LINK(LoginDialog,PathHdl_Impl,PushButton *,EMPTYARG)226cdf0e10cSrcweir IMPL_LINK( LoginDialog, PathHdl_Impl, PushButton *, EMPTYARG )
227cdf0e10cSrcweir {
228cdf0e10cSrcweir PathDialog* pDlg = new PathDialog( this, WB_3DLOOK );
229cdf0e10cSrcweir pDlg->SetPath( aPathED.GetText() );
230cdf0e10cSrcweir
231cdf0e10cSrcweir if ( pDlg->Execute() == RET_OK )
232cdf0e10cSrcweir aPathED.SetText( pDlg->GetPath() );
233cdf0e10cSrcweir
234cdf0e10cSrcweir delete pDlg;
235cdf0e10cSrcweir return 1;
236cdf0e10cSrcweir }
237cdf0e10cSrcweir
238cdf0e10cSrcweir // -----------------------------------------------------------------------
239cdf0e10cSrcweir
IMPL_LINK(LoginDialog,UseSysCredsHdl_Impl,CheckBox *,EMPTYARG)240cdf0e10cSrcweir IMPL_LINK( LoginDialog, UseSysCredsHdl_Impl, CheckBox *, EMPTYARG )
241cdf0e10cSrcweir {
242cdf0e10cSrcweir EnableUseSysCredsControls_Impl( aUseSysCredsCB.IsChecked() );
243cdf0e10cSrcweir return 1;
244cdf0e10cSrcweir }
245cdf0e10cSrcweir
246cdf0e10cSrcweir // -----------------------------------------------------------------------
247cdf0e10cSrcweir
LoginDialog(Window * pParent,sal_uInt16 nFlags,const String & rServer,const String * pRealm,ResMgr * pResMgr)248cdf0e10cSrcweir LoginDialog::LoginDialog
249cdf0e10cSrcweir (
250cdf0e10cSrcweir Window* pParent,
251cdf0e10cSrcweir sal_uInt16 nFlags,
252cdf0e10cSrcweir const String& rServer,
253cdf0e10cSrcweir const String* pRealm,
254cdf0e10cSrcweir ResMgr* pResMgr
255cdf0e10cSrcweir ) :
256cdf0e10cSrcweir
257cdf0e10cSrcweir ModalDialog( pParent, ResId( DLG_UUI_LOGIN, *pResMgr ) ),
258cdf0e10cSrcweir
259cdf0e10cSrcweir aErrorFT ( this, ResId( FT_LOGIN_ERROR, *pResMgr ) ),
260cdf0e10cSrcweir aErrorInfo ( this, ResId( FT_INFO_LOGIN_ERROR, *pResMgr ) ),
261cdf0e10cSrcweir aLogin1FL ( this, ResId( FL_LOGIN_1, *pResMgr ) ),
262cdf0e10cSrcweir aRequestInfo ( this, ResId( FT_INFO_LOGIN_REQUEST, *pResMgr ) ),
263cdf0e10cSrcweir aLogin2FL ( this, ResId( FL_LOGIN_2, *pResMgr ) ),
264cdf0e10cSrcweir aPathFT ( this, ResId( FT_LOGIN_PATH, *pResMgr ) ),
265cdf0e10cSrcweir aPathED ( this, ResId( ED_LOGIN_PATH, *pResMgr ) ),
266cdf0e10cSrcweir aPathBtn ( this, ResId( BTN_LOGIN_PATH, *pResMgr ) ),
267cdf0e10cSrcweir aNameFT ( this, ResId( FT_LOGIN_USERNAME, *pResMgr ) ),
268cdf0e10cSrcweir aNameED ( this, ResId( ED_LOGIN_USERNAME, *pResMgr ) ),
269cdf0e10cSrcweir aPasswordFT ( this, ResId( FT_LOGIN_PASSWORD, *pResMgr ) ),
270cdf0e10cSrcweir aPasswordED ( this, ResId( ED_LOGIN_PASSWORD, *pResMgr ) ),
271cdf0e10cSrcweir aAccountFT ( this, ResId( FT_LOGIN_ACCOUNT, *pResMgr ) ),
272cdf0e10cSrcweir aAccountED ( this, ResId( ED_LOGIN_ACCOUNT, *pResMgr ) ),
273cdf0e10cSrcweir aSavePasswdBtn ( this, ResId( CB_LOGIN_SAVEPASSWORD, *pResMgr ) ),
274cdf0e10cSrcweir aUseSysCredsCB ( this, ResId( CB_LOGIN_USESYSCREDS, *pResMgr ) ),
275cdf0e10cSrcweir aButtonsFL ( this, ResId( FL_BUTTONS, *pResMgr ) ),
276cdf0e10cSrcweir aOKBtn ( this, ResId( BTN_LOGIN_OK, *pResMgr ) ),
277cdf0e10cSrcweir aCancelBtn ( this, ResId( BTN_LOGIN_CANCEL, *pResMgr ) ),
278cdf0e10cSrcweir aHelpBtn ( this, ResId( BTN_LOGIN_HELP, *pResMgr ) )
279cdf0e10cSrcweir
280cdf0e10cSrcweir {
281cdf0e10cSrcweir UniString aRequest;
282cdf0e10cSrcweir if ((nFlags & LF_NO_ACCOUNT) != 0 && pRealm && pRealm->Len() != 0)
283cdf0e10cSrcweir {
284cdf0e10cSrcweir aRequest = ResId(STR_LOGIN_REALM, *pResMgr);
285cdf0e10cSrcweir aRequest.SearchAndReplaceAscii("%2", *pRealm);
286cdf0e10cSrcweir }
287cdf0e10cSrcweir else
288cdf0e10cSrcweir aRequest = aRequestInfo.GetText();
289cdf0e10cSrcweir
290cdf0e10cSrcweir if ( !( ( nFlags & LF_NO_USESYSCREDS ) == LF_NO_USESYSCREDS ) )
291cdf0e10cSrcweir EnableUseSysCredsControls_Impl( aUseSysCredsCB.IsChecked() );
292cdf0e10cSrcweir
293cdf0e10cSrcweir aRequest.SearchAndReplaceAscii("%1", rServer);
294cdf0e10cSrcweir aRequestInfo.SetText(aRequest);
295cdf0e10cSrcweir
296cdf0e10cSrcweir FreeResource();
297cdf0e10cSrcweir
298cdf0e10cSrcweir aPathED.SetMaxTextLen( _MAX_PATH );
299cdf0e10cSrcweir aNameED.SetMaxTextLen( _MAX_PATH );
300cdf0e10cSrcweir
301cdf0e10cSrcweir aOKBtn.SetClickHdl( LINK( this, LoginDialog, OKHdl_Impl ) );
302cdf0e10cSrcweir aPathBtn.SetClickHdl( LINK( this, LoginDialog, PathHdl_Impl ) );
303cdf0e10cSrcweir aUseSysCredsCB.SetClickHdl( LINK( this, LoginDialog, UseSysCredsHdl_Impl ) );
304cdf0e10cSrcweir
305cdf0e10cSrcweir HideControls_Impl( nFlags );
306cdf0e10cSrcweir };
307cdf0e10cSrcweir
308cdf0e10cSrcweir // -----------------------------------------------------------------------
309cdf0e10cSrcweir
~LoginDialog()310cdf0e10cSrcweir LoginDialog::~LoginDialog()
311cdf0e10cSrcweir {
312cdf0e10cSrcweir }
313cdf0e10cSrcweir
314cdf0e10cSrcweir // -----------------------------------------------------------------------
315cdf0e10cSrcweir
SetUseSystemCredentials(sal_Bool bUse)316cdf0e10cSrcweir void LoginDialog::SetUseSystemCredentials( sal_Bool bUse )
317cdf0e10cSrcweir {
318cdf0e10cSrcweir if ( aUseSysCredsCB.IsVisible() )
319cdf0e10cSrcweir {
320cdf0e10cSrcweir aUseSysCredsCB.Check( bUse );
321cdf0e10cSrcweir EnableUseSysCredsControls_Impl( bUse );
322cdf0e10cSrcweir }
323cdf0e10cSrcweir }
324cdf0e10cSrcweir
325cdf0e10cSrcweir // -----------------------------------------------------------------------
326cdf0e10cSrcweir
ClearPassword()327cdf0e10cSrcweir void LoginDialog::ClearPassword()
328cdf0e10cSrcweir {
329cdf0e10cSrcweir aPasswordED.SetText( String() );
330cdf0e10cSrcweir
331cdf0e10cSrcweir if ( 0 == aNameED.GetText().Len() )
332cdf0e10cSrcweir aNameED.GrabFocus();
333cdf0e10cSrcweir else
334cdf0e10cSrcweir aPasswordED.GrabFocus();
335cdf0e10cSrcweir };
336cdf0e10cSrcweir
337cdf0e10cSrcweir // -----------------------------------------------------------------------
338cdf0e10cSrcweir
ClearAccount()339cdf0e10cSrcweir void LoginDialog::ClearAccount()
340cdf0e10cSrcweir {
341cdf0e10cSrcweir aAccountED.SetText( String() );
342cdf0e10cSrcweir aAccountED.GrabFocus();
343cdf0e10cSrcweir };
344cdf0e10cSrcweir
345cdf0e10cSrcweir //............................................................................
346cdf0e10cSrcweir //............................................................................
347