diff options
author | Muhammet Kara <muhammet.kara@collabora.com> | 2019-08-23 13:56:47 +0300 |
---|---|---|
committer | Muhammet Kara <muhammet.kara@collabora.com> | 2019-08-23 21:34:54 +0200 |
commit | 0cb4b06798975735ee812ad6ca20e3d8c5cc4ca8 (patch) | |
tree | 772f363f0071ddfe930b3b760247820aa97c1ab4 | |
parent | AutoRedaction: Adapt Save & DeleteHdl (diff) | |
download | core-0cb4b06798975735ee812ad6ca20e3d8c5cc4ca8.tar.gz core-0cb4b06798975735ee812ad6ca20e3d8c5cc4ca8.zip |
AutoRedaction: Adapt AddHdl
[NO-FORWARD-PORT]
Change-Id: Id33ee13d8342c862bd063e2345cb14805b950e37
Reviewed-on: https://gerrit.libreoffice.org/78038
Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
Tested-by: Muhammet Kara <muhammet.kara@collabora.com>
-rw-r--r-- | sfx2/inc/autoredactdialog.hxx | 41 | ||||
-rw-r--r-- | sfx2/source/doc/autoredactdialog.cxx | 228 |
2 files changed, 138 insertions, 131 deletions
diff --git a/sfx2/inc/autoredactdialog.hxx b/sfx2/inc/autoredactdialog.hxx index 9399ba530a80..5af176a6f7ce 100644 --- a/sfx2/inc/autoredactdialog.hxx +++ b/sfx2/inc/autoredactdialog.hxx @@ -83,8 +83,8 @@ class SFX2_DLLPUBLIC SfxAutoRedactDialog : public SfxModalDialog DECL_LINK(Load, Button*, void); DECL_LINK(Save, Button*, void); - /*DECL_LINK(AddHdl, Button*, void); - DECL_LINK(EditHdl, Button*, void);*/ + DECL_LINK(AddHdl, Button*, void); + //DECL_LINK(EditHdl, Button*, void); DECL_LINK(DeleteHdl, Button*, void); DECL_LINK(LoadHdl, sfx2::FileDialogHelper*, void); @@ -113,35 +113,34 @@ public: bool getTargets(std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets); }; -/*class SfxAddTargetDialog : public weld::GenericDialogController +class SfxAddTargetDialog : public SfxModalDialog { private: - std::unique_ptr<weld::Entry> m_xName; - std::unique_ptr<weld::ComboBox> m_xType; - std::unique_ptr<weld::Label> m_xLabelContent; - std::unique_ptr<weld::Entry> m_xContent; - std::unique_ptr<weld::Label> m_xLabelPredefContent; - std::unique_ptr<weld::ComboBox> m_xPredefContent; - std::unique_ptr<weld::CheckButton> m_xCaseSensitive; - std::unique_ptr<weld::CheckButton> m_xWholeWords; + VclPtr<Edit> m_pName; + VclPtr<ListBox> m_pType; + VclPtr<FixedText> m_pLabelContent; + VclPtr<Edit> m_pContent; + VclPtr<FixedText> m_pLabelPredefContent; + VclPtr<ListBox> m_pPredefContent; + VclPtr<CheckBox> m_pCaseSensitive; + VclPtr<CheckBox> m_pWholeWords; - DECL_LINK(SelectTypeHdl, weld::ComboBox&, void); + DECL_LINK(SelectTypeHdl, ListBox&, void); public: - SfxAddTargetDialog(weld::Window* pWindow, const OUString& rName); - SfxAddTargetDialog(weld::Window* pWindow, const OUString& sName, + SfxAddTargetDialog(vcl::Window* pWindow, const OUString& rName); + SfxAddTargetDialog(vcl::Window* pWindow, const OUString& sName, const RedactionTargetType& eTargetType, const OUString& sContent, const bool& bCaseSensitive, const bool& bWholeWords); + virtual ~SfxAddTargetDialog() override; + virtual void dispose() override; - OUString getName() const { return m_xName->get_text(); } + OUString getName() const { return m_pName->GetText(); } RedactionTargetType getType() const; OUString getContent() const; - bool isCaseSensitive() const - { - return m_xCaseSensitive->get_state() == TriState::TRISTATE_TRUE; - } - bool isWholeWords() const { return m_xWholeWords->get_state() == TriState::TRISTATE_TRUE; } -};*/ + bool isCaseSensitive() const { return m_pCaseSensitive->GetState() == TriState::TRISTATE_TRUE; } + bool isWholeWords() const { return m_pWholeWords->GetState() == TriState::TRISTATE_TRUE; } +}; #endif diff --git a/sfx2/source/doc/autoredactdialog.cxx b/sfx2/source/doc/autoredactdialog.cxx index 0bfe244e760f..040fb3a9dacc 100644 --- a/sfx2/source/doc/autoredactdialog.cxx +++ b/sfx2/source/doc/autoredactdialog.cxx @@ -31,6 +31,7 @@ #include <tools/urlobj.hxx> #include <unotools/viewoptions.hxx> #include <vcl/msgbox.hxx> +#include <vcl/lstbox.hxx> #include <svtools/treelistentry.hxx> @@ -95,28 +96,28 @@ OUString getTypeName(RedactionTargetType nType) } /// Returns TypeID to be used in the add/edit target dialog -/*OUString getTypeID(RedactionTargetType nType) +sal_Int32 getTypeID(RedactionTargetType nType) { - OUString sTypeID("unknown"); + sal_Int32 nTypeID(-1); switch (nType) { case RedactionTargetType::REDACTION_TARGET_TEXT: - sTypeID = "text"; + nTypeID = 0; break; case RedactionTargetType::REDACTION_TARGET_REGEX: - sTypeID = "regex"; + nTypeID = 1; break; case RedactionTargetType::REDACTION_TARGET_PREDEFINED: - sTypeID = "predefined"; + nTypeID = 2; break; case RedactionTargetType::REDACTION_TARGET_UNKNOWN: - sTypeID = "unknown"; + nTypeID = -1; break; } - return sTypeID; -}*/ + return nTypeID; +} } void TargetsTable::InsertTarget(RedactionTarget* pTarget) @@ -220,17 +221,17 @@ IMPL_LINK_NOARG(SfxAutoRedactDialog, Save, Button*, void) StartFileDialog(StartFileDialogType::SaveAs, "Save Targets"); } -/*IMPL_LINK_NOARG(SfxAutoRedactDialog, AddHdl, Button*, void) +IMPL_LINK_NOARG(SfxAutoRedactDialog, AddHdl, Button*, void) { // Open the Add Target dialog, craete a new target and insert into the targets vector and the listbox - SfxAddTargetDialog aAddTargetDialog(getDialog(), m_xTargetsBox->GetNameProposal()); + SfxAddTargetDialog aAddTargetDialog(this, m_pTargetsBox->GetNameProposal()); bool bIncomplete; do { bIncomplete = false; - if (aAddTargetDialog.run() != RET_OK) + if (aAddTargetDialog.Execute() != RET_OK) return; if (aAddTargetDialog.getName().isEmpty() @@ -238,18 +239,15 @@ IMPL_LINK_NOARG(SfxAutoRedactDialog, Save, Button*, void) || aAddTargetDialog.getContent().isEmpty()) { bIncomplete = true; - std::unique_ptr<weld::MessageDialog> xBox( - Application::CreateMessageDialog(getDialog(), VclMessageType::Warning, - VclButtonsType::Ok, "All fields are required")); - xBox->run(); + ScopedVclPtrInstance<WarningBox>(this, MessBoxStyle::Ok, "All fields are required") + ->Execute(); } - else if (m_xTargetsBox->GetTargetByName(aAddTargetDialog.getName())) + else if (m_pTargetsBox->GetTargetByName(aAddTargetDialog.getName())) { bIncomplete = true; - std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog( - getDialog(), VclMessageType::Warning, VclButtonsType::Ok, - "There is already a target with this name")); - xBox->run(); + ScopedVclPtrInstance<WarningBox>(this, MessBoxStyle::Ok, + "There is already a target with this name") + ->Execute(); } } while (bIncomplete); @@ -259,23 +257,10 @@ IMPL_LINK_NOARG(SfxAutoRedactDialog, Save, Button*, void) { aAddTargetDialog.getName(), aAddTargetDialog.getType(), aAddTargetDialog.getContent(), aAddTargetDialog.isCaseSensitive(), aAddTargetDialog.isWholeWords(), 0 }); - // Only the visual/display part - m_xTargetsBox->InsertTarget(redactiontarget); - - // Actually add to the targets vector - if (m_xTargetsBox->GetTargetByName(redactiontarget->sName)) - m_aTableTargets.emplace_back(redactiontarget, redactiontarget->sName); - else - { - std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog( - getDialog(), VclMessageType::Warning, VclButtonsType::Ok, - "An error occured while adding new target. Please report this incidence.")); - xBox->run(); - delete redactiontarget; - } + m_pTargetsBox->InsertTarget(redactiontarget); } -IMPL_LINK_NOARG(SfxAutoRedactDialog, EditHdl, Button*, void) +/*IMPL_LINK_NOARG(SfxAutoRedactDialog, EditHdl, Button*, void) { sal_Int32 nSelectedRow = m_xTargetsBox->get_selected_index(); @@ -587,6 +572,7 @@ SfxAutoRedactDialog::SfxAutoRedactDialog(vcl::Window* pParent) m_pLoadBtn->SetClickHdl(LINK(this, SfxAutoRedactDialog, Load)); m_pSaveBtn->SetClickHdl(LINK(this, SfxAutoRedactDialog, Save)); m_pDeleteBtn->SetClickHdl(LINK(this, SfxAutoRedactDialog, DeleteHdl)); + m_pAddBtn->SetClickHdl(LINK(this, SfxAutoRedactDialog, AddHdl)); // Can be used to remmeber the last set of redaction targets? /*OUString sExtraData; @@ -732,121 +718,143 @@ bool SfxAutoRedactDialog::getTargets(std::vector<std::pair<RedactionTarget*, OUS return true; } -/*IMPL_LINK_NOARG(SfxAddTargetDialog, SelectTypeHdl, weld::ComboBox&, void) +IMPL_LINK_NOARG(SfxAddTargetDialog, SelectTypeHdl, ListBox&, void) { - if (m_xType->get_active_id() == "predefined") + if (m_pType->GetSelectedEntryPos() == 2) //Predefined { // Hide the usual content widgets // We will just set the id as content // And handle with proper regex in the SfxRedactionHelper - m_xLabelContent->set_sensitive(false); - m_xLabelContent->set_visible(false); - m_xContent->set_sensitive(false); - m_xContent->set_visible(false); - m_xWholeWords->set_sensitive(false); - m_xWholeWords->set_visible(false); - m_xCaseSensitive->set_sensitive(false); - m_xCaseSensitive->set_visible(false); + m_pLabelContent->Disable(); + m_pLabelContent->Hide(); + m_pContent->Disable(); + m_pContent->Hide(); + m_pWholeWords->Disable(); + m_pWholeWords->Hide(); + m_pCaseSensitive->Disable(); + m_pCaseSensitive->Hide(); // And show the predefined targets - m_xLabelPredefContent->set_sensitive(true); - m_xLabelPredefContent->set_visible(true); - m_xPredefContent->set_sensitive(true); - m_xPredefContent->set_visible(true); + m_pLabelPredefContent->Enable(); + m_pLabelPredefContent->Show(); + m_pPredefContent->Enable(); + m_pPredefContent->Show(); } else { - m_xLabelPredefContent->set_sensitive(false); - m_xLabelPredefContent->set_visible(false); - m_xPredefContent->set_sensitive(false); - m_xPredefContent->set_visible(false); - - m_xLabelContent->set_sensitive(true); - m_xLabelContent->set_visible(true); - m_xContent->set_sensitive(true); - m_xContent->set_visible(true); - m_xWholeWords->set_sensitive(true); - m_xWholeWords->set_visible(true); - m_xCaseSensitive->set_sensitive(true); - m_xCaseSensitive->set_visible(true); + m_pLabelPredefContent->Disable(); + m_pLabelPredefContent->Hide(); + m_pPredefContent->Disable(); + m_pPredefContent->Hide(); + + m_pLabelContent->Enable(); + m_pLabelContent->Show(); + m_pContent->Enable(); + m_pContent->Show(); + m_pWholeWords->Enable(); + m_pWholeWords->Show(); + m_pCaseSensitive->Enable(); + m_pCaseSensitive->Show(); } } -SfxAddTargetDialog::SfxAddTargetDialog(weld::Window* pParent, const OUString& rName) - : GenericDialogController(pParent, "sfx/ui/addtargetdialog.ui", "AddTargetDialog") - , m_xName(m_xBuilder->weld_entry("name")) - , m_xType(m_xBuilder->weld_combo_box("type")) - , m_xLabelContent(m_xBuilder->weld_label("label_content")) - , m_xContent(m_xBuilder->weld_entry("content")) - , m_xLabelPredefContent(m_xBuilder->weld_label("label_content_predef")) - , m_xPredefContent(m_xBuilder->weld_combo_box("content_predef")) - , m_xCaseSensitive(m_xBuilder->weld_check_button("checkboxCaseSensitive")) - , m_xWholeWords(m_xBuilder->weld_check_button("checkboxWholeWords")) -{ - m_xName->set_text(rName); - m_xName->select_region(0, rName.getLength()); - - m_xType->connect_changed(LINK(this, SfxAddTargetDialog, SelectTypeHdl)); +SfxAddTargetDialog::SfxAddTargetDialog(vcl::Window* pParent, const OUString& rName) + : SfxModalDialog(pParent, "AddTargetDialog", "sfx/ui/addtargetdialog.ui") +{ + get(m_pName, "name"); + get(m_pType, "type"); + get(m_pLabelContent, "label_content"); + get(m_pContent, "content"); + get(m_pLabelPredefContent, "label_content_predef"); + get(m_pPredefContent, "content_predef"); + get(m_pCaseSensitive, "checkboxCaseSensitive"); + get(m_pWholeWords, "checkboxWholeWords"); + + m_pName->SetText(rName); + m_pName->SetSelection(Selection(0, rName.getLength())); + + m_pType->SetSelectHdl(LINK(this, SfxAddTargetDialog, SelectTypeHdl)); } -SfxAddTargetDialog::SfxAddTargetDialog(weld::Window* pParent, const OUString& sName, +SfxAddTargetDialog::SfxAddTargetDialog(vcl::Window* pParent, const OUString& sName, const RedactionTargetType& eTargetType, const OUString& sContent, const bool& bCaseSensitive, const bool& bWholeWords) - : GenericDialogController(pParent, "sfx/ui/addtargetdialog.ui", "AddTargetDialog") - , m_xName(m_xBuilder->weld_entry("name")) - , m_xType(m_xBuilder->weld_combo_box("type")) - , m_xLabelContent(m_xBuilder->weld_label("label_content")) - , m_xContent(m_xBuilder->weld_entry("content")) - , m_xLabelPredefContent(m_xBuilder->weld_label("label_content_predef")) - , m_xPredefContent(m_xBuilder->weld_combo_box("content_predef")) - , m_xCaseSensitive(m_xBuilder->weld_check_button("checkboxCaseSensitive")) - , m_xWholeWords(m_xBuilder->weld_check_button("checkboxWholeWords")) + : SfxModalDialog(pParent, "AddTargetDialog", "sfx/ui/addtargetdialog.ui") { - m_xName->set_text(sName); - m_xName->select_region(0, sName.getLength()); + get(m_pName, "name"); + get(m_pType, "type"); + get(m_pLabelContent, "label_content"); + get(m_pContent, "content"); + get(m_pLabelPredefContent, "label_content_predef"); + get(m_pPredefContent, "content_predef"); + get(m_pCaseSensitive, "checkboxCaseSensitive"); + get(m_pWholeWords, "checkboxWholeWords"); + + m_pName->SetText(sName); + m_pName->SetSelection(Selection(0, sName.getLength())); - m_xType->set_active_id(getTypeID(eTargetType)); + m_pType->SelectEntryPos(getTypeID(eTargetType)); if (eTargetType == RedactionTargetType::REDACTION_TARGET_PREDEFINED) { - SelectTypeHdl(*m_xPredefContent); - m_xPredefContent->set_active(sContent.getToken(0, ';').toInt32()); + SelectTypeHdl(*m_pPredefContent); + m_pPredefContent->SelectEntryPos(sContent.getToken(0, ';').toInt32()); } else { - m_xContent->set_text(sContent); + m_pContent->SetText(sContent); } - m_xCaseSensitive->set_active(bCaseSensitive); - m_xWholeWords->set_active(bWholeWords); + if (bCaseSensitive) + m_pCaseSensitive->SetState(TriState::TRISTATE_TRUE); + if (bWholeWords) + m_pWholeWords->SetState(TriState::TRISTATE_TRUE); + + SetText("Edit Target"); +} + +SfxAddTargetDialog::~SfxAddTargetDialog() { disposeOnce(); } - set_title("Edit Target"); +void SfxAddTargetDialog::dispose() +{ + m_pName.clear(); + m_pType.clear(); + m_pLabelContent.clear(); + m_pContent.clear(); + m_pLabelPredefContent.clear(); + m_pPredefContent.clear(); + m_pCaseSensitive.clear(); + m_pWholeWords.clear(); + SfxModalDialog::dispose(); } RedactionTargetType SfxAddTargetDialog::getType() const { - OUString sTypeID = m_xType->get_active_id(); + sal_Int32 nTypeID = m_pType->GetSelectedEntryPos(); - if (sTypeID == "text") - return RedactionTargetType::REDACTION_TARGET_TEXT; - else if (sTypeID == "regex") - return RedactionTargetType::REDACTION_TARGET_REGEX; - else if (sTypeID == "predefined") - return RedactionTargetType::REDACTION_TARGET_PREDEFINED; - else - return RedactionTargetType::REDACTION_TARGET_UNKNOWN; + switch (nTypeID) + { + case 0: + return RedactionTargetType::REDACTION_TARGET_TEXT; + case 1: + return RedactionTargetType::REDACTION_TARGET_REGEX; + case 2: + return RedactionTargetType::REDACTION_TARGET_PREDEFINED; + default: + return RedactionTargetType::REDACTION_TARGET_UNKNOWN; + } } OUString SfxAddTargetDialog::getContent() const { - if (m_xType->get_active_id() == "predefined") + if (m_pType->GetSelectedEntryPos() == 2) //Predefined { - return OUString(OUString::number(m_xPredefContent->get_active()) + ";" - + m_xPredefContent->get_active_text()); + return OUString(OUString::number(m_pPredefContent->GetSelectedEntryPos()) + ";" + + m_pPredefContent->GetSelectedEntry()); } - return m_xContent->get_text(); -}*/ + return m_pContent->GetText(); +} /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ |