1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
/* This file is part of the KDE libraries
Copyright (C) 2000 Carsten Pfeiffer <pfeiffer@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KPUSHBUTTON_H
#define KPUSHBUTTON_H
#include <qpoint.h>
#include <qpushbutton.h>
#include <kguiitem.h>
#include <kstdguiitem.h>
class QDragObject;
/**
* This is nothing but a QPushButton with drag-support and KGuiItem support. You have to call
* setDragEnabled( true ) and override the virtual method
* dragObject() to specify the QDragObject to be used.
*
* @short A QPushButton with drag-support and KGuiItem support
* @author Carsten Pfeiffer <pfeiffer@kde.org>
*/
class KDEUI_EXPORT KPushButton : public QPushButton
{
Q_OBJECT
Q_PROPERTY(int stdItem READ guiItm WRITE setGuiItm )
Q_PROPERTY(bool isDragEnabled READ isDragEnabled WRITE setDragEnabled)
public:
/**
* Default constructor.
*/
KPushButton( QWidget *parent, const char *name=0 );
/**
* Constructor, that sets the button-text to @p text
*/
KPushButton( const QString &text, QWidget *parent, const char *name=0);
/**
* Constructor, that sets an icon and the button-text to @p text
*/
KPushButton( const QIconSet &icon, const QString &text,
QWidget *parent, const char *name=0 );
/**
* Constructor that takes a KGuiItem for the text, the icon, the tooltip
* and the what's this help
*/
KPushButton( const KGuiItem &item, QWidget *parent, const char *name = 0 );
/**
* Destructs the button.
*/
~KPushButton();
/**
* Enables/disables drag-support. Default is disabled.
*/
void setDragEnabled( bool enable );
/**
* @returns if drag support is enabled or not.
*/
bool isDragEnabled() const { return m_dragEnabled; }
/**
* Sets the KGuiItem for this button.
*/
void setGuiItem( const KGuiItem& item );
/**
* Sets the standard KGuiItem for this button.
* @since 3.4
*/
void setGuiItem( KStdGuiItem::StdItem item );
/**
* Reads the standard KGuiItem for this button.
* @since 3.4
*/
KStdGuiItem::StdItem guiItem() const;
// Hack for Qt designer
void setGuiItm(int itm ) { setGuiItem( (KStdGuiItem::StdItem)itm );}
int guiItm() const { return (int)guiItem(); }
/**
* Sets the Icon Set for this button. It also takes into account hte
* KGlobalSettings::showIconsOnPushButtons() setting.
*/
void setIconSet( const QIconSet &iconSet );
/**
* Sets the text of the button
*/
void setText( const QString &text );
protected:
/**
* Reimplement this and return the QDragObject that should be used
* for the drag.
* Default implementation returns 0L, so that no drag is initiated.
*/
virtual QDragObject * dragObject();
/**
* Reimplemented to add drag-support
*/
virtual void mousePressEvent( QMouseEvent * );
/**
* Reimplemented to add drag-support
*/
virtual void mouseMoveEvent( QMouseEvent * );
/**
* Starts a drag (dragCopy() by default) using dragObject()
*/
virtual void startDrag();
private:
bool m_dragEnabled;
QPoint startPos;
private slots:
void slotSettingsChanged( int category );
private:
/**
* Internal.
* Initialize the KPushButton instance
*/
void init( const KGuiItem &item );
void readSettings();
static bool s_useIcons;
protected:
virtual void virtual_hook( int id, void* data );
private:
class KPushButtonPrivate;
KPushButtonPrivate *d;
};
#endif // KPUSHBUTTON_H
|