From 99757097cc6afbf58c1017ebf126c96a7821d168 Mon Sep 17 00:00:00 2001 From: Arin Alexander Date: Fri, 28 Jun 2019 13:08:33 +0300 Subject: [PATCH] Turn off translation for object properties ability has been added to the object inspector --- include/lrpreparedpagesintf.h | 17 +++++++++ limereport/lrreportdesignwidget.h | 4 +-- limereport/lrreportdesignwindow.cpp | 7 ++++ limereport/lrvariablesholder.cpp | 2 +- .../objectinspector/images/settings.png | Bin 0 -> 643 bytes .../objectinspector/lobjectinspector.qrc | 1 + .../lrobjectinspectorwidget.cpp | 33 ++++++++++++++++++ .../objectinspector/lrobjectinspectorwidget.h | 5 +++ .../objectinspector/lrobjectitemmodel.cpp | 22 +++++++++--- .../objectinspector/lrobjectitemmodel.h | 16 +++++---- .../objectinspector/lrobjectpropitem.cpp | 20 +++++++++-- limereport/objectinspector/lrobjectpropitem.h | 5 ++- .../propertyItems/lrenumpropitem.cpp | 2 +- .../propertyItems/lrflagspropitem.cpp | 4 +-- translations/limereport_ru.qm | Bin 121800 -> 121930 bytes translations/limereport_ru.ts | 4 +++ 16 files changed, 121 insertions(+), 21 deletions(-) create mode 100644 include/lrpreparedpagesintf.h create mode 100644 limereport/objectinspector/images/settings.png diff --git a/include/lrpreparedpagesintf.h b/include/lrpreparedpagesintf.h new file mode 100644 index 0000000..a079a9a --- /dev/null +++ b/include/lrpreparedpagesintf.h @@ -0,0 +1,17 @@ +#ifndef LRPREPAREDPAGESINTF_H +#define LRPREPAREDPAGESINTF_H +#include "lrglobal.h" +namespace LimeReport { +class LIMEREPORT_EXPORT IPreparedPages{ +public: + virtual ~IPreparedPages(){}; + virtual bool loadFromFile(const QString& fileName) = 0; + virtual bool loadFromString(const QString data) = 0; + virtual bool loadFromByteArray(QByteArray* data) = 0; + virtual bool saveToFile(const QString& fileName) = 0; + virtual QString saveToString() = 0; + virtual QByteArray saveToByteArray() = 0; + virtual void clear() = 0; +}; +} //namespace LimeReport +#endif // LRPREPAREDPAGESINTF_H diff --git a/limereport/lrreportdesignwidget.h b/limereport/lrreportdesignwidget.h index 3429cae..149dcb5 100644 --- a/limereport/lrreportdesignwidget.h +++ b/limereport/lrreportdesignwidget.h @@ -95,9 +95,7 @@ public: } void setPageItem(PageItemDesignIntf* pageItem); protected: -// void mouseMoveEvent(QMouseEvent *event); -// void resizeEvent(QResizeEvent *event); - bool viewportEvent(QEvent *event); + bool viewportEvent(QEvent *event); private: PageItemDesignIntf* m_pageItem; Ruler* m_horizontalRuller; diff --git a/limereport/lrreportdesignwindow.cpp b/limereport/lrreportdesignwindow.cpp index 1b79168..1fdc9e7 100644 --- a/limereport/lrreportdesignwindow.cpp +++ b/limereport/lrreportdesignwindow.cpp @@ -506,6 +506,7 @@ void ReportDesignWindow::createObjectInspector() m_validator = new ObjectNameValidator(); m_objectInspector->setValidator(m_validator); m_objectInspector->setSubclassesAsLevel(false); + m_objectInspector->setTranslateProperties(true); m_objectInspector->setAlternatingRowColors(true); m_objectInspector->setRootIsDecorated(!m_objectInspector->subclassesAsLevel()); QDockWidget *objectDoc = new QDockWidget(this); @@ -696,6 +697,7 @@ void ReportDesignWindow::writeState() settings()->setValue("ScriptEditorsState", m_editorsStates[ReportDesignWidget::Script]); settings()->setValue("TranslationEditorsState", m_editorsStates[ReportDesignWidget::Translations]); settings()->setValue("InspectorFirsColumnWidth", m_objectInspector->columnWidth(0)); + settings()->setValue("InspectorTranslateProperties", m_objectInspector->translateProperties()); settings()->endGroup(); settings()->beginGroup("RecentFiles"); settings()->setValue("filesCount",m_recentFiles.count()); @@ -811,6 +813,11 @@ void ReportDesignWindow::restoreSetting() m_objectInspector->setColumnWidth(0,v.toInt()); } + v = settings()->value("InspectorTranslateProperties"); + if (v.isValid()){ + m_objectInspector->setTranslateProperties(v.toBool()); + } + settings()->endGroup(); settings()->beginGroup("RecentFiles"); diff --git a/limereport/lrvariablesholder.cpp b/limereport/lrvariablesholder.cpp index c34dc4c..4e79084 100644 --- a/limereport/lrvariablesholder.cpp +++ b/limereport/lrvariablesholder.cpp @@ -44,7 +44,7 @@ VariablesHolder::~VariablesHolder() QMap::iterator it = m_varNames.begin(); while(it!=m_varNames.end()){ delete *it; - it++; + ++it; } m_varNames.clear(); m_userVariables.clear(); diff --git a/limereport/objectinspector/images/settings.png b/limereport/objectinspector/images/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..226e2f05cf1d786f15e72732440179ef0b7fece1 GIT binary patch literal 643 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>6A+miNe1UogY2olJ}@-@Y<$-X>ODD8BvY`(NMx&G++Hr zvg7_I{Q^$p=Pn9f{NvHV14>WN?gQ#&O!9VjF><)%a{|cWEbxddW?hHk`9xP{d+!cEpIbDNac1)OYG~p;$&<_1Trn%?D zXSxafny~a-@7A=X*X@d%uh>MY9iFD!%2alZaW?a+1-8x2?Cxyp+ve0y>;55rYt7zi zPv35y)*ZT4J1l%(#OkWo7VCdM{#(J=n=7`jO*eC!1 literal 0 HcmV?d00001 diff --git a/limereport/objectinspector/lobjectinspector.qrc b/limereport/objectinspector/lobjectinspector.qrc index 7dd5e48..6b6f10f 100644 --- a/limereport/objectinspector/lobjectinspector.qrc +++ b/limereport/objectinspector/lobjectinspector.qrc @@ -6,5 +6,6 @@ images/uncheck.png images/check_w.png images/uncheck_w.png + images/settings.png diff --git a/limereport/objectinspector/lrobjectinspectorwidget.cpp b/limereport/objectinspector/lrobjectinspectorwidget.cpp index d4158f0..3997e16 100644 --- a/limereport/objectinspector/lrobjectinspectorwidget.cpp +++ b/limereport/objectinspector/lrobjectinspectorwidget.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include "lrglobal.h" #include "lrobjectinspectorwidget.h" @@ -183,10 +184,25 @@ ObjectInspectorWidget::ObjectInspectorWidget(QWidget *parent) connect(pbClear, SIGNAL(clicked()), le, SLOT(clear())); le->setPlaceholderText(tr("Filter")); connect(le, SIGNAL(textChanged(const QString&)), this, SLOT(slotFilterTextChanged(const QString&))); + + QToolButton* settingButton = new QToolButton(this); + settingButton->setIcon(QIcon(":/items/images/settings.png")); + QMenu* settingMenu = new QMenu(settingButton); + m_translateProperties = settingMenu->addAction(tr("Translate properties")); + m_translateProperties->setCheckable(true); + m_translateProperties->setChecked(translateProperties()); + + connect(m_translateProperties, SIGNAL(toggled(bool)), + this, SLOT(slotTranslatePropertiesChecked(bool))); + + settingButton->setMenu(settingMenu); + settingButton->setPopupMode(QToolButton::InstantPopup); + QHBoxLayout* h = new QHBoxLayout(); h->setSpacing(2); h->addWidget(le); h->addWidget(pbClear); + h->addWidget(settingButton); l->addLayout(h); l->addWidget(m_objectInspectorView); l->setMargin(Const::DOCKWIDGET_MARGINS); @@ -246,6 +262,18 @@ void ObjectInspectorWidget::setSubclassesAsLevel(bool value) m_propertyModel->setSubclassesAsLevel(value); } +bool ObjectInspectorWidget::translateProperties() +{ + return m_propertyModel->isTranslateProperties(); +} + +void ObjectInspectorWidget::setTranslateProperties(bool value) +{ + m_propertyModel->setTranslateProperties(value); + m_translateProperties->setChecked(value); + update(); +} + const QObject *ObjectInspectorWidget::object(){ return m_propertyModel->currentObject(); } @@ -276,4 +304,9 @@ void ObjectInspectorWidget::slotFilterTextChanged(const QString &filter) m_filterModel->setFilterRegExp(QRegExp(filter, Qt::CaseInsensitive, QRegExp::FixedString)); } +void ObjectInspectorWidget::slotTranslatePropertiesChecked(bool value) +{ + setTranslateProperties(value); +} + } //namespace LimeReport diff --git a/limereport/objectinspector/lrobjectinspectorwidget.h b/limereport/objectinspector/lrobjectinspectorwidget.h index 88ef97a..fb1d0a6 100644 --- a/limereport/objectinspector/lrobjectinspectorwidget.h +++ b/limereport/objectinspector/lrobjectinspectorwidget.h @@ -83,6 +83,8 @@ public: void setValidator(ValidatorIntf *validator); bool subclassesAsLevel(); void setSubclassesAsLevel(bool value); + bool translateProperties(); + void setTranslateProperties(bool value); void setObject(QObject* setObject); const QObject* object(); void setMultiObjects(QList* list); @@ -90,10 +92,13 @@ public: void updateProperty(const QString &propertyName); private slots: void slotFilterTextChanged(const QString& filter); + void slotTranslatePropertiesChecked(bool value); private: ObjectInspectorTreeView* m_objectInspectorView; QSortFilterProxyModel* m_filterModel; BaseDesignPropertyModel* m_propertyModel; + QAction* m_translateProperties; + }; } //namespace LimeReport diff --git a/limereport/objectinspector/lrobjectitemmodel.cpp b/limereport/objectinspector/lrobjectitemmodel.cpp index e7bf04f..9aff3a0 100644 --- a/limereport/objectinspector/lrobjectitemmodel.cpp +++ b/limereport/objectinspector/lrobjectitemmodel.cpp @@ -169,7 +169,8 @@ void QObjectPropertyModel::clearObjectsList() } QObjectPropertyModel::QObjectPropertyModel(QObject *parent/*=0*/) - :QAbstractItemModel(parent),m_rootNode(0),m_object(0),m_dataChanging(false), m_subclassesAsLevel(true), m_validator(0) + :QAbstractItemModel(parent),m_rootNode(0), m_object(0), m_dataChanging(false), + m_subclassesAsLevel(true), m_validator(0), m_translateProperties(true) {} QObjectPropertyModel::~QObjectPropertyModel() @@ -297,16 +298,17 @@ QVariant QObjectPropertyModel::data(const QModelIndex &index, int role) const switch (role) { case Qt::DisplayRole: if (!node) return QVariant(); + node->setTranslateProperty(isTranslateProperties()); if (index.column()==0){ return node->displayName(); - } else return node->displayValue(); - break; + } else { + return node->displayValue(); + } case Qt::DecorationRole : if (!node) return QIcon(); if (index.column()==1){ return node->iconValue(); - }else return QIcon(); - break; + } else return QIcon(); case Qt::UserRole: return QVariant::fromValue(node); default: @@ -418,6 +420,16 @@ ObjectPropItem * QObjectPropertyModel::createPropertyItem(QMetaProperty prop, QO } return propertyItem; } + +bool QObjectPropertyModel::isTranslateProperties() const +{ + return m_translateProperties; +} + +void QObjectPropertyModel::setTranslateProperties(bool translateProperties) +{ + m_translateProperties = translateProperties; +} ValidatorIntf *QObjectPropertyModel::validator() const { return m_validator; diff --git a/limereport/objectinspector/lrobjectitemmodel.h b/limereport/objectinspector/lrobjectitemmodel.h index bf01cb2..2aa1f8b 100644 --- a/limereport/objectinspector/lrobjectitemmodel.h +++ b/limereport/objectinspector/lrobjectitemmodel.h @@ -72,6 +72,9 @@ public: void setValidator(ValidatorIntf* validator); void translatePropertyName(); void clearObjectsList(); + bool isTranslateProperties() const; + void setTranslateProperties(bool isTranslateProperties); + signals: void objectPropetyChanged(const QString& , const QVariant&, const QVariant&); private slots: @@ -83,12 +86,13 @@ private: LimeReport::CreatePropItem propertyItemCreator(QMetaProperty prop); LimeReport::ObjectPropItem* createPropertyItem(QMetaProperty prop, QObject *object, ObjectPropItem::ObjectsList* objects, ObjectPropItem* parent); private: - LimeReport::ObjectPropItem* m_rootNode; - QObject* m_object; - QList m_objects; - bool m_dataChanging; - bool m_subclassesAsLevel; - ValidatorIntf* m_validator; + LimeReport::ObjectPropItem* m_rootNode; + QObject* m_object; + QList m_objects; + bool m_dataChanging; + bool m_subclassesAsLevel; + ValidatorIntf* m_validator; + bool m_translateProperties; }; } diff --git a/limereport/objectinspector/lrobjectpropitem.cpp b/limereport/objectinspector/lrobjectpropitem.cpp index 3fc212c..6ef6613 100644 --- a/limereport/objectinspector/lrobjectpropitem.cpp +++ b/limereport/objectinspector/lrobjectpropitem.cpp @@ -42,7 +42,8 @@ bool lesThen(ObjectPropItem* v1, ObjectPropItem* v2){ ObjectPropItem::ObjectPropItem(QObject *object, ObjectsList* objects, const QString &name, const QString &displayName, ObjectPropItem *parent, bool isClass) :m_object(object), m_name(name), m_displayName(displayName), m_haveValue(false), m_parent(parent), m_colorIndex(-1), - m_readonly(true), m_model(0), m_isClass(isClass), m_changingValue(false) + m_readonly(true), m_model(0), m_isClass(isClass), m_changingValue(false), + m_translatePropperty(true) { if (parent) setModel(parent->model()); m_index=QModelIndex(); @@ -60,7 +61,8 @@ ObjectPropItem::ObjectPropItem(QObject *object, ObjectsList* objects, const QStr ObjectPropItem::ObjectPropItem(QObject *object, ObjectsList* objects, const QString &name, const QString &displayName, const QVariant &value, ObjectPropItem *parent, bool readonly) :m_object(object), m_name(name), m_displayName(displayName), m_value(value), m_haveValue(true), m_parent(parent), m_colorIndex(-1), - m_readonly(readonly), m_model(0), m_isClass(false), m_changingValue(false) + m_readonly(readonly), m_model(0), m_isClass(false), m_changingValue(false), + m_translatePropperty(true) { if (parent) setModel(parent->model()); m_index=QModelIndex(); @@ -109,6 +111,10 @@ void ObjectPropItem::setPropertyValue(QVariant value){ } } +QString ObjectPropItem::displayName() const { + return isTranslateProperty() ? m_displayName : propertyName(); +} + int ObjectPropItem::row(){ if (m_parent) return m_parent->m_childItems.indexOf(const_cast(this)); @@ -155,6 +161,16 @@ void ObjectPropItem::setValueToObject(const QString &propertyName, QVariant prop } } +bool ObjectPropItem::isTranslateProperty() const +{ + return m_translatePropperty; +} + +void ObjectPropItem::setTranslateProperty(bool translatePropperty) +{ + m_translatePropperty = translatePropperty; +} + ObjectPropItem * ObjectPropItem::findChild(const QString &name) { foreach(ObjectPropItem* item,m_childItems){ diff --git a/limereport/objectinspector/lrobjectpropitem.h b/limereport/objectinspector/lrobjectpropitem.h index c5403cd..46392fc 100644 --- a/limereport/objectinspector/lrobjectpropitem.h +++ b/limereport/objectinspector/lrobjectpropitem.h @@ -56,7 +56,7 @@ namespace LimeReport{ virtual QVariant propertyValue() const; virtual void setPropertyValue(QVariant value); virtual QString propertyName() const {return m_name;} - virtual QString displayName() const {return m_displayName;} + virtual QString displayName() const; virtual QString displayValue() const; virtual QIcon iconValue() const{return QIcon();} virtual bool isHaveChildren() const {return m_childItems.count()>0;} @@ -90,6 +90,8 @@ namespace LimeReport{ void setModelIndex(const QModelIndex& index){m_index=index;} QModelIndex modelIndex(){return m_index;} bool isClass(){return m_isClass;} + bool isTranslateProperty() const; + void setTranslateProperty(bool translatePropperty); #ifdef INSPECT_BASEDESIGN private slots: void slotPropertyChanged(const QString& name, QVariant, QVariant newValue); @@ -120,6 +122,7 @@ namespace LimeReport{ QModelIndex m_index; bool m_isClass; bool m_changingValue; + bool m_translatePropperty; }; typedef QPair APropIdent; diff --git a/limereport/objectinspector/propertyItems/lrenumpropitem.cpp b/limereport/objectinspector/propertyItems/lrenumpropitem.cpp index 143ba38..d38331d 100644 --- a/limereport/objectinspector/propertyItems/lrenumpropitem.cpp +++ b/limereport/objectinspector/propertyItems/lrenumpropitem.cpp @@ -162,7 +162,7 @@ void EnumPropItem::setModelData(QWidget *propertyEditor, QAbstractItemModel *mod QString EnumPropItem::nameByType(int value) const { QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator(); - return tr(propEnum.valueToKey(value)); + return isTranslateProperty() ? tr(propEnum.valueToKey(value)) : propEnum.valueToKey(value); } int EnumPropItem::typeByName(const QString &value) const diff --git a/limereport/objectinspector/propertyItems/lrflagspropitem.cpp b/limereport/objectinspector/propertyItems/lrflagspropitem.cpp index de4af7c..91d142e 100644 --- a/limereport/objectinspector/propertyItems/lrflagspropitem.cpp +++ b/limereport/objectinspector/propertyItems/lrflagspropitem.cpp @@ -97,8 +97,8 @@ QString FlagsPropItem::displayValue() const { if ((propEnum.keyToValue(propEnum.key(i)) == 0) ? propertyValue().toInt() == 0 : (propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i))) == propEnum.keyToValue(propEnum.key(i))) { - if (result.isEmpty()) result+= tr(propEnum.key(i)); - else result=result+" | "+tr(propEnum.key(i)); + if (result.isEmpty()) result+= isTranslateProperty() ? tr(propEnum.key(i)) : propEnum.key(i); + else result=result+" | "+ (isTranslateProperty() ? tr(propEnum.key(i)) : propEnum.key(i)); } } diff --git a/translations/limereport_ru.qm b/translations/limereport_ru.qm index 3ce791a78c782c75fd3bb2702eeadd125a7c7ce9..35a81f92e28904a273ad7365cb11b47aeee80cfe 100644 GIT binary patch delta 4815 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 T@~19%OPUi}6>6RF41|T~En3(~<%?CgO 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 diff --git a/translations/limereport_ru.ts b/translations/limereport_ru.ts index 2bca21d..b6da993 100644 --- a/translations/limereport_ru.ts +++ b/translations/limereport_ru.ts @@ -1235,6 +1235,10 @@ p, li { white-space: pre-wrap; } Filter Фильтр + + Translate properties + Переводить имена свойств + LimeReport::PDFExporter