• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

okteta

  • sources
  • kde-4.12
  • kdesdk
  • okteta
  • kasten
  • controllers
  • view
  • structures
  • script
  • classes
enumscriptclass.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of the Okteta Kasten Framework, made within the KDE community.
3  *
4  * Copyright 2012 Alex Richardson <alex.richardson@gmx.de>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) version 3, or any
10  * later version accepted by the membership of KDE e.V. (or its
11  * successor approved by the membership of KDE e.V.), which shall
12  * act as a proxy defined in Section 6 of version 3 of the license.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
21  */
22 
23 
24 #include "enumscriptclass.h"
25 
26 #include "../../datatypes/primitive/enumdatainformation.h"
27 #include "../../parsers/parserutils.h"
28 #include "../scriptlogger.h"
29 
30 EnumScriptClass::EnumScriptClass(QScriptEngine* engine, ScriptHandlerInfo* handlerInfo)
31  : PrimitiveScriptClass(engine, handlerInfo)
32 {
33  s_values = engine->toStringHandle(ParserStrings::PROPERTY_ENUM_VALUES);
34  mIterableProperties.append(qMakePair(s_values, QScriptValue::PropertyFlags(QScriptValue::Undeletable)));
35 }
36 
37 EnumScriptClass::~EnumScriptClass()
38 {
39 }
40 
41 QScriptValue EnumScriptClass::additionalProperty(const DataInformation* data, const QScriptString& name, uint id)
42 {
43  if (name == s_values)
44  {
45  const EnumDataInformation* pData = data->asEnum();
46  QScriptValue ret = engine()->newObject();
47  QMapIterator<AllPrimitiveTypes, QString> it(pData-> enumValues()->values());
48  while(it.hasNext()) {
49  it.next();
50  ret.setProperty(it.value(), QString::number(it.key().value<quint64>())); //should always work
51  }
52  return ret;
53  }
54  else if (name == s_type)
55  {
56  return data->typeName();
57  }
58  return PrimitiveScriptClass::additionalProperty(data, name, id);
59 }
60 
61 bool EnumScriptClass::queryAdditionalProperty(const DataInformation* data, const QScriptString& name, QScriptClass::QueryFlags* flags, uint* id)
62 {
63  if (name == s_values)
64  {
65  *flags = QScriptClass::HandlesReadAccess | QScriptClass::HandlesWriteAccess;
66  return true;
67  }
68  return PrimitiveScriptClass::queryAdditionalProperty(data, name, flags, id);
69 }
70 
71 bool EnumScriptClass::setAdditionalProperty(DataInformation* data, const QScriptString& name, uint id, const QScriptValue& value)
72 {
73  if (name == s_values)
74  {
75  EnumDataInformation* pData = data->asEnum();
76  QMap<AllPrimitiveTypes, QString> newValues = EnumDefinition::parseEnumValues(value,
77  LoggerWithContext(pData->logger(), pData->fullObjectPath()) , pData->type());
78  if (newValues.isEmpty())
79  pData->logWarn() << "attempting to set empty list of enum values!";
80  pData->setEnumValues(newValues);
81  return true;
82  }
83  return PrimitiveScriptClass::setAdditionalProperty(data, name, id, value);
84 }
85 
DataInformation
Interface that must be implemented by all datatypes.
Definition: datainformation.h:67
DataInformation::fullObjectPath
QString fullObjectPath() const
Definition: datainformation.cpp:258
LoggerWithContext
Definition: scriptlogger.h:94
DataInformationBase::asEnum
EnumDataInformation * asEnum()
PrimitiveDataInformationWrapper::type
virtual PrimitiveDataType type() const
Definition: primitivedatainformation.h:107
enumscriptclass.h
EnumDataInformation::setEnumValues
void setEnumValues(QMap< AllPrimitiveTypes, QString > newValues)
Definition: enumdatainformation.h:60
DataInformation::typeName
QString typeName() const
Definition: datainformation.h:406
EnumDataInformation
Definition: enumdatainformation.h:29
EnumScriptClass::s_values
QScriptString s_values
Definition: enumscriptclass.h:40
PrimitiveScriptClass::additionalProperty
virtual QScriptValue additionalProperty(const DataInformation *data, const QScriptString &name, uint id)
Definition: primitivescriptclass.cpp:111
EnumScriptClass::setAdditionalProperty
virtual bool setAdditionalProperty(DataInformation *data, const QScriptString &name, uint id, const QScriptValue &value)
Definition: enumscriptclass.cpp:71
DataInformation::logger
ScriptLogger * logger() const
Definition: datainformation.cpp:134
EnumScriptClass::additionalProperty
virtual QScriptValue additionalProperty(const DataInformation *data, const QScriptString &name, uint id)
Definition: enumscriptclass.cpp:41
EnumScriptClass::EnumScriptClass
EnumScriptClass(QScriptEngine *engine, ScriptHandlerInfo *handlerInfo)
Definition: enumscriptclass.cpp:30
PrimitiveScriptClass
Definition: primitivescriptclass.h:29
EnumDefinition::parseEnumValues
static QMap< AllPrimitiveTypes, QString > parseEnumValues(const QScriptValue &val, const LoggerWithContext &logger, PrimitiveDataType type=Type_UInt64)
Definition: enumdefinition.cpp:31
DefaultScriptClass::mIterableProperties
PropertyInfoList mIterableProperties
Contains all properties of this class, classes inheriting should add their own properties to this lis...
Definition: defaultscriptclass.h:82
ParserStrings::PROPERTY_ENUM_VALUES
const QString PROPERTY_ENUM_VALUES
Definition: parserutils.h:126
EnumScriptClass::~EnumScriptClass
virtual ~EnumScriptClass()
Definition: enumscriptclass.cpp:37
ScriptHandlerInfo
Definition: scripthandlerinfo.h:39
PrimitiveScriptClass::queryAdditionalProperty
virtual bool queryAdditionalProperty(const DataInformation *data, const QScriptString &name, QScriptClass::QueryFlags *flags, uint *id)
Definition: primitivescriptclass.cpp:84
PrimitiveScriptClass::s_type
QScriptString s_type
Definition: primitivescriptclass.h:46
PrimitiveScriptClass::setAdditionalProperty
virtual bool setAdditionalProperty(DataInformation *data, const QScriptString &name, uint id, const QScriptValue &value)
Definition: primitivescriptclass.cpp:169
DataInformation::logWarn
QDebug logWarn() const
just a shorthand for logger->warn(this)
Definition: datainformation.h:319
EnumScriptClass::queryAdditionalProperty
virtual bool queryAdditionalProperty(const DataInformation *data, const QScriptString &name, QScriptClass::QueryFlags *flags, uint *id)
Definition: enumscriptclass.cpp:61
QMap< AllPrimitiveTypes, QString >
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:04:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

okteta

Skip menu "okteta"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal