Mercurial > projects > qtd
changeset 149:7bc921c7100a
QDesktopServices.setUrlHandler - temporary solution
author | eldar |
---|---|
date | Sat, 13 Jun 2009 16:37:42 +0000 |
parents | ae34188ddd84 |
children | a8d76a9a85aa |
files | build/core.makefile build/gui.makefile cpp/qt_gui/UrlHandler_shell.cpp cpp/qt_gui/UrlHandler_shell.h generator/typesystem_gui-java.java generator/typesystem_gui.xml qt/gui/UrlHandler.d |
diffstat | 7 files changed, 167 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/build/core.makefile Sat Jun 13 14:05:32 2009 +0000 +++ b/build/core.makefile Sat Jun 13 16:37:42 2009 +0000 @@ -74,4 +74,4 @@ QProcess \ QBuffer \ QMetaType \ - QLibraryInfo \ No newline at end of file + QLibraryInfo \ No newline at end of file
--- a/build/gui.makefile Sat Jun 13 14:05:32 2009 +0000 +++ b/build/gui.makefile Sat Jun 13 16:37:42 2009 +0000 @@ -362,4 +362,5 @@ QShortcut \ QSizeGrip \ QSortFilterProxyModel \ -QSound \ No newline at end of file +QSound \ +UrlHandler \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cpp/qt_gui/UrlHandler_shell.cpp Sat Jun 13 16:37:42 2009 +0000 @@ -0,0 +1,98 @@ +#include "UrlHandler_shell.h" + +#include "qtd_core.h" + +UrlHandler::UrlHandler(void *d_ptr, QObject* parent0) + : QObject(parent0), + Qtd_QObjectEntity(d_ptr) +{ +} + +extern "C" void qtd_UrlHandler_handleUrl_QUrl_dispatch(void *d_entity, void* name1); +void UrlHandler::handleUrl(const QUrl &url) +{ + qtd_UrlHandler_handleUrl_QUrl_dispatch(this->d_entity(), &(QUrl& )url); +} + +extern "C" DLL_PUBLIC void qtd_UrlHandler_destructor(void *ptr) +{ + delete (UrlHandler *)ptr; +} + +extern "C" DLL_PUBLIC void* qtd_UrlHandler_UrlHandler_QObject +(void *d_ptr, + void* parent0) +{ + QObject* __qt_parent0 = (QObject* ) parent0; + UrlHandler *__qt_this = new UrlHandler(d_ptr, (QObject* )__qt_parent0); + return (void *) __qt_this; +} + + +/* ---------------------------------------- */ + +#if !defined(Q_MOC_OUTPUT_REVISION) +#error "The header file 'urlhandler.h' doesn't include <QObject>." +#elif Q_MOC_OUTPUT_REVISION != 61 +#error "This file was generated using the moc from 4.5.0. It" +#error "cannot be used with the include files from this version of Qt." +#error "(The moc has changed too much.)" +#endif + +QT_BEGIN_MOC_NAMESPACE +static const uint qt_meta_data_UrlHandler[] = { + + // content: + 2, // revision + 0, // classname + 0, 0, // classinfo + 1, 12, // methods + 0, 0, // properties + 0, 0, // enums/sets + 0, 0, // constructors + + // slots: signature, parameters, type, tag, flags + 16, 12, 11, 11, 0x0a, + + 0 // eod +}; + +static const char qt_meta_stringdata_UrlHandler[] = { + "UrlHandler\0\0url\0handleUrl(QUrl)\0" +}; + +const QMetaObject UrlHandler::staticMetaObject = { + { &QObject::staticMetaObject, qt_meta_stringdata_UrlHandler, + qt_meta_data_UrlHandler, 0 } +}; + +const QMetaObject *UrlHandler::metaObject() const +{ + return &staticMetaObject; +} + +void *UrlHandler::qt_metacast(const char *_clname) +{ + if (!_clname) return 0; + if (!strcmp(_clname, qt_meta_stringdata_UrlHandler)) + return static_cast<void*>(const_cast< UrlHandler*>(this)); + if (!strcmp(_clname, "Qtd_QObjectEntity")) + return static_cast< Qtd_QObjectEntity*>(const_cast< UrlHandler*>(this)); + return QObject::qt_metacast(_clname); +} + +int UrlHandler::qt_metacall(QMetaObject::Call _c, int _id, void **_a) +{ + _id = QObject::qt_metacall(_c, _id, _a); + if (_id < 0) + return _id; + if (_c == QMetaObject::InvokeMetaMethod) { + switch (_id) { + case 0: handleUrl((*reinterpret_cast< const QUrl(*)>(_a[1]))); break; + default: ; + } + _id -= 1; + } + return _id; +} +QT_END_MOC_NAMESPACE \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cpp/qt_gui/UrlHandler_shell.h Sat Jun 13 16:37:42 2009 +0000 @@ -0,0 +1,13 @@ +#include <QUrl> +#include <QObjectEntity.h> + +class UrlHandler : public QObject, public Qtd_QObjectEntity +{ + Q_OBJECT + +public: + UrlHandler(void *d_ptr, QObject *parent = 0); + +public slots: + void handleUrl(const QUrl &url); +};
--- a/generator/typesystem_gui-java.java Sat Jun 13 14:05:32 2009 +0000 +++ b/generator/typesystem_gui-java.java Sat Jun 13 16:37:42 2009 +0000 @@ -588,37 +588,18 @@ }// class class QDesktopServices___ extends QDesktopServices { -/* - private static java.util.Hashtable<String, InternalUrlHandler> __rcUrlHandlers = new java.util.Hashtable<String, InternalUrlHandler>(); - - public static interface UrlHandler { - public void handleUrl(qt.core.QUrl url); - } - - private static class InternalUrlHandler extends qt.core.QObject { - - private UrlHandler urlHandler; - private InternalUrlHandler(UrlHandler urlHandler) { - this.urlHandler = urlHandler; - } + private static UrlHandler[string] __rcUrlHandlers; + public static void setUrlHandler(string scheme, void delegate(QUrl) dg) { + UrlHandler receiver = dg !is null ? new UrlHandler(dg) : null; - private void handleUrl(qt.core.QUrl url) { - urlHandler.handleUrl(url); - } - - } - - public static void setUrlHandler(String scheme, UrlHandler urlHandler) { - InternalUrlHandler receiver = urlHandler != null ? new InternalUrlHandler(urlHandler) : null; - - if (receiver == null) + if (receiver is null) __rcUrlHandlers.remove(scheme); else - __rcUrlHandlers.put(scheme, receiver); - setUrlHandler(scheme, receiver, QNativePointer.createCharPointer("handleUrl")); + __rcUrlHandlers[scheme] = receiver; + + setUrlHandler(scheme, receiver, "handleUrl"); } -*/ }// class class QWizardPage___ extends QWizardPage {
--- a/generator/typesystem_gui.xml Sat Jun 13 14:05:32 2009 +0000 +++ b/generator/typesystem_gui.xml Sat Jun 13 16:37:42 2009 +0000 @@ -2844,6 +2844,9 @@ </object-type> <object-type name="QDateEdit"/> <object-type name="QDesktopServices"> + <extra-includes> + <include file-name="qt.gui.UrlHandler" location="java"/> + </extra-includes> <modify-function signature="setUrlHandler(const QString &, QObject *, const char *)" access="private"> <modify-argument index="2"> <reference-count action="ignore"/> <!-- Handled in injected code -->
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qt/gui/UrlHandler.d Sat Jun 13 16:37:42 2009 +0000 @@ -0,0 +1,43 @@ +module qt.gui.UrlHandler; + +import qt.core.QUrl; + +alias void delegate(QUrl) UrlHandlerDg; + +package class UrlHandler : QObject { + public this(UrlHandlerDg dg) { + _dg = dg; + void* __qt_return_value = qtd_UrlHandler_UrlHandler_QObject(cast(void*) this, null); + this(__qt_return_value, true); + } + + void handleUrl(QUrl url) { + _dg(url); + } + + private UrlHandlerDg _dg; + + public this(void* native_id, bool gc_managed) { + super(native_id, gc_managed); + } + + + protected void __free_native_resources() { + qtd_UrlHandler_destructor(nativeId()); + } + + void __set_native_ownership(bool ownership_) { + __no_real_delete = ownership_; + } +} +extern (C) void qtd_UrlHandler_destructor(void *ptr); + +private extern(C) void* qtd_UrlHandler_UrlHandler_QObject(void *d_ptr, + void* parent0); + +private extern(C) void qtd_UrlHandler_handleUrl_QUrl_dispatch(void *d_entity, void* name1) +{ + auto d_object = cast(UrlHandler) d_entity; + scope name1_d_ref = new QUrl(name1, true); + d_object.handleUrl(name1_d_ref); +}