From 8566d712a87d9e3a78be15b6bd3498c2cf8afe57 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 7 Jan 2014 10:46:26 +0200 Subject: Fix setting theme type Now reset the theme properties immediately to new theme type, instead of waiting for the theme activation. Also make changing theme type later work consistently. Task-number: QTRD-2750 Change-Id: I970d69587623119df33ad2a825fbc12367804eae Reviewed-by: Mika Salmela --- tests/barstest/chart.cpp | 18 ++++++------------ tests/barstest/chart.h | 1 + tests/multigraphs/data.cpp | 16 +++++----------- tests/scattertest/scatterchart.cpp | 7 ++----- tests/surfacetest/graphmodifier.cpp | 5 +---- tests/surfacetest/main.cpp | 2 +- 6 files changed, 16 insertions(+), 33 deletions(-) (limited to 'tests') diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp index 5c36607e..73f0074c 100644 --- a/tests/barstest/chart.cpp +++ b/tests/barstest/chart.cpp @@ -64,7 +64,8 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog) m_negativeValuesOn(false), m_useNullInputHandler(false), m_defaultInputHandler(0), - m_ownTheme(0) + m_ownTheme(0), + m_builtinTheme(new Q3DTheme(Q3DTheme::ThemeStoneMoss)) { // Generate generic labels QStringList genericColumnLabels; @@ -117,7 +118,7 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog) m_graph->addAxis(m_genericRowAxis); m_graph->addAxis(m_genericColumnAxis); - m_graph->setActiveTheme(new Q3DTheme(Q3DTheme::ThemeStoneMoss)); + m_graph->setActiveTheme(m_builtinTheme); m_graph->setShadowQuality(QDataVis::ShadowQualitySoftMedium); m_temperatureData->setItemLabelFormat(QStringLiteral("1: @valueTitle for @colLabel @rowLabel: @valueLabel")); @@ -578,11 +579,9 @@ void GraphModifier::changeTheme() static int theme = Q3DTheme::ThemeQt; Q3DTheme *currentTheme = m_graph->activeTheme(); - if (currentTheme != m_ownTheme) { - m_graph->releaseTheme(currentTheme); - delete currentTheme; - } - m_graph->setActiveTheme(new Q3DTheme((Q3DTheme::Theme)theme)); + m_builtinTheme->setType(Q3DTheme::Theme(theme)); + if (currentTheme == m_ownTheme) + m_graph->setActiveTheme(m_builtinTheme); switch (theme) { case Q3DTheme::ThemeQt: @@ -851,11 +850,6 @@ void GraphModifier::useOwnTheme() m_ownTheme->setWindowColor(QColor(QRgb(0xffffff))); } - Q3DTheme *currentTheme = m_graph->activeTheme(); - if (currentTheme != m_ownTheme) { - m_graph->releaseTheme(currentTheme); - delete currentTheme; - } m_graph->setActiveTheme(m_ownTheme); m_colorDialog->open(); diff --git a/tests/barstest/chart.h b/tests/barstest/chart.h index 3948ca8f..77b10093 100644 --- a/tests/barstest/chart.h +++ b/tests/barstest/chart.h @@ -130,6 +130,7 @@ private: bool m_useNullInputHandler; QAbstract3DInputHandler *m_defaultInputHandler; Q3DTheme *m_ownTheme; + Q3DTheme *m_builtinTheme; }; #endif diff --git a/tests/multigraphs/data.cpp b/tests/multigraphs/data.cpp index 177d86b7..7ba5685f 100644 --- a/tests/multigraphs/data.cpp +++ b/tests/multigraphs/data.cpp @@ -45,7 +45,7 @@ Data::Data(Q3DSurface *surface, Q3DScatter *scatter, Q3DBars *bars, m_started(false) { // Initialize surface - m_surface->setActiveTheme(new Q3DTheme(Q3DTheme::ThemeIsabelle)); + m_surface->activeTheme()->setType(Q3DTheme::ThemeIsabelle); QLinearGradient gradient; gradient.setColorAt(0.0, Qt::black); gradient.setColorAt(0.33, Qt::blue); @@ -63,7 +63,7 @@ Data::Data(Q3DSurface *surface, Q3DScatter *scatter, Q3DBars *bars, m_surface->addSeries(series1); // Initialize scatter - m_scatter->setActiveTheme(new Q3DTheme(Q3DTheme::ThemeStoneMoss)); + m_scatter->activeTheme()->setType(Q3DTheme::ThemeStoneMoss); m_scatter->setSelectionMode(QDataVis::SelectionNone); m_scatter->activeTheme()->setGridEnabled(false); m_scatter->setShadowQuality(QDataVis::ShadowQualitySoftLow); @@ -73,7 +73,7 @@ Data::Data(Q3DSurface *surface, Q3DScatter *scatter, Q3DBars *bars, m_scatter->addSeries(series2); // Initialize bars - m_bars->setActiveTheme(new Q3DTheme(Q3DTheme::ThemeQt)); + m_bars->activeTheme()->setType(Q3DTheme::ThemeQt); m_bars->setSelectionMode(QDataVis::SelectionItemAndRow | QDataVis::SelectionSlice); m_bars->activeTheme()->setGridEnabled(false); m_bars->setShadowQuality(QDataVis::ShadowQualityLow); @@ -185,10 +185,7 @@ void Data::scrollDown() void Data::useGradientOne() { - Q3DTheme *currentTheme = m_surface->activeTheme(); - m_surface->releaseTheme(currentTheme); - delete currentTheme; - m_surface->setActiveTheme(new Q3DTheme(Q3DTheme::ThemeIsabelle)); + m_surface->activeTheme()->setType(Q3DTheme::ThemeIsabelle); QLinearGradient gradient; gradient.setColorAt(0.0, Qt::black); gradient.setColorAt(0.33, Qt::blue); @@ -201,10 +198,7 @@ void Data::useGradientOne() void Data::useGradientTwo() { - Q3DTheme *currentTheme = m_surface->activeTheme(); - m_surface->releaseTheme(currentTheme); - delete currentTheme; - m_surface->setActiveTheme(new Q3DTheme(Q3DTheme::ThemeQt)); + m_surface->activeTheme()->setType(Q3DTheme::ThemeQt); QLinearGradient gradient; gradient.setColorAt(0.0, Qt::white); gradient.setColorAt(0.8, Qt::red); diff --git a/tests/scattertest/scatterchart.cpp b/tests/scattertest/scatterchart.cpp index 10f48465..2277ca3f 100644 --- a/tests/scattertest/scatterchart.cpp +++ b/tests/scattertest/scatterchart.cpp @@ -37,7 +37,7 @@ ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter) m_selectedItem(-1), m_targetSeries(0) { - m_chart->setActiveTheme(new Q3DTheme(Q3DTheme::ThemeStoneMoss)); + m_chart->activeTheme()->setType(Q3DTheme::ThemeStoneMoss); QFont font = m_chart->activeTheme()->font(); font.setPointSize(m_fontSize); m_chart->activeTheme()->setFont(font); @@ -161,10 +161,7 @@ void ScatterDataModifier::changeTheme() { static int theme = Q3DTheme::ThemeQt; - Q3DTheme *currentTheme = m_chart->activeTheme(); - m_chart->releaseTheme(currentTheme); - delete currentTheme; - m_chart->setActiveTheme(new Q3DTheme(Q3DTheme::Theme(theme))); + m_chart->activeTheme()->setType(Q3DTheme::Theme(theme)); if (++theme > Q3DTheme::ThemeIsabelle) theme = Q3DTheme::ThemeQt; diff --git a/tests/surfacetest/graphmodifier.cpp b/tests/surfacetest/graphmodifier.cpp index 749b1c69..be96a696 100644 --- a/tests/surfacetest/graphmodifier.cpp +++ b/tests/surfacetest/graphmodifier.cpp @@ -363,10 +363,7 @@ void GraphModifier::selectedPointChanged(const QPoint &point) void GraphModifier::changeTheme(int theme) { - Q3DTheme *currentTheme = m_graph->activeTheme(); - m_graph->releaseTheme(currentTheme); - delete currentTheme; - m_graph->setActiveTheme(new Q3DTheme(Q3DTheme::Theme(theme))); + m_graph->activeTheme()->setType(Q3DTheme::Theme(theme)); } diff --git a/tests/surfacetest/main.cpp b/tests/surfacetest/main.cpp index 5a26c7ce..54c27981 100644 --- a/tests/surfacetest/main.cpp +++ b/tests/surfacetest/main.cpp @@ -52,7 +52,7 @@ int main(int argc, char *argv[]) QSize screenSize = surfaceGraph->screen()->size(); // Set to default, should be same as the initial on themeList - surfaceGraph->setActiveTheme(new Q3DTheme(Q3DTheme::Theme(initialTheme))); + surfaceGraph->activeTheme()->setType(Q3DTheme::Theme(initialTheme)); QWidget *container = QWidget::createWindowContainer(surfaceGraph); container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 2)); -- cgit v1.2.3