RioEngine  0.1
My first attempt to create a 3D WYSIWYG Game Engine
cobjecttypesenumproperty.cpp
Go to the documentation of this file.
1 //--------------------------------------------------------------- @License begins
2 // RioEngine: The late night Coke -without whores- debugging sessions
3 // 2012-2015 Leopoldo Lomas Flores. Torreon, Coahuila. MEXICO
4 // leopoldolomas [at] gmail
5 // www.rioengine.com
6 // www.leopoldolomas.info
7 // "You have a problem?, you face it like a man."
8 //
9 // This is free and unencumbered software released into the public domain.
10 //
11 // Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
12 // software, either in source code form or as a compiled binary, for any purpose,
13 // commercial or non-commercial, and by any means.
14 //
15 // In jurisdictions that recognize copyright laws, the author or authors of this
16 // software dedicate any and all copyright interest in the software to the public
17 // domain. We make this dedication for the benefit of the public at large and to
18 // the detriment of our heirs and successors. We intend this dedication to be
19 // an overt act of relinquishment in perpetuity of all present and future
20 // rights to this software under copyright law.
21 //
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS
24 // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
26 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //--------------------------------------------------------------- @License ends
29 
32 
33 //-----------------------------------------------------------------------------
34 
36  QObject* propertyObject,
37  QObject* parent)
38  : EnumProperty(name, propertyObject, parent) {
39  m_enum.clear();
40 }
41 
42 //-----------------------------------------------------------------------------
43 
44 void CObjectTypesEnumProperty::setEnumValues(QStringList values) {
45  m_enum = values;
46 }
47 
48 //-----------------------------------------------------------------------------
49 
50 QVariant CObjectTypesEnumProperty::value(int role /* = Qt::UserRole */) const {
51  if(role == Qt::DisplayRole){
52  if (m_propertyObject){
53  // resolve the value to the corresponding enum key
54  int index = m_propertyObject->property(qPrintable(objectName())).toInt();
55  const QStringList& types = CGameObjectFactory::types();
56  if(index < 0 || (uint)index >= types.size())
57  {
58  return QVariant();
59  }
60  return types.at(index);
61  } else{
62  return QVariant();
63  }
64  } else {
65  return Property::value(role);
66  }
67 }
68 
69 //-----------------------------------------------------------------------------
70 
71 bool CObjectTypesEnumProperty::setEditorData(QWidget *editor, const QVariant& data)
72 {
73  QComboBox* combo = 0;
74  if(combo = qobject_cast<QComboBox*>(editor)) {
75  int value = data.toInt();
76  combo->setCurrentIndex(value);
77  } else {
78  return false;
79  }
80 
81  return true;
82 }
83 
84 //-----------------------------------------------------------------------------
85 
86 void CObjectTypesEnumProperty::valueChanged(const QString item) {
87  int index = CGameObjectFactory::getObjectTypeId(qPrintable(item));
88  setValue( index < 0 ? QVariant() : QVariant(index) );
89 }
virtual QVariant value(int role=Qt::UserRole) const
static const QStringList & types()
virtual void setValue(const QVariant &value)
Definition: property.cpp:51
QObject * m_propertyObject
Definition: property.h:142
static int getObjectTypeId(const char *class_name)
QStringList m_enum
Definition: enumproperty.h:63
void setEnumValues(QStringList values)
virtual QVariant value(int role=Qt::UserRole) const
Definition: property.cpp:43
CObjectTypesEnumProperty(const QString &name=QString(), QObject *propertyObject=0, QObject *parent=0)