//includes here
//namespace here
MethodResultScreen
::MethodResultScreen(PMT
::ItfResultMngmt::IResultReader::SPtr resultReader,
QWidget *parent
) : BasicScreen(parent),
m_journalModel(0),
m_journalView(0),
m_plotPanel(0),
m_journalTab(0),
m_chartTab(0),
m_filterControl(0),
m_backButton(0),
m_printButton(0),
m_deleteButton(0),
m_exportButton(0),
m_advancedFilterSettingsScreen(0),
m_filterSelection(DEFAULT_FILTER),
m_isNavigationFromAdvanceFilter(false)
{
Q_ASSERT(resultReader);
//intialize journal view here
// create chart view
m_plotPanel = new PMT::GuiBase::PlotPanel(DISCRETE_PLOT, REDUCED_RULER, this);
m_plotPanel->enableLimitText(true);
m_plotDataAdapter.setModel(m_chartModel);
PlotCurve *curve = new PlotCurve(StyleInfo::skinColor(StyleInfo::SKIN_COLOR_PLOT_ONE));
curve->setAxes(X_AXIS, Y_AXIS);
curve->attach(m_plotPanel->plot());
//Upcast needed. The QwtSeriesStore<QPointF>::setData needs the parameter of QwtSeriesData<QPointF> *param
//PlotDataAdapter inherits from QwtSeriesData
QwtSeriesData<QPointF> *parentData = &m_plotDataAdapter;
curve->setData(parentData);
// intialize tabs and buttons here
connect(m_plotPanel, SIGNAL(controlValueSelected(int, bool)), SLOT(onControlValueSelected(int)));
}
MethodResultScreen::~MethodResultScreen()
{
}
void MethodResultScreen
::showEvent(QShowEvent *showEvent
) {
updateView();
BasicScreen::showEvent(showEvent);
}
void MethodResultScreen::updateView(void)
{
Q_ASSERT(m_journalModel);
Q_ASSERT(m_filterControl);
//some implementations here regarding filter
m_journalModel->reload();
configurePlot();
}
void MethodResultScreen::configurePlot(void)
{
Q_ASSERT(m_plotPanel);
qDebug("Start configuring plot"); // 140515
time.restart();
PlotControlLimitSet controlLimitSet = PlotControlLimitSet();
if( m_journalModel->chartRows().size() > 0 )
{
QModelIndex valueIndex
= m_chartModel
->index
( m_journalModel
->chartRows
().
at(0),
0 );
if( valueIndex.isValid() && m_journalModel->isMethodVersionCurrent( valueIndex ) )
{
controlLimitSet = m_controlLimitSet;
}
}
// calculate y-axis scale
ChartScaleCalculator chartScaleCalculator;
chartScaleCalculator.calculate(&m_plotDataAdapter, &controlLimitSet);
//TODO:add minimal border gap on maximum.
double minimum = chartScaleCalculator.minimum();
double maximum = chartScaleCalculator.maximum();
m_plotPanel->setControlLimitSet(controlLimitSet);
m_plotPanel->plot()->setAxisScale(Y_AXIS, minimum, maximum);
int sampleCount = m_plotDataAdapter.size();
// calculate x-axis scale
QwtScaleDiv scaleDiv
= DiscreteScaleDivFactory
::create(sampleCount
);
m_plotPanel->plot()->setAxisScaleDiv(X_AXIS, scaleDiv);
// add control values
//initialize controlValues here
m_plotPanel->setControlValues(controlValues, true);
if (controlValues.size() > 0)
{
m_plotPanel->selectControlValue(controlValues.last());
}
// set unit label
m_plotPanel->setAxisLabel(Y_AXIS, m_resultUnit);
// trigger axis update
m_plotPanel->plot()->updateAxes();
qDebug("Finished configuring plot in: %d ms", time.elapsed()); // 140515
}