[{"id":24416,"web_url":"https://patchwork.libcamera.org/comment/24416/","msgid":"<165994900714.15821.5329929403727851067@Monstersaurus>","date":"2022-08-08T08:56:47","subject":"Re: [libcamera-devel] [PATCH v2.1 3/4] qcam: MainWindow: Replace\n\tcameraCombo_ with camSelectDialog","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Utkarsh Tiwari via libcamera-devel (2022-08-07 16:40:02)\n> Replace the cameraCombo_ on the toolbar with a QPushButton which\n> displays the camSelectDialog. This would allow the user to view\n> information about the camera when switching.\n> \n> The QPushButton text is set to the camera Id currently in use.\n> \n> Signed-off-by: Utkarsh Tiwari <utkarsh02t@gmail.com>\n> ---\n> Difference from v2 :\n>         remove redudant function getCurrentCamera, its job can be done by\n>         getCameraId()\n>  src/qcam/main_window.cpp | 41 ++++++++++++++++++++--------------------\n>  src/qcam/main_window.h   |  5 +++--\n>  2 files changed, 23 insertions(+), 23 deletions(-)\n> \n> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\n> index dd30817d..98c22b71 100644\n> --- a/src/qcam/main_window.cpp\n> +++ b/src/qcam/main_window.cpp\n> @@ -193,14 +193,11 @@ int MainWindow::createToolbars()\n>         connect(action, &QAction::triggered, this, &MainWindow::quit);\n>  \n>         /* Camera selector. */\n> -       cameraCombo_ = new QComboBox();\n> -       connect(cameraCombo_, QOverload<int>::of(&QComboBox::activated),\n> +       cameraSwitchButton_ = new QPushButton;\n\nThe dialog is called camSelectDialog (or cameraSelectDialog), so I'd call this\ncameraSelectButton_\n\n\n> +       connect(cameraSwitchButton_, &QPushButton::clicked,\n>                 this, &MainWindow::switchCamera);\n>  \n> -       for (const std::shared_ptr<Camera> &cam : cm_->cameras())\n> -               cameraCombo_->addItem(QString::fromStdString(cam->id()));\n> -\n> -       toolbar_->addWidget(cameraCombo_);\n> +       toolbar_->addWidget(cameraSwitchButton_);\n>  \n>         toolbar_->addSeparator();\n>  \n> @@ -260,14 +257,19 @@ void MainWindow::updateTitle()\n>   * Camera Selection\n>   */\n>  \n> -void MainWindow::switchCamera(int index)\n> +void MainWindow::switchCamera()\n>  {\n>         /* Get and acquire the new camera. */\n> -       const auto &cameras = cm_->cameras();\n> -       if (static_cast<unsigned int>(index) >= cameras.size())\n> +       std::string newCameraId = chooseCamera();\n> +\n> +       if (newCameraId.empty())\n>                 return;\n>  \n> -       const std::shared_ptr<Camera> &cam = cameras[index];\n> +       if (camera_) {\n> +               if (newCameraId == camera_->id())\n> +                       return;\n> +       }\n\nI think you could shorten this to two lines:\n\n\tif (camera_ && camera_->id() == newCameraId)\n\t\treturn;\n\n\n\n> +       const std::shared_ptr<Camera> &cam = cm_->get(newCameraId);\n>  \n>         if (cam->acquire()) {\n>                 qInfo() << \"Failed to acquire camera\" << cam->id().c_str();\n> @@ -292,9 +294,12 @@ std::string MainWindow::chooseCamera()\n>  {\n>         camSelectDialog_ = new CamSelectDialog(cm_, this);\n\nAha so this could be as simple as :\n\n\tif (!camSelectDialog_)\n\t\tcamSelectDialog_ = new CamSelectDialog(cm_, this);\n\nto make it re-usable? (It would only construct on the first call).\n(in the earlier patch).\n\n\nAside from those trivialish comments, I think this is ok so:\n\nWith those handled,\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n>  \n> -       if (camSelectDialog_->exec() == QDialog::Accepted)\n> -               return camSelectDialog_->getCameraId();\n> -       else\n> +       if (camSelectDialog_->exec() == QDialog::Accepted) {\n> +               std::string cameraId = camSelectDialog_->getCameraId();\n> +               cameraSwitchButton_->setText(QString::fromStdString(cameraId));\n> +\n> +               return cameraId;\n> +       } else\n>                 return std::string();\n>  }\n>  \n> @@ -327,8 +332,8 @@ int MainWindow::openCamera()\n>                 return -EBUSY;\n>         }\n>  \n> -       /* Set the combo-box entry with the currently selected Camera. */\n> -       cameraCombo_->setCurrentText(QString::fromStdString(cameraName));\n> +       /* Set the camera switch button with the currently selected Camera id. */\n> +       cameraSwitchButton_->setText(QString::fromStdString(cameraName));\n>  \n>         return 0;\n>  }\n> @@ -593,8 +598,6 @@ void MainWindow::processHotplug(HotplugEvent *e)\n>         HotplugEvent::PlugEvent event = e->hotplugEvent();\n>  \n>         if (event == HotplugEvent::HotPlug) {\n> -               cameraCombo_->addItem(QString::fromStdString(camera->id()));\n> -\n>                 if (camSelectDialog_)\n>                         camSelectDialog_->cameraAdded(camera);\n>         } else if (event == HotplugEvent::HotUnplug) {\n> @@ -603,12 +606,8 @@ void MainWindow::processHotplug(HotplugEvent *e)\n>                         toggleCapture(false);\n>                         camera_->release();\n>                         camera_.reset();\n> -                       cameraCombo_->setCurrentIndex(0);\n>                 }\n>  \n> -               int camIndex = cameraCombo_->findText(QString::fromStdString(camera->id()));\n> -               cameraCombo_->removeItem(camIndex);\n> -\n>                 if (camSelectDialog_)\n>                         camSelectDialog_->cameraRemoved(camera);\n>         }\n> diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h\n> index 6d80b5be..fe0f5938 100644\n> --- a/src/qcam/main_window.h\n> +++ b/src/qcam/main_window.h\n> @@ -24,6 +24,7 @@\n>  #include <QMutex>\n>  #include <QObject>\n>  #include <QPointer>\n> +#include <QPushButton>\n>  #include <QQueue>\n>  #include <QTimer>\n>  \n> @@ -61,7 +62,7 @@ private Q_SLOTS:\n>         void quit();\n>         void updateTitle();\n>  \n> -       void switchCamera(int index);\n> +       void switchCamera();\n>         void toggleCapture(bool start);\n>  \n>         void saveImageAs();\n> @@ -91,7 +92,7 @@ private:\n>         /* UI elements */\n>         QToolBar *toolbar_;\n>         QAction *startStopAction_;\n> -       QComboBox *cameraCombo_;\n> +       QPushButton *cameraSwitchButton_;\n>         QAction *saveRaw_;\n>         ViewFinder *viewfinder_;\n>  \n> -- \n> 2.25.1\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 03204BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  8 Aug 2022 08:56:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 68CB663327;\n\tMon,  8 Aug 2022 10:56:52 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8A90763326\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  8 Aug 2022 10:56:50 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 1F4B2481;\n\tMon,  8 Aug 2022 10:56:50 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1659949012;\n\tbh=yP8YjCSM4J59S5rDpoh0UtXrWqNScJnnPX/MrkS7f70=;\n\th=In-Reply-To:References:To:Date:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=s3cAOdFIDXkMiHXR6ubgwbK6XeLrRpJWiZo4LsEcdQGT5PFymU3W9CkdEIC7waIe0\n\tAwg0VFKgqE7Afi67Sf1FyZ8F0WUuop1O37PwtQzZNA2IphxnjHOxgdP0lql8/pUYmc\n\tHpc4Gpy8zj8nycKFWBzOVS8YjHBEdjFGBNaA8dv71XhoYq/8t/L6WoDS12T+tZIqvG\n\tiryPCnNukE4zEkT8+1YiVcdjJAQTc9vA4DxU9R1eqPgz89briq8RQMdpcjtmLnmsX0\n\tTU/ncnulNLQBkVXlOhlwQBpwn6MD3IXwdzP+9qkpeVo97MPoz6OvCMoFFGpl2vI3pn\n\t2dZPK+pWTW7Cw==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1659949010;\n\tbh=yP8YjCSM4J59S5rDpoh0UtXrWqNScJnnPX/MrkS7f70=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=mnaFdENzI1ugI3q01tEruY0XLRLhdJAGFADziKbjvsqD/81ttP7fxeNGIMHoyAN6u\n\tayIz0y/ugFDlmm28FSA+Cu0Odk3aWUUNNzaLwhMC3g/SJdEVUlHWblMDgAyhFyxg+D\n\tvy6iOAsDM9kxCMfwbGEZBvltQdF8NhawFrJuQTE4="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"mnaFdENz\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20220807154002.91607-1-utkarsh02t@gmail.com>","References":"<20220806190433.59128-4-utkarsh02t@gmail.com>\n\t<20220807154002.91607-1-utkarsh02t@gmail.com>","To":"Utkarsh Tiwari <utkarsh02t@gmail.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 08 Aug 2022 09:56:47 +0100","Message-ID":"<165994900714.15821.5329929403727851067@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v2.1 3/4] qcam: MainWindow: Replace\n\tcameraCombo_ with camSelectDialog","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Kieran Bingham via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":24436,"web_url":"https://patchwork.libcamera.org/comment/24436/","msgid":"<CAHbe+E2oajxfWTYJVmcAqYR5JJ7FHk2mWBPpfrELu3q7kNpo_Q@mail.gmail.com>","date":"2022-08-08T17:25:05","subject":"Re: [libcamera-devel] [PATCH v2.1 3/4] qcam: MainWindow: Replace\n\tcameraCombo_ with camSelectDialog","submitter":{"id":114,"url":"https://patchwork.libcamera.org/api/people/114/","name":"Utkarsh Tiwari","email":"utkarsh02t@gmail.com"},"content":"Hi, Kieran agreed with everything on this review,\nwould do the changes.\n\nOn Mon, Aug 8, 2022 at 2:26 PM Kieran Bingham <\nkieran.bingham@ideasonboard.com> wrote:\n\n> Quoting Utkarsh Tiwari via libcamera-devel (2022-08-07 16:40:02)\n> > Replace the cameraCombo_ on the toolbar with a QPushButton which\n> > displays the camSelectDialog. This would allow the user to view\n> > information about the camera when switching.\n> >\n> > The QPushButton text is set to the camera Id currently in use.\n> >\n> > Signed-off-by: Utkarsh Tiwari <utkarsh02t@gmail.com>\n> > ---\n> > Difference from v2 :\n> >         remove redudant function getCurrentCamera, its job can be done by\n> >         getCameraId()\n> >  src/qcam/main_window.cpp | 41 ++++++++++++++++++++--------------------\n> >  src/qcam/main_window.h   |  5 +++--\n> >  2 files changed, 23 insertions(+), 23 deletions(-)\n> >\n> > diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\n> > index dd30817d..98c22b71 100644\n> > --- a/src/qcam/main_window.cpp\n> > +++ b/src/qcam/main_window.cpp\n> > @@ -193,14 +193,11 @@ int MainWindow::createToolbars()\n> >         connect(action, &QAction::triggered, this, &MainWindow::quit);\n> >\n> >         /* Camera selector. */\n> > -       cameraCombo_ = new QComboBox();\n> > -       connect(cameraCombo_, QOverload<int>::of(&QComboBox::activated),\n> > +       cameraSwitchButton_ = new QPushButton;\n>\n> The dialog is called camSelectDialog (or cameraSelectDialog), so I'd call\n> this\n> cameraSelectButton_\n>\n>\n> > +       connect(cameraSwitchButton_, &QPushButton::clicked,\n> >                 this, &MainWindow::switchCamera);\n> >\n> > -       for (const std::shared_ptr<Camera> &cam : cm_->cameras())\n> > -               cameraCombo_->addItem(QString::fromStdString(cam->id()));\n> > -\n> > -       toolbar_->addWidget(cameraCombo_);\n> > +       toolbar_->addWidget(cameraSwitchButton_);\n> >\n> >         toolbar_->addSeparator();\n> >\n> > @@ -260,14 +257,19 @@ void MainWindow::updateTitle()\n> >   * Camera Selection\n> >   */\n> >\n> > -void MainWindow::switchCamera(int index)\n> > +void MainWindow::switchCamera()\n> >  {\n> >         /* Get and acquire the new camera. */\n> > -       const auto &cameras = cm_->cameras();\n> > -       if (static_cast<unsigned int>(index) >= cameras.size())\n> > +       std::string newCameraId = chooseCamera();\n> > +\n> > +       if (newCameraId.empty())\n> >                 return;\n> >\n> > -       const std::shared_ptr<Camera> &cam = cameras[index];\n> > +       if (camera_) {\n> > +               if (newCameraId == camera_->id())\n> > +                       return;\n> > +       }\n>\n> I think you could shorten this to two lines:\n>\n>         if (camera_ && camera_->id() == newCameraId)\n>                 return;\n>\n>\n>\n> > +       const std::shared_ptr<Camera> &cam = cm_->get(newCameraId);\n> >\n> >         if (cam->acquire()) {\n> >                 qInfo() << \"Failed to acquire camera\" <<\n> cam->id().c_str();\n> > @@ -292,9 +294,12 @@ std::string MainWindow::chooseCamera()\n> >  {\n> >         camSelectDialog_ = new CamSelectDialog(cm_, this);\n>\n> Aha so this could be as simple as :\n>\n>         if (!camSelectDialog_)\n>                 camSelectDialog_ = new CamSelectDialog(cm_, this);\n>\n> to make it re-usable? (It would only construct on the first call).\n> (in the earlier patch).\n>\n>\n> Aside from those trivialish comments, I think this is ok so:\n>\n> With those handled,\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>\n> >\n> > -       if (camSelectDialog_->exec() == QDialog::Accepted)\n> > -               return camSelectDialog_->getCameraId();\n> > -       else\n> > +       if (camSelectDialog_->exec() == QDialog::Accepted) {\n> > +               std::string cameraId = camSelectDialog_->getCameraId();\n> > +\n>  cameraSwitchButton_->setText(QString::fromStdString(cameraId));\n> > +\n> > +               return cameraId;\n> > +       } else\n> >                 return std::string();\n> >  }\n> >\n> > @@ -327,8 +332,8 @@ int MainWindow::openCamera()\n> >                 return -EBUSY;\n> >         }\n> >\n> > -       /* Set the combo-box entry with the currently selected Camera. */\n> > -       cameraCombo_->setCurrentText(QString::fromStdString(cameraName));\n> > +       /* Set the camera switch button with the currently selected\n> Camera id. */\n> > +       cameraSwitchButton_->setText(QString::fromStdString(cameraName));\n> >\n> >         return 0;\n> >  }\n> > @@ -593,8 +598,6 @@ void MainWindow::processHotplug(HotplugEvent *e)\n> >         HotplugEvent::PlugEvent event = e->hotplugEvent();\n> >\n> >         if (event == HotplugEvent::HotPlug) {\n> > -\n>  cameraCombo_->addItem(QString::fromStdString(camera->id()));\n> > -\n> >                 if (camSelectDialog_)\n> >                         camSelectDialog_->cameraAdded(camera);\n> >         } else if (event == HotplugEvent::HotUnplug) {\n> > @@ -603,12 +606,8 @@ void MainWindow::processHotplug(HotplugEvent *e)\n> >                         toggleCapture(false);\n> >                         camera_->release();\n> >                         camera_.reset();\n> > -                       cameraCombo_->setCurrentIndex(0);\n> >                 }\n> >\n> > -               int camIndex =\n> cameraCombo_->findText(QString::fromStdString(camera->id()));\n> > -               cameraCombo_->removeItem(camIndex);\n> > -\n> >                 if (camSelectDialog_)\n> >                         camSelectDialog_->cameraRemoved(camera);\n> >         }\n> > diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h\n> > index 6d80b5be..fe0f5938 100644\n> > --- a/src/qcam/main_window.h\n> > +++ b/src/qcam/main_window.h\n> > @@ -24,6 +24,7 @@\n> >  #include <QMutex>\n> >  #include <QObject>\n> >  #include <QPointer>\n> > +#include <QPushButton>\n> >  #include <QQueue>\n> >  #include <QTimer>\n> >\n> > @@ -61,7 +62,7 @@ private Q_SLOTS:\n> >         void quit();\n> >         void updateTitle();\n> >\n> > -       void switchCamera(int index);\n> > +       void switchCamera();\n> >         void toggleCapture(bool start);\n> >\n> >         void saveImageAs();\n> > @@ -91,7 +92,7 @@ private:\n> >         /* UI elements */\n> >         QToolBar *toolbar_;\n> >         QAction *startStopAction_;\n> > -       QComboBox *cameraCombo_;\n> > +       QPushButton *cameraSwitchButton_;\n> >         QAction *saveRaw_;\n> >         ViewFinder *viewfinder_;\n> >\n> > --\n> > 2.25.1\n> >\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 41F21BE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  8 Aug 2022 17:25:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 040EA6332B;\n\tMon,  8 Aug 2022 19:25:21 +0200 (CEST)","from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com\n\t[IPv6:2607:f8b0:4864:20::1030])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 729F663315\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  8 Aug 2022 19:25:19 +0200 (CEST)","by mail-pj1-x1030.google.com with SMTP id\n\th21-20020a17090aa89500b001f31a61b91dso15211683pjq.4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 08 Aug 2022 10:25:19 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1659979521;\n\tbh=HDSHCI6j2BBJnlK+bqPEB1ibSH6msMwzMESIuHONMXE=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=fnZAVzQ7eu/t31FrQX0FVY7NUTUajp50a6c9XLLYVU4mt+mYMq2pGeY7Sl4K40PTM\n\t3YyAfXxHpXx2i9HrZO6k4Mt0dF9sL2YWrEb7gKKy0DpVfswpbCXqAbN502ua9R/yZX\n\tzY2DzWoY7RbHxWwTCqiTs5eS/JilQiyN6xHkOjFQLxUTW8l9vnLfwg5eP54/DeZJmz\n\tJY6xOBsmXEcye19FOZ1Xwnt9GDbsNhcbJLuwsb8mjw2fstf6mlvOk3tgFqInu6plR5\n\tbhq5KeOjJPAqj68FQfUtWAXh0NtWgEEc5vVc1YVC3+ph5aIHT1zg0OyXHBnLpdkcn7\n\tbLOH5sJJQE/kg==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc;\n\tbh=MCt7KcioQhvsqjHF6HjN4wBV/1bT7hKg/p9Fg1Uv4QI=;\n\tb=XAVfd3pEEhp/kT9tr5U2S0egPmcP0o6YWERCCioNsEhuMxxQOV0DyRpj0ioQCuNeaq\n\tJ1c0CO7Q9cuezcnTgynCThmmXuD5n72sHabj0Q7yuBYIi+bMljldyCgJLJPsrrd7eYnx\n\tLtokOtmtnOg9Joda5N9xtG0GZ3IVcCg7l3m/wM54G6LIP7AyCgCGgHQcWdEktF2vZXMj\n\tkLbBXsATj1sL648VwLLmGPNdzek0n02GnSmUyrLuRNw7ZOsurUUQxtCflTsmB79oHRMY\n\tlpK5ly7VlNAnV1fUbCPP7r44SsLEcBi8FZs2S6VYGi4KyZja5p8pOBqVMggOQEV2+CoL\n\tTh0A=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"XAVfd3pE\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc;\n\tbh=MCt7KcioQhvsqjHF6HjN4wBV/1bT7hKg/p9Fg1Uv4QI=;\n\tb=AvoBVDRgQtQhR3KVplnrPIGgoCPDiYBI4aiidtbL0tsmk+e0qWuNr9GEtUg+dI9Mmg\n\th2B5cmC0SgHO/S+fUJ1LntuXhPdj83IwDVkvPQzlnXTB1ncyshCnwDb8jnoiEOFZ9U+f\n\t5D4SIAzO8T7Ktv3dabxv6nVioRemn5l/In5lZnqogATmR8O5JCLCldiXbwWWcGDXi+Fh\n\ty4LFnhDINnRiWEMQbRgjhWd4JHgVCcl9uc7TW4QPVpN31hxzKBA+TkuDzA6Qa489T8nU\n\tOvzwR4xihsk6hXHJnBCJBh3zd1YTMFtCEwN8jPN4sANtyPjhc9OA2Xj5zPbFK4eOhWQ9\n\tnmdQ==","X-Gm-Message-State":"ACgBeo20mgBQHey6DAqVgb3mr2bOQiv8AAdQv7l9ASAZzP40+LOInusk\n\tV0xM/HcD45r+oM3AUYKTPiU1+StY/hIiUJ783UZiW6A9","X-Google-Smtp-Source":"AA6agR6u9iBQFRmOLBJLzfsgoD2LZydRdr9C4WaXcrRu52HWayPORfisV6N0X2JiSd8iNQpXnDlcp1x0bOJZHcq+hXc=","X-Received":"by 2002:a17:902:70c7:b0:170:9030:2665 with SMTP id\n\tl7-20020a17090270c700b0017090302665mr10480278plt.73.1659979518033;\n\tMon, 08 Aug 2022 10:25:18 -0700 (PDT)","MIME-Version":"1.0","References":"<20220806190433.59128-4-utkarsh02t@gmail.com>\n\t<20220807154002.91607-1-utkarsh02t@gmail.com>\n\t<165994900714.15821.5329929403727851067@Monstersaurus>","In-Reply-To":"<165994900714.15821.5329929403727851067@Monstersaurus>","Date":"Mon, 8 Aug 2022 22:55:05 +0530","Message-ID":"<CAHbe+E2oajxfWTYJVmcAqYR5JJ7FHk2mWBPpfrELu3q7kNpo_Q@mail.gmail.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"00000000000081c2f105e5be1915\"","Subject":"Re: [libcamera-devel] [PATCH v2.1 3/4] qcam: MainWindow: Replace\n\tcameraCombo_ with camSelectDialog","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Utkarsh Tiwari via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Utkarsh Tiwari <utkarsh02t@gmail.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]