diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2017-02-26 22:48:06 +0100 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2017-04-04 13:39:29 +0000 |
commit | 9009663deb8f0862f419fd99bf0b761c7f923eff (patch) | |
tree | ea25976de0919f9d2161037d83be0eace4c1070b /chart2/source/controller/dialogs/dlg_CreationWizard.cxx | |
parent | can simplify now (diff) | |
download | core-9009663deb8f0862f419fd99bf0b761c7f923eff.tar.gz core-9009663deb8f0862f419fd99bf0b761c7f923eff.zip |
tdf#83257 [API-CHANGE] Pivot chart implementation
This is a squashed commit of the pivot chart implementation.
Some of the changes:
- Add pivot chart specific (pivot table) data provider which
provides the data from a pivot table to the associated chart.
- When inserting a chart and the cursor is in a pivot table,
in that case insert a pivot chart
- Modify the pivot chart when the pivot table changes
- Collect and set the number format for the values
- isDataFromSpreadsheet check for the creation wizard
- In ChartView (and VLegend) check if the data provider is a
pivot chart data provider and get the pivot table field names
to create the buttons on the UI.
- Adds the functionallity to show a filter pop-up (from calc)
when clicking on row / column / page field buttons.
- Remove (X)PopupRequest as we won't need it.
- Add ODF import/export for pivot charts:
+ Added loext:data-pilot-source attribute on chart:chart
which is the internal name of the pivot table with which the
pivot chart is associated with. If the element is present, then
the it means the chart is a pivot chart, else it is a normal
chart
+ Added service to create pivot chart data provider through UNO
+ Add new methods to XPivotChartDataProvider to create value and
label data sequences separately from the data source, which is
needed for pivot chart import
+ When importing defer setting the data provider until a later
time when we know if we are creating a chart od a pivot chart
- Pivot chart ODF round-trip test
- Add table pivot chart supplier API:
This adds the XTablePivotChartSupplier and related interfaces so
we can access, create, delete pivot charts from UNO in a sheet
document. With this we now distinguish between normal charts
and pivot charts. This was mainly needed because we can't extend
the "published" interfaces of TableChartSupplier.
- Added an extensive test, which uses the API to create a new
pivot chart when there was none, and checks that the pivot chart
updates when the pivot table updates.
Change-Id: Ia9ed96fd6b1d342e61c2f7f9fa33a5e03dda21af
Reviewed-on: https://gerrit.libreoffice.org/36023
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'chart2/source/controller/dialogs/dlg_CreationWizard.cxx')
-rw-r--r-- | chart2/source/controller/dialogs/dlg_CreationWizard.cxx | 61 |
1 files changed, 32 insertions, 29 deletions
diff --git a/chart2/source/controller/dialogs/dlg_CreationWizard.cxx b/chart2/source/controller/dialogs/dlg_CreationWizard.cxx index 501272f5c486..b4beb73575a4 100644 --- a/chart2/source/controller/dialogs/dlg_CreationWizard.cxx +++ b/chart2/source/controller/dialogs/dlg_CreationWizard.cxx @@ -33,10 +33,10 @@ #define CHART_WIZARD_PAGEWIDTH 250 #define CHART_WIZARD_PAGEHEIGHT 170 +using namespace css; + namespace chart { -using namespace ::com::sun::star; - #define PATH_FULL 1 #define STATE_FIRST 0 #define STATE_CHARTTYPE STATE_FIRST @@ -45,41 +45,42 @@ using namespace ::com::sun::star; #define STATE_OBJECTS 3 #define STATE_LAST STATE_OBJECTS -CreationWizard::CreationWizard( vcl::Window* pParent, const uno::Reference< frame::XModel >& xChartModel - , const uno::Reference< uno::XComponentContext >& xContext ) - : svt::RoadmapWizard( pParent ) +CreationWizard::CreationWizard(vcl::Window* pParent, const uno::Reference<frame::XModel>& xChartModel, + const uno::Reference<uno::XComponentContext>& xContext) + : svt::RoadmapWizard(pParent) , m_xChartModel(xChartModel,uno::UNO_QUERY) - , m_xCC( xContext ) + , m_xComponentContext(xContext) , m_pTemplateProvider(nullptr) , m_nLastState(STATE_LAST) - , m_aTimerTriggeredControllerLock( xChartModel ) - , m_bCanTravel( true ) + , m_aTimerTriggeredControllerLock(xChartModel) + , m_bCanTravel(true) { - m_pDialogModel.reset( new DialogModel( m_xChartModel, m_xCC )); - defaultButton( WizardButtonFlags::FINISH ); + m_pDialogModel.reset(new DialogModel(m_xChartModel, m_xComponentContext)); + defaultButton(WizardButtonFlags::FINISH); this->setTitleBase(SCH_RESSTR(STR_DLG_CHART_WIZARD)); - declarePath( PATH_FULL - , {STATE_CHARTTYPE - , STATE_SIMPLE_RANGE - , STATE_DATA_SERIES - , STATE_OBJECTS} - ); - this->SetRoadmapHelpId( HID_SCH_WIZARD_ROADMAP ); - this->SetRoadmapInteractive( true ); - Size aAdditionalRoadmapSize( LogicToPixel( Size( 85, 0 ), MapUnit::MapAppFont ) ); + WizardPath aPath = { + STATE_CHARTTYPE, + STATE_SIMPLE_RANGE, + STATE_DATA_SERIES, + STATE_OBJECTS + }; + + declarePath(PATH_FULL, aPath); + + this->SetRoadmapHelpId(HID_SCH_WIZARD_ROADMAP); + this->SetRoadmapInteractive(true); + + Size aAdditionalRoadmapSize(LogicToPixel(Size(85, 0), MapUnit::MapAppFont)); Size aSize(LogicToPixel(Size(CHART_WIZARD_PAGEWIDTH, CHART_WIZARD_PAGEHEIGHT), MapUnit::MapAppFont)); aSize.Width() += aAdditionalRoadmapSize.Width(); - this->SetSizePixel( aSize ); - - uno::Reference< chart2::XChartDocument > xChartDoc( m_xChartModel, uno::UNO_QUERY ); - bool bHasOwnData = (xChartDoc.is() && xChartDoc->hasInternalDataProvider()); + this->SetSizePixel(aSize); - if( bHasOwnData ) + if (!m_pDialogModel->getModel().isDataFromSpreadsheet()) { - this->enableState( STATE_SIMPLE_RANGE, false ); - this->enableState( STATE_DATA_SERIES, false ); + enableState(STATE_SIMPLE_RANGE, false); + enableState(STATE_DATA_SERIES, false); } // Call ActivatePage, to create and activate the first page @@ -117,15 +118,17 @@ VclPtr<TabPage> CreationWizard::createPage(WizardState nState) break; case STATE_OBJECTS: { - pRet = VclPtr<TitlesAndObjectsTabPage>::Create(this,m_xChartModel,m_xCC); + pRet = VclPtr<TitlesAndObjectsTabPage>::Create(this,m_xChartModel, m_xComponentContext); m_aTimerTriggeredControllerLock.startTimer(); } break; default: break; } - if(pRet) - pRet->SetText(OUString());//remove title of pages to not get them in the wizard title + + if (pRet) + pRet->SetText(OUString()); //remove title of pages to not get them in the wizard title + return pRet; } |