From eac72845f5c9aac0fb346b2d48cee697006c057b Mon Sep 17 00:00:00 2001 From: Manuj Vashist Date: Mon, 2 Jul 2018 04:21:03 +0530 Subject: Added Delete Column Transformation in Data Provider Dialog Change-Id: Ibebd92c426d1653642c5b9d037d6368636561fcd Reviewed-on: https://gerrit.libreoffice.org/56786 Reviewed-by: Markus Mohrhard Tested-by: Markus Mohrhard --- sc/source/ui/miscdlgs/dataproviderdlg.cxx | 59 ++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 4 deletions(-) (limited to 'sc') diff --git a/sc/source/ui/miscdlgs/dataproviderdlg.cxx b/sc/source/ui/miscdlgs/dataproviderdlg.cxx index 8e07d04b8145..a94a5d4d41e1 100644 --- a/sc/source/ui/miscdlgs/dataproviderdlg.cxx +++ b/sc/source/ui/miscdlgs/dataproviderdlg.cxx @@ -271,6 +271,59 @@ void ScDataTransformationBaseControl::setAllocation(const Size &rAllocation) setLayoutPosSize(*maGrid, Point(0, 0), rAllocation); } +class ScDeleteColumnTransformationControl : public ScDataTransformationBaseControl +{ +private: + VclPtr maColumnNums; + +public: + ScDeleteColumnTransformationControl(vcl::Window* pParent); + ~ScDeleteColumnTransformationControl() override; + + virtual void dispose() override; + + virtual std::shared_ptr getTransformation() override; +}; + +ScDeleteColumnTransformationControl::ScDeleteColumnTransformationControl(vcl::Window* pParent): + ScDataTransformationBaseControl(pParent, "modules/scalc/ui/deletecolumnentry.ui") +{ + get(maColumnNums, "ed_columns"); +} + +ScDeleteColumnTransformationControl::~ScDeleteColumnTransformationControl() +{ + disposeOnce(); +} + +void ScDeleteColumnTransformationControl::dispose() +{ + maColumnNums.clear(); + + ScDataTransformationBaseControl::dispose(); +} + +std::shared_ptr ScDeleteColumnTransformationControl::getTransformation() +{ + OUString aColumnString = maColumnNums->GetText(); + std::vector aSplitColumns = comphelper::string::split(aColumnString, ';'); + std::set ColNums; + for (auto& rColStr : aSplitColumns) + { + sal_Int32 nCol = rColStr.toInt32(); + if (nCol <= 0) + continue; + + if (nCol > MAXCOL) + continue; + + // translate from 1-based column notations to internal Calc one + ColNums.insert(nCol - 1); + } + + return std::make_shared(ColNums); +} + class ScSplitColumnTransformationControl : public ScDataTransformationBaseControl { private: @@ -497,10 +550,8 @@ void ScDataProviderDlg::cancelAndQuit() void ScDataProviderDlg::deleteColumn() { - VclPtr mpText = VclPtr::Create(mpList); - mpText->SetText("Delete Column"); - mpText->SetSizePixel(Size(400, 20)); - mpList->addEntry(mpText); + VclPtr pDeleteColumnEntry = VclPtr::Create(mpList); + mpList->addEntry(pDeleteColumnEntry); } void ScDataProviderDlg::splitColumn() -- cgit v1.2.3