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 
27 using namespace QSync;
28 
29 Member::Member()
30  : mMember( 0 )
31 {
32 }
33 
34 Member::~Member()
35 {
36 }
37 
38 bool 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 
54 TQString Member::configurationDirectory() const
55 {
56  Q_ASSERT( mMember );
57 
58  return TQString::fromLatin1( osync_member_get_configdir( mMember ) );
59 }
60 
61 TQString Member::pluginName() const
62 {
63  Q_ASSERT( mMember );
64 
65  return TQString::fromLatin1( osync_member_get_pluginname( mMember ) );
66 }
67 
68 Plugin 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 
81 int Member::id() const
82 {
83  Q_ASSERT( mMember );
84 
85  return osync_member_get_id( mMember );
86 }
87 
88 void Member::setName( const TQString &name )
89 {
90  Q_ASSERT( mMember );
91 
92  osync_member_set_name( mMember, (const char*)name.utf8() );
93 }
94 
95 TQString Member::name() const
96 {
97  Q_ASSERT( mMember );
98 
99  return TQString::fromUtf8( osync_member_get_name( mMember ) );
100 }
101 
102 void Member::setConfiguration( const TQByteArray &configurationData )
103 {
104  Q_ASSERT( mMember );
105 
106  osync_member_set_config( mMember, configurationData.data(), configurationData.size() );
107 }
108 
109 Result 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 
133 Result 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 
144 Result 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 
153 bool Member::operator==( const Member &member ) const
154 {
155  return mMember == member.mMember;
156 }
157 
158 TQString 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 
174 bool 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 }