summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorMuhammet Kara <muhammet.kara@collabora.com>2019-11-07 16:02:15 +0300
committerMuhammet Kara <muhammet.kara@collabora.com>2019-11-07 15:12:24 +0100
commit4922c7a0a7269285f0e7d669a7b53350f55e9ae0 (patch)
treedac0f9145de93d0ee78fd63f61a632583069138f /chart2
parenteb38c0470195869b8c38b864cbb9692cd02f15e5 (diff)
ChartTypePanel: Add handler for main chart type ListBox
Change-Id: I3488dec747cfe62478e7924df5e2574ac291e4e3 Reviewed-on: https://gerrit.libreoffice.org/82216 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/controller/sidebar/ChartTypePanel.cxx71
-rw-r--r--chart2/source/controller/sidebar/ChartTypePanel.hxx8
2 files changed, 69 insertions, 10 deletions
diff --git a/chart2/source/controller/sidebar/ChartTypePanel.cxx b/chart2/source/controller/sidebar/ChartTypePanel.cxx
index 8edc16265baa..1499c5270507 100644
--- a/chart2/source/controller/sidebar/ChartTypePanel.cxx
+++ b/chart2/source/controller/sidebar/ChartTypePanel.cxx
@@ -602,14 +602,13 @@ ChartTypePanel::ChartTypePanel(vcl::Window* pParent,
get(m_pMainTypeList, "cmb_chartType");
get(m_pSubTypeList, "subtype");
- //Chart Type related
- m_pMainTypeList->SetSelectHdl(LINK(this, ChartTypePanel, SelectMainTypeHdl));
- m_pSubTypeList->SetSelectHdl(LINK(this, ChartTypePanel, SelectSubTypeHdl));
-
Size aSize(m_pSubTypeList->LogicToPixel(Size(120, 40), MapMode(MapUnit::MapAppFont)));
m_pSubTypeList->set_width_request(aSize.Width());
m_pSubTypeList->set_height_request(aSize.Height());
+ m_pMainTypeList->SetSelectHdl(LINK(this, ChartTypePanel, SelectMainTypeHdl));
+ m_pSubTypeList->SetSelectHdl(LINK(this, ChartTypePanel, SelectSubTypeHdl));
+
m_pSubTypeList->SetStyle(m_pSubTypeList->GetStyle() | WB_ITEMBORDER | WB_DOUBLEBORDER
| WB_NAMEFIELD | WB_FLATVALUESET | WB_3DLOOK);
m_pSubTypeList->SetColCount(4);
@@ -641,11 +640,14 @@ ChartTypePanel::ChartTypePanel(vcl::Window* pParent,
m_aChartTypeDialogControllerList.push_back(
o3tl::make_unique<BubbleChartDialogController>());
}
+
m_aChartTypeDialogControllerList.push_back(o3tl::make_unique<NetChartDialogController>());
+
if (bEnableComplexChartTypes)
{
m_aChartTypeDialogControllerList.push_back(o3tl::make_unique<StockChartDialogController>());
}
+
m_aChartTypeDialogControllerList.push_back(
o3tl::make_unique<CombiColumnLineChartDialogController>());
@@ -686,10 +688,7 @@ void ChartTypePanel::dispose()
PanelLayout::dispose();
}
-IMPL_LINK_NOARG(ChartTypePanel, SelectMainTypeHdl, ListBox&, void)
-{
- //selectMainType();
-}
+IMPL_LINK_NOARG(ChartTypePanel, SelectMainTypeHdl, ListBox&, void) { selectMainType(); }
IMPL_LINK_NOARG(ChartTypePanel, SelectSubTypeHdl, ValueSet*, void)
{
@@ -866,7 +865,6 @@ void ChartTypePanel::showAllControls(ChartTypeDialogController& rTypeController)
bShow = rTypeController.shouldShow_SortByXValuesResourceGroup();
m_pSortByXValuesResourceGroup->showControls(bShow);
- // TODO: Extend ChartTypeDialogController::showExtraControls()
rTypeController.showExtraControls(this);
}
@@ -874,6 +872,7 @@ void ChartTypePanel::fillAllControls(const ChartTypeParameter& rParameter,
bool bAlsoResetSubTypeList)
{
m_nChangingCalls++;
+
if (m_pCurrentMainType && bAlsoResetSubTypeList)
{
m_pCurrentMainType->fillSubTypeList(*m_pSubTypeList, rParameter);
@@ -942,6 +941,60 @@ void ChartTypePanel::commitToModel(const ChartTypeParameter& rParameter)
m_aTimerTriggeredControllerLock.startTimer();
m_pCurrentMainType->commitToModel(rParameter, m_xChartModel);
}
+
+void ChartTypePanel::selectMainType()
+{
+ ChartTypeParameter aParameter(getCurrentParamter());
+
+ if (m_pCurrentMainType)
+ {
+ m_pCurrentMainType->adjustParameterToSubType(aParameter);
+ m_pCurrentMainType->hideExtraControls();
+ }
+
+ m_pCurrentMainType = getSelectedMainType();
+ if (m_pCurrentMainType)
+ {
+ showAllControls(*m_pCurrentMainType);
+
+ m_pCurrentMainType->adjustParameterToMainType(aParameter);
+ commitToModel(aParameter);
+ //detect the new ThreeDLookScheme
+ aParameter.eThreeDLookScheme
+ = ThreeDHelper::detectScheme(ChartModelHelper::findDiagram(m_xChartModel));
+ if (!aParameter.b3DLook && aParameter.eThreeDLookScheme != ThreeDLookScheme_Realistic)
+ aParameter.eThreeDLookScheme = ThreeDLookScheme_Realistic;
+
+ uno::Reference<css::chart2::XDiagram> xDiagram
+ = ChartModelHelper::findDiagram(m_xChartModel);
+ try
+ {
+ uno::Reference<beans::XPropertySet> xPropSet(xDiagram, uno::UNO_QUERY_THROW);
+ xPropSet->getPropertyValue(CHART_UNONAME_SORT_BY_XVALUES) >>= aParameter.bSortByXValues;
+ }
+ catch (const uno::Exception&)
+ {
+ DBG_UNHANDLED_EXCEPTION("chart2");
+ }
+
+ fillAllControls(aParameter);
+ uno::Reference<beans::XPropertySet> xTemplateProps(getCurrentTemplate(), uno::UNO_QUERY);
+ m_pCurrentMainType->fillExtraControls(aParameter, m_xChartModel, xTemplateProps);
+ }
+}
+
+uno::Reference<css::chart2::XChartTypeTemplate> ChartTypePanel::getCurrentTemplate() const
+{
+ if (m_pCurrentMainType && m_xChartModel.is())
+ {
+ ChartTypeParameter aParameter(getCurrentParamter());
+ m_pCurrentMainType->adjustParameterToSubType(aParameter);
+ uno::Reference<lang::XMultiServiceFactory> xTemplateManager(
+ m_xChartModel->getChartTypeManager(), uno::UNO_QUERY);
+ return m_pCurrentMainType->getCurrentTemplate(aParameter, xTemplateManager);
+ }
+ return nullptr;
+}
}
} // end of namespace ::chart::sidebar
diff --git a/chart2/source/controller/sidebar/ChartTypePanel.hxx b/chart2/source/controller/sidebar/ChartTypePanel.hxx
index 007c6fd40f0d..02e9738cbd0f 100644
--- a/chart2/source/controller/sidebar/ChartTypePanel.hxx
+++ b/chart2/source/controller/sidebar/ChartTypePanel.hxx
@@ -25,6 +25,7 @@
//#include <vcl/layout.hxx>
#include "ChartSidebarModifyListener.hxx"
#include <ChartTypeDialogController.hxx>
+#include <ChartTypeTemplateProvider.hxx>
#include <TimerTriggeredControllerLock.hxx>
#include <TitleHelper.hxx>
@@ -61,7 +62,8 @@ class ChartTypePanel : public ResourceChangeListener,
public PanelLayout,
public ::sfx2::sidebar::IContextChangeReceiver,
public sfx2::sidebar::SidebarModelUpdate,
- public ChartSidebarModifyListenerParent
+ public ChartSidebarModifyListenerParent,
+ public ChartTypeTemplateProvider
{
public:
static VclPtr<vcl::Window> Create(vcl::Window* pParent,
@@ -94,6 +96,10 @@ private:
virtual void stateChanged(ChangingResource* pResource) override;
void commitToModel(const ChartTypeParameter& rParameter);
+ void selectMainType();
+
+ virtual css::uno::Reference<css::chart2::XChartTypeTemplate>
+ getCurrentTemplate() const override;
DECL_LINK(SelectMainTypeHdl, ListBox&, void);
DECL_LINK(SelectSubTypeHdl, ValueSet*, void);