Kaydet (Commit) 0e4f93e8 authored tarafından Caolán McNamara's avatar Caolán McNamara

weld ScRetypePassInputDlg

Change-Id: Ie57f3fdaeed5b15f2ce7a1825debdc92788b4e94
Reviewed-on: https://gerrit.libreoffice.org/54343Tested-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 bff67514
......@@ -26,6 +26,7 @@
#include <vcl/fixed.hxx>
#include <vcl/layout.hxx>
#include <vcl/scrbar.hxx>
#include <vcl/weld.hxx>
#include <svx/checklbx.hxx>
#include <tabprotection.hxx>
......@@ -96,13 +97,12 @@ private:
ScPasswordHash meDesiredHash;
};
class ScRetypePassInputDlg : public ModalDialog
class ScRetypePassInputDlg : public weld::GenericDialogController
{
public:
ScRetypePassInputDlg() = delete;
explicit ScRetypePassInputDlg(vcl::Window* pParent, ScPassHashProtectable* pProtected);
explicit ScRetypePassInputDlg(weld::Window* pParent, ScPassHashProtectable* pProtected);
virtual ~ScRetypePassInputDlg() override;
virtual void dispose() override;
bool IsRemovePassword() const;
OUString GetNewPassword() const;
......@@ -112,24 +112,24 @@ private:
void CheckPasswordInput();
private:
VclPtr<OKButton> m_pBtnOk;
ScPassHashProtectable* m_pProtected;
VclPtr<RadioButton> m_pBtnRetypePassword;
std::unique_ptr<weld::Button> m_xBtnOk;
VclPtr<VclContainer> m_pPasswordGrid;
VclPtr<Edit> m_pPassword1Edit;
VclPtr<Edit> m_pPassword2Edit;
std::unique_ptr<weld::RadioButton> m_xBtnRetypePassword;
VclPtr<CheckBox> m_pBtnMatchOldPass;
std::unique_ptr<weld::Widget> m_xPasswordGrid;
std::unique_ptr<weld::Entry> m_xPassword1Edit;
std::unique_ptr<weld::Entry> m_xPassword2Edit;
VclPtr<RadioButton> m_pBtnRemovePassword;
std::unique_ptr<weld::CheckButton> m_xBtnMatchOldPass;
DECL_LINK( OKHdl, Button*, void );
DECL_LINK( RadioBtnHdl, Button*, void );
DECL_LINK( CheckBoxHdl, Button*, void );
DECL_LINK( PasswordModifyHdl, Edit&, void );
std::unique_ptr<weld::RadioButton> m_xBtnRemovePassword;
ScPassHashProtectable* mpProtected;
DECL_LINK( OKHdl, weld::Button&, void );
DECL_LINK( RadioBtnHdl, weld::ToggleButton&, void );
DECL_LINK( CheckBoxHdl, weld::ToggleButton&, void );
DECL_LINK( PasswordModifyHdl, weld::Entry&, void );
};
#endif
......
......@@ -287,11 +287,11 @@ IMPL_LINK( ScRetypePassDlg, RetypeBtnHdl, Button*, pBtn, void )
// What the ... !?
return;
ScopedVclPtrInstance< ScRetypePassInputDlg > aDlg(this, pProtected);
if (aDlg->Execute() == RET_OK)
ScRetypePassInputDlg aDlg(GetFrameWeld(), pProtected);
if (aDlg.run() == RET_OK)
{
// OK is pressed. Update the protected item.
if (aDlg->IsRemovePassword())
if (aDlg.IsRemovePassword())
{
// Remove password from this item.
pProtected->setPassword(OUString());
......@@ -299,7 +299,7 @@ IMPL_LINK( ScRetypePassDlg, RetypeBtnHdl, Button*, pBtn, void )
else
{
// Set a new password.
OUString aNewPass = aDlg->GetNewPassword();
OUString aNewPass = aDlg.GetNewPassword();
pProtected->setPassword(aNewPass);
}
......@@ -308,131 +308,111 @@ IMPL_LINK( ScRetypePassDlg, RetypeBtnHdl, Button*, pBtn, void )
}
}
ScRetypePassInputDlg::ScRetypePassInputDlg(vcl::Window* pParent, ScPassHashProtectable* pProtected)
: ModalDialog(pParent, "RetypePasswordDialog",
"modules/scalc/ui/retypepassworddialog.ui")
, mpProtected(pProtected)
ScRetypePassInputDlg::ScRetypePassInputDlg(weld::Window* pParent, ScPassHashProtectable* pProtected)
: GenericDialogController(pParent, "modules/scalc/ui/retypepassworddialog.ui", "RetypePasswordDialog")
, m_pProtected(pProtected)
, m_xBtnOk(m_xBuilder->weld_button("ok"))
, m_xBtnRetypePassword(m_xBuilder->weld_radio_button("retypepassword"))
, m_xPasswordGrid(m_xBuilder->weld_widget("passwordgrid"))
, m_xPassword1Edit(m_xBuilder->weld_entry("newpassEntry"))
, m_xPassword2Edit(m_xBuilder->weld_entry("confirmpassEntry"))
, m_xBtnMatchOldPass(m_xBuilder->weld_check_button("mustmatch"))
, m_xBtnRemovePassword(m_xBuilder->weld_radio_button("removepassword"))
{
get(m_pBtnOk, "ok");
get(m_pBtnRetypePassword, "retypepassword");
get(m_pBtnRemovePassword, "removepassword");
get(m_pPasswordGrid, "passwordgrid");
get(m_pPassword1Edit, "newpassEntry");
get(m_pPassword2Edit, "confirmpassEntry");
get(m_pBtnMatchOldPass, "mustmatch");
Init();
}
ScRetypePassInputDlg::~ScRetypePassInputDlg()
{
disposeOnce();
}
void ScRetypePassInputDlg::dispose()
{
m_pBtnOk.clear();
m_pBtnRetypePassword.clear();
m_pPasswordGrid.clear();
m_pPassword1Edit.clear();
m_pPassword2Edit.clear();
m_pBtnMatchOldPass.clear();
m_pBtnRemovePassword.clear();
ModalDialog::dispose();
}
bool ScRetypePassInputDlg::IsRemovePassword() const
{
return m_pBtnRemovePassword->IsChecked();
return m_xBtnRemovePassword->get_active();
}
OUString ScRetypePassInputDlg::GetNewPassword() const
{
return m_pPassword1Edit->GetText();
return m_xPassword1Edit->get_text();
}
void ScRetypePassInputDlg::Init()
{
Link<Button*,void> aLink = LINK( this, ScRetypePassInputDlg, OKHdl );
m_pBtnOk->SetClickHdl(aLink);
aLink = LINK( this, ScRetypePassInputDlg, RadioBtnHdl );
m_pBtnRetypePassword->SetClickHdl(aLink);
m_pBtnRemovePassword->SetClickHdl(aLink);
aLink = LINK( this, ScRetypePassInputDlg, CheckBoxHdl );
m_pBtnMatchOldPass->SetClickHdl(aLink);
Link<Edit&,void> aLink2 = LINK( this, ScRetypePassInputDlg, PasswordModifyHdl );
m_pPassword1Edit->SetModifyHdl(aLink2);
m_pPassword2Edit->SetModifyHdl(aLink2);
m_pBtnOk->Disable();
m_pBtnRetypePassword->Check();
m_pBtnMatchOldPass->Check();
m_pPassword1Edit->GrabFocus();
m_xBtnOk->connect_clicked(LINK(this, ScRetypePassInputDlg, OKHdl));
m_xBtnRetypePassword->connect_toggled(LINK(this, ScRetypePassInputDlg, RadioBtnHdl));
m_xBtnRemovePassword->connect_toggled(LINK(this, ScRetypePassInputDlg, RadioBtnHdl));
m_xBtnMatchOldPass->connect_toggled(LINK(this, ScRetypePassInputDlg, CheckBoxHdl));
Link<weld::Entry&,void> aLink2 = LINK( this, ScRetypePassInputDlg, PasswordModifyHdl );
m_xPassword1Edit->connect_changed(aLink2);
m_xPassword2Edit->connect_changed(aLink2);
m_xBtnOk->set_sensitive(false);
m_xBtnRetypePassword->set_active(true);
m_xBtnMatchOldPass->set_active(true);
m_xPassword1Edit->grab_focus();
}
void ScRetypePassInputDlg::CheckPasswordInput()
{
OUString aPass1 = m_pPassword1Edit->GetText();
OUString aPass2 = m_pPassword2Edit->GetText();
OUString aPass1 = m_xPassword1Edit->get_text();
OUString aPass2 = m_xPassword2Edit->get_text();
if (aPass1.isEmpty() || aPass2.isEmpty())
{
// Empty password is not allowed.
m_pBtnOk->Disable();
m_xBtnOk->set_sensitive(false);
return;
}
if (aPass1 != aPass2)
{
// The two passwords differ.
m_pBtnOk->Disable();
m_xBtnOk->set_sensitive(false);
return;
}
if (!m_pBtnMatchOldPass->IsChecked())
if (!m_xBtnMatchOldPass->get_active())
{
m_pBtnOk->Enable();
m_xBtnOk->set_sensitive(true);
return;
}
if (!mpProtected)
if (!m_pProtected)
{
// This should never happen!
m_pBtnOk->Disable();
m_xBtnOk->set_sensitive(false);
return;
}
bool bPassGood = mpProtected->verifyPassword(aPass1);
m_pBtnOk->Enable(bPassGood);
bool bPassGood = m_pProtected->verifyPassword(aPass1);
m_xBtnOk->set_sensitive(bPassGood);
}
IMPL_LINK_NOARG(ScRetypePassInputDlg, OKHdl, Button*, void)
IMPL_LINK_NOARG(ScRetypePassInputDlg, OKHdl, weld::Button&, void)
{
EndDialog(RET_OK);
m_xDialog->response(RET_OK);
}
IMPL_LINK( ScRetypePassInputDlg, RadioBtnHdl, Button*, pBtn, void )
IMPL_LINK_NOARG(ScRetypePassInputDlg, RadioBtnHdl, weld::ToggleButton&, void)
{
if (pBtn == m_pBtnRetypePassword)
if (m_xBtnRetypePassword->get_active())
{
m_pBtnRemovePassword->Check(false);
m_pPasswordGrid->Enable();
m_xPasswordGrid->set_sensitive(true);
CheckPasswordInput();
}
else if (pBtn == m_pBtnRemovePassword)
else
{
m_pBtnRetypePassword->Check(false);
m_pPasswordGrid->Disable();
m_pBtnOk->Enable();
m_xPasswordGrid->set_sensitive(false);
m_xBtnOk->set_sensitive(false);
}
}
IMPL_LINK_NOARG(ScRetypePassInputDlg, CheckBoxHdl, Button*, void)
IMPL_LINK_NOARG(ScRetypePassInputDlg, CheckBoxHdl, weld::ToggleButton&, void)
{
CheckPasswordInput();
}
IMPL_LINK_NOARG(ScRetypePassInputDlg, PasswordModifyHdl, Edit&, void)
IMPL_LINK_NOARG(ScRetypePassInputDlg, PasswordModifyHdl, weld::Entry&, void)
{
CheckPasswordInput();
}
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="sc">
<requires lib="gtk+" version="3.18"/>
<object class="GtkDialog" id="RetypePasswordDialog">
<property name="can_focus">False</property>
<property name="border_width">6</property>
<property name="title" translatable="yes" context="retypepassworddialog|RetypePasswordDialog">Re-type Password</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>
<placeholder/>
</child>
<child internal-child="vbox">
<object class="GtkBox" id="dialog-vbox1">
<property name="can_focus">False</property>
......@@ -86,7 +92,6 @@
<property name="xalign">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<property name="group">removepassword</property>
</object>
<packing>
<property name="expand">False</property>
......@@ -114,6 +119,8 @@
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
<property name="activates_default">True</property>
<property name="input_purpose">password</property>
</object>
<packing>
<property name="left_attach">1</property>
......@@ -126,6 +133,8 @@
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="visibility">False</property>
<property name="activates_default">True</property>
<property name="input_purpose">password</property>
</object>
<packing>
<property name="left_attach">1</property>
......@@ -136,10 +145,10 @@
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="retypepassworddialog|label4">Pa_ssword:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">newpassEntry</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......@@ -150,10 +159,10 @@
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="retypepassworddialog|label5">Confi_rm:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">confirmpassEntry</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
......
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