arcsconstantmodifier.cpp
1 /*
2  name: lib/arcsconstantmodifier.cpp
3 
4  This file is part of ARCS - Augmented Reality Component System
5  (version 2-current), written by Jean-Yves Didier
6  for IBISC Laboratory (http://www.ibisc.univ-evry.fr)
7 
8  Copyright (C) 2013 Université d'Evry-Val d'Essonne
9 
10  This program is free software: you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation, either version 2 of the License, or
13  (at your option) any later version.
14 
15  This program is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  GNU General Public License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with this program. If not, see <http://www.gnu.org/licenses/>.
22 
23 
24  Please send bugreports with examples or suggestions to
25  jean-yves.didier__at__ibisc.univ-evry.fr
26 */
27 
28 
29 #include <arcs/arcsconstantmodifier.h>
30 #include <arcs/arcsapplicationcomponent.h>
31 
32 
33 
34 int ARCSConstantModifier::qt_metacall(QMetaObject::Call call, int id, void ** arguments)
35 {
36  id = QObject::qt_metacall(call,id, arguments);
37  if (id == -1 || call != QMetaObject::InvokeMetaMethod)
38  return id;
39 
40  if (!invertMap.contains(id))
41  {
42  std::cerr << "Map does not contain id " << id << std::endl;
43  return -1;
44  }
45 
46  ConstantAttributes ca = invertMap[id];
47  ARCSApplicationComponent* current = ARCSApplicationComponent::getRunningInstance();
48 
49  if (!current)
50  return -1;
51 
52  QVariant v(ca.getType(), arguments[1]);
53  QString s = ARCSFactory::getInstance()->dataSerialize(v);
54 
55  current->getContext()->modifyConstant(ca.getConstantName(),s);
56  return -1;
57 }
58 
59 
60 
61 QStringList ARCSConstantModifier::getSignalList() { return QStringList(); }
62 QStringList ARCSConstantModifier::getSlotList() { return QStringList(); }
63 int ARCSConstantModifier::prepareSlotConnect(QString sigName, QString sltName, QString objectName, QString actualSignal, bool simulate)
64 {
65  if (simulate)
66  return 0;
67 
68  if (!ARCSApplicationComponent::getRunningInstance())
69  return -1;
70 
71  QString signature = objectName + "." + actualSignal + "." + sigName ;
72 
73  map.insert(signature, idx);
74  QString param = sigName.section("(",1,1).section(")", 0,0);
75  invertMap.insert(idx, ConstantAttributes(signature, sltName,QMetaType::type(qPrintable(param)) ));
76  idx ++ ;
77  return idx - 1 + metaObject()->methodCount();;
78 }
79 
80 int ARCSConstantModifier::prepareSignalConnect(QString /*sigName*/, QString /*sltName*/, QString /*objectName*/, QString /*actualSlot*/, bool /*simulate*/ )
81 {
82  return -1;
83 }
84 
85 int ARCSConstantModifier::cleanSlotConnect(QString sigName, QString /*sltName*/, QString objectName, QString actualSignal)
86 {
87  QString signature = objectName + "." + actualSignal + "." + sigName ;
88 
89  int id = -1;
90  if (map.contains(signature))
91  id = map[signature];
92  else
93  return -1;
94 
95  map.take(signature);
96  invertMap.take(id);
97 
98  return id + metaObject()->methodCount();
99 }
100 
101 int ARCSConstantModifier::cleanSignalConnect(QString /*sigName*/, QString /*sltName*/, QString /*objectName*/, QString /*actualSlot*/)
102 {
103  return -1;
104 }
This class represents an application.
bool modifyConstant(QString name, QString representation)
Modifies a constant of the list.
virtual int cleanSignalConnect(QString sigName, QString sltName, QString objectName, QString actualSlot)
virtual QStringList getSignalList()
static ARCSFactory * getInstance()
Returns the instance of the singleton ARCSFactory.
virtual int prepareSignalConnect(QString sigName, QString sltName, QString objectName=QString::null, QString actualSlot=QString::null, bool simulate=false)
Prepares a connection with a slot which does not belong to this object.
virtual int prepareSlotConnect(QString sigName, QString sltName, QString objectName=QString::null, QString actualSignal=QString::null, bool simulate=false)
Prepares a connection with a slot which is belonging to this object.
virtual int cleanSlotConnect(QString sigName, QString sltName, QString objectName, QString actualSignal)
virtual int qt_metacall(QMetaObject::Call call, int id, void **arguments)
Method performing the actual callback task.
QString dataSerialize(QVariant var)
Serializes data from their QVariant counterpart.
virtual QStringList getSlotList()