diff options
author | Manuj Vashist <manujvashist@gmail.com> | 2018-07-04 03:18:59 +0530 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2018-07-12 00:33:59 +0200 |
commit | 537ca51ddb2ad2052cb0ca33fd8656d42ad46733 (patch) | |
tree | 4cc344a848cbf34031c9e743bcdf562e8f00876b | |
parent | 725a43ef934653255b2d5d18fe5bac116fe9b1b7 (diff) |
Added Sort Transformation in Data Provider dlg
Change-Id: I68ea3d2fc40163d0f3a67bb3723341f8e382db27
Reviewed-on: https://gerrit.libreoffice.org/56914
Tested-by: Jenkins
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | sc/UIConfig_scalc.mk | 1 | ||||
-rw-r--r-- | sc/source/ui/inc/dataproviderdlg.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/miscdlgs/dataproviderdlg.cxx | 63 | ||||
-rw-r--r-- | sc/uiconfig/scalc/ui/sorttransformationentry.ui | 85 |
4 files changed, 149 insertions, 1 deletions
diff --git a/sc/UIConfig_scalc.mk b/sc/UIConfig_scalc.mk index 498540b645fb..424d630d08de 100644 --- a/sc/UIConfig_scalc.mk +++ b/sc/UIConfig_scalc.mk @@ -157,6 +157,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/scalc,\ sc/uiconfig/scalc/ui/mergecellsdialog \ sc/uiconfig/scalc/ui/mergecolumnentry \ sc/uiconfig/scalc/ui/texttransformationentry \ + sc/uiconfig/scalc/ui/sorttransformationentry \ sc/uiconfig/scalc/ui/movecopysheet \ sc/uiconfig/scalc/ui/movingaveragedialog \ sc/uiconfig/scalc/ui/multipleoperationsdialog \ diff --git a/sc/source/ui/inc/dataproviderdlg.hxx b/sc/source/ui/inc/dataproviderdlg.hxx index cd3f681754f0..b39254ddf70a 100644 --- a/sc/source/ui/inc/dataproviderdlg.hxx +++ b/sc/source/ui/inc/dataproviderdlg.hxx @@ -62,6 +62,7 @@ public: void splitColumn(); void mergeColumns(); void textTransformation(); + void sortTransformation(); void import(ScDocument* pDoc, bool bInternal = false); }; diff --git a/sc/source/ui/miscdlgs/dataproviderdlg.cxx b/sc/source/ui/miscdlgs/dataproviderdlg.cxx index c2ce2f6d4e4f..e07f789b1269 100644 --- a/sc/source/ui/miscdlgs/dataproviderdlg.cxx +++ b/sc/source/ui/miscdlgs/dataproviderdlg.cxx @@ -222,7 +222,8 @@ MenuData aColumnData[] = { { 0, "Delete Column", &ScDataProviderDlg::deleteColumn }, { 1, "Split Column", &ScDataProviderDlg::splitColumn }, { 2, "Merge Columns", &ScDataProviderDlg::mergeColumns }, - { 3, "Text Transformation", &ScDataProviderDlg::textTransformation } + { 3, "Text Transformation", &ScDataProviderDlg::textTransformation }, + { 4, "Sort Columns", &ScDataProviderDlg::sortTransformation } }; class ScDataTransformationBaseControl : public VclContainer, @@ -436,6 +437,60 @@ std::shared_ptr<sc::DataTransformation> ScMergeColumnTransformationControl::getT return std::make_shared<sc::MergeColumnTransformation>(aMergedColumns, mpSeparator->GetText()); } +class ScSortTransformationControl : public ScDataTransformationBaseControl +{ +private: + + VclPtr<CheckBox> mpAscending; + VclPtr<Edit> mpEdColumns; + +public: + ScSortTransformationControl(vcl::Window* pParent); + ~ScSortTransformationControl() override; + + virtual void dispose() override; + + virtual std::shared_ptr<sc::DataTransformation> getTransformation() override; +}; + +ScSortTransformationControl::ScSortTransformationControl(vcl::Window* pParent): + ScDataTransformationBaseControl(pParent, "modules/scalc/ui/sorttransformationentry.ui") +{ + get(mpAscending, "ed_ascending"); + get(mpEdColumns, "ed_columns"); +} + +ScSortTransformationControl::~ScSortTransformationControl() +{ + disposeOnce(); +} + +void ScSortTransformationControl::dispose() +{ + mpAscending.clear(); + mpEdColumns.clear(); + + ScDataTransformationBaseControl::dispose(); +} + +std::shared_ptr<sc::DataTransformation> ScSortTransformationControl::getTransformation() +{ + OUString aColStr = mpEdColumns->GetText(); + bool aIsAscending = mpAscending->IsChecked(); + SCCOL aColumn = 0; + sal_Int32 nCol = aColStr.toInt32(); + if (nCol > 0 && nCol <= MAXCOL) + aColumn = nCol - 1; // translate from 1-based column notations to internal Calc one + + ScSortParam aSortParam; + ScSortKeyState aSortKey; + aSortKey.bDoSort = true; + aSortKey.nField = aColumn; + aSortKey.bAscending = aIsAscending; + aSortParam.maKeyState.push_back(aSortKey); + return std::make_shared<sc::SortTransformation>(aSortParam); +} + class ScColumnTextTransformation : public ScDataTransformationBaseControl { private: @@ -660,6 +715,12 @@ void ScDataProviderDlg::textTransformation() mpList->addEntry(pTextTransforamtionEntry); } +void ScDataProviderDlg::sortTransformation() +{ + VclPtr<ScSortTransformationControl> pSortTransforamtionEntry = VclPtr<ScSortTransformationControl>::Create(mpList); + mpList->addEntry(pSortTransforamtionEntry); +} + void ScDataProviderDlg::import(ScDocument* pDoc, bool bInternal) { sc::ExternalDataSource aSource = mpDataProviderCtrl->getDataSource(pDoc); diff --git a/sc/uiconfig/scalc/ui/sorttransformationentry.ui b/sc/uiconfig/scalc/ui/sorttransformationentry.ui new file mode 100644 index 000000000000..070c0b478a7c --- /dev/null +++ b/sc/uiconfig/scalc/ui/sorttransformationentry.ui @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.20.2 --> +<interface domain="sc"> + <requires lib="gtk+" version="3.18"/> + <object class="GtkGrid" id="grid"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="hexpand">True</property> + <property name="border_width">6</property> + <property name="row_spacing">6</property> + <property name="column_spacing">12</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="sorttransformationentry|name">Sort Transformation</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkGrid" id="grid_details"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkCheckButton" id="ed_ascending"> + <property name="visible">True</property> + <property name="label" translatable="yes" context="sorttransformationentry|type">Ascending Order</property> + <property name="can_focus">True</property> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes" context="sorttransformationentry|column">Column:</property> + <accessibility> + <relation type="label-for" target="ed_columns"/> + </accessibility> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">1</property> + </packing> + </child> + <child> + <object class="GtkEntry" id="ed_columns"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <accessibility> + <relation type="labelled-by" target="label1"/> + </accessibility> + </object> + <packing> + <property name="left_attach">1</property> + <property name="top_attach">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> + </child> + </object> +</interface> |