~ubuntu-branches/ubuntu/hardy/kdenetwork-kde4/hardy-backports

« back to all changes in this revision

Viewing changes to kopete/protocols/groupwise/libgroupwise/gwfield.h

  • Committer: Bazaar Package Importer
  • Author(s): Yuriy Kozlov
  • Date: 2008-06-06 14:05:37 UTC
  • mfrom: (1.1.8 upstream)
  • Revision ID: james.westby@ubuntu.com-20080606140537-3k1t0yaq4xvi50vz
Tags: 4:4.0.5-0ubuntu1~hardy1
* New upstream release
* Removed kubuntu_02_kopete_tabsfix.diff -- implemented by upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
#ifndef GWFIELD_H
22
22
#define GWFIELD_H
23
23
 
 
24
//#include <QGlobals>
 
25
#include <QObject>
 
26
#include <QVariant>
 
27
 
 
28
#include "kopete_export.h"
 
29
 
24
30
/* Field types */
25
31
/* Comments: ^1 not used ^2 ignored ^3 apparently only used in _field_to_string for debug */
26
32
/* Otherwise: widely used */
68
74
#define NMFIELD_METHOD_NOT_ARRAY                40
69
75
#define NMFIELD_METHOD_OR_ARRAY                 41
70
76
#define NMFIELD_METHOD_AND_ARRAY                42
 
77
#define NM_PROTOCOL_VERSION                             5
 
78
#define NMFIELD_MAX_STR_LENGTH                  32768
 
79
 
71
80
 
72
81
/* Attribute Names (field tags) */
73
 
#define NM_A_IP_ADDRESS                                 "nnmIPAddress"
74
 
#define NM_A_PORT                                               "nnmPort"
75
 
#define NM_A_FA_FOLDER                                  "NM_A_FA_FOLDER"
76
 
#define NM_A_FA_CONTACT                                 "NM_A_FA_CONTACT"
77
 
#define NM_A_FA_CONVERSATION                    "NM_A_FA_CONVERSATION"
78
 
#define NM_A_FA_MESSAGE                                 "NM_A_FA_MESSAGE"
79
 
#define NM_A_FA_CONTACT_LIST                    "NM_A_FA_CONTACT_LIST"
80
 
#define NM_A_FA_RESULTS                                 "NM_A_FA_RESULTS"
81
 
#define NM_A_FA_INFO_DISPLAY_ARRAY              "NM_A_FA_INFO_DISPLAY_ARRAY"
82
 
#define NM_A_FA_USER_DETAILS                    "NM_A_FA_USER_DETAILS"
83
 
#define NM_A_SZ_OBJECT_ID                               "NM_A_SZ_OBJECT_ID"
84
 
#define NM_A_SZ_PARENT_ID                               "NM_A_SZ_PARENT_ID"
85
 
#define NM_A_SZ_SEQUENCE_NUMBER                 "NM_A_SZ_SEQUENCE_NUMBER"
86
 
#define NM_A_SZ_TYPE                                    "NM_A_SZ_TYPE"
87
 
#define NM_A_SZ_STATUS                                  "NM_A_SZ_STATUS"
88
 
#define NM_A_SZ_STATUS_TEXT                             "NM_A_SZ_STATUS_TEXT"
89
 
#define NM_A_SZ_DN                                              "NM_A_SZ_DN"
90
 
#define NM_A_SZ_DISPLAY_NAME                    "NM_A_SZ_DISPLAY_NAME"
91
 
#define NM_A_SZ_USERID                                  "NM_A_SZ_USERID"
92
 
#define NM_A_SZ_CREDENTIALS                             "NM_A_SZ_CREDENTIALS"
93
 
#define NM_A_SZ_MESSAGE_BODY                    "NM_A_SZ_MESSAGE_BODY"
94
 
#define NM_A_SZ_MESSAGE_TEXT                    "NM_A_SZ_MESSAGE_TEXT"
95
 
#define NM_A_UD_MESSAGE_TYPE                    "NM_A_UD_MESSAGE_TYPE"
96
 
#define NM_A_FA_PARTICIPANTS                    "NM_A_FA_PARTICIPANTS"
97
 
#define NM_A_FA_INVITES                                 "NM_A_FA_INVITES"
98
 
#define NM_A_FA_EVENT                                   "NM_A_FA_EVENT"
99
 
#define NM_A_UD_COUNT                                   "NM_A_UD_COUNT"
100
 
#define NM_A_UD_DATE                                    "NM_A_UD_DATE"
101
 
#define NM_A_UD_EVENT                                   "NM_A_UD_EVENT"
102
 
#define NM_A_B_NO_CONTACTS                              "NM_A_B_NO_CONTACTS"
103
 
#define NM_A_B_NO_CUSTOMS                               "NM_A_B_NO_CUSTOMS"
104
 
#define NM_A_B_NO_PRIVACY                               "NM_A_B_NO_PRIVACY"
105
 
#define NM_A_B_ONLY_MODIFIED                    "NM_A_B_ONLY_MODIFIED"
106
 
#define NM_A_UW_STATUS                                  "NM_A_UW_STATUS"
107
 
#define NM_A_UD_OBJECT_ID                               "NM_A_UD_OBJECT_ID"
108
 
#define NM_A_SZ_TRANSACTION_ID                  "NM_A_SZ_TRANSACTION_ID"
109
 
#define NM_A_SZ_RESULT_CODE                             "NM_A_SZ_RESULT_CODE"
110
 
#define NM_A_UD_BUILD                                   "NM_A_UD_BUILD"
111
 
#define NM_A_SZ_AUTH_ATTRIBUTE                  "NM_A_SZ_AUTH_ATTRIBUTE"
112
 
#define NM_A_UD_KEEPALIVE                               "NM_A_UD_KEEPALIVE"
113
 
#define NM_A_SZ_USER_AGENT                              "NM_A_SZ_USER_AGENT"
114
 
#define NM_A_BLOCKING                                   "nnmBlocking"
115
 
#define NM_A_BLOCKING_DENY_LIST                 "nnmBlockingDenyList"
116
 
#define NM_A_BLOCKING_ALLOW_LIST                "nnmBlockingAllowList"
117
 
#define NM_A_SZ_BLOCKING_ALLOW_ITEM             "NM_A_SZ_BLOCKING_ALLOW_ITEM"
118
 
#define NM_A_SZ_BLOCKING_DENY_ITEM              "NM_A_SZ_BLOCKING_DENY_ITEM"
119
 
#define NM_A_LOCKED_ATTR_LIST                   "nnmLockedAttrList"
120
 
#define NM_A_SZ_DEPARTMENT                              "OU"
121
 
#define NM_A_SZ_TITLE                                   "Title"
122
 
// GW7
123
 
#define NM_A_FA_CUSTOM_STATUSES                 "NM_A_FA_CUSTOM_STATUSES"
124
 
#define NM_A_FA_STATUS                                  "NM_A_FA_STATUS"
125
 
#define NM_A_UD_QUERY_COUNT                             "NM_A_UD_QUERY_COUNT"
126
 
#define NM_A_FA_CHAT                                    "NM_A_FA_CHAT"
127
 
#define NM_A_DISPLAY_NAME                               "nnmDisplayName"
128
 
#define NM_A_CHAT_OWNER_DN                              "nnmChatOwnerDN"
129
 
#define NM_A_UD_PARTICIPANTS                    "NM_A_UD_PARTICIPANTS"
130
 
#define NM_A_DESCRIPTION                                "nnmDescription"
131
 
#define NM_A_DISCLAIMER                                 "nnmDisclaimer"
132
 
#define NM_A_QUERY                                              "nnmQuery"
133
 
#define NM_A_ARCHIVE                                    "nnmArchive"
134
 
#define NM_A_MAX_USERS                                  "nnmMaxUsers"
135
 
#define NM_A_SZ_TOPIC                                   "NM_A_SZ_TOPIC"
136
 
#define NM_A_FA_CHAT_ACL                                "NM_A_FA_CHAT_ACL"
137
 
#define NM_A_FA_CHAT_ACL_ENTRY                  "NM_A_FA_CHAT_ACL_ENTRY"
138
 
#define NM_A_SZ_ACCESS_FLAGS                    "NM_A_SZ_ACCESS_FLAGS"
139
 
#define NM_A_CHAT_CREATOR_DN                    "nnmCreatorDN"
140
 
#define NM_A_CREATION_TIME                              "nnmCreationTime"
141
 
#define NM_A_UD_CHAT_RIGHTS                             "NM_A_UD_CHAT_RIGHTS"
142
 
 
143
 
#define NM_PROTOCOL_VERSION                             5
144
 
#define NM_FIELD_TRUE                                   "1"
145
 
#define NM_FIELD_FALSE                                  "0"
146
 
 
147
 
#define NMFIELD_MAX_STR_LENGTH                  32768
148
 
 
149
 
#include <qglobal.h>
150
 
#include <qobject.h>
151
 
#include <qvariant.h>
152
 
#include <q3valuelist.h>        
153
 
//Added by qt3to4:
154
 
#include <QByteArray>
 
82
namespace Field {
 
83
        extern KOPETE_EXPORT QByteArray NM_A_IP_ADDRESS;
 
84
        extern KOPETE_EXPORT QByteArray NM_A_PORT;
 
85
        extern KOPETE_EXPORT QByteArray NM_A_FA_FOLDER;
 
86
        extern KOPETE_EXPORT QByteArray NM_A_FA_CONTACT;
 
87
        extern KOPETE_EXPORT QByteArray NM_A_FA_CONVERSATION;
 
88
        extern KOPETE_EXPORT QByteArray NM_A_FA_MESSAGE;
 
89
        extern KOPETE_EXPORT QByteArray NM_A_FA_CONTACT_LIST;
 
90
        extern KOPETE_EXPORT QByteArray NM_A_FA_RESULTS;
 
91
        extern KOPETE_EXPORT QByteArray NM_A_FA_INFO_DISPLAY_ARRAY;
 
92
        extern KOPETE_EXPORT QByteArray NM_A_FA_USER_DETAILS;
 
93
        extern KOPETE_EXPORT QByteArray NM_A_SZ_OBJECT_ID;
 
94
        extern KOPETE_EXPORT QByteArray NM_A_SZ_PARENT_ID;
 
95
        extern KOPETE_EXPORT QByteArray NM_A_SZ_SEQUENCE_NUMBER;
 
96
        extern KOPETE_EXPORT QByteArray NM_A_SZ_TYPE;
 
97
        extern KOPETE_EXPORT QByteArray NM_A_SZ_STATUS;
 
98
        extern KOPETE_EXPORT QByteArray NM_A_SZ_STATUS_TEXT;
 
99
        extern KOPETE_EXPORT QByteArray NM_A_SZ_DN;
 
100
        extern KOPETE_EXPORT QByteArray NM_A_SZ_DISPLAY_NAME;
 
101
        extern KOPETE_EXPORT QByteArray NM_A_SZ_USERID;
 
102
        extern KOPETE_EXPORT QByteArray NM_A_SZ_CREDENTIALS;
 
103
        extern KOPETE_EXPORT QByteArray NM_A_SZ_MESSAGE_BODY;
 
104
        extern KOPETE_EXPORT QByteArray NM_A_SZ_MESSAGE_TEXT;
 
105
        extern KOPETE_EXPORT QByteArray NM_A_UD_MESSAGE_TYPE;
 
106
        extern KOPETE_EXPORT QByteArray NM_A_FA_PARTICIPANTS;
 
107
        extern KOPETE_EXPORT QByteArray NM_A_FA_INVITES;
 
108
        extern KOPETE_EXPORT QByteArray NM_A_FA_EVENT;
 
109
        extern KOPETE_EXPORT QByteArray NM_A_UD_COUNT;
 
110
        extern KOPETE_EXPORT QByteArray NM_A_UD_DATE;
 
111
        extern KOPETE_EXPORT QByteArray NM_A_UD_EVENT;
 
112
        extern KOPETE_EXPORT QByteArray NM_A_B_NO_CONTACTS;
 
113
        extern KOPETE_EXPORT QByteArray NM_A_B_NO_CUSTOMS;
 
114
        extern KOPETE_EXPORT QByteArray NM_A_B_NO_PRIVACY;
 
115
        extern KOPETE_EXPORT QByteArray NM_A_B_ONLY_MODIFIED;
 
116
        extern KOPETE_EXPORT QByteArray NM_A_UW_STATUS;
 
117
        extern KOPETE_EXPORT QByteArray NM_A_UD_OBJECT_ID;
 
118
        extern KOPETE_EXPORT QByteArray NM_A_SZ_TRANSACTION_ID;
 
119
        extern KOPETE_EXPORT QByteArray NM_A_SZ_RESULT_CODE;
 
120
        extern KOPETE_EXPORT QByteArray NM_A_UD_BUILD;
 
121
        extern KOPETE_EXPORT QByteArray NM_A_SZ_AUTH_ATTRIBUTE;
 
122
        extern KOPETE_EXPORT QByteArray NM_A_UD_KEEPALIVE;
 
123
        extern KOPETE_EXPORT QByteArray NM_A_SZ_USER_AGENT;
 
124
        extern KOPETE_EXPORT QByteArray NM_A_BLOCKING;
 
125
        extern KOPETE_EXPORT QByteArray NM_A_BLOCKING_DENY_LIST;
 
126
        extern KOPETE_EXPORT QByteArray NM_A_BLOCKING_ALLOW_LIST;
 
127
        extern KOPETE_EXPORT QByteArray NM_A_SZ_BLOCKING_ALLOW_ITEM;
 
128
        extern KOPETE_EXPORT QByteArray NM_A_SZ_BLOCKING_DENY_ITEM;
 
129
        extern KOPETE_EXPORT QByteArray NM_A_LOCKED_ATTR_LIST;
 
130
        extern KOPETE_EXPORT QByteArray NM_A_SZ_DEPARTMENT;
 
131
        extern KOPETE_EXPORT QByteArray NM_A_SZ_TITLE;
 
132
        // GW7
 
133
        extern KOPETE_EXPORT QByteArray NM_A_FA_CUSTOM_STATUSES;
 
134
        extern KOPETE_EXPORT QByteArray NM_A_FA_STATUS;
 
135
        extern KOPETE_EXPORT QByteArray NM_A_UD_QUERY_COUNT;
 
136
        extern KOPETE_EXPORT QByteArray NM_A_FA_CHAT;
 
137
        extern KOPETE_EXPORT QByteArray NM_A_DISPLAY_NAME;
 
138
        extern KOPETE_EXPORT QByteArray NM_A_CHAT_OWNER_DN;
 
139
        extern KOPETE_EXPORT QByteArray NM_A_UD_PARTICIPANTS;
 
140
        extern KOPETE_EXPORT QByteArray NM_A_DESCRIPTION;
 
141
        extern KOPETE_EXPORT QByteArray NM_A_DISCLAIMER;
 
142
        extern KOPETE_EXPORT QByteArray NM_A_QUERY;
 
143
        extern KOPETE_EXPORT QByteArray NM_A_ARCHIVE;
 
144
        extern KOPETE_EXPORT QByteArray NM_A_MAX_USERS;
 
145
        extern KOPETE_EXPORT QByteArray NM_A_SZ_TOPIC;
 
146
        extern KOPETE_EXPORT QByteArray NM_A_FA_CHAT_ACL;
 
147
        extern KOPETE_EXPORT QByteArray NM_A_FA_CHAT_ACL_ENTRY;
 
148
        extern KOPETE_EXPORT QByteArray NM_A_SZ_ACCESS_FLAGS;
 
149
        extern KOPETE_EXPORT QByteArray NM_A_CHAT_CREATOR_DN;
 
150
        extern KOPETE_EXPORT QByteArray NM_A_CREATION_TIME;
 
151
        extern KOPETE_EXPORT QByteArray NM_A_UD_CHAT_RIGHTS;
 
152
        extern KOPETE_EXPORT QByteArray NM_FIELD_TRUE;
 
153
        extern KOPETE_EXPORT QByteArray NM_FIELD_FALSE;
 
154
 
 
155
        extern KOPETE_EXPORT QByteArray KOPETE_NM_USER_DETAILS_CN;
 
156
        extern KOPETE_EXPORT QByteArray KOPETE_NM_USER_DETAILS_GIVEN_NAME;
 
157
        extern KOPETE_EXPORT QByteArray KOPETE_NM_USER_DETAILS_SURNAME;
 
158
        extern KOPETE_EXPORT QByteArray KOPETE_NM_USER_DETAILS_ARCHIVE_FLAG;
 
159
        extern KOPETE_EXPORT QByteArray KOPETE_NM_USER_DETAILS_FULL_NAME;
 
160
 
155
161
 
156
162
/**
157
163
 * Fields are typed units of information interchanged between the groupwise server and its clients.
160
166
 * deleting outgoing Fields.
161
167
 */
162
168
 
163
 
namespace Field
164
 
{
165
169
        /**
166
170
         * Abstract base class of all field types
167
171
         */
168
172
        class FieldBase
169
173
        {
170
174
        public:
171
 
                FieldBase() {}
172
 
                FieldBase( QByteArray tag, quint8 method, quint8 flags, quint8 type );
 
175
//              FieldBase() {}
 
176
                FieldBase( const QByteArray & tag, quint8 method, quint8 flags, quint8 type );
173
177
                virtual ~FieldBase() {}
174
178
                QByteArray tag() const;
175
179
                quint8 method() const;
183
187
                quint8 m_type;  // doch needed
184
188
        };
185
189
        
186
 
        typedef QList<FieldBase*>::Iterator FieldListIterator;
187
 
        typedef QList<FieldBase*>::ConstIterator FieldListConstIterator;
 
190
        typedef QList<Field::FieldBase*>::Iterator FieldListIterator;
 
191
        typedef QList<Field::FieldBase*>::ConstIterator FieldListConstIterator;
188
192
        class SingleField;
189
193
        class MultiField;
190
194
        
191
 
        class FieldList : public QList<FieldBase *>
 
195
        class FieldList : public QList<Field::FieldBase *>
192
196
        {
193
197
                public:
194
198
                        /** 
200
204
                         * @param tag The tag name of the field to search for.
201
205
                         * @return An iterator pointing to the first occurrence found, or end() if none was found.
202
206
                         */
203
 
                        FieldListIterator find( QByteArray tag );
 
207
                        FieldListIterator find( const QByteArray & tag );
204
208
                        /** 
205
209
                         * Locate the first occurrence of a given field in the list, starting at the supplied iterator
206
210
                         * @param tag The tag name of the field to search for.
207
211
                         * @param it An iterator within the list, to start searching from.
208
212
                         * @return An iterator pointing to the first occurrence found, or end() if none was found.
209
213
                         */
210
 
                        FieldListIterator find( FieldListIterator &it, QByteArray tag );
 
214
                        FieldListIterator find( FieldListIterator &it, const QByteArray & tag );
211
215
                        /**
212
216
                         * Get the index of the first occurrence of tag, or -1 if not found
213
217
                         */
214
 
                        int findIndex( QByteArray tag );
 
218
                        int findIndex( const QByteArray & tag );
215
219
                        /** 
216
220
                         * Debug function, dumps to stdout
217
221
                         */
224
228
                         * Utility functions for finding the first instance of a tag
225
229
                         * @return 0 if no field of the right tag and type was found.
226
230
                         */
227
 
                        SingleField * findSingleField( QByteArray tag );
228
 
                        MultiField * findMultiField( QByteArray tag );
 
231
                        SingleField * findSingleField( const QByteArray & tag );
 
232
                        MultiField * findMultiField( const QByteArray & tag );
229
233
                protected:
230
 
                        SingleField * findSingleField( FieldListIterator &it, QByteArray tag );
231
 
                        MultiField * findMultiField( FieldListIterator &it, QByteArray tag );
 
234
                        SingleField * findSingleField( FieldListIterator &it, const QByteArray & tag );
 
235
                        MultiField * findMultiField( FieldListIterator &it, const QByteArray & tag );
232
236
 
233
237
        };
234
238
 
244
248
                /** 
245
249
                 * Single field constructor
246
250
                 */
247
 
                SingleField( QByteArray tag, quint8 method, quint8 flags, quint8 type, QVariant value );
 
251
                SingleField( const QByteArray & tag, quint8 method, quint8 flags, quint8 type, QVariant value );
248
252
                /** 
249
253
                 * Convenience constructor for NMFIELD_METHOD_VALID fields
250
254
                 */
251
 
                SingleField( QByteArray tag, quint8 flags, quint8 type, QVariant value );
 
255
                SingleField( const QByteArray & tag, quint8 flags, quint8 type, QVariant value );
252
256
                ~SingleField();
253
257
                void setValue( const QVariant v );
254
258
                QVariant value() const;
263
267
        class MultiField : public FieldBase
264
268
        {
265
269
        public:  
266
 
                MultiField( QByteArray tag, quint8 method, quint8 flags, quint8 type );
267
 
                MultiField( QByteArray tag, quint8 method, quint8 flags, quint8 type, FieldList fields );
 
270
                MultiField( const QByteArray & tag, quint8 method, quint8 flags, quint8 type );
 
271
                MultiField( const QByteArray & tag, quint8 method, quint8 flags, quint8 type, FieldList fields );
268
272
                ~MultiField();
269
273
                FieldList fields() const;
270
274
                void setFields( FieldList );
272
276
                FieldList m_fields; // nb implicitly shared, copy-on-write - is there a case where this is bad?
273
277
        };
274
278
        
275
 
}
276
 
 
 
279
} // namespace Field
277
280
#endif