summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-03-16 16:07:22 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-03-16 21:31:59 +0100
commitd2f95590f478a68a4de6ef05018785523e46506b (patch)
tree97bdacb7ee8c28ee5f9981733c9740be6b07cb96
parent975a8164e05a437ec8b51a506989b0bd617854b8 (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.cxx12
-rw-r--r--uui/source/passworddlg.cxx74
-rw-r--r--uui/source/passworddlg.hxx27
-rw-r--r--uui/uiconfig/ui/password.ui15
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>