member.cpp
00001 /* 00002 This file is part of libqopensync. 00003 00004 Copyright (c) 2005 Tobias Koenig <tokoe@kde.org> 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License as published by the Free Software Foundation; either 00009 version 2 of the License, or (at your option) any later version. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Library General Public License for more details. 00015 00016 You should have received a copy of the GNU Library General Public License 00017 along with this library; see the file COPYING.LIB. If not, write to 00018 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00019 Boston, MA 02110-1301, USA. 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 tqDebug( "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 }