summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMuhammet Kara <muhammet.kara@collabora.com>2019-06-18 21:04:26 +0300
committerMuhammet Kara <muhammet.kara@collabora.com>2019-06-18 21:59:35 +0200
commit881e6fdd47386e430ad4c5489e3a6bbf0b46c85f (patch)
treec0416d9c9be1212bee0adf45289917e5e63fe7c3
parent4a478227f5af8322164ecce66fd056e9bf2eac89 (diff)
Copy targets instead of moving during redaction
To allow properly remembering the last state. * And some clean-up. Change-Id: Id0b0f4251e3578b8baced1e6e6b1161f46e324dc Reviewed-on: https://gerrit.libreoffice.org/74302 Tested-by: Jenkins Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
-rw-r--r--sfx2/inc/autoredactdialog.hxx12
-rw-r--r--sfx2/source/doc/autoredactdialog.cxx25
-rw-r--r--sfx2/source/doc/objserv.cxx2
3 files changed, 13 insertions, 26 deletions
diff --git a/sfx2/inc/autoredactdialog.hxx b/sfx2/inc/autoredactdialog.hxx
index 9734f236de10..f7cdecc15cce 100644
--- a/sfx2/inc/autoredactdialog.hxx
+++ b/sfx2/inc/autoredactdialog.hxx
@@ -106,6 +106,7 @@ class SFX2_DLLPUBLIC SfxAutoRedactDialog : public SfxDialogController
std::vector<std::pair<RedactionTarget*, OUString>> m_aTableTargets;
std::unique_ptr<sfx2::FileDialogHelper> m_pFileDlg;
bool m_bIsValidState;
+ bool m_bTargetsCopied;
std::unique_ptr<weld::Label> m_xRedactionTargetsLabel;
std::unique_ptr<TargetsTable> m_xTargetsBox;
@@ -138,16 +139,11 @@ public:
bool hasTargets() const;
/// Check if the dialog is in a valid state.
bool isValidState() const { return m_bIsValidState; }
- /** Literally moves targets into the given vector.
- * At the end of the operation, m_aTableTargets vector becomes empty.
- * The contents of the given vector will be erased before being filled in.
+ /** Copies targets vector
+ * Does a shallow copy.
* Returns true if successful.
*/
- bool moveTargets(std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets);
-
- // TODO: Some method(s) to check emptiness/validity
- // TODO: Some method(s) to get the search params/objects
- // TODO: Some method(s) to load/save redaction target sets
+ 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 950684ac4d1c..54f40fc35abd 100644
--- a/sfx2/source/doc/autoredactdialog.cxx
+++ b/sfx2/source/doc/autoredactdialog.cxx
@@ -545,6 +545,7 @@ void SfxAutoRedactDialog::clearTargets()
SfxAutoRedactDialog::SfxAutoRedactDialog(weld::Window* pParent)
: SfxDialogController(pParent, "sfx/ui/autoredactdialog.ui", "AutoRedactDialog")
, m_bIsValidState(true)
+ , m_bTargetsCopied(false)
, m_xRedactionTargetsLabel(m_xBuilder->weld_label("labelRedactionTargets"))
, m_xTargetsBox(new TargetsTable(m_xBuilder->weld_tree_view("targets")))
, m_xLoadBtn(m_xBuilder->weld_button("btnLoadTargets"))
@@ -636,7 +637,8 @@ SfxAutoRedactDialog::~SfxAutoRedactDialog()
OStringToOUString(m_xDialog->get_help_id(), RTL_TEXTENCODING_UTF8));
aDlgOpt.SetUserItem("UserItem", css::uno::makeAny(sUserDataStr));
- clearTargets();
+ if (!m_bTargetsCopied)
+ clearTargets();
}
catch (css::uno::Exception& e)
{
@@ -656,24 +658,13 @@ bool SfxAutoRedactDialog::hasTargets() const
return true;
}
-bool SfxAutoRedactDialog::moveTargets(
- std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets)
+bool SfxAutoRedactDialog::getTargets(std::vector<std::pair<RedactionTarget*, OUString>>& r_aTargets)
{
- try
- {
- r_aTargets.clear();
- r_aTargets.insert(r_aTargets.end(), std::make_move_iterator(m_aTableTargets.begin()),
- std::make_move_iterator(m_aTableTargets.end()));
- m_aTableTargets.clear();
- m_bIsValidState = false;
- }
- catch (const css::uno::Exception& e)
- {
- SAL_WARN("sfx.doc", "Exception caught while moving redaction targets: " << e.Message);
- m_bIsValidState = false;
- return false;
- }
+ if (m_aTableTargets.empty())
+ return true;
+ r_aTargets = m_aTableTargets;
+ m_bTargetsCopied = true;
return true;
}
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index 24eee80787f8..74edeb4d57da 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -561,7 +561,7 @@ void SfxObjectShell::ExecFile_Impl(SfxRequest &rReq)
// else continue with normal redaction
bIsAutoRedact = true;
- aDlg.moveTargets(aRedactionTargets);
+ aDlg.getTargets(aRedactionTargets);
[[fallthrough]];
}