|
58 | 58 | #include <QtCore> |
59 | 59 |
|
60 | 60 | static const char ADDON_MISRA[] = "misra"; |
| 61 | +static const char CODING_STANDARD_MISRA_C_2023[] = "misra-c-2023"; |
61 | 62 | static const char CODING_STANDARD_MISRA_CPP_2008[] = "misra-cpp-2008"; |
62 | 63 | static const char CODING_STANDARD_CERT_C[] = "cert-c-2016"; |
63 | 64 | static const char CODING_STANDARD_CERT_CPP[] = "cert-cpp-2016"; |
@@ -370,15 +371,22 @@ void ProjectFileDialog::loadFromProjectFile(const ProjectFile *projectFile) |
370 | 371 | const QString dataDir = getDataDir(); |
371 | 372 | updateAddonCheckBox(mUI->mAddonThreadSafety, projectFile, dataDir, "threadsafety"); |
372 | 373 | updateAddonCheckBox(mUI->mAddonY2038, projectFile, dataDir, "y2038"); |
373 | | - updateAddonCheckBox(mUI->mMisraC2012, projectFile, dataDir, ADDON_MISRA); |
| 374 | + |
| 375 | + // Misra checkbox.. |
| 376 | + mUI->mMisraC->setText(mPremium ? "Misra C" : "Misra C 2012"); |
| 377 | + updateAddonCheckBox(mUI->mMisraC, projectFile, dataDir, ADDON_MISRA); |
| 378 | + mUI->mMisraVersion->setEnabled(mUI->mMisraC->isChecked()); |
| 379 | + connect(mUI->mMisraC, &QCheckBox::toggled, mUI->mMisraVersion, &QComboBox::setEnabled); |
374 | 380 |
|
375 | 381 | const QString &misraFile = settings.value(SETTINGS_MISRA_FILE, QString()).toString(); |
376 | 382 | mUI->mEditMisraFile->setText(misraFile); |
| 383 | + mUI->mMisraVersion->setVisible(mPremium); |
| 384 | + mUI->mMisraVersion->setCurrentIndex(projectFile->getCodingStandards().contains(CODING_STANDARD_MISRA_C_2023)); |
377 | 385 | if (mPremium) { |
378 | 386 | mUI->mLabelMisraFile->setVisible(false); |
379 | 387 | mUI->mEditMisraFile->setVisible(false); |
380 | 388 | mUI->mBtnBrowseMisraFile->setVisible(false); |
381 | | - } else if (!mUI->mMisraC2012->isEnabled()) { |
| 389 | + } else if (!mUI->mMisraC->isEnabled()) { |
382 | 390 | mUI->mEditMisraFile->setEnabled(false); |
383 | 391 | mUI->mBtnBrowseMisraFile->setEnabled(false); |
384 | 392 | } |
@@ -464,14 +472,16 @@ void ProjectFileDialog::saveToProjectFile(ProjectFile *projectFile) const |
464 | 472 | addons << "threadsafety"; |
465 | 473 | if (mUI->mAddonY2038->isChecked()) |
466 | 474 | addons << "y2038"; |
467 | | - if (mUI->mMisraC2012->isChecked()) |
| 475 | + if (mUI->mMisraC->isChecked()) |
468 | 476 | addons << ADDON_MISRA; |
469 | 477 | projectFile->setAddons(addons); |
470 | 478 | QStringList codingStandards; |
471 | 479 | if (mUI->mCertC2016->isChecked()) |
472 | 480 | codingStandards << CODING_STANDARD_CERT_C; |
473 | 481 | if (mUI->mCertCpp2016->isChecked()) |
474 | 482 | codingStandards << CODING_STANDARD_CERT_CPP; |
| 483 | + if (mPremium && mUI->mMisraVersion->currentIndex() == 1) |
| 484 | + codingStandards << CODING_STANDARD_MISRA_C_2023; |
475 | 485 | if (mUI->mMisraCpp2008->isChecked()) |
476 | 486 | codingStandards << CODING_STANDARD_MISRA_CPP_2008; |
477 | 487 | if (mUI->mAutosar->isChecked()) |
@@ -914,8 +924,8 @@ void ProjectFileDialog::browseMisraFile() |
914 | 924 | mUI->mEditMisraFile->setText(fileName); |
915 | 925 | settings.setValue(SETTINGS_MISRA_FILE, fileName); |
916 | 926 |
|
917 | | - mUI->mMisraC2012->setText("MISRA C 2012"); |
918 | | - mUI->mMisraC2012->setEnabled(true); |
919 | | - updateAddonCheckBox(mUI->mMisraC2012, nullptr, getDataDir(), ADDON_MISRA); |
| 927 | + mUI->mMisraC->setText("MISRA C 2012"); |
| 928 | + mUI->mMisraC->setEnabled(true); |
| 929 | + updateAddonCheckBox(mUI->mMisraC, nullptr, getDataDir(), ADDON_MISRA); |
920 | 930 | } |
921 | 931 | } |
0 commit comments