diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-03-16 16:07:22 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-03-16 21:31:59 +0100 |
commit | d2f95590f478a68a4de6ef05018785523e46506b (patch) | |
tree | 97bdacb7ee8c28ee5f9981733c9740be6b07cb96 | |
parent | 975a8164e05a437ec8b51a506989b0bd617854b8 (diff) |
Related: tdf#115964 convert the problematic dialog to a native gtk3 one
Change-Id: I84e10f1c45dfbe267f9b350d74271ac149bdaf43
Reviewed-on: https://gerrit.libreoffice.org/51432
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | uui/source/iahndl-authentication.cxx | 12 | ||||
-rw-r--r-- | uui/source/passworddlg.cxx | 74 | ||||
-rw-r--r-- | uui/source/passworddlg.hxx | 27 | ||||
-rw-r--r-- | uui/uiconfig/ui/password.ui | 15 |
4 files changed, 56 insertions, 72 deletions
diff --git a/uui/source/iahndl-authentication.cxx b/uui/source/iahndl-authentication.cxx index 12ed4ed7aff9..2d4d5362f169 100644 --- a/uui/source/iahndl-authentication.cxx +++ b/uui/source/iahndl-authentication.cxx @@ -518,11 +518,11 @@ executePasswordDialog( { if (bIsSimplePasswordRequest) { - ScopedVclPtrInstance<PasswordDialog> xDialog(pParent, nMode, aResLocale, aDocName, - bIsPasswordToModify, bIsSimplePasswordRequest); + std::unique_ptr<PasswordDialog> xDialog(new PasswordDialog(pParent ? pParent->GetFrameWeld() : nullptr, nMode, + aResLocale, aDocName, bIsPasswordToModify, bIsSimplePasswordRequest)); xDialog->SetMinLen(0); - rInfo.SetResult(xDialog->Execute() == RET_OK ? DialogMask::ButtonsOk : DialogMask::ButtonsCancel); + rInfo.SetResult(xDialog->run() == RET_OK ? DialogMask::ButtonsOk : DialogMask::ButtonsCancel); rInfo.SetPassword(xDialog->GetPassword()); } else @@ -541,11 +541,11 @@ executePasswordDialog( } else // enter password or reenter password { - ScopedVclPtrInstance<PasswordDialog> xDialog(pParent, nMode, aResLocale, aDocName, - bIsPasswordToModify, bIsSimplePasswordRequest); + std::unique_ptr<PasswordDialog> xDialog(new PasswordDialog(pParent ? pParent->GetFrameWeld() : nullptr, nMode, + aResLocale, aDocName, bIsPasswordToModify, bIsSimplePasswordRequest)); xDialog->SetMinLen(0); - rInfo.SetResult(xDialog->Execute() == RET_OK ? DialogMask::ButtonsOk : DialogMask::ButtonsCancel); + rInfo.SetResult(xDialog->run() == RET_OK ? DialogMask::ButtonsOk : DialogMask::ButtonsCancel); rInfo.SetPassword(bIsPasswordToModify ? OUString() : xDialog->GetPassword()); rInfo.SetPasswordToModify(bIsPasswordToModify ? xDialog->GetPassword() : OUString()); } diff --git a/uui/source/passworddlg.cxx b/uui/source/passworddlg.cxx index eec9540de9a8..14cb63446eae 100644 --- a/uui/source/passworddlg.cxx +++ b/uui/source/passworddlg.cxx @@ -27,100 +27,84 @@ using namespace ::com::sun::star; -PasswordDialog::PasswordDialog(vcl::Window* _pParent, +PasswordDialog::PasswordDialog(weld::Window* pParent, task::PasswordRequestMode nDlgMode, const std::locale& rLocale, const OUString& aDocURL, bool bOpenToModify, bool bIsSimplePasswordRequest) - : ModalDialog(_pParent, "PasswordDialog", "uui/ui/password.ui") + : GenericDialogController(pParent, "uui/ui/password.ui", "PasswordDialog") + , m_xFTPassword(m_xBuilder->weld_label("newpassFT")) + , m_xEDPassword(m_xBuilder->weld_entry("newpassEntry")) + , m_xFTConfirmPassword(m_xBuilder->weld_label("confirmpassFT")) + , m_xEDConfirmPassword(m_xBuilder->weld_entry("confirmpassEntry")) + , m_xOKBtn(m_xBuilder->weld_button("ok")) , nMinLen(1) , aPasswdMismatch(Translate::get(STR_PASSWORD_MISMATCH, rLocale)) , nDialogMode(nDlgMode) , rResLocale(rLocale) { - get(m_pFTPassword, "newpassFT"); - get(m_pEDPassword, "newpassEntry"); - get(m_pFTConfirmPassword, "confirmpassFT"); - get(m_pEDConfirmPassword, "confirmpassEntry"); - get(m_pOKBtn, "ok"); - if( nDialogMode == task::PasswordRequestMode_PASSWORD_REENTER ) { const char* pOpenToModifyErrStrId = bOpenToModify ? STR_ERROR_PASSWORD_TO_MODIFY_WRONG : STR_ERROR_PASSWORD_TO_OPEN_WRONG; const char* pErrStrId = bIsSimplePasswordRequest ? STR_ERROR_SIMPLE_PASSWORD_WRONG : pOpenToModifyErrStrId; OUString aErrorMsg(Translate::get(pErrStrId, rResLocale)); - std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(_pParent ? _pParent->GetFrameWeld() : nullptr, + std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(pParent, VclMessageType::Warning, VclButtonsType::Ok, aErrorMsg)); xBox->run(); } // default settings for enter password or reenter passwd... OUString aTitle(Translate::get(STR_TITLE_ENTER_PASSWORD, rResLocale)); - m_pFTConfirmPassword->Hide(); - m_pEDConfirmPassword->Hide(); - m_pFTConfirmPassword->Enable( false ); - m_pEDConfirmPassword->Enable( false ); + m_xFTConfirmPassword->hide(); + m_xEDConfirmPassword->hide(); + m_xFTConfirmPassword->set_sensitive(false); + m_xEDConfirmPassword->set_sensitive(false); // settings for create password if (nDialogMode == task::PasswordRequestMode_PASSWORD_CREATE) { aTitle = Translate::get(STR_TITLE_CREATE_PASSWORD, rResLocale); - m_pFTConfirmPassword->SetText(Translate::get(STR_CONFIRM_SIMPLE_PASSWORD, rResLocale)); + m_xFTConfirmPassword->set_label(Translate::get(STR_CONFIRM_SIMPLE_PASSWORD, rResLocale)); - m_pFTConfirmPassword->Show(); - m_pEDConfirmPassword->Show(); - m_pFTConfirmPassword->Enable(); - m_pEDConfirmPassword->Enable(); + m_xFTConfirmPassword->show(); + m_xEDConfirmPassword->show(); + m_xFTConfirmPassword->set_sensitive(true); + m_xEDConfirmPassword->set_sensitive(true); } - SetText( aTitle ); + m_xDialog->set_title(aTitle); const char* pStrId = bOpenToModify ? STR_ENTER_PASSWORD_TO_MODIFY : STR_ENTER_PASSWORD_TO_OPEN; OUString aMessage(Translate::get(pStrId, rResLocale)); INetURLObject url(aDocURL); aMessage += url.HasError() ? aDocURL : url.GetMainURL(INetURLObject::DecodeMechanism::Unambiguous); - m_pFTPassword->SetText(aMessage); + m_xFTPassword->set_label(aMessage); if (bIsSimplePasswordRequest) { DBG_ASSERT( aDocURL.isEmpty(), "A simple password request should not have a document URL! Use document password request instead." ); - m_pFTPassword->SetText(Translate::get(STR_ENTER_SIMPLE_PASSWORD, rResLocale)); + m_xFTPassword->set_label(Translate::get(STR_ENTER_SIMPLE_PASSWORD, rResLocale)); } - m_pOKBtn->SetClickHdl( LINK( this, PasswordDialog, OKHdl_Impl ) ); -} - -PasswordDialog::~PasswordDialog() -{ - disposeOnce(); -} - -void PasswordDialog::dispose() -{ - m_pFTPassword.clear(); - m_pEDPassword.clear(); - m_pFTConfirmPassword.clear(); - m_pEDConfirmPassword.clear(); - m_pOKBtn.clear(); - ModalDialog::dispose(); + m_xOKBtn->connect_clicked(LINK(this, PasswordDialog, OKHdl_Impl)); } -IMPL_LINK_NOARG(PasswordDialog, OKHdl_Impl, Button*, void) +IMPL_LINK_NOARG(PasswordDialog, OKHdl_Impl, weld::Button&, void) { - bool bEDPasswdValid = m_pEDPassword->GetText().getLength() >= nMinLen; - bool bPasswdMismatch = m_pEDConfirmPassword->GetText() != m_pEDPassword->GetText(); - bool bValid = (!m_pEDConfirmPassword->IsVisible() && bEDPasswdValid) || - (m_pEDConfirmPassword->IsVisible() && bEDPasswdValid && !bPasswdMismatch); + bool bEDPasswdValid = m_xEDPassword->get_text().getLength() >= nMinLen; + bool bPasswdMismatch = m_xEDConfirmPassword->get_text() != m_xEDPassword->get_text(); + bool bValid = (!m_xEDConfirmPassword->get_visible() && bEDPasswdValid) || + (m_xEDConfirmPassword->get_visible() && bEDPasswdValid && !bPasswdMismatch); - if (m_pEDConfirmPassword->IsVisible() && bPasswdMismatch) + if (m_xEDConfirmPassword->get_visible() && bPasswdMismatch) { - std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(GetFrameWeld(), + std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(m_xDialog.get(), VclMessageType::Warning, VclButtonsType::Ok, aPasswdMismatch)); xBox->run(); } else if (bValid) - EndDialog( RET_OK ); + m_xDialog->response(RET_OK); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uui/source/passworddlg.hxx b/uui/source/passworddlg.hxx index fc067db250ba..bf865b0e8f17 100644 --- a/uui/source/passworddlg.hxx +++ b/uui/source/passworddlg.hxx @@ -21,34 +21,27 @@ #define INCLUDED_UUI_SOURCE_PASSWORDDLG_HXX #include <com/sun/star/task/PasswordRequestMode.hpp> -#include <vcl/button.hxx> -#include <vcl/dialog.hxx> -#include <vcl/edit.hxx> -#include <vcl/group.hxx> -#include <vcl/fixed.hxx> +#include <vcl/weld.hxx> - -class PasswordDialog : public ModalDialog +class PasswordDialog : public weld::GenericDialogController { - VclPtr<FixedText> m_pFTPassword; - VclPtr<Edit> m_pEDPassword; - VclPtr<FixedText> m_pFTConfirmPassword; - VclPtr<Edit> m_pEDConfirmPassword; - VclPtr<OKButton> m_pOKBtn; + std::unique_ptr<weld::Label> m_xFTPassword; + std::unique_ptr<weld::Entry> m_xEDPassword; + std::unique_ptr<weld::Label> m_xFTConfirmPassword; + std::unique_ptr<weld::Entry> m_xEDConfirmPassword; + std::unique_ptr<weld::Button> m_xOKBtn; sal_uInt16 nMinLen; OUString aPasswdMismatch; - DECL_LINK(OKHdl_Impl, Button*, void); + DECL_LINK(OKHdl_Impl, weld::Button&, void); public: - PasswordDialog(vcl::Window* pParent, css::task::PasswordRequestMode nDlgMode, const std::locale& rLocale, const OUString& aDocURL, + PasswordDialog(weld::Window* pParent, css::task::PasswordRequestMode nDlgMode, const std::locale& rLocale, const OUString& aDocURL, bool bOpenToModify, bool bIsSimplePasswordRequest); - virtual ~PasswordDialog() override; - virtual void dispose() override; void SetMinLen( sal_uInt16 nMin ) { nMinLen = nMin; } - OUString GetPassword() const { return m_pEDPassword->GetText(); } + OUString GetPassword() const { return m_xEDPassword->get_text(); } private: css::task::PasswordRequestMode nDialogMode; diff --git a/uui/uiconfig/ui/password.ui b/uui/uiconfig/ui/password.ui index 22149b7edd19..ea574d0693c2 100644 --- a/uui/uiconfig/ui/password.ui +++ b/uui/uiconfig/ui/password.ui @@ -1,11 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.3 --> +<!-- Generated with glade 3.20.2 --> <interface domain="uui"> <requires lib="gtk+" version="3.18"/> <object class="GtkDialog" id="PasswordDialog"> <property name="can_focus">False</property> <property name="border_width">6</property> <property name="title" translatable="yes" context="password|PasswordDialog">Set 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 internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> @@ -80,9 +83,9 @@ <object class="GtkLabel" id="confirmpassFT"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</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> @@ -93,9 +96,9 @@ <object class="GtkLabel" id="newpassFT"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</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> @@ -108,6 +111,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">0</property> @@ -120,6 +124,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">0</property> @@ -136,10 +141,12 @@ </object> </child> <action-widgets> - <action-widget response="-5">ok</action-widget> <action-widget response="-6">cancel</action-widget> <action-widget response="-11">help</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> <object class="GtkSizeGroup" id="sizegroup1"/> </interface> |