RectKey::RectKey(KeyCode keycode, const QRect &textGeometry, const QRect &keyGeometry, const QSize &labelSize, int topLeft, int topRight, int bottomLeft, int bottomRight, const QColor &keyColor, const QColor &textColor, const QColor &secondColor, const QColor &alphaColor, const QString &labelText, const QString &secondText, const QString &alphaText, const QFont &labelFont, const QFont &secondFont, const QFont &alphaFont, Qt::Alignment labelAlign, Qt::Alignment secondAlign, Qt::Alignment alphaAlign) : Key{keycode, textGeometry, keyGeometry, keyColor}, mTextColor{textColor}, mSecondColor{secondColor}, mAlphaColor{alphaColor}, mLabelAlign{labelAlign}, mSecondAlign{secondAlign}, mAlphaAlign{alphaAlign}, mLabelFont{labelFont}, mSecondFont{secondFont.resolve(labelFont)}, mAlphaFont{alphaFont.resolve(labelFont)}, mSecondText{secondText}, mAlphaText{alphaText} { QRect corner; mLabelText = labelText; mKeyShape.moveTo(keyGeometry.topLeft() + QPointF{0, topLeft * .5}); corner.setSize({bottomLeft, bottomLeft}); corner.moveBottomLeft(keyGeometry.bottomLeft()); mKeyShape.arcTo(corner, 90 * 2, 90); corner.setSize({bottomRight, bottomRight}); corner.moveBottomRight(keyGeometry.bottomRight()); mKeyShape.arcTo(corner, 90 * 3, 90); corner.setSize({topRight, topRight}); corner.moveTopRight(keyGeometry.topRight()); mKeyShape.arcTo(corner, 90 * 0, 90); corner.setSize({topLeft, topLeft}); corner.moveTopLeft(keyGeometry.topLeft()); mKeyShape.arcTo(corner, 90 * 1, 90); mLabelFont.setPixelSize(labelSize.height()); mLabelFont.setStretch(labelSize.width() * mLabelFont.stretch() / QFontMetricsF(mLabelFont).size(Qt::TextSingleLine, mLabelText).width()); }
void QQuickTextFieldPrivate::inheritFont(const QFont &f) { Q_Q(QQuickTextField); QFont parentFont = font.resolve(f); parentFont.resolve(font.resolve() | f.resolve()); const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont); const QFont resolvedFont = parentFont.resolve(defaultFont); const bool changed = resolvedFont != sourceFont; q->QQuickTextInput::setFont(resolvedFont); if (changed) emit q->fontChanged(); }
void QGraphicsWidgetPrivate::updateFont(const QFont &font) { Q_Q(QGraphicsWidget); // Update the local font setting. this->font = font; // Calculate new mask. if (q->isWindow() && !q->testAttribute(Qt::WA_WindowPropagation)) inheritedFontResolveMask = 0; int mask = font.resolve() | inheritedFontResolveMask; // Propagate to children. for (int i = 0; i < children.size(); ++i) { QGraphicsItem *item = children.at(i); if (item->isWidget()) { QGraphicsWidget *w = static_cast<QGraphicsWidget *>(item); if (!w->isWindow() || w->testAttribute(Qt::WA_WindowPropagation)) w->d_func()->resolveFont(mask); } else { item->d_ptr->resolveFont(mask); } } if (!polished) return; // Notify change. QEvent event(QEvent::FontChange); QApplication::sendEvent(q, &event); }
// Apply font to widget static void applyFont(const QString &family, int size, DeviceProfile::ApplyMode am, QWidget *widget) { QFont currentFont = widget->font(); if (currentFont.pointSize() == size && currentFont.family() == family) return; switch (am) { case DeviceProfile::ApplyFormParent: // Invisible form parent: Apply all widget->setFont(QFont(family, size)); break; case DeviceProfile::ApplyPreview: { // Preview: Apply only subproperties that have not been changed by designer properties bool apply = false; const uint resolve = currentFont.resolve(); if (!(resolve & QFont::FamilyResolved)) { currentFont.setFamily(family); apply = true; } if (!(resolve & QFont::SizeResolved)) { currentFont.setPointSize(size); apply = true; } if (apply) widget->setFont(currentFont); } break; } }
QFont QFontProto::resolve(const QFont &other) const { QFont *item = qscriptvalue_cast<QFont*>(thisObject()); if (item) return item->resolve(other); return QFont(); }
void QQuickTextField::setFont(const QFont &font) { Q_D(QQuickTextField); if (d->font.resolve() == font.resolve() && d->font == font) return; d->font = font; d->resolveFont(); }
bool FontPropertyManager::resetFontSubProperty(QtVariantPropertyManager *vm, QtProperty *property) { const PropertyToPropertyMap::iterator it = m_fontSubPropertyToProperty.find(property); if (it == m_fontSubPropertyToProperty.end()) return false; QtVariantProperty *fontProperty = vm->variantProperty(it.value()); QVariant v = fontProperty->value(); QFont font = qvariant_cast<QFont>(v); unsigned mask = font.resolve(); const unsigned flag = fontFlag(m_fontSubPropertyToFlag.value(property)); mask &= ~flag; font.resolve(mask); qVariantSetValue(v, font); fontProperty->setValue(v); return true; }
QFont QGraphicsWidgetPrivate::naturalWidgetFont() const { Q_Q(const QGraphicsWidget); QFont naturalFont; // ### no application font support if (QGraphicsWidget *parent = q->parentWidget()) { naturalFont = parent->font(); } else if (scene) { naturalFont = scene->font(); } naturalFont.resolve(0); return naturalFont; }
void tst_QFont::resetFont() { QWidget parent; QFont parentFont = parent.font(); parentFont.setPointSize(parentFont.pointSize() + 2); parent.setFont(parentFont); QWidget *child = new QWidget(&parent); QFont childFont = child->font(); childFont.setBold(!childFont.bold()); child->setFont(childFont); QVERIFY(parentFont.resolve() != 0); QVERIFY(childFont.resolve() != 0); QVERIFY(childFont != parentFont); child->setFont(QFont()); // reset font QVERIFY(child->font().resolve() == 0); QVERIFY(child->font().pointSize() == parent.font().pointSize()); QVERIFY(parent.font().resolve() != 0); }
void FontPropertyManager::updateModifiedState(QtProperty *property, const QVariant &value) { const PropertyToSubPropertiesMap::iterator it = m_propertyToFontSubProperties.find(property); if (it == m_propertyToFontSubProperties.end()) return; const PropertyList &subProperties = it.value(); QFont font = qVariantValue<QFont>(value); const unsigned mask = font.resolve(); const int count = subProperties.size(); for (int index = 0; index < count; index++) { const unsigned flag = fontFlag(index); subProperties.at(index)->setModified(mask & flag); } }
bool QgsFontUtils::updateFontViaStyle( QFont& f, const QString& fontstyle, bool fallback ) { if ( fontstyle.isEmpty() ) { return false; } QFontDatabase fontDB; if ( !fallback ) { // does the font even have the requested style? bool hasstyle = fontFamilyHasStyle( f.family(), fontstyle ); if ( !hasstyle ) { return false; } } // is the font's style already the same as requested? if ( fontstyle == fontDB.styleString( f ) ) { return false; } QFont appfont = QApplication::font(); int defaultSize = appfont.pointSize(); // QFontDatabase::font() needs an integer for size QFont styledfont; bool foundmatch = false; // if fontDB.font() fails, it returns the default app font; but, that may be the target style styledfont = fontDB.font( f.family(), fontstyle, defaultSize ); if ( appfont != styledfont || fontstyle != fontDB.styleString( f ) ) { foundmatch = true; } // default to first found style if requested style is unavailable // this helps in the situations where the passed-in font has to have a named style applied if ( fallback && !foundmatch ) { QFont testFont = QFont( f ); testFont.setPointSize( defaultSize ); // prefer a style that mostly matches the passed-in font Q_FOREACH ( const QString &style, fontDB.styles( f.family() ) ) { styledfont = fontDB.font( f.family(), style, defaultSize ); styledfont = styledfont.resolve( f ); if ( testFont.toString() == styledfont.toString() ) { foundmatch = true; break; } } // fallback to first style found that works if ( !foundmatch ) { Q_FOREACH ( const QString &style, fontDB.styles( f.family() ) ) { styledfont = fontDB.font( f.family(), style, defaultSize ); if ( QApplication::font() != styledfont ) { foundmatch = true; break; } } }
// Apply a simple variant type to a DOM property static bool applySimpleProperty(const QVariant &v, bool translateString, DomProperty *dom_prop) { switch (v.type()) { case QVariant::String: { DomString *str = new DomString(); str->setText(v.toString()); if (!translateString) str->setAttributeNotr(QStringLiteral("true")); dom_prop->setElementString(str); } return true; case QVariant::ByteArray: dom_prop->setElementCstring(QString::fromUtf8(v.toByteArray())); return true; case QVariant::Int: dom_prop->setElementNumber(v.toInt()); return true; case QVariant::UInt: dom_prop->setElementUInt(v.toUInt()); return true; case QVariant::LongLong: dom_prop->setElementLongLong(v.toLongLong()); return true; case QVariant::ULongLong: dom_prop->setElementULongLong(v.toULongLong()); return true; case QVariant::Double: dom_prop->setElementDouble(v.toDouble()); return true; case QVariant::Bool: dom_prop->setElementBool(v.toBool() ? QFormBuilderStrings::instance().trueValue : QFormBuilderStrings::instance().falseValue); return true; case QVariant::Char: { DomChar *ch = new DomChar(); const QChar character = v.toChar(); ch->setElementUnicode(character.unicode()); dom_prop->setElementChar(ch); } return true; case QVariant::Point: { DomPoint *pt = new DomPoint(); const QPoint point = v.toPoint(); pt->setElementX(point.x()); pt->setElementY(point.y()); dom_prop->setElementPoint(pt); } return true; case QVariant::PointF: { DomPointF *ptf = new DomPointF(); const QPointF pointf = v.toPointF(); ptf->setElementX(pointf.x()); ptf->setElementY(pointf.y()); dom_prop->setElementPointF(ptf); } return true; case QVariant::Color: { DomColor *clr = new DomColor(); const QColor color = qvariant_cast<QColor>(v); clr->setElementRed(color.red()); clr->setElementGreen(color.green()); clr->setElementBlue(color.blue()); const int alphaChannel = color.alpha(); if (alphaChannel != 255) clr->setAttributeAlpha(alphaChannel); dom_prop->setElementColor(clr); } return true; case QVariant::Size: { DomSize *sz = new DomSize(); const QSize size = v.toSize(); sz->setElementWidth(size.width()); sz->setElementHeight(size.height()); dom_prop->setElementSize(sz); } return true; case QVariant::SizeF: { DomSizeF *szf = new DomSizeF(); const QSizeF sizef = v.toSizeF(); szf->setElementWidth(sizef.width()); szf->setElementHeight(sizef.height()); dom_prop->setElementSizeF(szf); } return true; case QVariant::Rect: { DomRect *rc = new DomRect(); const QRect rect = v.toRect(); rc->setElementX(rect.x()); rc->setElementY(rect.y()); rc->setElementWidth(rect.width()); rc->setElementHeight(rect.height()); dom_prop->setElementRect(rc); } return true; case QVariant::RectF: { DomRectF *rcf = new DomRectF(); const QRectF rectf = v.toRectF(); rcf->setElementX(rectf.x()); rcf->setElementY(rectf.y()); rcf->setElementWidth(rectf.width()); rcf->setElementHeight(rectf.height()); dom_prop->setElementRectF(rcf); } return true; case QVariant::Font: { DomFont *fnt = new DomFont(); const QFont font = qvariant_cast<QFont>(v); const uint mask = font.resolve(); if (mask & QFont::WeightResolved) { fnt->setElementBold(font.bold()); fnt->setElementWeight(font.weight()); } if (mask & QFont::FamilyResolved) fnt->setElementFamily(font.family()); if (mask & QFont::StyleResolved) fnt->setElementItalic(font.italic()); if (mask & QFont::SizeResolved) fnt->setElementPointSize(font.pointSize()); if (mask & QFont::StrikeOutResolved) fnt->setElementStrikeOut(font.strikeOut()); if (mask & QFont::UnderlineResolved) fnt->setElementUnderline(font.underline()); if (mask & QFont::KerningResolved) fnt->setElementKerning(font.kerning()); if (mask & QFont::StyleStrategyResolved) { const QMetaEnum styleStrategy_enum = metaEnum<QAbstractFormBuilderGadget>("styleStrategy"); fnt->setElementStyleStrategy(QLatin1String(styleStrategy_enum.valueToKey(font.styleStrategy()))); } dom_prop->setElementFont(fnt); } return true; #ifndef QT_NO_CURSOR case QVariant::Cursor: { const QMetaEnum cursorShape_enum = metaEnum<QAbstractFormBuilderGadget>("cursorShape"); dom_prop->setElementCursorShape(QLatin1String(cursorShape_enum.valueToKey(qvariant_cast<QCursor>(v).shape()))); } return true; #endif case QVariant::KeySequence: { DomString *s = new DomString(); s->setText(qvariant_cast<QKeySequence>(v).toString(QKeySequence::PortableText)); dom_prop->setElementString(s); } return true; case QVariant::Locale: { DomLocale *dom = new DomLocale(); const QLocale locale = qvariant_cast<QLocale>(v); const QMetaEnum language_enum = metaEnum<QAbstractFormBuilderGadget>("language"); const QMetaEnum country_enum = metaEnum<QAbstractFormBuilderGadget>("country"); dom->setAttributeLanguage(QLatin1String(language_enum.valueToKey(locale.language()))); dom->setAttributeCountry(QLatin1String(country_enum.valueToKey(locale.country()))); dom_prop->setElementLocale(dom); } return true; case QVariant::SizePolicy: { DomSizePolicy *dom = new DomSizePolicy(); const QSizePolicy sizePolicy = qvariant_cast<QSizePolicy>(v); dom->setElementHorStretch(sizePolicy.horizontalStretch()); dom->setElementVerStretch(sizePolicy.verticalStretch()); const QMetaEnum sizeType_enum = metaEnum<QAbstractFormBuilderGadget>("sizeType"); dom->setAttributeHSizeType(QLatin1String(sizeType_enum.valueToKey(sizePolicy.horizontalPolicy()))); dom->setAttributeVSizeType(QLatin1String(sizeType_enum.valueToKey(sizePolicy.verticalPolicy()))); dom_prop->setElementSizePolicy(dom); } return true; case QVariant::Date: { DomDate *dom = new DomDate(); const QDate date = qvariant_cast<QDate>(v); dom->setElementYear(date.year()); dom->setElementMonth(date.month()); dom->setElementDay(date.day()); dom_prop->setElementDate(dom); } return true; case QVariant::Time: { DomTime *dom = new DomTime(); const QTime time = qvariant_cast<QTime>(v); dom->setElementHour(time.hour()); dom->setElementMinute(time.minute()); dom->setElementSecond(time.second()); dom_prop->setElementTime(dom); } return true; case QVariant::DateTime: { DomDateTime *dom = new DomDateTime(); const QDateTime dateTime = qvariant_cast<QDateTime>(v); dom->setElementHour(dateTime.time().hour()); dom->setElementMinute(dateTime.time().minute()); dom->setElementSecond(dateTime.time().second()); dom->setElementYear(dateTime.date().year()); dom->setElementMonth(dateTime.date().month()); dom->setElementDay(dateTime.date().day()); dom_prop->setElementDateTime(dom); } return true; case QVariant::Url: { DomUrl *dom = new DomUrl(); const QUrl url = v.toUrl(); DomString *str = new DomString(); str->setText(url.toString()); dom->setElementString(str); dom_prop->setElementUrl(dom); } return true; case QVariant::StringList: { DomStringList *sl = new DomStringList; sl->setElementString(qvariant_cast<QStringList>(v)); dom_prop->setElementStringList(sl); } return true; default: break; } return false; }
void QGraphicsWidgetPrivate::setFont_helper(const QFont &font) { if (this->font == font && this->font.resolve() == font.resolve()) return; updateFont(font); }
QVariant ToConfiguration::Editor::defaultValue(int option) const { switch (option) { case SyntaxHighlightingInt: return QVariant((int) 0); case EditorTypeInt: return QVariant((int) 0); case UseMaxTextWidthMarkBool: return QVariant((bool) false); case MaxTextWidthMarkInt: return QVariant((int)75); case KeywordUpperBool: return QVariant((bool) false); case ObjectNamesUpperBool: return QVariant((bool) false); case CodeCompleteBool: return QVariant((bool) true); case CompleteSortBool: return QVariant((bool) true); case UseEditorShortcutsBool: return QVariant((bool) false); case EditorShortcutsMap: return QVariant(QMap<QString, QVariant>()); case AutoIndentBool: return QVariant((bool) true); case UseSpacesForIndentBool: return QVariant((bool) false); case TabStopInt: return QVariant((int) 8); case ConfTextFont: return QVariant(QString("")); case ConfCodeFont: { QFont fo; QFont mono; #if defined(Q_OS_WIN) mono = QFont("Courier New", 10); #elif defined(Q_OS_MAC) mono = QFont("Courier", 12); #else // TODO #endif mono.setStyleHint(QFont::Monospace, QFont::NoAntialias); fo = mono.resolve(fo); QString fontName = fo.toString(); return QVariant(fontName); } case ListTextFont: return QVariant(QString("")); case Extensions: return QVariant(QString("SQL (*.sql *.pkg *.pkb), Text (*.txt), All (*)")); case EditStyleMap: { static toStylesMap retval; if (!retval.isEmpty()) return QVariant::fromValue(retval); QMetaEnum StyleNameEnum(ENUM_REF(toSyntaxAnalyzer,WordClassEnum)); QsciLexerSQL *l = new QsciLexerSQL(NULL); for (int idx = 0; idx < StyleNameEnum.keyCount(); idx++) { QColor fg = l->color((int)StyleNameEnum.value(idx)); QColor bg = l->paper((int)StyleNameEnum.value(idx)); QFont fo = Utils::toStringToFont(defaultValue(ConfCodeFont).toString()); QString styleName = StyleNameEnum.key(idx); int styleNameEnum = StyleNameEnum.value(idx); retval.insert(styleNameEnum, toStyle(fg, bg, fo)); } delete l; return QVariant::fromValue(retval); } default: Q_ASSERT_X( false, qPrintable(__QHERE__), qPrintable(QString("Context Editor un-registered enum value: %1").arg(option))); return QVariant(); } }