sfx2/inc/autoredactdialog.hxx | 14 +++--- sfx2/source/doc/autoredactdialog.cxx | 78 ++++++++++++++++++++++------------- sfx2/source/doc/objserv.cxx | 2 3 files changed, 58 insertions(+), 36 deletions(-)
New commits: commit 9b63b1a51e7cd11a7450f2dc4f70aa561a46b4da Author: Muhammet Kara <muhammet.k...@collabora.com> AuthorDate: Wed Aug 21 22:22:15 2019 +0300 Commit: Muhammet Kara <muhammet.k...@collabora.com> CommitDate: Fri Aug 23 21:33:20 2019 +0200 AutoRedaction: Adapt Load And enable getTargets() [NO-FORWARD-PORT] Change-Id: I6f6fb690183e54bef8f4cb5b21c625ff757fd16e Reviewed-on: https://gerrit.libreoffice.org/77935 Reviewed-by: Muhammet Kara <muhammet.k...@collabora.com> Tested-by: Muhammet Kara <muhammet.k...@collabora.com> diff --git a/sfx2/inc/autoredactdialog.hxx b/sfx2/inc/autoredactdialog.hxx index 0011166e631a..b128e9d67634 100644 --- a/sfx2/inc/autoredactdialog.hxx +++ b/sfx2/inc/autoredactdialog.hxx @@ -67,7 +67,7 @@ enum class StartFileDialogType class SFX2_DLLPUBLIC SfxAutoRedactDialog : public SfxModalDialog { SfxObjectShellLock m_xDocShell; - std::vector<std::pair<RedactionTarget*, OUString>> m_aTableTargets; + //std::vector<std::pair<RedactionTarget*, OUString>> m_aTableTargets; std::unique_ptr<sfx2::FileDialogHelper> m_pFileDlg; bool m_bIsValidState; bool m_bTargetsCopied; @@ -81,20 +81,20 @@ class SFX2_DLLPUBLIC SfxAutoRedactDialog : public SfxModalDialog VclPtr<PushButton> m_pEditBtn; VclPtr<PushButton> m_pDeleteBtn; - /*DECL_LINK(Load, Button*, void); - DECL_LINK(Save, Button*, void); + DECL_LINK(Load, Button*, void); + /*DECL_LINK(Save, Button*, void); DECL_LINK(AddHdl, Button*, void); DECL_LINK(EditHdl, Button*, void); - DECL_LINK(DeleteHdl, Button*, void); + DECL_LINK(DeleteHdl, Button*, void);*/ DECL_LINK(LoadHdl, sfx2::FileDialogHelper*, void); DECL_LINK(SaveHdl, sfx2::FileDialogHelper*, void); void StartFileDialog(StartFileDialogType nType, const OUString& rTitle); /// Carry out proper addition both to the targets box, and to the tabletargets vector. - void addTarget(RedactionTarget* pTarget); + /*void addTarget(RedactionTarget* pTarget);*/ /// Clear all targets both visually and from the targets vector - void clearTargets();*/ + void clearTargets(); public: SfxAutoRedactDialog(vcl::Window* pParent); @@ -110,7 +110,7 @@ public: * Does a shallow copy. * Returns true if successful. */ - //bool getTargets(std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets); + bool getTargets(std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets); }; /*class SfxAddTargetDialog : public weld::GenericDialogController diff --git a/sfx2/source/doc/autoredactdialog.cxx b/sfx2/source/doc/autoredactdialog.cxx index bd8c4dfcd646..b62cb249b426 100644 --- a/sfx2/source/doc/autoredactdialog.cxx +++ b/sfx2/source/doc/autoredactdialog.cxx @@ -204,7 +204,7 @@ OUString TargetsTable::GetNameProposal() m_xControl->set_text(nRowIndex, sContent, 2); m_xControl->set_text(nRowIndex, pTarget->bCaseSensitive ? OUString("Yes") : OUString("No"), 3); m_xControl->set_text(nRowIndex, pTarget->bWholeWords ? OUString("Yes") : OUString("No"), 4); -} +}*/ IMPL_LINK_NOARG(SfxAutoRedactDialog, Load, Button*, void) { @@ -213,7 +213,7 @@ IMPL_LINK_NOARG(SfxAutoRedactDialog, Load, Button*, void) StartFileDialog(StartFileDialogType::Open, "Load Targets"); } -IMPL_LINK_NOARG(SfxAutoRedactDialog, Save, Button*, void) +/*IMPL_LINK_NOARG(SfxAutoRedactDialog, Save, Button*, void) { //Allow saving the targets into a file StartFileDialog(StartFileDialogType::SaveAs, "Save Targets"); @@ -370,11 +370,11 @@ IMPL_LINK_NOARG(SfxAutoRedactDialog, DeleteHdl, Button*, void) m_aTableTargets.erase(m_aTableTargets.begin() + (i - delta)); m_xTargetsBox->remove(i - delta++); } -} +}*/ namespace { -boost::property_tree::ptree redactionTargetToJSON(RedactionTarget* pTarget) +/*boost::property_tree::ptree redactionTargetToJSON(RedactionTarget* pTarget) { boost::property_tree::ptree aNode; aNode.put("sName", pTarget->sName.toUtf8().getStr()); @@ -385,7 +385,7 @@ boost::property_tree::ptree redactionTargetToJSON(RedactionTarget* pTarget) aNode.put("nID", pTarget->nID); return aNode; -} +}*/ RedactionTarget* JSONtoRedactionTarget(const boost::property_tree::ptree::value_type& rValue) { @@ -421,7 +421,7 @@ IMPL_LINK_NOARG(SfxAutoRedactDialog, LoadHdl, sfx2::FileDialogHelper*, void) osl::File::getSystemPathFromFileURL(sTargetsFile, sSysPath); sTargetsFile = sSysPath; - weld::WaitObject aWaitObject(getDialog()); + EnterWait(); try { @@ -440,7 +440,7 @@ IMPL_LINK_NOARG(SfxAutoRedactDialog, LoadHdl, sfx2::FileDialogHelper*, void) aTargetsJSON.get_child("RedactionTargets")) { RedactionTarget* pTarget = JSONtoRedactionTarget(rValue); - addTarget(pTarget); + m_pTargetsBox->InsertTarget(pTarget); } } catch (css::uno::Exception& e) @@ -450,11 +450,13 @@ IMPL_LINK_NOARG(SfxAutoRedactDialog, LoadHdl, sfx2::FileDialogHelper*, void) return; //TODO: Warn the user with a message box } + + LeaveWait(); } IMPL_LINK_NOARG(SfxAutoRedactDialog, SaveHdl, sfx2::FileDialogHelper*, void) { - assert(m_pFileDlg); + /*assert(m_pFileDlg); OUString sTargetsFile; if (ERRCODE_NONE == m_pFileDlg->GetError()) @@ -493,7 +495,7 @@ IMPL_LINK_NOARG(SfxAutoRedactDialog, SaveHdl, sfx2::FileDialogHelper*, void) "Exception caught while trying to save the targets JSON to file: " << e.Message); return; //TODO: Warn the user with a message box - } + }*/ } void SfxAutoRedactDialog::StartFileDialog(StartFileDialogType nType, const OUString& rTitle) @@ -504,7 +506,7 @@ void SfxAutoRedactDialog::StartFileDialog(StartFileDialogType nType, const OUStr bool bSave = nType == StartFileDialogType::SaveAs; short nDialogType = bSave ? css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION : css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE; - m_pFileDlg.reset(new sfx2::FileDialogHelper(nDialogType, FileDialogFlags::NONE, getDialog())); + m_pFileDlg.reset(new sfx2::FileDialogHelper(nDialogType, FileDialogFlags::NONE, this)); m_pFileDlg->SetTitle(rTitle); m_pFileDlg->AddFilter(aFilterAllStr, FILEDIALOG_FILTER_ALL); @@ -517,7 +519,7 @@ void SfxAutoRedactDialog::StartFileDialog(StartFileDialogType nType, const OUStr m_pFileDlg->StartExecuteModal(aDlgClosedLink); } -void SfxAutoRedactDialog::addTarget(RedactionTarget* pTarget) +/*void SfxAutoRedactDialog::addTarget(RedactionTarget* pTarget) { // Only the visual/display part m_xTargetsBox->InsertTarget(pTarget); @@ -533,21 +535,23 @@ void SfxAutoRedactDialog::addTarget(RedactionTarget* pTarget) xBox->run(); delete pTarget; } -} +}*/ void SfxAutoRedactDialog::clearTargets() { - // Clear the targets box - m_xTargetsBox->clear(); - - // Clear the targets vector - auto delTarget - = [](const std::pair<RedactionTarget*, OUString>& targetPair) { delete targetPair.first; }; - - std::for_each(m_aTableTargets.begin(), m_aTableTargets.end(), delTarget); + SvTreeListEntry* pEntry = m_pTargetsBox->First(); + while (pEntry) + { + RedactionTarget* pTarget = static_cast<RedactionTarget*>(pEntry->GetUserData()); + if (pTarget) + { + delete pTarget; + } + pEntry = m_pTargetsBox->Next(pEntry); + } - m_aTableTargets.clear(); -}*/ + m_pTargetsBox->Clear(); +} SfxAutoRedactDialog::SfxAutoRedactDialog(vcl::Window* pParent) : SfxModalDialog(pParent, "AutoRedactDialog", "sfx/ui/autoredactdialog.ui") @@ -564,6 +568,8 @@ SfxAutoRedactDialog::SfxAutoRedactDialog(vcl::Window* pParent) m_pTargetsBox = VclPtr<TargetsTable>::Create(*m_pTargetsContainer); + m_pLoadBtn->SetClickHdl(LINK(this, SfxAutoRedactDialog, Load)); + // Can be used to remmeber the last set of redaction targets? /*OUString sExtraData; SvtViewOptions aDlgOpt(EViewType::Dialog, @@ -615,6 +621,8 @@ SfxAutoRedactDialog::SfxAutoRedactDialog(vcl::Window* pParent) SfxAutoRedactDialog::~SfxAutoRedactDialog() { + if (!m_bTargetsCopied) + clearTargets(); /*if (m_aTableTargets.empty()) { // Clear the dialog data @@ -680,19 +688,33 @@ void SfxAutoRedactDialog::dispose() return false; return true; -} +}*/ bool SfxAutoRedactDialog::getTargets(std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets) { - if (m_aTableTargets.empty()) - return true; + SvTreeListEntry* pEntry = m_pTargetsBox->First(); + + if (!pEntry) + { + return false; + } + + while (pEntry) + { + RedactionTarget* pTarget = static_cast<RedactionTarget*>(pEntry->GetUserData()); + if (pTarget && !pTarget->sName.isEmpty()) + { + r_aTargets.emplace_back(pTarget, pTarget->sName); + if (!m_bTargetsCopied) + m_bTargetsCopied = true; + } + pEntry = m_pTargetsBox->Next(pEntry); + } - r_aTargets = m_aTableTargets; - m_bTargetsCopied = true; return true; } -IMPL_LINK_NOARG(SfxAddTargetDialog, SelectTypeHdl, weld::ComboBox&, void) +/*IMPL_LINK_NOARG(SfxAddTargetDialog, SelectTypeHdl, weld::ComboBox&, void) { if (m_xType->get_active_id() == "predefined") { diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx index 77cd8458bfc1..517d32e1b232 100644 --- a/sfx2/source/doc/objserv.cxx +++ b/sfx2/source/doc/objserv.cxx @@ -556,7 +556,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq) // else continue with normal redaction bIsAutoRedact = true; - //aDlg.getTargets(aRedactionTargets); + aDlg.getTargets(aRedactionTargets); SAL_FALLTHROUGH; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits