diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-03-21 09:46:40 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-03-21 11:23:02 +0000 |
commit | f6cd982a68528ac1bfd130080cea3f96e6cc7edd (patch) | |
tree | ff712a57c369ce990816366ceb4d1da42badd47f /vcl/unx/generic/printer | |
parent | 42aeaee8dfc8cdd11428079e9fe357534bbb8898 (diff) |
move the cups password dialog from padmin to vcl
now we don't have to dlopen padmin to get it so we can drop that complicated
stuff.
Change-Id: I2f01bd104aae8f17ada9a445da653b441a927c70
Diffstat (limited to 'vcl/unx/generic/printer')
-rw-r--r-- | vcl/unx/generic/printer/cupsmgr.cxx | 92 |
1 files changed, 68 insertions, 24 deletions
diff --git a/vcl/unx/generic/printer/cupsmgr.cxx b/vcl/unx/generic/printer/cupsmgr.cxx index 9c7af07c020e..b9e5af03bb19 100644 --- a/vcl/unx/generic/printer/cupsmgr.cxx +++ b/vcl/unx/generic/printer/cupsmgr.cxx @@ -35,6 +35,10 @@ #include <officecfg/Office/Common.hxx> +#include <vcl/button.hxx> +#include <vcl/dialog.hxx> +#include <vcl/fixed.hxx> + #include <algorithm> using namespace psp; @@ -827,36 +831,76 @@ bool CUPSManager::writePrinterConfig() return PrinterInfoManager::writePrinterConfig(); } -const char* CUPSManager::authenticateUser( const char* /*pIn*/ ) +namespace { - const char* pRet = NULL; - oslModule pLib = osl_loadModuleAscii( _XSALSET_LIBNAME, SAL_LOADMODULE_LAZY ); - if( pLib ) + class RTSPWDialog : public ModalDialog { - OUString aSym( "Sal_authenticateQuery" ); - bool (*getpw)( const OString& rServer, OString& rUser, OString& rPw) = - (bool(*)(const OString&,OString&,OString&))osl_getFunctionSymbol( pLib, aSym.pData ); - if( getpw ) - { - osl::MutexGuard aGuard( m_aCUPSMutex ); + FixedText* m_pText; + Edit* m_pUserEdit; + Edit* m_pPassEdit; - OString aUser = cupsUser(); - OString aServer = cupsServer(); - OString aPassword; - if( getpw( aServer, aUser, aPassword ) ) - { - m_aPassword = aPassword; - m_aUser = aUser; - cupsSetUser( m_aUser.getStr() ); - pRet = m_aPassword.getStr(); - } + public: + RTSPWDialog(const OString& rServer, const OString& rUserName, Window* pParent); + + OString getUserName() const; + OString getPassword() const; + }; + + RTSPWDialog::RTSPWDialog( const OString& rServer, const OString& rUserName, Window* pParent ) + : ModalDialog(pParent, "CUPSPasswordDialog", + "vcl/ui/cupspassworddialog.ui") + { + get(m_pText, "text"); + get(m_pUserEdit, "user"); + get(m_pPassEdit, "pass"); + + OUString aText(m_pText->GetText()); + aText = aText.replaceFirst("%s", OStringToOUString(rServer, osl_getThreadTextEncoding())); + m_pText->SetText(aText); + m_pUserEdit->SetText( OStringToOUString(rUserName, osl_getThreadTextEncoding())); + } + + OString RTSPWDialog::getUserName() const + { + return OUStringToOString( m_pUserEdit->GetText(), osl_getThreadTextEncoding() ); + } + + OString RTSPWDialog::getPassword() const + { + return OUStringToOString( m_pPassEdit->GetText(), osl_getThreadTextEncoding() ); + } + + bool AuthenticateQuery(const OString& rServer, OString& rUserName, OString& rPassword) + { + bool bRet = false; + + RTSPWDialog aDialog(rServer, rUserName, NULL); + if (aDialog.Execute()) + { + rUserName = aDialog.getUserName(); + rPassword = aDialog.getPassword(); + bRet = true; } - osl_unloadModule( pLib ); + + return bRet; } - else +} + +const char* CUPSManager::authenticateUser( const char* /*pIn*/ ) +{ + const char* pRet = NULL; + + osl::MutexGuard aGuard( m_aCUPSMutex ); + + OString aUser = cupsUser(); + OString aServer = cupsServer(); + OString aPassword; + if (AuthenticateQuery(aServer, aUser, aPassword)) { - SAL_WARN("vcl.unx.print", - "loading of module " << _XSALSET_LIBNAME << " failed\n"); + m_aPassword = aPassword; + m_aUser = aUser; + cupsSetUser( m_aUser.getStr() ); + pRet = m_aPassword.getStr(); } return pRet; |