Kaydet (Commit) 9c0684c9 authored tarafından Caolán McNamara's avatar Caolán McNamara

weld LoginDialog

Change-Id: I8f2af38bff24a0d4dc088eb1150220a8ea0f0fba
Reviewed-on: https://gerrit.libreoffice.org/52730Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst 2ca4b505
......@@ -58,7 +58,7 @@ namespace {
void
executeLoginDialog(
vcl::Window * pParent,
weld::Window* pParent,
LoginErrorInfo & rInfo,
OUString const & rRealm)
{
......@@ -82,40 +82,40 @@ executeLoginDialog(
if (!bCanUseSysCreds)
nFlags |= LoginFlags::NoUseSysCreds;
ScopedVclPtrInstance< LoginDialog > xDialog(pParent, nFlags, rInfo.GetServer(), rRealm);
LoginDialog aDialog(pParent, nFlags, rInfo.GetServer(), rRealm);
if (!rInfo.GetErrorText().isEmpty())
xDialog->SetErrorText(rInfo.GetErrorText());
xDialog->SetName(rInfo.GetUserName());
aDialog.SetErrorText(rInfo.GetErrorText());
aDialog.SetName(rInfo.GetUserName());
if (bAccount)
xDialog->ClearAccount();
aDialog.ClearAccount();
else
xDialog->ClearPassword();
xDialog->SetPassword(rInfo.GetPassword());
aDialog.ClearPassword();
aDialog.SetPassword(rInfo.GetPassword());
if (bSavePassword)
{
std::locale aLocale(Translate::Create("uui"));
xDialog->SetSavePasswordText(
aDialog.SetSavePasswordText(
Translate::get(rInfo.GetIsRememberPersistent()
? RID_SAVE_PASSWORD
: RID_KEEP_PASSWORD,
aLocale));
xDialog->SetSavePassword(rInfo.GetIsRememberPassword());
aDialog.SetSavePassword(rInfo.GetIsRememberPassword());
}
if ( bCanUseSysCreds )
xDialog->SetUseSystemCredentials( rInfo.GetIsUseSystemCredentials() );
aDialog.SetUseSystemCredentials( rInfo.GetIsUseSystemCredentials() );
rInfo.SetResult(xDialog->Execute() == RET_OK ? DialogMask::ButtonsOk :
DialogMask::ButtonsCancel);
rInfo.SetUserName(xDialog->GetName());
rInfo.SetPassword(xDialog->GetPassword());
rInfo.SetAccount(xDialog->GetAccount());
rInfo.SetIsRememberPassword(xDialog->IsSavePassword());
rInfo.SetResult(aDialog.run() == RET_OK ? DialogMask::ButtonsOk :
DialogMask::ButtonsCancel);
rInfo.SetUserName(aDialog.GetName());
rInfo.SetPassword(aDialog.GetPassword());
rInfo.SetAccount(aDialog.GetAccount());
rInfo.SetIsRememberPassword(aDialog.IsSavePassword());
if ( bCanUseSysCreds )
rInfo.SetIsUseSystemCredentials( xDialog->IsUseSystemCredentials() );
rInfo.SetIsUseSystemCredentials( aDialog.IsUseSystemCredentials() );
}
void getRememberModes(
......@@ -172,7 +172,7 @@ void getRememberModes(
void
handleAuthenticationRequest_(
vcl::Window * pParent,
weld::Window * pParent,
uno::Reference< task::XInteractionHandler2 > const & xIH,
uno::Reference< uno::XComponentContext > const & xContext,
ucb::AuthenticationRequest const & rRequest,
......@@ -595,11 +595,12 @@ UUIInteractionHelper::handleAuthenticationRequest(
uno::Reference< task::XInteractionRequest > const & rRequest)
{
uno::Any aAnyRequest(rRequest->getRequest());
uno::Reference<awt::XWindow> xParent = getParentXWindow();
ucb::URLAuthenticationRequest aURLAuthenticationRequest;
if (aAnyRequest >>= aURLAuthenticationRequest)
{
handleAuthenticationRequest_(getParentProperty(),
handleAuthenticationRequest_(Application::GetFrameWeld(xParent),
getInteractionHandler(),
m_xContext,
aURLAuthenticationRequest,
......@@ -611,7 +612,7 @@ UUIInteractionHelper::handleAuthenticationRequest(
ucb::AuthenticationRequest aAuthenticationRequest;
if (aAnyRequest >>= aAuthenticationRequest)
{
handleAuthenticationRequest_(getParentProperty(),
handleAuthenticationRequest_(Application::GetFrameWeld(xParent),
getInteractionHandler(),
m_xContext,
aAuthenticationRequest,
......
......@@ -35,29 +35,11 @@ using namespace com::sun::star;
LoginDialog::~LoginDialog()
{
disposeOnce();
}
void LoginDialog::dispose()
{
m_pErrorFT.clear();
m_pErrorInfo.clear();
m_pRequestInfo.clear();
m_pNameFT.clear();
m_pNameED.clear();
m_pPasswordFT.clear();
m_pPasswordED.clear();
m_pAccountFT.clear();
m_pAccountED.clear();
m_pSavePasswdBtn.clear();
m_pUseSysCredsCB.clear();
m_pOKBtn.clear();
ModalDialog::dispose();
}
void LoginDialog::SetPassword( const OUString& rNew )
{
m_pPasswordED->SetText( rNew );
m_xPasswordED->set_text( rNew );
SetRequest();
}
......@@ -65,138 +47,139 @@ void LoginDialog::HideControls_Impl( LoginFlags nFlags )
{
if ( nFlags & LoginFlags::NoUsername )
{
m_pNameFT->Hide();
m_pNameED->Hide();
m_xNameFT->hide();
m_xNameED->hide();
}
else if ( nFlags & LoginFlags::UsernameReadonly )
{
m_pNameED->Enable( false );
m_xNameED->set_sensitive( false );
}
if ( nFlags & LoginFlags::NoPassword )
{
m_pPasswordFT->Hide();
m_pPasswordED->Hide();
m_xPasswordFT->hide();
m_xPasswordED->hide();
}
if ( nFlags & LoginFlags::NoSavePassword )
m_pSavePasswdBtn->Hide();
m_xSavePasswdBtn->hide();
if ( nFlags & LoginFlags::NoErrorText )
{
m_pErrorInfo->Hide();
m_pErrorFT->Hide();
m_xErrorInfo->hide();
m_xErrorFT->hide();
}
if ( nFlags & LoginFlags::NoAccount )
{
m_pAccountFT->Hide();
m_pAccountED->Hide();
m_xAccountFT->hide();
m_xAccountED->hide();
}
if ( nFlags & LoginFlags::NoUseSysCreds )
{
m_pUseSysCredsCB->Hide();
m_xUseSysCredsCB->hide();
}
}
void LoginDialog::EnableUseSysCredsControls_Impl( bool bUseSysCredsEnabled )
void LoginDialog::EnableUseSysCredsControls_Impl( bool bUseSysCredsset_sensitived )
{
m_pErrorInfo->Enable( !bUseSysCredsEnabled );
m_pErrorFT->Enable( !bUseSysCredsEnabled );
m_pRequestInfo->Enable( !bUseSysCredsEnabled );
m_pNameFT->Enable( !bUseSysCredsEnabled );
m_pNameED->Enable( !bUseSysCredsEnabled );
m_pPasswordFT->Enable( !bUseSysCredsEnabled );
m_pPasswordED->Enable( !bUseSysCredsEnabled );
m_pAccountFT->Enable( !bUseSysCredsEnabled );
m_pAccountED->Enable( !bUseSysCredsEnabled );
m_xErrorInfo->set_sensitive( !bUseSysCredsset_sensitived );
m_xErrorFT->set_sensitive( !bUseSysCredsset_sensitived );
m_xRequestInfo->set_sensitive( !bUseSysCredsset_sensitived );
m_xNameFT->set_sensitive( !bUseSysCredsset_sensitived );
m_xNameED->set_sensitive( !bUseSysCredsset_sensitived );
m_xPasswordFT->set_sensitive( !bUseSysCredsset_sensitived );
m_xPasswordED->set_sensitive( !bUseSysCredsset_sensitived );
m_xAccountFT->set_sensitive( !bUseSysCredsset_sensitived );
m_xAccountED->set_sensitive( !bUseSysCredsset_sensitived );
}
void LoginDialog::SetRequest()
{
bool oldPwd = !m_pPasswordED->GetText().isEmpty();
bool oldPwd = !m_xPasswordED->get_text().isEmpty();
OUString aRequest;
if (m_pAccountFT->IsVisible() && !m_realm.isEmpty())
if (m_xAccountFT->get_visible() && !m_realm.isEmpty())
{
aRequest = get<FixedText>(oldPwd ? "wrongloginrealm" : "loginrealm")
->GetText();
std::unique_ptr<weld::Label> xText(m_xBuilder->weld_label(oldPwd ? "wrongloginrealm" : "loginrealm"));
aRequest = xText->get_label();
aRequest = aRequest.replaceAll("%2", m_realm);
}
else
aRequest = get<FixedText>(oldPwd ? "wrongrequestinfo" : "requestinfo")
->GetText();
{
std::unique_ptr<weld::Label> xText(m_xBuilder->weld_label(oldPwd ? "wrongrequestinfo" : "requestinfo"));
aRequest = xText->get_label();
}
aRequest = aRequest.replaceAll("%1", m_server);
m_pRequestInfo->SetText(aRequest);
m_xRequestInfo->set_label(aRequest);
}
IMPL_LINK_NOARG(LoginDialog, OKHdl_Impl, Button*, void)
IMPL_LINK_NOARG(LoginDialog, OKHdl_Impl, weld::Button&, void)
{
// trim the strings
m_pNameED->SetText(comphelper::string::strip(m_pNameED->GetText(), ' '));
m_pPasswordED->SetText(comphelper::string::strip(m_pPasswordED->GetText(), ' '));
EndDialog( RET_OK );
m_xNameED->set_text(comphelper::string::strip(m_xNameED->get_text(), ' '));
m_xPasswordED->set_text(comphelper::string::strip(m_xPasswordED->get_text(), ' '));
m_xDialog->response(RET_OK);
}
IMPL_LINK_NOARG(LoginDialog, UseSysCredsHdl_Impl, Button*, void)
IMPL_LINK_NOARG(LoginDialog, UseSysCredsHdl_Impl, weld::Button&, void)
{
EnableUseSysCredsControls_Impl( m_pUseSysCredsCB->IsChecked() );
EnableUseSysCredsControls_Impl( m_xUseSysCredsCB->get_active() );
}
LoginDialog::LoginDialog(vcl::Window* pParent, LoginFlags nFlags,
LoginDialog::LoginDialog(weld::Window* pParent, LoginFlags nFlags,
const OUString& rServer, const OUString& rRealm)
: ModalDialog(pParent, "LoginDialog", "uui/ui/logindialog.ui"),
m_server(rServer), m_realm(rRealm)
: GenericDialogController(pParent, "uui/ui/logindialog.ui", "LoginDialog")
, m_xErrorFT(m_xBuilder->weld_label("errorft"))
, m_xErrorInfo(m_xBuilder->weld_label("errorinfo"))
, m_xRequestInfo(m_xBuilder->weld_label("requestinfo"))
, m_xNameFT(m_xBuilder->weld_label("nameft"))
, m_xNameED(m_xBuilder->weld_entry("nameed"))
, m_xPasswordFT(m_xBuilder->weld_label("passwordft"))
, m_xPasswordED(m_xBuilder->weld_entry("passworded"))
, m_xAccountFT(m_xBuilder->weld_label("accountft"))
, m_xAccountED(m_xBuilder->weld_entry("accounted"))
, m_xSavePasswdBtn(m_xBuilder->weld_check_button("remember"))
, m_xUseSysCredsCB(m_xBuilder->weld_check_button("syscreds"))
, m_xOKBtn(m_xBuilder->weld_button("ok"))
, m_server(rServer), m_realm(rRealm)
{
get(m_pErrorFT, "errorft");
get(m_pErrorInfo, "errorinfo");
get(m_pRequestInfo, "requestinfo");
get(m_pNameFT, "nameft");
get(m_pNameED, "nameed");
get(m_pPasswordFT, "passwordft");
get(m_pPasswordED, "passworded");
get(m_pAccountFT, "accountft");
get(m_pAccountED, "accounted");
get(m_pSavePasswdBtn, "remember");
get(m_pUseSysCredsCB, "syscreds");
get(m_pOKBtn, "ok");
if ( !( nFlags & LoginFlags::NoUseSysCreds ) )
EnableUseSysCredsControls_Impl( m_pUseSysCredsCB->IsChecked() );
EnableUseSysCredsControls_Impl( m_xUseSysCredsCB->get_active() );
SetRequest();
m_pNameED->SetMaxTextLen( _MAX_PATH );
m_xNameED->set_max_length( _MAX_PATH );
m_pOKBtn->SetClickHdl( LINK( this, LoginDialog, OKHdl_Impl ) );
m_pUseSysCredsCB->SetClickHdl( LINK( this, LoginDialog, UseSysCredsHdl_Impl ) );
m_xOKBtn->connect_clicked( LINK( this, LoginDialog, OKHdl_Impl ) );
m_xUseSysCredsCB->connect_clicked( LINK( this, LoginDialog, UseSysCredsHdl_Impl ) );
HideControls_Impl( nFlags );
}
void LoginDialog::SetUseSystemCredentials( bool bUse )
{
if ( m_pUseSysCredsCB->IsVisible() )
if ( m_xUseSysCredsCB->get_visible() )
{
m_pUseSysCredsCB->Check( bUse );
m_xUseSysCredsCB->set_active( bUse );
EnableUseSysCredsControls_Impl( bUse );
}
}
void LoginDialog::ClearPassword()
{
m_pPasswordED->SetText( OUString() );
m_xPasswordED->set_text( OUString() );
if ( m_pNameED->GetText().isEmpty() )
m_pNameED->GrabFocus();
if ( m_xNameED->get_text().isEmpty() )
m_xNameED->grab_focus();
else
m_pPasswordED->GrabFocus();
m_xPasswordED->grab_focus();
}
void LoginDialog::ClearAccount()
{
m_pAccountED->SetText( OUString() );
m_pAccountED->GrabFocus();
m_xAccountED->set_text( OUString() );
m_xAccountED->grab_focus();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -20,10 +20,7 @@
#ifndef INCLUDED_UUI_SOURCE_LOGINDLG_HXX
#define INCLUDED_UUI_SOURCE_LOGINDLG_HXX
#include <vcl/button.hxx>
#include <vcl/dialog.hxx>
#include <vcl/edit.hxx>
#include <vcl/fixed.hxx>
#include <vcl/weld.hxx>
#include <o3tl/typed_flags_set.hxx>
......@@ -42,20 +39,20 @@ namespace o3tl {
}
class LoginDialog : public ModalDialog
class LoginDialog : public weld::GenericDialogController
{
VclPtr<FixedText> m_pErrorFT;
VclPtr<FixedText> m_pErrorInfo;
VclPtr<FixedText> m_pRequestInfo;
VclPtr<FixedText> m_pNameFT;
VclPtr<Edit> m_pNameED;
VclPtr<FixedText> m_pPasswordFT;
VclPtr<Edit> m_pPasswordED;
VclPtr<FixedText> m_pAccountFT;
VclPtr<Edit> m_pAccountED;
VclPtr<CheckBox> m_pSavePasswdBtn;
VclPtr<CheckBox> m_pUseSysCredsCB;
VclPtr<OKButton> m_pOKBtn;
std::unique_ptr<weld::Label> m_xErrorFT;
std::unique_ptr<weld::Label> m_xErrorInfo;
std::unique_ptr<weld::Label> m_xRequestInfo;
std::unique_ptr<weld::Label> m_xNameFT;
std::unique_ptr<weld::Entry> m_xNameED;
std::unique_ptr<weld::Label> m_xPasswordFT;
std::unique_ptr<weld::Entry> m_xPasswordED;
std::unique_ptr<weld::Label> m_xAccountFT;
std::unique_ptr<weld::Entry> m_xAccountED;
std::unique_ptr<weld::CheckButton> m_xSavePasswdBtn;
std::unique_ptr<weld::CheckButton> m_xUseSysCredsCB;
std::unique_ptr<weld::Button> m_xOKBtn;
OUString m_server;
OUString m_realm;
......@@ -63,26 +60,25 @@ class LoginDialog : public ModalDialog
void EnableUseSysCredsControls_Impl( bool bUseSysCredsEnabled );
void SetRequest();
DECL_LINK(OKHdl_Impl, Button*, void);
DECL_LINK(UseSysCredsHdl_Impl, Button*, void);
DECL_LINK(OKHdl_Impl, weld::Button&, void);
DECL_LINK(UseSysCredsHdl_Impl, weld::Button&, void);
public:
LoginDialog(vcl::Window* pParent, LoginFlags nFlags,
LoginDialog(weld::Window* pParent, LoginFlags nFlags,
const OUString& rServer, const OUString &rRealm);
virtual ~LoginDialog() override;
virtual void dispose() override;
OUString GetName() const { return m_pNameED->GetText(); }
void SetName( const OUString& rNewName ) { m_pNameED->SetText( rNewName ); }
OUString GetPassword() const { return m_pPasswordED->GetText(); }
OUString GetName() const { return m_xNameED->get_text(); }
void SetName( const OUString& rNewName ) { m_xNameED->set_text( rNewName ); }
OUString GetPassword() const { return m_xPasswordED->get_text(); }
void SetPassword( const OUString& rNew );
OUString GetAccount() const { return m_pAccountED->GetText(); }
bool IsSavePassword() const { return m_pSavePasswdBtn->IsChecked(); }
void SetSavePassword( bool bSave ) { m_pSavePasswdBtn->Check( bSave ); }
void SetSavePasswordText( const OUString& rTxt ) { m_pSavePasswdBtn->SetText( rTxt ); }
bool IsUseSystemCredentials() const { return m_pUseSysCredsCB->IsChecked(); }
OUString GetAccount() const { return m_xAccountED->get_text(); }
bool IsSavePassword() const { return m_xSavePasswdBtn->get_active(); }
void SetSavePassword( bool bSave ) { m_xSavePasswdBtn->set_active( bSave ); }
void SetSavePasswordText( const OUString& rTxt ) { m_xSavePasswdBtn->set_label( rTxt ); }
bool IsUseSystemCredentials() const { return m_xUseSysCredsCB->get_active(); }
void SetUseSystemCredentials( bool bUse );
void SetErrorText( const OUString& rTxt ) { m_pErrorInfo->SetText( rTxt ); }
void SetErrorText( const OUString& rTxt ) { m_xErrorInfo->set_label( rTxt ); }
void ClearPassword();
void ClearAccount();
};
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.20.4 -->
<interface domain="uui">
<requires lib="gtk+" version="3.18"/>
<object class="GtkDialog" id="LoginDialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="title" translatable="yes" context="logindialog|LoginDialog">Authentication Required</property>
<property name="modal">True</property>
<property name="default_width">0</property>
<property name="default_height">0</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
......@@ -112,6 +115,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="activates_default">True</property>
</object>
<packing>
<property name="left_attach">1</property>
......@@ -122,10 +126,10 @@
<object class="GtkLabel" id="accountft">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="logindialog|accountft">A_ccount:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">accounted</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -136,10 +140,10 @@
<object class="GtkLabel" id="passwordft">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="logindialog|passwordft">Pass_word:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">passworded</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -152,6 +156,7 @@
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
<property name="activates_default">True</property>
</object>
<packing>
<property name="left_attach">1</property>
......@@ -163,6 +168,7 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="activates_default">True</property>
</object>
<packing>
<property name="left_attach">1</property>
......@@ -173,10 +179,10 @@
<object class="GtkLabel" id="nameft">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="logindialog|nameft">_User name:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">nameed</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -187,9 +193,9 @@
<object class="GtkLabel" id="loginrealm">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="logindialog|loginrealm">Enter user name and password for:
“%2” on %1</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -201,9 +207,9 @@
<object class="GtkLabel" id="wrongloginrealm">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="logindialog|wrongloginrealm">Wrong user name and password for:
“%2” on %1</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -215,9 +221,9 @@
<object class="GtkLabel" id="wrongrequestinfo">
<property name="can_focus">False</property>
<property name="no_show_all">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="logindialog|wrongrequestinfo">Wrong user name and password for:
%1</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -229,9 +235,9 @@
<object class="GtkLabel" id="requestinfo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="logindialog|requestinfo">Enter user name and password for:
%1</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -243,10 +249,10 @@
<object class="GtkLabel" id="errorft">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="logindialog|errorft">Message from server:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">errorinfo</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -258,9 +264,9 @@
<object class="GtkLabel" id="errorinfo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="wrap">True</property>
<property name="width_chars">56</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -268,6 +274,12 @@
<property name="width">2</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
......@@ -282,5 +294,8 @@
<action-widget response="-6">cancel</action-widget>
<action-widget response="-11">help</action-widget>
</action-widgets>
<child>
<placeholder/>
</child>
</object>
</interface>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment