21#include "fonthelpers_p.h"
23#include <QtGui/QLabel>
24#include <QtGui/QPushButton>
25#include <QtGui/QLayout>
26#include <QtGui/QFontDatabase>
40 QString family = font.family();
41 QString style = dbase.styleString(font);
42 qreal size = font.pointSizeF();
45 const QStringList families = dbase.families();
46 if (!families.contains(family)) {
48 family = families.count() ? families[0] :
"fixed";
54 QString retStyle = dbase.styleString(dbase.font(family, style, 10));
59 if (!dbase.isSmoothlyScalable(family, style)) {
60 QList<int> sizes = dbase.smoothSizes(family, style);
61 if (!sizes.contains(size)) {
65 foreach (
int lsize, sizes) {
66 int diff = qAbs(refsize - lsize);
76 QFont result = dbase.font(family, style,
int(size));
77 if (dbase.isSmoothlyScalable(family, style) && result.pointSize() == floor(size)) {
78 result.setPointSizeF(size);
83class KFontRequester::KFontRequesterPrivate
88 void displaySampleText();
91 void _k_buttonClicked();
95 QString m_sampleText, m_title;
96 QLabel *m_sampleLabel;
97 QPushButton *m_button;
102 :
QWidget( parent ), d(new KFontRequesterPrivate(this))
104 d->m_onlyFixed = onlyFixed;
106 QHBoxLayout *layout =
new QHBoxLayout(
this );
107 layout->setMargin( 0 );
109 d->m_sampleLabel =
new QLabel(
this );
112 d->m_sampleLabel->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken );
113 setFocusProxy( d->m_button );
115 layout->addWidget( d->m_sampleLabel, 1 );
116 layout->addWidget( d->m_button );
118 connect( d->m_button, SIGNAL(clicked()), SLOT(_k_buttonClicked()) );
120 d->displaySampleText();
136 return d->m_onlyFixed;
141 return d->m_sampleText;
151 return d->m_sampleLabel;
162 d->m_onlyFixed = onlyFixed;
164 d->displaySampleText();
170 d->m_sampleText = text;
171 d->displaySampleText();
180void KFontRequester::KFontRequesterPrivate::_k_buttonClicked()
189 if ( result == KDialog::Accepted )
192 emit q->fontSelected( m_selFont );
196void KFontRequester::KFontRequesterPrivate::displaySampleText()
198 m_sampleLabel->setFont( m_selFont );
200 qreal size = m_selFont.pointSizeF();
202 size = m_selFont.pixelSize();
204 if ( m_sampleText.isEmpty() ) {
206 m_sampleLabel->setText( QString(
"%1 %2" ).arg( family ).arg(
KGlobal::locale()->formatNumber( size, (size == floor(size)) ? 0 : 1 ) ) );
209 m_sampleLabel->setText( m_sampleText );
213void KFontRequester::KFontRequesterPrivate::setToolTip()
215 m_button->setToolTip(
i18n(
"Click to select a font" ) );
217 m_sampleLabel->setToolTip( QString() );
218 m_sampleLabel->setWhatsThis(QString());
220 if ( m_title.isNull() )
222 m_sampleLabel->setToolTip(
i18n(
"Preview of the selected font" ) );
223 m_sampleLabel->setWhatsThis(
i18n(
"This is a preview of the selected font. You can change it"
224 " by clicking the \"Choose...\" button." ) );
228 m_sampleLabel->setToolTip(
i18n(
"Preview of the \"%1\" font" , m_title ) );
229 m_sampleLabel->setWhatsThis(
i18n(
"This is a preview of the \"%1\" font. You can change it"
230 " by clicking the \"Choose...\" button." , m_title ) );
234#include "kfontrequester.moc"
static int getFont(QFont &theFont, const KFontChooser::DisplayFlags &flags=KFontChooser::NoDisplayFlags, QWidget *parent=0L, Qt::CheckState *sizeIsRelativeState=0L)
Creates a modal font dialog, lets the user choose a font, and returns when the dialog is closed.
virtual void setFont(const QFont &font, bool onlyFixed=false)
Sets the currently selected font in the requester.
friend class KFontRequesterPrivate
virtual void setTitle(const QString &title)
Set the title for the widget that will be used in the tooltip and what's this text.
QPushButton * button() const
void fontSelected(const QFont &font)
Emitted when a new font has been selected in the underlying dialog.
virtual void setSampleText(const QString &text)
Sets the sample text.
KFontRequester(QWidget *parent=0L, bool onlyFixed=false)
Constructs a font requester widget.
QString translateFontName(const QString &name)
static QFont nearestExistingFont(const QFont &font)
QString i18n(const char *text)