| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #include <svtools/filedlg.hxx> |
| #include <vcl/msgbox.hxx> |
| #include "logindlg.hxx" |
| |
| #ifndef UUI_LOGINDLG_HRC |
| #include "logindlg.hrc" |
| #endif |
| #ifndef UUI_IDS_HRC |
| #include "ids.hrc" |
| #endif |
| #include <tools/resid.hxx> |
| |
| #ifdef UNX |
| #include <limits.h> |
| #define _MAX_PATH PATH_MAX |
| #endif |
| |
| // LoginDialog ------------------------------------------------------- |
| |
| //............................................................................ |
| //............................................................................ |
| |
| static void lcl_Move( Window &rWin, long nOffset ) |
| { |
| Point aTmp( rWin.GetPosPixel() ); |
| aTmp.Y() -= nOffset; |
| rWin.SetPosPixel( aTmp ); |
| } |
| |
| |
| void LoginDialog::HideControls_Impl( sal_uInt16 nFlags ) |
| { |
| bool bPathHide = sal_False; |
| bool bErrorHide = sal_False; |
| bool bAccountHide = sal_False; |
| bool bUseSysCredsHide = sal_False; |
| |
| if ( ( nFlags & LF_NO_PATH ) == LF_NO_PATH ) |
| { |
| aPathFT.Hide(); |
| aPathED.Hide(); |
| aPathBtn.Hide(); |
| bPathHide = sal_True; |
| } |
| else if ( ( nFlags & LF_PATH_READONLY ) == LF_PATH_READONLY ) |
| { |
| aPathED.Enable( sal_False ); |
| aPathBtn.Enable( sal_False ); |
| } |
| |
| if ( ( nFlags & LF_NO_USERNAME ) == LF_NO_USERNAME ) |
| { |
| aNameFT.Hide(); |
| aNameED.Hide(); |
| } |
| else if ( ( nFlags & LF_USERNAME_READONLY ) == LF_USERNAME_READONLY ) |
| { |
| aNameED.Enable( sal_False ); |
| } |
| |
| if ( ( nFlags & LF_NO_PASSWORD ) == LF_NO_PASSWORD ) |
| { |
| aPasswordFT.Hide(); |
| aPasswordED.Hide(); |
| } |
| |
| if ( ( nFlags & LF_NO_SAVEPASSWORD ) == LF_NO_SAVEPASSWORD ) |
| aSavePasswdBtn.Hide(); |
| |
| if ( ( nFlags & LF_NO_ERRORTEXT ) == LF_NO_ERRORTEXT ) |
| { |
| aErrorInfo.Hide(); |
| aErrorFT.Hide(); |
| aLogin1FL.Hide(); |
| bErrorHide = sal_True; |
| } |
| |
| if ( ( nFlags & LF_NO_ACCOUNT ) == LF_NO_ACCOUNT ) |
| { |
| aAccountFT.Hide(); |
| aAccountED.Hide(); |
| bAccountHide = sal_True; |
| } |
| |
| if ( ( nFlags & LF_NO_USESYSCREDS ) == LF_NO_USESYSCREDS ) |
| { |
| aUseSysCredsCB.Hide(); |
| bUseSysCredsHide = sal_True; |
| } |
| |
| if ( bErrorHide ) |
| { |
| long nOffset = aRequestInfo.GetPosPixel().Y() - |
| aErrorFT.GetPosPixel().Y(); |
| lcl_Move( aRequestInfo, nOffset ); |
| lcl_Move( aLogin2FL, nOffset ); |
| lcl_Move( aPathFT, nOffset ); |
| lcl_Move( aPathED, nOffset ); |
| lcl_Move( aPathBtn, nOffset ); |
| lcl_Move( aNameFT, nOffset ); |
| lcl_Move( aNameED, nOffset ); |
| lcl_Move( aPasswordFT, nOffset ); |
| lcl_Move( aPasswordED, nOffset ); |
| lcl_Move( aAccountFT, nOffset ); |
| lcl_Move( aAccountED, nOffset ); |
| lcl_Move( aSavePasswdBtn, nOffset ); |
| lcl_Move( aUseSysCredsCB, nOffset ); |
| lcl_Move( aButtonsFL, nOffset ); |
| lcl_Move( aOKBtn, nOffset ); |
| lcl_Move( aCancelBtn, nOffset ); |
| lcl_Move( aHelpBtn, nOffset ); |
| |
| Size aNewSiz = GetSizePixel(); |
| aNewSiz.Height() -= nOffset; |
| SetSizePixel( aNewSiz ); |
| } |
| |
| if ( bPathHide ) |
| { |
| long nOffset = aNameED.GetPosPixel().Y() - |
| aPathED.GetPosPixel().Y(); |
| lcl_Move( aNameFT, nOffset ); |
| lcl_Move( aNameED, nOffset ); |
| lcl_Move( aPasswordFT, nOffset ); |
| lcl_Move( aPasswordED, nOffset ); |
| lcl_Move( aAccountFT, nOffset ); |
| lcl_Move( aAccountED, nOffset ); |
| lcl_Move( aSavePasswdBtn, nOffset ); |
| lcl_Move( aUseSysCredsCB, nOffset ); |
| lcl_Move( aButtonsFL, nOffset ); |
| lcl_Move( aOKBtn, nOffset ); |
| lcl_Move( aCancelBtn, nOffset ); |
| lcl_Move( aHelpBtn, nOffset ); |
| |
| Size aNewSz = GetSizePixel(); |
| aNewSz.Height() -= nOffset; |
| SetSizePixel( aNewSz ); |
| } |
| |
| if ( bAccountHide ) |
| { |
| long nOffset = aAccountED.GetPosPixel().Y() - |
| aPasswordED.GetPosPixel().Y(); |
| lcl_Move( aSavePasswdBtn, nOffset ); |
| lcl_Move( aUseSysCredsCB, nOffset ); |
| lcl_Move( aButtonsFL, nOffset ); |
| lcl_Move( aOKBtn, nOffset ); |
| lcl_Move( aCancelBtn, nOffset ); |
| lcl_Move( aHelpBtn, nOffset ); |
| |
| Size aNewSz = GetSizePixel(); |
| aNewSz.Height() -= nOffset; |
| SetSizePixel( aNewSz ); |
| } |
| |
| if ( bUseSysCredsHide ) |
| { |
| long nOffset = aUseSysCredsCB.GetPosPixel().Y() - |
| aSavePasswdBtn.GetPosPixel().Y(); |
| lcl_Move( aButtonsFL, nOffset ); |
| lcl_Move( aOKBtn, nOffset ); |
| lcl_Move( aCancelBtn, nOffset ); |
| lcl_Move( aHelpBtn, nOffset ); |
| |
| Size aNewSz = GetSizePixel(); |
| aNewSz.Height() -= nOffset; |
| SetSizePixel( aNewSz ); |
| } |
| }; |
| |
| // ----------------------------------------------------------------------- |
| void LoginDialog::EnableUseSysCredsControls_Impl( sal_Bool bUseSysCredsEnabled ) |
| { |
| aErrorInfo.Enable( !bUseSysCredsEnabled ); |
| aErrorFT.Enable( !bUseSysCredsEnabled ); |
| aRequestInfo.Enable( !bUseSysCredsEnabled ); |
| aPathFT.Enable( !bUseSysCredsEnabled ); |
| aPathED.Enable( !bUseSysCredsEnabled ); |
| aPathBtn.Enable( !bUseSysCredsEnabled ); |
| aNameFT.Enable( !bUseSysCredsEnabled ); |
| aNameED.Enable( !bUseSysCredsEnabled ); |
| aPasswordFT.Enable( !bUseSysCredsEnabled ); |
| aPasswordED.Enable( !bUseSysCredsEnabled ); |
| aAccountFT.Enable( !bUseSysCredsEnabled ); |
| aAccountED.Enable( !bUseSysCredsEnabled ); |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| IMPL_LINK( LoginDialog, OKHdl_Impl, OKButton *, EMPTYARG ) |
| { |
| // trim the strings |
| aNameED.SetText( aNameED.GetText().EraseLeadingChars(). |
| EraseTrailingChars() ); |
| aPasswordED.SetText( aPasswordED.GetText().EraseLeadingChars(). |
| EraseTrailingChars() ); |
| EndDialog( RET_OK ); |
| return 1; |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| IMPL_LINK( LoginDialog, PathHdl_Impl, PushButton *, EMPTYARG ) |
| { |
| PathDialog* pDlg = new PathDialog( this, WB_3DLOOK ); |
| pDlg->SetPath( aPathED.GetText() ); |
| |
| if ( pDlg->Execute() == RET_OK ) |
| aPathED.SetText( pDlg->GetPath() ); |
| |
| delete pDlg; |
| return 1; |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| IMPL_LINK( LoginDialog, UseSysCredsHdl_Impl, CheckBox *, EMPTYARG ) |
| { |
| EnableUseSysCredsControls_Impl( aUseSysCredsCB.IsChecked() ); |
| return 1; |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| LoginDialog::LoginDialog |
| ( |
| Window* pParent, |
| sal_uInt16 nFlags, |
| const String& rServer, |
| const String* pRealm, |
| ResMgr* pResMgr |
| ) : |
| |
| ModalDialog( pParent, ResId( DLG_UUI_LOGIN, *pResMgr ) ), |
| |
| aErrorFT ( this, ResId( FT_LOGIN_ERROR, *pResMgr ) ), |
| aErrorInfo ( this, ResId( FT_INFO_LOGIN_ERROR, *pResMgr ) ), |
| aLogin1FL ( this, ResId( FL_LOGIN_1, *pResMgr ) ), |
| aRequestInfo ( this, ResId( FT_INFO_LOGIN_REQUEST, *pResMgr ) ), |
| aLogin2FL ( this, ResId( FL_LOGIN_2, *pResMgr ) ), |
| aPathFT ( this, ResId( FT_LOGIN_PATH, *pResMgr ) ), |
| aPathED ( this, ResId( ED_LOGIN_PATH, *pResMgr ) ), |
| aPathBtn ( this, ResId( BTN_LOGIN_PATH, *pResMgr ) ), |
| aNameFT ( this, ResId( FT_LOGIN_USERNAME, *pResMgr ) ), |
| aNameED ( this, ResId( ED_LOGIN_USERNAME, *pResMgr ) ), |
| aPasswordFT ( this, ResId( FT_LOGIN_PASSWORD, *pResMgr ) ), |
| aPasswordED ( this, ResId( ED_LOGIN_PASSWORD, *pResMgr ) ), |
| aAccountFT ( this, ResId( FT_LOGIN_ACCOUNT, *pResMgr ) ), |
| aAccountED ( this, ResId( ED_LOGIN_ACCOUNT, *pResMgr ) ), |
| aSavePasswdBtn ( this, ResId( CB_LOGIN_SAVEPASSWORD, *pResMgr ) ), |
| aUseSysCredsCB ( this, ResId( CB_LOGIN_USESYSCREDS, *pResMgr ) ), |
| aButtonsFL ( this, ResId( FL_BUTTONS, *pResMgr ) ), |
| aOKBtn ( this, ResId( BTN_LOGIN_OK, *pResMgr ) ), |
| aCancelBtn ( this, ResId( BTN_LOGIN_CANCEL, *pResMgr ) ), |
| aHelpBtn ( this, ResId( BTN_LOGIN_HELP, *pResMgr ) ) |
| |
| { |
| UniString aRequest; |
| if ((nFlags & LF_NO_ACCOUNT) != 0 && pRealm && pRealm->Len() != 0) |
| { |
| aRequest = ResId(STR_LOGIN_REALM, *pResMgr); |
| aRequest.SearchAndReplaceAscii("%2", *pRealm); |
| } |
| else |
| aRequest = aRequestInfo.GetText(); |
| |
| if ( !( ( nFlags & LF_NO_USESYSCREDS ) == LF_NO_USESYSCREDS ) ) |
| EnableUseSysCredsControls_Impl( aUseSysCredsCB.IsChecked() ); |
| |
| aRequest.SearchAndReplaceAscii("%1", rServer); |
| aRequestInfo.SetText(aRequest); |
| |
| FreeResource(); |
| |
| aPathED.SetMaxTextLen( _MAX_PATH ); |
| aNameED.SetMaxTextLen( _MAX_PATH ); |
| |
| aOKBtn.SetClickHdl( LINK( this, LoginDialog, OKHdl_Impl ) ); |
| aPathBtn.SetClickHdl( LINK( this, LoginDialog, PathHdl_Impl ) ); |
| aUseSysCredsCB.SetClickHdl( LINK( this, LoginDialog, UseSysCredsHdl_Impl ) ); |
| |
| HideControls_Impl( nFlags ); |
| }; |
| |
| // ----------------------------------------------------------------------- |
| |
| LoginDialog::~LoginDialog() |
| { |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| void LoginDialog::SetUseSystemCredentials( sal_Bool bUse ) |
| { |
| if ( aUseSysCredsCB.IsVisible() ) |
| { |
| aUseSysCredsCB.Check( bUse ); |
| EnableUseSysCredsControls_Impl( bUse ); |
| } |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| void LoginDialog::ClearPassword() |
| { |
| aPasswordED.SetText( String() ); |
| |
| if ( 0 == aNameED.GetText().Len() ) |
| aNameED.GrabFocus(); |
| else |
| aPasswordED.GrabFocus(); |
| }; |
| |
| // ----------------------------------------------------------------------- |
| |
| void LoginDialog::ClearAccount() |
| { |
| aAccountED.SetText( String() ); |
| aAccountED.GrabFocus(); |
| }; |
| |
| //............................................................................ |
| //............................................................................ |