MCPcopy Create free account
hub / github.com/Martchus/syncthingtray / findRelevantDirsAndDevs

Method findRelevantDirsAndDevs

cli/application.cpp:491–571  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

489}
490
491void Application::findRelevantDirsAndDevs(OperationType operationType)
492{
493 int dummy;
494
495 // ensure filtering is cleared
496 m_connection.dirFilter().reset();
497 m_connection.devFilter().reset();
498
499 // find relevant dirs
500 const bool allDirs = m_args.allDirs.isPresent();
501 if (!allDirs) {
502 const Argument &dirArg = m_args.dir;
503 if (operationType == OperationType::Status) {
504 m_connection.dirFilter().emplace();
505 }
506 if (dirArg.isPresent()) {
507 m_relevantDirs.reserve(dirArg.occurrences());
508 for (size_t i = 0; i != dirArg.occurrences(); ++i) {
509 const QString dirIdentifier(argToQString(dirArg.values(i).front()));
510 const RelevantDir relevantDir(findDirectory(dirIdentifier));
511 if (relevantDir.dirObj) {
512 if (m_connection.dirFilter().has_value()) {
513 m_connection.dirFilter()->insert(relevantDir.dirObj->id);
514 }
515 m_relevantDirs.emplace_back(std::move(relevantDir));
516 }
517 }
518 }
519 }
520
521 // find relevant devs
522 const bool allDevs = m_args.allDevs.isPresent();
523 if (!allDevs) {
524 Argument &devArg = m_args.dev;
525 if (operationType == OperationType::Status) {
526 m_connection.devFilter().emplace();
527 }
528 if (devArg.isPresent()) {
529 m_relevantDevs.reserve(devArg.occurrences());
530 for (size_t i = 0; i != devArg.occurrences(); ++i) {
531 const SyncthingDev *dev = m_connection.findDevInfo(argToQString(devArg.values(i).front()), dummy);
532 if (!dev) {
533 dev = m_connection.findDevInfoByName(argToQString(devArg.values(i).front()), dummy);
534 }
535 if (!dev) {
536 cerr << Phrases::Warning << "Specified device \"" << devArg.values(i).front() << "\" does not exist and will be ignored."
537 << Phrases::End;
538 continue;
539 }
540 if (m_connection.devFilter().has_value()) {
541 m_connection.devFilter()->insert(dev->id);
542 }
543 m_relevantDevs.emplace_back(dev);
544 }
545 }
546 }
547
548 // when displaying status information and no stats and no dirs/devs have been specified, just print information for all

Callers

nothing calls this directly

Calls 7

argToQStringFunction · 0.85
findDevInfoByNameMethod · 0.80
devInfoMethod · 0.80
findDevInfoMethod · 0.60
resetMethod · 0.45
sizeMethod · 0.45
dirInfoMethod · 0.45

Tested by

no test coverage detected