File indexing completed on 2024-06-23 05:13:48
0001 /* conf/labelledwidget.h 0002 0003 This file is part of Kleopatra, the KDE keymanager 0004 SPDX-FileCopyrightText: 2022 g10 Code GmbH 0005 SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 #pragma once 0010 0011 #include <QLabel> 0012 #include <QPointer> 0013 0014 namespace Kleo 0015 { 0016 0017 namespace _detail 0018 { 0019 class LabelledWidgetBase 0020 { 0021 protected: 0022 LabelledWidgetBase() = default; 0023 0024 QWidget *widget() const; 0025 0026 public: 0027 QLabel *label() const; 0028 0029 void setWidgets(QWidget *widget, QLabel *label); 0030 0031 void setEnabled(bool enabled); 0032 0033 private: 0034 QPointer<QLabel> mLabel; 0035 QPointer<QWidget> mWidget; 0036 }; 0037 } 0038 0039 /** 0040 * LabelledWidget is a small value-like class for simplifying the management 0041 * of a QWidget with associated QLabel. 0042 */ 0043 template<class Widget> 0044 class LabelledWidget : public _detail::LabelledWidgetBase 0045 { 0046 public: 0047 LabelledWidget() 0048 : _detail::LabelledWidgetBase{} 0049 { 0050 } 0051 0052 void createWidgets(QWidget *parent) 0053 { 0054 setWidgets(new Widget{parent}, new QLabel{parent}); 0055 } 0056 0057 Widget *widget() const 0058 { 0059 return dynamic_cast<Widget *>(_detail::LabelledWidgetBase::widget()); 0060 } 0061 }; 0062 0063 }