summaryrefslogtreecommitdiff
path: root/uui/source/logindlg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'uui/source/logindlg.cxx')
-rwxr-xr-xuui/source/logindlg.cxx350
1 files changed, 350 insertions, 0 deletions
diff --git a/uui/source/logindlg.cxx b/uui/source/logindlg.cxx
new file mode 100755
index 000000000000..d7ded58b5dde
--- /dev/null
+++ b/uui/source/logindlg.cxx
@@ -0,0 +1,350 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 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( USHORT nFlags )
+{
+ bool bPathHide = FALSE;
+ bool bErrorHide = FALSE;
+ bool bAccountHide = FALSE;
+ bool bUseSysCredsHide = FALSE;
+
+ if ( ( nFlags & LF_NO_PATH ) == LF_NO_PATH )
+ {
+ aPathFT.Hide();
+ aPathED.Hide();
+ aPathBtn.Hide();
+ bPathHide = TRUE;
+ }
+ else if ( ( nFlags & LF_PATH_READONLY ) == LF_PATH_READONLY )
+ {
+ aPathED.Enable( FALSE );
+ aPathBtn.Enable( FALSE );
+ }
+
+ if ( ( nFlags & LF_NO_USERNAME ) == LF_NO_USERNAME )
+ {
+ aNameFT.Hide();
+ aNameED.Hide();
+ }
+ else if ( ( nFlags & LF_USERNAME_READONLY ) == LF_USERNAME_READONLY )
+ {
+ aNameED.Enable( 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 = TRUE;
+ }
+
+ if ( ( nFlags & LF_NO_ACCOUNT ) == LF_NO_ACCOUNT )
+ {
+ aAccountFT.Hide();
+ aAccountED.Hide();
+ bAccountHide = TRUE;
+ }
+
+ if ( ( nFlags & LF_NO_USESYSCREDS ) == LF_NO_USESYSCREDS )
+ {
+ aUseSysCredsCB.Hide();
+ bUseSysCredsHide = 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( 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,
+ USHORT 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( 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();
+};
+
+//............................................................................
+//............................................................................