diff --git a/examples/advanced-qml-auto-reload/lisp/main.lisp b/examples/advanced-qml-auto-reload/lisp/main.lisp index a38aae8..5d00ea5 100644 --- a/examples/advanced-qml-auto-reload/lisp/main.lisp +++ b/examples/advanced-qml-auto-reload/lisp/main.lisp @@ -1,5 +1,9 @@ (in-package :app) -#+(or android ios) -(when qml::*remote-ip* - (qsingle-shot 1000 'auto-reload-qml)) +#+mobile +(qsingle-shot 1000 (lambda () + (when qml::*remote-ip* + (qjs |message| ui:*dialogs* + (format nil "QML auto reload enabled from:

~A

Ensure web-server.sh is running.
" + qml::*remote-ip*)) + (auto-reload-qml)))) diff --git a/examples/advanced-qml-auto-reload/lisp/ui-vars.lisp b/examples/advanced-qml-auto-reload/lisp/ui-vars.lisp index 0e2f169..4dade6f 100644 --- a/examples/advanced-qml-auto-reload/lisp/ui-vars.lisp +++ b/examples/advanced-qml-auto-reload/lisp/ui-vars.lisp @@ -1,6 +1,7 @@ (defpackage ui (:use :cl :qml) (:export + #:*dialogs* #:*flick-output* #:*history-back* #:*history-forward* @@ -12,6 +13,7 @@ (in-package :ui) +(defparameter *dialogs* "dialogs") (defparameter *flick-output* "flick_output") (defparameter *history-back* "history_back") (defparameter *history-forward* "history_forward") diff --git a/examples/advanced-qml-auto-reload/qml/ext/dialogs/Confirm.qml b/examples/advanced-qml-auto-reload/qml/ext/dialogs/Confirm.qml new file mode 100644 index 0000000..3da872c --- /dev/null +++ b/examples/advanced-qml-auto-reload/qml/ext/dialogs/Confirm.qml @@ -0,0 +1,19 @@ +import QtQuick 2.15 +import QtQuick.Dialogs 1.3 + +Dialog { + title: "LQML" + standardButtons: Dialog.Save | Dialog.Cancel + + property alias text: message.text + property string callback + + Text { + id: message + width: parent.width // without width word wrap won't work + wrapMode: Text.Wrap + } + + onAccepted: Lisp.call(callback, true) + onRejected: Lisp.call(callback, false) +} diff --git a/examples/advanced-qml-auto-reload/qml/ext/dialogs/ConfirmMobile.qml b/examples/advanced-qml-auto-reload/qml/ext/dialogs/ConfirmMobile.qml new file mode 100644 index 0000000..e6d39ae --- /dev/null +++ b/examples/advanced-qml-auto-reload/qml/ext/dialogs/ConfirmMobile.qml @@ -0,0 +1,23 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Dialog { + anchors.centerIn: parent + title: "Confirm" + font.pixelSize: 18 + modal: true + standardButtons: Dialog.Save | Dialog.Cancel + + property alias text: message.text + property string callback + + Text { + id: message + width: parent.width // without width word wrap won't work + wrapMode: Text.Wrap + font.pixelSize: 18 + } + + onAccepted: Lisp.call(callback, true) + onRejected: Lisp.call(callback, false) +} diff --git a/examples/advanced-qml-auto-reload/qml/ext/dialogs/Dialogs.qml b/examples/advanced-qml-auto-reload/qml/ext/dialogs/Dialogs.qml new file mode 100644 index 0000000..2e2c954 --- /dev/null +++ b/examples/advanced-qml-auto-reload/qml/ext/dialogs/Dialogs.qml @@ -0,0 +1,36 @@ +import QtQuick 2.15 + +Item { + id: dialogs + objectName: "dialogs" + anchors.fill: parent + + Loader { + id: loader + anchors.centerIn: parent + } + + function message(text) { + if ((Qt.platform.os === "android") || + (Qt.platform.os === "ios")) { + loader.source = "MessageMobile.qml" + } else { + loader.source = "Message.qml" + } + loader.item.text = text + loader.item.open() + } + + function confirm(title, text, callback) { + if ((Qt.platform.os === "android") || + (Qt.platform.os === "ios")) { + loader.source = "ConfirmMobile.qml" + } else { + loader.source = "Confirm.qml" + } + loader.item.title = title + loader.item.text = text + loader.item.callback = callback + loader.item.open() + } +} diff --git a/examples/advanced-qml-auto-reload/qml/ext/dialogs/Message.qml b/examples/advanced-qml-auto-reload/qml/ext/dialogs/Message.qml new file mode 100644 index 0000000..2b05bda --- /dev/null +++ b/examples/advanced-qml-auto-reload/qml/ext/dialogs/Message.qml @@ -0,0 +1,15 @@ +import QtQuick 2.15 +import QtQuick.Dialogs 1.3 + +Dialog { + title: "Info" + standardButtons: Dialog.Ok + + property alias text: message.text + + Text { + id: message + width: parent.width // without width word wrap won't work + wrapMode: Text.Wrap + } +} diff --git a/examples/advanced-qml-auto-reload/qml/ext/dialogs/MessageMobile.qml b/examples/advanced-qml-auto-reload/qml/ext/dialogs/MessageMobile.qml new file mode 100644 index 0000000..8790abf --- /dev/null +++ b/examples/advanced-qml-auto-reload/qml/ext/dialogs/MessageMobile.qml @@ -0,0 +1,19 @@ +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +Dialog { + anchors.centerIn: parent + title: "Info" + font.pixelSize: 18 + modal: true + standardButtons: Dialog.Ok + + property alias text: message.text + + Text { + id: message + width: parent.width // without width word wrap won't work + wrapMode: Text.Wrap + font.pixelSize: 18 + } +} diff --git a/examples/advanced-qml-auto-reload/qml/main.qml b/examples/advanced-qml-auto-reload/qml/main.qml index 880ff4f..fe924d0 100644 --- a/examples/advanced-qml-auto-reload/qml/main.qml +++ b/examples/advanced-qml-auto-reload/qml/main.qml @@ -2,8 +2,10 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import ".ext/" as Ext // for single file auto reload (development) //import "ext/" as Ext // release version +import 'ext/dialogs' as Dlg Rectangle { + id: main width: 300 height: 500 objectName: "main" @@ -44,4 +46,6 @@ Rectangle { FontLoader { id: fontIcons; source: "fonts/fontawesome-webfont.ttf" } FontLoader { id: fontHack; source: "fonts/Hack-Regular.ttf" } FontLoader { id: fontHackBold; source: "fonts/Hack-Bold.ttf" } + + Dlg.Dialogs {} // modal dialogs } diff --git a/examples/sokoban/qml/main.qml b/examples/sokoban/qml/main.qml index f354c05..0fb616d 100644 --- a/examples/sokoban/qml/main.qml +++ b/examples/sokoban/qml/main.qml @@ -133,7 +133,7 @@ Rectangle { } Ext.ScaleAnimator { - objectName: "zoom_board_in" + objectName: "zoom_board_in" target: board from: 0.0 to: 1.0