void EventPlugin::emitDbEvent(const QString &domain, const QVariant &payload, bool loopback) { qfLogFuncFrame() << "domain:" << domain << "payload:" << payload; if(loopback) { // emit queued //emit dbEventNotify(domain, payload); QMetaObject::invokeMethod(this, "dbEventNotify", Qt::QueuedConnection, Q_ARG(QString, domain), Q_ARG(QVariant, payload)); } if(connectionType() == ConnectionType::SingleFile) return; //QVariantMap m; QJsonObject jso; jso[QLatin1String("event")] = eventName(); jso[QLatin1String("domain")] = domain; jso[QLatin1String("payload")] = QJsonValue::fromVariant(payload); QJsonDocument jsd(jso); QString payload_str = QString::fromUtf8(jsd.toJson(QJsonDocument::Compact)); payload_str = qf::core::sql::Connection::escapeJsonForSql(payload_str); qf::core::sql::Connection conn = qf::core::sql::Connection::forName(); QString qs = QString("NOTIFY ") + DBEVENT_NOTIFY_NAME + ", '" + payload_str + "'"; qfDebug() << conn.driver() << "executing SQL:" << qs; QSqlQuery q(conn); if(!q.exec(qs)) { qfError() << "emitDbEventNotify Error:" << qs << q.lastError().text(); } }
QByteArray CodeClassResultsGridWidget::saveLayout() { QJsonObject jso; jso[PROP_ROW_COUNT] = rowCount(); jso[PROP_COL_COUNT] = columnCount(); QJsonArray cells; for (int j = 0; j < rowCount(); ++j) { for (int i = 0; i < columnCount(); ++i) { CodeClassResultsWidget *w = resultsWidgetAt(j, i); QF_ASSERT(w != nullptr, "Bad widget pos!", continue); cells.append(w->saveSetup()); } } jso[PROP_CELLS] = cells; QJsonDocument jsd(jso); return jsd.toJson(QJsonDocument::Compact); }