[{"id":24737,"web_url":"https://patchwork.libcamera.org/comment/24737/","msgid":"<166121161424.3484129.8344090180993758107@Monstersaurus>","date":"2022-08-22T23:40:14","subject":"Re: [libcamera-devel] [PATCH v2 02/11] qcam: ControlFrame: Display\n\tdefualt value of controls","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-12 13:46:42)\n> Display a QLabel below the Control Name showing the default value for\n> the controls.\n> \n> This adds support to Display defualt value for the\n> control types :\n>     ControlTypeBool\n>     ControlTypeInteger32\n>     ControlTypeInteger64\n>     ControlTypeFloat\n> \n> Signed-off-by: Utkarsh Tiwari <utkarsh02t@gmail.com>\n> ---\n> Difference from v1: \n>         1. Fix comment styling\n>         2. Now parameters can drop libcamera:: as effect from  1/11\n>  src/qcam/settings/control_frame.cpp | 48 +++++++++++++++++++++++++++--\n>  src/qcam/settings/control_frame.h   |  9 ++++++\n>  src/qcam/settings/controls_tab.cpp  |  2 +-\n>  3 files changed, 56 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/qcam/settings/control_frame.cpp b/src/qcam/settings/control_frame.cpp\n> index 8b1162db..79cf67eb 100644\n> --- a/src/qcam/settings/control_frame.cpp\n> +++ b/src/qcam/settings/control_frame.cpp\n> @@ -16,13 +16,57 @@\n>  \n>  using namespace libcamera;\n>  \n> -ControlFrame::ControlFrame(const ControlId *control, QWidget *parent)\n> -       : QFrame(parent), control_(control)\n> +ControlFrame::ControlFrame(const ControlId *control,\n> +                          const ControlInfo &controlInfo, QWidget *parent)\n> +       : QFrame(parent), control_(control), controlInfo_(controlInfo)\n>  {\n>         /* Main layout for the frame */\n>         QVBoxLayout *frameVLayout = new QVBoxLayout(this);\n>  \n>         frameVLayout->addWidget(new QLabel(QString::fromStdString(control_->name())));\n>  \n> +       /*\n> +        * No need to pass parents to widgets, as QVBoxLayout transfers\n> +        * ownership to its parent widget.\n> +        */\n> +       frameVLayout->addWidget(defaultValueLabel());\n> +\n>         setFrameStyle(QFrame::StyledPanel);\n>  }\n> +\n> +/* -----------------------------------------------------------------------------\n> + * Widgets\n> + */\n> +\n> +QLabel *ControlFrame::defaultValueLabel(QWidget *parent)\n> +{\n> +       QLabel *defaultValLabel = new QLabel(parent);\n> +\n> +       defaultValLabel->setText(\"Default Value: \" + getDefaultValueQStr());\n> +\n> +       return defaultValLabel;\n> +}\n> +\n> +/* -----------------------------------------------------------------------------\n> + * Helpers\n> + */\n> +\n> +QString ControlFrame::getDefaultValueQStr()\n> +{\n> +       switch (control_->type()) {\n> +       case ControlTypeBool:\n> +               if (controlInfo_.def().get<bool>()) {\n> +                       return QString(\"True\");\n> +               } else {\n> +                       return QString(\"False\");\n> +               }\n> +       case ControlTypeInteger32:\n> +               return QString::number(controlInfo_.def().get<int32_t>());\n> +       case ControlTypeInteger64:\n> +               return QString::number(controlInfo_.def().get<int64_t>());\n> +       case ControlTypeFloat:\n> +               return QString::number(controlInfo_.def().get<float>());\n> +       default:\n> +               return QString(\"Unavailable\");\n> +       }\n> +}\n> diff --git a/src/qcam/settings/control_frame.h b/src/qcam/settings/control_frame.h\n> index 10690674..280f07e0 100644\n> --- a/src/qcam/settings/control_frame.h\n> +++ b/src/qcam/settings/control_frame.h\n> @@ -10,6 +10,7 @@\n>  #include <libcamera/controls.h>\n>  \n>  #include <QFrame>\n> +#include <QLabel>\n>  #include <QWidget>\n>  \n>  class ControlFrame : public QFrame\n> @@ -18,9 +19,17 @@ class ControlFrame : public QFrame\n>  \n>  public:\n>         ControlFrame(const libcamera::ControlId *control,\n> +                    const libcamera::ControlInfo &controlInfo,\n>                      QWidget *parent);\n>         ~ControlFrame() = default;\n>  \n>  private:\n>         const libcamera::ControlId *control_;\n> +       const libcamera::ControlInfo &controlInfo_;\n> +\n> +       /* Widgets */\n> +       QLabel *defaultValueLabel(QWidget *parent = nullptr);\n> +\n> +       /* Helper Hunctions */\n> +       QString getDefaultValueQStr();\n>  };\n> diff --git a/src/qcam/settings/controls_tab.cpp b/src/qcam/settings/controls_tab.cpp\n> index 33ed9332..adc24326 100644\n> --- a/src/qcam/settings/controls_tab.cpp\n> +++ b/src/qcam/settings/controls_tab.cpp\n> @@ -26,7 +26,7 @@ ControlsTab::ControlsTab(std::shared_ptr<libcamera::Camera> camera_,\n>  \n>         int controlCount = 0;\n>         for (auto &[control, info] : camera_->controls()) {\n> -               ControlFrame *controlFrame = new ControlFrame(control, this);\n> +               ControlFrame *controlFrame = new ControlFrame(control, info, this);\n>  \n>                 controlGLayout->addWidget(controlFrame, controlCount / 2,\n>                                           controlCount % 2);\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 C540CC3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Aug 2022 23:40:18 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 25A3261FC0;\n\tTue, 23 Aug 2022 01:40:18 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DA36E60E25\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 23 Aug 2022 01:40:16 +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 6EFC92B3;\n\tTue, 23 Aug 2022 01:40:16 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1661211618;\n\tbh=GbPULrFzi/Y2Fk5GBrvLxT91rY00fDWadWZ13o82Cg8=;\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=VPFvhHGtqS71TyRrn7qVkCzIeCdI/CPBheZOgOotOYChgMjEEBD5M3okWCdhjlS96\n\txUBlsDR+6Eex9RKaGkDBq1y+NpnVCqKn+td8J+4W4uhaMagumeg3DUwQPLWrWpw3I0\n\tSoPNSqM+I5FvK1fgWLxGGlKLyDaalUsUCDBWU0jLKhiCsWUGZX6uB7L5R2CYUDlhFJ\n\tWZFNbB0WeOUywvGq+ARh0Y2c0yfA+N3oqZjPRVoHz7P3NtWfFtRIMjqX54L1j0LV5F\n\tDzOEENiEs2Vx0RSViNDIHh5kLBpw9tkt3MwguoeyfPKfHDhh1m3CdZdwWnV3Kbitkr\n\tXVDYa7RUGLN+A==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1661211616;\n\tbh=GbPULrFzi/Y2Fk5GBrvLxT91rY00fDWadWZ13o82Cg8=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=AdfCxZj+ELBuLoBpMDlW6YUkx++QaF5zBNtdeLmJUH0FEtO+ssaFCwbi8LkqhKIdt\n\tVg2IzZNgPP5I0a0EH0epT5eAcyD0bQ/WDD0rxnIOPYQzLbcQ8qDcW1R+u9nX0iiP6y\n\tTEmEvE9SJOCtD6DdKVjm/Fx3svHbRe+sG7yretU0="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"AdfCxZj+\"; dkim-atps=neutral","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20220812124651.27496-3-utkarsh02t@gmail.com>","References":"<20220812124651.27496-1-utkarsh02t@gmail.com>\n\t<20220812124651.27496-3-utkarsh02t@gmail.com>","To":"Utkarsh Tiwari <utkarsh02t@gmail.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 23 Aug 2022 00:40:14 +0100","Message-ID":"<166121161424.3484129.8344090180993758107@Monstersaurus>","User-Agent":"alot/0.10","Subject":"Re: [libcamera-devel] [PATCH v2 02/11] qcam: ControlFrame: Display\n\tdefualt value of controls","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>"}}]