diff options
author | bansan85 <legarrec.vincent@gmail.com> | 2016-12-21 02:27:04 +0100 |
---|---|---|
committer | jan iversen <jani@documentfoundation.org> | 2016-12-21 08:25:12 +0000 |
commit | a631e0fe94830fff5b81b4e852d37a666a9f3b9e (patch) | |
tree | 5d2928226893ad68dc93430d0bb4a3c882b498ab /chart2 | |
parent | 4a410dd147f7160c1d62e3e0b67388a178d5136c (diff) |
Add move column right and move row up in DataTable
Change-Id: Ib224a99636dfbb4451aa26263573af2f3d31b84a
Reviewed-on: https://gerrit.libreoffice.org/32265
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
Tested-by: jan iversen <jani@documentfoundation.org>
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/source/controller/dialogs/DataBrowser.cxx | 77 | ||||
-rw-r--r-- | chart2/source/controller/dialogs/DataBrowser.hxx | 12 | ||||
-rw-r--r-- | chart2/source/controller/dialogs/dlg_DataEditor.cxx | 30 | ||||
-rw-r--r-- | chart2/source/controller/inc/dlg_DataEditor.hxx | 6 | ||||
-rw-r--r-- | chart2/uiconfig/ui/chartdatadialog.ui | 36 |
5 files changed, 137 insertions, 24 deletions
diff --git a/chart2/source/controller/dialogs/DataBrowser.cxx b/chart2/source/controller/dialogs/DataBrowser.cxx index acf2195e717e..8c7af15f1936 100644 --- a/chart2/source/controller/dialogs/DataBrowser.cxx +++ b/chart2/source/controller/dialogs/DataBrowser.cxx @@ -497,7 +497,15 @@ bool DataBrowser::MayDeleteColumn() const && ( ColCount() > 2 ); } -bool DataBrowser::MaySwapRows() const +bool DataBrowser::MayMoveUpRows() const +{ + return ! IsReadOnly() + && ( !lcl_SeriesHeaderHasFocus( m_aSeriesHeaders )) + && ( GetCurRow() > 0 ) + && ( GetCurRow() <= GetRowCount() - 1 ); +} + +bool DataBrowser::MayMoveDownRows() const { return ! IsReadOnly() && ( !lcl_SeriesHeaderHasFocus( m_aSeriesHeaders )) @@ -505,7 +513,24 @@ bool DataBrowser::MaySwapRows() const && ( GetCurRow() < GetRowCount() - 1 ); } -bool DataBrowser::MaySwapColumns() const +bool DataBrowser::MayMoveLeftColumns() const +{ + // if a series header (except the last one) has the focus + { + sal_Int32 nColIndex(0); + if( lcl_SeriesHeaderHasFocus( m_aSeriesHeaders, &nColIndex )) + return (static_cast< sal_uInt32 >( nColIndex ) <= (m_aSeriesHeaders.size() - 1)) && (static_cast< sal_uInt32 >( nColIndex ) != 0); + } + + sal_Int32 nColIdx = lcl_getColumnInDataOrHeader( GetCurColumnId(), m_aSeriesHeaders ); + return ! IsReadOnly() + && ( nColIdx > 1 ) + && ( nColIdx <= ColCount() - 2 ) + && m_apDataBrowserModel.get() + && !m_apDataBrowserModel->isCategoriesColumn( nColIdx ); +} + +bool DataBrowser::MayMoveRightColumns() const { // if a series header (except the last one) has the focus { @@ -901,7 +926,29 @@ void DataBrowser::RemoveRow() } } -void DataBrowser::SwapColumn() +void DataBrowser::MoveLeftColumn() +{ + sal_Int32 nColIdx = lcl_getColumnInDataOrHeader( GetCurColumnId(), m_aSeriesHeaders ); + + if( nColIdx > 0 && + m_apDataBrowserModel.get()) + { + // save changes made to edit-field + if( IsModified() ) + SaveModified(); + + m_apDataBrowserModel->swapDataSeries( nColIdx - 1 ); + + // keep cursor in swapped column + if(( 0 < GetCurColumnId() ) && ( GetCurColumnId() <= ColCount() - 1 )) + { + Dispatch( BROWSER_CURSORLEFT ); + } + RenewTable(); + } +} + +void DataBrowser::MoveRightColumn() { sal_Int32 nColIdx = lcl_getColumnInDataOrHeader( GetCurColumnId(), m_aSeriesHeaders ); @@ -923,7 +970,29 @@ void DataBrowser::SwapColumn() } } -void DataBrowser::SwapRow() +void DataBrowser::MoveUpRow() +{ + sal_Int32 nRowIdx = lcl_getRowInData( GetCurRow()); + + if( nRowIdx > 0 && + m_apDataBrowserModel.get()) + { + // save changes made to edit-field + if( IsModified() ) + SaveModified(); + + m_apDataBrowserModel->swapDataPointForAllSeries( nRowIdx - 1 ); + + // keep cursor in swapped row + if(( 0 < GetCurRow() ) && ( GetCurRow() <= GetRowCount() - 1 )) + { + Dispatch( BROWSER_CURSORUP ); + } + RenewTable(); + } +} + +void DataBrowser::MoveDownRow() { sal_Int32 nRowIdx = lcl_getRowInData( GetCurRow()); diff --git a/chart2/source/controller/dialogs/DataBrowser.hxx b/chart2/source/controller/dialogs/DataBrowser.hxx index 6eec67a58336..4c4135535c17 100644 --- a/chart2/source/controller/dialogs/DataBrowser.hxx +++ b/chart2/source/controller/dialogs/DataBrowser.hxx @@ -107,8 +107,10 @@ public: bool MayDeleteRow() const; bool MayDeleteColumn() const; - bool MaySwapRows() const; - bool MaySwapColumns() const; + bool MayMoveUpRows() const; + bool MayMoveDownRows() const; + bool MayMoveRightColumns() const; + bool MayMoveLeftColumns() const; // mutators mutating data void InsertRow(); @@ -120,8 +122,10 @@ public: using BrowseBox::RemoveColumn; using BrowseBox::MouseButtonDown; - void SwapRow(); - void SwapColumn(); + void MoveUpRow(); + void MoveDownRow(); + void MoveLeftColumn(); + void MoveRightColumn(); void SetCursorMovedHdl( const Link<DataBrowser*,void>& rLink ); diff --git a/chart2/source/controller/dialogs/dlg_DataEditor.cxx b/chart2/source/controller/dialogs/dlg_DataEditor.cxx index 14aed53385df..b4af99629772 100644 --- a/chart2/source/controller/dialogs/dlg_DataEditor.cxx +++ b/chart2/source/controller/dialogs/dlg_DataEditor.cxx @@ -64,8 +64,10 @@ DataEditor::DataEditor(vcl::Window* pParent, TBI_DATA_INSERT_TEXT_COL = m_pTbxData->GetItemId("InsertTextColumn"); TBI_DATA_DELETE_ROW = m_pTbxData->GetItemId("RemoveRow"); TBI_DATA_DELETE_COL = m_pTbxData->GetItemId("RemoveColumn"); - TBI_DATA_SWAP_COL = m_pTbxData->GetItemId("SwapColumn"); - TBI_DATA_SWAP_ROW = m_pTbxData->GetItemId("SwapRow"); + TBI_DATA_MOVE_LEFT_COL = m_pTbxData->GetItemId("MoveLeftColumn"); + TBI_DATA_MOVE_RIGHT_COL = m_pTbxData->GetItemId("MoveRightColumn"); + TBI_DATA_MOVE_UP_ROW = m_pTbxData->GetItemId("MoveUpRow"); + TBI_DATA_MOVE_DOWN_ROW = m_pTbxData->GetItemId("MoveDownRow"); m_pTbxData->SetSelectHdl( LINK( this, DataEditor, ToolboxHdl )); @@ -124,10 +126,14 @@ IMPL_LINK_NOARG(DataEditor, ToolboxHdl, ToolBox *, void) m_xBrwData->RemoveRow(); else if (nId == TBI_DATA_DELETE_COL) m_xBrwData->RemoveColumn(); - else if (nId == TBI_DATA_SWAP_COL) - m_xBrwData->SwapColumn(); - else if (nId == TBI_DATA_SWAP_ROW) - m_xBrwData->SwapRow(); + else if (nId == TBI_DATA_MOVE_LEFT_COL) + m_xBrwData->MoveLeftColumn(); + else if (nId == TBI_DATA_MOVE_RIGHT_COL) + m_xBrwData->MoveRightColumn(); + else if (nId == TBI_DATA_MOVE_UP_ROW) + m_xBrwData->MoveUpRow(); + else if (nId == TBI_DATA_MOVE_DOWN_ROW) + m_xBrwData->MoveDownRow(); } // refresh toolbar icons according to currently selected cell in browse box @@ -144,8 +150,10 @@ IMPL_LINK_NOARG(DataEditor, BrowserCursorMovedHdl, DataBrowser*, void) m_pTbxData->EnableItem( TBI_DATA_DELETE_ROW, m_xBrwData->MayDeleteRow() ); m_pTbxData->EnableItem( TBI_DATA_DELETE_COL, m_xBrwData->MayDeleteColumn() ); - m_pTbxData->EnableItem( TBI_DATA_SWAP_COL, bIsDataValid && m_xBrwData->MaySwapColumns() ); - m_pTbxData->EnableItem( TBI_DATA_SWAP_ROW, bIsDataValid && m_xBrwData->MaySwapRows() ); + m_pTbxData->EnableItem( TBI_DATA_MOVE_LEFT_COL, bIsDataValid && m_xBrwData->MayMoveLeftColumns() ); + m_pTbxData->EnableItem( TBI_DATA_MOVE_RIGHT_COL, bIsDataValid && m_xBrwData->MayMoveRightColumns() ); + m_pTbxData->EnableItem( TBI_DATA_MOVE_DOWN_ROW, bIsDataValid && m_xBrwData->MayMoveDownRows() ); + m_pTbxData->EnableItem( TBI_DATA_MOVE_UP_ROW, bIsDataValid && m_xBrwData->MayMoveUpRows() ); } // disable all modifying controls @@ -159,8 +167,10 @@ void DataEditor::SetReadOnly( bool bReadOnly ) m_pTbxData->EnableItem( TBI_DATA_INSERT_TEXT_COL, false ); m_pTbxData->EnableItem( TBI_DATA_DELETE_ROW, false ); m_pTbxData->EnableItem( TBI_DATA_DELETE_COL, false ); - m_pTbxData->EnableItem( TBI_DATA_SWAP_COL, false ); - m_pTbxData->EnableItem( TBI_DATA_SWAP_ROW, false ); + m_pTbxData->EnableItem( TBI_DATA_MOVE_LEFT_COL, false ); + m_pTbxData->EnableItem( TBI_DATA_MOVE_RIGHT_COL, false ); + m_pTbxData->EnableItem( TBI_DATA_MOVE_UP_ROW, false ); + m_pTbxData->EnableItem( TBI_DATA_MOVE_DOWN_ROW, false ); } m_xBrwData->SetReadOnly( m_bReadOnly ); diff --git a/chart2/source/controller/inc/dlg_DataEditor.hxx b/chart2/source/controller/inc/dlg_DataEditor.hxx index baffffaea214..d6e085899e4c 100644 --- a/chart2/source/controller/inc/dlg_DataEditor.hxx +++ b/chart2/source/controller/inc/dlg_DataEditor.hxx @@ -58,8 +58,10 @@ private: sal_uInt16 TBI_DATA_INSERT_TEXT_COL; sal_uInt16 TBI_DATA_DELETE_ROW; sal_uInt16 TBI_DATA_DELETE_COL; - sal_uInt16 TBI_DATA_SWAP_COL; - sal_uInt16 TBI_DATA_SWAP_ROW; + sal_uInt16 TBI_DATA_MOVE_LEFT_COL; + sal_uInt16 TBI_DATA_MOVE_RIGHT_COL; + sal_uInt16 TBI_DATA_MOVE_UP_ROW; + sal_uInt16 TBI_DATA_MOVE_DOWN_ROW; bool m_bReadOnly; VclPtr<DataBrowser> m_xBrwData; diff --git a/chart2/uiconfig/ui/chartdatadialog.ui b/chart2/uiconfig/ui/chartdatadialog.ui index d4bc8d0ea057..f5c3f2b15897 100644 --- a/chart2/uiconfig/ui/chartdatadialog.ui +++ b/chart2/uiconfig/ui/chartdatadialog.ui @@ -161,10 +161,24 @@ </packing> </child> <child> - <object class="GtkToolButton" id="SwapColumn"> + <object class="GtkToolButton" id="MoveLeftColumn"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="action_name">MoveLeftColumn</property> + <property name="label" translatable="yes">Move Series Left</property> + <property name="use_underline">True</property> + <property name="icon_name">chart2/res/dataeditor_icon08.png</property> + </object> + <packing> + <property name="expand">False</property> + <property name="homogeneous">True</property> + </packing> + </child> + <child> + <object class="GtkToolButton" id="MoveRightColumn"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="action_name">SwapColumn</property> + <property name="action_name">MoveRightColumn</property> <property name="label" translatable="yes">Move Series Right</property> <property name="use_underline">True</property> <property name="icon_name">chart2/res/dataeditor_icon05.png</property> @@ -175,10 +189,24 @@ </packing> </child> <child> - <object class="GtkToolButton" id="SwapRow"> + <object class="GtkToolButton" id="MoveUpRow"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="action_name">MoveUpRow</property> + <property name="label" translatable="yes">Move Row Up</property> + <property name="use_underline">True</property> + <property name="icon_name">chart2/res/dataeditor_icon09.png</property> + </object> + <packing> + <property name="expand">False</property> + <property name="homogeneous">True</property> + </packing> + </child> + <child> + <object class="GtkToolButton" id="MoveDownRow"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="action_name">SwapRow</property> + <property name="action_name">MoveDownRow</property> <property name="label" translatable="yes">Move Row Down</property> <property name="use_underline">True</property> <property name="icon_name">chart2/res/dataeditor_icon06.png</property> |