# HG changeset patch # User eldar # Date 1244911062 0 # Node ID 7bc921c7100a5b6e1d4dbfa5b5e9cad8f92767eb # Parent ae34188ddd84b18fc1745dca67f96a6d85dc42b6 QDesktopServices.setUrlHandler - temporary solution diff -r ae34188ddd84 -r 7bc921c7100a build/core.makefile --- 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 diff -r ae34188ddd84 -r 7bc921c7100a build/gui.makefile --- 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 diff -r ae34188ddd84 -r 7bc921c7100a cpp/qt_gui/UrlHandler_shell.cpp --- /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 ." +#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(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 diff -r ae34188ddd84 -r 7bc921c7100a cpp/qt_gui/UrlHandler_shell.h --- /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 +#include + +class UrlHandler : public QObject, public Qtd_QObjectEntity +{ + Q_OBJECT + +public: + UrlHandler(void *d_ptr, QObject *parent = 0); + +public slots: + void handleUrl(const QUrl &url); +}; diff -r ae34188ddd84 -r 7bc921c7100a generator/typesystem_gui-java.java --- 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 __rcUrlHandlers = new java.util.Hashtable(); - - 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 { diff -r ae34188ddd84 -r 7bc921c7100a generator/typesystem_gui.xml --- 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 @@ + + + diff -r ae34188ddd84 -r 7bc921c7100a qt/gui/UrlHandler.d --- /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); +}