#include "lrchartaxiseditor.h" #include "ui_lrchartaxiseditor.h" #include "lraxisdata.h" #include "lrbasedesignintf.h" ChartAxisEditor::ChartAxisEditor(LimeReport::ChartItem* item, LimeReport::PageDesignIntf* page, bool isXAxis, QSettings* settings, QWidget* parent): QWidget(parent), ui(new Ui::ChartAxisEditor), m_chartItem(item), m_page(page), m_settings(settings), m_isXAxis(isXAxis) { ui->setupUi(this); readSetting(); init(); } ChartAxisEditor::~ChartAxisEditor() { #if defined(Q_OS_WIN) || defined(Q_OS_MAC) writeSetting(); #endif delete ui; } QSettings* ChartAxisEditor::settings() { if (m_settings) { return m_settings; } m_settings = new QSettings("LimeReport", QCoreApplication::applicationName()); return m_settings; } void ChartAxisEditor::readSetting() { if (settings() == 0) return; settings()->beginGroup("ChartAxisEditor"); QVariant v = settings()->value("Geometry"); if (v.isValid()) { restoreGeometry(v.toByteArray()); } settings()->endGroup(); } void ChartAxisEditor::writeSetting() { if (settings() == 0) { return; } settings()->beginGroup("ChartAxisEditor"); settings()->setValue("Geometry", saveGeometry()); settings()->endGroup(); } void ChartAxisEditor::init() { ui->gbAxis->setTitle(m_isXAxis ? QObject::tr("X Axis") : QObject::tr("Y Axis")); ui->direction_checkbox->setVisible(!m_isXAxis); LimeReport::AxisData* axisData = m_isXAxis ? m_chartItem->xAxisData() : m_chartItem->yAxisData(); ui->minimumSpinBox->setValue(axisData->manualMinimum()); ui->maximumSpinBox->setValue(axisData->manualMaximum()); ui->stepSpinBox->setValue(axisData->manualStep()); ui->minimumCheckBox->setChecked(axisData->isMinimumAutomatic()); ui->maximumCheckBox->setChecked(axisData->isMaximumAutomatic()); ui->stepCheckBox->setChecked(axisData->isStepAutomatic()); ui->direction_checkbox->setChecked(axisData->reverseDirection()); const bool isScaleCalcEnabled = axisData->calculateAxisScale(); ui->enableScaleCalculation_checkbox->setChecked(isScaleCalcEnabled); on_enableScaleCalculation_checkbox_stateChanged(isScaleCalcEnabled); } void ChartAxisEditor::on_minimumCheckBox_stateChanged(int arg1) { const bool isAutomatic = (bool)arg1; ui->minimumSpinBox->setEnabled(!isAutomatic); } void ChartAxisEditor::on_maximumCheckBox_stateChanged(int arg1) { const bool isAutomatic = (bool)arg1; ui->maximumSpinBox->setEnabled(!isAutomatic); } void ChartAxisEditor::on_stepCheckBox_stateChanged(int arg1) { const bool isAutomatic = (bool)arg1; ui->stepSpinBox->setEnabled(!isAutomatic); } void ChartAxisEditor::on_pushButtonOk_clicked() { LimeReport::AxisData* axisData = m_isXAxis ? m_chartItem->xAxisData() : m_chartItem->yAxisData(); if (!m_isXAxis) { axisData->setReverseDirection(ui->direction_checkbox->isChecked()); } axisData->setIsStepAutomatic(ui->stepCheckBox->isChecked()); axisData->setManualStep(ui->stepSpinBox->value()); axisData->setIsMinimumAutomatic(ui->minimumCheckBox->isChecked()); axisData->setManualMinimum(ui->minimumSpinBox->value()); axisData->setIsMaximumAutomatic(ui->maximumCheckBox->isChecked()); axisData->setManualMaximum(ui->maximumSpinBox->value()); axisData->setCalculateAxisScale(ui->enableScaleCalculation_checkbox->isChecked()); if (m_chartItem->itemMode() == LimeReport::DesignMode) { axisData->updateForDesignMode(); } else { axisData->update(); } m_chartItem->update(); close(); } void ChartAxisEditor::on_enableScaleCalculation_checkbox_stateChanged(int arg1) { const bool isEnabled = (bool)arg1; ui->minimumCheckBox->setEnabled(isEnabled); ui->maximumCheckBox->setEnabled(isEnabled); ui->stepCheckBox->setEnabled(isEnabled); ui->minimumSpinBox->setEnabled(!ui->minimumCheckBox->isChecked() && isEnabled); ui->maximumSpinBox->setEnabled(!ui->maximumCheckBox->isChecked() && isEnabled); ui->stepSpinBox->setEnabled(!ui->stepCheckBox->isChecked() && isEnabled); ui->minimumCheckBox->setEnabled(isEnabled); ui->maximumCheckBox->setEnabled(isEnabled); ui->stepCheckBox->setEnabled(isEnabled); } void ChartAxisEditor::on_cancelButton_clicked() { close(); }