summaryrefslogtreecommitdiffstats
path: root/kdeui/kfontcombo.h
blob: f3c5d11699918a8b0aff6973bb6fe845521850b5 (plain)
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/* This file is part of the KDE libraries
   Copyright (c) 2001 Malte Starostik <malte@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 version 2 as published by the Free Software Foundation.

   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.
*/

// $Id$

#ifndef _KFONTCOMBO_H_
#define _KFONTCOMBO_H_

#include <kcombobox.h>

/**
 * @short A combobox that lists the available fonts.
 *
 * The items are painted using the respective font itself, so the user
 * can easily choose a font based on its look. This can be turned off
 * globally if the user wishes so.
 *
 * @author Malte Starostik <malte@kde.org>
 */
class KDEUI_EXPORT KFontCombo : public KComboBox
{
    Q_OBJECT
    Q_PROPERTY(QString family READ currentFont WRITE setCurrentFont)
    Q_PROPERTY(bool bold READ bold WRITE setBold DESIGNABLE true)
    Q_PROPERTY(bool italic READ italic WRITE setItalic DESIGNABLE true)
    Q_PROPERTY(bool underline READ underline WRITE setUnderline DESIGNABLE true)
    Q_PROPERTY(bool strikeOut READ strikeOut WRITE setStrikeOut DESIGNABLE true)
    Q_PROPERTY(int fontSize READ size WRITE setSize DESIGNABLE true)
public:
    /**
     * Constructor
     *
     * @param parent The parent widget
     * @param name The object name for the widget
     */
    KFontCombo(QWidget *parent, const char *name = 0);
    /**
     * Constructor that takes an already initialzed font list
     *
     * @param fonts A list of fonts to show
     * @param parent The parent widget
     * @param name The object name for the widget
     */
    KFontCombo(const QStringList &fonts, QWidget *parent, const char *name = 0);
    /**
     * Destructor
     */
    virtual ~KFontCombo();

    /**
     * Sets the font list.
     *
     * @param fonts Font list to show
     */
    void setFonts(const QStringList &fonts);
    /**
     * Sets the currently selected font.
     *
     * @param family Font to select.
     */
    void setCurrentFont(const QString &family);
    /**
     * @return the currently selected font.
     */
    QString currentFont() const;

    /**
     * Sets the listed fonts to bold or normal.
     *
     * @param bold Set to true to display fonts in bold
     */
    void setBold(bool bold);
    /**
     * Returns the current bold status.
     *
     * @return true if fonts are bold
     */
    bool bold() const;
    /**
     * Sets the listed fonts to italic or regular.
     *
     * @param italic Set to true to display fonts italic
     */
    void setItalic(bool italic);
    /**
     * Returns the current italic status
     *
     * @return True if fonts are italic
     */
    bool italic() const;
    /**
     * Sets the listed fonts to underlined or not underlined
     *
     * @param underline Set to true to display fonts underlined
     */
    void setUnderline(bool underline);
    /**
     * Returns the current underline status
     *
     * @return True if fonts are underlined
     */
    bool underline() const;
    /**
     * Sets the listed fonts to striked out or not
     *
     * @param strikeOut Set to true to display fonts striked out
     */
    void setStrikeOut(bool strikeOut);
    /**
     * Returns the current strike out status
     *
     * @return True if fonts are striked out
     */
    bool strikeOut() const;
    /**
     * Sets the listed fonts' size
     *
     * @param size Set to the point size to display the fonts in
     */
    void setSize(int size);
    /**
     * Returns the current font size
     *
     * @return The point size of the fonts
     */
    int size() const;

    /**
     * Returns the user's setting of whether the items should be painted
     * in the respective fonts or not
     *
     * @return True if the respective fonts are used for painting
     */
    static bool displayFonts();

    virtual void setCurrentItem(int i);

protected slots:
    /**
     * @internal
     * Listens to highlighted(int)
     */
    void slotModified( int i );

protected:
    /**
     * Updated the combo's listBox() to reflect changes made to the
     * fonts' attributed
     */
    void updateFonts();

private:
    void init();

private:
    friend class KFontListItem;
protected:
    virtual void virtual_hook( int id, void* data );
private:
    struct KFontComboPrivate *d;
};

#endif