]> Nutra Git (v2) - nutratech/gui.git/commitdiff
wip more features/UI stuff
authorShane Jaroch <chown_tee@proton.me>
Mon, 26 Jan 2026 06:11:51 +0000 (01:11 -0500)
committerShane Jaroch <chown_tee@proton.me>
Mon, 26 Jan 2026 06:11:51 +0000 (01:11 -0500)
src/main.cpp
src/mainwindow.cpp
src/widgets/preferencesdialog.cpp
src/widgets/searchwidget.cpp

index 3171c0752f8a1379a7cbcfe3303dc273440c13b2..962f48cc34a3bc75479b8bfebaf564a62ede8dac 100644 (file)
@@ -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
index d81f6d7342c408ff2844ad3bb19d8b077b18f1b8..c61c043818089ffca475d570f6858de341fad4da 100644 (file)
@@ -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<QVariant> files = settings.value("recentFilesList").toList();
 
index 3586636e7caf11c0959fa7c3228494f48e480e96..d1cc9868682d7c7f9f5bd4d338ed48f728fb9f2a 100644 (file)
@@ -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
index 2b31aa34fcd12cc18ae642be5fa64cf29011b342..7c2953fc60ceedac1fc9d6cb48f878c0e19390bb 100644 (file)
@@ -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<QVariant> 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) {