DBus-1-TQt  1.0
tqdbusdataconverter.cpp
Go to the documentation of this file.
1 /* qdbusdataconverter.cpp TQT_DBusDataConverter template
2  *
3  * Copyright (C) 2007 Kevin Krammer <kevin.krammer@gmx.at>
4  *
5  * Licensed under the Academic Free License version 2.1
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
20  * USA.
21  *
22  */
23 
24 #include "tqdbusdataconverter.h"
25 #include "tqdbusdata.h"
26 
27 #include <tqpoint.h>
28 #include <tqrect.h>
29 #include <tqsize.h>
30 #include <tqvaluelist.h>
31 
32 template <>
33 TQT_DBusDataConverter::Result TQT_DBusDataConverter::convertFromTQT_DBusData<TQRect>(const TQT_DBusData& dbusData, TQRect& typeData)
34 {
35  if (dbusData.type() != TQT_DBusData::Struct) return InvalidSignature;
36 
37  TQValueList<TQT_DBusData> members = dbusData.toStruct();
38  if (members.count() != 4) return InvalidSignature;
39 
40  TQ_INT32 values[4];
41 
42  TQValueList<TQT_DBusData>::const_iterator it = members.begin();
43  TQValueList<TQT_DBusData>::const_iterator endIt = members.end();
44  for (uint i = 0; it != endIt; ++it, ++i)
45  {
46  bool ok = false;
47  values[i] = (*it).toInt32(&ok);
48  if (!ok) return InvalidSignature;
49  }
50 
51  typeData = TQRect(values[0], values[1], values[2], values[3]);
52 
53  return Success;
54 }
55 
56 template <>
57 TQT_DBusDataConverter::Result TQT_DBusDataConverter::convertToTQT_DBusData<TQRect>(const TQRect& typeData, TQT_DBusData& dbusData)
58 {
60 
61  members << TQT_DBusData::fromInt32(typeData.x());
62  members << TQT_DBusData::fromInt32(typeData.y());
63  members << TQT_DBusData::fromInt32(typeData.width());
64  members << TQT_DBusData::fromInt32(typeData.height());
65 
66  dbusData = TQT_DBusData::fromStruct(members);
67 
68  return Success;
69 }
70 
71 template <>
72 TQT_DBusDataConverter::Result TQT_DBusDataConverter::convertFromTQT_DBusData<TQPoint>(const TQT_DBusData& dbusData, TQPoint& typeData)
73 {
74  if (dbusData.type() != TQT_DBusData::Struct) return InvalidSignature;
75 
76  TQValueList<TQT_DBusData> members = dbusData.toStruct();
77  if (members.count() != 2) return InvalidSignature;
78 
79  TQ_INT32 values[2];
80 
81  TQValueList<TQT_DBusData>::const_iterator it = members.begin();
82  TQValueList<TQT_DBusData>::const_iterator endIt = members.end();
83  for (uint i = 0; it != endIt; ++it, ++i)
84  {
85  bool ok = false;
86  values[i] = (*it).toInt32(&ok);
87  if (!ok) return InvalidSignature;
88  }
89 
90  typeData = TQPoint(values[0], values[1]);
91 
92  return Success;
93 }
94 
95 template <>
96 TQT_DBusDataConverter::Result TQT_DBusDataConverter::convertToTQT_DBusData<TQPoint>(const TQPoint& typeData, TQT_DBusData& dbusData)
97 {
99 
100  members << TQT_DBusData::fromInt32(typeData.x());
101  members << TQT_DBusData::fromInt32(typeData.y());
102 
103  dbusData = TQT_DBusData::fromStruct(members);
104 
105  return Success;
106 }
107 
108 template <>
109 TQT_DBusDataConverter::Result TQT_DBusDataConverter::convertFromTQT_DBusData<TQSize>(const TQT_DBusData& dbusData, TQSize& typeData)
110 {
111  if (dbusData.type() != TQT_DBusData::Struct) return InvalidSignature;
112 
113  TQValueList<TQT_DBusData> members = dbusData.toStruct();
114  if (members.count() != 2) return InvalidSignature;
115 
116  TQ_INT32 values[2];
117 
118  TQValueList<TQT_DBusData>::const_iterator it = members.begin();
119  TQValueList<TQT_DBusData>::const_iterator endIt = members.end();
120  for (uint i = 0; it != endIt; ++it, ++i)
121  {
122  bool ok = false;
123  values[i] = (*it).toInt32(&ok);
124  if (!ok) return InvalidSignature;
125  }
126 
127  typeData = TQSize(values[0], values[1]);
128 
129  return Success;
130 }
131 
132 template <>
133 TQT_DBusDataConverter::Result TQT_DBusDataConverter::convertToTQT_DBusData<TQSize>(const TQSize& typeData, TQT_DBusData& dbusData)
134 {
136 
137  members << TQT_DBusData::fromInt32(typeData.width());
138  members << TQT_DBusData::fromInt32(typeData.height());
139 
140  dbusData = TQT_DBusData::fromStruct(members);
141 
142  return Success;
143 }
Result
Conversion result values.
Class for accurately representing D-Bus data types.
Definition: tqdbusdata.h:59
Type type() const
Returns the Type of the data object.
Definition: tqdbusdata.cpp:317
TQValueList< TQT_DBusData > toStruct(bool *ok=0) const
Tries to get the encapsulated struct memberList.
Definition: tqdbusdata.cpp:698
static TQT_DBusData fromStruct(const TQValueList< TQT_DBusData > &memberList)
Creates a data object for the given struct's memberList.
Definition: tqdbusdata.cpp:681
static TQT_DBusData fromInt32(TQ_INT32 value)
Creates a data object for the given signed 32-bit integer value.
Definition: tqdbusdata.cpp:447