diff options
author | Xiaofei Zhang <Zhangxiaofei@openoffice.org> | 2010-11-10 13:50:33 +0800 |
---|---|---|
committer | Xiaofei Zhang <Zhangxiaofei@openoffice.org> | 2010-11-10 13:50:33 +0800 |
commit | fa1f3c352c6126b24ab5af87ea4ebea742c546c2 (patch) | |
tree | 5a5240e4969fee626bb060bd386fceb957081f90 /uui/source/passworddlg.cxx | |
parent | d0097a3f35e5e2c68d293d604a2f6f51b2d822a5 (diff) | |
parent | 3c21373571fd0cf89391502aa132c5f420cd75c6 (diff) |
removetooltypes01: #i112600# resync to DEV300_m92; remove tooltypes from xmloff, linguistic, vcl, svtools, accessibility, fpicker, uui and framework
Diffstat (limited to 'uui/source/passworddlg.cxx')
-rw-r--r-- | uui/source/passworddlg.cxx | 150 |
1 files changed, 112 insertions, 38 deletions
diff --git a/uui/source/passworddlg.cxx b/uui/source/passworddlg.cxx index 4962563601c3..a6fa5134c277 100644 --- a/uui/source/passworddlg.cxx +++ b/uui/source/passworddlg.cxx @@ -25,63 +25,119 @@ * ************************************************************************/ +#include "passworddlg.hxx" +#include "passworddlg.hrc" +#include "ids.hrc" + #include <svtools/filedlg.hxx> #include <vcl/msgbox.hxx> -#ifndef UUI_IDS_HRC -#include <ids.hrc> -#endif -#ifndef UUI_PASSWORDDLG_HRC -#include <passworddlg.hrc> -#endif -#include <passworddlg.hxx> -// PasswordDialog--------------------------------------------------------- +using namespace ::com::sun::star; + // ----------------------------------------------------------------------- -IMPL_LINK( PasswordDialog, OKHdl_Impl, OKButton *, EMPTYARG ) +static void lcl_Move( Window &rWin, long nOffset ) { - EndDialog( RET_OK ); - return 1; + Point aTmp( rWin.GetPosPixel() ); + aTmp.Y() += nOffset; + rWin.SetPosPixel( aTmp ); } // ----------------------------------------------------------------------- -PasswordDialog::PasswordDialog -( +PasswordDialog::PasswordDialog( Window* _pParent, - ::com::sun::star::task::PasswordRequestMode nDlgMode, + task::PasswordRequestMode nDlgMode, ResMgr * pResMgr, - rtl::OUString& aDocURL - ) + rtl::OUString& aDocURL, + bool bOpenToModify, + bool bIsSimplePasswordRequest ) + :ModalDialog( _pParent, ResId( DLG_UUI_PASSWORD, *pResMgr ) ) - ,aFTPassword ( this, ResId( FT_PASSWORD, *pResMgr ) ) - ,aEDPassword ( this, ResId( ED_PASSWORD, *pResMgr ) ) - ,aOKBtn ( this, ResId( BTN_PASSWORD_OK, *pResMgr ) ) - ,aCancelBtn ( this, ResId( BTN_PASSWORD_CANCEL, *pResMgr ) ) - ,aHelpBtn ( this, ResId( BTN_PASSWORD_HELP, *pResMgr ) ) - ,aFixedLine1 ( this, ResId( FL_FIXED_LINE_1, *pResMgr ) ) - ,nDialogMode ( nDlgMode ) - ,pResourceMgr ( pResMgr ) + ,aFTPassword( this, ResId( FT_PASSWORD, *pResMgr )) + ,aEDPassword( this, ResId( ED_PASSWORD, *pResMgr )) + ,aFTConfirmPassword( this, ResId( FT_CONFIRM_PASSWORD, *pResMgr )) + ,aEDConfirmPassword( this, ResId( ED_CONFIRM_PASSWORD, *pResMgr )) + ,aOKBtn ( this, ResId( BTN_PASSWORD_OK, *pResMgr )) + ,aCancelBtn ( this, ResId( BTN_PASSWORD_CANCEL, *pResMgr )) + ,aHelpBtn ( this, ResId( BTN_PASSWORD_HELP, *pResMgr )) + ,aFixedLine1( this, ResId( FL_FIXED_LINE_1, *pResMgr )) + ,nMinLen(1) + ,aPasswdMismatch( ResId( STR_PASSWORD_MISMATCH, *pResMgr )) + ,nDialogMode( nDlgMode ) + ,pResourceMgr ( pResMgr ) { - if( nDialogMode == ::com::sun::star::task::PasswordRequestMode_PASSWORD_REENTER ) + if( nDialogMode == task::PasswordRequestMode_PASSWORD_REENTER ) { - String aErrorMsg( ResId( STR_ERROR_PASSWORD_WRONG, *pResourceMgr )); - ErrorBox aErrorBox( _pParent, WB_OK, aErrorMsg ); + const sal_uInt16 nOpenToModifyErrStrId = bOpenToModify ? STR_ERROR_PASSWORD_TO_MODIFY_WRONG : STR_ERROR_PASSWORD_TO_OPEN_WRONG; + const sal_uInt16 nErrStrId = bIsSimplePasswordRequest ? STR_ERROR_SIMPLE_PASSWORD_WRONG : nOpenToModifyErrStrId; + String aErrorMsg( ResId( nErrStrId, *pResourceMgr )); + ErrorBox aErrorBox( this, WB_OK, aErrorMsg ); aErrorBox.Execute(); } - FreeResource(); + // default settings for enter password or reenter passwd... + String aTitle( ResId( STR_TITLE_ENTER_PASSWORD, *pResourceMgr ) ); + aFTConfirmPassword.Hide(); + aEDConfirmPassword.Hide(); + aFTConfirmPassword.Enable( sal_False ); + aEDConfirmPassword.Enable( sal_False ); + + // settings for create password + if (nDialogMode == task::PasswordRequestMode_PASSWORD_CREATE) + { + aTitle = String( ResId( STR_TITLE_CREATE_PASSWORD, *pResourceMgr ) ); + + aFTConfirmPassword.SetText( String( ResId( STR_CONFIRM_SIMPLE_PASSWORD, *pResourceMgr ) ) ); + + aFTConfirmPassword.Show(); + aEDConfirmPassword.Show(); + aFTConfirmPassword.Enable( sal_True ); + aEDConfirmPassword.Enable( sal_True ); + } + else + { + // shrink dialog by size of hidden controls and move rest up accordingly + + long nDelta = aFixedLine1.GetPosPixel().Y() - aFTConfirmPassword.GetPosPixel().Y(); + + lcl_Move( aFixedLine1, -nDelta ); + lcl_Move( aOKBtn, -nDelta ); + lcl_Move( aCancelBtn, -nDelta ); + lcl_Move( aHelpBtn, -nDelta ); + + Size aNewDlgSize = GetSizePixel(); + aNewDlgSize.Height() -= nDelta; + SetSizePixel( aNewDlgSize ); + } + SetText( aTitle ); + + sal_uInt16 nStrId = bOpenToModify ? STR_ENTER_PASSWORD_TO_MODIFY : STR_ENTER_PASSWORD_TO_OPEN; + aFTPassword.SetText( String( ResId( nStrId, *pResourceMgr ) ) ); aFTPassword.SetText( aFTPassword.GetText() + aDocURL ); + if (bIsSimplePasswordRequest) + { + DBG_ASSERT( aDocURL.getLength() == 0, "A simple password request should not have a document URL! Use document password request instead." ); + aFTPassword.SetText( String( ResId( STR_ENTER_SIMPLE_PASSWORD, *pResourceMgr ) ) ); + } + + FreeResource(); aOKBtn.SetClickHdl( LINK( this, PasswordDialog, OKHdl_Impl ) ); - long nLabelWidth = aFTPassword.GetSizePixel().Width(); - long nLabelHeight = aFTPassword.GetSizePixel().Height(); - long nTextWidth = aFTPassword.GetCtrlTextWidth( aFTPassword.GetText() ); - long nTextHeight = aFTPassword.GetTextHeight(); + + // + // move controls down by extra height needed for aFTPassword + // (usually only needed if a URL was provided) + // + + long nLabelWidth = aFTPassword.GetSizePixel().Width(); + long nLabelHeight = aFTPassword.GetSizePixel().Height(); + long nTextWidth = aFTPassword.GetCtrlTextWidth( aFTPassword.GetText() ); + long nTextHeight = aFTPassword.GetTextHeight(); Rectangle aLabelRect( aFTPassword.GetPosPixel(), aFTPassword.GetSizePixel() ); Rectangle aRect = aFTPassword.GetTextRect( aLabelRect, aFTPassword.GetText() ); @@ -101,13 +157,31 @@ PasswordDialog::PasswordDialog aNewLabelSize.Height() = nNewLabelHeight; aFTPassword.SetPosSizePixel( aFTPassword.GetPosPixel(), aNewLabelSize ); - Window* pControls[] = { &aEDPassword, &aFixedLine1, &aOKBtn, &aCancelBtn, &aHelpBtn }; - const sal_Int32 nCCount = sizeof( pControls ) / sizeof( pControls[0] ); - for ( int i = 0; i < nCCount; ++i ) + lcl_Move( aEDPassword, nDelta ); + lcl_Move( aFTConfirmPassword, nDelta ); + lcl_Move( aEDConfirmPassword, nDelta ); + lcl_Move( aFixedLine1, nDelta ); + lcl_Move( aOKBtn, nDelta ); + lcl_Move( aCancelBtn, nDelta ); + lcl_Move( aHelpBtn, nDelta ); +} + + +IMPL_LINK( PasswordDialog, OKHdl_Impl, OKButton *, EMPTYARG ) +{ + bool bEDPasswdValid = aEDPassword.GetText().Len() >= nMinLen; + bool bPasswdMismatch = aEDConfirmPassword.GetText() != aEDPassword.GetText(); + bool bValid = (!aEDConfirmPassword.IsVisible() && bEDPasswdValid) || + (aEDConfirmPassword.IsVisible() && bEDPasswdValid && !bPasswdMismatch); + + if (aEDConfirmPassword.IsVisible() && bPasswdMismatch) { - Point aNewPos =(*pControls[i]).GetPosPixel(); - aNewPos.Y() += nDelta; - pControls[i]->SetPosSizePixel( aNewPos, pControls[i]->GetSizePixel() ); + ErrorBox aErrorBox( this, WB_OK, aPasswdMismatch ); + aErrorBox.Execute(); } + else if (bValid) + EndDialog( RET_OK ); + return 1; } + |