diff options
Diffstat (limited to 'kitchensync/libqopensync/group.cpp')
-rw-r--r-- | kitchensync/libqopensync/group.cpp | 143 |
1 files changed, 99 insertions, 44 deletions
diff --git a/kitchensync/libqopensync/group.cpp b/kitchensync/libqopensync/group.cpp index 46e106098..bc94e2208 100644 --- a/kitchensync/libqopensync/group.cpp +++ b/kitchensync/libqopensync/group.cpp @@ -25,18 +25,86 @@ /** hack includes **/ #include <opensync/opensync.h> -#include <opensync/opensync-group.h> #include "conversion.h" -#include "filter.h" -#include "member.h" -#include "plugin.h" -#include "result.h" - #include "group.h" using namespace QSync; +/** + This class is a quick hack for OpenSync 0.19 and 0.20 because + the engine doesn't stores the filter settings itself when calling + osync_group_set_objtype_enabled(), so we have to store it for every + group in a separated config file. This class encapsulates it. + */ +GroupConfig::GroupConfig() + : mGroup( 0 ) +{ +} + +TQStringList GroupConfig::activeObjectTypes() const +{ + Q_ASSERT( mGroup ); + + const TQString fileName = TQString( "%1/filter.conf" ).arg( osync_group_get_configdir( mGroup ) ); + + TQFile file( fileName ); + if ( !file.open( IO_ReadOnly ) ) + return TQStringList(); + + TQDomDocument document; + + TQString message; + if ( !document.setContent( &file, &message ) ) { + qDebug( "Error on loading %s: %s", fileName.latin1(), message.latin1() ); + return TQStringList(); + } + file.close(); + + TQStringList objectTypes; + + TQDomElement element = document.documentElement(); + TQDomNode node = element.firstChild(); + while ( !node.isNull() ) { + TQDomElement childElement = node.toElement(); + if ( !childElement.isNull() ) + objectTypes.append( childElement.tagName() ); + + node = node.nextSibling(); + } + + return objectTypes; +} + +void GroupConfig::setActiveObjectTypes( const TQStringList &objectTypes ) +{ + Q_ASSERT( mGroup ); + + TQDomDocument document( "Filter" ); + document.appendChild( document.createProcessingInstruction( + "xml", "version=\"1.0\" encoding=\"UTF-8\"" ) ); + + TQDomElement element = document.createElement( "filter" ); + document.appendChild( element ); + + for ( uint i = 0; i < objectTypes.count(); ++i ) { + TQDomElement entry = document.createElement( objectTypes[ i ] ); + element.appendChild( entry ); + } + + const TQString fileName = TQString( "%1/filter.conf" ).arg( osync_group_get_configdir( mGroup ) ); + + TQFile file( fileName ); + if ( !file.open( IO_WriteOnly ) ) + return; + + TQTextStream s( &file ); + s.setEncoding( TQTextStream::UnicodeUTF8 ); + s << document.toString(); + file.close(); +} + + Group::Group() : mGroup( 0 ) { @@ -51,6 +119,22 @@ bool Group::isValid() const return ( mGroup != 0 ); } +Group::Iterator Group::begin() +{ + Iterator it( this ); + it.mPos = 0; + + return it; +} + +Group::Iterator Group::end() +{ + Iterator it( this ); + it.mPos = memberCount(); + + return it; +} + void Group::setName( const TQString &name ) { Q_ASSERT( mGroup ); @@ -104,22 +188,18 @@ Group::LockType Group::lock() } } -void Group::unlock() +void Group::unlock( bool removeFile ) { Q_ASSERT( mGroup ); - osync_group_unlock( mGroup ); + osync_group_unlock( mGroup, removeFile ); } -Member Group::addMember( const QSync::Plugin &plugin ) +Member Group::addMember() { Q_ASSERT( mGroup ); - OSyncError *error = 0; - - OSyncMember *omember = osync_member_new( &error ); - osync_group_add_member( mGroup, omember ); - osync_member_set_pluginname( omember, plugin.name().utf8() ); + OSyncMember *omember = osync_member_new( mGroup ); Member member; member.mMember = omember; @@ -189,30 +269,6 @@ Result Group::save() return Result(); } -void Group::setUseMerger( bool use ) -{ - Q_ASSERT( mGroup ); - osync_group_set_merger_enabled( mGroup, use ); -} - -bool Group::useMerger() const -{ - Q_ASSERT( mGroup ); - return osync_group_get_merger_enabled( mGroup ); -} - -void Group::setUseConverter( bool use ) -{ - Q_ASSERT( mGroup ); - osync_group_set_converter_enabled( mGroup, use ); -} - -bool Group::useConverter() const -{ - Q_ASSERT( mGroup ); - return osync_group_get_converter_enabled( mGroup ); -} - void Group::setObjectTypeEnabled( const TQString &objectType, bool enabled ) { Q_ASSERT( mGroup ); @@ -225,13 +281,12 @@ bool Group::isObjectTypeEnabled( const TQString &objectType ) const return osync_group_objtype_enabled( mGroup, objectType.utf8() ); } -Result Group::cleanup() const +GroupConfig Group::config() const { Q_ASSERT( mGroup ); - OSyncError *error = 0; - if ( !osync_group_delete( mGroup, &error ) ) - return Result( &error ); - else - return Result(); + GroupConfig config; + config.mGroup = mGroup; + + return config; } |