blob: 3aacf64772719bd49e15e1bc655c9a0bdf62d9b1 [file] [log] [blame]
/**************************************************************
*
* 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();
};
//............................................................................
//............................................................................