From: Shane Jaroch Date: Mon, 26 Jan 2026 06:11:51 +0000 (-0500) Subject: wip more features/UI stuff X-Git-Url: https://git.nutra.tk/v2?a=commitdiff_plain;h=5dcd0cd62d8e7e78556910ad2f760bda5a19c6f3;p=nutratech%2Fgui.git wip more features/UI stuff --- diff --git a/src/main.cpp b/src/main.cpp index 3171c07..962f48c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,8 +13,8 @@ int main(int argc, char* argv[]) { QApplication app(argc, argv); - QApplication::setApplicationName("Nutra"); - QApplication::setOrganizationName("NutraTech"); + QApplication::setOrganizationName("nutra"); + QApplication::setApplicationName("nutra"); QApplication::setWindowIcon(QIcon(":/resources/nutrition_icon-no_bg.png")); // Prevent multiple instances diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index d81f6d7..c61c043 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -98,6 +98,11 @@ void MainWindow::setupUi() { // For now, simpler handling: detailsWidget->loadFood(foodId, foodName); tabs->setCurrentWidget(detailsWidget); + + // Persist selection + QSettings settings("nutra", "nutra"); + settings.setValue("lastSelectedFoodId", foodId); + settings.setValue("lastSelectedFoodName", foodName); }); connect(searchWidget, &SearchWidget::addToMealRequested, this, @@ -139,6 +144,21 @@ void MainWindow::setupUi() { dbStatusLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); statusBar()->addPermanentWidget(dbStatusLabel); updateStatusBar(); + + // Restore last selection if available + QSettings settings("nutra", "nutra"); + if (settings.contains("lastSelectedFoodId") && settings.contains("lastSelectedFoodName")) { + int id = settings.value("lastSelectedFoodId").toInt(); + QString name = settings.value("lastSelectedFoodName").toString(); + // Defer slightly to ensure DB is ready if needed (though it should be open by now) + QTimer::singleShot(200, this, [this, id, name]() { + detailsWidget->loadFood(id, name); + // Optionally switch tab? Default is usually search or dashboard. + // Let's keep the user's focus where it makes sense. + // If they had a selection open, maybe they want to see it. + // tabs->setCurrentWidget(detailsWidget); + }); + } } void MainWindow::updateStatusBar() { @@ -214,7 +234,7 @@ void MainWindow::onRecentFileClick() { } void MainWindow::updateRecentFileActions() { - QSettings settings("NutraTech", "Nutra"); + QSettings settings("nutra", "nutra"); // Check for legacy setting if new one is empty if (!settings.contains("recentFilesList") && settings.contains("recentFiles")) { @@ -288,7 +308,7 @@ void MainWindow::addToRecentFiles(const QString& path) { auto info = DatabaseManager::instance().getDatabaseInfo(path); if (!info.isValid) return; - QSettings settings("NutraTech", "Nutra"); + QSettings settings("nutra", "nutra"); // Read list of QVariantMaps QList files = settings.value("recentFilesList").toList(); diff --git a/src/widgets/preferencesdialog.cpp b/src/widgets/preferencesdialog.cpp index 3586636..d1cc986 100644 --- a/src/widgets/preferencesdialog.cpp +++ b/src/widgets/preferencesdialog.cpp @@ -112,13 +112,13 @@ void PreferencesDialog::setupUi() { } void PreferencesDialog::loadGeneralSettings() { - QSettings settings("NutraTech", "Nutra"); + QSettings settings("nutra", "nutra"); debounceSpin->setValue(settings.value("searchDebounce", 600).toInt()); } void PreferencesDialog::save() { // Save General - QSettings settings("NutraTech", "Nutra"); + QSettings settings("nutra", "nutra"); settings.setValue("searchDebounce", debounceSpin->value()); // Save Profile diff --git a/src/widgets/searchwidget.cpp b/src/widgets/searchwidget.cpp index 2b31aa3..7c2953f 100644 --- a/src/widgets/searchwidget.cpp +++ b/src/widgets/searchwidget.cpp @@ -87,6 +87,12 @@ void SearchWidget::performSearch() { // Save query to history addToHistory(0, query); + // Organization and application name - saves to ~/.config/nutra/nutra.conf + QSettings settings("nutra", "nutra"); + + // Save persistence + settings.setValue("lastSearchQuery", query); + QElapsedTimer timer; timer.start(); @@ -231,7 +237,7 @@ void SearchWidget::addToHistory(int foodId, const QString& foodName) { } void SearchWidget::loadHistory() { - QSettings settings("NutraTech", "Nutra"); + QSettings settings("nutra", "nutra"); QList list = settings.value("recentFoods").toList(); recentHistory.clear(); for (const auto& v : list) { @@ -261,10 +267,18 @@ void SearchWidget::onCompleterActivated(const QString& text) { } void SearchWidget::reloadSettings() { - QSettings settings("NutraTech", "Nutra"); + QSettings settings("nutra", "nutra"); int debounce = settings.value("searchDebounce", 600).toInt(); debounce = std::max(debounce, 250); searchTimer->setInterval(debounce); + + // Restore last search if empty + if (searchInput->text().isEmpty() && settings.contains("lastSearchQuery")) { + QString lastQuery = settings.value("lastSearchQuery").toString(); + searchInput->setText(lastQuery); + // Defer search slightly to allow UI unchecked init + QTimer::singleShot(100, this, &SearchWidget::performSearch); + } } bool SearchWidget::eventFilter(QObject* obj, QEvent* event) {