}
}
+bool DatabaseManager::isValidNutraDatabase(const QSqlDatabase& db) {
+ if (!db.isOpen()) return false;
+ QSqlQuery query(db);
+ // Check for a critical table, e.g., food_des
+ return query.exec("SELECT 1 FROM food_des LIMIT 1");
+}
+
bool DatabaseManager::connect(const QString& path) {
if (m_db.isOpen()) {
return true;
return false;
}
+ if (!isValidNutraDatabase(m_db)) {
+ qCritical() << "Invalid database: missing essential tables.";
+ m_db.close();
+ return false;
+ }
+
return true;
}
#include "db/databasemanager.h"
-MealRepository::MealRepository() {}
+MealRepository::MealRepository() = default;
void MealRepository::ensureMealNamesLoaded() {
if (!m_mealNamesCache.empty()) return;
item.mealId = query.value(2).toInt();
item.grams = query.value(3).toDouble();
- if (m_mealNamesCache.count(item.mealId)) {
+ if (m_mealNamesCache.count(item.mealId) != 0U) {
item.mealName = m_mealNamesCache[item.mealId];
} else {
item.mealName = "Unknown";
}
for (auto& item : results) {
- if (names.count(item.foodId)) {
+ if (names.count(item.foodId) != 0U) {
item.foodName = names[item.foodId];
} else {
item.foodName = "Unknown Food"; // Should not happen if DBs consistent
#include "widgets/rdasettingswidget.h"
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) {
- for (int i = 0; i < MaxRecentFiles; ++i) {
- recentFileActions[i] = new QAction(this);
- recentFileActions[i]->setVisible(false);
- connect(recentFileActions[i], &QAction::triggered, this, &MainWindow::onRecentFileClick);
+ for (auto& recentFileAction : recentFileActions) {
+ recentFileAction = new QAction(this);
+ recentFileAction->setVisible(false);
+ connect(recentFileAction, &QAction::triggered, this, &MainWindow::onRecentFileClick);
}
setupUi();
updateRecentFileActions();
connect(openDbAction, &QAction::triggered, this, &MainWindow::onOpenDatabase);
connect(exitAction, &QAction::triggered, this, &QWidget::close);
- for (int i = 0; i < MaxRecentFiles; ++i) recentFilesMenu->addAction(recentFileActions[i]);
+ for (auto& recentFileAction : recentFileActions) recentFilesMenu->addAction(recentFileAction);
// Edit Menu
QMenu* editMenu = menuBar()->addMenu("Edit");
QSettings settings("NutraTech", "Nutra");
QStringList files = settings.value("recentFiles").toStringList();
- int numRecentFiles = qMin(files.size(), MaxRecentFiles);
+ int numRecentFiles = static_cast<int>(
+ qMin(static_cast<std::size_t>(files.size()), static_cast<std::size_t>(MaxRecentFiles)));
for (int i = 0; i < numRecentFiles; ++i) {
QString text = QString("&%1 %2").arg(i + 1).arg(QFileInfo(files[i]).fileName());
- recentFileActions[i]->setText(text);
- recentFileActions[i]->setData(files[i]);
- recentFileActions[i]->setVisible(true);
+ recentFileActions[static_cast<std::size_t>(i)]->setText(text);
+ recentFileActions[static_cast<std::size_t>(i)]->setData(files[i]);
+ recentFileActions[static_cast<std::size_t>(i)]->setVisible(true);
}
- for (int i = numRecentFiles; i < MaxRecentFiles; ++i) recentFileActions[i]->setVisible(false);
+ for (int i = numRecentFiles; i < MaxRecentFiles; ++i)
+ recentFileActions[static_cast<std::size_t>(i)]->setVisible(false);
recentFilesMenu->setEnabled(numRecentFiles > 0);
}