kitchensync

groupenv.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 <opensync/opensync-group.h>
00024 
00025 #include "group.h"
00026 #include "result.h"
00027 
00028 #include "groupenv.h"
00029 
00030 using namespace QSync;
00031 
00032 GroupEnv::GroupEnv()
00033 {
00034   OSyncError *error = 0;
00035   mGroupEnv = osync_group_env_new( &error );
00036 }
00037 
00038 GroupEnv::~GroupEnv()
00039 {
00040   osync_group_env_free( mGroupEnv );
00041 }
00042 
00043 Result GroupEnv::initialize()
00044 {
00045   Q_ASSERT( mGroupEnv );
00046 
00047   OSyncError *error = 0;
00048   if ( !osync_group_env_load_groups( mGroupEnv, NULL, &error ) )
00049     return Result( &error );
00050   else
00051     return Result();
00052 }
00053 
00054 void GroupEnv::finalize()
00055 {
00056 }
00057 
00058 int GroupEnv::groupCount() const
00059 {
00060   Q_ASSERT( mGroupEnv );
00061 
00062   return osync_group_env_num_groups( mGroupEnv );
00063 }
00064 
00065 Group GroupEnv::groupAt( int pos ) const
00066 {
00067   Q_ASSERT( mGroupEnv );
00068 
00069   Group group;
00070 
00071   if ( pos < 0 || pos >= groupCount() )
00072     return group;
00073 
00074   OSyncGroup *ogroup = osync_group_env_nth_group( mGroupEnv, pos );
00075   group.mGroup = ogroup;
00076 
00077   return group;
00078 }
00079 
00080 Group GroupEnv::groupByName( const TQString &name ) const
00081 {
00082   Q_ASSERT( mGroupEnv );
00083 
00084   Group group;
00085 
00086   OSyncGroup *ogroup = osync_group_env_find_group( mGroupEnv, name.latin1() );
00087   if ( ogroup )
00088     group.mGroup = ogroup;
00089 
00090   return group;
00091 }
00092 
00093 Group GroupEnv::addGroup( const TQString &name )
00094 {
00095   Q_ASSERT( mGroupEnv );
00096 
00097   Group group;
00098   OSyncError *error = 0;
00099 
00100   OSyncGroup *ogroup = osync_group_new( &error );
00101   if ( ogroup )
00102     group.mGroup = ogroup;
00103 
00104   group.setName( name );
00105 
00106   if ( !osync_group_env_add_group( mGroupEnv, ogroup, &error ) ) {
00107     Result res( &error );
00108     qDebug( "Error on adding group: %s", res.message().latin1() );
00109   }
00110 
00111   return group;
00112 }
00113 
00114 void GroupEnv::removeGroup( const Group &group )
00115 {
00116   Q_ASSERT( mGroupEnv );
00117 
00118   group.cleanup();
00119 
00120   osync_group_env_remove_group( mGroupEnv, group.mGroup );
00121 }