kitchensync
member.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <opensync/opensync.h>
00023 #include <stdlib.h>
00024
00025 #include "member.h"
00026
00027 using namespace QSync;
00028
00029 Member::Member()
00030 : mMember( 0 )
00031 {
00032 }
00033
00034 Member::~Member()
00035 {
00036 }
00037
00038 bool Member::isValid() const
00039 {
00040 OSyncError *error = 0;
00041
00042 if ( !mMember )
00043 return false;
00044
00045 if ( !osync_member_instance_plugin( mMember, pluginName().utf8(), &error ) ) {
00046 qDebug( "Plugin %s is not valid: %s", pluginName().latin1(), osync_error_print( &error ) );
00047 osync_error_free( &error );
00048 return false;
00049 }
00050
00051 return true;
00052 }
00053
00054 TQString Member::configurationDirectory() const
00055 {
00056 Q_ASSERT( mMember );
00057
00058 return TQString::fromLatin1( osync_member_get_configdir( mMember ) );
00059 }
00060
00061 TQString Member::pluginName() const
00062 {
00063 Q_ASSERT( mMember );
00064
00065 return TQString::fromLatin1( osync_member_get_pluginname( mMember ) );
00066 }
00067
00068 Plugin Member::plugin() const
00069 {
00070 Q_ASSERT( mMember );
00071
00072 Plugin plugin;
00073
00074 OSyncPlugin *oplugin = osync_member_get_plugin( mMember );
00075 if ( oplugin )
00076 plugin.mPlugin = oplugin;
00077
00078 return plugin;
00079 }
00080
00081 int Member::id() const
00082 {
00083 Q_ASSERT( mMember );
00084
00085 return osync_member_get_id( mMember );
00086 }
00087
00088 void Member::setName( const TQString &name )
00089 {
00090 Q_ASSERT( mMember );
00091
00092 osync_member_set_name( mMember, (const char*)name.utf8() );
00093 }
00094
00095 TQString Member::name() const
00096 {
00097 Q_ASSERT( mMember );
00098
00099 return TQString::fromUtf8( osync_member_get_name( mMember ) );
00100 }
00101
00102 void Member::setConfiguration( const TQByteArray &configurationData )
00103 {
00104 Q_ASSERT( mMember );
00105
00106 osync_member_set_config( mMember, configurationData.data(), configurationData.size() );
00107 }
00108
00109 Result Member::configuration( TQByteArray &configurationData, bool useDefault )
00110 {
00111 Q_ASSERT( mMember );
00112
00113 char *data;
00114 int size;
00115
00116 OSyncError *error = 0;
00117 osync_bool ok = false;
00118 if ( useDefault )
00119 ok = osync_member_get_config_or_default( mMember, &data, &size, &error );
00120 else
00121 ok = osync_member_get_config( mMember, &data, &size, &error );
00122
00123 if ( !ok ) {
00124 return Result( &error );
00125 } else {
00126 configurationData.resize( size );
00127 memcpy( configurationData.data(), data, size );
00128
00129 return Result();
00130 }
00131 }
00132
00133 Result Member::save()
00134 {
00135 Q_ASSERT( mMember );
00136
00137 OSyncError *error = 0;
00138 if ( !osync_member_save( mMember, &error ) )
00139 return Result( &error );
00140 else
00141 return Result();
00142 }
00143
00144 Result Member::instance( const Plugin &plugin )
00145 {
00146 OSyncError *error = 0;
00147 if ( !osync_member_instance_plugin( mMember, plugin.name().utf8(), &error ) )
00148 return Result( &error );
00149 else
00150 return Result();
00151 }
00152
00153 bool Member::operator==( const Member &member ) const
00154 {
00155 return mMember == member.mMember;
00156 }
00157
00158 TQString Member::scanDevices( const TQString &query )
00159 {
00160 Q_ASSERT( mMember );
00161
00162 OSyncError *error = 0;
00163 char *data = (char*)osync_member_call_plugin( mMember, "scan_devices", const_cast<char*>( query.utf8().data() ), &error );
00164 if ( error != 0 ) {
00165 osync_error_free( &error );
00166 return TQString();
00167 } else {
00168 TQString xml = TQString::fromUtf8( data );
00169 free( data );
00170 return xml;
00171 }
00172 }
00173
00174 bool Member::testConnection( const TQString &configuration )
00175 {
00176 Q_ASSERT( mMember );
00177
00178 OSyncError *error = 0;
00179 int *result = (int*)osync_member_call_plugin( mMember, "test_connection", const_cast<char*>( configuration.utf8().data() ), &error );
00180 if ( error != 0 ) {
00181 osync_error_free( &error );
00182 return false;
00183 } else {
00184 bool value = ( *result == 1 ? true : false );
00185 free( result );
00186 return value;
00187 }
00188 }
|