@@ -314,50 +314,44 @@ void MainWindow::displayServices()
314314 const QStringList incrementalSearchPatterns = {" s" , " sa" , " sam" , " samb" , " samba" };
315315 const QString currentFilter = ui->comboFilter ->currentText ();
316316
317- auto matchesSearchCriteria = [&](const QString &serviceName) {
318- return searchText.isEmpty () || serviceName.startsWith (searchText)
319- || (serviceName == " smbd" && incrementalSearchPatterns.contains (searchText));
320- };
321-
322- auto matchesFilterCriteria = [&](bool isRunning, bool isEnabled) {
323- if (currentFilter == tr (" Running services" )) {
324- return isRunning;
325- } else if (currentFilter == tr (" Services enabled at boot" )) {
326- return isEnabled;
327- } else if (currentFilter == tr (" Services disabled at boot" )) {
328- return !isEnabled;
329- }
330- return true ;
331- };
317+ ui->listServices ->setUpdatesEnabled (false );
318+
319+ const bool isFilterAll = currentFilter.isEmpty () || currentFilter == tr (" All services" );
320+ const bool isFilterRunning = currentFilter == tr (" Running services" );
321+ const bool isFilterEnabled = currentFilter == tr (" Services enabled at boot" );
322+ const bool isFilterDisabled = currentFilter == tr (" Services disabled at boot" );
332323
333324 for (const auto &service : services) {
334325 const QString serviceName = service->getName ().toLower ();
326+ const bool isRunning = service->isRunning ();
327+ const bool isEnabled = service->isEnabled ();
335328
336- if (!matchesSearchCriteria (serviceName)) {
329+ // Check search criteria
330+ if (!searchText.isEmpty () && !serviceName.startsWith (searchText)
331+ && !(serviceName == QLatin1String (" smbd" ) && incrementalSearchPatterns.contains (searchText))) {
337332 continue ;
338333 }
339334
340- const bool isRunning = service->isRunning ();
341- const bool isEnabled = service->isEnabled ();
342-
343- if (!matchesFilterCriteria (isRunning, isEnabled)) {
335+ // Check filter criteria
336+ if ((isFilterRunning && !isRunning) || (isFilterEnabled && !isEnabled) || (isFilterDisabled && isEnabled)
337+ || (!isFilterAll && !isFilterRunning && !isFilterEnabled && !isFilterDisabled)) {
344338 continue ;
345339 }
346340
341+ // Update counters
347342 if (isRunning) {
348343 ++countActive;
349344 } else if (isEnabled) {
350345 ++countEnabled;
351346 }
352347
348+ // Create item and add it directly to the list widget
353349 auto *item = new QListWidgetItem (serviceName, ui->listServices );
354350 item->setData (Qt::UserRole, QVariant::fromValue (service.get ()));
355-
356351 item->setForeground (isRunning ? runningColor : (isEnabled ? enabledColor : Qt::black));
357-
358- ui->listServices ->addItem (item);
359352 }
360353
354+ // Update status labels
361355 ui->labelCount ->setText (tr (" %1 total services, %2 currently <font color='%3'>running</font>" )
362356 .arg (services.count ())
363357 .arg (countActive)
@@ -368,6 +362,7 @@ void MainWindow::displayServices()
368362 .arg (getHtmlColor (enabledColor)));
369363
370364 ui->listServices ->sortItems ();
365+ ui->listServices ->setUpdatesEnabled (true );
371366 ui->listServices ->blockSignals (false );
372367 savedRow = qBound (0 , savedRow, ui->listServices ->count () - 1 );
373368 ui->listServices ->setCurrentRow (savedRow);
0 commit comments