summaryrefslogtreecommitdiff
path: root/vcl/unx/generic/printer
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-03-21 09:46:40 +0000
committerCaolán McNamara <caolanm@redhat.com>2014-03-21 11:23:02 +0000
commitf6cd982a68528ac1bfd130080cea3f96e6cc7edd (patch)
treeff712a57c369ce990816366ceb4d1da42badd47f /vcl/unx/generic/printer
parent42aeaee8dfc8cdd11428079e9fe357534bbb8898 (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.cxx92
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;