member.cpp
1/*
2 This file is part of libqopensync.
3
4 Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details.
15
16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.
20*/
21
22#include <opensync/opensync.h>
23#include <stdlib.h>
24
25#include "member.h"
26
27using namespace QSync;
28
29Member::Member()
30 : mMember( 0 )
31{
32}
33
34Member::~Member()
35{
36}
37
38bool Member::isValid() const
39{
40 OSyncError *error = 0;
41
42 if ( !mMember )
43 return false;
44
45 if ( !osync_member_instance_plugin( mMember, pluginName().utf8(), &error ) ) {
46 tqDebug( "Plugin %s is not valid: %s", pluginName().latin1(), osync_error_print( &error ) );
47 osync_error_free( &error );
48 return false;
49 }
50
51 return true;
52}
53
54TQString Member::configurationDirectory() const
55{
56 Q_ASSERT( mMember );
57
58 return TQString::fromLatin1( osync_member_get_configdir( mMember ) );
59}
60
61TQString Member::pluginName() const
62{
63 Q_ASSERT( mMember );
64
65 return TQString::fromLatin1( osync_member_get_pluginname( mMember ) );
66}
67
68Plugin Member::plugin() const
69{
70 Q_ASSERT( mMember );
71
72 Plugin plugin;
73
74 OSyncPlugin *oplugin = osync_member_get_plugin( mMember );
75 if ( oplugin )
76 plugin.mPlugin = oplugin;
77
78 return plugin;
79}
80
81int Member::id() const
82{
83 Q_ASSERT( mMember );
84
85 return osync_member_get_id( mMember );
86}
87
88void Member::setName( const TQString &name )
89{
90 Q_ASSERT( mMember );
91
92 osync_member_set_name( mMember, (const char*)name.utf8() );
93}
94
95TQString Member::name() const
96{
97 Q_ASSERT( mMember );
98
99 return TQString::fromUtf8( osync_member_get_name( mMember ) );
100}
101
102void Member::setConfiguration( const TQByteArray &configurationData )
103{
104 Q_ASSERT( mMember );
105
106 osync_member_set_config( mMember, configurationData.data(), configurationData.size() );
107}
108
109Result Member::configuration( TQByteArray &configurationData, bool useDefault )
110{
111 Q_ASSERT( mMember );
112
113 char *data;
114 int size;
115
116 OSyncError *error = 0;
117 osync_bool ok = false;
118 if ( useDefault )
119 ok = osync_member_get_config_or_default( mMember, &data, &size, &error );
120 else
121 ok = osync_member_get_config( mMember, &data, &size, &error );
122
123 if ( !ok ) {
124 return Result( &error );
125 } else {
126 configurationData.resize( size );
127 memcpy( configurationData.data(), data, size );
128
129 return Result();
130 }
131}
132
133Result Member::save()
134{
135 Q_ASSERT( mMember );
136
137 OSyncError *error = 0;
138 if ( !osync_member_save( mMember, &error ) )
139 return Result( &error );
140 else
141 return Result();
142}
143
144Result Member::instance( const Plugin &plugin )
145{
146 OSyncError *error = 0;
147 if ( !osync_member_instance_plugin( mMember, plugin.name().utf8(), &error ) )
148 return Result( &error );
149 else
150 return Result();
151}
152
153bool Member::operator==( const Member &member ) const
154{
155 return mMember == member.mMember;
156}
157
158TQString Member::scanDevices( const TQString &query )
159{
160 Q_ASSERT( mMember );
161
162 OSyncError *error = 0;
163 char *data = (char*)osync_member_call_plugin( mMember, "scan_devices", const_cast<char*>( query.utf8().data() ), &error );
164 if ( error != 0 ) {
165 osync_error_free( &error );
166 return TQString();
167 } else {
168 TQString xml = TQString::fromUtf8( data );
169 free( data );
170 return xml;
171 }
172}
173
174bool Member::testConnection( const TQString &configuration )
175{
176 Q_ASSERT( mMember );
177
178 OSyncError *error = 0;
179 int *result = (int*)osync_member_call_plugin( mMember, "test_connection", const_cast<char*>( configuration.utf8().data() ), &error );
180 if ( error != 0 ) {
181 osync_error_free( &error );
182 return false;
183 } else {
184 bool value = ( *result == 1 ? true : false );
185 free( result );
186 return value;
187 }
188}