summaryrefslogtreecommitdiff
path: root/chart2/source/controller/dialogs/DataBrowser.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/controller/dialogs/DataBrowser.cxx')
-rw-r--r--chart2/source/controller/dialogs/DataBrowser.cxx155
1 files changed, 72 insertions, 83 deletions
diff --git a/chart2/source/controller/dialogs/DataBrowser.cxx b/chart2/source/controller/dialogs/DataBrowser.cxx
index a5df0dcc03e4..7cab156b530c 100644
--- a/chart2/source/controller/dialogs/DataBrowser.cxx
+++ b/chart2/source/controller/dialogs/DataBrowser.cxx
@@ -20,8 +20,9 @@
#include <svl/zforlist.hxx>
#include "DataBrowser.hxx"
-#include "DataBrowserModel.hxx"
+#include <DataBrowserModel.hxx>
#include <strings.hrc>
+#include <DataSeries.hxx>
#include <DataSeriesHelper.hxx>
#include <DiagramHelper.hxx>
#include <CommonConverters.hxx>
@@ -30,21 +31,22 @@
#include <ResId.hxx>
#include <bitmaps.hlst>
#include <helpids.h>
+#include <ChartModel.hxx>
+#include <ChartType.hxx>
#include <vcl/weld.hxx>
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
#include <vcl/virdev.hxx>
-#include <rtl/math.hxx>
#include <o3tl/safeint.hxx>
#include <osl/diagnose.h>
+#include <svl/numformat.hxx>
#include <toolkit/helper/vclunohelper.hxx>
-#include <com/sun/star/chart2/XChartDocument.hpp>
-#include <com/sun/star/chart2/XChartType.hpp>
#include <com/sun/star/container/XIndexReplace.hpp>
#include <algorithm>
+#include <limits>
using namespace ::com::sun::star;
@@ -86,7 +88,7 @@ namespace impl
class SeriesHeaderEdit
{
public:
- explicit SeriesHeaderEdit(std::unique_ptr<weld::Entry> xControl);
+ explicit SeriesHeaderEdit(std::unique_ptr<weld::Entry> xControl, sal_Int32 nHeader);
void setStartColumn( sal_Int32 nStartColumn );
sal_Int32 getStartColumn() const { return m_nStartColumn;}
@@ -115,7 +117,7 @@ private:
bool m_bShowWarningBox;
};
-SeriesHeaderEdit::SeriesHeaderEdit(std::unique_ptr<weld::Entry> xControl)
+SeriesHeaderEdit::SeriesHeaderEdit(std::unique_ptr<weld::Entry> xControl, sal_Int32 nHeader)
: m_xControl(std::move(xControl))
, m_nStartColumn(0)
, m_bShowWarningBox(false)
@@ -124,6 +126,8 @@ SeriesHeaderEdit::SeriesHeaderEdit(std::unique_ptr<weld::Entry> xControl)
m_xControl->connect_changed(LINK(this, SeriesHeaderEdit, NameEdited));
m_xControl->connect_focus_in(LINK(this, SeriesHeaderEdit, NameFocusIn));
m_xControl->connect_mouse_press(LINK(this, SeriesHeaderEdit, MousePressHdl));
+
+ m_xControl->set_buildable_name(m_xControl->get_buildable_name() + OUString::number(nHeader));
}
IMPL_LINK_NOARG(SeriesHeaderEdit, NameEdited, weld::Entry&, void)
@@ -162,13 +166,13 @@ IMPL_LINK_NOARG(SeriesHeaderEdit, MousePressHdl, const MouseEvent&, bool)
class SeriesHeader
{
public:
- explicit SeriesHeader(weld::Container* pParent, weld::Container* pColorParent);
+ explicit SeriesHeader(weld::Container* pParent, weld::Container* pColorParent, sal_Int32 nHeader);
~SeriesHeader();
void SetColor( const Color & rCol );
void SetPos();
void SetWidth( sal_Int32 nWidth );
- void SetChartType( const Reference< chart2::XChartType > & xChartType,
+ void SetChartType( const rtl::Reference< ::chart::ChartType > & xChartType,
bool bSwapXAndYAxis );
void SetSeriesName( const OUString & rName );
void SetRange( sal_Int32 nStartCol, sal_Int32 nEndCol );
@@ -220,7 +224,7 @@ private:
DECL_LINK( SeriesNameEdited, SeriesHeaderEdit&, void );
static OUString GetChartTypeImage(
- const Reference< chart2::XChartType > & xChartType,
+ const rtl::Reference< ::chart::ChartType > & xChartType,
bool bSwapXAndYAxis
);
@@ -229,17 +233,17 @@ private:
bool m_bSeriesNameChangePending;
};
-SeriesHeader::SeriesHeader(weld::Container* pParent, weld::Container* pColorParent)
- : m_aUpdateDataTimer("UpdateDataTimer")
- , m_xBuilder1(Application::CreateBuilder(pParent, "modules/schart/ui/columnfragment.ui"))
- , m_xBuilder2(Application::CreateBuilder(pColorParent, "modules/schart/ui/imagefragment.ui"))
+SeriesHeader::SeriesHeader(weld::Container* pParent, weld::Container* pColorParent, sal_Int32 nHeader)
+ : m_aUpdateDataTimer( "SeriesHeader UpdateDataTimer" )
+ , m_xBuilder1(Application::CreateBuilder(pParent, u"modules/schart/ui/columnfragment.ui"_ustr))
+ , m_xBuilder2(Application::CreateBuilder(pColorParent, u"modules/schart/ui/imagefragment.ui"_ustr))
, m_pParent(pParent)
, m_pColorParent(pColorParent)
- , m_xContainer1(m_xBuilder1->weld_container("container"))
- , m_xContainer2(m_xBuilder2->weld_container("container"))
- , m_spSymbol(m_xBuilder1->weld_image("image"))
- , m_spSeriesName(new SeriesHeaderEdit(m_xBuilder1->weld_entry("entry")))
- , m_spColorBar(m_xBuilder2->weld_image("image"))
+ , m_xContainer1(m_xBuilder1->weld_container(u"container"_ustr))
+ , m_xContainer2(m_xBuilder2->weld_container(u"container"_ustr))
+ , m_spSymbol(m_xBuilder1->weld_image(u"image"_ustr))
+ , m_spSeriesName(new SeriesHeaderEdit(m_xBuilder1->weld_entry(u"entry"_ustr), nHeader))
+ , m_spColorBar(m_xBuilder2->weld_image(u"image"_ustr))
, m_xDevice(Application::GetDefaultDevice())
, m_nStartCol( 0 )
, m_nEndCol( 0 )
@@ -247,7 +251,6 @@ SeriesHeader::SeriesHeader(weld::Container* pParent, weld::Container* pColorPare
, m_bSeriesNameChangePending( false )
{
m_aUpdateDataTimer.SetInvokeHandler(LINK(this, SeriesHeader, ImplUpdateDataHdl));
- m_aUpdateDataTimer.SetDebugName( "SeriesHeader UpdateDataTimer" );
m_aUpdateDataTimer.SetTimeout(4 * EDIT_UPDATEDATA_TIMEOUT);
m_spSeriesName->SetModifyHdl(LINK(this, SeriesHeader, SeriesNameEdited));
@@ -290,20 +293,15 @@ void SeriesHeader::SetPos()
// series name edit field
m_spSeriesName->set_margin_start(2);
- aSize.setWidth(nSymbolHeight);
- aSize.setHeight(12);
- aSize = m_xDevice->LogicToPixel(aSize, MapMode(MapUnit::MapAppFont));
- aSize.setWidth(m_nWidth - aSize.Width() - 2);
- m_spSeriesName->set_size_request(aSize.Width(), aSize.Height());
+ sal_Int32 nHeightPx = m_xDevice->LogicToPixel(Size(0, 12), MapMode(MapUnit::MapAppFont)).Height();
+ m_spSeriesName->set_size_request(m_nWidth - aSize.Width() - 2, nHeightPx);
// color bar
- aSize.setHeight(3);
- aSize = m_xDevice->LogicToPixel(aSize, MapMode(MapUnit::MapAppFont));
- aSize.setWidth(m_nWidth);
- m_spColorBar->set_size_request(aSize.Width(), aSize.Height());
+ nHeightPx = m_xDevice->LogicToPixel(Size(0, 3), MapMode(MapUnit::MapAppFont)).Height();
+ m_spColorBar->set_size_request(m_nWidth, nHeightPx);
- auto xVirDev(m_spColorBar->create_virtual_device());
- xVirDev->SetOutputSizePixel(aSize);
+ ScopedVclPtr<VirtualDevice> xVirDev(m_spColorBar->create_virtual_device());
+ xVirDev->SetOutputSizePixel(Size(m_nWidth, nHeightPx));
xVirDev->SetFillColor(m_aColor);
xVirDev->SetLineColor(m_aColor);
xVirDev->DrawRect(tools::Rectangle(Point(0, 0), aSize));
@@ -322,7 +320,7 @@ void SeriesHeader::SetPixelWidth( sal_Int32 nWidth )
}
void SeriesHeader::SetChartType(
- const Reference< chart2::XChartType > & xChartType,
+ const rtl::Reference< ChartType > & xChartType,
bool bSwapXAndYAxis
)
{
@@ -380,7 +378,7 @@ bool SeriesHeader::HasFocus() const
}
OUString SeriesHeader::GetChartTypeImage(
- const Reference< chart2::XChartType > & xChartType,
+ const rtl::Reference< ChartType > & xChartType,
bool bSwapXAndYAxis
)
{
@@ -489,10 +487,8 @@ DataBrowser::DataBrowser(const css::uno::Reference<css::awt::XWindow> &rParent,
m_rNumberEditController( new ::svt::FormattedFieldCellController( m_aNumberEditField.get() )),
m_rTextEditController( new ::svt::EditCellController( m_aTextEditField.get() ))
{
- double fNan;
- ::rtl::math::setNan( & fNan );
Formatter& rFormatter = m_aNumberEditField->get_formatter();
- rFormatter.SetDefaultValue( fNan );
+ rFormatter.SetDefaultValue( std::numeric_limits<double>::quiet_NaN() );
rFormatter.TreatAsNumber( true );
RenewTable();
}
@@ -621,7 +617,7 @@ void DataBrowser::RenewTable()
GetDataWindow().LogicToPixel( Size( 42, 0 )).getWidth() ));
OUString aDefaultSeriesName(SchResId(STR_COLUMN_LABEL));
- replaceParamterInString( aDefaultSeriesName, "%COLUMNNUMBER", OUString::number( 24 ) );
+ replaceParamterInString( aDefaultSeriesName, u"%COLUMNNUMBER", OUString::number( 24 ) );
sal_Int32 nColumnWidth = GetDataWindow().GetTextWidth( aDefaultSeriesName )
+ GetDataWindow().LogicToPixel(Point(8 + impl::SeriesHeader::GetRelativeAppFontXPosForNameField(), 0), MapMode(MapUnit::MapAppFont)).X();
sal_Int32 nColumnCount = m_apDataBrowserModel->getColumnCount();
@@ -642,22 +638,21 @@ void DataBrowser::RenewTable()
Link<impl::SeriesHeaderEdit&,void> aFocusLink( LINK( this, DataBrowser, SeriesHeaderGotFocus ));
Link<impl::SeriesHeaderEdit&,void> aSeriesHeaderChangedLink( LINK( this, DataBrowser, SeriesHeaderChanged ));
- for (auto const& elemHeader : aHeaders)
+ for (size_t i = 0; i < aHeaders.size(); ++i)
{
- auto spHeader = std::make_shared<impl::SeriesHeader>( m_pColumnsWin, m_pColorsWin );
- Reference< beans::XPropertySet > xSeriesProp( elemHeader.m_xDataSeries, uno::UNO_QUERY );
+ auto const& elemHeader = aHeaders[i];
+ auto spHeader = std::make_shared<impl::SeriesHeader>( m_pColumnsWin, m_pColorsWin, i);
Color nColor;
// @todo: Set "DraftColor", i.e. interpolated colors for gradients, bitmaps, etc.
- if( xSeriesProp.is() &&
- ( xSeriesProp->getPropertyValue( "Color" ) >>= nColor ))
+ if( elemHeader.m_xDataSeries.is() &&
+ ( elemHeader.m_xDataSeries->getPropertyValue( u"Color"_ustr ) >>= nColor ))
spHeader->SetColor( nColor );
spHeader->SetChartType( elemHeader.m_xChartType, elemHeader.m_bSwapXAndYAxis );
spHeader->SetSeriesName(
- DataSeriesHelper::getDataSeriesLabel(
- elemHeader.m_xDataSeries,
- (elemHeader.m_xChartType.is() ?
+ elemHeader.m_xDataSeries->getLabelForRole(
+ elemHeader.m_xChartType.is() ?
elemHeader.m_xChartType->getRoleOfSequenceForSeriesLabel() :
- OUString("values-y"))));
+ u"values-y"_ustr));
// index is 1-based, as 0 is for the column that contains the row-numbers
spHeader->SetRange( elemHeader.m_nStartColumn + 1, elemHeader.m_nEndColumn + 1 );
spHeader->SetGetFocusHdl( aFocusLink );
@@ -671,12 +666,12 @@ void DataBrowser::RenewTable()
Invalidate();
}
-OUString DataBrowser::GetColString( sal_Int32 nColumnId ) const
+const OUString & DataBrowser::GetColString( sal_Int32 nColumnId ) const
{
OSL_ASSERT(m_apDataBrowserModel);
if( nColumnId > 0 )
return m_apDataBrowserModel->getRoleOfColumn( nColumnId - 1 );
- return OUString();
+ return EMPTY_OUSTRING;
}
OUString DataBrowser::GetCellText( sal_Int32 nRow, sal_uInt16 nColumnId ) const
@@ -721,7 +716,7 @@ OUString DataBrowser::GetCellText( sal_Int32 nRow, sal_uInt16 nColumnId ) const
// getDateTimeInputNumberFormat() instead of doing the
// guess work.
sal_Int32 nNumberFormat = DiagramHelper::getDateTimeInputNumberFormat(
- Reference< util::XNumberFormatsSupplier >( m_xChartDoc, uno::UNO_QUERY), fDouble );
+ m_xChartDoc, fDouble );
Color nLabelColor;
bool bColorChanged = false;
aResult = m_spNumberFormatterWrapper->getFormattedString(
@@ -741,16 +736,13 @@ OUString DataBrowser::GetCellText( sal_Int32 nRow, sal_uInt16 nColumnId ) const
double DataBrowser::GetCellNumber( sal_Int32 nRow, sal_uInt16 nColumnId ) const
{
- double fResult;
- ::rtl::math::setNan( & fResult );
-
if(( nColumnId >= 1 ) && ( nRow >= 0 ) && m_apDataBrowserModel)
{
- fResult = m_apDataBrowserModel->getCellNumber(
+ return m_apDataBrowserModel->getCellNumber(
static_cast< sal_Int32 >( nColumnId ) - 1, nRow );
}
- return fResult;
+ return std::numeric_limits<double>::quiet_NaN();
}
void DataBrowser::Resize()
@@ -836,15 +828,13 @@ void DataBrowser::CellModified()
}
void DataBrowser::SetDataFromModel(
- const Reference< chart2::XChartDocument > & xChartDoc,
- const Reference< uno::XComponentContext > & xContext )
+ const rtl::Reference<::chart::ChartModel> & xChartDoc )
{
- m_xChartDoc.set( xChartDoc );
+ m_xChartDoc = xChartDoc;
- m_apDataBrowserModel.reset( new DataBrowserModel( m_xChartDoc, xContext ));
+ m_apDataBrowserModel.reset( new DataBrowserModel( m_xChartDoc ));
m_spNumberFormatterWrapper =
- std::make_shared<NumberFormatterWrapper>(
- Reference< util::XNumberFormatsSupplier >( m_xChartDoc, uno::UNO_QUERY ));
+ std::make_shared<NumberFormatterWrapper>(m_xChartDoc);
Formatter& rFormatter = m_aNumberEditField->get_formatter();
rFormatter.SetFormatter( m_spNumberFormatterWrapper->getSvNumberFormatter() );
@@ -908,9 +898,9 @@ void DataBrowser::RemoveColumn()
void DataBrowser::InsertRow()
{
- sal_Int32 nRowIdx = GetCurRow();
+ sal_Int32 nRowIdx = GetCurRow();
- if( nRowIdx >= 0 && m_apDataBrowserModel)
+ if( nRowIdx >= 0 && m_apDataBrowserModel)
{
// save changes made to edit-field
if( IsModified() )
@@ -923,9 +913,9 @@ void DataBrowser::InsertRow()
void DataBrowser::RemoveRow()
{
- sal_Int32 nRowIdx = GetCurRow();
+ sal_Int32 nRowIdx = GetCurRow();
- if( nRowIdx >= 0 && m_apDataBrowserModel)
+ if( nRowIdx >= 0 && m_apDataBrowserModel)
{
// save changes made to edit-field
if( IsModified() )
@@ -953,7 +943,7 @@ void DataBrowser::MoveLeftColumn()
// keep cursor in swapped column
if(( 0 < GetCurColumnId() ) && ( GetCurColumnId() <= ColCount() - 1 ))
{
- Dispatch( BROWSER_CURSORLEFT );
+ Dispatch(BrowserDispatchId::CURSORLEFT);
}
RenewTable();
}
@@ -974,7 +964,7 @@ void DataBrowser::MoveRightColumn()
// keep cursor in swapped column
if( GetCurColumnId() < ColCount() - 1 )
{
- Dispatch( BROWSER_CURSORRIGHT );
+ Dispatch(BrowserDispatchId::CURSORRIGHT);
}
RenewTable();
}
@@ -995,7 +985,7 @@ void DataBrowser::MoveUpRow()
// keep cursor in swapped row
if(( 0 < GetCurRow() ) && ( GetCurRow() <= GetRowCount() - 1 ))
{
- Dispatch( BROWSER_CURSORUP );
+ Dispatch(BrowserDispatchId::CURSORUP);
}
RenewTable();
}
@@ -1016,7 +1006,7 @@ void DataBrowser::MoveDownRow()
// keep cursor in swapped row
if( GetCurRow() < GetRowCount() - 1 )
{
- Dispatch( BROWSER_CURSORDOWN );
+ Dispatch(BrowserDispatchId::CURSORDOWN);
}
RenewTable();
}
@@ -1274,21 +1264,21 @@ void DataBrowser::RenewSeriesHeaders()
Link<impl::SeriesHeaderEdit&,void> aFocusLink( LINK( this, DataBrowser, SeriesHeaderGotFocus ));
Link<impl::SeriesHeaderEdit&,void> aSeriesHeaderChangedLink( LINK( this, DataBrowser, SeriesHeaderChanged ));
- for (auto const& elemHeader : aHeaders)
+
+ for (size_t i = 0; i < aHeaders.size(); ++i)
{
- auto spHeader = std::make_shared<impl::SeriesHeader>( m_pColumnsWin, m_pColorsWin );
- Reference< beans::XPropertySet > xSeriesProp(elemHeader.m_xDataSeries, uno::UNO_QUERY);
+ auto const& elemHeader = aHeaders[i];
+ auto spHeader = std::make_shared<impl::SeriesHeader>( m_pColumnsWin, m_pColorsWin, i );
Color nColor;
- if( xSeriesProp.is() &&
- ( xSeriesProp->getPropertyValue( "Color" ) >>= nColor ))
+ if( elemHeader.m_xDataSeries.is() &&
+ ( elemHeader.m_xDataSeries->getPropertyValue( u"Color"_ustr ) >>= nColor ))
spHeader->SetColor( nColor );
spHeader->SetChartType( elemHeader.m_xChartType, elemHeader.m_bSwapXAndYAxis );
spHeader->SetSeriesName(
- DataSeriesHelper::getDataSeriesLabel(
- elemHeader.m_xDataSeries,
- (elemHeader.m_xChartType.is() ?
+ elemHeader.m_xDataSeries->getLabelForRole(
+ elemHeader.m_xChartType.is() ?
elemHeader.m_xChartType->getRoleOfSequenceForSeriesLabel() :
- OUString( "values-y"))));
+ u"values-y"_ustr));
spHeader->SetRange( elemHeader.m_nStartColumn + 1, elemHeader.m_nEndColumn + 1 );
spHeader->SetGetFocusHdl( aFocusLink );
spHeader->SetEditChangedHdl( aSeriesHeaderChangedLink );
@@ -1365,18 +1355,17 @@ IMPL_LINK( DataBrowser, SeriesHeaderGotFocus, impl::SeriesHeaderEdit&, rEdit, vo
IMPL_LINK( DataBrowser, SeriesHeaderChanged, impl::SeriesHeaderEdit&, rEdit, void )
{
- Reference< chart2::XDataSeries > xSeries(
- m_apDataBrowserModel->getDataSeriesByColumn( rEdit.getStartColumn() - 1 ));
- Reference< chart2::data::XDataSource > xSource( xSeries, uno::UNO_QUERY );
- if( !xSource.is())
+ rtl::Reference< DataSeries > xSeries =
+ m_apDataBrowserModel->getDataSeriesByColumn( rEdit.getStartColumn() - 1 );
+ if( !xSeries.is())
return;
- Reference< chart2::XChartType > xChartType(
+ rtl::Reference< ChartType > xChartType(
m_apDataBrowserModel->getHeaderForSeries( xSeries ).m_xChartType );
if( xChartType.is())
{
- Reference< chart2::data::XLabeledDataSequence > xLabeledSeq(
- DataSeriesHelper::getDataSequenceByRole( xSource, xChartType->getRoleOfSequenceForSeriesLabel()));
+ uno::Reference< chart2::data::XLabeledDataSequence > xLabeledSeq =
+ DataSeriesHelper::getDataSequenceByRole( xSeries, xChartType->getRoleOfSequenceForSeriesLabel());
if( xLabeledSeq.is())
{
Reference< container::XIndexReplace > xIndexReplace( xLabeledSeq->getLabel(), uno::UNO_QUERY );