Esempio n. 1
0
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);
}