NelisquareDbus::NelisquareDbus(QApplication *parent, QDeclarativeView *view) : QDBusAbstractAdaptor(parent), m_view(view) { QDBusConnection bus = QDBusConnection::sessionBus(); bus.registerService("com.nelisquare"); bus.registerObject("/com/nelisquare", parent); QObject *rootObject = qobject_cast<QObject*>(view->rootObject()); rootObject->connect(this,SIGNAL(processUINotification(QVariant)),SLOT(processUINotification(QVariant))); rootObject->connect(this,SIGNAL(processURI(QVariant)),SLOT(processURI(QVariant))); }
void test() { QObject *o; int a, b, c; auto f = [&a]() {}; // OK o->connect(o, &QObject::destroyed, [a]() {}); // OK o->connect(o, &QObject::destroyed, [&a]() {}); // Warning QObject::connect(o, &QObject::destroyed, [&a]() { }); // Warning QObject::connect(o, &QObject::destroyed, [&]() { a; b; }); // Warning QObject::connect(o, &QObject::destroyed, [=]() { a; b; }); // OK A *a1; QObject::connect(o, &QObject::destroyed, [a1]() { a1->v; }); // OK QObject::connect(o, &QObject::destroyed, [&a1]() { a1->v; }); // Warning }
void setHtml(QTextEdit * edit, const QString & html) { QtConcurrent::run([=]{ // runs in a worker thread auto doc = new QTextDocument; QObject src; src.connect(&src, &QObject::destroyed, edit, [=]{ // runs in the main thread doc->setParent(edit); edit->setDocument(doc); }); doc->setHtml(html); doc->moveToThread(edit->thread()); }); }
Q_DECL_EXPORT int main(int argc, char *argv[]) { QApplication *app = createApplication(argc, argv); QmlApplicationViewer viewer; #if defined(Q_OS_MAEMO) QPixmap pixmap("/opt/nelisquare/qml/pics/splash-turned.png"); QSplashScreen splash(pixmap); EventDisabler eventDisabler; splash.installEventFilter(&eventDisabler); splash.showFullScreen(); #endif #if defined(Q_OS_MAEMO) viewer.addImportPath(QString("/opt/qtm12/imports")); viewer.engine()->addImportPath(QString("/opt/qtm12/imports")); viewer.engine()->addPluginPath(QString("/opt/qtm12/plugins")); #endif QCoreApplication::addLibraryPath(QString("/opt/nelisquare/plugins")); viewer.setAttribute(Qt::WA_OpaquePaintEvent); viewer.setAttribute(Qt::WA_NoSystemBackground); viewer.viewport()->setAttribute(Qt::WA_OpaquePaintEvent); viewer.viewport()->setAttribute(Qt::WA_NoSystemBackground); WindowHelper *windowHelper = new WindowHelper(&viewer); PictureHelper *pictureHelper = new PictureHelper(); Cache *cache = new Cache(); viewer.rootContext()->setContextProperty("windowHelper", windowHelper); viewer.rootContext()->setContextProperty("pictureHelper", pictureHelper); viewer.rootContext()->setContextProperty("cache", cache); Molome *molome = new Molome(); viewer.rootContext()->setContextProperty("molome", molome); #if defined(Q_OS_HARMATTAN) || defined(Q_WS_SIMULATOR) || defined(Q_OS_MAEMO) PlatformUtils platformUtils(app,cache); viewer.rootContext()->setContextProperty("platformUtils", &platformUtils); #endif #if defined(Q_OS_MAEMO) viewer.installEventFilter(windowHelper); #elif defined(Q_OS_HARMATTAN) viewer.installEventFilter(new EventFilter); #endif viewer.setMainQmlFile(QLatin1String("qml/main.qml")); QObject *rootObject = qobject_cast<QObject*>(viewer.rootObject()); #if defined(Q_OS_HARMATTAN) || defined(Q_OS_MAEMO) new NelisquareDbus(app, &viewer); #endif #if defined(Q_OS_MAEMO) viewer.showFullScreen(); #elif defined(Q_OS_HARMATTAN) rootObject->connect(molome,SIGNAL(infoUpdated(QVariant,QVariant)),SLOT(onMolomeInfoUpdate(QVariant,QVariant))); rootObject->connect(molome,SIGNAL(photoRecieved(QVariant,QVariant)),SLOT(onMolomePhoto(QVariant,QVariant))); viewer.showExpanded(); molome->updateinfo(); #else viewer.showExpanded(); #endif rootObject->connect(pictureHelper,SIGNAL(pictureUploaded(QVariant, QVariant)),SLOT(onPictureUploaded(QVariant, QVariant))); #if defined(Q_OS_MAEMO) splash.finish(&viewer); #endif return app->exec(); }