[win-linux] casctabdata: add accumulation of features

This commit is contained in:
SimplestStudio
2024-03-25 13:43:00 +02:00
parent 3489b6f632
commit ab93bc5cc6
4 changed files with 35 additions and 13 deletions

View File

@ -212,7 +212,7 @@ bool CAscApplicationManagerWrapper::processCommonEvent(NSEditorApi::CAscCefMenuE
if ( !((pData->get_Param()).find(L"fillform") == std::wstring::npos) ) {
if ( m_receivers.find(sid) != m_receivers.end() )
m_receivers[sid]->onWebAppsFeatures(sid,L"\"uitype\":\"fillform\"");
m_receivers[sid]->onWebAppsFeatures(sid,L"{\"uitype\":\"fillform\"}");
}
if ( !((pData->get_Param()).find(L"framesize") == std::wstring::npos) ) {
@ -230,7 +230,7 @@ bool CAscApplicationManagerWrapper::processCommonEvent(NSEditorApi::CAscCefMenuE
const QSize s = view->geometry().size() / Utils::getScreenDpiRatioByWidget(view);
if ( abs(s.width() - _frame_w) > 1 || abs(s.height() - _frame_h) > 1 ) {
const std::wstring feature = L"\"hasframe\":true";
const std::wstring feature = L"{\"hasframe\":true}";
if ( m_receivers.find(sid) != m_receivers.end() )
m_receivers[sid]->onWebAppsFeatures(sid, feature);
else m_pMainWindow->onWebAppsFeatures(sid, feature);

View File

@ -31,6 +31,8 @@
*/
#include "casctabdata.h"
#include <QJsonDocument>
#include <QJsonObject>
using namespace std;
@ -174,7 +176,35 @@ void CAscTabData::setEventLoadSupported(bool value)
void CAscTabData::setFeatures(const wstring& fs)
{
_features = fs;
QJsonParseError err;
QJsonDocument doc = QJsonDocument::fromJson(QString::fromStdWString(fs).toUtf8(), &err);
if (err.error == QJsonParseError::NoError) {
QJsonObject obj = doc.object();
if (_features.empty()) {
_features = QString(QJsonDocument(obj).toJson(QJsonDocument::Compact)).toStdWString();
// qDebug() << QString::fromStdWString(_features);
} else {
QJsonDocument src_doc = QJsonDocument::fromJson(QString::fromStdWString(_features).toUtf8(), &err);
if (err.error == QJsonParseError::NoError) {
QJsonObject src_obj = src_doc.object();
QVariantMap map = src_obj.toVariantMap();
#if (QT_VERSION < QT_VERSION_CHECK(5,15,0))
QVariantMap fs_map = obj.toVariantMap();
for (QVariantMap::iterator it = fs_map.begin(); it != fs_map.end(); it++)
map.insert(it.key(), it.value());
#else
map.insert(obj.toVariantMap());
#endif
QJsonObject res = QJsonObject::fromVariantMap(map);
_features = QString(QJsonDocument(res).toJson(QJsonDocument::Compact)).toStdWString();
// qDebug() << QString::fromStdWString(_features);
} else {
// qDebug() << "JSON has error: " << QString::fromStdWString(_features);
}
}
} else {
// qDebug() << "JSON has error: " << QString::fromStdWString(fs);
}
if ( hasFeature(L"readonly\":true") ) {
_is_readonly = true;
@ -185,13 +215,6 @@ void CAscTabData::setFeatures(const wstring& fs)
if ( hasFeature(L"readonly\":false") ) {
_is_readonly = false;
}
if ( hasFeature(L"hasframe\":true") ) {
_has_frame = true;
} else
if ( hasFeature(L"hasframe\":false") ) {
_has_frame = false;
}
}
wstring CAscTabData::features() const
@ -212,7 +235,7 @@ bool CAscTabData::hasFeature(const wstring& f) const
bool CAscTabData::hasFrame() const
{
return _has_frame;
return hasFeature(L"hasframe\":true");
}
bool CAscTabData::hasError() const

View File

@ -79,7 +79,6 @@ private:
_has_changes = false;
bool _is_closed = false;
bool _is_local;
bool _has_frame = false;
bool _has_error = false;
CefType _vtype;
std::wstring _url;

View File

@ -232,7 +232,7 @@ void CCefEventsTransformer::OnEvent(QObject * target, NSEditorApi::CAscCefMenuEv
} else
/* webapps:events is deprecated. used for back compatibility for awhile */
if ( !(cmd.find(L"webapps:events") == std::wstring::npos) ) {
QMetaObject::invokeMethod( target, "onWebAppsFeatures", Qt::QueuedConnection, Q_ARG(int, event->get_SenderId()), Q_ARG(std::wstring, L"eventloading:true") );
QMetaObject::invokeMethod( target, "onWebAppsFeatures", Qt::QueuedConnection, Q_ARG(int, event->get_SenderId()), Q_ARG(std::wstring, L"{\"eventloading\":true}") );
} else
if ( !(cmd.find(L"webapps:features") == std::wstring::npos) ) {
QMetaObject::invokeMethod(target, "onWebAppsFeatures", Qt::QueuedConnection,