Values translation in objectinspector has been added

This commit is contained in:
Arin Alexander
2017-12-10 22:10:41 +03:00
parent 21e4d98484
commit 6a889e9062
9 changed files with 1787 additions and 104 deletions

View File

@@ -54,10 +54,10 @@ QWidget *EnumPropItem::createProperyEditor(QWidget *parent) const
QStringList enumValues;
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++){
if (m_acceptableValues.isEmpty()) enumValues.append(propEnum.key(i));
if (m_acceptableValues.isEmpty()) enumValues.append(tr(propEnum.key(i)));
else {
if (m_acceptableValues.contains(propEnum.value(i))){
enumValues.append(propEnum.key(i));
enumValues.append(tr(propEnum.key(i)));
}
}
}
@@ -75,6 +75,65 @@ void EnumPropItem::slotEnumChanged(const QString &text)
}
}
void EnumPropItem::initTranslation()
{
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++){
m_translation.insert(QString(tr(propEnum.key(i))), QString(propEnum.key(i)));
}
}
void EnumPropItem::translateEnumItemName()
{
tr("Default");
tr("Portrait");
tr("Landscape");
tr("NoneAutoWidth");
tr("MaxWordLength");
tr("MaxStringLength");
tr("TransparentMode");
tr("OpaqueMode");
tr("Angle0");
tr("Angle90");
tr("Angle180");
tr("Angle270");
tr("Angle45");
tr("Angle315");
tr("DateTime");
tr("Double");
tr("NoBrush");
tr("SolidPattern");
tr("Dense1Pattern");
tr("Dense2Pattern");
tr("Dense3Pattern");
tr("Dense4Pattern");
tr("Dense5Pattern");
tr("Dense6Pattern");
tr("Dense7Pattern");
tr("HorPattern");
tr("VerPattern");
tr("CrossPattern");
tr("BDiagPattern");
tr("FDiagPattern");
tr("LeftToRight");
tr("RightToLeft");
tr("LayoutDirectionAuto");
tr("LeftItemAlign");
tr("RightItemAlign");
tr("CenterItemAlign");
tr("ParentWidthItemAlign");
tr("DesignedItemAlign");
tr("HorizontalLine");
tr("VerticalLine");
tr("Ellipse");
tr("Rectangle");
tr("Page");
tr("Band");
tr("Horizontal");
tr("Vertical");
tr("VerticalUniform");
}
void EnumPropItem::setPropertyEditorData(QWidget *propertyEditor, const QModelIndex &) const
{
ComboBoxEditor *editor=qobject_cast<ComboBoxEditor *>(propertyEditor);
@@ -90,13 +149,13 @@ 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 propEnum.valueToKey(value);
return tr(propEnum.valueToKey(value));
}
int EnumPropItem::typeByName(const QString &value) const
{
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
return propEnum.keyToValue(value.toLatin1());
return propEnum.keyToValue(m_translation.value(value).toLatin1());
}
QString EnumPropItem::displayValue() const

View File

@@ -31,17 +31,18 @@
#define LRENUMPROPITEM_H
#include "lrobjectpropitem.h"
#include <QMap>
namespace LimeReport{
class EnumPropItem : public ObjectPropItem
{
Q_OBJECT
public:
EnumPropItem():ObjectPropItem(), m_settingValue(false){}
EnumPropItem():ObjectPropItem(), m_settingValue(false){initTranslation();}
EnumPropItem(QObject* object, ObjectsList* objects, const QString& name, const QString& displayName, const QVariant& value,ObjectPropItem* parent, bool readonly)
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_settingValue(false){}
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_settingValue(false){initTranslation();}
EnumPropItem(QObject* object, ObjectsList* objects, const QString& name, const QString& displayName, const QVariant& value,ObjectPropItem* parent, bool readonly, QVector<int> acceptableValues)
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_acceptableValues(acceptableValues),m_settingValue(false){}
:ObjectPropItem(object, objects, name, displayName, value, parent, readonly),m_acceptableValues(acceptableValues),m_settingValue(false){initTranslation();}
QWidget* createProperyEditor(QWidget *parent) const;
QString displayValue() const;
void setPropertyEditorData(QWidget * propertyEditor, const QModelIndex &) const;
@@ -52,9 +53,13 @@ protected:
int typeByName(const QString& propertyValue) const;
private slots:
void slotEnumChanged(const QString& text);
private:
void initTranslation();
void translateEnumItemName();
private:
QVector<int> m_acceptableValues;
bool m_settingValue;
QMap<QString, QString> m_translation;
};
}
#endif // LRENUMPROPITEM_H

View File

@@ -59,12 +59,14 @@ void FlagsPropItem::createChildren()
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++)
{
this->appendItem(new LimeReport::FlagPropItem(
object(), objects(), QString(propEnum.key(i)), QString(propEnum.key(i)),
bool((propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i)))==propEnum.keyToValue(propEnum.key(i))),
this, false
)
);
if ( propEnum.keyToValue(propEnum.key(i)) !=0 ) {
this->appendItem(new LimeReport::FlagPropItem(
object(), objects(), QString(propEnum.key(i)), tr(propEnum.key(i)),
bool((propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i)))==propEnum.keyToValue(propEnum.key(i))),
this, false
)
);
}
}
}
@@ -94,10 +96,10 @@ QString FlagsPropItem::displayValue() const
QMetaEnum propEnum = object()->metaObject()->property(object()->metaObject()->indexOfProperty(propertyName().toLatin1())).enumerator();
for (int i=0;i<propEnum.keyCount();i++)
{
if ( (propertyValue().toInt() & propEnum.keyToValue(propEnum.key(i)))==propEnum.keyToValue(propEnum.key(i) ))
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+=propEnum.key(i);
else result=result+" | "+propEnum.key(i);
if (result.isEmpty()) result+= tr(propEnum.key(i));
else result=result+" | "+tr(propEnum.key(i));
}
}
@@ -114,6 +116,15 @@ void FlagsPropItem::slotEnumChanged(QString /*text*/)
{
}
void FlagsPropItem::translateFlagsItem()
{
tr("NoLine");
tr("TopLine");
tr("BottomLine");
tr("LeftLine");
tr("RightLine");
}
FlagPropItem::FlagPropItem(QObject* object, ObjectsList* objects, const QString &propName, const QString &displayName, const QVariant &value, ObjectPropItem* parent, bool readonly)
:BoolPropItem(object, objects, propName,displayName,value,parent,readonly)
{
@@ -130,8 +141,8 @@ void FlagPropItem::setModelData(QWidget *propertyEditor, QAbstractItemModel *mod
bool value = qobject_cast<CheckBoxEditor*>(propertyEditor)->isChecked();
model->setData(index,value);
int flags = object()->property(parent()->propertyName().toLatin1()).toInt();
if (value) flags=flags | valueByName(displayName());
else if (flags&valueByName(displayName())) flags=flags ^ valueByName(displayName());
if (value) flags = flags | valueByName(propertyName());
else if (flags & valueByName(propertyName())) flags = flags ^ valueByName(propertyName());
setValueToObject(parent()->propertyName(),flags);
parent()->setPropertyValue(flags);
}

View File

@@ -46,6 +46,8 @@ public:
virtual void setPropertyValue(QVariant propertyValue);
private slots:
void slotEnumChanged(QString);
private:
void translateFlagsItem();
private:
QSet<int> m_acceptableValues;
QString nameByType(int propertyValue) const;