From c97efce5f63599b2050c9e2f0366bd83f8af2052 Mon Sep 17 00:00:00 2001 From: Solant Date: Fri, 7 Feb 2020 21:20:05 +0300 Subject: [PATCH] implemented QFontDatabase families method (#392) * implemented QFontDatabase families method * fixed linting --- .../QtGui/QFontDatabase/qfontdatabase_wrap.h | 1 + .../QFontDatabase/qfontdatabase_wrap.cpp | 16 +++++ src/lib/QtGui/QFontDatabase.ts | 63 ++++++++++--------- src/lib/QtGui/__tests__/QFontDatabase.test.ts | 15 +++++ 4 files changed, 65 insertions(+), 30 deletions(-) create mode 100644 src/lib/QtGui/__tests__/QFontDatabase.test.ts diff --git a/src/cpp/include/nodegui/QtGui/QFontDatabase/qfontdatabase_wrap.h b/src/cpp/include/nodegui/QtGui/QFontDatabase/qfontdatabase_wrap.h index fb3b5ec07..e296eb903 100644 --- a/src/cpp/include/nodegui/QtGui/QFontDatabase/qfontdatabase_wrap.h +++ b/src/cpp/include/nodegui/QtGui/QFontDatabase/qfontdatabase_wrap.h @@ -21,6 +21,7 @@ class DLL_EXPORT QFontDatabaseWrap QFontDatabase* getInternalInstance(); // Wrapped methods Napi::Value bold(const Napi::CallbackInfo& info); + Napi::Value families(const Napi::CallbackInfo& info); Napi::Value italic(const Napi::CallbackInfo& info); Napi::Value weight(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp b/src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp index 169be295a..2381531f2 100644 --- a/src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp +++ b/src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp @@ -12,6 +12,7 @@ Napi::Object QFontDatabaseWrap::init(Napi::Env env, Napi::Object exports) { {InstanceMethod("bold", &QFontDatabaseWrap::bold), InstanceMethod("italic", &QFontDatabaseWrap::italic), InstanceMethod("weight", &QFontDatabaseWrap::weight), + InstanceMethod("families", &QFontDatabaseWrap::families), StaticMethod("addApplicationFont", &StaticQFontDatabaseWrapMethods::addApplicationFont), StaticMethod("removeApplicationFont", @@ -34,6 +35,21 @@ QFontDatabase* QFontDatabaseWrap::getInternalInstance() { return this->instance.get(); } +Napi::Value QFontDatabaseWrap::families(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + int writingSystem = 0; + if (info.Length() == 1) { + writingSystem = info[0].As().Int32Value(); + } + QStringList families = this->instance->families(static_cast(writingSystem)); + Napi::Array familiesNapi = Napi::Array::New(env, families.size()); + for (int i = 0; i < families.size(); i++) { + familiesNapi[i] = Napi::String::New(env, families[i].toStdString()); + } + + return familiesNapi; +} + Napi::Value QFontDatabaseWrap::bold(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); diff --git a/src/lib/QtGui/QFontDatabase.ts b/src/lib/QtGui/QFontDatabase.ts index 350f73d32..31c7a4c87 100644 --- a/src/lib/QtGui/QFontDatabase.ts +++ b/src/lib/QtGui/QFontDatabase.ts @@ -1,36 +1,6 @@ import addon from '../utils/addon'; import { Component, NativeElement } from '../core/Component'; -export class QFontDatabase extends Component { - native: NativeElement; - constructor() { - super(); - this.native = new addon.QFontDatabase(); - } - bold(family: string, style: string): boolean { - return this.native.bold(family, style); - } - italic(family: string, style: string): boolean { - return this.native.italic(family, style); - } - weight(family: string, style: string): number { - return this.native.weight(family, style); - } - static addApplicationFont(fileName: string): number { - return addon.QFontDatabase.addApplicationFont(fileName); - } - static removeApplicationFont(id: number): boolean { - return addon.QFontDatabase.removeApplicationFont(id); - } -} - -export enum SystemFont { - GeneralFont, - FixedFont, - TitleFont, - SmallestReadableFont, -} - export enum WritingSystem { Any = 0, Latin = 1, @@ -68,3 +38,36 @@ export enum WritingSystem { Runic = 32, Nko = 33, } + +export class QFontDatabase extends Component { + native: NativeElement; + constructor() { + super(); + this.native = new addon.QFontDatabase(); + } + families(ws: WritingSystem = WritingSystem.Any): string[] { + return this.native.families(ws); + } + bold(family: string, style: string): boolean { + return this.native.bold(family, style); + } + italic(family: string, style: string): boolean { + return this.native.italic(family, style); + } + weight(family: string, style: string): number { + return this.native.weight(family, style); + } + static addApplicationFont(fileName: string): number { + return addon.QFontDatabase.addApplicationFont(fileName); + } + static removeApplicationFont(id: number): boolean { + return addon.QFontDatabase.removeApplicationFont(id); + } +} + +export enum SystemFont { + GeneralFont, + FixedFont, + TitleFont, + SmallestReadableFont, +} diff --git a/src/lib/QtGui/__tests__/QFontDatabase.test.ts b/src/lib/QtGui/__tests__/QFontDatabase.test.ts new file mode 100644 index 000000000..df8e9add0 --- /dev/null +++ b/src/lib/QtGui/__tests__/QFontDatabase.test.ts @@ -0,0 +1,15 @@ +import { QFontDatabase, WritingSystem } from '../QFontDatabase'; + +describe('QFont', () => { + it('initialize empty', () => { + const fontDatabase = new QFontDatabase(); + expect(fontDatabase).toBeTruthy(); + }); + it('families', () => { + const fontDatabase = new QFontDatabase(); + expect(fontDatabase.native).toBeTruthy(); + expect(fontDatabase.families).toBeTruthy(); + expect(fontDatabase.families().length).toBeTruthy(); + expect(fontDatabase.families(WritingSystem.Runic).length < fontDatabase.families().length).toBeTruthy(); + }); +});