From 62e106187b6a1c6af35573300ab63a0b2bb88f6a Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Wed, 6 Nov 2019 10:42:38 -0500
Subject: [PATCH] avmodel: add helper function to get video device id from name

Change-Id: Ib74def3d68155fa8c3ea5728d148c06e7bb840f1
---
 src/api/avmodel.h |  5 +++++
 src/avmodel.cpp   | 16 ++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/src/api/avmodel.h b/src/api/avmodel.h
index 171fdf73..6232f1dd 100644
--- a/src/api/avmodel.h
+++ b/src/api/avmodel.h
@@ -110,6 +110,11 @@ public:
      * @return possibilities of the device
      */
     video::Capabilities getDeviceCapabilities(const std::string& deviceId) const;
+    /**
+     * Get the deviceId corresponding to a given device friendly name
+     * @return deviceId
+     */
+    std::string getDeviceIdFromName(const std::string& deviceName) const;
 
     /**
      * Get supported audio managers
diff --git a/src/avmodel.cpp b/src/avmodel.cpp
index c87737d4..081aaf6d 100644
--- a/src/avmodel.cpp
+++ b/src/avmodel.cpp
@@ -290,6 +290,22 @@ AVModel::setDeviceSettings(video::Settings& settings)
     }
 }
 
+std::string
+AVModel::getDeviceIdFromName(const std::string& deviceName) const
+{
+    auto devices = getDevices();
+    auto iter = std::find_if(devices.begin(), devices.end(),
+        [this, deviceName](const std::string& d) {
+            auto settings = getDeviceSettings(d);
+            return settings.name == deviceName;
+        });
+    if (iter == devices.end()) {
+        qWarning() << "Couldn't find device: " << deviceName.c_str();
+        return {};
+    }
+    return *iter;
+}
+
 std::vector<std::string>
 AVModel::getSupportedAudioManagers() const
 {
-- 
GitLab