KProperty

booledit.h
1/* This file is part of the KDE project
2 Copyright (C) 2004 Cedric Pasteur <cedric.pasteur@free.fr>
3 Copyright (C) 2004 Alexander Dymo <cloudtemple@mskat.net>
4 Copyright (C) 2006-2015 Jarosław Staniek <staniek@kde.org>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
20*/
21
22#ifndef KPROPERTY_BOOLEDIT_H
23#define KPROPERTY_BOOLEDIT_H
24
25#include "combobox.h"
26#include "KPropertyFactory.h"
27
28#include <QEvent>
29#include <QResizeEvent>
30#include <QToolButton>
31
32//! A bool editor supporting two states: true and false.
33/*! For null values, false is displayed.
34*/
35class KPROPERTYWIDGETS_EXPORT KPropertyBoolEditor : public QToolButton
36{
37 Q_OBJECT
38 Q_PROPERTY(QVariant value READ value WRITE setValue USER true)
39
40public:
41 explicit KPropertyBoolEditor(const KProperty *prop, QWidget *parent = nullptr);
42
43 ~KPropertyBoolEditor() override;
44
45 QVariant value() const;
46
47 static void draw(QPainter *p, const QRect &r, const QVariant &value,
48 const QString& text, bool threeState);
50 void commitData(QWidget* editor);
51
52public Q_SLOTS:
53 void setValue(const QVariant &value);
54
55protected Q_SLOTS:
56 void slotValueChanged(bool state);
57
58protected:
59 void paintEvent( QPaintEvent * event ) override;
60 bool eventFilter(QObject* watched, QEvent* e) override;
61
62private:
63 Q_DISABLE_COPY(KPropertyBoolEditor)
64 class Private;
65 Private * const d;
66};
67
68//! A bool editor supporting three states: true, false and null.
69/*! The editor is implemented as a drop-down list.
70*/
71class KPROPERTYWIDGETS_EXPORT KPropertyThreeStateBoolEditor : public KPropertyComboBoxEditor
72{
73 Q_OBJECT
74
75public:
76 explicit KPropertyThreeStateBoolEditor(const KPropertyListData& listData, QWidget *parent = nullptr);
78
79 QVariant value() const override;
80 void setValue(const QVariant &value) override;
81
82private:
83 Q_DISABLE_COPY(KPropertyThreeStateBoolEditor)
84 class Private;
85 Private * const d;
86};
87
88class KPROPERTYWIDGETS_EXPORT KPropertyBoolDelegate : public KPropertyEditorCreatorInterface,
89 public KPropertyValuePainterInterface,
91{
92public:
93 KPropertyBoolDelegate();
94
95 QWidget *createEditor(int type, QWidget *parent, const QStyleOptionViewItem &option,
96 const QModelIndex &index) const override;
97
98 void paint(QPainter *painter, const QStyleOptionViewItem &option,
99 const QModelIndex &index) const override;
100
101 QString propertyValueToString(const KProperty *prop, const QLocale &locale) const override;
102
103 QString valueToString(const QVariant &value, const QLocale &locale) const override;
104};
105
106#endif
A bool editor supporting two states: true and false.
Definition booledit.h:36
An interface for editor widget creators.
A data container for properties of list type.
A bool editor supporting three states: true, false and null.
Definition booledit.h:72
Provides a specialized conversion of value to string depending on type.
The base class representing a single property.
Definition KProperty.h:96
Q_PROPERTY(...)
Q_SIGNALSQ_SIGNALS
Q_SLOTSQ_SLOTS
virtual bool eventFilter(QObject *watched, QEvent *event)
virtual void paintEvent(QPaintEvent *event) override
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Mon Nov 18 2024 12:11:18 by doxygen 1.12.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.