void QFontDialog::setFont( const QFont &f ) { d->family = f.family(); d->style = d->fdb.styleString( f ); d->size = f.pointSize(); if ( d->size == -1 ) { QFontInfo fi( f ); d->size = fi.pointSize(); } d->strikeout->setChecked( f.strikeOut() ); d->underline->setChecked( f.underline() ); updateFamilies(); }
/*! \internal */ void QFontDialog::scriptHighlighted( int index ) { d->script = (QFont::Script)index; d->sampleEdit->setText( d->fdb.scriptSample( d->script ) ); updateFamilies(); }
/*! \internal */ void QFontDialogPrivate::_q_writingSystemHighlighted(int index) { writingSystem = QFontDatabase::WritingSystem(index); sampleEdit->setText(fdb.writingSystemSample(writingSystem)); updateFamilies(); }
QFontDialog::QFontDialog( QWidget *parent, const char *name, bool modal, WFlags f ) : QDialog( parent, name, modal, f ) { setSizeGripEnabled( TRUE ); d = new QFontDialogPrivate; // grid d->familyEdit = new QLineEdit( this, "font family I" ); d->familyEdit->setReadOnly( TRUE ); d->familyList = new QListBox( this, "font family II" ); d->familyEdit->setFocusProxy( d->familyList ); d->familyAccel = new QLabel( d->familyList, tr("&Font"), this, "family accelerator" ); d->familyAccel->setIndent( 2 ); d->styleEdit = new QLineEdit( this, "font style I" ); d->styleEdit->setReadOnly( TRUE ); d->styleList = new QListBox( this, "font style II" ); d->styleEdit->setFocusProxy( d->styleList ); d->styleAccel = new QLabel( d->styleList, tr("Font st&yle"), this, "style accelerator" ); d->styleAccel->setIndent( 2 ); d->sizeEdit = new QLineEdit( this, "font size I" ); d->sizeEdit->setFocusPolicy( ClickFocus ); QIntValidator *validator = new QIntValidator( 1, 512, this ); d->sizeEdit->setValidator( validator ); d->sizeList = new QListBox( this, "font size II" ); d->sizeAccel = new QLabel ( d->sizeEdit, tr("&Size"), this, "size accelerator" ); d->sizeAccel->setIndent( 2 ); // effects box d->effects = new QVGroupBox( tr("Effects"), this, "font effects" ); d->strikeout = new QCheckBox( d->effects, "strikeout on/off" ); d->strikeout->setText( tr("Stri&keout") ); d->underline = new QCheckBox( d->effects, "underline on/off" ); d->underline->setText( tr("&Underline") ); d->sample = new QHGroupBox( tr("Sample"), this, "sample text" ); d->sampleEdit = new QLineEdit( d->sample, "r/w sample text" ); d->sampleEdit->setSizePolicy( QSizePolicy( QSizePolicy::Ignored, QSizePolicy::Ignored) ); d->sampleEdit->setAlignment( AlignCenter ); // Note that the sample text is *not* translated with tr(), as the // characters used depend on the charset encoding. d->sampleEdit->setText( "AaBbYyZz" ); d->scriptCombo = new QComboBox( FALSE, this, "font encoding" ); d->scriptAccel = new QLabel( d->scriptCombo, tr("Scr&ipt"), this,"encoding label"); d->scriptAccel->setIndent( 2 ); d->size = 0; d->smoothScalable = FALSE; connect( d->scriptCombo, SIGNAL(activated(int)), SLOT(scriptHighlighted(int)) ); connect( d->familyList, SIGNAL(highlighted(int)), SLOT(familyHighlighted(int)) ); connect( d->styleList, SIGNAL(highlighted(int)), SLOT(styleHighlighted(int)) ); connect( d->sizeList, SIGNAL(highlighted(const QString&)), SLOT(sizeHighlighted(const QString&)) ); connect( d->sizeEdit, SIGNAL(textChanged(const QString&)), SLOT(sizeChanged(const QString&)) ); connect( d->strikeout, SIGNAL(clicked()), SLOT(updateSample()) ); connect( d->underline, SIGNAL(clicked()), SLOT(updateSample()) ); (void)d->familyList->sizeHint(); (void)d->styleList->sizeHint(); (void)d->sizeList->sizeHint(); for (int i = 0; i < QFont::NScripts; i++) { QString scriptname = QFontDatabase::scriptName((QFont::Script) i); if ( !scriptname.isEmpty() ) d->scriptCombo->insertItem( scriptname ); } updateFamilies(); if ( d->familyList->count() != 0 ) d->familyList->setCurrentItem( 0 ); // grid layout QGridLayout * mainGrid = new QGridLayout( this, 9, 6, 12, 0 ); mainGrid->addWidget( d->familyAccel, 0, 0 ); mainGrid->addWidget( d->familyEdit, 1, 0 ); mainGrid->addWidget( d->familyList, 2, 0 ); mainGrid->addWidget( d->styleAccel, 0, 2 ); mainGrid->addWidget( d->styleEdit, 1, 2 ); mainGrid->addWidget( d->styleList, 2, 2 ); mainGrid->addWidget( d->sizeAccel, 0, 4 ); mainGrid->addWidget( d->sizeEdit, 1, 4 ); mainGrid->addWidget( d->sizeList, 2, 4 ); mainGrid->setColStretch( 0, 38 ); mainGrid->setColStretch( 2, 24 ); mainGrid->setColStretch( 4, 10 ); mainGrid->addColSpacing( 1, 6 ); mainGrid->addColSpacing( 3, 6 ); mainGrid->addColSpacing( 5, 6 ); mainGrid->addRowSpacing( 3, 12 ); mainGrid->addWidget( d->effects, 4, 0 ); mainGrid->addMultiCellWidget( d->sample, 4, 7, 2, 4 ); mainGrid->addWidget( d->scriptAccel, 5, 0 ); mainGrid->addRowSpacing( 6, 2 ); mainGrid->addWidget( d->scriptCombo, 7, 0 ); mainGrid->addRowSpacing( 8, 12 ); QHBoxLayout *buttonBox = new QHBoxLayout; mainGrid->addMultiCell( buttonBox, 9, 9, 0, 4 ); buttonBox->addStretch( 1 ); QString okt = modal ? tr("OK") : tr("Apply"); d->ok = new QPushButton( okt, this, "accept font selection" ); buttonBox->addWidget( d->ok ); if ( modal ) connect( d->ok, SIGNAL(clicked()), SLOT(accept()) ); d->ok->setDefault( TRUE ); d->ok->setFixedWidth( 80 ); buttonBox->addSpacing( 12 ); QString cancelt = modal ? tr("Cancel") : tr("Close"); d->cancel = new QPushButton( cancelt, this, "cancel/close" ); buttonBox->addWidget( d->cancel ); connect( d->cancel, SIGNAL(clicked()), SLOT(reject()) ); d->cancel->setFixedWidth( 80 ); resize( 500, 360 ); d->sizeEdit->installEventFilter( this ); d->familyList->installEventFilter( this ); d->styleList->installEventFilter( this ); d->sizeList->installEventFilter( this ); d->familyList->setFocus(); }
void QFontDialogPrivate::init() { Q_Q(QFontDialog); #ifdef Q_WS_MAC nativeDialogInUse = false; delegate = 0; #endif q->setSizeGripEnabled(true); q->setWindowTitle(QFontDialog::tr("Select Font")); // grid familyEdit = new QLineEdit(q); familyEdit->setReadOnly(true); familyList = new QFontListView(q); familyEdit->setFocusProxy(familyList); familyAccel = new QLabel(q); #ifndef QT_NO_SHORTCUT familyAccel->setBuddy(familyList); #endif familyAccel->setIndent(2); styleEdit = new QLineEdit(q); styleEdit->setReadOnly(true); styleList = new QFontListView(q); styleEdit->setFocusProxy(styleList); styleAccel = new QLabel(q); #ifndef QT_NO_SHORTCUT styleAccel->setBuddy(styleList); #endif styleAccel->setIndent(2); sizeEdit = new QLineEdit(q); sizeEdit->setFocusPolicy(Qt::ClickFocus); QIntValidator *validator = new QIntValidator(1, 512, q); sizeEdit->setValidator(validator); sizeList = new QFontListView(q); sizeAccel = new QLabel(q); #ifndef QT_NO_SHORTCUT sizeAccel->setBuddy(sizeEdit); #endif sizeAccel->setIndent(2); // effects box effects = new QGroupBox(q); QVBoxLayout *vbox = new QVBoxLayout(effects); strikeout = new QCheckBox(effects); vbox->addWidget(strikeout); underline = new QCheckBox(effects); vbox->addWidget(underline); sample = new QGroupBox(q); QHBoxLayout *hbox = new QHBoxLayout(sample); sampleEdit = new QLineEdit(sample); sampleEdit->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored)); sampleEdit->setAlignment(Qt::AlignCenter); // Note that the sample text is *not* translated with tr(), as the // characters used depend on the charset encoding. sampleEdit->setText(QLatin1String("AaBbYyZz")); hbox->addWidget(sampleEdit); writingSystemCombo = new QComboBox(q); writingSystemAccel = new QLabel(q); #ifndef QT_NO_SHORTCUT writingSystemAccel->setBuddy(writingSystemCombo); #endif writingSystemAccel->setIndent(2); size = 0; smoothScalable = false; QObject::connect(writingSystemCombo, SIGNAL(activated(int)), q, SLOT(_q_writingSystemHighlighted(int))); QObject::connect(familyList, SIGNAL(highlighted(int)), q, SLOT(_q_familyHighlighted(int))); QObject::connect(styleList, SIGNAL(highlighted(int)), q, SLOT(_q_styleHighlighted(int))); QObject::connect(sizeList, SIGNAL(highlighted(int)), q, SLOT(_q_sizeHighlighted(int))); QObject::connect(sizeEdit, SIGNAL(textChanged(QString)), q, SLOT(_q_sizeChanged(QString))); QObject::connect(strikeout, SIGNAL(clicked()), q, SLOT(_q_updateSample())); QObject::connect(underline, SIGNAL(clicked()), q, SLOT(_q_updateSample())); for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) { QFontDatabase::WritingSystem ws = QFontDatabase::WritingSystem(i); QString writingSystemName = QFontDatabase::writingSystemName(ws); if (writingSystemName.isEmpty()) break; writingSystemCombo->addItem(writingSystemName); } updateFamilies(); if (familyList->count() != 0) familyList->setCurrentItem(0); // grid layout QGridLayout *mainGrid = new QGridLayout(q); int spacing = mainGrid->spacing(); if (spacing >= 0) { // uniform spacing mainGrid->setSpacing(0); mainGrid->setColumnMinimumWidth(1, spacing); mainGrid->setColumnMinimumWidth(3, spacing); int margin = 0; mainGrid->getContentsMargins(0, 0, 0, &margin); mainGrid->setRowMinimumHeight(3, margin); mainGrid->setRowMinimumHeight(6, 2); mainGrid->setRowMinimumHeight(8, margin); } mainGrid->addWidget(familyAccel, 0, 0); mainGrid->addWidget(familyEdit, 1, 0); mainGrid->addWidget(familyList, 2, 0); mainGrid->addWidget(styleAccel, 0, 2); mainGrid->addWidget(styleEdit, 1, 2); mainGrid->addWidget(styleList, 2, 2); mainGrid->addWidget(sizeAccel, 0, 4); mainGrid->addWidget(sizeEdit, 1, 4); mainGrid->addWidget(sizeList, 2, 4); mainGrid->setColumnStretch(0, 38); mainGrid->setColumnStretch(2, 24); mainGrid->setColumnStretch(4, 10); mainGrid->addWidget(effects, 4, 0); mainGrid->addWidget(sample, 4, 2, 4, 3); mainGrid->addWidget(writingSystemAccel, 5, 0); mainGrid->addWidget(writingSystemCombo, 7, 0); buttonBox = new QDialogButtonBox(q); mainGrid->addWidget(buttonBox, 9, 0, 1, 5); QPushButton *button = static_cast<QPushButton *>(buttonBox->addButton(QDialogButtonBox::Ok)); QObject::connect(buttonBox, SIGNAL(accepted()), q, SLOT(accept())); button->setDefault(true); buttonBox->addButton(QDialogButtonBox::Cancel); QObject::connect(buttonBox, SIGNAL(rejected()), q, SLOT(reject())); #if defined(Q_WS_WINCE) q->resize(180, 120); #elif defined(Q_WS_S60) q->resize(QApplication::desktop()->availableGeometry(QCursor::pos()).size()); #else q->resize(500, 360); #endif // Q_WS_WINCE sizeEdit->installEventFilter(q); familyList->installEventFilter(q); styleList->installEventFilter(q); sizeList->installEventFilter(q); familyList->setFocus(); retranslateStrings(); }