added generating a notification for dialogs
This commit is contained in:
parent
d4e0b2c2df
commit
2816ce63ff
3 changed files with 26 additions and 2 deletions
|
@ -47,14 +47,16 @@ Item {
|
|||
function onFireOpen(data) {
|
||||
|
||||
var page = data.data()
|
||||
console.log("try open uri: " + data.value("uri") + ", page: " + JSON.stringify(page))
|
||||
var uri = data.value("uri")
|
||||
|
||||
console.log("try open uri: " + uri + ", page: " + JSON.stringify(page))
|
||||
if (!(page && (page.type === ContainerType.PrimaryPage || page.type === ContainerType.QmlDialog))) {
|
||||
data.setValue("ret", {errcode: 101 }) // ResolveFailed
|
||||
return;
|
||||
}
|
||||
|
||||
if (page.type === ContainerType.PrimaryPage) {
|
||||
root.requestedDockPage(data.value("uri"), page.params)
|
||||
root.requestedDockPage(uri, page.params)
|
||||
root.provider.onOpen(page.type, {})
|
||||
data.setValue("ret", {errcode: 0 })
|
||||
return;
|
||||
|
@ -71,6 +73,10 @@ Item {
|
|||
return
|
||||
}
|
||||
|
||||
dialogObj.object.opened.connect(function() {
|
||||
root.provider.notifyAboutUriOpened(uri)
|
||||
})
|
||||
|
||||
if (Boolean(data.value("sync")) && data.value("sync") === true) {
|
||||
dialogObj.object.exec()
|
||||
} else {
|
||||
|
|
|
@ -46,6 +46,8 @@ InteractiveProvider::InteractiveProvider()
|
|||
raiseWindowInStack(widget);
|
||||
}
|
||||
});
|
||||
|
||||
qApp->installEventFilter(this);
|
||||
}
|
||||
|
||||
void InteractiveProvider::raiseWindowInStack(QObject* newActiveWindow)
|
||||
|
@ -69,6 +71,20 @@ void InteractiveProvider::raiseWindowInStack(QObject* newActiveWindow)
|
|||
}
|
||||
}
|
||||
|
||||
bool InteractiveProvider::eventFilter(QObject* watched, QEvent* event)
|
||||
{
|
||||
if (event->type() != QEvent::Show || m_stack.empty()) {
|
||||
return QObject::eventFilter(watched, event);
|
||||
}
|
||||
|
||||
const ObjectInfo& info = m_stack.top();
|
||||
if (watched && info.window == watched) {
|
||||
m_opened.send(info.uriQuery.uri());
|
||||
}
|
||||
|
||||
return QObject::eventFilter(watched, event);
|
||||
}
|
||||
|
||||
RetVal<Val> InteractiveProvider::question(const std::string& title, const IInteractive::Text& text,
|
||||
const IInteractive::ButtonDatas& buttons, int defBtn,
|
||||
const IInteractive::Options& options)
|
||||
|
|
|
@ -102,6 +102,8 @@ signals:
|
|||
void fireOpenStandardDialog(QmlLaunchData* data);
|
||||
|
||||
private:
|
||||
bool eventFilter(QObject* watched, QEvent* event);
|
||||
|
||||
struct OpenData
|
||||
{
|
||||
bool sync = false;
|
||||
|
|
Loading…
Reference in a new issue