Add visibility related methods/event to QWindow
This commit is contained in:
parent
733c24e6cd
commit
69d0e2e3cd
@ -50,6 +50,8 @@ class DLL_EXPORT QWindowWrap : public Napi::ObjectWrap<QWindowWrap>,
|
||||
Napi::Value startSystemResize(const Napi::CallbackInfo& info);
|
||||
Napi::Value setWindowState(const Napi::CallbackInfo& info);
|
||||
Napi::Value windowState(const Napi::CallbackInfo& info);
|
||||
Napi::Value visibility(const Napi::CallbackInfo& info);
|
||||
Napi::Value setVisibility(const Napi::CallbackInfo& info);
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject* watched, QEvent* event) override;
|
||||
|
||||
@ -20,6 +20,8 @@ Napi::Object QWindowWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
InstanceMethod("startSystemResize", &QWindowWrap::startSystemResize),
|
||||
InstanceMethod("setWindowState", &QWindowWrap::setWindowState),
|
||||
InstanceMethod("windowState", &QWindowWrap::windowState),
|
||||
InstanceMethod("visibility", &QWindowWrap::visibility),
|
||||
InstanceMethod("setVisibility", &QWindowWrap::setVisibility),
|
||||
QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(QWindowWrap)});
|
||||
constructor = Napi::Persistent(func);
|
||||
exports.Set(CLASSNAME, func);
|
||||
@ -59,6 +61,15 @@ void QWindowWrap::connectSignalsToEventEmitter() {
|
||||
{Napi::String::New(env, "screenChanged"), instance});
|
||||
});
|
||||
|
||||
QObject::connect(
|
||||
this->instance.data(), &QWindow::visibilityChanged,
|
||||
[=](QWindow::Visibility visibility) {
|
||||
Napi::Env env = this->emitOnNode.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
this->emitOnNode.Call({Napi::String::New(env, "visibilityChanged"),
|
||||
Napi::Number::New(env, visibility)});
|
||||
});
|
||||
|
||||
this->instance->installEventFilter(this);
|
||||
}
|
||||
|
||||
@ -117,12 +128,26 @@ Napi::Value QWindowWrap::setWindowState(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::Number state = info[0].As<Napi::Number>();
|
||||
this->instance->setWindowState(
|
||||
static_cast<Qt::WindowState>(state.Int32Value()));
|
||||
static_cast<Qt::WindowState>(state.Uint32Value()));
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QWindowWrap::windowState(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
int state = static_cast<int>(this->instance->windowState());
|
||||
uint state = static_cast<uint>(this->instance->windowState());
|
||||
return Napi::Value::From(env, state);
|
||||
}
|
||||
|
||||
Napi::Value QWindowWrap::visibility(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
uint state = static_cast<uint>(this->instance->visibility());
|
||||
return Napi::Value::From(env, state);
|
||||
}
|
||||
|
||||
Napi::Value QWindowWrap::setVisibility(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::Number state = info[0].As<Napi::Number>();
|
||||
this->instance->setVisibility(
|
||||
static_cast<QWindow::Visibility>(state.Uint32Value()));
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
8
src/lib/QtEnums/Visibility/index.ts
Normal file
8
src/lib/QtEnums/Visibility/index.ts
Normal file
@ -0,0 +1,8 @@
|
||||
export enum Visibility {
|
||||
Hidden = 0,
|
||||
AutomaticVisibility = 1,
|
||||
Windowed = 2,
|
||||
Minimized = 3,
|
||||
Maximized = 4,
|
||||
FullScreen = 5,
|
||||
}
|
||||
@ -90,3 +90,4 @@ export { WindowType } from './WindowType';
|
||||
export { PenStyle } from './PenStyle';
|
||||
export { PenCapStyle } from './PenCapStyle';
|
||||
export { DialogCode } from './DialogCode';
|
||||
export { Visibility } from './Visibility';
|
||||
|
||||
@ -3,7 +3,7 @@ import { checkIfNativeElement, registerNativeWrapFunction } from '../utils/helpe
|
||||
import { NodeObject, QObjectSignals } from '../QtCore/QObject';
|
||||
import { QScreen } from './QScreen';
|
||||
import { wrapperCache } from '../core/WrapperCache';
|
||||
import { Edge, WindowState } from '../QtEnums';
|
||||
import { Edge, Visibility, WindowState } from '../QtEnums';
|
||||
|
||||
export class QWindow extends NodeObject<QWindowSignals> {
|
||||
native: NativeElement;
|
||||
@ -66,10 +66,17 @@ export class QWindow extends NodeObject<QWindowSignals> {
|
||||
windowState(): WindowState {
|
||||
return this.native.windowState();
|
||||
}
|
||||
visibility(): Visibility {
|
||||
return this.native.visibility();
|
||||
}
|
||||
setVisibility(visibility: Visibility): void {
|
||||
return this.native.setVisibility(visibility);
|
||||
}
|
||||
}
|
||||
|
||||
export interface QWindowSignals extends QObjectSignals {
|
||||
screenChanged: (screen: QScreen) => void;
|
||||
visibilityChanged: (visibility: Visibility) => void;
|
||||
}
|
||||
|
||||
registerNativeWrapFunction('QWindowWrap', (native: any) => {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user