Drop deprecated kitchensync code

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
pull/74/head
Michele Calgaro 2 years ago
parent 5629ca069b
commit 860c879989
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -197,9 +197,6 @@ option( BUILD_KMOBILE "Build kmobile" ${BUILD_ALL} )
option( BUILD_DOC "Build doc" ${BUILD_ALL} ) option( BUILD_DOC "Build doc" ${BUILD_ALL} )
option( BUILD_KONTACT "Build kontact" ${BUILD_ALL} ) option( BUILD_KONTACT "Build kontact" ${BUILD_ALL} )
# deprecated
option( BUILD_KITCHENSYNC "Build kitchensync" OFF )
##### configure checks ########################## ##### configure checks ##########################
@ -269,8 +266,6 @@ tde_conditional_add_subdirectory( BUILD_KMOBILE kmobile )
tde_conditional_add_subdirectory( BUILD_DOC doc ) tde_conditional_add_subdirectory( BUILD_DOC doc )
tde_conditional_add_subdirectory( BUILD_KONTACT kontact ) tde_conditional_add_subdirectory( BUILD_KONTACT kontact )
# deprecated
tde_conditional_add_subdirectory( BUILD_KITCHENSYNC kitchensync )
##### write configure files ##################### ##### write configure files #####################

@ -10,8 +10,6 @@ kdgantt Kalle Dalheimer <kalle@klaralvdalens-datakonsult.se>
tdefile-plugins ? tdefile-plugins ?
kgantt ? Jochen Hanff <jochen@ifb.bv.tu-berlin.de> kgantt ? Jochen Hanff <jochen@ifb.bv.tu-berlin.de>
tdeioslaves ? Marc Mutz <mutz@kde.org> tdeioslaves ? Marc Mutz <mutz@kde.org>
kitchensync Cornelius Schumacher <schumacher@kde.org>
Holger Freyther <freyther@kde.org>
kmail Ingo Kloecker <kloecker@kde.org> kmail Ingo Kloecker <kloecker@kde.org>
Don Sanders <sanders@kde.org> Don Sanders <sanders@kde.org>
kmailcvt Danny Kukawka <danny.kukawka@web.de> kmailcvt Danny Kukawka <danny.kukawka@web.de>

@ -34,9 +34,6 @@
* - <a href="kgantt/html/index.html"><b>kgantt</b></a> * - <a href="kgantt/html/index.html"><b>kgantt</b></a>
* (<a href="kgantt/html/classes.html">classes</a>)\n * (<a href="kgantt/html/classes.html">classes</a>)\n
* <i></i> * <i></i>
* - <a href="kitchensync/html/index.html"><b>kitchensync</b></a>
* (<a href="kitchensync/html/classes.html">classes</a>)\n
* <i>Generic Syncing.</i>
* - <a href="kmail/html/index.html"><b>kmail</b></a> * - <a href="kmail/html/index.html"><b>kmail</b></a>
* (<a href="kmail/html/classes.html">classes</a>)\n * (<a href="kmail/html/classes.html">classes</a>)\n
* <i>A fully-featured email client.</i> * <i>A fully-featured email client.</i>

@ -11,7 +11,7 @@
COMPILE_AFTER_libkmime = libemailfunctions COMPILE_AFTER_libkmime = libemailfunctions
COMPILE_AFTER_libemailfunctions = libkcal libkpimidentities kmail korganizer COMPILE_AFTER_libemailfunctions = libkcal libkpimidentities kmail korganizer
COMPILE_AFTER_libkholidays = korganizer kontact COMPILE_AFTER_libkholidays = korganizer kontact
COMPILE_AFTER_libkcal = kalarm kitchensync konsolekalendar korganizer libkpimexchange libtdepim karm knotes tderesources tdefile-plugins COMPILE_AFTER_libkcal = kalarm konsolekalendar korganizer libkpimexchange libtdepim karm knotes tderesources tdefile-plugins
COMPILE_AFTER_mimelib = korn kmail COMPILE_AFTER_mimelib = korn kmail
COMPILE_AFTER_libtdenetwork = kmail knode COMPILE_AFTER_libtdenetwork = kmail knode
COMPILE_AFTER_libksieve = kmail COMPILE_AFTER_libksieve = kmail
@ -34,7 +34,6 @@ COMPILE_BEFORE_kalarm = libtdepim libkmime
COMPILE_BEFORE_tderesources = libkpimexchange knotes kaddressbook kode COMPILE_BEFORE_tderesources = libkpimexchange knotes kaddressbook kode
COMPILE_BEFORE_wizards = libtdepim tderesources korganizer kaddressbook kmail COMPILE_BEFORE_wizards = libtdepim tderesources korganizer kaddressbook kmail
COMPILE_BEFORE_korn = libtdenetwork COMPILE_BEFORE_korn = libtdenetwork
COMPILE_BEFORE_kitchensync = libtdepim
COMPILE_BEFORE_akregator = libtdepim COMPILE_BEFORE_akregator = libtdepim
COMPILE_BEFORE_knotes = libtdepim COMPILE_BEFORE_knotes = libtdepim
COMPILE_BEFORE_konsolekalendar = libtdepim COMPILE_BEFORE_konsolekalendar = libtdepim

@ -31,7 +31,6 @@ What it is
* kalarmd: alarm monitoring daemon, shared by korganizer and kalarm. * kalarmd: alarm monitoring daemon, shared by korganizer and kalarm.
* kontact: Integrated PIM application * kontact: Integrated PIM application
* karm: Time tracker. * karm: Time tracker.
* kitchensync: Synchronization framework, still under heavy development.
* tdefile-plugins: vCard KFIleItem plugin. * tdefile-plugins: vCard KFIleItem plugin.
* knotes: yellow notes application * knotes: yellow notes application
* konsolecalendar: Command line tool for accessing calendar files. * konsolecalendar: Command line tool for accessing calendar files.

@ -59,11 +59,6 @@ KPilot:
TODO TODO
KitchenSync:
TODO
kalarmd: kalarmd:
TODO TODO

@ -26,7 +26,6 @@ digraph "inter-dependency graph for tdepim" {
"libkcal" -> "kalarm"; "libkcal" -> "kalarm";
"libkcal" -> "karm"; "libkcal" -> "karm";
"libkcal" -> "tdefile-plugins"; "libkcal" -> "tdefile-plugins";
"libkcal" -> "kitchensync";
"libkcal" -> "knotes"; "libkcal" -> "knotes";
"libkcal" -> "konsolekalendar"; "libkcal" -> "konsolekalendar";
"libkcal" -> "korganizer"; "libkcal" -> "korganizer";
@ -45,7 +44,6 @@ digraph "inter-dependency graph for tdepim" {
"libtdepim" -> "kandy"; "libtdepim" -> "kandy";
"libtdepim" -> "karm"; "libtdepim" -> "karm";
"libtdepim" -> "tdeioslaves"; "libtdepim" -> "tdeioslaves";
"libtdepim" -> "kitchensync";
"libtdepim" -> "kmail"; "libtdepim" -> "kmail";
"libtdepim" -> "knode"; "libtdepim" -> "knode";
"libtdepim" -> "knotes"; "libtdepim" -> "knotes";

@ -7,7 +7,6 @@
<!ENTITY % addindex "IGNORE"> <!ENTITY % addindex "IGNORE">
<!ENTITY % English "INCLUDE"> <!ENTITY % English "INCLUDE">
<!ENTITY akregator "<application>Akregator</application>"> <!ENTITY akregator "<application>Akregator</application>">
<!ENTITY kitchensync "<application>KitchenSync</application>">
]> ]>
<book id="kontact" lang="&language;"> <book id="kontact" lang="&language;">
@ -146,14 +145,6 @@ application.
</para> </para>
</sect1> </sect1>
<sect1 id="synchronization">
<title>&kitchensync;</title>
<para>
<ulink url="help:kitchensync">&kitchensync;</ulink>, the &kde; synchronization
application.
</para>
</sect1>
<sect1 id="feeds"> <sect1 id="feeds">
<title>&akregator;</title> <title>&akregator;</title>
<para> <para>

@ -1,3 +0,0 @@
##### create translation templates ##############
tde_l10n_auto_add_subdirectories( )

@ -1,23 +0,0 @@
#################################################
#
# (C) 2010-2011 Serghei Amelian
# serghei (DOT) amelian (AT) gmail.com
#
# Improvements and feedback are welcome
#
# This file is released under GPL >= 2
#
#################################################
message( AUTHOR_WARNING
" \n"
" ---------------------------------------------------------- \n"
" *** NOTE *** \n"
" Building kitchensync is deprecated and should not be done. \n"
" kitchensync will be dropped starting from R14.2.0. \n"
" Please contact the TDE development team on ML if you wish \n"
" kitchensync to be continued. \n"
" ---------------------------------------------------------- \n")
add_subdirectory( libqopensync )
add_subdirectory( src )

@ -1,3 +0,0 @@
SUBDIRS = libqopensync src
include $(top_srcdir)/admin/Doxyfile.am

@ -1,8 +0,0 @@
if test "$HAVE_OPENSYNC" = 0 -o "$HAVE_OPENSYNC_ENGINE" = 0; then
echo ""
echo "You're missing a compatible version of libopensync."
echo "Version 0.19 or greater is needed."
echo "kitchensync will not be built."
echo ""
all_tests=bad
fi

@ -1,68 +0,0 @@
dnl configure.in.in for OpenSync based KitchenSync
dnl
dnl Copyright (C) 2005 Holger Hans Peter Freyther
dnl
dnl Based on KPilot's configure.in
dnl Copyright (C) 2000,2001 Adriaan de Groot
dnl
dnl This file is released under the terms of the GNU General Public
dnl Licence (GPL) Version 2.
dnl we need PKG_CONFIG for doing these tests
AC_DEFUN([KITCHENSYNC_CHECK_OPENSYNC],[
dnl AC_REQUIRE([PKG_CHECK_MODULES])
dnl Say what we're doing
AC_MSG_CHECKING(for opensync (for KitchenSync))
AC_ARG_WITH(opensync,
[ --with-opensync=PATH set prefix for opensync files],
)dnl
dnl change pkg_config_path if we have a OpenSync prefix
dnl and also set it to our prefix
if test -d "$with_opensync"; then
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/lib/pkgconfig:$with_opensync/lib/pkgconfig
fi
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:$prefix/lib/pkgconfig:/usr/local/lib/pkgconfig
HAVE_OPENSYNC=0
HAVE_OPENSYNC_ENGINE=0
PKG_CHECK_MODULES(OPENSYNC, opensync-1.0 >= 0.19, HAVE_OPENSYNC=1,HAVE_OPENSYNC=0)
PKG_CHECK_MODULES(OPENSYNCENGINE, osengine-1.0 >= 0.19, HAVE_OPENSYNC_ENGINE=1, HAVE_OPENSYNC_ENGINE=0)
PKG_CHECK_MODULES(LIBXML, libxml-2.0, , HAVE_OPENSYNC=0)
PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.6, , HAVE_OPENSYNC=0)
if test -z "PKG_CONFIG"; then
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
fi
if test "$PKG_CONFIG" != "no"; then
OPENSYNC_CONFIGDIR=`$PKG_CONFIG --variable=configdir "opensync-1.0"`
OPENSYNC_PLUGINDIR=`$PKG_CONFIG --variable=plugindir "opensync-1.0"`
OPENSYNC_FORMATSDIR=`$PKG_CONFIG --variable=formatsdir "opensync-1.0"`
OPENSYNC_HEADERDIR=`$PKG_CONFIG --variable=headerdir "opensync-1.0"`
fi
AC_SUBST(OPENSYNC_CONFIGDIR)
AC_SUBST(OPENSYNC_PLUGINDIR)
AC_SUBST(OPENSYNC_FORMATSDIR)
AC_SUBST(OPENSYNC_HEADERDIR)
dnl Check if we can compile KitchenSync
AM_CONDITIONAL(compile_kitchensync, test "$HAVE_OPENSYNC" = 1 -a "$HAVE_OPENSYNC_ENGINE" = 1)
if test "$HAVE_OPENSYNC" = 1 -a "$HAVE_OPENSYNC_ENGINE" = 1 ; then
AC_MSG_RESULT([found])
else
AC_MSG_RESULT([not found])
DO_NOT_COMPILE="$DO_NOT_COMPILE kitchensync"
fi
])
dnl Check For OpenSync support
KITCHENSYNC_CHECK_OPENSYNC

@ -1,38 +0,0 @@
#################################################
#
# (C) 2010-2011 Serghei Amelian
# serghei (DOT) amelian (AT) gmail.com
#
# Improvements and feedback are welcome
#
# This file is released under GPL >= 2
#
#################################################
include( ConfigureChecks.cmake )
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/..
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
${OSENGINE_INCLUDE_DIRS}
${OPENSYNC_INCLUDE_DIRS}
)
link_directories(
${TQT_LIBRARY_DIRS}
)
##### qopensync (shared) ########################
tde_add_library( qopensync SHARED AUTOMOC
SOURCES
callbackhandler.cpp conversion.cpp engine.cpp environment.cpp
filter.cpp group.cpp member.cpp plugin.cpp result.cpp syncmapping.cpp
syncupdates.cpp syncchange.cpp
VERSION 0.0.0
LINK tdeui-shared ${OSENGINE_LIBRARIES} ${OPENSYNC_LIBRARIES}
DESTINATION ${LIB_INSTALL_DIR}
)

@ -1,22 +0,0 @@
#################################################
#
# (C) 2010-2011 Serghei Amelian
# serghei (DOT) amelian (AT) gmail.com
#
# Improvements and feedback are welcome
#
# This file is released under GPL >= 2
#
#################################################
# NOTE is needed libopensync-0.22
pkg_search_module( OPENSYNC opensync-1.0 )
if( NOT OPENSYNC_FOUND )
tde_message_fatal( "opensync-1.0 is requested, but was not found on your system" )
endif( )
pkg_search_module( OSENGINE osengine-1.0 )
if( NOT OSENGINE_FOUND )
tde_message_fatal( "osengine-1.0 is requested, but was not found on your system" )
endif( )

@ -1,19 +0,0 @@
INCLUDES = -I$(top_srcdir)/kitchensync/src \
-I$(top_srcdir)/kitchensync \
-I$(top_srcdir) \
$(OPENSYNC_CFLAGS) \
$(OPENSYNCENGINE_CFLAGS) \
$(all_includes)
lib_LTLIBRARIES = libqopensync.la
libqopensync_la_SOURCES = callbackhandler.cpp conversion.cpp engine.cpp environment.cpp filter.cpp group.cpp \
member.cpp plugin.cpp result.cpp syncmapping.cpp syncupdates.cpp \
syncchange.cpp
libqopensync_la_LDFLAGS = $(all_libraries) $(KDE_RPATH) -no-undefined
libqopensync_la_LIBADD = $(LIB_TDEUI) $(OPENSYNC_LIBS) $(OPENSYNCENGINE_LIBS)
METASOURCES = AUTO
messages: rc.cpp
$(XGETTEXT) *.cpp *.h -o $(podir)/libqopensync.pot

@ -1,191 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <osengine/engine.h>
#include <libqopensync/engine.h>
#include <tqapplication.h>
#include "callbackhandler.h"
using namespace QSync;
class CallbackHandler::ConflictEvent : public TQCustomEvent
{
public:
ConflictEvent( const SyncMapping& mapping )
: TQCustomEvent( ConflictEventType ), mMapping( mapping )
{
}
SyncMapping mapping() const { return mMapping; }
private:
SyncMapping mMapping;
};
class CallbackHandler::ChangeEvent : public TQCustomEvent
{
public:
ChangeEvent( const SyncChangeUpdate& change )
: TQCustomEvent( ChangeEventType ), mChange( change )
{
}
SyncChangeUpdate change() const { return mChange; }
private:
SyncChangeUpdate mChange;
};
class CallbackHandler::MappingEvent : public TQCustomEvent
{
public:
MappingEvent( const SyncMappingUpdate& mapping )
: TQCustomEvent( MappingEventType ), mMapping( mapping )
{
}
SyncMappingUpdate mapping() const { return mMapping; }
private:
SyncMappingUpdate mMapping;
};
class CallbackHandler::EngineEvent : public TQCustomEvent
{
public:
EngineEvent( const SyncEngineUpdate& engine )
: TQCustomEvent( EngineEventType ), mEngine( engine )
{
}
SyncEngineUpdate engine() const { return mEngine; }
private:
SyncEngineUpdate mEngine;
};
class CallbackHandler::MemberEvent : public TQCustomEvent
{
public:
MemberEvent( const SyncMemberUpdate& member )
: TQCustomEvent( MemberEventType ), mMember( member )
{
}
SyncMemberUpdate member() const { return mMember; }
private:
SyncMemberUpdate mMember;
};
CallbackHandler::CallbackHandler()
{
}
CallbackHandler::~CallbackHandler()
{
}
void CallbackHandler::setEngine( Engine *engine )
{
mEngine = engine;
osengine_set_conflict_callback( engine->mEngine, &conflict_callback, this );
osengine_set_changestatus_callback( engine->mEngine, &change_callback, this );
osengine_set_mappingstatus_callback( engine->mEngine, &mapping_callback, this );
osengine_set_enginestatus_callback( engine->mEngine, &engine_callback, this );
osengine_set_memberstatus_callback( engine->mEngine, &member_callback, this );
}
Engine* CallbackHandler::engine() const
{
return mEngine;
}
void CallbackHandler::customEvent( TQCustomEvent *event )
{
if ( event->type() == static_cast<TQEvent::Type>( ConflictEventType ) ) {
ConflictEvent *conflictEvent = static_cast<ConflictEvent*>( event );
emit conflict( conflictEvent->mapping() );
} else if ( event->type() == static_cast<TQEvent::Type>( ChangeEventType ) ) {
ChangeEvent *changeEvent = static_cast<ChangeEvent*>( event );
emit change( changeEvent->change() );
} else if ( event->type() == static_cast<TQEvent::Type>( MappingEventType ) ) {
MappingEvent *mappingEvent = static_cast<MappingEvent*>( event );
emit mapping( mappingEvent->mapping() );
} else if ( event->type() == static_cast<TQEvent::Type>( EngineEventType ) ) {
EngineEvent *engineEvent = static_cast<EngineEvent*>( event );
emit engine( engineEvent->engine() );
} else if ( event->type() == static_cast<TQEvent::Type>( MemberEventType ) ) {
MemberEvent *memberEvent = static_cast<MemberEvent*>( event );
emit member( memberEvent->member() );
}
}
void CallbackHandler::conflict_callback( OSyncEngine *engine, OSyncMapping *omapping, void *data )
{
SyncMapping mapping( omapping, engine );
CallbackHandler *handler = static_cast<CallbackHandler*>( data );
TQApplication::postEvent( handler, new ConflictEvent( mapping ) );
}
void CallbackHandler::change_callback( OSyncEngine*, OSyncChangeUpdate *update, void *data )
{
SyncChangeUpdate change( update );
CallbackHandler *handler = static_cast<CallbackHandler*>( data );
TQApplication::postEvent( handler, new ChangeEvent( change ) );
}
void CallbackHandler::mapping_callback( OSyncMappingUpdate *update, void *data )
{
CallbackHandler *handler = static_cast<CallbackHandler*>( data );
SyncMappingUpdate mapping( update, handler->engine()->mEngine );
TQApplication::postEvent( handler, new MappingEvent( mapping ) );
}
void CallbackHandler::engine_callback( OSyncEngine*, OSyncEngineUpdate *update, void *data )
{
SyncEngineUpdate engine( update );
CallbackHandler *handler = static_cast<CallbackHandler*>( data );
TQApplication::postEvent( handler, new EngineEvent( engine ) );
}
void CallbackHandler::member_callback( OSyncMemberUpdate *update, void *data )
{
SyncMemberUpdate member( update );
CallbackHandler *handler = static_cast<CallbackHandler*>( data );
TQApplication::postEvent( handler, new MemberEvent( member ) );
}
#include "callbackhandler.moc"

@ -1,91 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_CALLBACKHANDLER_H
#define TQSYNC_CALLBACKHANDLER_H
#include <libqopensync/syncmapping.h>
#include <libqopensync/syncupdates.h>
#include <tqobject.h>
class OSyncEngine;
class OSyncMapping;
class OSyncChangeUpdate;
class OSyncMappingUpdate;
class OSyncEngineUpdate;
class OSyncMemberUpdate;
class TQCustomEvent;
namespace QSync {
class Engine;
class CallbackHandler : public TQObject
{
Q_OBJECT
public:
CallbackHandler();
~CallbackHandler();
void setEngine( Engine *engine );
Engine* engine() const;
signals:
void conflict( QSync::SyncMapping mapping );
void change( const QSync::SyncChangeUpdate &update );
void mapping( const QSync::SyncMappingUpdate &update );
void engine( const QSync::SyncEngineUpdate &update );
void member( const QSync::SyncMemberUpdate &update );
protected:
virtual void customEvent( TQCustomEvent *event );
private:
enum EventType {
ConflictEventType = 4044,
ChangeEventType,
MappingEventType,
EngineEventType,
MemberEventType
};
class ConflictEvent;
class ChangeEvent;
class MappingEvent;
class EngineEvent;
class MemberEvent;
static void conflict_callback( OSyncEngine*, OSyncMapping*, void* );
static void change_callback( OSyncEngine*, OSyncChangeUpdate*, void* );
static void mapping_callback( OSyncMappingUpdate*, void* );
static void engine_callback( OSyncEngine*, OSyncEngineUpdate*, void* );
static void member_callback( OSyncMemberUpdate*, void* );
Engine* mEngine;
};
}
#endif

@ -1,58 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2006 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <opensync/opensync.h>
#include "conversion.h"
using namespace QSync;
Conversion::Conversion()
: mEnvironment( 0 )
{
}
Conversion::~Conversion()
{
}
bool Conversion::isValid() const
{
return mEnvironment != 0;
}
TQStringList Conversion::objectTypes() const
{
Q_ASSERT( mEnvironment );
OSyncFormatEnv *formatEnv = osync_conv_env_new( mEnvironment );
Q_ASSERT( formatEnv );
TQStringList types;
for ( int i = 0; i < osync_conv_num_objtypes( formatEnv ); i++ ) {
OSyncObjType *type = osync_conv_nth_objtype( formatEnv, i );
types.append( TQString::fromUtf8( osync_objtype_get_name( type ) ) );
}
osync_conv_env_free( formatEnv );
return types;
}

@ -1,56 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2006 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_CONVERSION_H
#define TQSYNC_CONVERSION_H
#include <tqstringlist.h>
class OSyncEnv;
namespace QSync {
class Conversion
{
friend class Environment;
public:
Conversion();
~Conversion();
/**
Returns whether the object is a valid conversion.
*/
bool isValid() const;
/**
Returns the list of names of supported object types.
*/
TQStringList objectTypes() const;
private:
OSyncEnv *mEnvironment;
};
}
#endif

@ -1,67 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <opensync/opensync.h>
#include <osengine/engine.h>
#include "engine.h"
using namespace QSync;
Engine::Engine( const Group &group )
{
OSyncError *error = 0;
mEngine = osengine_new( group.mGroup, &error );
}
Engine::~Engine()
{
osengine_free( mEngine );
mEngine = 0;
}
Result Engine::initialize()
{
OSyncError *error = 0;
if ( !osengine_init( mEngine, &error ) )
return Result( &error );
else
return Result();
}
void Engine::finalize()
{
osengine_finalize( mEngine );
}
Result Engine::synchronize()
{
OSyncError *error = 0;
if ( !osengine_synchronize( mEngine, &error ) )
return Result( &error );
else
return Result();
}
void Engine::abort()
{
osengine_abort( mEngine );
}

@ -1,72 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_ENGINE_H
#define TQSYNC_ENGINE_H
#include <libqopensync/group.h>
class OSyncEngine;
namespace QSync {
class Engine
{
friend class CallbackHandler;
public:
/**
Constructs an engine .
*/
Engine( const Group &group );
/**
Destroys the engine.
*/
~Engine();
/**
Initializes the engine.
*/
Result initialize();
/**
Finalizes the engine.
*/
void finalize();
/**
Starts the synchronization process.
*/
Result synchronize();
/**
Stops the synchronization process.
*/
void abort();
private:
OSyncEngine *mEngine;
};
}
#endif

@ -1,172 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "environment.h"
#include <opensync/opensync.h>
using namespace QSync;
Environment::Environment()
{
mEnvironment = osync_env_new();
}
Environment::~Environment()
{
osync_env_free( mEnvironment );
}
Environment::GroupIterator Environment::groupBegin()
{
GroupIterator it( this );
it.mPos = 0;
return it;
}
Environment::GroupIterator Environment::groupEnd()
{
GroupIterator it( this );
it.mPos = groupCount();
return it;
}
Environment::PluginIterator Environment::pluginBegin()
{
PluginIterator it( this );
it.mPos = 0;
return it;
}
Environment::PluginIterator Environment::pluginEnd()
{
PluginIterator it( this );
it.mPos = pluginCount();
return it;
}
Result Environment::initialize()
{
OSyncError *error = 0;
if ( !osync_env_initialize( mEnvironment, &error ) )
return Result( &error );
else
return Result();
}
Result Environment::finalize()
{
OSyncError *error = 0;
if ( !osync_env_finalize( mEnvironment, &error ) )
return Result( &error);
else
return Result();
}
int Environment::groupCount() const
{
return osync_env_num_groups( mEnvironment );
}
Group Environment::groupAt( int pos ) const
{
Group group;
if ( pos < 0 || pos >= groupCount() )
return group;
OSyncGroup *ogroup = osync_env_nth_group( mEnvironment, pos );
group.mGroup = ogroup;
return group;
}
Group Environment::groupByName( const TQString &name ) const
{
Group group;
OSyncGroup *ogroup = osync_env_find_group( mEnvironment, name.latin1() );
if ( ogroup )
group.mGroup = ogroup;
return group;
}
Group Environment::addGroup()
{
Group group;
OSyncGroup *ogroup = osync_group_new( mEnvironment );
if ( ogroup )
group.mGroup = ogroup;
return group;
}
Result Environment::removeGroup( const Group &group )
{
OSyncError *error = 0;
if ( !osync_group_delete( group.mGroup, &error ) )
return Result( &error );
else
return Result();
}
int Environment::pluginCount() const
{
return osync_env_num_plugins( mEnvironment );
}
Plugin Environment::pluginAt( int pos ) const
{
Plugin plugin;
if ( pos < 0 || pos >= pluginCount() )
return plugin;
OSyncPlugin *oplugin = osync_env_nth_plugin( mEnvironment, pos );
plugin.mPlugin = oplugin;
return plugin;
}
Plugin Environment::pluginByName( const TQString &name ) const
{
Plugin plugin;
OSyncPlugin *oplugin = osync_env_find_plugin( mEnvironment, name.latin1() );
if ( oplugin )
plugin.mPlugin = oplugin;
return plugin;
}
Conversion Environment::conversion() const
{
Conversion conversion;
conversion.mEnvironment = mEnvironment;
return conversion;
}

@ -1,199 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef OSYNC_ENVIRONMENT_H
#define OSYNC_ENVIRONMENT_H
#include <tqstring.h>
#include <libqopensync/group.h>
#include <libqopensync/plugin.h>
#include <libqopensync/result.h>
#include <libqopensync/conversion.h>
struct OSyncEnv;
namespace QSync {
class Environment
{
public:
Environment();
~Environment();
class GroupIterator
{
friend class Environment;
public:
GroupIterator( Environment *environment )
: mEnvironment( environment ), mPos( -1 )
{
}
GroupIterator( const GroupIterator &it )
{
mEnvironment = it.mEnvironment;
mPos = it.mPos;
}
Group operator*()
{
return mEnvironment->groupAt( mPos );
}
GroupIterator &operator++() { mPos++; return *this; }
GroupIterator &operator++( int ) { mPos++; return *this; }
GroupIterator &operator--() { mPos--; return *this; }
GroupIterator &operator--( int ) { mPos--; return *this; }
bool operator==( const GroupIterator &it ) { return mEnvironment == it.mEnvironment && mPos == it.mPos; }
bool operator!=( const GroupIterator &it ) { return mEnvironment == it.mEnvironment && mPos != it.mPos; }
private:
Environment *mEnvironment;
int mPos;
};
class PluginIterator
{
friend class Environment;
public:
PluginIterator( Environment *environment )
: mEnvironment( environment ), mPos( -1 )
{
}
PluginIterator( const PluginIterator &it )
{
mEnvironment = it.mEnvironment;
mPos = it.mPos;
}
Plugin operator*()
{
return mEnvironment->pluginAt( mPos );
}
PluginIterator &operator++() { mPos++; return *this; }
PluginIterator &operator++( int ) { mPos++; return *this; }
PluginIterator &operator--() { mPos--; return *this; }
PluginIterator &operator--( int ) { mPos--; return *this; }
bool operator==( const PluginIterator &it ) { return mEnvironment == it.mEnvironment && mPos == it.mPos; }
bool operator!=( const PluginIterator &it ) { return mEnvironment == it.mEnvironment && mPos != it.mPos; }
private:
Environment *mEnvironment;
int mPos;
};
/**
Returns an iterator pointing to the first item in the group list.
This iterator equals groupEnd() if the group list is empty.
*/
GroupIterator groupBegin();
/**
Returns an iterator pointing past the last item in the group list.
This iterator equals groupBegin() if the group list is empty.
*/
GroupIterator groupEnd();
/**
Returns an iterator pointing to the first item in the plugin list.
This iterator equals pluginEnd() if the group list is empty.
*/
PluginIterator pluginBegin();
/**
Returns an iterator pointing past the last item in the plugin list.
This iterator equals pluginBegin() if the plugin list is empty.
*/
PluginIterator pluginEnd();
/**
Initializes the environment ( e.g. loads the groups and plugins ).
Has to be called before the groups or plugins can be accessed.
*/
Result initialize();
/**
Finalizes the environment ( e.g. unloads the groups and plugins ).
Should be the last call before the object is deleted.
*/
Result finalize();
/**
Returns the number of groups.
*/
int groupCount() const;
/**
Returns the group at position @param pos.
*/
Group groupAt( int pos ) const;
/**
Returns a group by name or an invalid group when the group with this
name doesn't exists.
*/
Group groupByName( const TQString &name ) const;
/**
Adds a new group to the environment.
@returns the new group.
*/
Group addGroup();
/**
Removes a group from the environment.
*/
Result removeGroup( const Group &group );
/**
Returns the number of plugins.
*/
int pluginCount() const;
/**
Returns the plugin at position @param pos.
*/
Plugin pluginAt( int pos ) const;
/**
Returns a plugin by name or an invalid plugin when the plugin with this
name doesn't exists.
*/
Plugin pluginByName( const TQString &name ) const;
/**
Returns the conversion object of this environment.
*/
Conversion conversion() const;
private:
OSyncEnv *mEnvironment;
};
}
#endif

@ -1,55 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <opensync/opensync.h>
#include "filter.h"
using namespace QSync;
Filter::Filter()
: mFilter( 0 )
{
}
Filter::~Filter()
{
}
bool Filter::isValid() const
{
return (mFilter != 0);
}
void Filter::setConfiguration( const TQString &configuration )
{
Q_ASSERT( mFilter );
osync_filter_set_config( mFilter, (const char*)configuration.utf8() );
}
TQString Filter::configuration() const
{
Q_ASSERT( mFilter );
return TQString::fromUtf8( osync_filter_get_config( mFilter ) );
}

@ -1,64 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_FILTER_H
#define TQSYNC_FILTER_H
#include <tqstring.h>
class OSyncFilter;
namespace QSync {
class Filter
{
friend class Group;
public:
Filter();
~Filter();
/**
Returns whether the object is a valid filter.
*/
bool isValid() const;
/**
Sets the configuration string of this filter. The format of
string is filter specific.
*/
void setConfiguration( const TQString &configuration );
/**
Returns the configuration string of this filter.
*/
TQString configuration() const;
bool operator==( const Filter &filter ) const { return mFilter == filter.mFilter; }
private:
OSyncFilter *mFilter;
};
}
#endif

@ -1,292 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
/** hack includes **/
#include <tqdom.h>
#include <tqfile.h>
/** hack includes **/
#include <opensync/opensync.h>
#include "conversion.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 ) ) {
tqDebug( "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 )
{
}
Group::~Group()
{
}
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 );
osync_group_set_name( mGroup, name.latin1() );
}
TQString Group::name() const
{
Q_ASSERT( mGroup );
return TQString::fromLatin1( osync_group_get_name( mGroup ) );
}
void Group::setLastSynchronization( const TQDateTime &dateTime )
{
Q_ASSERT( mGroup );
if ( dateTime.isValid() )
osync_group_set_last_synchronization( mGroup, dateTime.toTime_t() );
}
TQDateTime Group::lastSynchronization() const
{
Q_ASSERT( mGroup );
TQDateTime dateTime;
time_t time = osync_group_get_last_synchronization( mGroup );
if ( time != 0 )
dateTime.setTime_t( time );
return dateTime;
}
Group::LockType Group::lock()
{
Q_ASSERT( mGroup );
OSyncLockState state = osync_group_lock( mGroup );
switch ( state ) {
default:
case OSYNC_LOCK_OK:
return LockOk;
break;
case OSYNC_LOCKED:
return Locked;
break;
case OSYNC_LOCK_STALE:
return LockStale;
break;
}
}
void Group::unlock( bool removeFile )
{
Q_ASSERT( mGroup );
osync_group_unlock( mGroup, removeFile );
}
Member Group::addMember()
{
Q_ASSERT( mGroup );
OSyncMember *omember = osync_member_new( mGroup );
Member member;
member.mMember = omember;
save();
return member;
}
void Group::removeMember( const Member &member )
{
Q_ASSERT( mGroup );
osync_group_remove_member( mGroup, member.mMember );
}
int Group::memberCount() const
{
Q_ASSERT( mGroup );
return osync_group_num_members( mGroup );
}
Member Group::memberAt( int pos ) const
{
Q_ASSERT( mGroup );
Member member;
if ( pos < 0 || pos >= memberCount() )
return member;
member.mMember = osync_group_nth_member( mGroup, pos );
return member;
}
int Group::filterCount() const
{
Q_ASSERT( mGroup );
return osync_group_num_filters( mGroup );
}
Filter Group::filterAt( int pos )
{
Q_ASSERT( mGroup );
Filter filter;
if ( pos < 0 || pos >= filterCount() )
return filter;
filter.mFilter = osync_group_nth_filter( mGroup, pos );
return filter;
}
Result Group::save()
{
Q_ASSERT( mGroup );
OSyncError *error = 0;
if ( !osync_group_save( mGroup, &error ) )
return Result( &error );
else
return Result();
}
void Group::setObjectTypeEnabled( const TQString &objectType, bool enabled )
{
Q_ASSERT( mGroup );
osync_group_set_objtype_enabled( mGroup, objectType.utf8(), enabled );
}
bool Group::isObjectTypeEnabled( const TQString &objectType ) const
{
return osync_group_objtype_enabled( mGroup, objectType.utf8() );
}
GroupConfig Group::config() const
{
Q_ASSERT( mGroup );
GroupConfig config;
config.mGroup = mGroup;
return config;
}

@ -1,217 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_GROUP_H
#define TQSYNC_GROUP_H
#include <tqdatetime.h>
#include <tqstringlist.h>
#include <libqopensync/filter.h>
#include <libqopensync/member.h>
class OSyncGroup;
namespace QSync {
/**
@internal
*/
class GroupConfig
{
friend class Group;
public:
GroupConfig();
TQStringList activeObjectTypes() const;
void setActiveObjectTypes( const TQStringList &objectTypes );
private:
OSyncGroup *mGroup;
};
class Group
{
friend class Engine;
friend class Environment;
public:
enum LockType
{
LockOk,
Locked,
LockStale
};
Group();
~Group();
/**
Returns whether the object is a valid group.
*/
bool isValid() const;
class Iterator
{
friend class Group;
public:
Iterator( Group *group )
: mGroup( group ), mPos( -1 )
{
}
Iterator( const Iterator &it )
{
mGroup = it.mGroup;
mPos = it.mPos;
}
Member operator*()
{
return mGroup->memberAt( mPos );
}
Iterator &operator++() { mPos++; return *this; }
Iterator &operator++( int ) { mPos++; return *this; }
Iterator &operator--() { mPos--; return *this; }
Iterator &operator--( int ) { mPos--; return *this; }
bool operator==( const Iterator &it ) { return mGroup == it.mGroup && mPos == it.mPos; }
bool operator!=( const Iterator &it ) { return mGroup == it.mGroup && mPos != it.mPos; }
private:
Group *mGroup;
int mPos;
};
/**
Returns an iterator pointing to the first item in the member list.
This iterator equals end() if the member list is empty.
*/
Iterator begin();
/**
Returns an iterator pointing past the last item in the member list.
This iterator equals begin() if the member list is empty.
*/
Iterator end();
/**
Sets the name of the group.
*/
void setName( const TQString &name );
/**
Returns the name of the group.
*/
TQString name() const;
/**
Sets the time of the last successfull synchronization.
*/
void setLastSynchronization( const TQDateTime &dateTime );
/**
Returns the time of the last successfull synchronization.
*/
TQDateTime lastSynchronization() const;
/**
Locks the group.
@returns The the result of the locking request.
*/
LockType lock();
/**
Unlocks the group.
@param removeFile Whether the lock file shall be removed.
*/
void unlock( bool removeFile = true );
/**
Adds a new member to the group.
@returns the new member.
*/
Member addMember();
/**
Removes a member from the group.
*/
void removeMember( const Member &member );
/**
Returns the number of members.
*/
int memberCount() const;
/**
Returns the member at position @param pos.
*/
Member memberAt( int pos ) const;
/**
Returns the number of filters.
*/
int filterCount() const;
/**
Returns the filter at position @param pos.
*/
Filter filterAt( int pos );
/**
Set, if the object type with given name is enabled for synchronisation for
this group.
*/
void setObjectTypeEnabled( const TQString &objectType, bool enabled );
/**
Returns whether the object type with given name is enabled for synchronisation for
this group.
*/
bool isObjectTypeEnabled( const TQString &objectType ) const;
/**
Saves the configuration to hard disc.
*/
Result save();
/**
Returns the config object of this group.
Note: This method is only available for OpenSync 0.19 and 0.20.
*/
GroupConfig config() const;
bool operator==( const Group &group ) const { return mGroup == group.mGroup; }
private:
OSyncGroup *mGroup;
};
}
#endif

@ -1,121 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <opensync/opensync.h>
#include <opensync/opensync-group.h>
#include "group.h"
#include "result.h"
#include "groupenv.h"
using namespace QSync;
GroupEnv::GroupEnv()
{
OSyncError *error = 0;
mGroupEnv = osync_group_env_new( &error );
}
GroupEnv::~GroupEnv()
{
osync_group_env_free( mGroupEnv );
}
Result GroupEnv::initialize()
{
Q_ASSERT( mGroupEnv );
OSyncError *error = 0;
if ( !osync_group_env_load_groups( mGroupEnv, NULL, &error ) )
return Result( &error );
else
return Result();
}
void GroupEnv::finalize()
{
}
int GroupEnv::groupCount() const
{
Q_ASSERT( mGroupEnv );
return osync_group_env_num_groups( mGroupEnv );
}
Group GroupEnv::groupAt( int pos ) const
{
Q_ASSERT( mGroupEnv );
Group group;
if ( pos < 0 || pos >= groupCount() )
return group;
OSyncGroup *ogroup = osync_group_env_nth_group( mGroupEnv, pos );
group.mGroup = ogroup;
return group;
}
Group GroupEnv::groupByName( const TQString &name ) const
{
Q_ASSERT( mGroupEnv );
Group group;
OSyncGroup *ogroup = osync_group_env_find_group( mGroupEnv, name.latin1() );
if ( ogroup )
group.mGroup = ogroup;
return group;
}
Group GroupEnv::addGroup( const TQString &name )
{
Q_ASSERT( mGroupEnv );
Group group;
OSyncError *error = 0;
OSyncGroup *ogroup = osync_group_new( &error );
if ( ogroup )
group.mGroup = ogroup;
group.setName( name );
if ( !osync_group_env_add_group( mGroupEnv, ogroup, &error ) ) {
Result res( &error );
tqDebug( "Error on adding group: %s", res.message().latin1() );
}
return group;
}
void GroupEnv::removeGroup( const Group &group )
{
Q_ASSERT( mGroupEnv );
group.cleanup();
osync_group_env_remove_group( mGroupEnv, group.mGroup );
}

@ -1,86 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef OSYNC_GROUPENV_H
#define OSYNC_GROUPENV_H
#include <tqstring.h>
struct OSyncGroupEnv;
namespace QSync {
class Group;
class Result;
class GroupEnv
{
public:
GroupEnv();
~GroupEnv();
/**
Initializes the environment ( e.g. loads the groups and plugins ).
Has to be called before the groups or plugins can be accessed.
*/
Result initialize();
/**
Finalizes the environment ( e.g. unloads the groups and plugins ).
Should be the last call before the object is deleted.
*/
void finalize();
/**
Returns the number of groups.
*/
int groupCount() const;
/**
Returns the group at position @param pos.
*/
Group groupAt( int pos ) const;
/**
Returns a group by name or an invalid group when the group with this
name doesn't exists.
*/
Group groupByName( const TQString &name ) const;
/**
Adds a new group to the environment.
@returns the new group.
*/
Group addGroup( const TQString &name );
/**
Removes a group from the environment.
*/
void removeGroup( const Group &group );
private:
OSyncGroupEnv *mGroupEnv;
};
}
#endif

@ -1,188 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <opensync/opensync.h>
#include <stdlib.h>
#include "member.h"
using namespace QSync;
Member::Member()
: mMember( 0 )
{
}
Member::~Member()
{
}
bool Member::isValid() const
{
OSyncError *error = 0;
if ( !mMember )
return false;
if ( !osync_member_instance_plugin( mMember, pluginName().utf8(), &error ) ) {
tqDebug( "Plugin %s is not valid: %s", pluginName().latin1(), osync_error_print( &error ) );
osync_error_free( &error );
return false;
}
return true;
}
TQString Member::configurationDirectory() const
{
Q_ASSERT( mMember );
return TQString::fromLatin1( osync_member_get_configdir( mMember ) );
}
TQString Member::pluginName() const
{
Q_ASSERT( mMember );
return TQString::fromLatin1( osync_member_get_pluginname( mMember ) );
}
Plugin Member::plugin() const
{
Q_ASSERT( mMember );
Plugin plugin;
OSyncPlugin *oplugin = osync_member_get_plugin( mMember );
if ( oplugin )
plugin.mPlugin = oplugin;
return plugin;
}
int Member::id() const
{
Q_ASSERT( mMember );
return osync_member_get_id( mMember );
}
void Member::setName( const TQString &name )
{
Q_ASSERT( mMember );
osync_member_set_name( mMember, (const char*)name.utf8() );
}
TQString Member::name() const
{
Q_ASSERT( mMember );
return TQString::fromUtf8( osync_member_get_name( mMember ) );
}
void Member::setConfiguration( const TQByteArray &configurationData )
{
Q_ASSERT( mMember );
osync_member_set_config( mMember, configurationData.data(), configurationData.size() );
}
Result Member::configuration( TQByteArray &configurationData, bool useDefault )
{
Q_ASSERT( mMember );
char *data;
int size;
OSyncError *error = 0;
osync_bool ok = false;
if ( useDefault )
ok = osync_member_get_config_or_default( mMember, &data, &size, &error );
else
ok = osync_member_get_config( mMember, &data, &size, &error );
if ( !ok ) {
return Result( &error );
} else {
configurationData.resize( size );
memcpy( configurationData.data(), data, size );
return Result();
}
}
Result Member::save()
{
Q_ASSERT( mMember );
OSyncError *error = 0;
if ( !osync_member_save( mMember, &error ) )
return Result( &error );
else
return Result();
}
Result Member::instance( const Plugin &plugin )
{
OSyncError *error = 0;
if ( !osync_member_instance_plugin( mMember, plugin.name().utf8(), &error ) )
return Result( &error );
else
return Result();
}
bool Member::operator==( const Member &member ) const
{
return mMember == member.mMember;
}
TQString Member::scanDevices( const TQString &query )
{
Q_ASSERT( mMember );
OSyncError *error = 0;
char *data = (char*)osync_member_call_plugin( mMember, "scan_devices", const_cast<char*>( query.utf8().data() ), &error );
if ( error != 0 ) {
osync_error_free( &error );
return TQString();
} else {
TQString xml = TQString::fromUtf8( data );
free( data );
return xml;
}
}
bool Member::testConnection( const TQString &configuration )
{
Q_ASSERT( mMember );
OSyncError *error = 0;
int *result = (int*)osync_member_call_plugin( mMember, "test_connection", const_cast<char*>( configuration.utf8().data() ), &error );
if ( error != 0 ) {
osync_error_free( &error );
return false;
} else {
bool value = ( *result == 1 ? true : false );
free( result );
return value;
}
}

@ -1,129 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_MEMBER_H
#define TQSYNC_MEMBER_H
#include <libqopensync/plugin.h>
#include <libqopensync/result.h>
#include <libqopensync/plugin.h>
class OSyncMember;
namespace QSync {
class Member
{
friend class Group;
friend class SyncChange;
friend class SyncMemberUpdate;
public:
Member();
~Member();
/**
Returns whether the member object is valid.
*/
bool isValid() const;
/**
Returns the configuration directory.
*/
TQString configurationDirectory() const;
/**
Returns the name of the plugin, the member belongs to.
*/
TQString pluginName() const;
/**
Returns the plugin, the member belongs to.
*/
Plugin plugin() const;
/**
Returns the id of the plugin.
*/
int id() const;
/**
Sets the name of this member.
*/
void setName( const TQString &name );
/**
Returns the name of this member.
*/
TQString name() const;
/**
Sets the configuration data as byte array. The developer has to decide the
type of the data ( e.g. xml, plain text, binary ).
*/
void setConfiguration( const TQByteArray &configurationData );
/**
Gets the configuration data as byte array. The developer has to decide the
type of the data ( e.g. xml, plain text, binary ).
@param useDefault If set to true, return default config, if no config
exists. If set to false, return error when no config
exists.
@returns The result of this operation.
*/
Result configuration( TQByteArray &configurationData,
bool useDefault = true );
/**
Saves the changes to the configuration to hard disc.
*/
Result save();
/**
Make this member an instance of the given plugin.
*/
Result instance( const Plugin & );
bool operator==( const Member& ) const;
/**
This method can be used to query the plugin for scanning devices.
The @param query is a plugin specific xml document as well as
the return value.
*/
TQString scanDevices( const TQString &query );
/**
This method can be used to test whether the plugin can connect
to the device with the given configuration.
*/
bool testConnection( const TQString &configuration );
private:
OSyncMember *mMember;
};
}
#endif

@ -1,62 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <opensync/opensync.h>
#include "plugin.h"
using namespace QSync;
Plugin::Plugin()
: mPlugin( 0 )
{
}
Plugin::~Plugin()
{
}
bool Plugin::isValid() const
{
return ( mPlugin != 0 );
}
TQString Plugin::name() const
{
Q_ASSERT( mPlugin );
return TQString::fromLatin1( osync_plugin_get_name( mPlugin ) );
}
TQString Plugin::longName() const
{
Q_ASSERT( mPlugin );
return TQString::fromLatin1( osync_plugin_get_longname( mPlugin ) );
}
TQString Plugin::description() const
{
Q_ASSERT( mPlugin );
return TQString::fromLatin1( osync_plugin_get_description( mPlugin ) );
}

@ -1,67 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_PLUGIN_H
#define TQSYNC_PLUGIN_H
#include <tqstring.h>
class OSyncPlugin;
namespace QSync {
class Plugin
{
friend class Environment;
friend class Member;
public:
Plugin();
~Plugin();
/**
Returns whether the object is a valid plugin.
*/
bool isValid() const;
/**
Returns the name of the plugin.
*/
TQString name() const;
/**
Returns the long name of the plugin.
*/
TQString longName() const;
/**
Returns the description of the plugin.
*/
TQString description() const;
private:
OSyncPlugin *mPlugin;
};
}
#endif

@ -1,96 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
Copyright (c) 2007 Daniel Gollub <dgollub@suse.de>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <opensync/opensync.h>
#include <opensync/opensync-plugin.h>
#include "plugin.h"
#include "result.h"
#include "pluginenv.h"
using namespace QSync;
PluginEnv::PluginEnv()
{
OSyncError *error = 0;
mPluginEnv = osync_plugin_env_new( &error );
}
PluginEnv::~PluginEnv()
{
osync_plugin_env_free( mPluginEnv );
}
Result PluginEnv::initialize()
{
OSyncError *error = 0;
if ( !osync_plugin_env_load( mPluginEnv, NULL, &error ) )
return Result( &error );
else
return Result();
}
Result PluginEnv::finalize()
{
osync_plugin_env_free( mPluginEnv );
return Result();
}
int PluginEnv::pluginCount() const
{
return osync_plugin_env_num_plugins( mPluginEnv );
}
Plugin PluginEnv::pluginAt( int pos ) const
{
Plugin plugin;
if ( pos < 0 || pos >= pluginCount() )
return plugin;
OSyncPlugin *oplugin = osync_plugin_env_nth_plugin( mPluginEnv, pos );
plugin.mPlugin = oplugin;
return plugin;
}
Plugin PluginEnv::pluginByName( const TQString &name ) const
{
Plugin plugin;
OSyncPlugin *oplugin = osync_plugin_env_find_plugin( mPluginEnv, name.latin1() );
if ( oplugin )
plugin.mPlugin = oplugin;
return plugin;
}
/*
Conversion PluginEnv::conversion() const
{
Conversion conversion;
conversion.mPluginEnv = mPluginEnv;
return conversion;
}
*/

@ -1,80 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
Copyright (c) 2007 Daniel Gollub <dgollub@suse.de>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef OSYNC_PLUGINENV_H
#define OSYNC_PLUGINENV_H
#include <tqstring.h>
struct OSyncPluginEnv;
namespace QSync {
class Plugin;
class Result;
class PluginEnv
{
public:
PluginEnv();
~PluginEnv();
/**
Initializes the environment ( e.g. loads the groups and plugins ).
Has to be called before the groups or plugins can be accessed.
*/
Result initialize();
/**
Finalizes the environment ( e.g. unloads the groups and plugins ).
Should be the last call before the object is deleted.
*/
Result finalize();
/**
Returns the number of plugins.
*/
int pluginCount() const;
/**
Returns the plugin at position @param pos.
*/
Plugin pluginAt( int pos ) const;
/**
Returns a plugin by name or an invalid plugin when the plugin with this
name doesn't exists.
*/
Plugin pluginByName( const TQString &name ) const;
/**
Returns the conversion object of this environment.
*/
// Conversion conversion() const;
private:
OSyncPluginEnv *mPluginEnv;
};
}
#endif

@ -1,149 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "result.h"
#include <opensync/opensync.h>
using namespace QSync;
Result::Result()
: mType( NoError )
{
}
Result::Result( Type type )
: mType( type )
{
}
Result::Result( OSyncError **error, bool deleteError )
{
OSyncErrorType otype = osync_error_get_type( error );
Type type;
switch ( otype ) {
case OSYNC_NO_ERROR:
type = NoError;
break;
default:
case OSYNC_ERROR_GENERIC:
type = GenericError;
break;
case OSYNC_ERROR_IO_ERROR:
type = IOError;
break;
case OSYNC_ERROR_NOT_SUPPORTED:
type = NotSupported;
break;
case OSYNC_ERROR_TIMEOUT:
type = Timeout;
break;
case OSYNC_ERROR_DISCONNECTED:
type = Disconnected;
break;
case OSYNC_ERROR_FILE_NOT_FOUND:
type = FileNotFound;
break;
case OSYNC_ERROR_EXISTS:
type = Exists;
break;
case OSYNC_ERROR_CONVERT:
type = Convert;
break;
case OSYNC_ERROR_MISCONFIGURATION:
type = Misconfiguration;
break;
case OSYNC_ERROR_INITIALIZATION:
type = Initialization;
break;
case OSYNC_ERROR_PARAMETER:
type = Parameter;
break;
case OSYNC_ERROR_EXPECTED:
type = Expected;
break;
case OSYNC_ERROR_NO_CONNECTION:
type = NoConnection;
break;
case OSYNC_ERROR_TEMPORARY:
type = Temporary;
break;
case OSYNC_ERROR_LOCKED:
type = Locked;
break;
case OSYNC_ERROR_PLUGIN_NOT_FOUND:
type = PluginNotFound;
break;
}
mType = type;
mName = TQString::fromUtf8( osync_error_get_name( error ) );
mMessage = TQString::fromUtf8( osync_error_print( error ) );
if ( deleteError )
osync_error_free( error );
}
Result::~Result()
{
}
void Result::setName( const TQString &name )
{
mName = name;
}
TQString Result::name() const
{
return mName;
}
void Result::setMessage( const TQString &message )
{
mMessage = message;
}
TQString Result::message() const
{
return mMessage;
}
void Result::setType( Type type )
{
mType = type;
}
Result::Type Result::type() const
{
return mType;
}
bool Result::isError() const
{
return mType != NoError;
}
Result::operator bool () const
{
return ( mType != NoError );
}

@ -1,126 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_RESULT_H
#define TQSYNC_RESULT_H
#include <tqstring.h>
struct OSyncError;
namespace QSync {
class Result
{
public:
/**
Result types.
*/
enum Type {
NoError,
GenericError,
IOError,
NotSupported,
Timeout,
Disconnected,
FileNotFound,
Exists,
Convert,
Misconfiguration,
Initialization,
Parameter,
Expected,
NoConnection,
Temporary,
Locked,
PluginNotFound
};
/**
Constructs a NoError result.
*/
Result();
/**
Constructs a result of the given type.
*/
Result( Type type );
/**
Construct Result from OpenSync error object. Deletes the OpenSync error
object.
*/
Result( OSyncError **, bool deleteError = true );
/**
Destroys the result.
*/
~Result();
/**
Sets the name of the result.
*/
void setName( const TQString &name );
/**
Returns the name of the result.
*/
TQString name() const;
/**
Sets the message text of the result.
*/
void setMessage( const TQString &message );
/**
Returns the message text of the result.
*/
TQString message() const;
/**
Sets the type of the result.
*/
void setType( Type type );
/**
Returns the type of the result.
*/
Type type() const;
/**
Reimplemented boolean operator.
*/
operator bool () const;
/**
Return true, if this Result is an error, return false otherwise.
*/
bool isError() const;
private:
TQString mName;
TQString mMessage;
Type mType;
};
}
#endif

@ -1,159 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <opensync/file.h>
#include <opensync/opensync.h>
#include "syncchange.h"
using namespace QSync;
SyncChange::SyncChange()
{
}
SyncChange::SyncChange( OSyncChange *change )
{
mSyncChange = change;
}
SyncChange::~SyncChange()
{
}
bool SyncChange::isValid() const
{
return ( mSyncChange != 0 );
}
void SyncChange::setUid( const TQString &uid )
{
osync_change_set_uid( mSyncChange, uid.utf8() );
}
TQString SyncChange::uid() const
{
return TQString::fromUtf8( osync_change_get_uid( mSyncChange ) );
}
void SyncChange::setHash( const TQString &hash )
{
osync_change_set_hash( mSyncChange, hash.utf8() );
}
TQString SyncChange::hash() const
{
return TQString::fromUtf8( osync_change_get_hash( mSyncChange ) );
}
void SyncChange::setData( const TQString &data )
{
osync_change_set_data( mSyncChange, const_cast<char*>( data.utf8().data() ), data.utf8().size(), true );
}
TQString SyncChange::data() const
{
int size = osync_change_get_datasize( mSyncChange );
TQString content;
if ( objectFormatName() == "file" ) {
fileFormat *format = (fileFormat*)osync_change_get_data( mSyncChange );
if ( format )
content = TQString::fromUtf8( format->data, format->size );
} else
content = TQString::fromUtf8( osync_change_get_data( mSyncChange ), size );
return content;
}
bool SyncChange::hasData() const
{
return osync_change_has_data( mSyncChange );
}
TQString SyncChange::objectFormatName() const
{
OSyncObjFormat *format = osync_change_get_objformat( mSyncChange );
Q_ASSERT( format );
return TQString::fromUtf8( osync_objformat_get_name( format ) );
}
Member SyncChange::member() const
{
OSyncMember *omember = osync_change_get_member( mSyncChange );
Member m;
m.mMember = omember;
return m;
}
void SyncChange::setChangeType( Type changeType )
{
OSyncChangeType ochangeType;
switch ( changeType ) {
case AddedChange:
ochangeType = CHANGE_ADDED;
break;
case UnmodifiedChange:
ochangeType = CHANGE_UNMODIFIED;
break;
case DeletedChange:
ochangeType = CHANGE_DELETED;
break;
case ModifiedChange:
ochangeType = CHANGE_MODIFIED;
break;
case UnknownChange:
default:
ochangeType = CHANGE_UNKNOWN;
break;
}
osync_change_set_changetype( mSyncChange, ochangeType );
}
SyncChange::Type SyncChange::changeType() const
{
OSyncChangeType ochangeType = osync_change_get_changetype( mSyncChange );
switch ( ochangeType ) {
case CHANGE_ADDED:
return AddedChange;
break;
case CHANGE_UNMODIFIED:
return UnmodifiedChange;
break;
case CHANGE_DELETED:
return DeletedChange;
break;
case CHANGE_MODIFIED:
return ModifiedChange;
break;
case CHANGE_UNKNOWN:
default:
return UnknownChange;
break;
}
}

@ -1,116 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_SYNCCHANGE_H
#define TQSYNC_SYNCCHANGE_H
#include <libqopensync/member.h>
class OSyncChange;
namespace QSync {
class SyncChange
{
friend class SyncMapping;
public:
enum Type
{
UnknownChange,
AddedChange,
UnmodifiedChange,
DeletedChange,
ModifiedChange
};
SyncChange();
SyncChange( OSyncChange* );
~SyncChange();
/**
Returns whether it's a valid SyncChange.
*/
bool isValid() const;
/**
Sets the uid of this change.
*/
void setUid( const TQString &uid );
/**
Returns the uid of this change.
*/
TQString uid() const;
/**
Sets the hash of this change.
*/
void setHash( const TQString &hash );
/**
Returns the hash of this change.
*/
TQString hash() const;
/**
Sets the data provided by the plugin.
*/
void setData( const TQString &data );
/**
Returns the data provided by the plugin.
*/
TQString data() const;
/**
Returns whether the change contains data.
*/
bool hasData() const;
/**
Returns the object format name.
*/
TQString objectFormatName() const;
/**
Returns the parent member of this change.
*/
Member member() const;
/**
Sets the change type.
*/
void setChangeType( Type changeType );
/**
Returns the change type.
*/
Type changeType() const;
private:
OSyncChange *mSyncChange;
};
}
#endif

@ -1,100 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <tqstring.h>
#include <osengine/engine.h>
#include "syncmapping.h"
using namespace QSync;
SyncMapping::SyncMapping()
: mEngine( 0 ), mMapping( 0 )
{
}
SyncMapping::SyncMapping( OSyncMapping *mapping, OSyncEngine *engine )
: mEngine( engine ), mMapping( mapping )
{
}
SyncMapping::~SyncMapping()
{
}
bool SyncMapping::isValid() const
{
return ( mEngine != 0 && mMapping != 0 );
}
long long SyncMapping::id() const
{
Q_ASSERT( mMapping );
return osengine_mapping_get_id( mMapping );
}
void SyncMapping::duplicate()
{
Q_ASSERT( mEngine );
Q_ASSERT( mMapping );
osengine_mapping_duplicate( mEngine, mMapping );
}
void SyncMapping::solve( const SyncChange &change )
{
Q_ASSERT( mEngine );
Q_ASSERT( mMapping );
Q_ASSERT( change.isValid() );
osengine_mapping_solve( mEngine, mMapping, change.mSyncChange );
}
void SyncMapping::ignore()
{
Q_ASSERT( mEngine );
Q_ASSERT( mMapping );
//TODO: error should be returned as Result
OSyncError *error = 0;
osengine_mapping_ignore_conflict( mEngine, mMapping, &error );
}
int SyncMapping::changesCount() const
{
Q_ASSERT( mMapping );
return osengine_mapping_num_changes( mMapping );
}
SyncChange SyncMapping::changeAt( int pos )
{
Q_ASSERT( mMapping );
if ( pos < 0 || pos >= osengine_mapping_num_changes( mMapping ) )
return SyncChange();
OSyncChange *ochange = osengine_mapping_nth_change( mMapping, pos );
return SyncChange( ochange );
}

@ -1,59 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_SYNCMAPPING_H
#define TQSYNC_SYNCMAPPING_H
#include <libqopensync/syncchange.h>
class OSyncEngine;
class OSyncMapping;
namespace QSync {
class SyncMapping
{
friend class SyncMappingUpdate;
public:
SyncMapping();
SyncMapping( OSyncMapping*, OSyncEngine* );
~SyncMapping();
bool isValid() const;
long long id() const;
void duplicate();
void solve( const SyncChange &change );
void ignore();
int changesCount() const;
SyncChange changeAt( int pos );
private:
OSyncEngine *mEngine;
OSyncMapping *mMapping;
};
}
#endif

@ -1,251 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <osengine/engine.h>
#include "syncupdates.h"
using namespace QSync;
SyncMemberUpdate::SyncMemberUpdate()
{
}
SyncMemberUpdate::SyncMemberUpdate( OSyncMemberUpdate *update )
{
switch ( update->type ) {
case MEMBER_CONNECTED:
mType = Connected;
break;
case MEMBER_SENT_CHANGES:
mType = SentChanges;
break;
case MEMBER_COMMITTED_ALL:
mType = CommittedAll;
break;
case MEMBER_DISCONNECTED:
mType = Disconnected;
break;
case MEMBER_CONNECT_ERROR:
mType = ConnectError;
break;
case MEMBER_GET_CHANGES_ERROR:
mType = GetChangesError;
break;
case MEMBER_COMMITTED_ALL_ERROR:
mType = CommittedAllError;
break;
case MEMBER_SYNC_DONE_ERROR:
mType = SyncDoneError;
break;
case MEMBER_DISCONNECT_ERROR:
mType = DisconnectedError;
break;
}
if ( update->error )
mResult = Result( &(update->error) );
mMember.mMember = update->member;
}
SyncMemberUpdate::~SyncMemberUpdate()
{
}
SyncMemberUpdate::Type SyncMemberUpdate::type() const
{
return mType;
}
Result SyncMemberUpdate::result() const
{
return mResult;
}
Member SyncMemberUpdate::member() const
{
return mMember;
}
SyncChangeUpdate::SyncChangeUpdate()
{
}
SyncChangeUpdate::SyncChangeUpdate( OSyncChangeUpdate *update )
{
switch ( update->type ) {
case CHANGE_RECEIVED:
mType = Received;
break;
case CHANGE_RECEIVED_INFO:
mType = ReceivedInfo;
break;
case CHANGE_SENT:
mType = Sent;
break;
case CHANGE_WRITE_ERROR:
mType = WriteError;
break;
case CHANGE_RECV_ERROR:
mType = ReceiveError;
break;
}
if ( update->error )
mResult = Result( &(update->error) );
mChange = SyncChange( update->change );
mMemberId = update->member_id;
mMappingId = update->mapping_id;
}
SyncChangeUpdate::~SyncChangeUpdate()
{
}
SyncChangeUpdate::Type SyncChangeUpdate::type() const
{
return mType;
}
Result SyncChangeUpdate::result() const
{
return mResult;
}
SyncChange SyncChangeUpdate::change() const
{
return mChange;
}
int SyncChangeUpdate::memberId() const
{
return mMemberId;
}
int SyncChangeUpdate::mappingId() const
{
return mMappingId;
}
SyncMappingUpdate::SyncMappingUpdate()
{
}
SyncMappingUpdate::SyncMappingUpdate( OSyncMappingUpdate *update, OSyncEngine *engine )
{
switch ( update->type ) {
case MAPPING_SOLVED:
mType = Solved;
break;
case MAPPING_SYNCED:
mType = Synced;
break;
case MAPPING_WRITE_ERROR:
mType = WriteError;
break;
}
if ( update->error )
mResult = Result( &(update->error) );
mWinner = update->winner;
mMapping.mEngine = engine;
mMapping.mMapping = update->mapping;
}
SyncMappingUpdate::~SyncMappingUpdate()
{
}
SyncMappingUpdate::Type SyncMappingUpdate::type() const
{
return mType;
}
Result SyncMappingUpdate::result() const
{
return mResult;
}
long long int SyncMappingUpdate::winner() const
{
return mWinner;
}
SyncMapping SyncMappingUpdate::mapping() const
{
return mMapping;
}
SyncEngineUpdate::SyncEngineUpdate()
{
}
SyncEngineUpdate::SyncEngineUpdate( OSyncEngineUpdate *update )
{
switch ( update->type ) {
case ENG_ENDPHASE_CON:
mType = EndPhaseConnected;
break;
case ENG_ENDPHASE_READ:
mType = EndPhaseRead;
break;
case ENG_ENDPHASE_WRITE:
mType = EndPhaseWrite;
break;
case ENG_ENDPHASE_DISCON:
mType = EndPhaseDisconnected;
break;
case ENG_ERROR:
mType = Error;
break;
case ENG_SYNC_SUCCESSFULL:
mType = SyncSuccessfull;
break;
case ENG_PREV_UNCLEAN:
mType = PrevUnclean;
break;
case ENG_END_CONFLICTS:
mType = EndConflicts;
break;
}
if ( update->error )
mResult = Result( &(update->error) );
}
SyncEngineUpdate::~SyncEngineUpdate()
{
}
SyncEngineUpdate::Type SyncEngineUpdate::type() const
{
return mType;
}
Result SyncEngineUpdate::result() const
{
return mResult;
}

@ -1,157 +0,0 @@
/*
This file is part of libqopensync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef TQSYNC_SYNCUPDATES_H
#define TQSYNC_SYNCUPDATES_H
#include <libqopensync/member.h>
#include <libqopensync/result.h>
#include <libqopensync/syncchange.h>
#include <libqopensync/syncmapping.h>
class OSyncMemberUpdate;
class OSyncChangeUpdate;
class OSyncMappingUpdate;
class OSyncEngineUpdate;
class OSyncMemberUpdate;
namespace QSync {
class SyncMemberUpdate
{
friend class CallbackHandler;
public:
enum Type {
Connected,
SentChanges,
CommittedAll,
Disconnected,
ConnectError,
GetChangesError,
CommittedAllError,
SyncDoneError,
DisconnectedError
};
SyncMemberUpdate();
SyncMemberUpdate( OSyncMemberUpdate* );
~SyncMemberUpdate();
Type type() const;
Result result() const;
Member member() const;
private:
Type mType;
Result mResult;
Member mMember;
};
class SyncChangeUpdate
{
friend class CallbackHandler;
public:
enum Type {
Received = 1,
ReceivedInfo,
Sent,
WriteError,
ReceiveError
};
SyncChangeUpdate();
SyncChangeUpdate( OSyncChangeUpdate* );
~SyncChangeUpdate();
Type type() const;
Result result() const;
SyncChange change() const;
int memberId() const;
int mappingId() const;
private:
Type mType;
Result mResult;
SyncChange mChange;
int mMemberId;
int mMappingId;
};
class SyncMappingUpdate
{
friend class CallbackHandler;
public:
enum Type {
Solved = 1,
Synced,
WriteError
};
SyncMappingUpdate();
SyncMappingUpdate( OSyncMappingUpdate*, OSyncEngine* );
~SyncMappingUpdate();
Type type() const;
Result result() const;
long long int winner() const;
SyncMapping mapping() const;
private:
Type mType;
Result mResult;
long long int mWinner;
SyncMapping mMapping;
};
class SyncEngineUpdate
{
friend class CallbackHandler;
public:
enum Type {
EndPhaseConnected = 1,
EndPhaseRead,
EndPhaseWrite,
EndPhaseDisconnected,
Error,
SyncSuccessfull,
PrevUnclean,
EndConflicts
};
SyncEngineUpdate();
SyncEngineUpdate( OSyncEngineUpdate* );
~SyncEngineUpdate();
Type type() const;
Result result() const;
private:
Type mType;
Result mResult;
};
}
#endif

@ -1,10 +0,0 @@
INCLUDES = -I/usr/local/include/dbus-1.0/qt3 $(all_includes) \
-I$(top_srcdir)/kitchensync
bin_PROGRAMS = opensyncdbus
opensyncdbus_SOURCES = dbusclient.cpp
opensyncdbus_LDADD = $(top_builddir)/kitchensync/libqopensync/libqopensync.la
opensyncdbus_LDFLAGS = -ldbus-1-qt3 -ldbus-1 $(all_libraries) $(KDE_RPATH)
METASOURCES = AUTO

@ -1,5 +0,0 @@
This directory contains opensyncdbus, a D-BUS frontend for OpenSync. It's a
daemon which provides a D-BUS interface for controlling OpenSync.
To compile opensyncdbus you need the Qt3 bindings for D-BUS.
They are in SVN under branches/work/dbus-qt4-qt3backport/

@ -1,273 +0,0 @@
/*
This file is part of KDE.
Copyright (c) 2006 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "dbusclient.h"
#include <libqopensync/environment.h>
#include <libqopensync/group.h>
#include <dbus/qdbuserror.h>
#include <dbus/qdbusconnection.h>
#include <dbus/qdbusmessage.h>
#include <dbus/qdbusproxy.h>
#include <tqapplication.h>
#include <tqtimer.h>
#include <iostream>
OpenSyncService::OpenSyncService()
: mConnection( 0 )
{
}
void OpenSyncService::setConnection( TQDBusConnection *connection )
{
mConnection = connection;
mConnection->registerObject( "/ABC", this );
}
bool OpenSyncService::handleMethodCall( const TQDBusMessage &message )
{
tqDebug( "OpenSyncService::handleMethodCall()" );
tqDebug( " Interface: %s", message.interface().latin1() );
tqDebug( " Path: %s", message.path().latin1() );
tqDebug( " Member: %s", message.member().latin1() );
tqDebug( " Sender: %s", message.sender().latin1() );
if ( message.interface() != "org.opensync.SyncEngine" ) return false;
TQDBusMessage reply;
TQString function = message.member();
if ( function == "hello" ) {
reply = hello( message );
} else if ( function == "randomNumber" ) {
reply = randomNumber( message );
} else if ( function == "listGroups" ) {
reply = listGroups( message );
} else if ( function == "listPlugins" ) {
reply = listPlugins( message );
} else if ( function == "showGroup" ) {
reply = showGroup( message );
} else if ( function == "showMember" ) {
reply = showMember( message );
} else {
return false;
}
mConnection->send( reply );
return true;
}
TQDBusMessage OpenSyncService::showMember( const TQDBusMessage &message )
{
if ( message.count() != 2 ) {
return error( message, "arg_count",
TQString("Wrong number of arguments. Expected 2, got %1.")
.arg( message.count() ) );
}
TQString groupName = message[ 0 ].toString();
if ( groupName.isEmpty() ) {
return error( message, "missing_arg", "Missing argument: group name." );
}
bool ok;
int memberId = message[ 1 ].toInt( &ok );
if ( !ok ) {
return error( message, "missing_arg", "Missing argument: member id." );
}
TQDBusMessage reply;
QSync::Environment env;
QSync::Result result = env.initialize();
if ( result.isError() ) {
return error( message, result.name(), result.message() );
} else {
reply = TQDBusMessage::methodReply( message );
QSync::Group group = env.groupByName( groupName );
if ( !group.isValid() ) {
return error( message, "group_name", TQString("Unknown group '%1'.")
.arg( groupName ) );
}
QSync::Member member = group.memberById( memberId );
if ( !member.isValid() ) {
return error( message, "member_id",
TQString("Unknown member id '%1' in group '%2'.").arg( groupName )
.arg( memberId ) );
}
reply.append( memberId );
reply.append( member.pluginName() );
env.finalize();
}
return reply;
}
TQDBusMessage OpenSyncService::showGroup( const TQDBusMessage &message )
{
if ( message.count() != 1 ) {
return error( message, "arg_count",
TQString("Wrong number of arguments. Expected 1, got %1")
.arg( message.count() ) );
}
TQString groupName = message[ 0 ].toString();
if ( groupName.isEmpty() ) {
return error( message, "missing_arg", "Missing argument group name." );
}
TQDBusMessage reply;
QSync::Environment env;
QSync::Result result = env.initialize();
if ( result.isError() ) {
return error( message, result.name(), result.message() );
} else {
reply = TQDBusMessage::methodReply( message );
QSync::Group group = env.groupByName( groupName );
if ( !group.isValid() ) {
return error( message, "group_name", TQString("Unknown group '%1'")
.arg( groupName ) );
}
QSync::Group::Iterator it( &group );
for( it = group.begin(); it != group.end(); ++it ) {
QSync::Member member = *it;
reply.append( TQVariant( member.id() ) );
}
env.finalize();
}
return reply;
}
TQDBusMessage OpenSyncService::error( const TQDBusMessage &message,
const TQString &errorCode,
const TQString &errorMessage )
{
TQDBusError error( "org.opensync." + errorCode, errorMessage );
return TQDBusMessage::methodError( message, error );
}
TQDBusMessage OpenSyncService::listPlugins( const TQDBusMessage &message )
{
TQDBusMessage reply;
QSync::Environment env;
QSync::Result result = env.initialize();
if ( result.isError() ) {
TQDBusError error( result.name(), result.message() );
reply = TQDBusMessage::methodError( message, error );
} else {
reply = TQDBusMessage::methodReply( message );
QSync::Environment::PluginIterator it( env.pluginBegin() );
for ( ; it != env.pluginEnd(); ++it ) {
reply.append( TQVariant( (*it).name() ) );
}
env.finalize();
}
return reply;
}
TQDBusMessage OpenSyncService::listGroups( const TQDBusMessage &message )
{
TQDBusMessage reply;
QSync::Environment env;
QSync::Result result = env.initialize();
if ( result.isError() ) {
TQDBusError error( result.name(), result.message() );
reply = TQDBusMessage::methodError( message, error );
} else {
reply = TQDBusMessage::methodReply( message );
QSync::Environment::GroupIterator it( env.groupBegin() );
for ( ; it != env.groupEnd(); ++it ) {
reply.append( TQVariant( (*it).name() ) );
}
env.finalize();
}
return reply;
}
TQDBusMessage OpenSyncService::hello( const TQDBusMessage &message )
{
TQDBusMessage reply = TQDBusMessage::methodReply( message );
// TQDBusError error;
// reply = TQDBusMessage::methodError( message, error );
reply.append( TQVariant( TQString( "Hello!" ) ) );
return reply;
}
TQDBusMessage OpenSyncService::randomNumber( const TQDBusMessage &message )
{
TQDBusMessage reply = TQDBusMessage::methodReply( message );
int number = rand();
reply.append( TQVariant( number ) );
return reply;
}
int main( int argc, char *argv[] )
{
TQApplication app(argc, argv);
std::cout << "Hello" << std::endl;
TQDBusConnection connection = TQDBusConnection::addConnection(
TQDBusConnection::SessionBus );
if ( !connection.isConnected() ) {
tqFatal("Cannot connect to session bus");
}
connection.requestName( "org.opensync.SyncEngine",
TQDBusConnection::NoReplace );
OpenSyncService service;
service.setConnection( &connection );
return app.exec();
}
//#include "dbusclient.moc"

@ -1,56 +0,0 @@
/*
This file is part of KDE.
Copyright (c) 2006 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef DBUSCLIENT_H
#define DBUSCLIENT_H
#include <tqobject.h>
#include <dbus/qdbusobject.h>
class TQDBusMessage;
class TQDBusConnection;
class OpenSyncService : public TQDBusObjectBase
{
public:
OpenSyncService();
void setConnection( TQDBusConnection *connection );
protected:
virtual bool handleMethodCall( const TQDBusMessage &message );
TQDBusMessage hello( const TQDBusMessage & );
TQDBusMessage randomNumber( const TQDBusMessage & );
TQDBusMessage listGroups( const TQDBusMessage &message );
TQDBusMessage listPlugins( const TQDBusMessage &message );
TQDBusMessage showGroup( const TQDBusMessage &message );
TQDBusMessage showMember( const TQDBusMessage &message );
TQDBusMessage error( const TQDBusMessage &, const TQString &errorCode,
const TQString &errorMessage );
private:
TQDBusConnection *mConnection;
};
#endif

@ -1,9 +0,0 @@
##### create translation templates ##############
tde_l10n_create_template( "kitchensync" )
tde_l10n_create_template(
CATALOG "desktop_files/kitchensync.desktop/"
SOURCES kitchensync.desktop
DESTINATION "${CMAKE_SOURCE_DIR}/translations"
)

@ -1,77 +0,0 @@
#################################################
#
# (C) 2010-2011 Serghei Amelian
# serghei (DOT) amelian (AT) gmail.com
#
# Improvements and feedback are welcome
#
# This file is released under GPL >= 2
#
#################################################
tde_import( libkmime )
tde_import( ktnef )
tde_import( libkcal )
tde_import( libtdepim )
add_subdirectory( about )
add_subdirectory( pics )
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/..
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/libtdepim
${TDE_INCLUDE_DIR}
${TQT_INCLUDE_DIRS}
)
link_directories(
${TQT_LIBRARY_DIRS}
)
##### other data ################################
tde_create_translated_desktop( kitchensync.desktop )
install( FILES kitchensyncui.rc kitchensync_part.rc DESTINATION ${DATA_INSTALL_DIR}/kitchensync )
##### libkitchensyncpart (module) ###############
tde_add_kpart( libkitchensyncpart AUTOMOC
SOURCES part.cpp
LINK kitchensync-shared
DESTINATION ${PLUGIN_INSTALL_DIR}
)
##### kitchensync (executable) ##################
tde_add_executable( kitchensync AUTOMOC
SOURCES main.cpp mainwindow.cpp
LINK kitchensync-shared
DESTINATION ${BIN_INSTALL_DIR}
)
##### kitchensync (shared) ######################
tde_add_library( kitchensync SHARED AUTOMOC
SOURCES
aboutpage.cpp mainwidget.cpp groupconfigdialog.cpp groupconfig.cpp
groupitem.cpp groupview.cpp memberconfig.cpp syncprocess.cpp
syncprocessmanager.cpp connectionwidgets.cpp pluginpicker.cpp
configgui.cpp configguiblank.cpp configguifile.cpp memberinfo.cpp
groupconfigcommon.cpp kwidgetlist.cpp configguipalm.cpp
conflictdialog.cpp singleconflictdialog.cpp addresseediffalgo.cpp
calendardiffalgo.cpp htmldiffalgodisplay.cpp genericdiffalgo.cpp
multiconflictdialog.cpp configguiirmc.cpp configguisyncmlobex.cpp
configguisyncmlhttp.cpp configguiopie.cpp configguignokii.cpp
configguigcalendar.cpp configguildap.cpp configguigpe.cpp
configguijescs.cpp configguievo2.cpp configguimoto.cpp
configguisynce.cpp configguisunbird.cpp
VERSION 0.0.0
LINK qopensync-shared tdepim-shared tdehtml-shared
DESTINATION ${LIB_INSTALL_DIR}
)

@ -1,53 +0,0 @@
SUBDIRS = about pics
INCLUDES = -I$(top_srcdir)/kitchensync/src \
-I$(top_srcdir)/kitchensync \
-I$(top_srcdir)/libtdepim \
-I$(top_srcdir) \
$(all_includes)
# Application
bin_PROGRAMS = kitchensync
kitchensync_SOURCES = main.cpp mainwindow.cpp
kitchensync_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_TQT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_TDEIO) -ltdetexteditor
kitchensync_LDADD = libkitchensync.la
xdg_apps_DATA = kitchensync.desktop
# Library
lib_LTLIBRARIES = libkitchensync.la
libkitchensync_la_SOURCES = aboutpage.cpp mainwidget.cpp groupconfigdialog.cpp \
groupconfig.cpp groupitem.cpp groupview.cpp memberconfig.cpp \
syncprocess.cpp syncprocessmanager.cpp connectionwidgets.cpp \
pluginpicker.cpp configgui.cpp configguiblank.cpp configguifile.cpp \
memberinfo.cpp groupconfigcommon.cpp kwidgetlist.cpp \
configguipalm.cpp conflictdialog.cpp singleconflictdialog.cpp \
addresseediffalgo.cpp calendardiffalgo.cpp \
htmldiffalgodisplay.cpp genericdiffalgo.cpp multiconflictdialog.cpp \
configguiirmc.cpp \
configguisyncmlobex.cpp configguisyncmlhttp.cpp configguiopie.cpp \
configguignokii.cpp configguigcalendar.cpp configguildap.cpp configguigpe.cpp \
configguijescs.cpp configguievo2.cpp configguimoto.cpp configguisynce.cpp \
configguisunbird.cpp
libkitchensync_la_LDFLAGS = $(all_libraries) $(KDE_RPATH) -no-undefined
libkitchensync_la_LIBADD = $(LIB_TDEIO) $(LIB_TDEHTML) $(top_builddir)/kitchensync/libqopensync/libqopensync.la \
$(LIB_TDEABC) $(top_builddir)/libtdepim/libtdepim.la $(top_builddir)/libkcal/libkcal.la \
$(LIB_TQT)
# KPart
kde_module_LTLIBRARIES = libkitchensyncpart.la
libkitchensyncpart_la_SOURCES = part.cpp
libkitchensyncpart_la_LDFLAGS = -module $(KDE_PLUGIN) $(KDE_RPATH) $(all_libraries) -no-undefined
libkitchensyncpart_la_LIBADD = $(LIB_TDEPARTS) libkitchensync.la $(LIB_TQT) $(LIB_TDEIO) $(LIB_TDEHTML) $(LIB_TDEABC) $(LIB_TDECORE) $(LIB_TDEUI)
# Resources
kitchensyncdatadir = $(kde_datadir)/kitchensync
kitchensyncdata_DATA = kitchensyncui.rc kitchensync_part.rc
METASOURCES = AUTO
messages: rc.cpp
$(XGETTEXT) *.cpp *.h -o $(podir)/kitchensync.pot

@ -1,14 +0,0 @@
#################################################
#
# (C) 2010-2011 Serghei Amelian
# serghei (DOT) amelian (AT) gmail.com
#
# Improvements and feedback are welcome
#
# This file is released under GPL >= 2
#
#################################################
install( FILES
top-right-kitchensync.png main.html kitchensync.css
DESTINATION ${DATA_INSTALL_DIR}/kitchensync/about )

@ -1,6 +0,0 @@
about_DATA = \
top-right-kitchensync.png \
main.html \
kitchensync.css
aboutdir = $(kde_datadir)/kitchensync/about

@ -1,27 +0,0 @@
#headerR {
position: absolute;
right: 0px;
width: 430px;
height: 131px;
background-image: url(top-right-kontact.png);
}
#title {
right: 125px;
}
#tagline {
right: 125px;
}
#boxCenter {
background-image: url(box-center-kontact.png);
background-repeat: no-repeat;
background-color: #dfe7f3;
background-position: bottom right;
}
#subtext {
font-style: italic;
}

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 1st August 2004), see www.w3.org" />
<style type="text/css">
/*<![CDATA[*/
@import "%1"; /* kde_infopage.css */
%1 /* maybe @import "kde_infopage_rtl.css"; */
@import "kitchensync.css";
body {font-size: %1px;}
/*]]>*/
</style>
<title>KitchenSync</title>
</head>
<body>
<div id="header">
<div id="headerL"/>
<div id="headerR"/>
<div id="title">
%2 <!-- KitchenSync -->
</div>
<div id="tagline">
%3 <!-- Catchphrase -->
</div>
</div>
<!-- the bar -->
<div id="bar">
<div id="barT"><div id="barTL"/><div id="barTR"/><div id="barTC"/></div>
<div id="barL">
<div id="barR">
<div id="barCenter" class="bar_text">
%4<!-- KitchenSync is ... -->
</div>
</div>
</div>
<div id="barB"><div id="barBL"/><div id="barBR"/><div id="barBC"/></div>
</div>
<!-- the main text box -->
<div id="box">
<div id="boxT"><div id="boxTL"/><div id="boxTR"/><div id="boxTC"/></div>
<div id="boxL">
<div id="boxR">
<div id="boxCenter">
<!--Welcome to KitchenSync-->
%5
</div>
</div>
</div>
<div id="boxB"><div id="boxBL"/><div id="boxBR"/><div id="boxBC"/></div>
</div>
<div id="footer"><div id="footerL"/><div id="footerR"/></div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

@ -1,141 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <tqfile.h>
#include <tqlayout.h>
#include <tdeaboutdata.h>
#include <tdeapplication.h>
#include <kdebug.h>
#include <tdehtml_part.h>
#include <tdehtmlview.h>
#include <kiconloader.h>
#include <tdelocale.h>
#include <krun.h>
#include <kstandarddirs.h>
#include "aboutpage.h"
static TQString readFile( const TQString &fileName )
{
TQFile file( fileName );
if ( !file.open( IO_ReadOnly ) ) {
kdDebug() << "Unable to open file '" << fileName << "'" << endl;
return TQCString();
}
TQString content = TQString::fromUtf8( file.readAll() );
file.close();
return content;
}
AboutPage::AboutPage( TQWidget *parent )
: TQWidget( parent, "AboutPage" )
{
TQVBoxLayout *layout = new TQVBoxLayout( this );
TQString location = locate( "data", "kitchensync/about/main.html" );
TQString content = readFile( location );
content = content.arg( locate( "data", "libtdepim/about/kde_infopage.css" ) );
if ( kapp->reverseLayout() )
content = content.arg( "@import \"%1\";" ).arg( locate( "data", "libtdepim/about/kde_infopage_rtl.css" ) );
else
content = content.arg( "" );
TDEHTMLPart *part = new TDEHTMLPart( this );
layout->addWidget( part->view() );
part->begin( KURL( location ) );
TQString appName( i18n( "TDE KitchenSync" ) );
TQString catchPhrase( i18n( "Get Synchronized!" ) );
TQString quickDescription( i18n( "The TDE Synchronization Tool" ) );
part->write( content.arg( TQFont().pointSize() + 2 ).arg( appName )
.arg( catchPhrase ).arg( quickDescription ).arg( htmlText() ) );
part->end();
connect( part->browserExtension(),
TQT_SIGNAL( openURLRequest( const KURL&, const KParts::URLArgs& ) ),
TQT_SLOT( handleUrl( const KURL& ) ) );
connect( part->browserExtension(),
TQT_SIGNAL( createNewWindow( const KURL&, const KParts::URLArgs& ) ),
TQT_SLOT( handleUrl( const KURL& ) ) );
}
void AboutPage::handleUrl( const KURL &url )
{
if ( url.protocol() == "exec" ) {
if ( url.path() == "/addGroup" )
emit addGroup();
} else
new KRun( url, this );
}
TQString AboutPage::htmlText() const
{
TDEIconLoader *iconloader = TDEGlobal::iconLoader();
int iconSize = iconloader->currentSize( TDEIcon::Desktop );
TQString handbook_icon_path = iconloader->iconPath( "contents2", TDEIcon::Desktop );
TQString html_icon_path = iconloader->iconPath( "text-html", TDEIcon::Desktop );
TQString wizard_icon_path = iconloader->iconPath( "wizard", TDEIcon::Desktop );
TQString info = i18n( "<h2 style='text-align:center; margin-top: 0px;'>Welcome to KitchenSync %1</h2>"
"<p>%1</p>"
"<table align=\"center\">"
"<tr><td><a href=\"%1\"><img width=\"%1\" height=\"%1\" src=\"%1\" /></a></td>"
"<td><a href=\"%1\">%1</a><br><span id=\"subtext\"><nobr>%1</td></tr>"
"<tr><td><a href=\"%1\"><img width=\"%1\" height=\"%1\" src=\"%1\" /></a></td>"
"<td><a href=\"%1\">%1</a><br><span id=\"subtext\"><nobr>%1</td></tr>"
"<tr><td><a href=\"%1\"><img width=\"%1\" height=\"%1\" src=\"%1\" /></a></td>"
"<td><a href=\"%1\">%1</a><br><span id=\"subtext\"><nobr>%1</td></tr>"
"</table>" )
.arg( kapp->aboutData()->version() )
.arg( i18n( "KitchenSync synchronizes your e-mail, addressbook, calendar, to-do list and more." ) )
.arg( "help:/kitchensync" )
.arg( iconSize )
.arg( iconSize )
.arg( handbook_icon_path )
.arg( "help:/kitchensync" )
.arg( i18n( "Read Manual" ) )
.arg( i18n( "Learn more about KitchenSync and its components" ) )
.arg( "http://pim.kde.org" )
.arg( iconSize )
.arg( iconSize )
.arg( html_icon_path )
.arg( "http://pim.kde.org" )
.arg( i18n( "Visit KitchenSync Website" ) )
.arg( i18n( "Access online resources and tutorials" ) )
.arg( "exec:/addGroup" )
.arg( iconSize )
.arg( iconSize )
.arg( wizard_icon_path )
.arg( "exec:/addGroup" )
.arg( i18n( "Add Synchronization Group" ) )
.arg( i18n( "Create group of devices for synchronization" ) );
return info;
}
#include "aboutpage.moc"

@ -1,46 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef ABOUTPAGE_H
#define ABOUTPAGE_H
#include <kurl.h>
#include <tqwidget.h>
class AboutPage : public TQWidget
{
Q_OBJECT
public:
AboutPage( TQWidget *parent );
signals:
void addGroup();
private slots:
void handleUrl( const KURL& );
private:
TQString htmlText() const;
};
#endif

@ -1,157 +0,0 @@
/*
This file is part of libtdepim.
Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <tdeabc/vcardconverter.h>
#include "addresseediffalgo.h"
using namespace KSync;
static bool compareString( const TQString &left, const TQString &right )
{
if ( left.isEmpty() && right.isEmpty() )
return true;
else
return left == right;
}
AddresseeDiffAlgo::AddresseeDiffAlgo( const TDEABC::Addressee &leftAddressee,
const TDEABC::Addressee &rightAddressee )
: mLeftAddressee( leftAddressee ), mRightAddressee( rightAddressee )
{
}
AddresseeDiffAlgo::AddresseeDiffAlgo( const TQString &leftAddressee,
const TQString &rightAddressee )
{
TDEABC::VCardConverter converter;
mLeftAddressee = converter.parseVCard( leftAddressee );
mRightAddressee = converter.parseVCard( rightAddressee );
}
void AddresseeDiffAlgo::run()
{
begin();
if ( !compareString( mLeftAddressee.uid(), mRightAddressee.uid() ) )
conflictField( TDEABC::Addressee::uidLabel(), mLeftAddressee.uid(), mRightAddressee.uid() );
if ( !compareString( mLeftAddressee.name(), mRightAddressee.name() ) )
conflictField( TDEABC::Addressee::nameLabel(), mLeftAddressee.name(), mRightAddressee.name() );
if ( !compareString( mLeftAddressee.formattedName(), mRightAddressee.formattedName() ) )
conflictField( TDEABC::Addressee::formattedNameLabel(), mLeftAddressee.formattedName(), mRightAddressee.formattedName() );
if ( !compareString( mLeftAddressee.familyName(), mRightAddressee.familyName() ) )
conflictField( TDEABC::Addressee::familyNameLabel(), mLeftAddressee.familyName(), mRightAddressee.familyName() );
if ( !compareString( mLeftAddressee.givenName(), mRightAddressee.givenName() ) )
conflictField( TDEABC::Addressee::givenNameLabel(), mLeftAddressee.givenName(), mRightAddressee.givenName() );
if ( !compareString( mLeftAddressee.additionalName(), mRightAddressee.additionalName() ) )
conflictField( TDEABC::Addressee::additionalNameLabel(), mLeftAddressee.additionalName(), mRightAddressee.additionalName() );
if ( !compareString( mLeftAddressee.prefix(), mRightAddressee.prefix() ) )
conflictField( TDEABC::Addressee::prefixLabel(), mLeftAddressee.prefix(), mRightAddressee.prefix() );
if ( !compareString( mLeftAddressee.suffix(), mRightAddressee.suffix() ) )
conflictField( TDEABC::Addressee::suffixLabel(), mLeftAddressee.suffix(), mRightAddressee.suffix() );
if ( !compareString( mLeftAddressee.nickName(), mRightAddressee.nickName() ) )
conflictField( TDEABC::Addressee::nickNameLabel(), mLeftAddressee.nickName(), mRightAddressee.nickName() );
if ( mLeftAddressee.birthday() != mRightAddressee.birthday() )
conflictField( TDEABC::Addressee::birthdayLabel(), mLeftAddressee.birthday().toString(),
mRightAddressee.birthday().toString() );
if ( !compareString( mLeftAddressee.mailer(), mRightAddressee.mailer() ) )
conflictField( TDEABC::Addressee::mailerLabel(), mLeftAddressee.mailer(), mRightAddressee.mailer() );
if ( mLeftAddressee.timeZone() != mRightAddressee.timeZone() )
conflictField( TDEABC::Addressee::timeZoneLabel(), mLeftAddressee.timeZone().asString(), mRightAddressee.timeZone().asString() );
if ( mLeftAddressee.geo() != mRightAddressee.geo() )
conflictField( TDEABC::Addressee::geoLabel(), mLeftAddressee.geo().asString(), mRightAddressee.geo().asString() );
if ( !compareString( mLeftAddressee.title(), mRightAddressee.title() ) )
conflictField( TDEABC::Addressee::titleLabel(), mLeftAddressee.title(), mRightAddressee.title() );
if ( !compareString( mLeftAddressee.role(), mRightAddressee.role() ) )
conflictField( TDEABC::Addressee::roleLabel(), mLeftAddressee.role(), mRightAddressee.role() );
if ( !compareString( mLeftAddressee.organization(), mRightAddressee.organization() ) )
conflictField( TDEABC::Addressee::organizationLabel(), mLeftAddressee.organization(), mRightAddressee.organization() );
if ( !compareString( mLeftAddressee.note(), mRightAddressee.note() ) )
conflictField( TDEABC::Addressee::noteLabel(), mLeftAddressee.note(), mRightAddressee.note() );
if ( !compareString( mLeftAddressee.productId(), mRightAddressee.productId() ) )
conflictField( TDEABC::Addressee::productIdLabel(), mLeftAddressee.productId(), mRightAddressee.productId() );
if ( !compareString( mLeftAddressee.sortString(), mRightAddressee.sortString() ) )
conflictField( TDEABC::Addressee::sortStringLabel(), mLeftAddressee.sortString(), mRightAddressee.sortString() );
if ( mLeftAddressee.secrecy() != mRightAddressee.secrecy() ) {
conflictField( TDEABC::Addressee::secrecyLabel(), mLeftAddressee.secrecy().asString(), mRightAddressee.secrecy().asString() );
}
if ( mLeftAddressee.url()!= mRightAddressee.url() )
conflictField( TDEABC::Addressee::urlLabel(), mLeftAddressee.url().prettyURL(),
mRightAddressee.url().prettyURL() );
if ( mLeftAddressee.logo() != mRightAddressee.logo() ) {
}
if ( mLeftAddressee.photo() != mRightAddressee.photo() ) {
}
diffList( "emails", mLeftAddressee.emails(), mRightAddressee.emails() );
diffList( "Phone Numbers", mLeftAddressee.phoneNumbers(), mRightAddressee.phoneNumbers() );
diffList( "Addresses", mLeftAddressee.addresses(), mRightAddressee.addresses() );
end();
}
TQString AddresseeDiffAlgo::toString( const TDEABC::PhoneNumber &number )
{
return number.number();
}
TQString AddresseeDiffAlgo::toString( const TDEABC::Address &addr )
{
return addr.formattedAddress();
}
template <class L>
void AddresseeDiffAlgo::diffList( const TQString &id,
const TQValueList<L> &left, const TQValueList<L> &right )
{
for ( uint i = 0; i < left.count(); ++i ) {
if ( right.find( left[ i ] ) == right.end() )
additionalLeftField( id, toString( left[ i ] ) );
}
for ( uint i = 0; i < right.count(); ++i ) {
if ( left.find( right[ i ] ) == left.end() )
additionalRightField( id, toString( right[ i ] ) );
}
}

@ -1,53 +0,0 @@
/*
This file is part of libtdepim.
Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KSYNC_ADDRESSEEDIFFALGO_H
#define KSYNC_ADDRESSEEDIFFALGO_H
#include <tdeabc/addressee.h>
#include <libtdepim/diffalgo.h>
using namespace KPIM;
namespace KSync {
class AddresseeDiffAlgo : public DiffAlgo
{
public:
AddresseeDiffAlgo( const TDEABC::Addressee &leftAddressee, const TDEABC::Addressee &rightAddressee );
AddresseeDiffAlgo( const TQString &leftAddressee, const TQString &rightAddressee );
void run();
private:
template <class L>
void diffList( const TQString &id, const TQValueList<L> &left, const TQValueList<L> &right );
TQString toString( const TDEABC::PhoneNumber &number );
TQString toString( const TDEABC::Address &address );
TDEABC::Addressee mLeftAddressee;
TDEABC::Addressee mRightAddressee;
};
}
#endif

@ -1,217 +0,0 @@
/*
This file is part of libtdepim.
Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <tdelocale.h>
#include <libkcal/kcalversion.h>
#include "calendardiffalgo.h"
using namespace KSync;
#ifndef KDE_USE_FINAL
static bool compareString( const TQString &left, const TQString &right )
{
if ( left.isEmpty() && right.isEmpty() )
return true;
else
return left == right;
}
#endif
static TQString toString( KCal::Attendee *attendee )
{
return attendee->name() + "<" + attendee->email() + ">";
}
static TQString toString( KCal::Alarm * )
{
return TQString();
}
static TQString toString( KCal::Incidence * )
{
return TQString();
}
static TQString toString( KCal::Attachment * )
{
return TQString();
}
static TQString toString( const TQDate &date )
{
return date.toString();
}
static TQString toString( const TQDateTime &dateTime )
{
return dateTime.toString();
}
static TQString toString( const TQString str )
{
return str;
}
static TQString toString( bool value )
{
if ( value )
return i18n( "Yes" );
else
return i18n( "No" );
}
CalendarDiffAlgo::CalendarDiffAlgo( KCal::Incidence *leftIncidence,
KCal::Incidence *rightIncidence )
: mLeftIncidence( leftIncidence ), mRightIncidence( rightIncidence )
{
}
void CalendarDiffAlgo::run()
{
begin();
diffIncidenceBase( mLeftIncidence, mRightIncidence );
diffIncidence( mLeftIncidence, mRightIncidence );
KCal::Event *leftEvent = dynamic_cast<KCal::Event*>( mLeftIncidence );
KCal::Event *rightEvent = dynamic_cast<KCal::Event*>( mRightIncidence );
if ( leftEvent && rightEvent ) {
diffEvent( leftEvent, rightEvent );
} else {
KCal::Todo *leftTodo = dynamic_cast<KCal::Todo*>( mLeftIncidence );
KCal::Todo *rightTodo = dynamic_cast<KCal::Todo*>( mRightIncidence );
if ( leftTodo && rightTodo ) {
diffTodo( leftTodo, rightTodo );
}
}
end();
}
void CalendarDiffAlgo::diffIncidenceBase( KCal::IncidenceBase *left, KCal::IncidenceBase *right )
{
diffList( i18n( "Attendees" ), left->attendees(), right->attendees() );
if ( left->dtStart() != right->dtStart() )
conflictField( i18n( "Start time" ), left->dtStartStr(), right->dtStartStr() );
if ( !compareString( left->organizer().fullName(), right->organizer().fullName() ) )
conflictField( i18n( "Organizer" ), left->organizer().fullName(), right->organizer().fullName() );
if ( !compareString( left->uid(), right->uid() ) )
conflictField( i18n( "UID" ), left->uid(), right->uid() );
if ( left->doesFloat() != right->doesFloat() )
conflictField( i18n( "Is floating" ), toString( left->doesFloat() ), toString( right->doesFloat() ) );
if ( left->hasDuration() != right->hasDuration() )
conflictField( i18n( "Has duration" ), toString( left->hasDuration() ), toString( right->hasDuration() ) );
if ( left->duration() != right->duration() )
conflictField( i18n( "Duration" ), TQString::number( left->duration() ), TQString::number( right->duration() ) );
}
void CalendarDiffAlgo::diffIncidence( KCal::Incidence *left, KCal::Incidence *right )
{
if ( !compareString( left->description(), right->description() ) )
conflictField( i18n( "Description" ), left->description(), right->description() );
if ( !compareString( left->summary(), right->summary() ) )
conflictField( i18n( "Summary" ), left->summary(), right->summary() );
if ( left->status() != right->status() )
conflictField( i18n( "Status" ), left->statusStr(), right->statusStr() );
if ( left->secrecy() != right->secrecy() )
conflictField( i18n( "Secrecy" ), toString( left->secrecy() ), toString( right->secrecy() ) );
if ( left->priority() != right->priority() )
conflictField( i18n( "Priority" ), toString( left->priority() ), toString( right->priority() ) );
if ( !compareString( left->location(), right->location() ) )
conflictField( i18n( "Location" ), left->location(), right->location() );
diffList( i18n( "Categories" ), left->categories(), right->categories() );
diffList( i18n( "Alarms" ), left->alarms(), right->alarms() );
diffList( i18n( "Resources" ), left->resources(), right->resources() );
diffList( i18n( "Relations" ), left->relations(), right->relations() );
diffList( i18n( "Attachments" ), left->attachments(), right->attachments() );
#if LIBKCAL_IS_VERSION( 1, 3, 1 )
diffList( i18n( "Exception Dates" ), left->recurrence()->exDates(), right->recurrence()->exDates() );
diffList( i18n( "Exception Times" ), left->recurrence()->exDateTimes(), right->recurrence()->exDateTimes() );
#endif
// TODO: recurrence dates and date/times, exrules, rrules
if ( left->created() != right->created() )
conflictField( i18n( "Created" ), left->created().toString(), right->created().toString() );
if ( !compareString( left->relatedToUid(), right->relatedToUid() ) )
conflictField( i18n( "Related Uid" ), left->relatedToUid(), right->relatedToUid() );
}
void CalendarDiffAlgo::diffEvent( KCal::Event *left, KCal::Event *right )
{
if ( left->hasEndDate() != right->hasEndDate() )
conflictField( i18n( "Has End Date" ), toString( left->hasEndDate() ), toString( right->hasEndDate() ) );
if ( left->dtEnd() != right->dtEnd() )
conflictField( i18n( "End Date" ), left->dtEndStr(), right->dtEndStr() );
// TODO: check transparency
}
void CalendarDiffAlgo::diffTodo( KCal::Todo *left, KCal::Todo *right )
{
if ( left->hasStartDate() != right->hasStartDate() )
conflictField( i18n( "Has Start Date" ), toString( left->hasStartDate() ), toString( right->hasStartDate() ) );
if ( left->hasDueDate() != right->hasDueDate() )
conflictField( i18n( "Has Due Date" ), toString( left->hasDueDate() ), toString( right->hasDueDate() ) );
if ( left->dtDue() != right->dtDue() )
conflictField( i18n( "Due Date" ), left->dtDue().toString(), right->dtDue().toString() );
if ( left->hasCompletedDate() != right->hasCompletedDate() )
conflictField( i18n( "Has Complete Date" ), toString( left->hasCompletedDate() ), toString( right->hasCompletedDate() ) );
if ( left->percentComplete() != right->percentComplete() )
conflictField( i18n( "Complete" ), TQString::number( left->percentComplete() ), TQString::number( right->percentComplete() ) );
if ( left->completed() != right->completed() )
conflictField( i18n( "Completed" ), toString( left->completed() ), toString( right->completed() ) );
}
template <class L>
void CalendarDiffAlgo::diffList( const TQString &id,
const TQValueList<L> &left, const TQValueList<L> &right )
{
for ( uint i = 0; i < left.count(); ++i ) {
if ( right.find( left[ i ] ) == right.end() )
additionalLeftField( id, toString( left[ i ] ) );
}
for ( uint i = 0; i < right.count(); ++i ) {
if ( left.find( right[ i ] ) == left.end() )
additionalRightField( id, toString( right[ i ] ) );
}
}

@ -1,55 +0,0 @@
/*
This file is part of libtdepim.
Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KSYNC_CALENDARDIFFALGO_H
#define KSYNC_CALENDARDIFFALGO_H
#include <libkcal/event.h>
#include <libkcal/todo.h>
#include <libtdepim/diffalgo.h>
using namespace KPIM;
namespace KSync {
class CalendarDiffAlgo : public DiffAlgo
{
public:
CalendarDiffAlgo( KCal::Incidence *leftIncidence, KCal::Incidence *rightIncidence );
void run();
private:
template <class L>
void diffList( const TQString &id, const TQValueList<L> &left, const TQValueList<L> &right );
void diffIncidenceBase( KCal::IncidenceBase*, KCal::IncidenceBase* );
void diffIncidence( KCal::Incidence*, KCal::Incidence* );
void diffEvent( KCal::Event*, KCal::Event* );
void diffTodo( KCal::Todo*, KCal::Todo* );
KCal::Incidence *mLeftIncidence;
KCal::Incidence *mRightIncidence;
};
}
#endif

@ -1,135 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configgui.h"
#include "configguiblank.h"
#include "configguifile.h"
#include "configguignokii.h"
#include "configguigpe.h"
#include "configguiirmc.h"
#include "configguildap.h"
#include "configguiopie.h"
#include "configguipalm.h"
#include "configguisyncmlhttp.h"
#include "configguisyncmlobex.h"
#include "configguigcalendar.h"
#include "configguijescs.h"
#include "configguievo2.h"
#include "configguimoto.h"
#include "configguisynce.h"
#include "configguisunbird.h"
#include "memberinfo.h"
#include <kdialog.h>
#include <tdelocale.h>
#include <klineedit.h>
#include <tqlayout.h>
#include <tqlabel.h>
#include <tqtextedit.h>
ConfigGui::ConfigGui( const QSync::Member &member, TQWidget *parent )
: TQWidget( parent ), mMember( member )
{
mTopLayout = new TQVBoxLayout( this );
mTopLayout->setSpacing( KDialog::spacingHint() );
mTopLayout->setMargin( KDialog::marginHint() );
TQBoxLayout *nameLayout = new TQHBoxLayout( mTopLayout );
TQLabel *label = new TQLabel( i18n("Name:"), this );
nameLayout->addWidget( label );
mNameEdit = new KLineEdit( this );
nameLayout->addWidget( mNameEdit );
}
void ConfigGui::setInstanceName( const TQString &t )
{
mNameEdit->setText( t );
}
TQString ConfigGui::instanceName() const
{
return mNameEdit->text();
}
ConfigGui *ConfigGui::Factory::create( const QSync::Member &member,
TQWidget *parent )
{
TQString name = member.pluginName();
if ( name == "file-sync" ) {
return new ConfigGuiFile( member, parent );
} else if ( name == "palm-sync" ) {
return new ConfigGuiPalm( member, parent );
} else if ( name == "irmc-sync" ) {
return new ConfigGuiIRMC( member, parent );
} else if ( name == "syncml-obex-client" ) {
return new ConfigGuiSyncmlObex( member, parent );
} else if ( name == "syncml-http-server" ) {
return new ConfigGuiSyncmlHttp( member, parent );
} else if ( name == "opie-sync" ) {
return new ConfigGuiOpie( member, parent );
} else if ( name == "gnokii-sync" ) {
return new ConfigGuiGnokii( member, parent );
} else if ( name == "gpe-sync" ) {
return new ConfigGuiGpe( member, parent );
} else if ( name == "google-calendar" ) {
return new ConfigGuiGoogleCalendar( member, parent );
} else if ( name == "ldap-sync" ) {
return new ConfigGuiLdap( member, parent );
} else if ( name == "tdepim-sync" ) {
return new ConfigGuiBlank( member, parent );
} else if ( name == "jescs-sync" ) {
return new ConfigGuiJescs( member, parent );
} else if ( name == "evo2-sync" ) {
return new ConfigGuiEvo2( member, parent );
} else if ( name == "moto-sync" ) {
return new ConfigGuiMoto( member, parent );
} else if ( name == "synce-plugin" ) {
return new ConfigGuiSynce( member, parent );
} else if ( name == "sunbird-sync" ) {
return new ConfigGuiSunbird( member, parent );
} else {
return new ConfigGuiXml( member, parent );
}
}
ConfigGuiXml::ConfigGuiXml( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
mTextEdit = new TQTextEdit( this );
topLayout()->addWidget( mTextEdit );
}
void ConfigGuiXml::load( const TQString &xml )
{
mTextEdit->setText( xml );
}
TQString ConfigGuiXml::save() const
{
return mTextEdit->text();
}

@ -1,72 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUI_H
#define CONFIGGUI_H
#include <libqopensync/member.h>
#include <tqwidget.h>
class TQBoxLayout;
class KLineEdit;
class TQTextEdit;
class ConfigGui : public TQWidget
{
public:
ConfigGui( const QSync::Member &, TQWidget *parent );
class Factory
{
public:
static ConfigGui *create( const QSync::Member &, TQWidget *parent );
};
void setInstanceName( const TQString & );
TQString instanceName() const;
virtual void load( const TQString &xml ) = 0;
virtual TQString save() const = 0;
QSync::Member member() const { return mMember; }
TQBoxLayout *topLayout() const { return mTopLayout; }
private:
QSync::Member mMember;
TQBoxLayout *mTopLayout;
KLineEdit *mNameEdit;
};
class ConfigGuiXml : public ConfigGui
{
public:
ConfigGuiXml( const QSync::Member &, TQWidget *parent );
void load( const TQString & );
TQString save() const;
private:
TQTextEdit *mTextEdit;
};
#endif

@ -1,44 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2006 Daniel Gollub <dgollub@suse.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguiblank.h"
#include <tdelocale.h>
#include <tqlabel.h>
#include <tqlayout.h>
ConfigGuiBlank::ConfigGuiBlank( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
TQLabel *label = new TQLabel( i18n( "This member/plugin needs no configuration." ), this );
topLayout()->addWidget( label );
}
void ConfigGuiBlank::load( const TQString& )
{
}
TQString ConfigGuiBlank::save() const
{
TQString xml = "<config></config>";
return xml;
}

@ -1,35 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2006 Daniel Gollub <dgollub@suse.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIBLANK_H
#define CONFIGGUIBLANK_H
#include "configgui.h"
class ConfigGuiBlank : public ConfigGui
{
public:
ConfigGuiBlank( const QSync::Member &member, TQWidget *parent = 0 );
void load( const TQString &xml );
TQString save() const;
};
#endif

@ -1,91 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguievo2.h"
#include <tqdom.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqstring.h>
#include <kurlrequester.h>
#include <kurl.h>
#include <tdefile.h>
#include <kdialog.h>
#include <tdelocale.h>
ConfigGuiEvo2::ConfigGuiEvo2( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
initGUI();
}
void ConfigGuiEvo2::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode node;
for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "address_path" ) {
mAddressPath->setURL( element.text() );
} else if ( element.tagName() == "calendar_path" ) {
mCalendarPath->setURL( element.text() ) ;
} else if ( element.tagName() == "tasks_path" ) {
mTasksPath->setURL( element.text() );
}
}
}
TQString ConfigGuiEvo2::save() const
{
TQString config = "<config>\n";
config += TQString( "<address_path>%1</address_path>\n" ).arg( mAddressPath->url() );
config += TQString( "<calendar_path>%1</calendar_path>\n" ).arg( mCalendarPath->url() );
config += TQString( "<tasks_path>%1</tasks_path>\n" ).arg( mTasksPath->url() );
config += "</config>";
return config;
}
void ConfigGuiEvo2::initGUI()
{
TQGridLayout *layout = new TQGridLayout( topLayout(), 12, 3, KDialog::spacingHint() );
layout->setMargin( KDialog::marginHint() );
layout->addWidget( new TQLabel( i18n( "Address Book location:" ), this ), 0, 0 );
mAddressPath = new KURLRequester( this );
mAddressPath->setMode( KFile::Directory );
layout->addMultiCellWidget( mAddressPath, 0, 0, 1, 2 );
layout->addWidget( new TQLabel( i18n( "Calendar location:" ), this ), 1, 0 );
mCalendarPath = new KURLRequester( this );
mCalendarPath->setMode( KFile::Directory );
layout->addMultiCellWidget( mCalendarPath, 1, 1, 1, 2 );
layout->addWidget( new TQLabel( i18n( "Task list location:" ), this ), 2, 0 );
mTasksPath = new KURLRequester( this );
mTasksPath->setMode( KFile::Directory );
layout->addMultiCellWidget( mTasksPath, 2, 2, 1, 2 );
}

@ -1,46 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIEVO2_H
#define CONFIGGUIEVO2_H
#include "configgui.h"
class KURLRequester;
class ConfigGuiEvo2 : public ConfigGui
{
public:
ConfigGuiEvo2( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
void initGUI();
KURLRequester *mAddressPath;
KURLRequester *mCalendarPath;
KURLRequester *mTasksPath;
};
#endif

@ -1,81 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguifile.h"
#include <kurlrequester.h>
#include <tdelocale.h>
#include <kdialog.h>
#include <tqlayout.h>
#include <tqcheckbox.h>
#include <tqlabel.h>
#include <tqdom.h>
ConfigGuiFile::ConfigGuiFile( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
TQBoxLayout *filenameLayout = new TQHBoxLayout( topLayout() );
TQLabel *label = new TQLabel( i18n("Directory name:"), this );
filenameLayout->addWidget( label );
mFilename = new KURLRequester( this );
mFilename->setMode( KFile::Directory | KFile::LocalOnly );
filenameLayout->addWidget( mFilename );
TQBoxLayout *recursiveLayout = new TQHBoxLayout( topLayout() );
mRecursive = new TQCheckBox( i18n("Sync all subdirectories"), this );
recursiveLayout->addWidget( mRecursive );
topLayout()->addStretch( 1 );
}
void ConfigGuiFile::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode n;
for( n = docElement.firstChild(); !n.isNull(); n = n.nextSibling() ) {
TQDomElement e = n.toElement();
if ( e.tagName() == "path" ) {
mFilename->setURL( e.text() );
} else if ( e.tagName() == "recursive" ) {
mRecursive->setChecked( e.text() == "TRUE" );
}
}
}
TQString ConfigGuiFile::save() const
{
TQString xml;
xml = "<config>";
xml += "<path>" + mFilename->url() + "</path>";
xml += "<recursive>";
if ( mRecursive->isChecked() ) xml += "TRUE";
else xml += "FALSE";
xml += "</recursive>";
xml += "</config>";
return xml;
}

@ -1,42 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIFILE_H
#define CONFIGGUIFILE_H
#include "configgui.h"
class KURLRequester;
class TQCheckBox;
class ConfigGuiFile : public ConfigGui
{
public:
ConfigGuiFile( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
KURLRequester *mFilename;
TQCheckBox *mRecursive;
};
#endif

@ -1,103 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
Copyright (c) 2006 Eduardo Habkost <ehabkost@raisama.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguigcalendar.h"
#include <tdelocale.h>
#include <tqlayout.h>
#include <tqlabel.h>
#include <tqdom.h>
#include <tqlineedit.h>
ConfigGuiGoogleCalendar::ConfigGuiGoogleCalendar( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
TQBoxLayout *userLayout = new TQHBoxLayout( topLayout() );
TQLabel *userLbl= new TQLabel( i18n("Username:"), this );
userLayout->addWidget(userLbl);
mUsername = new TQLineEdit(this);
userLayout->addWidget(mUsername);
TQBoxLayout *passLayout = new TQHBoxLayout( topLayout() );
TQLabel *passLbl = new TQLabel( i18n("Password:"), this );
passLayout->addWidget(passLbl);
mPassword = new TQLineEdit(this);
mPassword->setEchoMode(TQLineEdit::Password);
passLayout->addWidget(mPassword);
topLayout()->addWidget(new TQLabel( i18n("Please notice that currently the password is stored as plain text in the plugin configuration file"), this ));
TQBoxLayout *urlLayout = new TQHBoxLayout( topLayout() );
TQLabel *urlLbl = new TQLabel( i18n("Calendar URL:"), this );
urlLayout->addWidget(urlLbl);
mUrl = new TQLineEdit(this);
urlLayout->addWidget(mUrl);
topLayout()->addStretch( 1 );
}
void ConfigGuiGoogleCalendar::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode n;
for( n = docElement.firstChild(); !n.isNull(); n = n.nextSibling() ) {
TQDomElement e = n.toElement();
if ( e.tagName() == "username" ) {
mUsername->setText(e.text());
} else if ( e.tagName() == "password" ) {
mPassword->setText(e.text());
} else if ( e.tagName() == "url" ) {
mUrl->setText(e.text());
}
}
}
TQString ConfigGuiGoogleCalendar::save() const
{
TQDomDocument doc;
TQDomElement root = doc.createElement("config");
doc.appendChild(root);
TQDomElement un = doc.createElement("username");
root.appendChild(un);
un.appendChild(doc.createTextNode(mUsername->text()));
TQDomElement pass = doc.createElement("password");
root.appendChild(pass);
pass.appendChild(doc.createTextNode(mPassword->text()));
TQDomElement url = doc.createElement("url");
root.appendChild(url);
url.appendChild(doc.createTextNode(mUrl->text()));
//TODO: Implement me!
return doc.toString();
}

@ -1,43 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
Copyright (c) 2006 Eduardo Habkost <ehabkost@raisama.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIGCALENDAR_H
#define CONFIGGUIGCALENDAR_H
#include "configgui.h"
class TQLineEdit;
class ConfigGuiGoogleCalendar : public ConfigGui
{
public:
ConfigGuiGoogleCalendar( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
TQLineEdit *mUsername;
TQLineEdit *mPassword;
TQLineEdit *mUrl;
};
#endif

@ -1,223 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2006 David Förster <david@dfoerster.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguignokii.h"
#include <tdelocale.h>
#include <kdialog.h>
#include <kcombobox.h>
#include <kdebug.h>
#include <tqlayout.h>
#include <tqlabel.h>
#include <tqlineedit.h>
#include <tqcombobox.h>
#include <tqdom.h>
#include <tqvbox.h>
ConfigGuiGnokii::ConfigGuiGnokii( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
TQGridLayout *layout = new TQGridLayout( topLayout() );
// Model
TQLabel *label = new TQLabel( i18n("Model:"), this );
layout->addWidget( label, 0, 0 );
mModel = new KComboBox( true, this );
layout->addWidget( mModel, 0, 1 );
mModel->insertItem( "2110" );
mModel->insertItem( "3110" );
mModel->insertItem( "6110" );
mModel->insertItem( "6110" );
mModel->insertItem( "6160" );
mModel->insertItem( "6230" );
mModel->insertItem( "6230i" );
mModel->insertItem( "6510" );
mModel->insertItem( "7110" );
mModel->insertItem( "AT" );
// This one requires the gnapplet and rfcomm_channel
mModel->insertItem( "3650" );
mModel->insertItem( "6600" );
mModel->insertItem( "gnapplet" );
mModel->insertItem( "symbian" );
mModel->insertItem( "sx1" );
connect( mModel, TQT_SIGNAL (activated( int ) ),
this, TQT_SLOT( slotModelChanged () ) );
// Connection
label = new TQLabel( i18n("Connection:"), this );
layout->addWidget( label, 1, 0 );
mConnection = new TQComboBox( this );
layout->addWidget( mConnection, 1, 1 );
connect( mConnection, TQT_SIGNAL (activated( int ) ),
this, TQT_SLOT( slotConnectionChanged ( int ) ) );
// this is a list of all connection types accepted by the gnokii-sync plugin
mConnectionTypes.append( ConnectionType( "bluetooth", i18n( "Bluetooth" ) ) );
mConnectionTypes.append( ConnectionType( "irda", i18n( "IrDA" ) ) );
mConnectionTypes.append( ConnectionType( "serial", i18n( "Serial" ) ) );
mConnectionTypes.append( ConnectionType( "infrared", i18n( "Infrared" ) ) );
mConnectionTypes.append( ConnectionType( "tcp", i18n( "TCP" ) ) );
mConnectionTypes.append( ConnectionType( "dku2", i18n( "USB (nokia_dku2)" ) ) );
mConnectionTypes.append( ConnectionType( "dku2libusb", i18n( "USB (libusb)" ) ) );
mConnectionTypes.append( ConnectionType( "dau9p", i18n( "Serial (DAU9P cable)" ) ) );
mConnectionTypes.append( ConnectionType( "dlr3p", i18n( "Serial (DLR3P cable)" ) ) );
mConnectionTypes.append( ConnectionType( "tekram", i18n( "Tekram Ir-Dongle" ) ) );
mConnectionTypes.append( ConnectionType( "m2bus", i18n( "Serial (M2BUS protocol)" ) ) );
ConnectionTypeList::ConstIterator it;
for ( it = mConnectionTypes.begin(); it != mConnectionTypes.end(); it++ ) {
mConnection->insertItem( (*it).second );
}
TQVBox *connectionWidget = new TQVBox( this );
connectionWidget->setMargin( KDialog::marginHint() );
connectionWidget->setSpacing( 5 );
mBluetooth = new BluetoothWidget( connectionWidget );
mBluetooth->hide();
layout->addMultiCellWidget( connectionWidget, 2, 2, 0, 1 );
// Port
mPortLabel = new TQLabel( i18n("Port:"), this );
layout->addWidget( mPortLabel, 2, 0 );
mPortLabel->hide();
mPort = new KComboBox( true, this );
layout->addWidget( mPort, 2, 1 );
mPort->hide();
mPort->insertItem( "/dev/ircomm0" );
mPort->insertItem( "/dev/ircomm1" );
mPort->insertItem( "/dev/ttyS0" );
mPort->insertItem( "/dev/ttyS1" );
mPort->insertItem( "/dev/ttyUSB0" );
mPort->insertItem( "/dev/ttyUSB1" );
layout->setColStretch( 1, 1 );
topLayout()->addStretch( 1 );
}
void ConfigGuiGnokii::slotConnectionChanged( int nth )
{
mPort->hide();
mPortLabel->hide();
mBluetooth->hide();
// Bluetooth
if ( nth == 0 ) {
mBluetooth->show();
slotModelChanged();
if ( !mPort->currentText().isEmpty() )
mBluetooth->setAddress( mPort->currentText() );
// dku2libusb
} else if ( nth == 6 ) {
// No widget needed.
} else {
mPort->show();
mPortLabel->show();
}
}
void ConfigGuiGnokii::slotModelChanged()
{
mBluetooth->hideChannel();
if ( mModel->currentText() == "gnapplet"
|| mModel->currentText() == "symbian"
|| mModel->currentText() == "3650"
|| mModel->currentText() == "6600"
|| mModel->currentText() == "sx1")
mBluetooth->showChannel();
else
mBluetooth->setChannel("");
}
void ConfigGuiGnokii::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode n;
for( n = docElement.firstChild(); !n.isNull(); n = n.nextSibling() ) {
TQDomElement e = n.toElement();
if ( e.tagName() == "connection" ) {
for ( uint i = 0; i < mConnectionTypes.count(); i++ ) {
if ( mConnectionTypes[i].first == e.text()) {
mConnection->setCurrentItem( i );
slotConnectionChanged( i );
break;
}
}
} else if ( e.tagName() == "port" ) {
mPort->setCurrentText( e.text() );
} else if ( e.tagName() == "model" ) {
mModel->setCurrentText( e.text() );
} else if ( e.tagName() == "rfcomm_channel" ) {
mBluetooth->setChannel( e.text() );
mBluetooth->showChannel();
}
}
}
TQString ConfigGuiGnokii::save() const
{
TQString xml;
xml = "<config>";
ConnectionTypeList::ConstIterator it;
for ( it = mConnectionTypes.begin(); it != mConnectionTypes.end(); it++ ) {
if ( mConnection->currentText() == (*it).second ) {
xml += "<connection>" + (*it).first + "</connection>";
break;
}
}
if ( (*it).first == "bluetooth" )
xml += "<port>" + mBluetooth->address() + "</port>";
else if ( (*it).first == "dku2libusb" )
xml += "<port>" + TQString("FF:FF:FF:FF:FF:FF") + "</port>"; // Only place holder for libgnokii
else
xml += "<port>" + mPort->currentText() + "</port>";
// model
xml += "<model>" + mModel->currentText() + "</model>";
// rfcomm_channel
if ( !mBluetooth->channel().isNull() )
xml += "<rfcomm_channel>" + mBluetooth->channel() + "</rfcomm_channel>";
xml += "</config>";
return xml;
}
#include "configguignokii.moc"

@ -1,63 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2006 David Förster <david@dfoerster.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIGNOKII_H
#define CONFIGGUIGNOKII_H
#include "configgui.h"
#include "connectionwidgets.h"
#include <tqvaluelist.h>
#include <tqpair.h>
class TQLabel;
class TQLineEdit;
class TQComboBox;
class ConfigGuiGnokii : public ConfigGui
{
Q_OBJECT
public:
ConfigGuiGnokii( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
TQComboBox *mConnection;
KComboBox *mPort;
TQLabel *mPortLabel;
KComboBox *mModel;
BluetoothWidget *mBluetooth;
typedef TQPair<TQString, TQString> ConnectionType;
typedef TQValueList<ConnectionType> ConnectionTypeList;
ConnectionTypeList mConnectionTypes;
protected slots:
void slotConnectionChanged( int nth );
void slotModelChanged();
};
#endif

@ -1,103 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguigpe.h"
#include <tqcheckbox.h>
#include <tqdom.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqspinbox.h>
#include <kcombobox.h>
#include <kdialog.h>
#include <klineedit.h>
#include <tdelocale.h>
ConfigGuiGpe::ConfigGuiGpe( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
initGUI();
mConnectionMode->insertItem( i18n( "Local" ) );
mConnectionMode->insertItem( i18n( "Ssh" ) );
}
void ConfigGuiGpe::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode node;
for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "use_local" ) {
if ( element.text().toInt() == 1 )
mConnectionMode->setCurrentItem( 0 );
else
mConnectionMode->setCurrentItem( 1 );
} else if ( element.tagName() == "handheld_ip" ) {
mIP->setText( element.text() );
} else if ( element.tagName() == "handheld_port" ) {
mPort->setValue( element.text().toInt() );
} else if ( element.tagName() == "handheld_user" ) {
mUser->setText( element.text() );
}
}
}
TQString ConfigGuiGpe::save() const
{
TQString config = "<config>";
config += TQString( "<use_local>%1</use_local>" ).arg( mConnectionMode->currentItem() == 0 );
config += TQString( "<use_ssh>%1</use_ssh>" ).arg( mConnectionMode->currentItem() == 1 );
config += TQString( "<handheld_ip>%1</handheld_ip>" ).arg( mIP->text() );
config += TQString( "<handheld_port>%1</handheld_port>" ).arg( mPort->value() );
config += TQString( "<handheld_user>%1</handheld_user>" ).arg( mUser->text() );
config += "</config>";
return config;
}
void ConfigGuiGpe::initGUI()
{
TQGridLayout *layout = new TQGridLayout( topLayout(), 12, 4, KDialog::spacingHint() );
layout->setMargin( KDialog::marginHint() );
layout->addWidget( new TQLabel( i18n( "Connection Mode:" ), this ), 0, 0 );
mConnectionMode = new KComboBox( this );
layout->addMultiCellWidget( mConnectionMode, 0, 0, 0, 3 );
layout->addWidget( new TQLabel( i18n( "IP Address:" ), this ), 1, 0 );
mIP = new KLineEdit( this );
mIP->setInputMask( "000.000.000.000" );
layout->addWidget( mIP, 1, 1 );
layout->addWidget( new TQLabel( i18n( "Port:" ), this ), 1, 2, TQt::AlignRight );
mPort = new TQSpinBox( 1, 65536, 1, this );
layout->addWidget( mPort, 1, 3 );
layout->addWidget( new TQLabel( i18n( "User:" ), this ), 2, 0 );
mUser = new KLineEdit( this );
layout->addMultiCellWidget( mUser, 2, 2, 1, 3 );
}

@ -1,50 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIGPE_H
#define CONFIGGUIGPE_H
#include "configgui.h"
class TQSpinBox;
class KComboBox;
class KLineEdit;
class ConfigGuiGpe : public ConfigGui
{
public:
ConfigGuiGpe( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
void initGUI();
KComboBox *mConnectionMode;
KLineEdit *mIP;
TQSpinBox *mPort;
KLineEdit *mUser;
};
#endif

@ -1,192 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include <kcombobox.h>
#include <kdialog.h>
#include <tdeglobal.h>
#include <kiconloader.h>
#include <kinputdialog.h>
#include <klineedit.h>
#include <tdelocale.h>
#include <tdemessagebox.h>
#include <kdebug.h>
#include <tqapplication.h>
#include <tqeventloop.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqpushbutton.h>
#include <tqspinbox.h>
#include <tqtabwidget.h>
#include <tqtooltip.h>
#include <tqvbox.h>
#include "configguiirmc.h"
ConfigGuiIRMC::ConfigGuiIRMC( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
initGUI();
mConnectionType->insertItem( i18n( "Bluetooth" ) );
mConnectionType->insertItem( i18n( "InfraRed (IR)" ) );
mConnectionType->insertItem( i18n( "Cable" ) );
connect( mConnectionType, TQT_SIGNAL( activated( int ) ),
this, TQT_SLOT( connectionTypeChanged( int ) ) );
connectionTypeChanged( 0 );
}
void ConfigGuiIRMC::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode node;
for ( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "connectmedium" ) {
if ( element.text() == "bluetooth" ) {
mConnectionType->setCurrentItem( 0 );
connectionTypeChanged( 0 );
} else if ( element.text() == "ir" ) {
mConnectionType->setCurrentItem( 1 );
connectionTypeChanged( 1 );
} else if ( element.text() == "cable" ) {
mConnectionType->setCurrentItem( 2 );
connectionTypeChanged( 2 );
}
} else if (element.tagName() == "btunit" ) {
mBluetoothWidget->setAddress( element.text() );
} else if (element.tagName() == "btchannel" ) {
mBluetoothWidget->setChannel( element.text() );
} else if (element.tagName() == "donttellsync" ) {
mDontTellSync->setChecked( element.text() == "true" );
}
}
mIRWidget->load( docElement );
mCableWidget->load( docElement );
}
TQString ConfigGuiIRMC::save() const
{
TQDomDocument doc;
TQDomElement config = doc.createElement( "config" );
doc.appendChild( config );
TQDomElement element = doc.createElement( "connectmedium" );
if ( mConnectionType->currentItem() == 0 )
element.appendChild( doc.createTextNode( "bluetooth" ) );
if ( mConnectionType->currentItem() == 1 )
element.appendChild( doc.createTextNode( "ir" ) );
if ( mConnectionType->currentItem() == 2 )
element.appendChild( doc.createTextNode( "cable" ) );
config.appendChild( element );
if ( mConnectionType->currentItem() == 0 ) {
TQDomElement btunit = doc.createElement( "btunit" );
if ( !mBluetoothWidget->address().isEmpty() )
btunit.appendChild( doc.createTextNode( mBluetoothWidget->address() ) );
TQDomElement btchannel = doc.createElement( "btchannel" );
if ( !mBluetoothWidget->channel().isEmpty() )
btchannel.appendChild( doc.createTextNode( mBluetoothWidget->channel() ) );
config.appendChild( btunit );
config.appendChild( btchannel );
}
if ( mDontTellSync->isChecked() ) {
TQDomElement dontellsync = doc.createElement( "donttellsync" );
dontellsync.appendChild( doc.createTextNode( "true" ) );
config.appendChild( dontellsync );
}
mIRWidget->save( doc, config );
mCableWidget->save( doc, config );
return doc.toString();
}
void ConfigGuiIRMC::connectionTypeChanged( int type )
{
mBluetoothWidget->hide();
mIRWidget->hide();
mCableWidget->hide();
if ( type == 0 )
mBluetoothWidget->show();
else if ( type == 1 )
mIRWidget->show();
else
mCableWidget->show();
}
void ConfigGuiIRMC::initGUI()
{
TQTabWidget *tabWidget = new TQTabWidget( this );
topLayout()->addWidget( tabWidget );
TQVBox *connectionWidget = new TQVBox( tabWidget );
connectionWidget->setMargin( KDialog::marginHint() );
connectionWidget->setSpacing( 5 );
tabWidget->addTab( connectionWidget, i18n( "Connection" ) );
mConnectionType = new KComboBox( connectionWidget );
TQToolTip::add( mConnectionType, i18n( "Select your connection type." ) );
mBluetoothWidget = new BluetoothWidget( connectionWidget );
mBluetoothWidget->hide();
mIRWidget = new IRWidget( connectionWidget );
mIRWidget->hide();
mCableWidget = new CableWidget( connectionWidget );
mCableWidget->hide();
connectionWidget->setStretchFactor( mBluetoothWidget, 1 );
connectionWidget->setStretchFactor( mIRWidget, 1 );
connectionWidget->setStretchFactor( mCableWidget, 1 );
TQVBox *optionsWidget = new TQVBox( tabWidget );
optionsWidget->setMargin( KDialog::marginHint() );
optionsWidget->setSpacing( 5 );
tabWidget->addTab( optionsWidget, i18n( "Options" ) );
TQHBox *optionBox = new TQHBox( optionsWidget );
optionBox->setSpacing( KDialog::spacingHint() );
TQLabel *label = new TQLabel( i18n( "Don't send OBEX UUID (IRMC-SYNC)" ), optionBox );
mDontTellSync = new TQCheckBox( optionBox );
TQToolTip::add( mDontTellSync, i18n( "Don't send OBEX UUID while connecting. Needed for older IrMC based mobile phones." ) );
label->setBuddy( mDontTellSync );
}
#include "configguiirmc.moc"

@ -1,62 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIIRMC_H
#define CONFIGGUIIRMC_H
#include <tqcheckbox.h>
#include <tqdom.h>
#include "configgui.h"
#include "connectionwidgets.h"
class KComboBox;
class KLineEdit;
class TQCheckBox;
class TQPushButton;
class TQSpinBox;
class ConfigGuiIRMC : public ConfigGui
{
Q_OBJECT
public:
ConfigGuiIRMC( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
protected slots:
void connectionTypeChanged( int type );
private:
void initGUI();
KComboBox *mConnectionType;
TQCheckBox *mDontTellSync;
BluetoothWidget *mBluetoothWidget;
IRWidget *mIRWidget;
CableWidget *mCableWidget;
};
#endif

@ -1,98 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguijescs.h"
#include <tqcheckbox.h>
#include <tqdom.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <klineedit.h>
#include <kdialog.h>
#include <tdelocale.h>
ConfigGuiJescs::ConfigGuiJescs( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
initGUI();
}
void ConfigGuiJescs::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode node;
for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "url" ) {
mUrl->setText( element.text() );
} else if ( element.tagName() == "username" ) {
mUsername->setText( element.text() );
} else if ( element.tagName() == "password" ) {
mPassword->setText( element.text() );
} else if ( element.tagName() == "del_notify" ) {
mDelNotify->setChecked( element.text() == "1" );
}
}
}
TQString ConfigGuiJescs::save() const
{
int delNotifyState;
TQString config = "<config>\n";
config += TQString( "<url>%1</url>\n" ).arg( mUrl->text() );
config += TQString( "<username>%1</username>\n" ).arg( mUsername->text() );
config += TQString( "<password>%1</password>\n" ).arg( mPassword->text() );
if ( mDelNotify->isChecked() ) { delNotifyState = 1;
} else { delNotifyState = 0;
}
config += TQString( "<del_notify>%1</del_notify>\n" ).arg( delNotifyState );
config += "</config>";
return config;
}
void ConfigGuiJescs::initGUI()
{
TQGridLayout *layout = new TQGridLayout( topLayout(), 12, 3, KDialog::spacingHint() );
layout->setMargin( KDialog::marginHint() );
layout->addWidget( new TQLabel( i18n( "URL:" ), this ), 0, 0 );
mUrl = new KLineEdit( this );
layout->addMultiCellWidget( mUrl, 0, 0, 1, 2 );
layout->addWidget( new TQLabel( i18n( "Username:" ), this ), 1, 0 );
mUsername = new KLineEdit( this );
layout->addMultiCellWidget( mUsername, 1, 1, 1, 2 );
layout->addWidget( new TQLabel( i18n( "Password:" ), this ), 2, 0 );
mPassword = new KLineEdit( this );
mPassword->setEchoMode( KLineEdit::Password );
layout->addMultiCellWidget( mPassword, 2, 2, 1, 2 );
mDelNotify = new TQCheckBox( this );
mDelNotify->setText( "Notify attendees about event/task deletion" );
layout->addMultiCellWidget( mDelNotify, 3, 3, 0, 2 );
}

@ -1,48 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIJESCS_H
#define CONFIGGUIJESCS_H
#include "configgui.h"
class KLineEdit;
class TQCheckBox;
class ConfigGuiJescs : public ConfigGui
{
public:
ConfigGuiJescs( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
void initGUI();
KLineEdit *mUrl;
KLineEdit *mUsername;
KLineEdit *mPassword;
TQCheckBox *mDelNotify;
};
#endif

@ -1,153 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguildap.h"
#include <tqcheckbox.h>
#include <tqdom.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqspinbox.h>
#include <kcombobox.h>
#include <kdialog.h>
#include <klineedit.h>
#include <tdelocale.h>
ConfigGuiLdap::ConfigGuiLdap( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
initGUI();
mSearchScope->insertItem( i18n( "Base" ) );
mSearchScope->insertItem( i18n( "One" ) );
mSearchScope->insertItem( i18n( "Sub" ) );
}
void ConfigGuiLdap::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode node;
for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "servername" ) {
mLdapWidget->setHost( element.text() );
} else if ( element.tagName() == "serverport" ) {
mLdapWidget->setPort( element.text().toInt() );
} else if ( element.tagName() == "binddn" ) {
mLdapWidget->setBindDN( element.text() );
} else if ( element.tagName() == "password" ) {
mLdapWidget->setPassword( element.text() );
} else if ( element.tagName() == "anonymous" ) {
mLdapWidget->setAuthAnon( element.text().toInt() == 1 );
} else if ( element.tagName() == "searchbase" ) {
mLdapWidget->setDn( element.text() );
} else if ( element.tagName() == "searchfilter" ) {
mLdapWidget->setFilter( element.text() );
} else if ( element.tagName() == "storebase" ) {
mLdapWidget->setDn( element.text() );
} else if ( element.tagName() == "keyattr" ) {
mKeyAttribute->setText( element.text() );
} else if ( element.tagName() == "scope" ) {
TQStringList list;
list << "base" << "one" << "sub";
for ( uint i = 0; i < list.count(); ++i )
if ( list[ i ] == element.text() )
mSearchScope->setCurrentItem( i );
} else if ( element.tagName() == "authmech" ) {
if ( element.text() == "SIMPLE" ) {
mLdapWidget->setAuthSimple( true );
}
} else if ( element.tagName() == "encryption" ) {
mEncryption->setChecked( element.text().toInt() == 1 );
} else if ( element.tagName() == "ldap_read" ) {
mReadLdap->setChecked( element.text().toInt() == 1 );
} else if ( element.tagName() == "ldap_write" ) {
mWriteLdap->setChecked( element.text().toInt() == 1 );
}
}
}
TQString ConfigGuiLdap::save() const
{
TQString config = "<config>\n";
config += TQString( "<servername>%1</servername>\n" ).arg( mLdapWidget->host() );
config += TQString( "<serverport>%1</serverport>\n" ).arg( mLdapWidget->port() );
config += TQString( "<binddn>%1</binddn>\n" ).arg( mLdapWidget->bindDN() );
config += TQString( "<password>%1</password>\n" ).arg( mLdapWidget->password() );
config += TQString( "<anonymous>%1</anonymous>\n" ).arg( mLdapWidget->isAuthAnon() ? "1" : "0" );
config += TQString( "<searchbase>%1</searchbase>\n" ).arg( mLdapWidget->dn() );
config += TQString( "<searchfilter>%1</searchfilter>\n" ).arg( mLdapWidget->filter() );
config += TQString( "<storebase>%1</storebase>\n" ).arg( mLdapWidget->dn() );
config += TQString( "<keyattr>%1</keyattr>\n" ).arg( mKeyAttribute->text() );
TQStringList scopes;
scopes << "base" << "one" << "sub";
config += TQString( "<scope>%1</scope>\n" ).arg( scopes[ mSearchScope->currentItem() ] );
config += TQString( "<authmech>SIMPLE</authmech>\n" );
config += TQString( "<encryption>%1</encryption>\n" ).arg( mEncryption->isChecked() ? "1" : "0" );
config += TQString( "<ldap_read>%1</ldap_read>\n" ).arg( mReadLdap->isChecked() ? "1" : "0" );
config += TQString( "<ldap_write>%1</ldap_write>\n" ).arg( mWriteLdap->isChecked() ? "1" : "0" );
config += "</config>";
return config;
}
void ConfigGuiLdap::initGUI()
{
TQGridLayout *layout = new TQGridLayout( topLayout(), 12, 4, KDialog::spacingHint() );
layout->setMargin( KDialog::marginHint() );
mLdapWidget = new TDEABC::LdapConfigWidget( TDEABC::LdapConfigWidget::W_HOST |
TDEABC::LdapConfigWidget::W_PORT |
TDEABC::LdapConfigWidget::W_USER |
TDEABC::LdapConfigWidget::W_PASS |
TDEABC::LdapConfigWidget::W_BINDDN |
TDEABC::LdapConfigWidget::W_DN |
TDEABC::LdapConfigWidget::W_FILTER |
TDEABC::LdapConfigWidget::W_AUTHBOX, this );
mKeyAttribute = new KLineEdit( this );
mSearchScope = new KComboBox( this );
mEncryption = new TQCheckBox( i18n( "Use encryption" ), this );
mReadLdap = new TQCheckBox( i18n( "Load data from LDAP" ), this );
mWriteLdap = new TQCheckBox( i18n( "Save data to LDAP" ), this );
layout->addMultiCellWidget( mLdapWidget, 0, 9, 0, 3 );
layout->addWidget( new TQLabel( i18n( "Key Attribute:" ), this ), 10, 0 );
layout->addMultiCellWidget( mKeyAttribute, 10, 10, 1, 2 );
layout->addWidget( new TQLabel( i18n( "Search Scope:" ), this ), 11, 0 );
layout->addMultiCellWidget( mSearchScope, 11, 11, 1, 2 );
layout->addWidget( mEncryption, 12, 0 );
layout->addWidget( mReadLdap, 13, 0 );
layout->addWidget( mWriteLdap, 13, 3 );
}
#include "configguildap.moc"

@ -1,61 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUILDAP_H
#define CONFIGGUILDAP_H
#include "configgui.h"
#include "tdeabc/ldapconfigwidget.h"
class TQCheckBox;
class TQLabel;
class TQSpinBox;
namespace TDEABC {
class LdapConfigWidget;
}
class KComboBox;
class KLineEdit;
class ConfigGuiLdap : public ConfigGui
{
Q_OBJECT
public:
ConfigGuiLdap( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
void initGUI();
TDEABC::LdapConfigWidget *mLdapWidget;
KLineEdit *mKeyAttribute;
KComboBox *mSearchScope;
TQCheckBox *mEncryption;
TQCheckBox *mReadLdap;
TQCheckBox *mWriteLdap;
};
#endif

@ -1,71 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguimoto.h"
#include <tqdom.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <klineedit.h>
#include <kdialog.h>
#include <tdelocale.h>
ConfigGuiMoto::ConfigGuiMoto( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
initGUI();
}
void ConfigGuiMoto::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode node;
for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "device" ) {
mDeviceString->setText( element.text() );
}
}
}
TQString ConfigGuiMoto::save() const
{
TQString config = "<config>\n";
config += TQString( "<device>%1</device>\n" ).arg( mDeviceString->text() );
config += "</config>";
return config;
}
void ConfigGuiMoto::initGUI()
{
TQGridLayout *layout = new TQGridLayout( topLayout(), 12, 3, KDialog::spacingHint() );
layout->setMargin( KDialog::marginHint() );
layout->addWidget( new TQLabel( i18n( "Device String:" ), this ), 0, 0 );
mDeviceString = new KLineEdit( this );
layout->addMultiCellWidget( mDeviceString, 0, 0, 1, 2 );
}

@ -1,43 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIMOTO_H
#define CONFIGGUIMOTO_H
#include "configgui.h"
class KLineEdit;
class ConfigGuiMoto : public ConfigGui
{
public:
ConfigGuiMoto( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
void initGUI();
KLineEdit *mDeviceString;
};
#endif

@ -1,135 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2006 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguiopie.h"
#include <tdelocale.h>
#include <tqcombobox.h>
#include <tqdom.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqlineedit.h>
#include <tqspinbox.h>
ConfigGuiOpie::ConfigGuiOpie( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
TQGridLayout *layout = new TQGridLayout( topLayout() );
TQLabel *label = new TQLabel( i18n("Device IP:"), this );
layout->addWidget( label, 0, 0 );
mDeviceIP = new TQLineEdit( this );
mDeviceIP->setInputMask( "000.000.000.000" );
label->setBuddy( mDeviceIP );
layout->addWidget( mDeviceIP, 0, 1 );
label = new TQLabel( i18n("Device Type:"), this );
layout->addWidget( label, 1, 0 );
mDeviceType = new TQComboBox( this );
label->setBuddy( mDeviceType );
layout->addWidget( mDeviceType, 1, 1 );
label = new TQLabel( i18n("Username:"), this );
layout->addWidget( label, 2, 0 );
mUserName = new TQLineEdit( this );
label->setBuddy( mUserName );
layout->addWidget( mUserName, 2, 1 );
label = new TQLabel( i18n("Password:"), this );
layout->addWidget( label, 3, 0 );
mPassword = new TQLineEdit( this );
mPassword->setEchoMode( TQLineEdit::Password );
label->setBuddy( mPassword );
layout->addWidget( mPassword, 3, 1 );
label = new TQLabel( i18n("Protocol:"), this );
layout->addWidget( label, 4, 0 );
mConnectionType = new TQComboBox( this );
label->setBuddy( mConnectionType );
layout->addWidget( mConnectionType, 4, 1 );
label = new TQLabel( i18n("Port:"), this );
layout->addWidget( label, 5, 0 );
mPort = new TQSpinBox( this );
mPort->setRange( 0, 65335 );
label->setBuddy( mPort );
layout->addWidget( mPort, 5, 1 );
mDeviceType->insertItem( i18n("Opie/OpenZaurus") );
mDeviceType->insertItem( i18n("TQtopia2") );
mConnectionType->insertItem( i18n("SCP") );
mConnectionType->insertItem( i18n("FTP") );
topLayout()->addStretch( 1 );
}
void ConfigGuiOpie::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode n;
for( n = docElement.firstChild(); !n.isNull(); n = n.nextSibling() ) {
TQDomElement e = n.toElement();
if ( e.tagName() == "username" ) {
mUserName->setText( e.text() );
} else if ( e.tagName() == "password" ) {
mPassword->setText( e.text() );
} else if ( e.tagName() == "url" ) {
mDeviceIP->setText( e.text() );
} else if ( e.tagName() == "port" ) {
mPort->setValue( e.text().toInt() );
} else if ( e.tagName() == "device" ) {
if ( e.text() == "opie" )
mDeviceType->setCurrentItem( 0 );
else
mDeviceType->setCurrentItem( 1 );
} else if ( e.tagName() == "conntype" ) {
if ( e.text() == "scp" )
mConnectionType->setCurrentItem( 0 );
else
mConnectionType->setCurrentItem( 1 );
}
}
}
TQString ConfigGuiOpie::save() const
{
TQString xml;
xml = "<config>";
xml += "<username>" + mUserName->text() + "</username>";
xml += "<password>" + mPassword->text() + "</password>";
xml += "<url>" + mDeviceIP->text() + "</url>";
xml += "<device>" + TQString( mDeviceType->currentItem() == 0 ? "opie" : "qtopia2" ) + "</device>";
xml += "<port>" + TQString::number( mPort->value() ) + "</port>";
xml += "<conntype>" + TQString( mConnectionType->currentItem() == 0 ? "scp" : "ftp" ) + "</conntype>";
xml += "</config>";
return xml;
}

@ -1,47 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2006 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIOPIE_H
#define CONFIGGUIOPIE_H
#include "configgui.h"
class TQComboBox;
class TQLineEdit;
class TQSpinBox;
class ConfigGuiOpie : public ConfigGui
{
public:
ConfigGuiOpie( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
TQLineEdit *mDeviceIP;
TQComboBox *mDeviceType;
TQLineEdit *mUserName;
TQLineEdit *mPassword;
TQComboBox *mConnectionType;
TQSpinBox *mPort;
};
#endif

@ -1,200 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include <kcombobox.h>
#include <kdialog.h>
#include <klineedit.h>
#include <tdelocale.h>
#include <tqbuttongroup.h>
#include <tqcheckbox.h>
#include <tqdom.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqradiobutton.h>
#include <tqspinbox.h>
#include <tqtabwidget.h>
#include "configguipalm.h"
ConfigGuiPalm::ConfigGuiPalm( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
initGUI();
mDevice->insertItem( "/dev/pilot" );
mDevice->insertItem( "/dev/ttyUSB0" );
mDevice->insertItem( "/dev/ttyUSB1" );
mDevice->insertItem( "/dev/ttyUSB2" );
mDevice->insertItem( "/dev/ttyUSB3" );
mSpeed->insertItem( "9600" );
mSpeed->insertItem( "19200" );
mSpeed->insertItem( "38400" );
mSpeed->insertItem( "57600" );
mSpeed->insertItem( "115200" );
}
void ConfigGuiPalm::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode node;
for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "sockaddr" ) {
mDevice->setCurrentText( element.text() );
} else if ( element.tagName() == "speed" ) {
mSpeed->setCurrentText( element.text() );
} else if ( element.tagName() == "timeout" ) {
mTimeout->setValue( element.text().toInt() );
} else if ( element.tagName() == "username" ) {
mUserName->setText( element.text() );
} else if ( element.tagName() == "mismatch" ) {
switch ( element.text().toInt() ) {
case 0:
mSyncAlways->setChecked( true );
break;
case 2:
mSyncAbort->setChecked( true );
break;
case 1:
default:
mSyncAsk->setChecked( true );
break;
}
} else if ( element.tagName() == "popup" ) {
mPopup->setChecked( element.text() == "1" );
}
}
}
TQString ConfigGuiPalm::save() const
{
TQString config = "<config>";
config += "<sockaddr>" + mDevice->currentText() + "</sockaddr>";
config += "<username>" + mUserName->text() + "</username>";
config += "<timeout>" + TQString::number( mTimeout->value() ) + "</timeout>";
config += "<type>0</type>";
config += "<speed>" + mSpeed->currentText() + "</speed>";
config += "<id>0</id>";
config += "<codepage>cp1252</codepage>";
config += "<popup>" + TQString( mPopup->isChecked() ? "1" : "0" ) + "</popup>";
TQString popup;
if ( mSyncAlways->isChecked() )
popup = "0";
else if ( mSyncAsk->isChecked() )
popup = "1";
else if ( mSyncAbort->isChecked() )
popup = "2";
config += "<mismatch>" + popup + "</mismatch>";
config += "</config>";
return config;
}
void ConfigGuiPalm::initGUI()
{
TQFont boldFont = font();
boldFont.setBold( true );
TQTabWidget *tabWidget = new TQTabWidget( this );
TQWidget *connectionWidget = new TQWidget( tabWidget );
TQVBoxLayout *connectionLayout = new TQVBoxLayout( connectionWidget,
KDialog::marginHint(), KDialog::spacingHint() );
TQLabel *label = new TQLabel( i18n( "Connection" ), connectionWidget );
label->setFont( boldFont );
connectionLayout->addWidget( label );
TQGridLayout *gridLayout = new TQGridLayout( connectionLayout, 3, 2, KDialog::spacingHint() );
gridLayout->setMargin( KDialog::marginHint() );
gridLayout->addWidget( new TQLabel( i18n( "Port:" ), connectionWidget ), 0, 0 );
gridLayout->addWidget( new TQLabel( i18n( "Speed:" ), connectionWidget ), 1, 0 );
gridLayout->addWidget( new TQLabel( i18n( "Timeout:" ), connectionWidget ), 2, 0 );
mDevice = new KComboBox( true, connectionWidget );
mSpeed = new KComboBox( connectionWidget );
mTimeout = new TQSpinBox( 1, 60, 1, connectionWidget );
mTimeout->setSuffix( i18n( " sec" ) );
gridLayout->addWidget( mDevice, 0, 1 );
gridLayout->addWidget( mSpeed, 1, 1 );
gridLayout->addWidget( mTimeout, 2, 1 );
gridLayout->setColStretch( 1, 1 );
label = new TQLabel( i18n( "User" ), connectionWidget );
label->setFont( boldFont );
connectionLayout->addWidget( label );
gridLayout = new TQGridLayout( connectionLayout, 1, 2, KDialog::spacingHint() );
gridLayout->setMargin( KDialog::marginHint() );
gridLayout->addWidget( new TQLabel( i18n( "Username:" ), connectionWidget ), 0, 0 );
mUserName = new KLineEdit( connectionWidget );
gridLayout->addWidget( mUserName, 0, 1 );
label = new TQLabel( i18n( "What to do if Username does not match" ), connectionWidget );
label->setFont( boldFont );
connectionLayout->addWidget( label );
gridLayout = new TQGridLayout( connectionLayout, 1, 2, KDialog::spacingHint() );
gridLayout->setMargin( KDialog::marginHint() );
TQButtonGroup *buttonGroup = new TQButtonGroup( 1, Qt::Horizontal, connectionWidget );
buttonGroup->setExclusive( true );
buttonGroup->setFrameStyle( TQFrame::NoFrame );
mSyncAlways = new TQRadioButton( i18n( "Sync Anyway" ), buttonGroup );
mSyncAsk = new TQRadioButton( i18n( "Ask What To Do" ), buttonGroup );
mSyncAbort = new TQRadioButton( i18n( "Abort Sync" ), buttonGroup );
gridLayout->addMultiCellWidget( buttonGroup, 0, 0, 0, 1 );
connectionLayout->addStretch( 1 );
tabWidget->addTab( connectionWidget, i18n( "Connection" ) );
TQWidget *optionWidget = new TQWidget( tabWidget );
TQVBoxLayout *optionLayout = new TQVBoxLayout( optionWidget,
KDialog::marginHint(), KDialog::spacingHint() );
label = new TQLabel( i18n( "Hotsync Notification" ), optionWidget );
label->setFont( boldFont );
optionLayout->addWidget( label );
gridLayout = new TQGridLayout( optionLayout, 1, 2, KDialog::spacingHint() );
gridLayout->setMargin( KDialog::marginHint() );
mPopup = new TQCheckBox( i18n( "Popup when interaction is required" ), optionWidget );
gridLayout->addMultiCellWidget( mPopup, 0, 0, 0, 1 );
optionLayout->addStretch( 1 );
tabWidget->addTab( optionWidget, i18n( "Options" ) );
topLayout()->addWidget( tabWidget );
}

@ -1,59 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUIPALM_H
#define CONFIGGUIPALM_H
#include "configgui.h"
class KComboBox;
class KLineEdit;
class TQCheckBox;
class TQRadioButton;
class TQSpinBox;
class ConfigGuiPalm : public ConfigGui
{
public:
ConfigGuiPalm( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
void initGUI();
KComboBox *mDevice;
KComboBox *mSpeed;
TQSpinBox *mTimeout;
KLineEdit *mUserName;
TQRadioButton *mSyncAlways;
TQRadioButton *mSyncAsk;
TQRadioButton *mSyncAbort;
TQCheckBox *mPopup;
KComboBox *mVerbosity;
KComboBox *mCodePage;
};
#endif

@ -1,367 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Tobias Koenig <tokoe@kde.org>
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguisunbird.h"
#include <tqdom.h>
#include <tqtabwidget.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqbuttongroup.h>
#include <tqcheckbox.h>
#include <tqsizepolicy.h>
#include <tqptrlist.h>
#include <tqspinbox.h>
#include <tqwidget.h>
#include <kurlrequester.h>
#include <klineedit.h>
#include <kpushbutton.h>
#include <kdialog.h>
#include <tdelocale.h>
#include <tdefile.h>
ConfigGuiSunbird::ConfigGuiSunbird( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
TQTabWidget *tabWidget = new TQTabWidget( this );
topLayout()->addWidget( tabWidget );
mLocalWidget = new TQWidget( tabWidget );
mLocalLayout = new TQVBoxLayout( mLocalWidget, KDialog::spacingHint() );
mWebdavWidget = new TQWidget( tabWidget );
mWebdavLayout = new TQVBoxLayout( mWebdavWidget, KDialog::spacingHint() );
tabWidget->addTab( mLocalWidget, i18n( "Local Calendars" ) );
tabWidget->addTab( mWebdavWidget, i18n( "WebDAV Calendars" ) );
KPushButton *mLocalAddButton = new KPushButton( mLocalWidget );
mLocalAddButton->setText( i18n( "Add new calendar" ) );
mLocalAddButton->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
mLocalLayout->addWidget( mLocalAddButton );
connect( mLocalAddButton, TQT_SIGNAL( clicked() ),
this, TQT_SLOT( addLocalCalendar() ) );
KPushButton *mWebdavAddButton = new KPushButton( mWebdavWidget );
mWebdavAddButton->setText( i18n( "Add new calendar" ) );
mWebdavAddButton->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
mWebdavLayout->addWidget( mWebdavAddButton );
connect( mWebdavAddButton, TQT_SIGNAL( clicked() ),
this, TQT_SLOT( addWebdavCalendar() ) );
mLocalSpacer = new TQSpacerItem( 20, 40, TQSizePolicy::Expanding );
mLocalLayout->addItem( mLocalSpacer );
mWebdavSpacer = new TQSpacerItem( 20, 40, TQSizePolicy::Expanding );
mWebdavLayout->addItem( mWebdavSpacer );
}
void ConfigGuiSunbird::load( const TQString &xml )
{
TQString path;
TQString url;
TQString username;
TQString password;
TQString defaultcal;
TQString days;
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode node;
for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "file" ) {
TQDomAttr pathAttr = element.attributeNode( "path" );
path = pathAttr.value();
TQDomAttr defaultAttr = element.attributeNode( "default" );
defaultcal = defaultAttr.value();
TQDomAttr daysAttr = element.attributeNode( "deletedaysold" );
days = daysAttr.value();
LocalCalendar *cal = new LocalCalendar( path, defaultcal, days, mLocalWidget );
mLocalLayout->removeItem( mLocalSpacer );
cal->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed ) );
mLocalLayout->addWidget( cal );
mLocalLayout->addItem( mLocalSpacer );
mLocalList.append( cal );
connect( cal, TQT_SIGNAL( deleteRequest( LocalCalendar* ) ), TQT_SLOT( delLocalCalendar( LocalCalendar* ) ) );
cal->show();
} else if ( element.tagName() == "webdav" ) {
TQDomAttr urlAttr = element.attributeNode( "url" );
url = urlAttr.value();
TQDomAttr unameAttr = element.attributeNode( "username" );
username = unameAttr.value();
TQDomAttr pwordAttr = element.attributeNode( "password" );
password = pwordAttr.value();
TQDomAttr defaultAttr = element.attributeNode( "default" );
defaultcal = defaultAttr.value();
TQDomAttr daysAttr = element.attributeNode( "deletedaysold" );
days = daysAttr.value();
WebdavCalendar *cal = new WebdavCalendar( username, password,
url, defaultcal, days, mWebdavWidget );
mWebdavLayout->removeItem( mWebdavSpacer );
cal->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed ) );
mWebdavLayout->addWidget( cal );
mWebdavLayout->addItem( mWebdavSpacer );
mWebdavList.append( cal );
connect( cal, TQT_SIGNAL( deleteRequest( WebdavCalendar* ) ), TQT_SLOT( delWebdavCalendar( WebdavCalendar* ) ) );
cal->show();
}
}
}
TQString ConfigGuiSunbird::save() const
{
TQString config = "<config>\n";
for ( uint i = 0; i < mLocalList.count(); ++i ) {
LocalCalendar *lcal = mLocalList[ i ];
config += TQString( "<file " );
config += TQString( "path=\"%1\" " ).arg( lcal->mPathRequester->url() );
if ( lcal->mDaysCheckBox->isChecked() ) {
config += TQString( "deletedaysold=\"%1\" " ).arg( lcal->mDaysSpinBox->value() );
}
if ( lcal->mDefaultCheckBox->isChecked() ) {
config += TQString( "default=\"1\" " );
}
config += TQString( "/>\n" );
}
for ( uint i = 0; i < mWebdavList.count(); ++i ) {
WebdavCalendar *wcal = mWebdavList[ i ];
config += TQString( "<webdav " );
config += TQString( "username=\"%1\" " ).arg( wcal->mUsername->text() );
config += TQString( "password=\"%1\" " ).arg( wcal->mPassword->text() );
config += TQString( "url=\"%1\" " ).arg( wcal->mUrl->text() );
if ( wcal->mDaysCheckBox->isChecked() ) {
config += TQString( "deletedaysold=\"%1\" " ).arg( wcal->mDaysSpinBox->value() );
}
if ( wcal->mDefaultCheckBox->isChecked() ) {
config += TQString( "default=\"1\" " );
}
config += TQString( "/>\n" );
}
config += "</config>";
return config;
}
void ConfigGuiSunbird::addLocalCalendar()
{
LocalCalendar *cal = new LocalCalendar( mLocalWidget );
mLocalLayout->removeItem( mLocalSpacer );
cal->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed ) );
mLocalLayout->addWidget( cal );
mLocalLayout->addItem( mLocalSpacer );
mLocalList.append( cal );
connect( cal, TQT_SIGNAL( deleteRequest( LocalCalendar* ) ), TQT_SLOT( delLocalCalendar( LocalCalendar* ) ) );
cal->show();
}
void ConfigGuiSunbird::delLocalCalendar( LocalCalendar *calendar )
{
mLocalList.remove( calendar );
calendar->deleteLater();
}
void ConfigGuiSunbird::addWebdavCalendar()
{
WebdavCalendar *cal = new WebdavCalendar( mWebdavWidget );
mWebdavLayout->removeItem( mWebdavSpacer );
cal->setSizePolicy( TQSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed ) );
mWebdavLayout->addWidget( cal );
mWebdavLayout->addItem( mWebdavSpacer );
mWebdavList.append( cal );
connect( cal, TQT_SIGNAL( deleteRequest( WebdavCalendar* ) ), TQT_SLOT( delWebdavCalendar( WebdavCalendar* ) ) );
cal->show();
}
void ConfigGuiSunbird::delWebdavCalendar( WebdavCalendar *calendar )
{
mWebdavList.remove( calendar );
calendar->deleteLater();
}
LocalCalendar::LocalCalendar( TQWidget *parent )
: TQWidget( parent )
{
initGui();
}
LocalCalendar::LocalCalendar( const TQString &path, const TQString &defaultcal, const TQString &days, TQWidget *parent )
: TQWidget( parent )
{
initGui();
mPathRequester->setURL( path );
mDefaultCheckBox->setChecked( defaultcal.toInt() == 1 );
if ( !days.isEmpty() ) {
mDaysCheckBox->setChecked( true );
mDaysSpinBox->setEnabled( true );
mDaysSpinBox->setValue( days.toInt() );
}
}
void LocalCalendar::initGui()
{
TQBoxLayout *bottomLayout = new TQHBoxLayout();
mDaysCheckBox = new TQCheckBox( this );
mDaysCheckBox->setText( i18n( "Sync only events newer than" ) );
mDaysSpinBox = new TQSpinBox( this );
mDaysSpinBox->setDisabled( true );
mDaysSpinBox->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
connect( mDaysCheckBox, TQT_SIGNAL( toggled( bool ) ),
this, TQT_SLOT( toggleDays( bool ) ) );
bottomLayout->addWidget( mDaysCheckBox );
bottomLayout->addWidget( mDaysSpinBox );
bottomLayout->addWidget( new TQLabel( i18n( "day(s)" ), this ) );
TQGridLayout *localLayout = new TQGridLayout( this );
mPathRequester = new KURLRequester( this );
KPushButton *removeButton = new KPushButton( this );
removeButton->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
removeButton->setText( i18n( "Remove" ) );
connect( removeButton, TQT_SIGNAL( clicked() ),
this, TQT_SLOT( deleteWidget() ) );
mDefaultCheckBox = new TQCheckBox( this );
mDefaultCheckBox->setText( i18n( "Set as Default" ) );
localLayout->addItem( new TQSpacerItem( 40, 20, TQSizePolicy::Expanding ), 0, 0 );
localLayout->addWidget( new TQLabel( i18n( "Location:" ), this ), 1, 0 );
localLayout->addWidget( mPathRequester, 1, 1 );
localLayout->addItem( new TQSpacerItem( 40, 20, TQSizePolicy::Fixed ), 1, 2 );
localLayout->addWidget( removeButton, 1, 3 );
localLayout->addMultiCellLayout( bottomLayout, 2, 2, 0, 2 );
localLayout->addWidget( mDefaultCheckBox, 2, 3 );
}
void LocalCalendar::deleteWidget()
{
emit deleteRequest( this );
}
WebdavCalendar::WebdavCalendar( TQWidget *parent )
: TQWidget( parent )
{
initGui();
};
WebdavCalendar::WebdavCalendar( const TQString &username, const TQString &password, const TQString &url,
const TQString &defaultcal, const TQString &days, TQWidget *parent )
: TQWidget( parent )
{
initGui();
mUsername->setText( username );
mPassword->setText( password );
mUrl->setText( url );
mDefaultCheckBox->setChecked( defaultcal.toInt() == 1 );
if ( !days.isEmpty() ) {
mDaysCheckBox->setChecked( true );
mDaysSpinBox->setEnabled( true );
mDaysSpinBox->setValue( days.toInt() );
}
}
void WebdavCalendar::initGui()
{
TQBoxLayout *bottomLayout = new TQHBoxLayout();
mDaysCheckBox = new TQCheckBox( this );
mDaysCheckBox->setText( i18n( "Sync only events newer than" ) );
mDaysSpinBox = new TQSpinBox( this );
mDaysSpinBox->setDisabled( true );
mDaysSpinBox->setSizePolicy( TQSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed ) );
connect( mDaysCheckBox, TQT_SIGNAL( toggled( bool ) ),
this, TQT_SLOT( toggleDays( bool ) ) );
bottomLayout->addWidget( mDaysCheckBox );
bottomLayout->addWidget( mDaysSpinBox );
bottomLayout->addWidget( new TQLabel( i18n( "day(s)" ), this ) );
TQGridLayout *webdavLayout = new TQGridLayout();
mUrl = new KLineEdit( this );
mUsername = new KLineEdit( this );
mPassword = new KLineEdit( this );
mPassword->setEchoMode( KLineEdit::Password );
KPushButton *removeButton = new KPushButton( this );
removeButton->setText( i18n( "Remove" ) );
connect( removeButton, TQT_SIGNAL( clicked() ),
this, TQT_SLOT( deleteWidget() ) );
mDefaultCheckBox = new TQCheckBox( this );
mDefaultCheckBox->setText( i18n( "Set as Default" ) );
webdavLayout->addWidget( new TQLabel( i18n( "Location:" ), this ), 0, 0 );
webdavLayout->addWidget( mUrl, 0, 1 );
webdavLayout->addItem( new TQSpacerItem( 40, 20, TQSizePolicy::Fixed ), 0, 2 );
webdavLayout->addWidget( removeButton, 0, 3 );
webdavLayout->addMultiCellLayout( bottomLayout, 1, 1, 0, 1 );
webdavLayout->addWidget( mDefaultCheckBox, 1, 3 );
TQGridLayout *mainLayout = new TQGridLayout( this );
mainLayout->addItem( new TQSpacerItem( 40, 20, TQSizePolicy::Fixed ), 0, 0 );
mainLayout->addMultiCellLayout( webdavLayout, 1, 1, 0, 4 );
mainLayout->addWidget( new TQLabel( i18n( "Username:" ), this ), 2, 0 );
mainLayout->addWidget( mUsername, 2, 1 );
mainLayout->addItem( new TQSpacerItem( 40, 20, TQSizePolicy::Fixed ), 2, 2 );
mainLayout->addWidget( new TQLabel( i18n( "Password:" ), this ), 2, 3 );
mainLayout->addWidget( mPassword, 2, 4 );
}
void WebdavCalendar::deleteWidget()
{
emit deleteRequest( this );
}
void LocalCalendar::toggleDays( bool state )
{
mDaysSpinBox->setEnabled( state );
}
void WebdavCalendar::toggleDays( bool state )
{
mDaysSpinBox->setEnabled( state );
}
#include "configguisunbird.moc"

@ -1,133 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Tobias Koenig <tokoe@kde.org>
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUISUNBIRD_H
#define CONFIGGUISUNBIRD_H
#include "configgui.h"
class TQWidget;
class TQSpinBox;
class TQCheckBox;
class TQVBoxLayout;
class TQSpacerItem;
class TQSignalMapper;
class KURLRequester;
class KPushButton;
class KLineEdit;
class LocalCalendar : public TQWidget
{
Q_OBJECT
public:
LocalCalendar( TQWidget *parent = 0 );
LocalCalendar( const TQString &path,
const TQString &defaultcal,
const TQString &days, TQWidget *parent = 0 );
KURLRequester *mPathRequester;
TQCheckBox *mDaysCheckBox;
TQSpinBox *mDaysSpinBox;
TQCheckBox *mDefaultCheckBox;
signals:
void deleteRequest( LocalCalendar* );
private slots:
void deleteWidget();
void toggleDays( bool days );
private:
void initGui();
};
class WebdavCalendar : public TQWidget
{
Q_OBJECT
public:
WebdavCalendar( TQWidget *parent = 0 );
WebdavCalendar( const TQString &username,
const TQString &password,
const TQString &url,
const TQString &defaultcal,
const TQString &days, TQWidget *parent = 0 );
KLineEdit *mUrl;
TQCheckBox *mDaysCheckBox;
TQSpinBox *mDaysSpinBox;
TQCheckBox *mDefaultCheckBox;
KLineEdit *mUsername;
KLineEdit *mPassword;
signals:
void deleteRequest( WebdavCalendar* );
private slots:
void deleteWidget();
void toggleDays( bool state );
private:
void initGui();
};
class ConfigGuiSunbird : public ConfigGui
{
Q_OBJECT
public:
ConfigGuiSunbird( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
public slots:
void addLocalCalendar();
void addWebdavCalendar();
void delLocalCalendar( LocalCalendar* );
void delWebdavCalendar( WebdavCalendar* );
private:
TQValueList<LocalCalendar*> mLocalList;
TQValueList<WebdavCalendar*> mWebdavList;
TQWidget *mLocalWidget;
TQWidget *mWebdavWidget;
TQVBoxLayout *mLocalLayout;
TQVBoxLayout *mWebdavLayout;
KPushButton *mLocalAddButton;
KPushButton *mWebdavAddButton;
TQSpacerItem *mLocalSpacer;
TQSpacerItem *mWebdavSpacer;
};
#endif

@ -1,93 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguisynce.h"
#include <tqdom.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqcheckbox.h>
#include <klineedit.h>
#include <kdialog.h>
#include <tdelocale.h>
ConfigGuiSynce::ConfigGuiSynce( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
initGUI();
}
void ConfigGuiSynce::load( const TQString &xml )
{
TQDomDocument doc;
doc.setContent( xml );
TQDomElement docElement = doc.documentElement();
TQDomNode node;
for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "contact" ) {
mContacts->setChecked( element.text().toInt() == 1 );
} else if ( element.tagName() == "todos" ) {
mTodos->setChecked( element.text().toInt() == 1 );
} else if ( element.tagName() == "calendar" ) {
mCalendar->setChecked( element.text().toInt() == 1 );
} else if ( element.tagName() == "file" ) {
mFile->setText( element.text() );
}
}
}
TQString ConfigGuiSynce::save() const
{
TQString config = "<config>\n";
config += TQString( "<contact>%1</contact>\n" ).arg( mContacts->isChecked() ? "1" : "0" );
config += TQString( "<todos>%1</todos>\n" ).arg( mTodos->isChecked() ? "1" : "0" );
config += TQString( "<calendar>%1</calendar>\n" ).arg( mCalendar->isChecked() ? "1" : "0" );
config += TQString( "<file>%1</file>\n" ).arg( mFile->text() );
config += "</config>";
return config;
}
void ConfigGuiSynce::initGUI()
{
TQGridLayout *layout = new TQGridLayout( topLayout(), 12, 2, KDialog::spacingHint() );
layout->setMargin( KDialog::marginHint() );
mContacts = new TQCheckBox( this );
mContacts->setText( "Sync Contacts" );
layout->addMultiCellWidget( mContacts, 0, 0, 0, 1 );
mTodos = new TQCheckBox( this );
mTodos->setText( "Sync \'Todo\' items" );
layout->addMultiCellWidget( mTodos, 1, 1, 0, 1 );
mCalendar = new TQCheckBox( this );
mCalendar->setText( "Sync Calendar" );
layout->addMultiCellWidget( mCalendar, 2, 2, 0, 1 );
layout->addWidget( new TQLabel( i18n( "File:" ), this ), 3, 0 );
mFile = new KLineEdit( this );
layout->addWidget( mFile, 3, 1 );
}

@ -1,49 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2007 Anirudh Ramesh <abattoir@abattoir.in>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUISYNCE_H
#define CONFIGGUISYNCE_H
#include "configgui.h"
class TQCheckBox;
class KLineEdit;
class ConfigGuiSynce : public ConfigGui
{
public:
ConfigGuiSynce( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
void initGUI();
TQCheckBox *mContacts;
TQCheckBox *mTodos;
TQCheckBox *mCalendar;
KLineEdit *mFile;
};
#endif

@ -1,227 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguisyncmlhttp.h"
#include <kcombobox.h>
#include <kdialog.h>
#include <klineedit.h>
#include <tdelocale.h>
#include <kurlrequester.h>
#include <tqcheckbox.h>
#include <tqdom.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqspinbox.h>
#include <tqtabwidget.h>
#include <tqvbox.h>
ConfigGuiSyncmlHttp::ConfigGuiSyncmlHttp( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent ), mUrl( 0 ), mPort( 0 )
{
TQTabWidget *tabWidget = new TQTabWidget( this );
topLayout()->addWidget( tabWidget );
// Connection
TQWidget *connectionWidget = new TQWidget( tabWidget );
TQVBoxLayout *connectionLayout = new TQVBoxLayout( connectionWidget,
KDialog::marginHint(), KDialog::spacingHint() );
tabWidget->addTab( connectionWidget, i18n( "Connection" ) );
mGridLayout = new TQGridLayout( connectionLayout );
TQLabel *label = new TQLabel( i18n("Port:"), connectionWidget );
mGridLayout->addWidget( label, 0, 0 );
mPort = new TQSpinBox( connectionWidget );
mPort->setMinValue( 1 );
mPort->setMaxValue( 65536 );
mGridLayout->addWidget( mPort, 0, 1 );
// Database
TQWidget *databaseWidget = new TQWidget( tabWidget );
TQVBoxLayout *databaseLayout = new TQVBoxLayout( databaseWidget,
KDialog::marginHint(), KDialog::spacingHint() );
tabWidget->addTab( databaseWidget, i18n( "Databases" ) );
mGridLayout = new TQGridLayout( databaseLayout );
addLineEdit( databaseWidget, i18n("Contact Database:"), &mContactDb, 0 );
addLineEdit( databaseWidget, i18n("Calendar Database:"), &mCalendarDb, 1 );
addLineEdit( databaseWidget, i18n("Note Database:"), &mNoteDb, 2 );
mContactDb->insertItem( "addressbook" );
mContactDb->insertItem( "contacts" );
mCalendarDb->insertItem( "agenda" );
mCalendarDb->insertItem( "calendar" );
mNoteDb->insertItem( "notes" );
// Options
TQWidget *optionWidget = new TQWidget( tabWidget );
TQVBoxLayout *optionLayout = new TQVBoxLayout( optionWidget,
KDialog::marginHint(), KDialog::spacingHint() );
tabWidget->addTab( optionWidget, i18n( "Options" ) );
mGridLayout = new TQGridLayout( optionLayout );
label = new TQLabel( i18n("User name:"), optionWidget );
mGridLayout->addWidget( label, 0, 0 );
mUsername = new KLineEdit( optionWidget );
mGridLayout->addWidget( mUsername, 0, 1 );
label = new TQLabel( i18n("Password:"), optionWidget );
mGridLayout->addWidget( label, 1, 0 );
mPassword = new KLineEdit( optionWidget );
mPassword->setEchoMode( TQLineEdit::Password );
mGridLayout->addWidget( mPassword, 1, 1 );
mUseStringTable = new TQCheckBox( i18n("Use String Table"), optionWidget );
mGridLayout->addMultiCellWidget( mUseStringTable, 2, 2, 0, 1 );
mOnlyReplace = new TQCheckBox( i18n("Only Replace Entries"), optionWidget );
mGridLayout->addMultiCellWidget( mOnlyReplace, 3, 3, 0, 1 );
// Url
label = new TQLabel( i18n("URL:"), optionWidget );
mGridLayout->addWidget( label, 4, 0 );
mUrl = new KLineEdit( optionWidget );
mGridLayout->addWidget( mUrl, 4, 1 );
// recvLimit
label = new TQLabel( i18n("Receive Limit:"), optionWidget );
mGridLayout->addWidget( label, 5, 0 );
mRecvLimit = new TQSpinBox( optionWidget );
mRecvLimit->setMinValue( 1 );
mRecvLimit->setMaxValue( 65536 );
mGridLayout->addWidget( mRecvLimit, 5, 1 );
// maxObjSize
label = new TQLabel( i18n("Maximum Object Size"), optionWidget );
mGridLayout->addWidget( label, 6, 0 );
mMaxObjSize = new TQSpinBox( optionWidget );
mMaxObjSize->setMinValue( 1 );
mMaxObjSize->setMaxValue( 65536 );
mGridLayout->addWidget( mMaxObjSize, 6, 1 );
topLayout()->addStretch( 1 );
}
void ConfigGuiSyncmlHttp::addLineEdit( TQWidget *parent, const TQString &text, KComboBox **edit, int row )
{
TQLabel *label = new TQLabel( text, parent);
mGridLayout->addWidget( label, row, 0 );
*edit = new KComboBox( true, parent );
mGridLayout->addWidget( *edit, row, 1 );
}
void ConfigGuiSyncmlHttp::load( const TQString &xml )
{
TQDomDocument document;
document.setContent( xml );
TQDomElement docElement = document.documentElement();
TQDomNode node;
for ( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "username" ) {
mUsername->setText( element.text() );
} else if ( element.tagName() == "password" ) {
mPassword->setText( element.text() );
} else if ( element.tagName() == "url" ) {
if ( mUrl )
mUrl->setText( element.text() );
} else if ( element.tagName() == "port" ) {
if ( mPort )
mPort->setValue( element.text().toInt() );
} else if ( element.tagName() == "recvLimit" ) {
if ( mRecvLimit )
mRecvLimit->setValue( element.text().toInt() );
} else if ( element.tagName() == "maxObjSize" ) {
if ( mMaxObjSize )
mMaxObjSize->setValue( element.text().toInt() );
} else if ( element.tagName() == "usestringtable" ) {
mUseStringTable->setChecked( element.text() == "1" );
} else if ( element.tagName() == "onlyreplace" ) {
mOnlyReplace->setChecked( element.text() == "1" );
} else if ( element.tagName() == "contact_db" ) {
mContactDb->setCurrentText( element.text() );
} else if ( element.tagName() == "calendar_db" ) {
mCalendarDb->setCurrentText( element.text() );
} else if ( element.tagName() == "note_db" ) {
mNoteDb->setCurrentText( element.text() );
}
}
}
TQString ConfigGuiSyncmlHttp::save() const
{
TQString xml;
xml = "<config>\n";
xml += "<username>" + mUsername->text() + "</username>\n";
xml += "<password>" + mPassword->text() + "</password>\n";
xml += "<url>" + mUrl->text() + "</url>\n";
xml += "<port>" + TQString::number( mPort->value() ) + "</port>\n";
// Receive Limit
xml += "<recvLimit>" + TQString::number( mRecvLimit->value() ) + "</recvLimit>\n";
// Maximal Object Size
xml += "<maxObjSize>" + TQString::number( mMaxObjSize->value() ) + "</maxObjSize>\n";
xml += "<usestringtable>";
if ( mUseStringTable->isChecked() )
xml += "1";
else
xml += "0";
xml += "</usestringtable>\n";
xml += "<onlyreplace>";
if ( mOnlyReplace->isChecked() )
xml += "1";
else
xml += "0";
xml += "</onlyreplace>\n";
xml += "<contact_db>" + mContactDb->currentText() + "</contact_db>\n";
xml += "<calendar_db>" + mCalendarDb->currentText() + "</calendar_db>\n";
xml += "<note_db>" + mNoteDb->currentText() + "</note_db>\n";
xml += "</config>";
return xml;
}
#include "configguisyncmlhttp.moc"

@ -1,68 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUISYNCML_H
#define CONFIGGUISYNCML_H
#include <tqdom.h>
#include "configgui.h"
class TQCheckBox;
class TQComboBox;
class TQGridLayout;
class TQSpinBox;
class KComboBox;
class KLineEdit;
class ConfigGuiSyncmlHttp : public ConfigGui
{
Q_OBJECT
public:
ConfigGuiSyncmlHttp( const QSync::Member &, TQWidget *parent );
void load( const TQString &xml );
TQString save() const;
private:
TQGridLayout *mGridLayout;
KLineEdit *mUsername;
KLineEdit *mPassword;
KLineEdit *mUrl;
TQSpinBox *mPort;
TQCheckBox *mUseStringTable;
TQCheckBox *mOnlyReplace;
TQSpinBox *mRecvLimit;
TQSpinBox *mMaxObjSize;
KComboBox *mContactDb;
KComboBox *mCalendarDb;
KComboBox *mNoteDb;
protected slots:
void addLineEdit( TQWidget *parent, const TQString &text, KComboBox **edit, int row );
};
#endif

@ -1,320 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
Copyright (c) 2006 Daniel Gollub <dgollub@suse.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "configguisyncmlobex.h"
#include <kcombobox.h>
#include <kdialog.h>
#include <klineedit.h>
#include <tdelocale.h>
#include <kurlrequester.h>
#include <tqlayout.h>
#include <tqcheckbox.h>
#include <tqcombobox.h>
#include <tqlabel.h>
#include <tqdom.h>
#include <tqspinbox.h>
#include <tqtabwidget.h>
#include <tqvbox.h>
ConfigGuiSyncmlObex::ConfigGuiSyncmlObex( const QSync::Member &member, TQWidget *parent )
: ConfigGui( member, parent )
{
TQTabWidget *tabWidget = new TQTabWidget( this );
topLayout()->addWidget( tabWidget );
// Connection
TQVBox *connectionWidget = new TQVBox( this );
connectionWidget->setMargin( KDialog::marginHint() );
connectionWidget->setSpacing( 5 );
tabWidget->addTab( connectionWidget, i18n( "Connection" ) );
mConnection = new KComboBox( connectionWidget );
connect( mConnection, TQT_SIGNAL (activated( int ) ),
this, TQT_SLOT( slotConnectionChanged ( int ) ) );
mConnectionTypes.append( ConnectionType( 2, i18n( "Bluetooth" ) ) );
mConnectionTypes.append( ConnectionType( 5, i18n( "USB" ) ) );
ConnectionTypeList::ConstIterator it;
for ( it = mConnectionTypes.begin(); it != mConnectionTypes.end(); it++ )
mConnection->insertItem( (*it).second );
mBluetooth = new BluetoothWidget( connectionWidget );
mBluetooth->hide();
mUsb = new UsbWidget( connectionWidget );
mUsb->hide();
connectionWidget->setStretchFactor( mBluetooth, 1 );
connectionWidget->setStretchFactor( mUsb, 1 );
// Databases
TQWidget *databaseWidget = new TQWidget( tabWidget );
TQVBoxLayout *databaseLayout = new TQVBoxLayout( databaseWidget,
KDialog::marginHint(), KDialog::spacingHint() );
tabWidget->addTab( databaseWidget, i18n( "Databases" ) );
mGridLayout = new TQGridLayout( databaseLayout );
addLineEdit( databaseWidget, i18n("Contact Database:"), &mContactDb, 0 );
addLineEdit( databaseWidget, i18n("Calendar Database:"), &mCalendarDb, 1 );
addLineEdit( databaseWidget, i18n("Note Database:"), &mNoteDb, 2 );
mContactDb->insertItem( "addressbook" );
mContactDb->insertItem( "contacts" );
mCalendarDb->insertItem( "agenda" );
mCalendarDb->insertItem( "calendar" );
mNoteDb->insertItem( "notes" );
// Options
TQWidget *optionsWidget = new TQWidget( tabWidget );
TQVBoxLayout *optionsLayout = new TQVBoxLayout( optionsWidget,
KDialog::marginHint(), KDialog::spacingHint() );
tabWidget->addTab( optionsWidget, i18n( "Options" ) );
mGridLayout = new TQGridLayout( optionsLayout );
TQLabel *label = new TQLabel( i18n("User name:"), optionsWidget );
mGridLayout->addWidget( label, 0, 0 );
mUsername = new KLineEdit( optionsWidget );
mGridLayout->addWidget( mUsername, 0, 1 );
label = new TQLabel( i18n("Password:"), optionsWidget );
mGridLayout->addWidget( label, 1, 0 );
mPassword = new KLineEdit( optionsWidget );
mPassword->setEchoMode( TQLineEdit::Password );
mGridLayout->addWidget( mPassword, 1, 1 );
mUseStringTable = new TQCheckBox( i18n("Use String Table"), optionsWidget );
mGridLayout->addMultiCellWidget( mUseStringTable, 2, 2, 0, 1 );
mOnlyReplace = new TQCheckBox( i18n("Only Replace Entries"), optionsWidget );
mGridLayout->addMultiCellWidget( mOnlyReplace, 3, 3, 0, 1 );
// SynML Version
label = new TQLabel( i18n("SyncML Version:"), optionsWidget );
mGridLayout->addWidget( label, 4, 0 );
mSyncmlVersion = new TQComboBox( optionsWidget );
mGridLayout->addWidget( mSyncmlVersion, 4, 1 );
mSyncmlVersions.append( SyncmlVersion( 0, i18n( "1.0" ) ) );
mSyncmlVersions.append( SyncmlVersion( 1, i18n( "1.1" ) ) );
mSyncmlVersions.append( SyncmlVersion( 2, i18n( "1.2" ) ) );
SyncmlVersionList::ConstIterator itVersion;
for ( itVersion = mSyncmlVersions.begin(); itVersion != mSyncmlVersions.end(); itVersion++ )
mSyncmlVersion->insertItem( (*itVersion).second );
// WBXML
mWbxml = new TQCheckBox( i18n("WAP Binary XML"), optionsWidget );
mGridLayout->addMultiCellWidget( mWbxml, 12, 12, 0, 1 );
// Identifier
label = new TQLabel( i18n("Software Identifier:"), optionsWidget );
mGridLayout->addWidget( label, 13, 0 );
mIdentifier = new KComboBox( true, optionsWidget );
mGridLayout->addWidget( mIdentifier, 13, 1 );
mIdentifier->insertItem( "" );
mIdentifier->insertItem( "PC Suite" );
// recvLimit
label = new TQLabel( i18n("Receive Limit:"), optionsWidget );
mGridLayout->addWidget( label, 14, 0 );
mRecvLimit = new TQSpinBox( optionsWidget );
mRecvLimit->setMinValue( 1 );
mRecvLimit->setMaxValue( 65536 );
mGridLayout->addWidget( mRecvLimit, 14, 1 );
// maxObjSize
label = new TQLabel( i18n("Maximum Object Size"), optionsWidget );
mGridLayout->addWidget( label, 15, 0 );
mMaxObjSize = new TQSpinBox( optionsWidget );
mMaxObjSize->setMinValue( 1 );
mMaxObjSize->setMaxValue( 65536 );
mGridLayout->addWidget( mMaxObjSize, 15, 1 );
topLayout()->addStretch( 1 );
}
void ConfigGuiSyncmlObex::slotConnectionChanged( int pos )
{
mUsb->hide();
mBluetooth->hide();
if ( pos == 0 )
mBluetooth->show();
else if ( pos == 1 )
mUsb->show();
}
void ConfigGuiSyncmlObex::load( const TQString &xml )
{
TQDomDocument document;
document.setContent( xml );
TQDomElement docElement = document.documentElement();
TQDomNode node;
for( node = docElement.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "username" ) {
mUsername->setText( element.text() );
} else if ( element.tagName() == "password" ) {
mPassword->setText( element.text() );
} else if ( element.tagName() == "type" ) {
for ( uint i = 0; i < mConnectionTypes.count(); i++ ) {
if ( mConnectionTypes[i].first == element.text().toInt() ) {
mConnection->setCurrentItem( i );
slotConnectionChanged( i );
break;
}
}
} else if ( element.tagName() == "version" ) {
for ( uint i = 0; i < mSyncmlVersions.count(); i++ ) {
if ( mSyncmlVersions[i].first == element.text().toInt() ) {
mSyncmlVersion->setCurrentItem( i );
break;
}
}
} else if ( element.tagName() == "bluetooth_address" ) {
if ( mBluetooth ) mBluetooth->setAddress( element.text() );
} else if ( element.tagName() == "bluetooth_channel" ) {
if ( mBluetooth ) mBluetooth->setChannel( element.text() );
} else if ( element.tagName() == "identifier" ) {
if ( mIdentifier ) mIdentifier->setCurrentText( element.text() );
} else if ( element.tagName() == "interface" ) {
if ( mUsb ) mUsb->setInterface( element.text().toInt() );
} else if ( element.tagName() == "wbxml" ) {
if ( mWbxml) mWbxml->setChecked( element.text() == "1" );
} else if ( element.tagName() == "recvLimit" ) {
if ( mRecvLimit ) mRecvLimit->setValue( element.text().toInt() );
} else if ( element.tagName() == "maxObjSize" ) {
if ( mMaxObjSize ) mMaxObjSize->setValue( element.text().toInt() );
} else if ( element.tagName() == "usestringtable" ) {
mUseStringTable->setChecked( element.text() == "1" );
} else if ( element.tagName() == "onlyreplace" ) {
mOnlyReplace->setChecked( element.text() == "1" );
} else if ( element.tagName() == "contact_db" ) {
mContactDb->setCurrentText( element.text() );
} else if ( element.tagName() == "calendar_db" ) {
mCalendarDb->setCurrentText( element.text() );
} else if ( element.tagName() == "note_db" ) {
mNoteDb->setCurrentText( element.text() );
}
}
}
TQString ConfigGuiSyncmlObex::save() const
{
TQString xml;
xml = "<config>\n";
xml += "<username>" + mUsername->text() + "</username>\n";
xml += "<password>" + mPassword->text() + "</password>\n";
ConnectionTypeList::ConstIterator it;
for ( it = mConnectionTypes.begin(); it != mConnectionTypes.end(); it++ ) {
if ( mConnection->currentText() == (*it).second ) {
xml += "<type>" + TQString("%1").arg((*it).first) + "</type>\n";
break;
}
}
// Bluetooth Address
xml += "<bluetooth_address>" + mBluetooth->address() + "</bluetooth_address>\n";
// Bluetooth Channel
xml += "<bluetooth_channel>" + mBluetooth->channel() + "</bluetooth_channel>\n";
// USB Interface
xml += "<interface>" + TQString::number( mUsb->interface() ) +"</interface>\n";
// SyncML Version
SyncmlVersionList::ConstIterator itVersion;
for ( itVersion = mSyncmlVersions.begin(); itVersion != mSyncmlVersions.end(); itVersion++ ) {
if ( mSyncmlVersion->currentText() == (*itVersion).second ) {
xml += "<version>" + TQString("%1").arg((*itVersion).first) + "</version>\n";
break;
}
}
// (Software) Identifier
xml += "<identifier>" + mIdentifier->currentText() + "</identifier>\n";
// WBXML
xml += "<wbxml>";
if ( mWbxml->isChecked() )
xml += "1";
else
xml += "0";
xml += "</wbxml>\n";
// Receive Limit
xml += "<recvLimit>" + TQString::number( mRecvLimit->value() ) + "</recvLimit>\n";
// Maximal Object Size
xml += "<maxObjSize>" + TQString::number( mMaxObjSize->value() ) + "</maxObjSize>\n";
xml += "<usestringtable>";
if ( mUseStringTable->isChecked() )
xml += "1";
else
xml += "0";
xml += "</usestringtable>\n";
xml += "<onlyreplace>";
if ( mOnlyReplace->isChecked() )
xml += "1";
else
xml += "0";
xml += "</onlyreplace>\n";
xml += "<contact_db>" + mContactDb->currentText() + "</contact_db>\n";
xml += "<calendar_db>" + mCalendarDb->currentText() + "</calendar_db>\n";
xml += "<note_db>" + mNoteDb->currentText() + "</note_db>\n";
xml += "</config>";
return xml;
}
void ConfigGuiSyncmlObex::addLineEdit( TQWidget *parent, const TQString &text, KComboBox **edit, int row )
{
TQLabel *label = new TQLabel( text, parent );
mGridLayout->addWidget( label, row, 0 );
*edit = new KComboBox( true, parent );
mGridLayout->addWidget( *edit, row, 1 );
}
#include "configguisyncmlobex.moc"

@ -1,88 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
Copyright (c) 2006 Daniel Gollub <dgollub@suse.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONFIGGUISYNCMLOBEX_H
#define CONFIGGUISYNCMLOBEX_H
#include <tqdom.h>
#include "configgui.h"
#include "connectionwidgets.h"
class TQCheckBox;
class TQComboBox;
class TQGridLayout;
class TQSpinBox;
class KComboBox;
class KLineEdit;
class KURLRequester;
class ConfigGuiSyncmlObex : public ConfigGui
{
Q_OBJECT
public:
ConfigGuiSyncmlObex( const QSync::Member &, TQWidget *parent = 0 );
void load( const TQString &xml );
TQString save() const;
public slots:
void slotConnectionChanged( int pos );
private:
// Connection
typedef TQPair<int, TQString> ConnectionType;
typedef TQValueList<ConnectionType> ConnectionTypeList;
ConnectionTypeList mConnectionTypes;
TQComboBox *mConnection;
BluetoothWidget *mBluetooth;
UsbWidget *mUsb;
// Options
typedef TQPair<int, TQString> SyncmlVersion;
typedef TQValueList<SyncmlVersion> SyncmlVersionList;
SyncmlVersionList mSyncmlVersions;
TQStringList mIdentiferList;
KLineEdit *mUsername;
KLineEdit *mPassword;
TQCheckBox *mUseStringTable;
TQCheckBox *mOnlyReplace;
TQSpinBox *mRecvLimit;
TQSpinBox *mMaxObjSize;
TQComboBox *mSyncmlVersion;
KComboBox *mIdentifier;
TQCheckBox *mWbxml;
TQGridLayout *mGridLayout;
KComboBox *mContactDb;
KComboBox *mCalendarDb;
KComboBox *mNoteDb;
protected slots:
void addLineEdit( TQWidget *parent, const TQString &text, KComboBox **edit, int row );
};
#endif

@ -1,26 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "conflictdialog.h"
ConflictDialog::ConflictDialog( QSync::SyncMapping &mapping, TQWidget *parent )
: TQDialog( parent ), mMapping( mapping )
{
}

@ -1,40 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef CONFLICTDIALOG_H
#define CONFLICTDIALOG_H
#include <tqdialog.h>
#include <libqopensync/syncmapping.h>
/**
Base class for SingleConflictDialog and MultiConflictDialog.
*/
class ConflictDialog : public TQDialog
{
public:
ConflictDialog( QSync::SyncMapping &mapping, TQWidget *parent );
protected:
QSync::SyncMapping mMapping;
};
#endif

@ -1,227 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
Copyright (c) 2006 Daniel Gollub <dgollub@suse.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <kcombobox.h>
#include <kdialog.h>
#include <tdeglobal.h>
#include <kiconloader.h>
#include <kinputdialog.h>
#include <klineedit.h>
#include <tdelocale.h>
#include <tdemessagebox.h>
#include <tqapplication.h>
#include <tqeventloop.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqpushbutton.h>
#include <tqspinbox.h>
#include <tqtabwidget.h>
#include <tqtooltip.h>
#include <tqvbox.h>
#include "connectionwidgets.h"
BluetoothWidget::BluetoothWidget( TQWidget *parent )
: TQWidget( parent )
{
TQGridLayout *layout = new TQGridLayout( this );
mAddress = new KLineEdit( this );
mAddress->setInputMask( ">NN:NN:NN:NN:NN:NN;" );
layout->addWidget( mAddress, 1, 0 );
TQLabel *label = new TQLabel( i18n( "Bluetooth address:" ), this );
label->setBuddy( mAddress );
layout->addWidget( label, 0, 0 );
mChannel = new KLineEdit( this );
layout->addWidget( mChannel, 1, 1 );
mChannelLabel = new TQLabel( i18n( "Channel:" ), this );
mChannelLabel->setBuddy( mChannel );
layout->addWidget( mChannelLabel, 0, 1 );
layout->setRowStretch( 2, 1 );
}
void BluetoothWidget::hideChannel()
{
mChannelLabel->hide();
mChannel->hide();
}
void BluetoothWidget::showChannel()
{
mChannelLabel->show();
mChannel->show();
}
void BluetoothWidget::setAddress( const TQString address )
{
mAddress->setText( address );
}
void BluetoothWidget::setChannel( const TQString channel )
{
if ( mChannel )
mChannel->setText( channel );
}
TQString BluetoothWidget::address() const
{
return mAddress->text();
}
TQString BluetoothWidget::channel() const
{
if ( mChannel->text().isEmpty() )
return TQString();
return mChannel->text();
}
// FIXME - Only IrMC specific
IRWidget::IRWidget( TQWidget *parent )
: TQWidget( parent )
{
TQGridLayout *layout = new TQGridLayout( this, 3, 3, 11, 3 );
mDevice = new KLineEdit( this );
mSerialNumber = new KLineEdit( this );
layout->addWidget( mDevice, 1, 0 );
layout->addWidget( mSerialNumber, 1, 1 );
TQLabel *label = new TQLabel( i18n( "Device Name:" ), this );
label->setBuddy( mDevice );
layout->addWidget( label, 0, 0 );
label = new TQLabel( i18n( "Serial Number:" ), this );
label->setBuddy( mSerialNumber );
layout->addWidget( label, 0, 1 );
layout->setRowStretch( 2, 1 );
}
void IRWidget::load( const TQDomElement &parent )
{
TQDomNode node;
for ( node = parent.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "irname" )
mDevice->setText( element.text() );
else if ( element.tagName() == "irserial" )
mSerialNumber->setText( element.text() );
}
}
void IRWidget::save( TQDomDocument &doc, TQDomElement &parent )
{
TQDomElement element = doc.createElement( "irname" );
element.appendChild( doc.createTextNode( mDevice->text() ) );
parent.appendChild( element );
element = doc.createElement( "irserial" );
element.appendChild( doc.createTextNode( mSerialNumber->text() ) );
parent.appendChild( element );
}
// FIXME - Only IrMC specific
CableWidget::CableWidget( TQWidget *parent )
: TQWidget( parent )
{
TQGridLayout *layout = new TQGridLayout( this, 3, 2, 11, 3 );
mManufacturer = new KComboBox( this );
mDevice = new KComboBox( true, this );
layout->addWidget( mManufacturer, 0, 1 );
layout->addWidget( mDevice, 1, 1 );
TQLabel *label = new TQLabel( i18n( "Device Manufacturer:" ), this );
label->setBuddy( mManufacturer );
layout->addWidget( label, 0, 0 );
label = new TQLabel( i18n( "Device:" ), this );
label->setBuddy( mDevice );
layout->addWidget( label, 1, 0 );
layout->setRowStretch( 2, 1 );
mManufacturer->insertItem( i18n( "SonyEricsson/Ericsson" ) );
mManufacturer->insertItem( i18n( "Siemens" ) );
mDevice->insertItem( "/dev/ttyS0" );
mDevice->insertItem( "/dev/ttyS1" );
mDevice->insertItem( "/dev/ttyUSB0" );
mDevice->insertItem( "/dev/ttyUSB1" );
}
void CableWidget::load( const TQDomElement &parent )
{
TQDomNode node;
for ( node = parent.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement element = node.toElement();
if ( element.tagName() == "cabletype" )
mManufacturer->setCurrentItem( element.text().toInt() );
else if ( element.tagName() == "cabledev" )
mDevice->setCurrentText( element.text() );
}
}
void CableWidget::save( TQDomDocument &doc, TQDomElement &parent )
{
TQDomElement element = doc.createElement( "cabletype" );
element.appendChild( doc.createTextNode( TQString::number( mManufacturer->currentItem() ) ) );
parent.appendChild( element );
element = doc.createElement( "cabledev" );
element.appendChild( doc.createTextNode( mDevice->currentText() ) );
parent.appendChild( element );
}
UsbWidget::UsbWidget( TQWidget *parent )
: TQWidget( parent )
{
TQGridLayout *layout = new TQGridLayout( this, 3, 2, 11, 3);
mInterface = new TQSpinBox( this );
layout->addWidget( mInterface, 0, 1 );
TQLabel *label = new TQLabel( i18n( "USB Interface:" ), this );
label->setBuddy( mInterface );
layout->addWidget( label, 0, 0 );
layout->setRowStretch( 2, 1 );
}
void UsbWidget::setInterface( int interface )
{
mInterface->setValue( interface );
}
int UsbWidget::interface() const
{
return mInterface->value();
}
#include "connectionwidgets.moc"

@ -1,101 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
Copyright (c) 2006 Daniel Gollub <dgollub@suse.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef CONNECTIONWIDGETS_H
#define CONNECTIONWIDGETS_H
#include <tqdom.h>
#include "configgui.h"
class TQCheckBox;
class TQLabel;
class TQPushButton;
class TQSpinBox;
class KComboBox;
class KLineEdit;
class BluetoothWidget : public TQWidget
{
Q_OBJECT
public:
BluetoothWidget( TQWidget *parent );
void hideChannel();
void showChannel();
void setAddress( const TQString address );
void setChannel( const TQString channel );
TQString address() const;
TQString channel() const;
private:
KLineEdit *mAddress;
KLineEdit *mChannel;
TQLabel *mChannelLabel;
};
class IRWidget : public TQWidget
{
Q_OBJECT
public:
IRWidget( TQWidget *parent );
void load( const TQDomElement& );
void save( TQDomDocument&, TQDomElement& );
private:
KLineEdit *mDevice;
KLineEdit *mSerialNumber;
};
class CableWidget : public TQWidget
{
public:
CableWidget( TQWidget *parent );
void load( const TQDomElement& );
void save( TQDomDocument&, TQDomElement& );
private:
KComboBox *mManufacturer;
KComboBox *mDevice;
};
class UsbWidget : public TQWidget
{
public:
UsbWidget( TQWidget *parent );
int interface() const;
void setInterface( int interface );
private:
TQSpinBox *mInterface;
};
#endif // CONNECTIONWIDGETS_H

@ -1,70 +0,0 @@
/*
This file is part of libtdepim.
Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <tqstringlist.h>
#include <tdelocale.h>
#include "genericdiffalgo.h"
using namespace KSync;
#define MAX( a, b ) ( a > b ? a : b )
#ifndef KDE_USE_FINAL
// With --enable-final, we get the (identical) compareString from
// addresseediffalgo.cpp
static bool compareString( const TQString &left, const TQString &right )
{
if ( left.isEmpty() && right.isEmpty() )
return true;
else
return left == right;
}
#endif
GenericDiffAlgo::GenericDiffAlgo( const TQString &leftData, const TQString &rightData )
: mLeftData( leftData ), mRightData( rightData )
{
}
void GenericDiffAlgo::run()
{
begin();
TQStringList leftList = TQStringList::split( '\n', mLeftData, true );
TQStringList rightList = TQStringList::split( '\n', mRightData, true );
uint lines = MAX( leftList.count(), rightList.count() );
for ( uint i = 0; i < lines; ++i ) {
if ( i < leftList.count() && i < rightList.count() ) {
if ( !compareString( leftList[ i ], rightList[ i ] ) )
conflictField( i18n( "Line %1" ).arg( i ), leftList[ i ], rightList[ i ] );
} else if ( i < leftList.count() && i >= rightList.count() ) {
additionalLeftField( i18n( "Line %1" ).arg( i ), leftList[ i ] );
} else if ( i >= leftList.count() && i < rightList.count() ) {
additionalRightField( i18n( "Line %1" ).arg( i ), rightList[ i ] );
}
}
end();
}

@ -1,45 +0,0 @@
/*
This file is part of libtdepim.
Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KSYNC_GENERICDIFFALGO_H
#define KSYNC_GENERICDIFFALGO_H
#include <libtdepim/diffalgo.h>
using namespace KPIM;
namespace KSync {
class GenericDiffAlgo : public DiffAlgo
{
public:
GenericDiffAlgo( const TQString &left, const TQString &right );
void run();
private:
TQString mLeftData;
TQString mRightData;
};
}
#endif

@ -1,179 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "groupconfig.h"
#include "groupconfigcommon.h"
#include "memberconfig.h"
#include "memberinfo.h"
#include "pluginpicker.h"
#include "syncprocess.h"
#include "syncprocessmanager.h"
#include <libqopensync/group.h>
#include <libqopensync/plugin.h>
#include <kdialog.h>
#include <kiconloader.h>
#include <kjanuswidget.h>
#include <tdelocale.h>
#include <tdemessagebox.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqpushbutton.h>
GroupConfig::GroupConfig( TQWidget *parent )
: TQWidget( parent )
{
TQBoxLayout *topLayout = new TQVBoxLayout( this );
topLayout->setSpacing( KDialog::spacingHint() );
TQFrame *titleFrame = new TQFrame( this );
topLayout->addWidget( titleFrame );
titleFrame->setPaletteForegroundColor( colorGroup().light() );
titleFrame->setPaletteBackgroundColor( colorGroup().mid() );
TQBoxLayout *nameLayout = new TQHBoxLayout( titleFrame );
nameLayout->setMargin( 4 );
TQPixmap icon = TDEGlobal::iconLoader()->loadIcon( "kontact_summary",
TDEIcon::Desktop );
TQLabel *iconLabel = new TQLabel( titleFrame );
iconLabel->setPixmap( icon );
nameLayout->addWidget( iconLabel );
nameLayout->addSpacing( 8 );
TQLabel *label = new TQLabel( i18n("Group:"), titleFrame );
TQFont font = label->font();
font.setBold( true );
font.setPointSize( font.pointSize() + 2 );
label->setFont( font );
nameLayout->addWidget( label );
mNameLabel = new TQLabel( titleFrame );
font = mNameLabel->font();
font.setBold( true );
font.setPointSize( font.pointSize() + 2 );
mNameLabel->setFont( font );
nameLayout->addWidget( mNameLabel );
nameLayout->addStretch( 1 );
mMemberView = new KJanusWidget( this, 0, KJanusWidget::IconList );
topLayout->addWidget( mMemberView );
TQBoxLayout *buttonLayout = new TQHBoxLayout( topLayout );
TQPushButton *addButton = new TQPushButton( i18n("Add Member..."), this );
connect( addButton, TQT_SIGNAL( clicked() ), TQT_SLOT( addMember() ) );
buttonLayout->addWidget( addButton );
buttonLayout->addStretch( 1 );
icon = TDEGlobal::iconLoader()->loadIcon( "bookmark", TDEIcon::Desktop );
TQFrame *page = mMemberView->addPage( i18n("Group"),
i18n("General Group Settings"), icon );
TQBoxLayout *pageLayout = new TQVBoxLayout( page );
mCommonConfig = new GroupConfigCommon( page );
pageLayout->addWidget( mCommonConfig );
}
void GroupConfig::setSyncProcess( SyncProcess *process )
{
mProcess = process;
mNameLabel->setText( mProcess->group().name() );
mCommonConfig->setSyncProcess( mProcess );
updateMembers();
}
void GroupConfig::updateMembers()
{
TQValueList<MemberConfig *>::ConstIterator memberIt;
for ( memberIt = mMemberConfigs.begin(); memberIt != mMemberConfigs.end(); ++memberIt )
(*memberIt)->saveData();
TQValueList<TQFrame *>::ConstIterator it2;
for ( it2 = mConfigPages.begin(); it2 != mConfigPages.end(); ++it2 ) {
mMemberView->removePage( *it2 );
delete *it2;
}
mConfigPages.clear();
mMemberConfigs.clear();
QSync::Group group = mProcess->group();
QSync::Group::Iterator it( group.begin() );
for ( ; it != group.end(); ++it ) {
QSync::Member member = *it;
MemberInfo mi( member );
TQFrame *page = mMemberView->addPage( mi.name(),
TQString( "%1 (%2)" ).arg( mi.name() ).arg(member.pluginName()), mi.desktopIcon() );
TQBoxLayout *pageLayout = new TQVBoxLayout( page );
mConfigPages.append( page );
MemberConfig *memberConfig = new MemberConfig( page, member );
mMemberConfigs.append( memberConfig );
pageLayout->addWidget( memberConfig );
memberConfig->loadData();
}
}
void GroupConfig::saveConfig()
{
mProcess->group().save();
TQValueList<MemberConfig *>::ConstIterator it;
for ( it = mMemberConfigs.begin(); it != mMemberConfigs.end(); ++it )
(*it)->saveData();
mCommonConfig->save();
mProcess->reinitEngine();
}
void GroupConfig::addMember()
{
QSync::Plugin plugin = PluginPickerDialog::getPlugin( this );
if ( plugin.isValid() ) {
QSync::Result result = SyncProcessManager::self()->addMember( mProcess, plugin );
if ( result.isError() ) {
KMessageBox::error( this, i18n("Error adding member %1\n%2\nType: %3")
.arg( plugin.name() ).arg( result.message() ).arg( result.type() ) );
} else {
updateMembers();
// select last (added) page
int index = mMemberView->pageIndex( mConfigPages.last() );
mMemberView->showPage( index );
}
}
}
#include "groupconfig.moc"

@ -1,63 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef GROUPCONFIG_H
#define GROUPCONFIG_H
#include <tqwidget.h>
#include <tqvaluelist.h>
class TQFrame;
class TQLabel;
class KJanusWidget;
class GroupConfigCommon;
class MemberConfig;
class SyncProcess;
class GroupConfig : public TQWidget
{
Q_OBJECT
public:
GroupConfig( TQWidget *parent );
void setSyncProcess( SyncProcess *process );
void updateMembers();
void saveConfig();
protected slots:
void addMember();
private:
TQLabel *mNameLabel;
KJanusWidget *mMemberView;
SyncProcess *mProcess;
GroupConfigCommon *mCommonConfig;
TQValueList<MemberConfig *> mMemberConfigs;
TQValueList<TQFrame *> mConfigPages;
};
#endif

@ -1,158 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include <kdialog.h>
#include <klineedit.h>
#include <tdelocale.h>
#include <kdebug.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqcheckbox.h>
#include <libqopensync/group.h>
#include <libqopensync/conversion.h>
#include <libqopensync/environment.h>
#include "syncprocess.h"
#include "syncprocessmanager.h"
#include "groupconfigcommon.h"
ObjectTypeSelector::ObjectTypeSelector( TQWidget *parent )
: TQWidget( parent )
{
TQGridLayout *layout = new TQGridLayout( this );
layout->setMargin( 0 );
const QSync::Conversion conversion = SyncProcessManager::self()->environment()->conversion();
TQMap<TQString, TQString> objectTypeMap;
objectTypeMap.insert( "contact", i18n( "Contacts" ) );
objectTypeMap.insert( "event", i18n( "Events" ) );
objectTypeMap.insert( "todo", i18n( "To-dos" ) );
objectTypeMap.insert( "note", i18n( "Notes" ) );
TQStringList objectTypes = conversion.objectTypes();
// reorder the entries so that contact and event are the first one
qHeapSort( objectTypes );
TQStringList reoderedObjectTypes, stack;
for ( uint i = 0; i < objectTypes.count(); ++i ) {
if ( objectTypes[ i ] == "contact" || objectTypes[ i ] == "event" )
reoderedObjectTypes.append( objectTypes[ i ] );
else
stack.append( objectTypes[ i ] );
}
reoderedObjectTypes += stack;
TQStringList::ConstIterator it;
int row = 0;
int col = 0;
for( it = reoderedObjectTypes.begin(); it != reoderedObjectTypes.end(); ++it ) {
TQString objectType = *it;
// Don't display object type "data". Object type "data" is a kind of wildcard - so don't filter *
if ( objectType == "data" )
continue;
TQCheckBox *objectCheckBox = new TQCheckBox( objectTypeMap[ objectType ], this );
layout->addWidget( objectCheckBox, row, col );
mObjectTypeChecks.insert( objectType, objectCheckBox );
col++;
if ( (row == 0 && col == 2) || col == 3 ) {
col = 0;
row++;
}
}
}
void ObjectTypeSelector::load( const QSync::Group &group )
{
const QSync::GroupConfig config = group.config();
const TQStringList objectTypes = config.activeObjectTypes();
// Enable everything on the inital load
bool initialLoad = false;
if ( objectTypes.isEmpty() )
initialLoad = true;
TQMap<TQString, TQCheckBox*>::ConstIterator it;
for( it = mObjectTypeChecks.begin(); it != mObjectTypeChecks.end(); ++it ) {
TQCheckBox *check = it.data();
check->setChecked( objectTypes.contains( it.key() ) || initialLoad );
}
}
void ObjectTypeSelector::save( QSync::Group group )
{
TQStringList objectTypes;
TQMap<TQString,TQCheckBox *>::ConstIterator it;
for( it = mObjectTypeChecks.begin(); it != mObjectTypeChecks.end(); ++it ) {
TQCheckBox *check = it.data();
if ( check->isChecked() )
objectTypes.append( it.key() );
}
// Always add object type "data"
objectTypes.append( "data" );
QSync::GroupConfig config = group.config();
config.setActiveObjectTypes( objectTypes );
}
GroupConfigCommon::GroupConfigCommon( TQWidget *parent )
: TQWidget( parent )
{
TQGridLayout *layout = new TQGridLayout( this, 2, 2, KDialog::marginHint(), KDialog::spacingHint() );
layout->addWidget( new TQLabel( i18n( "Name:" ), this ), 0, 0 );
mGroupName = new KLineEdit( this );
layout->addWidget( mGroupName, 0, 1 );
layout->addWidget( new TQLabel( i18n( "Object Types to be Synchronized:"), this ), 1, 0, TQt::AlignTop );
mObjectTypeSelector = new ObjectTypeSelector( this );
layout->addWidget( mObjectTypeSelector, 1, 1 );
layout->setRowStretch( 2, 1 );
}
void GroupConfigCommon::setSyncProcess( SyncProcess *syncProcess )
{
mSyncProcess = syncProcess;
mGroupName->setText( mSyncProcess->group().name() );
mObjectTypeSelector->load( mSyncProcess->group() );
}
void GroupConfigCommon::save()
{
mSyncProcess->group().setName( mGroupName->text() );
mObjectTypeSelector->save( mSyncProcess->group() );
}

@ -1,60 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef GROUPCONFIGCOMMON_H
#define GROUPCONFIGCOMMON_H
#include <tqwidget.h>
#include <tqmap.h>
#include <libqopensync/group.h>
class KLineEdit;
class SyncProcess;
class TQCheckBox;
class ObjectTypeSelector : public TQWidget
{
public:
ObjectTypeSelector( TQWidget *parent );
void load( const QSync::Group &group );
void save( QSync::Group group );
private:
TQMap<TQString,TQCheckBox *> mObjectTypeChecks;
};
class GroupConfigCommon : public TQWidget
{
public:
GroupConfigCommon( TQWidget *parent );
void setSyncProcess( SyncProcess *syncProcess );
void save();
private:
KLineEdit *mGroupName;
ObjectTypeSelector *mObjectTypeSelector;
SyncProcess *mSyncProcess;
};
#endif

@ -1,57 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "groupconfigdialog.h"
#include "groupconfig.h"
#include <tdelocale.h>
#include <tqlayout.h>
GroupConfigDialog::GroupConfigDialog( TQWidget *parent, SyncProcess *process )
: KDialogBase( parent, 0, true, i18n("Configure Synchronization Group"),
Ok )
{
TQFrame *topFrame = makeMainWidget();
TQBoxLayout *topLayout = new TQVBoxLayout( topFrame );
mConfigWidget = new GroupConfig( topFrame );
topLayout->addWidget( mConfigWidget );
mConfigWidget->setSyncProcess( process );
setInitialSize( configDialogSize( "size_groupconfigdialog" ) );
}
GroupConfigDialog::~GroupConfigDialog()
{
saveDialogSize( "size_groupconfigdialog" );
}
void GroupConfigDialog::slotOk()
{
mConfigWidget->saveConfig();
accept();
}
#include "groupconfigdialog.moc"

@ -1,44 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef GROUPCONFIGDIALOG_H
#define GROUPCONFIGDIALOG_H
#include <kdialogbase.h>
class GroupConfig;
class SyncProcess;
class GroupConfigDialog : public KDialogBase
{
Q_OBJECT
public:
GroupConfigDialog( TQWidget *parent, SyncProcess * );
~GroupConfigDialog();
protected slots:
void slotOk();
private:
GroupConfig *mConfigWidget;
};
#endif

@ -1,389 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <tdeapplication.h>
#include <kdialog.h>
#include <tdeglobal.h>
#include <tdeglobalsettings.h>
#include <kiconloader.h>
#include <tdelocale.h>
#include <kpassivepopup.h>
#include <kurllabel.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqpixmap.h>
#include <tqprogressbar.h>
#include <tqvbox.h>
#include "memberinfo.h"
#include "multiconflictdialog.h"
#include "singleconflictdialog.h"
#include "syncprocessmanager.h"
#include "groupitem.h"
GroupItem::GroupItem( KWidgetList *parent, SyncProcess *process )
: KWidgetListItem( parent ), mSyncProcess( process ),
mCallbackHandler( new QSync::CallbackHandler ),
mProcessedItems( 0 ), mMaxProcessedItems( 0 ),
mSynchronizing( false )
{
TQFont boldFont;
boldFont.setBold( true );
boldFont.setPointSize( boldFont.pointSize() + 2 );
TQGridLayout *layout = new TQGridLayout( this, 4, 4, KDialog::marginHint(), KDialog::spacingHint() );
mBox = new TQVBox( this );
mBox->setMargin( 5 );
mProgressBar = new TQProgressBar( this );
mProgressBar->setTotalSteps( 100 );
mTime = new TQLabel( this );
mSyncAction = new KURLLabel( "exec:/sync", i18n( "Synchronize Now" ), this );
mConfigureAction = new KURLLabel( "exec:/config", i18n( "Configure" ), this );
// header
TQHBox* hbox = new TQHBox( this );
hbox->setMargin( 2 );
static TQPixmap icon;
if ( icon.isNull() )
icon = TDEGlobal::iconLoader()->loadIcon( "kontact_summary", TDEIcon::Desktop );
mIcon = new TQLabel( hbox );
mIcon->setPixmap( icon );
mIcon->setFixedSize( mIcon->sizeHint() );
mIcon->setPaletteBackgroundColor( colorGroup().mid() );
mGroupName = new TQLabel( hbox );
mGroupName->setAlignment( AlignLeft | AlignVCenter );
mGroupName->setIndent( KDialog::spacingHint() );
mGroupName->setFont( boldFont );
mGroupName->setPaletteForegroundColor( colorGroup().light() );
mGroupName->setPaletteBackgroundColor( colorGroup().mid() );
mStatus = new TQLabel( hbox );
mStatus->setAlignment( TQt::AlignRight );
mStatus->setAlignment( AlignRight | AlignVCenter );
mStatus->setIndent( KDialog::spacingHint() );
mStatus->setFont( boldFont );
mStatus->setPaletteForegroundColor( colorGroup().light() );
mStatus->setPaletteBackgroundColor( colorGroup().mid() );
mStatus->setText( i18n( "Ready" ) );
hbox->setPaletteBackgroundColor( colorGroup().mid() );
hbox->setMaximumHeight( hbox->minimumSizeHint().height() );
layout->addMultiCellWidget( hbox, 0, 0, 0, 3 );
layout->addMultiCellWidget( mBox, 1, 1, 0, 3 );
layout->addWidget( mTime, 2, 0 );
layout->addWidget( mSyncAction, 2, 1 );
layout->addWidget( mConfigureAction, 2, 2 );
layout->addWidget( mProgressBar, 2, 3 );
layout->setColStretch( 0, 1 );
layout->setRowStretch( 3, 1 );
setPaletteBackgroundColor( kapp->palette().active().base() );
connect( mCallbackHandler, TQT_SIGNAL( conflict( QSync::SyncMapping ) ),
this, TQT_SLOT( conflict( QSync::SyncMapping ) ) );
connect( mCallbackHandler, TQT_SIGNAL( change( const QSync::SyncChangeUpdate& ) ),
this, TQT_SLOT( change( const QSync::SyncChangeUpdate& ) ) );
connect( mCallbackHandler, TQT_SIGNAL( mapping( const QSync::SyncMappingUpdate& ) ),
this, TQT_SLOT( mapping( const QSync::SyncMappingUpdate& ) ) );
connect( mCallbackHandler, TQT_SIGNAL( engine( const QSync::SyncEngineUpdate& ) ),
this, TQT_SLOT( engine( const QSync::SyncEngineUpdate& ) ) );
connect( mCallbackHandler, TQT_SIGNAL( member( const QSync::SyncMemberUpdate& ) ),
this, TQT_SLOT( member( const QSync::SyncMemberUpdate& ) ) );
connect( mSyncAction, TQT_SIGNAL( leftClickedURL() ),
this, TQT_SLOT( synchronize() ) );
connect( mConfigureAction, TQT_SIGNAL( leftClickedURL() ),
this, TQT_SLOT( configure() ) );
connect( mSyncProcess, TQT_SIGNAL( engineChanged( QSync::Engine* ) ),
this, TQT_SLOT( engineChanged( QSync::Engine* ) ) );
mCallbackHandler->setEngine( mSyncProcess->engine() );
setSelectionForegroundColor( TDEGlobalSettings::textColor() );
setSelectionBackgroundColor( TDEGlobalSettings::alternateBackgroundColor() );
update();
}
GroupItem::~GroupItem()
{
delete mCallbackHandler;
mCallbackHandler = 0;
}
void GroupItem::update()
{
clear();
mGroupName->setText( i18n( "Group: %1" ).arg( mSyncProcess->group().name() ) );
TQDateTime dateTime = mSyncProcess->group().lastSynchronization();
if ( dateTime.isValid() )
mTime->setText( i18n( "Last synchronized on: %1" ).arg( TDEGlobal::locale()->formatDateTime( dateTime ) ) );
else
mTime->setText( i18n( "Not synchronized yet" ) );
mProgressBar->reset();
mProgressBar->hide();
QSync::Group group = mSyncProcess->group();
QSync::Group::Iterator memberIt( group.begin() );
QSync::Group::Iterator memberEndIt( group.end() );
for ( ; memberIt != memberEndIt; ++memberIt ) {
MemberItem *item = new MemberItem( mBox, mSyncProcess, *memberIt );
item->show();
item->setStatusMessage( i18n( "Ready" ) );
mMemberItems.append( item );
}
}
void GroupItem::clear()
{
mGroupName->setText( TQString() );
TQValueList<MemberItem*>::Iterator it;
for ( it = mMemberItems.begin(); it != mMemberItems.end(); ++it )
delete *it;
mMemberItems.clear();
}
void GroupItem::conflict( QSync::SyncMapping mapping )
{
if ( mapping.changesCount() == 2 ) {
SingleConflictDialog dlg( mapping, this );
dlg.exec();
} else {
MultiConflictDialog dlg( mapping, this );
dlg.exec();
}
}
void GroupItem::change( const QSync::SyncChangeUpdate &update )
{
switch ( update.type() ) {
case QSync::SyncChangeUpdate::Received:
mProcessedItems++;
mStatus->setText( i18n( "%1 entries read" ).arg( mProcessedItems ) );
break;
case QSync::SyncChangeUpdate::ReceivedInfo:
mStatus->setText( i18n( "Receive information" ) );
break;
case QSync::SyncChangeUpdate::Sent:
mProcessedItems--;
mStatus->setText( i18n( "%1 entries written" ).arg( mMaxProcessedItems - mProcessedItems ) );
mProgressBar->show();
{
int progress = 100;
if ( mMaxProcessedItems != 0 )
progress = (mProcessedItems * 100) / mMaxProcessedItems;
if ( progress < 0 )
progress = 0;
mProgressBar->setProgress( 100 - progress );
}
break;
case QSync::SyncChangeUpdate::WriteError:
mStatus->setText( i18n( "Error" ) );
KPassivePopup::message( update.result().message(), this );
break;
case QSync::SyncChangeUpdate::ReceiveError:
mStatus->setText( i18n( "Error" ) );
KPassivePopup::message( update.result().message(), this );
break;
default:
mStatus->setText( TQString() );
break;
}
}
void GroupItem::mapping( const QSync::SyncMappingUpdate& )
{
}
void GroupItem::engine( const QSync::SyncEngineUpdate &update )
{
switch ( update.type() ) {
case QSync::SyncEngineUpdate::EndPhaseConnected:
mStatus->setText( i18n( "Connected" ) );
mProgressBar->setProgress( 0 );
mSynchronizing = true;
mSyncAction->setText( "Abort Synchronization" );
break;
case QSync::SyncEngineUpdate::EndPhaseRead:
mStatus->setText( i18n( "Data read" ) );
break;
case QSync::SyncEngineUpdate::EndPhaseWrite:
mStatus->setText( i18n( "Data written" ) );
mProgressBar->setProgress( 100 );
mProcessedItems = mMaxProcessedItems = 0;
break;
case QSync::SyncEngineUpdate::EndPhaseDisconnected:
mStatus->setText( i18n( "Disconnected" ) );
break;
case QSync::SyncEngineUpdate::Error:
mStatus->setText( i18n( "Synchronization failed" ) );
KPassivePopup::message( update.result().message(), this );
this->update();
mSynchronizing = false;
mSyncAction->setText( i18n( "Synchronize Now" ) );
break;
case QSync::SyncEngineUpdate::SyncSuccessfull:
mStatus->setText( i18n( "Successfully synchronized" ) );
mSyncProcess->group().setLastSynchronization( TQDateTime::currentDateTime() );
mSyncProcess->group().save();
this->update();
mSynchronizing = false;
mSyncAction->setText( i18n( "Synchronize Now" ) );
break;
case QSync::SyncEngineUpdate::PrevUnclean:
mStatus->setText( i18n( "Previous synchronization failed" ) );
break;
case QSync::SyncEngineUpdate::EndConflicts:
mStatus->setText( i18n( "Conflicts solved" ) );
mMaxProcessedItems = mProcessedItems;
break;
default:
mStatus->setText( TQString() );
break;
}
}
void GroupItem::member( const QSync::SyncMemberUpdate &update )
{
TQValueList<MemberItem*>::Iterator it;
for ( it = mMemberItems.begin(); it != mMemberItems.end(); ++it ) {
if ( (*it)->member() == update.member() ) {
switch ( update.type() ) {
case QSync::SyncMemberUpdate::Connected:
(*it)->setStatusMessage( i18n( "Connected" ) );
break;
case QSync::SyncMemberUpdate::SentChanges:
(*it)->setStatusMessage( i18n( "Changes read" ) );
break;
case QSync::SyncMemberUpdate::CommittedAll:
(*it)->setStatusMessage( i18n( "Changes written" ) );
break;
case QSync::SyncMemberUpdate::Disconnected:
(*it)->setStatusMessage( i18n( "Disconnected" ) );
break;
case QSync::SyncMemberUpdate::ConnectError:
(*it)->setStatusMessage( i18n( "Error: %1" ).arg( update.result().message() ) );
break;
case QSync::SyncMemberUpdate::GetChangesError:
(*it)->setStatusMessage( i18n( "Error: %1" ).arg( update.result().message() ) );
break;
case QSync::SyncMemberUpdate::CommittedAllError:
(*it)->setStatusMessage( i18n( "Error: %1" ).arg( update.result().message() ) );
break;
case QSync::SyncMemberUpdate::SyncDoneError:
(*it)->setStatusMessage( i18n( "Error: %1" ).arg( update.result().message() ) );
break;
case QSync::SyncMemberUpdate::DisconnectedError:
(*it)->setStatusMessage( i18n( "Error: %1" ).arg( update.result().message() ) );
break;
default:
break;
}
return;
}
}
}
void GroupItem::synchronize()
{
if ( !mSynchronizing )
emit synchronizeGroup( mSyncProcess );
else
emit abortSynchronizeGroup( mSyncProcess );
}
void GroupItem::configure()
{
emit configureGroup( mSyncProcess );
this->update();
}
void GroupItem::engineChanged( QSync::Engine *engine )
{
Q_ASSERT( engine );
mCallbackHandler->setEngine( engine );
this->update();
}
MemberItem::MemberItem( TQWidget *parent, SyncProcess *process,
const QSync::Member &member )
: TQWidget( parent ), mSyncProcess( process ), mMember( member )
{
TQFont boldFont;
boldFont.setBold( true );
MemberInfo mi( member );
TQPixmap icon = mi.smallIcon();
QSync::Plugin plugin = member.plugin();
TQVBoxLayout *layout = new TQVBoxLayout( this );
TQHBox* box = new TQHBox( this );
box->setMargin( 5 );
box->setSpacing( 6 );
layout->addWidget( box );
mIcon = new TQLabel( box );
mIcon->setPixmap( icon );
mIcon->setAlignment( TQt::AlignTop );
mIcon->setFixedWidth( mIcon->sizeHint().width() );
TQVBox *nameBox = new TQVBox( box );
mMemberName = new TQLabel( nameBox );
mMemberName->setFont( boldFont );
mDescription = new TQLabel( nameBox );
mStatus = new TQLabel( box );
mMemberName->setText( member.name() );
mDescription->setText( plugin.longName() );
}
void MemberItem::setStatusMessage( const TQString &msg )
{
mStatus->setText( msg );
}
#include "groupitem.moc"

@ -1,112 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef GROUPITEM_H
#define GROUPITEM_H
#include "syncprocess.h"
#include <libqopensync/callbackhandler.h>
#include <kwidgetlist.h>
namespace QSync {
class Engine;
}
class MemberItem;
class KURLLabel;
class TQLabel;
class TQProgressBar;
class TQVBox;
class GroupItem : public KWidgetListItem
{
Q_OBJECT
public:
GroupItem( KWidgetList*, SyncProcess *syncProcess );
~GroupItem();
SyncProcess *syncProcess() const { return mSyncProcess; }
void update();
void clear();
signals:
void synchronizeGroup( SyncProcess *syncProcess );
void abortSynchronizeGroup( SyncProcess *syncProcess );
void configureGroup( SyncProcess *syncProcess );
protected slots:
void conflict( QSync::SyncMapping );
void change( const QSync::SyncChangeUpdate& );
void mapping( const QSync::SyncMappingUpdate& );
void engine( const QSync::SyncEngineUpdate& );
void member( const QSync::SyncMemberUpdate& );
void synchronize();
void configure();
void engineChanged( QSync::Engine *engine );
private:
SyncProcess *mSyncProcess;
QSync::CallbackHandler *mCallbackHandler;
TQValueList<MemberItem*> mMemberItems;
TQLabel *mIcon;
TQLabel *mGroupName;
TQLabel *mStatus;
TQLabel *mTime;
KURLLabel *mSyncAction;
KURLLabel *mConfigureAction;
TQVBox *mBox;
TQProgressBar *mProgressBar;
int mProcessedItems;
int mMaxProcessedItems;
bool mSynchronizing;
};
class MemberItem : public TQWidget
{
public:
MemberItem( TQWidget *parent, SyncProcess *syncProcess,
const QSync::Member &member );
SyncProcess* syncProcess() const { return mSyncProcess; }
QSync::Member member() const { return mMember; }
void setStatusMessage( const TQString &msg );
private:
SyncProcess *mSyncProcess;
QSync::Member mMember;
TQLabel *mIcon;
TQLabel *mMemberName;
TQLabel *mDescription;
TQLabel *mStatus;
};
#endif

@ -1,99 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <tqlayout.h>
#include "aboutpage.h"
#include "groupitem.h"
#include "syncprocessmanager.h"
#include "groupview.h"
GroupView::GroupView( TQWidget *parent )
: TQWidget( parent ), mAboutPage( 0 )
{
mLayout = new TQVBoxLayout( this );
mWidgetList = new KWidgetList( this );
mLayout->addWidget( mWidgetList );
}
SyncProcess* GroupView::selectedSyncProcess() const
{
GroupItem *item = static_cast<GroupItem*>( mWidgetList->selectedItem() );
if ( item )
return item->syncProcess();
else
return 0;
}
void GroupView::clear()
{
mWidgetList->clear();
}
void GroupView::updateView()
{
clear();
if ( SyncProcessManager::self()->count() == 0 ) {
mWidgetList->hide();
if ( !mAboutPage ) {
mAboutPage = new AboutPage( this );
mLayout->addWidget( mAboutPage );
connect( mAboutPage, TQT_SIGNAL( addGroup() ), TQT_SIGNAL( addGroup() ) );
}
mAboutPage->show();
} else {
if ( mAboutPage )
mAboutPage->hide();
mWidgetList->show();
}
for ( int i = 0; i < SyncProcessManager::self()->count(); ++i ) {
SyncProcess *process = SyncProcessManager::self()->at( i );
GroupItem *item = new GroupItem( mWidgetList, process );
connect( item, TQT_SIGNAL( synchronizeGroup( SyncProcess* ) ),
TQT_SIGNAL( synchronizeGroup( SyncProcess* ) ) );
connect( item, TQT_SIGNAL( abortSynchronizeGroup( SyncProcess* ) ),
TQT_SIGNAL( abortSynchronizeGroup( SyncProcess* ) ) );
connect( item, TQT_SIGNAL( configureGroup( SyncProcess* ) ),
TQT_SIGNAL( configureGroup( SyncProcess* ) ) );
mWidgetList->appendItem( item );
}
}
void GroupView::updateSyncProcess( SyncProcess *syncProcess )
{
for ( int i = 0; i < (int)mWidgetList->count(); ++i ) {
GroupItem *item = static_cast<GroupItem*>( mWidgetList->item( i ) );
if ( item && item->syncProcess() == syncProcess )
item->update();
}
}
#include "groupview.moc"

@ -1,58 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef GROUPVIEW_H
#define GROUPVIEW_H
#include <kwidgetlist.h>
class AboutPage;
class SyncProcess;
class TQVBoxLayout;
class GroupView : public TQWidget
{
Q_OBJECT
public:
GroupView( TQWidget *parent );
SyncProcess* selectedSyncProcess() const;
void clear();
public slots:
void updateView();
void updateSyncProcess( SyncProcess *process );
signals:
void addGroup();
void synchronizeGroup( SyncProcess *syncProcess );
void abortSynchronizeGroup( SyncProcess *syncProcess );
void configureGroup( SyncProcess *syncProcess );
private:
AboutPage *mAboutPage;
KWidgetList *mWidgetList;
TQVBoxLayout *mLayout;
};
#endif

@ -1,97 +0,0 @@
/*
This file is part of libtdepim.
Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <tdeglobalsettings.h>
#include "htmldiffalgodisplay.h"
using namespace KSync;
static TQString textToHTML( const TQString &text )
{
return TQStyleSheet::convertFromPlainText( text );
}
HTMLDiffAlgoDisplay::HTMLDiffAlgoDisplay( TQWidget *parent )
: KTextBrowser( parent )
{
setWrapPolicy( TQTextEdit::AtWordBoundary );
setVScrollBarMode( TQScrollView::AlwaysOff );
setHScrollBarMode( TQScrollView::AlwaysOff );
}
void HTMLDiffAlgoDisplay::begin()
{
clear();
mText = "";
mText.append( "<html>" );
mText.append( TQString( "<body text=\"%1\" bgcolor=\"%2\">" )
.arg( TDEGlobalSettings::textColor().name() )
.arg( TDEGlobalSettings::baseColor().name() ) );
mText.append( "<center><table>" );
mText.append( TQString( "<tr><th></th><th align=\"center\">%1</th><td> </td><th align=\"center\">%2</th></tr>" )
.arg( mLeftTitle )
.arg( mRightTitle ) );
}
void HTMLDiffAlgoDisplay::end()
{
mText.append( "</table></center>"
"</body>"
"</html>" );
setText( mText );
}
void HTMLDiffAlgoDisplay::setLeftSourceTitle( const TQString &title )
{
mLeftTitle = title;
}
void HTMLDiffAlgoDisplay::setRightSourceTitle( const TQString &title )
{
mRightTitle = title;
}
void HTMLDiffAlgoDisplay::additionalLeftField( const TQString &id, const TQString &value )
{
mText.append( TQString( "<tr><td align=\"right\"><b>%1:</b></td><td bgcolor=\"#9cff83\">%2</td><td></td><td></td></tr>" )
.arg( id )
.arg( textToHTML( value ) ) );
}
void HTMLDiffAlgoDisplay::additionalRightField( const TQString &id, const TQString &value )
{
mText.append( TQString( "<tr><td align=\"right\"><b>%1:</b></td><td></td><td></td><td bgcolor=\"#9cff83\">%2</td></tr>" )
.arg( id )
.arg( textToHTML( value ) ) );
}
void HTMLDiffAlgoDisplay::conflictField( const TQString &id, const TQString &leftValue,
const TQString &rightValue )
{
mText.append( TQString( "<tr><td align=\"right\"><b>%1:</b></td><td bgcolor=\"#ff8686\">%2</td><td></td><td bgcolor=\"#ff8686\">%3</td></tr>" )
.arg( id )
.arg( textToHTML( leftValue ) )
.arg( textToHTML( rightValue ) ) );
}

@ -1,54 +0,0 @@
/*
This file is part of libtdepim.
Copyright (c) 2004 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KSYNC_HTMLDIFFALGODISPLAY_H
#define KSYNC_HTMLDIFFALGODISPLAY_H
#include <ktextbrowser.h>
#include <libtdepim/diffalgo.h>
using namespace KPIM;
namespace KSync {
class HTMLDiffAlgoDisplay : virtual public DiffAlgoDisplay, public KTextBrowser
{
public:
HTMLDiffAlgoDisplay( TQWidget *parent );
void begin();
void end();
void setLeftSourceTitle( const TQString &title );
void setRightSourceTitle( const TQString &title );
void additionalLeftField( const TQString &id, const TQString &value );
void additionalRightField( const TQString &id, const TQString &value );
void conflictField( const TQString &id, const TQString &leftValue,
const TQString &rightValue );
private:
TQString mLeftTitle;
TQString mRightTitle;
TQString mText;
};
}
#endif

@ -1,16 +0,0 @@
[Desktop Entry]
Name=KitchenSync
GenericName=Synchronization
Exec=kitchensync
Icon=kitchensync
Type=Application
X-DocPath=kitchensync/index.html
Terminal=false
X-TDE-StartupNotify=true
X-DCOP-ServiceType=Unique
X-DCOP-ServiceName=kitchensync
X-TDE-ServiceTypes=KParts/ReadOnlyPart
X-TDE-Library=libkitchensyncpart
Categories=Qt;TDE;Utility;Telephony;X-TDE-Utilities-Peripherals;

@ -1,22 +0,0 @@
<!DOCTYPE kpartgui>
<kpartgui name="kitchensync" version="1">
<MenuBar>
<Menu name="file">
<Action name="sync" />
</Menu>
<Menu name="groups"><text>&amp;Groups</text>
<Action name="add_group" />
<Action name="edit_group" />
<Action name="delete_group" />
</Menu>
</MenuBar>
<ToolBar name="mainToolBar"><text>Main</text>
<Action name="sync" />
<Separator />
<Action name="add_group" />
<Action name="edit_group" />
<Action name="delete_group" />
</ToolBar>
</kpartgui>

@ -1,22 +0,0 @@
<!DOCTYPE kpartgui>
<kpartgui name="kitchensync" version="2">
<MenuBar>
<Menu name="file">
<Action name="sync" />
</Menu>
<Menu name="groups"><text>&amp;Groups</text>
<Action name="add_group" />
<Action name="edit_group" />
<Action name="delete_group" />
</Menu>
</MenuBar>
<ToolBar name="mainToolBar"><text>Main</text>
<Action name="sync" />
<Separator />
<Action name="add_group" />
<Action name="edit_group" />
<Action name="delete_group" />
</ToolBar>
</kpartgui>

@ -1,305 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include <tqvbox.h>
#include <tdeglobalsettings.h>
#include "kwidgetlist.h"
class KWidgetList::Private
{
public:
Private()
: mSelectedItem( 0 )
{
}
TQValueList<KWidgetListItem*> mItems;
KWidgetListItem *mSelectedItem;
TQVBox *mBox;
};
KWidgetList::KWidgetList( TQWidget *parent, const char *name )
: TQScrollView( parent, name ),
d( new Private )
{
d->mBox = new TQVBox( viewport() );
addChild( d->mBox );
setResizePolicy( AutoOneFit );
setFocusPolicy( TQ_StrongFocus );
viewport()->setFocus();
}
KWidgetList::~KWidgetList()
{
clear();
delete d;
d = 0;
}
uint KWidgetList::count() const
{
return d->mItems.count();
}
void KWidgetList::appendItem( KWidgetListItem *item )
{
if ( !item )
return;
if ( !d->mItems.contains( item ) ) {
d->mItems.append( item );
item->reparent( d->mBox, 0, TQPoint( 0, 0 ), true );
item->setSelected( false );
item->installEventFilter( this );
if ( d->mItems.count() == 1 ) {
d->mSelectedItem = item;
} else {
if ( !d->mSelectedItem )
setSelected( item );
else
d->mSelectedItem->setSelected( true );
}
}
}
void KWidgetList::removeItem( int index )
{
if ( index < 0 || index >= (int)d->mItems.count() )
return;
KWidgetListItem *item = d->mItems[ index ];
d->mItems.remove( item );
if ( d->mSelectedItem == item ) {
// TODO: smarter selection
if ( !d->mItems.isEmpty() )
setSelected( d->mItems.first() );
else
d->mSelectedItem = 0;
}
delete item;
if ( d->mItems.count() == 1 )
d->mItems.first()->setSelected( false );
}
void KWidgetList::takeItem( KWidgetListItem *item )
{
d->mItems.remove( item );
item->reparent( 0, 0, TQPoint( 0, 0 ) );
item->removeEventFilter( this );
item->hide();
if ( d->mSelectedItem == item ) {
// TODO: smarter selection
if ( !d->mItems.isEmpty() )
setSelected( d->mItems.first() );
else
d->mSelectedItem = 0;
}
}
void KWidgetList::setSelected( KWidgetListItem *item )
{
if ( !item )
return;
if ( d->mItems.contains( item ) == 0 )
return;
if ( d->mSelectedItem )
d->mSelectedItem->setSelected( false );
item->setSelected( true );
d->mSelectedItem = item;
}
void KWidgetList::setSelected( int index )
{
setSelected( item( index ) );
}
bool KWidgetList::isSelected( KWidgetListItem *item ) const
{
return ( d->mSelectedItem == item );
}
bool KWidgetList::isSelected( int index ) const
{
return isSelected( item( index ) );
}
KWidgetListItem *KWidgetList::selectedItem() const
{
return d->mSelectedItem;
}
KWidgetListItem *KWidgetList::item( int index ) const
{
if ( index < 0 || index >= (int)d->mItems.count() )
return 0;
else
return d->mItems[ index ];
}
int KWidgetList::index( KWidgetListItem *item ) const
{
return d->mItems.findIndex( item );
}
void KWidgetList::clear()
{
TQValueList<KWidgetListItem*>::Iterator it;
for ( it = d->mItems.begin(); it != d->mItems.end(); ++it )
delete *it;
d->mItems.clear();
d->mSelectedItem = 0;
}
void KWidgetList::setFocus()
{
viewport()->setFocus();
}
bool KWidgetList::eventFilter( TQObject *object, TQEvent *event )
{
if ( event->type() == TQEvent::MouseButtonPress ) {
TQMouseEvent *mouseEvent = TQT_TQMOUSEEVENT( event );
if ( mouseEvent->button() & Qt::LeftButton ) {
TQValueList<KWidgetListItem*>::Iterator it;
for ( it = d->mItems.begin(); it != d->mItems.end(); ++it ) {
if ( TQT_BASE_OBJECT(*it) == TQT_BASE_OBJECT(object) ) {
if ( d->mItems.count() != 1 ) {
setSelected( *it );
emit selectionChanged( *it );
}
return true;
}
}
}
} else if ( event->type() == TQEvent::MouseButtonDblClick ) {
TQValueList<KWidgetListItem*>::Iterator it;
for ( it = d->mItems.begin(); it != d->mItems.end(); ++it ) {
if ( TQT_BASE_OBJECT(*it) == TQT_BASE_OBJECT(object) ) {
if ( d->mItems.count() != 1 ) {
setSelected( *it );
emit doubleClicked( *it );
}
return true;
}
}
} else if ( event->type() == TQEvent::KeyPress ) {
TQKeyEvent *keyEvent = TQT_TQKEYEVENT( event );
if ( keyEvent->key() == TQt::Key_Up ) {
if ( d->mSelectedItem == 0 ) {
if ( !d->mItems.isEmpty() ) {
setSelected( d->mItems.first() );
return true;
}
}
for ( int i = 0; i < (int)d->mItems.count(); ++i ) {
if ( d->mItems[ i ] == d->mSelectedItem ) {
if ( ( i - 1 ) >= 0 ) {
setSelected( d->mItems[ i - 1 ] );
return true;
}
}
}
return true;
} else if ( keyEvent->key() == TQt::Key_Down ) {
if ( d->mSelectedItem == 0 ) {
if ( !d->mItems.isEmpty() ) {
setSelected( d->mItems.last() );
return true;
}
}
for ( int i = 0; i < (int)d->mItems.count(); ++i )
if ( d->mItems[ i ] == d->mSelectedItem ) {
if ( ( i + 1 ) < (int)d->mItems.count() ) {
setSelected( d->mItems[ i + 1 ] );
return true;
}
}
return true;
}
}
return TQScrollView::eventFilter( object, event );
}
KWidgetListItem::KWidgetListItem( KWidgetList *parent, const char *name )
: TQWidget( parent, name )
{
mForegroundColor = TDEGlobalSettings::textColor();
mBackgroundColor = TDEGlobalSettings::baseColor();
mSelectionForegroundColor = TDEGlobalSettings::highlightedTextColor();
mSelectionBackgroundColor = TDEGlobalSettings::highlightColor();
setFocusPolicy( TQ_StrongFocus );
}
KWidgetListItem::~KWidgetListItem()
{
}
void KWidgetListItem::setSelected( bool select )
{
if ( select ) {
setPaletteForegroundColor( mSelectionForegroundColor );
setPaletteBackgroundColor( mSelectionBackgroundColor );
} else {
setPaletteForegroundColor( mForegroundColor );
setPaletteBackgroundColor( mBackgroundColor );
}
}
void KWidgetListItem::setForegroundColor( const TQColor &color )
{
mForegroundColor = color;
}
void KWidgetListItem::setBackgroundColor( const TQColor &color )
{
mBackgroundColor = color;
}
void KWidgetListItem::setSelectionForegroundColor( const TQColor &color )
{
mSelectionForegroundColor = color;
}
void KWidgetListItem::setSelectionBackgroundColor( const TQColor &color )
{
mSelectionBackgroundColor = color;
}
#include "kwidgetlist.moc"

@ -1,91 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KWIDGETLIST_H
#define KWIDGETLIST_H
#include <tqscrollview.h>
class KWidgetListItem;
class KWidgetList : public TQScrollView
{
Q_OBJECT
public:
KWidgetList( TQWidget *parent = 0, const char *name = 0 );
~KWidgetList();
uint count() const;
void appendItem( KWidgetListItem *item );
void removeItem( int index );
void takeItem( KWidgetListItem *item );
void setSelected( KWidgetListItem *item );
void setSelected( int index );
bool isSelected( KWidgetListItem *item ) const;
bool isSelected( int index ) const;
KWidgetListItem *selectedItem() const;
KWidgetListItem *item( int index ) const;
int index( KWidgetListItem *item ) const;
virtual bool eventFilter( TQObject *object, TQEvent *event );
public slots:
void clear();
virtual void setFocus();
signals:
void selectionChanged( KWidgetListItem *item );
void doubleClicked( KWidgetListItem *item );
private:
class Private;
Private *d;
};
class KWidgetListItem : public TQWidget
{
public:
KWidgetListItem( KWidgetList *parent, const char *name = 0 );
~KWidgetListItem();
void setSelected( bool selected );
protected:
void setForegroundColor( const TQColor& );
void setBackgroundColor( const TQColor& );
void setSelectionForegroundColor( const TQColor& );
void setSelectionBackgroundColor( const TQColor& );
private:
TQColor mForegroundColor;
TQColor mBackgroundColor;
TQColor mSelectionForegroundColor;
TQColor mSelectionBackgroundColor;
};
#endif

@ -1,58 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <kdebug.h>
#include <tdeaboutdata.h>
#include <tdecmdlineargs.h>
#include <kuniqueapplication.h>
#include <stdlib.h>
#include "mainwidget.h"
#include "mainwindow.h"
static TDECmdLineOptions options[] =
{
TDECmdLineLastOption
};
int main( int argc, char **argv )
{
TDEAboutData *about = MainWidget::aboutData();
TDECmdLineArgs::init( argc, argv, about );
TDECmdLineArgs::addCmdLineOptions( options );
KUniqueApplication::addCmdLineOptions();
KUniqueApplication::addCmdLineOptions();
if( !KUniqueApplication::start() ) {
kdDebug() << "kitchensync already runs." << endl;
exit( 0 );
};
KUniqueApplication app;
TDEGlobal::locale()->insertCatalogue( "libkcal" );
MainWindow *mainWindow = new MainWindow;
mainWindow->show();
app.exec();
}

@ -1,191 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "mainwidget.h"
#include "groupconfigdialog.h"
#include "groupview.h"
#include "syncprocess.h"
#include "syncprocessmanager.h"
#include <libqopensync/environment.h>
#include <tdeaboutdata.h>
#include <tdeaction.h>
#include <kdebug.h>
#include <kinputdialog.h>
#include <tdelistview.h>
#include <tdelocale.h>
#include <tdemessagebox.h>
#include <kstdaction.h>
#include <kxmlguiclient.h>
#include <tqlayout.h>
MainWidget::MainWidget( KXMLGUIClient *guiClient, TQWidget *widget, const char *name )
: TQWidget( widget, name ), mGUIClient( guiClient )
{
initGUI();
initActions();
/** apply object type filter hack **/
int count = SyncProcessManager::self()->count();
for ( int i = 0; i < count; ++i ) {
SyncProcessManager::self()->at( i )->applyObjectTypeFilter();
}
/** apply object type filter hack **/
mGroupView->updateView();
connect( SyncProcessManager::self(), TQT_SIGNAL( changed() ),
mGroupView, TQT_SLOT( updateView() ) );
connect( SyncProcessManager::self(), TQT_SIGNAL( syncProcessChanged( SyncProcess* ) ),
mGroupView, TQT_SLOT( updateSyncProcess( SyncProcess* ) ) );
enableActions();
}
MainWidget::~MainWidget()
{
}
KXMLGUIClient *MainWidget::guiClient() const
{
return mGUIClient;
}
TDEAboutData *MainWidget::aboutData()
{
TDEAboutData *about = new TDEAboutData( "kitchensync", I18N_NOOP( "KitchenSync" ),
"0.1", I18N_NOOP( "The TDE Syncing Application" ),
TDEAboutData::License_GPL_V2,
I18N_NOOP( "(c) 2005, The KDE PIM Team" ) );
about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer" ), "tokoe@kde.org" );
about->addAuthor( "Cornelius Schumacher", 0, "schumacher@kde.org" );
return about;
}
void MainWidget::initGUI()
{
TQVBoxLayout *topLayout = new TQVBoxLayout( this );
mGroupView = new GroupView( this );
topLayout->addWidget( mGroupView );
connect( mGroupView, TQT_SIGNAL( addGroup() ), TQT_SLOT( addGroup() ) );
connect( mGroupView, TQT_SIGNAL( synchronizeGroup( SyncProcess* ) ),
TQT_SLOT( sync( SyncProcess* ) ) );
connect( mGroupView, TQT_SIGNAL( abortSynchronizeGroup( SyncProcess* ) ),
TQT_SLOT( abortSync( SyncProcess* ) ) );
connect( mGroupView, TQT_SIGNAL( configureGroup( SyncProcess* ) ),
TQT_SLOT( editGroup( SyncProcess* ) ) );
}
void MainWidget::initActions()
{
mActionSynchronize = new TDEAction( i18n("Synchronize"), "hotsync", 0, TQT_TQOBJECT(this), TQT_SLOT( sync() ),
mGUIClient->actionCollection(), "sync" );
mActionAddGroup = new TDEAction( i18n("Add Group..."), "document-new", 0, TQT_TQOBJECT(this), TQT_SLOT( addGroup() ),
mGUIClient->actionCollection(), "add_group" );
mActionDeleteGroup = new TDEAction( i18n("Delete Group..."), "edit-delete", 0, TQT_TQOBJECT(this), TQT_SLOT( deleteGroup() ),
mGUIClient->actionCollection(), "delete_group" );
mActionEditGroup = new TDEAction( i18n("Edit Group..."), "edit", 0, TQT_TQOBJECT(this), TQT_SLOT( editGroup() ),
mGUIClient->actionCollection(), "edit_group" );
}
void MainWidget::enableActions()
{
bool state = ( SyncProcessManager::self()->count() > 0 );
mActionSynchronize->setEnabled( state );
mActionDeleteGroup->setEnabled( state );
mActionEditGroup->setEnabled( state );
}
void MainWidget::addGroup()
{
bool ok;
TQString name = KInputDialog::getText( i18n("Create Synchronization Group"),
i18n("Name for new synchronization group."), TQString(), &ok, this );
if ( ok ) {
SyncProcessManager::self()->addGroup( name );
enableActions();
SyncProcess *process = SyncProcessManager::self()->byGroupName( name );
if ( process )
editGroup( process );
}
}
void MainWidget::deleteGroup()
{
SyncProcess *syncProcess = mGroupView->selectedSyncProcess();
if ( syncProcess ) {
int result = KMessageBox::warningContinueCancel( this,
i18n("Delete synchronization group '%1'?").arg( syncProcess->group().name() ) );
if ( result == KMessageBox::Continue ) {
SyncProcessManager::self()->remove( syncProcess );
enableActions();
}
}
}
void MainWidget::editGroup()
{
editGroup( mGroupView->selectedSyncProcess() );
}
void MainWidget::editGroup( SyncProcess *syncProcess )
{
if ( syncProcess ) {
GroupConfigDialog dlg( this, syncProcess );
dlg.exec();
enableActions();
}
}
void MainWidget::sync()
{
sync( mGroupView->selectedSyncProcess() );
}
void MainWidget::sync( SyncProcess *syncProcess )
{
if ( syncProcess ) {
syncProcess->reinitEngine();
QSync::Result result = syncProcess->engine()->synchronize();
if ( result ) {
tqDebug( "%s", result.message().latin1() );
} else {
tqDebug( "synchronization worked" );
}
}
}
void MainWidget::abortSync( SyncProcess *syncProcess )
{
if ( syncProcess )
syncProcess->engine()->abort();
}
#include "mainwidget.moc"

@ -1,74 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <libqopensync/engine.h>
#include <kdemacros.h>
#include <tqwidget.h>
class TDEAboutData;
class TDEAction;
class KXMLGUIClient;
class GroupView;
class SyncProcess;
class SyncProcessManager;
namespace QSync {
class Environment;
}
class KDE_EXPORT MainWidget : public TQWidget
{
Q_OBJECT
public:
MainWidget( KXMLGUIClient *guiClient, TQWidget *widget = 0, const char *name = 0 );
~MainWidget();
virtual KXMLGUIClient *guiClient() const;
static TDEAboutData *aboutData();
public slots:
void addGroup();
void deleteGroup();
void editGroup();
void editGroup( SyncProcess *syncProcess );
void sync();
void sync( SyncProcess *syncProcess );
void abortSync( SyncProcess *syncProcess );
private:
void initGUI();
void initActions();
void enableActions();
KXMLGUIClient *mGUIClient;
TDEAction *mActionSynchronize;
TDEAction *mActionAddGroup;
TDEAction *mActionDeleteGroup;
TDEAction *mActionEditGroup;
GroupView *mGroupView;
};
#endif

@ -1,61 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <tdeaction.h>
#include <tdelocale.h>
#include <kstdaction.h>
#include <tdetoolbar.h>
#include "mainwidget.h"
#include "mainwindow.h"
MainWindow::MainWindow()
: TDEMainWindow( 0 )
{
setWFlags( getWFlags() | WGroupLeader );
setCaption( i18n( "PIM Synchronization" ) );
mWidget = new MainWidget( this, this, "MainWidget" );
setCentralWidget( mWidget );
initActions();
createGUI( "kitchensyncui.rc", false );
createGUI( 0 );
toolBar()->setIconText( TDEToolBar::IconTextBottom );
resize( 760, 530 ); // initial size
setAutoSaveSettings();
}
MainWindow::~MainWindow()
{
}
void MainWindow::initActions()
{
KStdAction::quit( TQT_TQOBJECT(this), TQT_SLOT( close() ), actionCollection() );
}
#include "mainwindow.moc"

@ -1,47 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <tdemainwindow.h>
class MainWidget;
/**
This class serves as the main window for Kitchensync. It handles the
menus, toolbars, and status bars.
*/
class MainWindow : public TDEMainWindow
{
Q_OBJECT
public:
MainWindow();
virtual ~MainWindow();
private:
void initActions();
MainWidget *mWidget;
};
#endif

@ -1,79 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "memberconfig.h"
#include "configgui.h"
#include "memberinfo.h"
#include <tdelocale.h>
#include <tdemessagebox.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqtabwidget.h>
MemberConfig::MemberConfig( TQWidget *parent, const QSync::Member &member )
: TQWidget( parent ), mMember( member )
{
TQBoxLayout *topLayout = new TQVBoxLayout( this );
mGui = ConfigGui::Factory::create( member, this );
topLayout->addWidget( mGui );
}
MemberConfig::~MemberConfig()
{
}
void MemberConfig::loadData()
{
TQByteArray cfg;
QSync::Result error = mMember.configuration( cfg );
if ( error ) {
KMessageBox::error( this,
i18n("Unable to read config from plugin '%1':\n%2")
.arg( mMember.pluginName() ).arg( error.message() ) );
} else {
TQString txt = TQString::fromUtf8( cfg.data(), cfg.size() );
mGui->load( txt );
MemberInfo mi( mMember );
mGui->setInstanceName( mi.name() );
}
}
void MemberConfig::saveData()
{
TQString txt = mGui->save();
if ( txt.isEmpty() ) {
KMessageBox::sorry( this, i18n("Configuration of %1 is empty.").arg( mMember.pluginName() ) );
} else {
TQByteArray cfg = txt.utf8();
cfg.truncate(cfg.size() - 1); /* discard NUL terminator */
mMember.setConfiguration( cfg );
mMember.setName( mGui->instanceName() );
// TODO: Check for save() error.
mMember.save();
}
}
#include "memberconfig.moc"

@ -1,48 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef MEMBERCONFIG_H
#define MEMBERCONFIG_H
#include <libqopensync/member.h>
#include <tqwidget.h>
class TQTextEdit;
class ConfigGui;
class MemberConfig : public TQWidget
{
Q_OBJECT
public:
MemberConfig( TQWidget *parent, const QSync::Member & );
~MemberConfig();
void loadData();
void saveData();
private:
QSync::Member mMember;
ConfigGui *mGui;
};
#endif

@ -1,99 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "memberinfo.h"
#include <tdeglobal.h>
#include <kiconloader.h>
#include <tdelocale.h>
MemberInfo::MemberInfo( const QSync::Member &member )
: mMember( member )
{
}
TQPixmap MemberInfo::smallIcon() const
{
return TDEGlobal::iconLoader()->loadIcon( iconName(), TDEIcon::Small );
}
TQPixmap MemberInfo::desktopIcon() const
{
return TDEGlobal::iconLoader()->loadIcon( iconName(), TDEIcon::Desktop );
}
TQString MemberInfo::iconName() const
{
return pluginIconName( mMember.pluginName() );
}
TQString MemberInfo::name() const
{
static TQMap<TQString, TQString> nameMap;
if ( nameMap.isEmpty() ) {
nameMap.insert( "file-sync", i18n( "File" ) );
nameMap.insert( "palm-sync", i18n( "Palm" ) );
nameMap.insert( "tdepim-sync", i18n( "TDE PIM" ) );
nameMap.insert( "tdeio-sync", i18n( "Remote File" ) );
nameMap.insert( "irmc-sync", i18n( "Mobile Phone" ) );
nameMap.insert( "evo2-sync", i18n( "Evolution" ) );
nameMap.insert( "opie-sync", i18n( "Handheld" ) );
nameMap.insert( "ldap-sync", i18n( "LDAP" ) );
nameMap.insert( "syncml-obex-client", i18n( "Mobile Phone" ) );
nameMap.insert( "syncml-http-server", i18n( "Mobile Phone" ) );
nameMap.insert( "moto-sync", i18n( "Mobile Phone" ) );
nameMap.insert( "gnokii-sync", i18n( "Mobile Phone" ) );
nameMap.insert( "google-calendar", i18n( "Google Calendar" ) );
nameMap.insert( "gpe-sync", i18n( "Handheld" ) );
nameMap.insert( "sunbird-sync", i18n( "Sunbird Calendar" ) );
nameMap.insert( "jescs-sync", i18n( "Java Enterprise System Calendar" ) );
nameMap.insert( "synce-plugin", i18n( "WinCE Devices" ) );
}
if ( mMember.name().isEmpty() )
return nameMap[ mMember.pluginName() ] + " (" + TQString::number( mMember.id() ) + ") ";
else
return mMember.name();
}
TQString MemberInfo::pluginIconName( const TQString &pluginName )
{
if ( pluginName == "file-sync" ) return "folder";
if ( pluginName == "palm-sync" ) return "pda_black";
if ( pluginName == "tdepim-sync" ) return "kontact";
if ( pluginName == "tdeio-sync" ) return "network";
if ( pluginName == "irmc-sync" ) return "mobile_phone";
if ( pluginName == "evo2-sync" ) return "evolution";
if ( pluginName == "opie-sync" ) return "pda_blue";
if ( pluginName == "synce-plugin" ) return "pda_blue";
if ( pluginName == "ldap-sync" ) return "contents2";
if ( pluginName == "syncml-obex-client" ) return "mobile_phone";
if ( pluginName == "syncml-http-server" ) return "pda_blue";
if ( pluginName == "moto-sync" ) return "mobile_phone";
if ( pluginName == "gnokii-sync" ) return "mobile_phone";
if ( pluginName == "google-calendar" ) return "www";
if ( pluginName == "gpe-sync" ) return "pda_blue";
if ( pluginName == "sunbird-sync" ) return "www";
if ( pluginName == "jescs-sync" ) return "www";
return TQString();
}

@ -1,47 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef MEMBERINFO_H
#define MEMBERINFO_H
#include <libqopensync/member.h>
#include <tqstring.h>
#include <tqpixmap.h>
class MemberInfo
{
public:
MemberInfo( const QSync::Member &member );
TQPixmap smallIcon() const;
TQPixmap desktopIcon() const;
TQString iconName() const;
TQString name() const;
static TQString pluginIconName( const TQString &pluginName );
private:
QSync::Member mMember;
};
#endif

@ -1,141 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <kdialog.h>
#include <tdelocale.h>
#include <kwidgetlist.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqpushbutton.h>
#include "memberinfo.h"
#include "multiconflictdialog.h"
class ChangeItem : public KWidgetListItem
{
public:
ChangeItem( KWidgetList *parent, const QSync::SyncChange &change )
: KWidgetListItem( parent ),
mChange( change )
{
TQGridLayout *layout = new TQGridLayout( this, 2, 1, KDialog::marginHint(), KDialog::spacingHint() );
MemberInfo mi( change.member() );
layout->addWidget( new TQLabel( mi.name(), this ), 0, 0 );
TQString type;
switch ( change.changeType() ) {
case QSync::SyncChange::UnknownChange:
type = i18n( "Unknown" );
break;
case QSync::SyncChange::AddedChange:
type = i18n( "Added" );
break;
case QSync::SyncChange::DeletedChange:
type = i18n( "Deleted" );
break;
case QSync::SyncChange::ModifiedChange:
type = i18n( "Modified" );
break;
case QSync::SyncChange::UnmodifiedChange:
default:
type = i18n( "Unmodified" );
break;
}
layout->addWidget( new TQLabel( type, this ), 1, 0 );
}
QSync::SyncChange change() const { return mChange; }
private:
QSync::SyncChange mChange;
};
MultiConflictDialog::MultiConflictDialog( QSync::SyncMapping &mapping, TQWidget *parent )
: ConflictDialog( mapping, parent )
{
initGUI();
for ( int i = 0; i < mMapping.changesCount(); ++i ) {
QSync::SyncChange change = mMapping.changeAt( i );
if ( change.isValid() ) {
ChangeItem *item = new ChangeItem( mWidgetList, change );
mWidgetList->appendItem( item );
}
}
mWidgetList->setFocus();
}
MultiConflictDialog::~MultiConflictDialog()
{
}
void MultiConflictDialog::useSelectedChange()
{
ChangeItem *item = static_cast<ChangeItem*>( mWidgetList->selectedItem() );
if ( !item )
return;
mMapping.solve( item->change() );
accept();
}
void MultiConflictDialog::duplicateChange()
{
mMapping.duplicate();
accept();
}
void MultiConflictDialog::ignoreChange()
{
mMapping.ignore();
accept();
}
void MultiConflictDialog::initGUI()
{
TQGridLayout *layout = new TQGridLayout( this, 3, 3, KDialog::marginHint(), KDialog::spacingHint() );
layout->addMultiCellWidget( new TQLabel( i18n( "A conflict has appeared, please solve it manually." ), this ), 0, 0, 0, 2 );
mWidgetList = new KWidgetList( this );
layout->addMultiCellWidget( mWidgetList, 1, 1, 0, 2 );
TQPushButton *button = new TQPushButton( i18n( "Use Selected Item" ), this );
connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( useSelectedChange() ) );
layout->addWidget( button, 2, 0 );
button = new TQPushButton( i18n( "Duplicate Items" ), this );
connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( duplicateChange() ) );
layout->addWidget( button, 2, 1 );
button = new TQPushButton( i18n( "Ignore Conflict" ), this );
connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( ignoreChange() ) );
layout->addWidget( button, 2, 2 );
}
#include "multiconflictdialog.moc"

@ -1,48 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef MULTICONFLICTDIALOG_H
#define MULTICONFLICTDIALOG_H
#include "conflictdialog.h"
class KWidgetList;
class MultiConflictDialog : public ConflictDialog
{
Q_OBJECT
public:
MultiConflictDialog( QSync::SyncMapping &mapping, TQWidget *parent );
~MultiConflictDialog();
private slots:
void useSelectedChange();
void duplicateChange();
void ignoreChange();
private:
void initGUI();
KWidgetList *mWidgetList;
};
#endif

@ -1,89 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <tqlayout.h>
#include <tqvbox.h>
#include <tdeaction.h>
#include <tdeapplication.h>
#include <kdebug.h>
#include <kiconloader.h>
#include <kinstance.h>
#include <tdelocale.h>
#include <tdeparts/genericfactory.h>
#include "mainwidget.h"
#include "part.h"
typedef KParts::GenericFactory< KitchenSyncPart > KitchenSyncFactory;
K_EXPORT_COMPONENT_FACTORY( libkitchensyncpart, KitchenSyncFactory )
KitchenSyncPart::KitchenSyncPart( TQWidget *parentWidget, const char *widgetName,
TQObject *parent, const char *name,
const TQStringList& )
: KParts::ReadOnlyPart( parent, name )
{
setInstance( KitchenSyncFactory::instance() );
TQVBox *canvas = new TQVBox( parentWidget, widgetName );
setWidget( canvas );
new MainWidget( this, canvas );
TDEGlobal::iconLoader()->addAppDir( "kitchensync" );
setXMLFile( "kitchensync_part.rc" );
}
KitchenSyncPart::~KitchenSyncPart()
{
closeURL();
}
TDEAboutData *KitchenSyncPart::createAboutData()
{
return MainWidget::aboutData();
}
void KitchenSyncPart::exit()
{
delete this;
}
bool KitchenSyncPart::openURL( const KURL &url )
{
emit setWindowCaption( url.prettyURL() );
return true;
}
bool KitchenSyncPart::openFile()
{
return true;
}
void KitchenSyncPart::guiActivateEvent( KParts::GUIActivateEvent *e )
{
KParts::ReadOnlyPart::guiActivateEvent( e );
}
#include "part.moc"

@ -1,50 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef PART_H
#define PART_H
#include <tdeparts/event.h>
#include <tdeparts/factory.h>
#include <tdeparts/part.h>
class TDEAboutData;
class KitchenSyncPart: public KParts::ReadOnlyPart
{
Q_OBJECT
public:
KitchenSyncPart( TQWidget *parentWidget, const char *widgetName,
TQObject *parent, const char *name, const TQStringList& );
virtual ~KitchenSyncPart();
static TDEAboutData *createAboutData();
virtual void exit();
virtual bool openURL( const KURL &url );
protected:
virtual bool openFile();
virtual void guiActivateEvent( KParts::GUIActivateEvent* );
};
#endif

@ -1,13 +0,0 @@
#################################################
#
# (C) 2010-2011 Serghei Amelian
# serghei (DOT) amelian (AT) gmail.com
#
# Improvements and feedback are welcome
#
# This file is released under GPL >= 2
#
#################################################
tde_install_icons( kitchensync )
tde_install_icons( hotsync mobile_phone DESTINATION ${DATA_INSTALL_DIR}/kitchensync/icons )

@ -1,4 +0,0 @@
kitchensyncicondir = $(kde_datadir)/kitchensync/icons
kitchensyncicon_ICON = hotsync mobile_phone
KDE_ICON = kitchensync

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 932 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 932 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

@ -1,136 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "pluginpicker.h"
#include "memberinfo.h"
#include "syncprocessmanager.h"
#include <libqopensync/environment.h>
#include <kdialog.h>
#include <tdeglobal.h>
#include <kiconloader.h>
#include <tdelocale.h>
#include <tqlabel.h>
#include <tqlayout.h>
PluginItem::PluginItem( KWidgetList *list, const QSync::Plugin &plugin )
: KWidgetListItem( list ), mPlugin( plugin )
{
TQString iconName = MemberInfo::pluginIconName( mPlugin.name() );
TQGridLayout *layout = new TQGridLayout( this, 2, 2, KDialog::marginHint(), KDialog::spacingHint() );
TQLabel *icon = new TQLabel( this );
icon->setPixmap( TDEGlobal::iconLoader()->loadIcon( iconName, TDEIcon::Desktop ) );
icon->setFixedSize( icon->sizeHint() );
TQLabel *name = new TQLabel( plugin.longName(), this );
TQLabel *description = new TQLabel( plugin.description(), this );
TQFont font = name->font();
font.setBold( true );
name->setFont( font );
layout->addWidget( icon, 0, 0 );
layout->addWidget( name, 0, 1 );
layout->addWidget( description, 1, 1 );
}
PluginPicker::PluginPicker( TQWidget *parent )
: TQWidget( parent )
{
TQBoxLayout *layout = new TQVBoxLayout( this );
mPluginList = new KWidgetList( this );
layout->addWidget( mPluginList );
connect( mPluginList, TQT_SIGNAL( doubleClicked( KWidgetListItem* ) ),
TQT_SIGNAL( selected() ) );
updatePluginList();
mPluginList->setFocus();
}
void PluginPicker::updatePluginList()
{
mPluginList->clear();
QSync::Environment *env = SyncProcessManager::self()->environment();
QSync::Environment::PluginIterator it( env->pluginBegin() );
for( ; it != env->pluginEnd(); ++it ) {
QSync::Plugin plugin = *it;
mPluginList->appendItem( new PluginItem( mPluginList, plugin ) );
}
}
QSync::Plugin PluginPicker::selectedPlugin() const
{
PluginItem *item = static_cast<PluginItem *>( mPluginList->selectedItem() );
if ( item ) return item->plugin();
else return QSync::Plugin();
}
PluginPickerDialog::PluginPickerDialog( TQWidget *parent )
: KDialogBase( parent, 0, true, i18n("Select Member Type"), Ok | Cancel )
{
TQFrame *topFrame = makeMainWidget();
TQBoxLayout *topLayout = new TQVBoxLayout( topFrame );
mPicker = new PluginPicker( topFrame );
topLayout->addWidget( mPicker );
connect( mPicker, TQT_SIGNAL( selected() ), TQT_SLOT( slotOk() ) );
setInitialSize( TQSize( 460, 380 ) );
}
QSync::Plugin PluginPickerDialog::selectedPlugin() const
{
return mPicker->selectedPlugin();
}
QSync::Plugin PluginPickerDialog::getPlugin( TQWidget *parent )
{
PluginPickerDialog dlg( parent );
if ( dlg.exec() )
return dlg.selectedPlugin();
else
return QSync::Plugin();
}
void PluginPickerDialog::slotOk()
{
accept();
}
void PluginPickerDialog::slotCancel()
{
reject();
}
#include "pluginpicker.moc"

@ -1,82 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef PLUGINPICKER_H
#define PLUGINPICKER_H
#include <libqopensync/plugin.h>
#include <kdialogbase.h>
#include <kwidgetlist.h>
#include <tqwidget.h>
class PluginItem : public KWidgetListItem
{
public:
PluginItem( KWidgetList *, const QSync::Plugin & );
QSync::Plugin plugin() const { return mPlugin; }
private:
QSync::Plugin mPlugin;
};
class PluginPicker : public TQWidget
{
Q_OBJECT
public:
PluginPicker( TQWidget *parent );
QSync::Plugin selectedPlugin() const;
signals:
void selected();
protected:
void updatePluginList();
private:
KWidgetList *mPluginList;
};
class PluginPickerDialog : public KDialogBase
{
Q_OBJECT
public:
PluginPickerDialog( TQWidget *parent );
QSync::Plugin selectedPlugin() const;
static QSync::Plugin getPlugin( TQWidget *parent );
protected slots:
void slotOk();
void slotCancel();
private:
PluginPicker *mPicker;
};
#endif

@ -1,123 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <kdialog.h>
#include <tdelocale.h>
#include <tqlabel.h>
#include <tqlayout.h>
#include <tqpushbutton.h>
#include "addresseediffalgo.h"
#include "genericdiffalgo.h"
#include "htmldiffalgodisplay.h"
#include "memberinfo.h"
#include "singleconflictdialog.h"
SingleConflictDialog::SingleConflictDialog( QSync::SyncMapping &mapping, TQWidget *parent )
: ConflictDialog( mapping, parent ), mDiffAlgo( 0 )
{
initGUI();
TQString format = mapping.changeAt( 0 ).objectFormatName();
QSync::SyncChange leftChange = mapping.changeAt( 0 );
QSync::SyncChange rightChange = mapping.changeAt( 1 );
if ( format == "file" ) {
mDiffAlgo = new KSync::GenericDiffAlgo( leftChange.data(), rightChange.data() );
} else if ( format == "vcard" ) {
} else if ( format == "calendar" ) {
} else if ( format == "xml-contact" ) {
mDiffAlgo = new KSync::AddresseeDiffAlgo( leftChange.data(), rightChange.data() );
}
MemberInfo miLeft( leftChange.member() );
mDiffAlgoDisplay->setLeftSourceTitle( miLeft.name() );
MemberInfo miRight( rightChange.member() );
mDiffAlgoDisplay->setRightSourceTitle( miRight.name() );
if ( mDiffAlgo ) {
mDiffAlgo->addDisplay( mDiffAlgoDisplay );
mDiffAlgo->run();
}
}
SingleConflictDialog::~SingleConflictDialog()
{
delete mDiffAlgo;
mDiffAlgo = 0;
}
void SingleConflictDialog::useFirstChange()
{
mMapping.solve( mMapping.changeAt( 0 ) );
accept();
}
void SingleConflictDialog::useSecondChange()
{
mMapping.solve( mMapping.changeAt( 1 ) );
accept();
}
void SingleConflictDialog::duplicateChange()
{
mMapping.duplicate();
accept();
}
void SingleConflictDialog::ignoreChange()
{
mMapping.ignore();
accept();
}
void SingleConflictDialog::initGUI()
{
TQGridLayout *layout = new TQGridLayout( this, 3, 4, KDialog::marginHint(), KDialog::spacingHint() );
layout->addMultiCellWidget( new TQLabel( i18n( "A conflict has appeared, please solve it manually." ), this ), 0, 0, 0, 3 );
mDiffAlgoDisplay = new KSync::HTMLDiffAlgoDisplay( this );
layout->addMultiCellWidget( mDiffAlgoDisplay, 1, 1, 0, 3 );
TQPushButton *button = new TQPushButton( i18n( "Use Item" ), this );
connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( useFirstChange() ) );
layout->addWidget( button, 2, 0 );
button = new TQPushButton( i18n( "Duplicate Items" ), this );
connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( duplicateChange() ) );
layout->addWidget( button, 2, 1 );
button = new TQPushButton( i18n( "Ignore Conflict" ), this );
connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( ignoreChange() ) );
layout->addWidget( button, 2, 2 );
button = new TQPushButton( i18n( "Use Item" ), this );
connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( useSecondChange() ) );
layout->addWidget( button, 2, 3 );
}
#include "singleconflictdialog.moc"

@ -1,55 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef SINGLECONFLICTDIALOG_H
#define SINGLECONFLICTDIALOG_H
#include "conflictdialog.h"
#include <libtdepim/diffalgo.h>
using namespace KPIM;
namespace KSync {
class HTMLDiffAlgoDisplay;
}
class SingleConflictDialog : public ConflictDialog
{
Q_OBJECT
public:
SingleConflictDialog( QSync::SyncMapping &mapping, TQWidget *parent );
~SingleConflictDialog();
private slots:
void useFirstChange();
void useSecondChange();
void duplicateChange();
void ignoreChange();
private:
void initGUI();
DiffAlgo *mDiffAlgo;
KSync::HTMLDiffAlgoDisplay *mDiffAlgoDisplay;
};
#endif

@ -1,108 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <libqopensync/engine.h>
#include <libqopensync/environment.h>
#include <kdebug.h>
#include <tdelocale.h>
#include "syncprocess.h"
#include "syncprocessmanager.h"
using namespace QSync;
SyncProcess::SyncProcess( const QSync::Group &group )
: TQObject( 0, "SyncProcess" )
{
mGroup = group;
mEngine = new QSync::Engine( mGroup );
Result result = mEngine->initialize();
if ( result.isError() )
kdDebug() << "SyncProcess::SyncProcess: " << result.message() << endl;
}
SyncProcess::~SyncProcess()
{
mEngine->finalize();
delete mEngine;
mEngine = 0;
}
TQString SyncProcess::groupStatus() const
{
return i18n( "Ready" );
}
TQString SyncProcess::memberStatus( const QSync::Member& ) const
{
return i18n( "Ready" );
}
QSync::Result SyncProcess::addMember( const QSync::Plugin &plugin )
{
QSync::Member member = mGroup.addMember();
QSync::Result result = member.instance( plugin );
if ( !result.isError() )
mGroup.save();
return result;
}
void SyncProcess::reinitEngine()
{
mEngine->finalize();
delete mEngine;
mEngine = new QSync::Engine( mGroup );
Result result = mEngine->initialize();
if ( result.isError() )
kdDebug() << "SyncProcess::reinitEngine: " << result.message() << endl;
applyObjectTypeFilter();
emit engineChanged( mEngine );
}
void SyncProcess::applyObjectTypeFilter()
{
const QSync::Conversion conversion = SyncProcessManager::self()->environment()->conversion();
const TQStringList objectTypes = conversion.objectTypes();
const TQStringList activeObjectTypes = mGroup.config().activeObjectTypes();
for ( uint i = 0; i < objectTypes.count(); ++i ) {
if ( activeObjectTypes.contains( objectTypes[ i ] ) ) {
kdDebug() << "Enabled object type: " << objectTypes[ i ] << endl;
/*
* This is not required. Also this lead to filtering problems when sync with "file-sync".
* Uncomment this line again when OpenSync is fixed!
*
* mGroup.setObjectTypeEnabled( objectTypes[ i ], true );
*/
} else {
kdDebug() << "Disabled object type: " << objectTypes[ i ] << endl;
mGroup.setObjectTypeEnabled( objectTypes[ i ], false );
}
}
}
#include "syncprocess.moc"

@ -1,65 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef SYNCPROCESS_H
#define SYNCPROCESS_H
#include <tqobject.h>
#include <libqopensync/group.h>
namespace QSync {
class Engine;
}
class SyncProcess : public TQObject
{
Q_OBJECT
public:
SyncProcess( const QSync::Group &group );
~SyncProcess();
QSync::Group group() const { return mGroup; }
QSync::Engine* engine() const { return mEngine; }
TQString groupStatus() const;
TQString memberStatus( const QSync::Member &member ) const;
QSync::Result addMember( const QSync::Plugin &plugin );
void reinitEngine();
/** apply object type filter hack **/
void applyObjectTypeFilter();
signals:
/**
This signal is emitted whenever the engine has changed ( reinitialized ).
*/
void engineChanged( QSync::Engine *engine );
private:
QSync::Group mGroup;
QSync::Engine *mEngine;
};
#endif

@ -1,172 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#include "syncprocessmanager.h"
#include "syncprocess.h"
#include <libqopensync/environment.h>
#include <kstaticdeleter.h>
#include <tdemessagebox.h>
#include <tdelocale.h>
static KStaticDeleter<SyncProcessManager> selfDeleter;
SyncProcessManager *SyncProcessManager::mSelf = 0;
SyncProcessManager *SyncProcessManager::self()
{
if ( !mSelf ) {
selfDeleter.setObject( mSelf, new SyncProcessManager() );
}
return mSelf;
}
SyncProcessManager::SyncProcessManager()
{
mEnvironment = new QSync::Environment;
QSync::Result result = mEnvironment->initialize();
if ( result.isError() ) {
KMessageBox::error( 0, i18n("Error initializing OpenSync.\n%1")
.arg( result.message() ) );
} else {
init( mEnvironment );
}
}
SyncProcessManager::~SyncProcessManager()
{
TQValueList<SyncProcess*>::Iterator it;
for ( it = mProcesses.begin(); it != mProcesses.end(); ++it )
delete *it;
mProcesses.clear();
mEnvironment->finalize();
delete mEnvironment;
}
int SyncProcessManager::count() const
{
return mProcesses.count();
}
SyncProcess* SyncProcessManager::at( int pos ) const
{
if ( pos < 0 || pos >= (int)mProcesses.count() )
return 0;
return mProcesses[ pos ];
}
SyncProcess* SyncProcessManager::byGroup( const QSync::Group &group )
{
TQValueList<SyncProcess*>::Iterator it;
for ( it = mProcesses.begin(); it != mProcesses.end(); ++it )
if ( (*it)->group() == group )
return *it;
return 0;
}
SyncProcess* SyncProcessManager::byGroupName( const TQString &name )
{
TQValueList<SyncProcess*>::Iterator it;
for ( it = mProcesses.begin(); it != mProcesses.end(); ++it )
if ( (*it)->group().name() == name )
return *it;
return 0;
}
void SyncProcessManager::addGroup( const TQString &name )
{
SyncProcess* process = byGroupName( name );
if ( !process ) {
QSync::Group group = mEnvironment->addGroup();
group.setName( name );
group.save();
mProcesses.append( new SyncProcess( group ) );
emit changed();
} else
tqDebug( "Try to add duplicate" );
}
void SyncProcessManager::remove( SyncProcess *syncProcess )
{
if ( syncProcess ) {
mProcesses.remove( syncProcess );
const QSync::Group group = syncProcess->group();
delete syncProcess;
mEnvironment->removeGroup( group );
emit changed();
}
}
void SyncProcessManager::init( QSync::Environment *environment )
{
QSync::Environment::GroupIterator it( environment->groupBegin() );
for ( ; it != environment->groupEnd(); ++it ) {
/**
* We check whether the group is valid before we append them
* to mProcesses. That avoids crashes if the plugin of one of
* the members isn't loaded (e.g. not installed).
*/
const QSync::Group group = *it;
int count = group.memberCount();
bool isValid = true;
for ( int i = 0; i < count; ++i ) {
const QSync::Member member = group.memberAt( i );
if ( !member.isValid() ) {
isValid = false;
break;
}
}
if ( isValid )
mProcesses.append( new SyncProcess( *it ) );
}
emit changed();
}
QSync::Result SyncProcessManager::addMember( SyncProcess *process,
const QSync::Plugin &plugin )
{
Q_ASSERT( process );
QSync::Result result = process->addMember( plugin );
if ( !result.isError() ) {
process->group().save();
emit syncProcessChanged( process );
}
return result;
}
#include "syncprocessmanager.moc"

@ -1,101 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2005 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
*/
#ifndef SYNCPROCESSMANAGER_H
#define SYNCPROCESSMANAGER_H
#include <tqobject.h>
#include <libqopensync/group.h>
namespace QSync {
class Environment;
}
class SyncProcess;
class SyncProcessManager : public TQObject
{
Q_OBJECT
public:
static SyncProcessManager *self();
/**
Destroys the SyncProcessList.
*/
~SyncProcessManager();
/**
Return OpenSync Environment.
*/
QSync::Environment *environment() const { return mEnvironment; }
/**
Returns the number of SyncProcesses.
*/
int count() const;
/**
Returns the SyncProcess at position @param pos.
*/
SyncProcess* at( int pos ) const;
/**
Returns the SyncProcess with the given @param group.
*/
SyncProcess* byGroup( const QSync::Group &group );
/**
Returns the SyncProcess with the given group @param name.
*/
SyncProcess* byGroupName( const TQString &name );
/**
Adds a group with given @param name.
*/
void addGroup( const TQString &name );
/**
Removes the given @param sync process.
*/
void remove( SyncProcess *syncProcess );
/**
Adds @param plugin instance as member to the group of @param process.
*/
QSync::Result addMember( SyncProcess *process, const QSync::Plugin &plugin );
signals:
void changed();
void syncProcessChanged( SyncProcess *process );
private:
SyncProcessManager();
void init( QSync::Environment *environment );
TQValueList<SyncProcess*> mProcesses;
QSync::Environment *mEnvironment;
static SyncProcessManager *mSelf;
};
#endif

@ -1,166 +0,0 @@
/*
This file is part of KitchenSync.
Copyright (c) 2006 Daniel Gollub <dgollub@suse.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#include "xmldiffalgo.h"
#include <kdebug.h>
using namespace KSync;
#ifndef KDE_USE_FINAL
// With --enable-final, we get the (identical) compareString from
// addresseediffalgo.cpp
//
static bool compareString( const TQString &left, const TQString &right )
{
if ( left.isEmpty() && right.isEmpty() )
return true;
else
return left == right;
}
#endif
XmlDiffAlgo::XmlDiffAlgo( const TQString &leftXml, const TQString &rightXml )
{
kdDebug() << __func__ << " " << __LINE__ << endl;
mLeftXml.setContent( leftXml );
mRightXml.setContent( rightXml );
}
XmlDiffAlgo::XmlDiffAlgo( const TQDomDocument &leftXml, const TQDomDocument &rightXml )
: mLeftXml( leftXml ), mRightXml( rightXml )
{
kdDebug() << __func__ << " " << __LINE__ << endl;
}
void XmlDiffAlgo::appendSingleNodes(TQDomElement &element, bool isLeft)
{
TQDomNode node;
for ( node = element.firstChild(); !node.isNull(); node = node.nextSibling() ) {
TQDomElement child = node.toElement();
if (isLeft)
additionalLeftField( node.nodeName(), child.text() );
else
additionalRightField( node.nodeName(), child.text() );
}
}
void XmlDiffAlgo::appendConflictNodes(TQDomElement &leftElement, TQDomElement &rightElement)
{
TQDomNode left, right;
TQDomElement leftChild, rightChild;
for ( left = leftElement.firstChild(); !left.isNull(); left = left.nextSibling() ) {
leftChild = left.toElement();
for ( right = rightElement.firstChild(); !right.isNull(); right = right.nextSibling() ) {
rightChild = right.toElement();
if ( leftChild.tagName() != rightChild.tagName() )
continue;
if (leftChild.text().isEmpty() || rightChild.text().isEmpty())
continue;
TQString id = leftChild.tagName();
if (id == "Content")
id = left.parentNode().nodeName();
conflictField( id, leftChild.text(), rightChild.text() );
left.parentNode().removeChild( left );
left = leftElement.firstChild();
right.parentNode().removeChild( right );
right = rightElement.firstChild();
}
}
}
void XmlDiffAlgo::compareNode(TQDomElement &leftElement, TQDomElement &rightElement)
{
TQDomNode left, right;
TQDomElement leftChild, rightChild;
TQDomNodeList nlist;
top:;
for ( left = leftElement.firstChild(); !left.isNull(); left = left.nextSibling() ) {
leftChild = left.toElement();
for ( right = rightElement.firstChild(); !right.isNull(); right = right.nextSibling() ) {
rightChild = right.toElement();
if (leftChild.tagName() != rightChild.tagName())
continue;
if ( left.childNodes().count() > 1 && right.childNodes().count() > 1 ) {
compareNode( leftChild, rightChild );
if ( !left.hasChildNodes() && !right.hasChildNodes() ) {
left.parentNode().removeChild( left );
right.parentNode().removeChild( right );
goto top;
}
break;
}
if ( leftChild.text() == rightChild.text() ) {
TQString id = leftChild.tagName();
if ( id == "Content" )
id = left.parentNode().nodeName();
if ( id != "Type" )
//matchingField( id, leftChild.text(), rightChild.text() );
left.parentNode().removeChild( left );
right.parentNode().removeChild( right );
goto top;
}
}
}
appendConflictNodes(rightElement, leftElement);
appendSingleNodes(rightElement, false);
appendSingleNodes(leftElement, true);
}
void XmlDiffAlgo::run()
{
kdDebug() << __func__ << endl;
begin();
TQDomElement leftElement = mLeftXml.documentElement();
TQDomElement rightElement = mRightXml.documentElement();
compareNode( leftElement, rightElement );
end();
}

@ -1,54 +0,0 @@
/*
This file is part of KitchenSync
Copyright (c) 2006 Daniel Gollub <dgollub@suse.de>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KSYNC_XMLDIFFALGO_H
#define KSYNC_XMLDIFFALGO_H
#include <tqdom.h>
#include <libtdepim/diffalgo.h>
using namespace KPIM;
namespace KSync {
class XmlDiffAlgo : public DiffAlgo
{
public:
XmlDiffAlgo( const TQString &leftXml, const TQString &rightXml );
XmlDiffAlgo( const TQDomDocument &leftXml, const TQDomDocument &rightXml );
void run();
private:
void appendConflictNodes(TQDomElement &leftElement, TQDomElement &rightElement);
void appendSingleNodes(TQDomElement &element, bool isLeft);
void compareNode(TQDomElement &leftElement, TQDomElement &rightElement);
TQDomDocument mLeftXml;
TQDomDocument mRightXml;
};
}
#endif

@ -12,7 +12,6 @@ TODO:
- fix doubled loading of plugins - fix doubled loading of plugins
- where do I get the device name from the kmobile unique process? - where do I get the device name from the kmobile unique process?
- finish the functions which are available to client apps. - finish the functions which are available to client apps.
- kitchensync driver/plugin (starting...)
- a plugin for the left side of the "Open File Dialog". -> - a plugin for the left side of the "Open File Dialog". ->
makes direct access to mobile devices really easy makes direct access to mobile devices really easy
- make the daemon a KDED (KDE Meta Daemon) module (tdelibs/kded/HOWTO, README.kded) - make the daemon a KDED (KDE Meta Daemon) module (tdelibs/kded/HOWTO, README.kded)
@ -22,10 +21,3 @@ General Interface TODO:
----------------------- -----------------------
- automatic logoff timers - automatic logoff timers
- Authentication - Authentication
TODO (lower priority):
----------------------
- a kmobile-driver, which can connect to another KDE-computer
to be able to access Calendar-Entries, ToDo's, ... from there
and to be able to syncronize them via kitchensync (maybe?)

@ -1,14 +0,0 @@
INCLUDES = -I$(top_srcdir)/kontact/interfaces $(all_includes)
kde_module_LTLIBRARIES = libkontact_kitchensync.la
libkontact_kitchensync_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN)
libkontact_kitchensync_la_LIBADD = $(top_builddir)/kontact/interfaces/libkpinterfaces.la
libkontact_kitchensync_la_SOURCES = kitchensync_plugin.cpp
METASOURCES = AUTO
servicedir = $(kde_servicesdir)/kontact
service_DATA = kitchensync.desktop
kitchensynciface_DIR = $(top_srcdir)/kitchensync

@ -1,17 +0,0 @@
[Desktop Entry]
Type=Service
Icon=kitchensync
X-TDE-ServiceTypes=Kontact/Plugin,KPluginInfo
X-TDE-Library=libkontact_kitchensync
X-TDE-KontactPluginVersion=6
X-TDE-KontactPartLibraryName=libkitchensyncpart
X-TDE-PluginInfo-Name=kontact_kitchensync
X-TDE-PluginInfo-Version=0.1
X-TDE-PluginInfo-License=GPL
X-TDE-PluginInfo-EnabledByDefault=false
Name=Sync
Comment=Synchronization Component (Kitchensynk Plugin)

@ -1,67 +0,0 @@
/*
This file is part of Kontact.
Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
As a special exception, permission is given to link this program
with any edition of TQt, and distribute the resulting executable,
without including the source code for TQt in the source distribution.
*/
#include <tqwidget.h>
#include <tdeaboutdata.h>
#include <tdeaction.h>
#include <tdeapplication.h>
#include <kdebug.h>
#include <kgenericfactory.h>
#include <kiconloader.h>
#include <tdemessagebox.h>
#include <tdeparts/componentfactory.h>
#include "core.h"
#include "plugin.h"
#include "kitchensync_plugin.h"
typedef KGenericFactory< KitchenSyncPlugin, Kontact::Core > KitchenSyncPluginFactory;
K_EXPORT_COMPONENT_FACTORY( libkontact_kitchensync,
KitchenSyncPluginFactory( "kontact_kitchensync" ) )
KitchenSyncPlugin::KitchenSyncPlugin( Kontact::Core *core, const char *, const TQStringList& )
: Kontact::Plugin( core, TQT_TQOBJECT(core), "KitchenSync" )
{
setInstance( KitchenSyncPluginFactory::instance() );
}
KitchenSyncPlugin::~KitchenSyncPlugin()
{
}
KParts::ReadOnlyPart* KitchenSyncPlugin::createPart()
{
return loadPart();
}
TQStringList KitchenSyncPlugin::configModules() const
{
TQStringList modules;
modules << "PIM/kitchensync.desktop";
return modules;
}
#include "kitchensync_plugin.moc"

@ -1,51 +0,0 @@
/*
This file is part of Kontact.
Copyright (c) 2003 Cornelius Schumacher <schumacher@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
As a special exception, permission is given to link this program
with any edition of TQt, and distribute the resulting executable,
without including the source code for TQt in the source distribution.
*/
#ifndef KITCHENSYNC_PLUGIN_H
#define KITCHENSYNC_PLUGIN_H
#include <tdelocale.h>
#include <tdeparts/part.h>
#include "plugin.h"
class TDEAboutData;
class KitchenSyncPlugin : public Kontact::Plugin
{
Q_OBJECT
public:
KitchenSyncPlugin( Kontact::Core *core, const char *name,
const TQStringList & );
virtual ~KitchenSyncPlugin();
int weight() const { return 800; }
virtual TQStringList configModules() const;
protected:
KParts::ReadOnlyPart *createPart();
};
#endif

@ -343,7 +343,7 @@ void MainWindow::setupActions()
mSyncActionsEnabled = cfg->readBoolEntry( "GroupwareMailFoldersEnabled", true ); mSyncActionsEnabled = cfg->readBoolEntry( "GroupwareMailFoldersEnabled", true );
if ( mSyncActionsEnabled ) { if ( mSyncActionsEnabled ) {
mSyncActions = new TDEToolBarPopupAction( KGuiItem( i18n( "Synchronize" ), "kitchensync" ), mSyncActions = new TDEToolBarPopupAction( KGuiItem( i18n( "Synchronize" ) ),
TDEStdAccel::shortcut(TDEStdAccel::Reload), TQT_TQOBJECT(this), TQT_SLOT( slotSyncClicked() ), TDEStdAccel::shortcut(TDEStdAccel::Reload), TQT_TQOBJECT(this), TQT_SLOT( slotSyncClicked() ),
actionCollection(), "action_sync" ); actionCollection(), "action_sync" );
} }

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: af\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sinkronisasie"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Синхронизация"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sincronització"

@ -1,28 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# Slávek Banko <slavek.banko@axis.cz>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: 2020-09-20 18:30+0000\n"
"Last-Translator: Slávek Banko <slavek.banko@axis.cz>\n"
"Language-Team: Czech <https://mirror.git.trinitydesktop.org/weblate/projects/"
"tdepim/kitchensync-kitchensyncdesktop/cs/>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.2.2\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr "KitchenSync"
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synchronizace"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: cy\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Cydamseriad"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synkronisering"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Abgleich"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Συγχρονισμός"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: eo\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sinkronigo"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sincronización"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sünkroniseerimine"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sinkronizazioa"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "همگامی"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synkronointi"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synchronisation"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: fy\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Syngronisaasje"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ga\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sioncrónú"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sincronización"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "סינכרון"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Szinkronizáció"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: is\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Samstilling"

@ -1,28 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# Michele Calgaro <michele.calgaro@yahoo.it>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: 2020-11-22 12:59+0000\n"
"Last-Translator: Michele Calgaro <michele.calgaro@yahoo.it>\n"
"Language-Team: Italian <https://mirror.git.trinitydesktop.org/weblate/"
"projects/tdepim/kitchensync-kitchensyncdesktop/it/>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr "KitchenSync"
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sincronizzazione"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "同期"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr ""

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: kk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Қадамдастыру"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: km\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "ការ​​ធ្វើ​សមកាលកម្ម"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sinchronizacija"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ms\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Segerakan"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synkronisering"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: nds\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synkroniseren"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synchronisatie"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synkronisering"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synchronizacja"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr "KitchenSyncFilter"
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sincronização"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Gerenciador de Sincronização"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Синхронизация"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synchronizácia"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Usklajevanje"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Синхронизација"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sr@Latn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Sinhronizacija"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr "Kitchensync"
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Synkronisering"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ta\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "கூட்டிணைப்பு"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Senkronizasyon"

@ -1,29 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# Roman Savochenko <roman@oscada.org>, 2020.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: 2020-08-19 19:59+0000\n"
"Last-Translator: Roman Savochenko <roman@oscada.org>\n"
"Language-Team: Ukrainian <https://mirror.git.trinitydesktop.org/weblate/"
"projects/tdepim/kitchensync-kitchensyncdesktop/uk/>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.1.1\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr "KitchenSync"
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "Синхронізація"

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# This file is put in the public domain.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-09 19:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Name
#: kitchensync.desktop:2
msgid "KitchenSync"
msgstr ""
#. GenericName
#: kitchensync.desktop:4
msgid "Synchronization"
msgstr "同步"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Таймер"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Приставка за KArm" msgstr "Приставка за KArm"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Синхронизация"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Приставка за синхронизация"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Cronòmetre"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Component de seguiment dels temps (endollable del KArm)" msgstr "Component de seguiment dels temps (endollable del KArm)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Component de sincronització (endollable del KitchenSync)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr "Měřic času"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Komponenta měřiče času (modul KArm)" msgstr "Komponenta měřiče času (modul KArm)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Synchronizace"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Komponenta pro synchronizaci (modul Kitchensync)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Time Tracker-komponent (KArm-plugin)" msgstr "Time Tracker-komponent (KArm-plugin)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Synkronisergingskomponent (Kitchensync-plugin)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Stoppuhr"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Zeiterfassungskomponente (KArm-Modul)" msgstr "Zeiterfassungskomponente (KArm-Modul)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Abgleich"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Synchronisationskomponente (KitchenSync-Modul)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Χρονόμετρο"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Συστατικό γραμμής χρόνου (Πρόσθετο του KArm)" msgstr "Συστατικό γραμμής χρόνου (Πρόσθετο του KArm)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Συγχρονισμός"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Συστατικό συγχρονισμού (Πρόσθετο του Kitchensynk)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Ajaarvestaja"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Ajaarvestaja plugin (KArm)" msgstr "Ajaarvestaja plugin (KArm)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Sünkroniseerimine"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Sünkroniseerimise plugin (KitchenSync)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr "Timer"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Componente segna-tempo (plugin Karm)" msgstr "Componente segna-tempo (plugin Karm)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Sincronizza"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Componente di sincronizzazione (plugin KitchenSync)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "タイマー"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "タイムトラッカーコンポーネント (KArm プラグイン)" msgstr "タイムトラッカーコンポーネント (KArm プラグイン)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "同期"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "同期コンポーネント (KitchenSync プラグイン)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Tietgever"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Tietlogbook-Komponent (KArm-Moduul)" msgstr "Tietlogbook-Komponent (KArm-Moduul)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Synkroniseren"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Synkroniseer-Komponent (Kitchensynk-Moduul)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr "Tijdklok"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Tijdsregistratiecomponent (KArm-plugin)" msgstr "Tijdsregistratiecomponent (KArm-plugin)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Synchronisatiecomponent (Kitchensynk-plugin)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Stoper"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Składnik śledzenia czasu (wtyczka KArm)" msgstr "Składnik śledzenia czasu (wtyczka KArm)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Synchronizacja"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Składnik synchronizacji (wtyczka KitchenSync)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Тајмер"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Компонента праћења времена (прикључак KArm-а)" msgstr "Компонента праћења времена (прикључак KArm-а)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Компонента синхронизације (прикључак KitchenSync-а)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Tajmer"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Komponenta praćenja vremena (priključak KArm-a)" msgstr "Komponenta praćenja vremena (priključak KArm-a)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Komponenta sinhronizacije (priključak KitchenSync-a)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "Tidmätning"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Komponent för tidmätning (Karm-insticksprogram)" msgstr "Komponent för tidmätning (Karm-insticksprogram)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Synkronisering"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Synkroniseringskomponent (Kitchensynk-insticksprogram)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -59,16 +59,6 @@ msgstr "Таймер"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "Компонент Трекеру Часу (Втулок KArm)" msgstr "Компонент Трекеру Часу (Втулок KArm)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "Синхр"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "Компонент Синхронізації (Втулок Kitchensynk)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -58,16 +58,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "计时器"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "时间追踪组件(KArm 插件)" msgstr "时间追踪组件(KArm 插件)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "同步组件(KitchenSync 插件)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr "計時器"
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "時間追蹤器組件KArm 外掛程式)" msgstr "時間追蹤器組件KArm 外掛程式)"
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr "同步"
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr "同步組件KitchenSynk 外掛程式)"
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

@ -57,16 +57,6 @@ msgstr ""
msgid "Time Tracker Component (KArm Plugin)" msgid "Time Tracker Component (KArm Plugin)"
msgstr "" msgstr ""
#. Name
#: plugins/kitchensync/kitchensync.desktop:15
msgid "Sync"
msgstr ""
#. Comment
#: plugins/kitchensync/kitchensync.desktop:17
msgid "Synchronization Component (Kitchensynk Plugin)"
msgstr ""
#. Name #. Name
#: plugins/kmail/kcmkmailsummary.desktop:13 #: plugins/kmail/kcmkmailsummary.desktop:13
msgid "E-Mail Overview" msgid "E-Mail Overview"

Loading…
Cancel
Save