1/*
2 Copyright (C) 2003 Nadeem Hasan <nhasan@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20#ifndef KFONTREQUESTER_H
21#define KFONTREQUESTER_H
22
23#include <QtGui/QWidget>
24#include <QtGui/QFont>
25#include <QtCore/QString>
26
27#include <kdeui_export.h>
28
29class QLabel;
30class QPushButton;
31
32/**
33 * This class provides a widget with a lineedit and a button, which invokes
34 * a font dialog (KFontDialog).
35 *
36 * The lineedit provides a preview of the selected font. The preview text can
37 * be customized. You can also have the font dialog show only the fixed fonts.
38 *
39 * \image html kfontrequester.png "KDE Font Requester"
40 *
41 * @author Nadeem Hasan <nhasan@kde.org>
42 *
43 */
44class KDEUI_EXPORT KFontRequester : public QWidget
45{
46 Q_OBJECT
47
48 Q_PROPERTY( QString title READ title WRITE setTitle )
49 Q_PROPERTY( QString sampleText READ sampleText WRITE setSampleText )
50 Q_PROPERTY( QFont font READ font WRITE setFont NOTIFY fontSelected USER true)
51
52 public:
53
54 /**
55 * Constructs a font requester widget.
56 *
57 * @param parent The parent widget.
58 * @param onlyFixed Only display fonts which have fixed-width character
59 * sizes.
60 */
61 explicit KFontRequester( QWidget *parent=0L, bool onlyFixed=false );
62
63 ~KFontRequester();
64
65 /**
66 * @return The currently selected font in the requester.
67 */
68 QFont font() const;
69
70 /**
71 * @return Returns true if only fixed fonts are displayed.
72 */
73 bool isFixedOnly() const;
74
75 /**
76 * @return The current text in the sample text input area.
77 */
78 QString sampleText() const;
79
80 /**
81 * @return The current title of the widget.
82 */
83 QString title() const;
84
85 /**
86 * @return Pointer to the label used for preview.
87 */
88 QLabel *label() const;
89
90 /**
91 * @return Pointer to the pushbutton in the widget.
92 */
93 QPushButton *button() const;
94
95 /**
96 * Sets the currently selected font in the requester.
97 *
98 * @param font The font to select.
99 * @param onlyFixed Display only fixed-width fonts in the font dialog
100 * if @p true, or vice-versa.
101 */
102 virtual void setFont( const QFont &font, bool onlyFixed=false );
103
104 /**
105 * Sets the sample text.
106 *
107 * Normally you should not change this
108 * text, but it can be better to do this if the default text is
109 * too large for the edit area when using the default font of your
110 * application. Default text is current font name and size. Setting
111 * the text to QString() will restore the default.
112 *
113 * @param text The new sample text. The current will be removed.
114 */
115 virtual void setSampleText( const QString &text );
116
117 /**
118 * Set the title for the widget that will be used in the tooltip and
119 * what's this text.
120 *
121 * @param title The title to be set.
122 */
123 virtual void setTitle( const QString & title );
124
125 Q_SIGNALS:
126 /**
127 * Emitted when a new @p font has been selected in the underlying dialog
128 */
129 void fontSelected( const QFont &font );
130
131 private:
132 class KFontRequesterPrivate;
133 friend class KFontRequesterPrivate;
134 KFontRequesterPrivate *const d;
135
136 Q_PRIVATE_SLOT( d, void _k_buttonClicked() )
137
138 Q_DISABLE_COPY(KFontRequester)
139};
140
141#endif // KFONTREQUESTER_H
142
143/* vim: et sw=2 ts=2
144*/
145