mirror of
https://github.com/ONLYOFFICE/desktop-apps.git
synced 2026-04-07 14:09:22 +08:00
[win-linux] casctabdata: add accumulation of features
This commit is contained in:
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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,
|
||||
|
||||
Reference in New Issue
Block a user