diff options
author | Manuj Vashist <manujvashist@gmail.com> | 2018-07-02 17:14:11 +0530 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2018-07-09 00:03:57 +0200 |
commit | 9546f6fec9c16c0440ef6db940aa704d2f8c6657 (patch) | |
tree | 955e7006b0fbfcf4f3574d0228f02e741b65e125 /sc/source/ui/miscdlgs/dataproviderdlg.cxx | |
parent | e300efd3a029672e24114914355c5c690fb725d5 (diff) |
added Text transformation in data provider dlg
Change-Id: I69d8aae9289ad6d1cbdf92307c16299a533fcd56
Reviewed-on: https://gerrit.libreoffice.org/56807
Tested-by: Jenkins
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'sc/source/ui/miscdlgs/dataproviderdlg.cxx')
-rw-r--r-- | sc/source/ui/miscdlgs/dataproviderdlg.cxx | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/sc/source/ui/miscdlgs/dataproviderdlg.cxx b/sc/source/ui/miscdlgs/dataproviderdlg.cxx index a867b419aa7e..c2ce2f6d4e4f 100644 --- a/sc/source/ui/miscdlgs/dataproviderdlg.cxx +++ b/sc/source/ui/miscdlgs/dataproviderdlg.cxx @@ -222,6 +222,7 @@ MenuData aColumnData[] = { { 0, "Delete Column", &ScDataProviderDlg::deleteColumn }, { 1, "Split Column", &ScDataProviderDlg::splitColumn }, { 2, "Merge Columns", &ScDataProviderDlg::mergeColumns }, + { 3, "Text Transformation", &ScDataProviderDlg::textTransformation } }; class ScDataTransformationBaseControl : public VclContainer, @@ -435,6 +436,78 @@ std::shared_ptr<sc::DataTransformation> ScMergeColumnTransformationControl::getT return std::make_shared<sc::MergeColumnTransformation>(aMergedColumns, mpSeparator->GetText()); } +class ScColumnTextTransformation : public ScDataTransformationBaseControl +{ +private: + VclPtr<Edit> maColumnNums; + VclPtr<ListBox> maType; + +public: + + ScColumnTextTransformation(vcl::Window* pParent); + ~ScColumnTextTransformation() override; + + virtual void dispose() override; + + virtual std::shared_ptr<sc::DataTransformation> getTransformation() override; + +}; + +ScColumnTextTransformation::ScColumnTextTransformation(vcl::Window* pParent): + ScDataTransformationBaseControl(pParent,"modules/scalc/ui/texttransformationentry.ui") +{ + get(maColumnNums, "ed_columns"); + get(maType, "ed_lst"); +} + +ScColumnTextTransformation::~ScColumnTextTransformation() +{ + disposeOnce(); +} + +void ScColumnTextTransformation::dispose() +{ + maColumnNums.clear(); + maType.clear(); + ScDataTransformationBaseControl::dispose(); +} + +std::shared_ptr<sc::DataTransformation> ScColumnTextTransformation::getTransformation() +{ + OUString aColumnString = maColumnNums->GetText(); + std::vector<OUString> aSplitColumns = comphelper::string::split(aColumnString, ';'); + std::set<SCCOL> aColumns; + 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 + aColumns.insert(nCol - 1); + } + + sal_Int32 nPos = maType->GetSelectedEntryPos(); + switch (nPos) + { + case 0: + return std::make_shared<sc::TextTransformation>(aColumns,sc::TEXT_TRANSFORM_TYPE::TO_LOWER); + case 1: + return std::make_shared<sc::TextTransformation>(aColumns,sc::TEXT_TRANSFORM_TYPE::TO_UPPER); + case 2: + return std::make_shared<sc::TextTransformation>(aColumns,sc::TEXT_TRANSFORM_TYPE::CAPITALIZE); + case 3: + return std::make_shared<sc::TextTransformation>(aColumns,sc::TEXT_TRANSFORM_TYPE::TRIM); + default: + assert(false); + } + + return nullptr; +} + } ScDataProviderDlg::ScDataProviderDlg(vcl::Window* pParent, std::shared_ptr<ScDocument> pDoc, ScDocument* pDocument): @@ -581,6 +654,12 @@ void ScDataProviderDlg::mergeColumns() mpList->addEntry(pMergeColumnEntry); } +void ScDataProviderDlg::textTransformation() +{ + VclPtr<ScColumnTextTransformation> pTextTransforamtionEntry = VclPtr<ScColumnTextTransformation>::Create(mpList); + mpList->addEntry(pTextTransforamtionEntry); +} + void ScDataProviderDlg::import(ScDocument* pDoc, bool bInternal) { sc::ExternalDataSource aSource = mpDataProviderCtrl->getDataSource(pDoc); |