summaryrefslogtreecommitdiffstats
path: root/conduits/malconduit
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-02-16 20:17:18 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-02-16 20:17:18 +0000
commitcb7eddb91455a69cf66fcd717e91a51ca5e2cfef (patch)
treecf5546e4d7c44370fbe9ca2be937bd254f30ebaa /conduits/malconduit
downloadkpilot-cb7eddb91455a69cf66fcd717e91a51ca5e2cfef.tar.gz
kpilot-cb7eddb91455a69cf66fcd717e91a51ca5e2cfef.zip
Moved kpilot from kdepim to applications, as the core Trinity libraries should not contain hardware-dependent software
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kpilot@1221127 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'conduits/malconduit')
-rw-r--r--conduits/malconduit/CMakeLists.txt48
-rw-r--r--conduits/malconduit/Makefile.am18
-rw-r--r--conduits/malconduit/README12
-rw-r--r--conduits/malconduit/mal-conduit.cc319
-rw-r--r--conduits/malconduit/mal-conduit.h66
-rw-r--r--conduits/malconduit/mal-factory.cc143
-rw-r--r--conduits/malconduit/mal-factory.h67
-rw-r--r--conduits/malconduit/mal-setup.cc185
-rw-r--r--conduits/malconduit/mal-setup.h54
-rw-r--r--conduits/malconduit/mal-setup_dialog.ui634
-rw-r--r--conduits/malconduit/mal_conduit.desktop94
-rw-r--r--conduits/malconduit/malconduit.kcfg56
-rw-r--r--conduits/malconduit/malconduitSettings.kcfgc7
13 files changed, 1703 insertions, 0 deletions
diff --git a/conduits/malconduit/CMakeLists.txt b/conduits/malconduit/CMakeLists.txt
new file mode 100644
index 0000000..092f340
--- /dev/null
+++ b/conduits/malconduit/CMakeLists.txt
@@ -0,0 +1,48 @@
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${MAL_INCLUDE_DIR}
+)
+
+set(conduit_mal_SRCS
+ mal-factory.cc
+ mal-setup.cc
+ mal-conduit.cc
+)
+
+set(conduit_mal_UIS
+ mal-setup_dialog.ui
+)
+
+set(conduit_mal_KCFGS
+ malconduitSettings.kcfgc
+)
+
+kde3_add_kcfg_files(conduit_mal_SRCS ${conduit_mal_KCFGS})
+kde3_add_ui_files(conduit_mal_SRCS ${conduit_mal_UIS})
+kde3_automoc(${conduit_mal_SRCS})
+add_library(conduit_mal SHARED ${conduit_mal_SRCS})
+target_link_libraries(conduit_mal ${MAL_LIBRARY})
+
+set_target_properties(
+ conduit_mal PROPERTIES
+ LOCATION ${KDE3_PLUGIN_INSTALL_DIR}
+ PREFIX ""
+ INSTALL_RPATH "${MAL_LIBRARY}"
+ INSTALL_RPATH_USE_LINK_PATH true
+)
+
+kde3_install_libtool_file(conduit_mal)
+
+install(
+ TARGETS conduit_mal
+ LIBRARY DESTINATION ${KDE3_PLUGIN_INSTALL_DIR}
+)
+
+install(
+ FILES mal_conduit.desktop DESTINATION ${KDE3_SERVICES_DIR}
+)
+
+install(
+ FILES malconduit.kcfg DESTINATION ${KDE3_KCFG_DIR}
+)
+
diff --git a/conduits/malconduit/Makefile.am b/conduits/malconduit/Makefile.am
new file mode 100644
index 0000000..d8a2224
--- /dev/null
+++ b/conduits/malconduit/Makefile.am
@@ -0,0 +1,18 @@
+### Makefile for the avantgo conduit
+###
+### The mal conduit is Copyright (C) 2002 by Reinhold Kainhofer
+
+
+INCLUDES= $(PISOCK_INCLUDE) $(MAL_INCLUDE) -I$(top_srcdir)/kpilot/lib $(all_includes)
+METASOURCES = AUTO
+
+servicedir = $(kde_servicesdir)
+service_DATA = mal_conduit.desktop
+kde_kcfg_DATA = malconduit.kcfg
+
+kde_module_LTLIBRARIES = conduit_mal.la
+
+conduit_mal_la_SOURCES = malconduitSettings.kcfgc mal-setup_dialog.ui mal-factory.cc mal-setup.cc mal-conduit.cc
+conduit_mal_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries)
+conduit_mal_la_LIBADD = ../../lib/libkpilot.la $(MAL_LIB) $(LIB_KDEUI)
+
diff --git a/conduits/malconduit/README b/conduits/malconduit/README
new file mode 100644
index 0000000..deeeb12
--- /dev/null
+++ b/conduits/malconduit/README
@@ -0,0 +1,12 @@
+KPilot's malconduit
++++++++++++++++++++
+
+Summary: This conduit syncs the handheld with
+ MAL servers such as AvantGo.
+Author: Reinhold Kainhofer, [email protected]
+Date: August 15, 2002
+License: GPL, linking to libmal (MPL) is explicitly allowed
+Depends: The conduits needs libmal >=0.20 installed
+ (otherwise it will not be compiled). libmal
+ can be downloaded from
+ http://jasonday.home.att.net/code/libmal/
diff --git a/conduits/malconduit/mal-conduit.cc b/conduits/malconduit/mal-conduit.cc
new file mode 100644
index 0000000..2d3344f
--- /dev/null
+++ b/conduits/malconduit/mal-conduit.cc
@@ -0,0 +1,319 @@
+/*
+** MAL conduit for KPilot
+**
+** Copyright (C) 2002 by Reinhold Kainhofer
+*/
+
+/*
+** 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 in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+**
+**
+** Specific permission is granted for this code to be linked to libmal
+** (this is necessary because the libmal license is not GPL-compatible).
+*/
+
+/*
+** Bug reports and questions can be sent to [email protected]
+*/
+
+
+
+
+#include "options.h"
+
+#include <tqregexp.h>
+#include <kconfig.h>
+#include <kdebug.h>
+
+#include "mal-factory.h"
+#include "mal-conduit.moc"
+#include <libmal.h>
+#include "malconduitSettings.h"
+
+
+static MALConduit *conduitInstance=0L;
+
+int malconduit_logf(const char *, ...) __attribute__ ((format (printf, 1, 2)));
+
+int malconduit_logf(const char *format, ...)
+{
+ FUNCTIONSETUP;
+ va_list val;
+ int rval;
+ va_start(val, format);
+#define WRITE_MAX_BUF 4096
+ char msg[WRITE_MAX_BUF];
+ msg[0]='\0';
+ rval=vsnprintf(&msg[0], sizeof(msg), format, val);
+ va_end(val);
+ if (rval == -1) {
+ msg[WRITE_MAX_BUF-1] = '\0';
+ rval=WRITE_MAX_BUF-1;
+ }
+ if (conduitInstance)
+ {
+ conduitInstance->printLogMessage(msg);
+ }
+ else
+ {
+ // write out to stderr
+ WARNINGKPILOT<< msg << endl;
+ }
+ return rval;
+}
+
+#ifndef LIBMAL20
+int32 cbTask (void * /*out*/,
+ int32 * /*returnErrorCode*/,
+ char *currentTask,
+ AGBool /*bufferable*/)
+{
+ if (currentTask) {
+ malconduit_logf ("%s\n", currentTask);
+ }
+
+ return AGCLIENT_CONTINUE;
+}
+
+static int32 cbItem (void */*out*/,
+ int32 * /*returnErrorCode*/,
+ int32 /*currentItemNumber*/,
+ int32 /*totalItemCount*/,
+ char * /*currentItem*/)
+{
+// The log widget only supports writing out whole lines. You just can't add a single character
+// to the last line. Thus I completely remove the pseudo-percentbar.
+/* malconduit_logf (".");
+
+ if (currentItemNumber == totalItemCount) {
+ malconduit_logf ("\n");
+ }
+*/
+ return AGCLIENT_CONTINUE;
+}
+#endif
+
+
+MALConduit::MALConduit(KPilotLink * o,
+ const char *n,
+ const TQStringList & a) :
+ ConduitAction(o, n, a)
+{
+ FUNCTIONSETUP;
+#ifdef LIBMAL20
+ register_prinStatusHook(malconduit_logf);
+ register_printErrorHook(malconduit_logf);
+#endif
+ conduitInstance=this;
+ fConduitName=i18n("MAL");
+}
+
+
+
+MALConduit::~MALConduit()
+{
+ FUNCTIONSETUP;
+}
+
+
+
+void MALConduit::readConfig()
+{
+ FUNCTIONSETUP;
+ MALConduitSettings::self()->readConfig();
+#ifdef DEBUG
+ DEBUGKPILOT<<"Last sync was "<<MALConduitSettings::lastMALSync().toString()<<endl;
+#endif
+}
+
+
+
+void MALConduit::saveConfig()
+{
+ FUNCTIONSETUP;
+ MALConduitSettings::setLastMALSync( TQDateTime::tqcurrentDateTime() );
+ MALConduitSettings::self()->writeConfig();
+}
+
+
+
+bool MALConduit::skip()
+{
+ TQDateTime now=TQDateTime::tqcurrentDateTime();
+ TQDateTime lastSync=MALConduitSettings::lastMALSync();
+
+ if (!lastSync.isValid() || !now.isValid()) return false;
+
+ switch ( MALConduitSettings::syncFrequency() )
+ {
+ case MALConduitSettings::eEveryHour:
+ if ( (lastSync.secsTo(now)<=3600) && (lastSync.time().hour()==now.time().hour()) ) return true;
+ else return false;
+ case MALConduitSettings::eEveryDay:
+ if ( lastSync.date() == now.date() ) return true;
+ else return false;
+ case MALConduitSettings::eEveryWeek:
+ if ( (lastSync.daysTo(now)<=7) && ( lastSync.date().dayOfWeek()<=now.date().dayOfWeek()) ) return true;
+ else return false;
+ case MALConduitSettings::eEveryMonth:
+ if ( (lastSync.daysTo(now)<=31) && (lastSync.date().month()==now.date().month()) ) return true;
+ else return false;
+ case MALConduitSettings::eEverySync:
+ default:
+ return false;
+ }
+ return false;
+}
+
+
+
+/* virtual */ bool MALConduit::exec()
+{
+ FUNCTIONSETUP;
+
+ readConfig();
+
+ // TODO: set the log/error message hooks of libmal here!!!
+
+ if (skip())
+ {
+ emit logMessage(i18n("Skipping MAL sync, because last synchronization was not long enough ago."));
+ emit syncDone(this);
+ return true;
+ }
+
+ // Now initiate the sync.
+ PalmSyncInfo* pInfo=syncInfoNew();
+ if (!pInfo) {
+ WARNINGKPILOT << "Could not allocate SyncInfo!" << endl;
+ emit logError(i18n("MAL synchronization failed (no SyncInfo)."));
+ return false;
+ }
+
+ TQString proxyServer( MALConduitSettings::proxyServer() );
+ int proxyPort( MALConduitSettings::proxyPort() );
+ TQString syncMessage;
+ bool canContinue = true;
+ // Set all proxy settings
+ switch (MALConduitSettings::proxyType())
+ {
+ case MALConduitSettings::eProxyHTTP:
+ if (proxyServer.isEmpty())
+ {
+ canContinue = false;
+ syncMessage = i18n("No proxy server is set.");
+ break;
+ }
+ syncMessage = i18n("Using proxy server: %1").arg(proxyServer);
+
+#ifdef DEBUG
+ DEBUGKPILOT<<" Using HTTP proxy server \""<<proxyServer<<
+ "\", Port "<<proxyPort<<", User "<<MALConduitSettings::proxyUser()<<
+ ", Password "<<( (MALConduitSettings::proxyPassword().isEmpty())?TQString("not "):TQString())<<"set"
+ <<endl;
+#endif
+#ifdef LIBMAL20
+ setHttpProxy(const_cast<char *>(proxyServer.latin1()));
+ if (proxyPort>0 && proxyPort<65536) setHttpProxyPort( proxyPort );
+ else setHttpProxyPort(80);
+#else
+ pInfo->httpProxy = new char[ proxyServer.length() + 1 ];
+ strlcpy( pInfo->httpProxy, proxyServer.latin1(), proxyServer.length() + 1);
+ if (proxyPort>0 && proxyPort<65536) pInfo->httpProxyPort = proxyPort;
+ else pInfo->httpProxyPort = 80;
+#endif
+
+ if (!MALConduitSettings::proxyUser().isEmpty())
+ {
+#ifdef LIBMAL20
+ setProxyUsername( const_cast<char *>(MALConduitSettings::proxyUser().latin1()) );
+ if (!MALConduitSettings::proxyPassword().isEmpty()) setProxyPassword( const_cast<char *>(MALConduitSettings::proxyPassword().latin1()) );
+#else
+ pInfo->proxyUsername = new char[ MALConduitSettings::proxyUser().length() + 1 ];
+ strlcpy( pInfo->proxyUsername, MALConduitSettings::proxyUser().latin1(), MALConduitSettings::proxyUser().length() + 1);
+ if (!MALConduitSettings::proxyPassword().isEmpty()) {
+// pInfo->proxyPassword = MALConduitSettings::proxyPassword().latin1();
+ pInfo->proxyPassword = new char[ MALConduitSettings::proxyPassword().length() + 1 ];
+ strlcpy( pInfo->proxyPassword, MALConduitSettings::proxyPassword().latin1(), MALConduitSettings::proxyPassword().length() + 1);
+ }
+#endif
+ }
+ break;
+ case MALConduitSettings::eProxySOCKS:
+ if (proxyServer.isEmpty())
+ {
+ canContinue = false;
+ syncMessage = i18n("No SOCKS proxy is set.");
+ break;
+ }
+ syncMessage = i18n("Using SOCKS proxy: %1").arg(proxyServer);
+#ifdef DEBUG
+ DEBUGKPILOT<<" Using SOCKS proxy server \""<<proxyServer<<"\", Port "<<proxyPort<<", User "<<MALConduitSettings::proxyUser()<<", Password "<<( (MALConduitSettings::proxyPassword().isEmpty())?TQString("not "):TQString() )<<"set"<<endl;
+#endif
+#ifdef LIBMAL20
+ setSocksProxy( const_cast<char *>(proxyServer.latin1()) );
+ if (proxyPort>0 && proxyPort<65536) setSocksProxyPort( proxyPort );
+ else setSocksProxyPort(1080);
+#else
+// pInfo->socksProxy = proxyServer.latin1();
+ pInfo->socksProxy = new char[ proxyServer.length() + 1 ];
+ strlcpy( pInfo->socksProxy, proxyServer.latin1(), proxyServer.length() + 1);
+ if (proxyPort>0 && proxyPort<65536) pInfo->socksProxyPort = proxyPort;
+ else pInfo->socksProxyPort = 1080;
+#endif
+ break;
+ default:
+ break;
+ }
+
+ logMessage(syncMessage);
+
+ if (!canContinue)
+ {
+ return false;
+ }
+
+#ifdef LIBMAL20
+ malsync( pilotSocket(), pInfo);
+#else
+ pInfo->sd = pilotSocket();
+ pInfo->taskFunc = cbTask;
+ pInfo->itemFunc = cbItem;
+ malsync( pInfo );
+ delete[] pInfo->httpProxy;
+ delete[] pInfo->proxyUsername;
+ delete[] pInfo->proxyPassword;
+ delete[] pInfo->socksProxy;
+ syncInfoFree(pInfo);
+#endif
+
+ saveConfig();
+ return delayDone();
+}
+
+void MALConduit::printLogMessage(TQString msg)
+{
+ FUNCTIONSETUP;
+ // Remove the pseudo-progressbar:
+ TQString newmsg(msg);
+ newmsg.tqreplace( TQRegExp("^\\s*\\.*\\s*"), "");
+ newmsg.tqreplace( TQRegExp("\\s*\\.*\\s*$"), "");
+ if (newmsg.length()>0)
+ {
+ emit logMessage(newmsg);
+ }
+}
+
diff --git a/conduits/malconduit/mal-conduit.h b/conduits/malconduit/mal-conduit.h
new file mode 100644
index 0000000..3f5c14a
--- /dev/null
+++ b/conduits/malconduit/mal-conduit.h
@@ -0,0 +1,66 @@
+#ifndef _MAL_CONDUIT_H
+#define _MAL_CONDUIT_H
+/* mal-conduit.h KPilot
+**
+** Copyright (C) 2002 by Reinhold Kainhofer
+**
+*/
+
+/*
+** 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 in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+**
+**
+** Specific permission is granted for this code to be linked to libmal
+** (this is necessary because the libmal license is not GPL-compatible).
+*/
+
+/*
+** Bug reports and questions can be sent to [email protected]
+*/
+
+
+
+#include <plugin.h>
+
+class MALConduit : public ConduitAction
+{
+Q_OBJECT
+public:
+ MALConduit(
+ KPilotLink *o,
+ const char *n = 0L,
+ const TQStringList &a = TQStringList() );
+ virtual ~MALConduit();
+ void printLogMessage(TQString msg);
+ virtual bool exec();
+
+protected:
+ /**
+ * Read in the config from the KPilot config files and fill the member variables accordingly
+ */
+ void readConfig();
+ /**
+ * Store the sync time in the KPilot configuration
+ */
+ void saveConfig();
+ /**
+ * Check if the last sync was not so long ago that according to MALConduitSettings::syncFrequency() we can skip the sync this time
+ */
+ bool skip();
+} ;
+
+
+#endif
diff --git a/conduits/malconduit/mal-factory.cc b/conduits/malconduit/mal-factory.cc
new file mode 100644
index 0000000..3e363d2
--- /dev/null
+++ b/conduits/malconduit/mal-factory.cc
@@ -0,0 +1,143 @@
+/* Time-factory.cc KPilot
+**
+** Copyright (C) 2002 by Reinhold Kainhofer
+**
+** This file defines the factory for the MAL-conduit plugin.
+*/
+
+/*
+** 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 in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+**
+**
+** Specific permission is granted for this code to be linked to libmal
+** (this is necessary because the libmal license is not GPL-compatible).
+*/
+
+/*
+** Bug reports and questions can be sent to [email protected]
+*/
+
+#include "options.h"
+
+#include <kapplication.h>
+#include <kinstance.h>
+#include <kaboutdata.h>
+
+#include <time.h> // Needed by pilot-link include
+#include "mal-conduit.h"
+#include "mal-setup.h"
+
+#include "mal-factory.moc"
+
+
+extern "C"
+{
+
+void *init_conduit_mal()
+{
+ return new MALConduitFactory;
+}
+
+unsigned long version_conduit_mal = Pilot::PLUGIN_API;
+
+}
+
+
+// A number of static variables
+//
+KAboutData *MALConduitFactory::fAbout = 0L;
+
+MALConduitFactory::MALConduitFactory(TQObject *p, const char *n) :
+ KLibFactory(p,n)
+{
+ FUNCTIONSETUP;
+
+ fInstance = new KInstance("MALconduit");
+ fAbout = new KAboutData("MALconduit",
+ I18N_NOOP("MAL Synchronization Conduit for KPilot"),
+ KPILOT_VERSION,
+ I18N_NOOP("Synchronizes the content from MAL Servers like AvantGo to the Handheld"),
+ KAboutData::License_GPL,
+ "(C) 2002, Reinhold Kainhofer");
+ fAbout->addAuthor("Reinhold Kainhofer",
+ I18N_NOOP("Primary Author"), "[email protected]", "http://reinhold.kainhofer.com/");
+ fAbout->addCredit("Jason Day",
+ I18N_NOOP("Author of libmal and the JPilot AvantGo conduit"), "[email protected]");
+ fAbout->addCredit("Tom Whittaker",
+ I18N_NOOP("Author of syncmal"), "[email protected]", "http://www.tomw.org/");
+ fAbout->addCredit("AvantGo, Inc.",
+ I18N_NOOP("Authors of the malsync library (c) 1997-1999"), "", "http://www.avantgo.com/");
+}
+
+MALConduitFactory::~MALConduitFactory()
+{
+ FUNCTIONSETUP;
+
+ KPILOT_DELETE(fInstance);
+ KPILOT_DELETE(fAbout);
+}
+
+/* virtual */ TQObject *MALConduitFactory::createObject( TQObject *p,
+ const char *n,
+ const char *c,
+ const TQStringList &a)
+{
+ FUNCTIONSETUP;
+
+#ifdef DEBUG
+ DEBUGKPILOT << fname
+ << ": Creating object of class "
+ << c
+ << endl;
+#endif
+
+ if (qstrcmp(c,"ConduitConfigBase")==0)
+ {
+ TQWidget *w = dynamic_cast<TQWidget *>(p);
+
+ if (w)
+ {
+ return new MALWidgetSetup(w,n);
+ }
+ else
+ {
+ WARNINGKPILOT
+ << "Couldn't cast parent to widget."
+ << endl;
+ return 0L;
+ }
+ }
+
+ if (qstrcmp(c,"SyncAction")==0)
+ {
+ KPilotLink *d = dynamic_cast<KPilotLink *>(p);
+
+ if (d)
+ {
+ return new MALConduit(d,n,a);
+ }
+ else
+ {
+ WARNINGKPILOT
+ << "Couldn't cast parent to KPilotLink"
+ << endl;
+ return 0L;
+ }
+ }
+
+ return 0L;
+}
+
diff --git a/conduits/malconduit/mal-factory.h b/conduits/malconduit/mal-factory.h
new file mode 100644
index 0000000..a153163
--- /dev/null
+++ b/conduits/malconduit/mal-factory.h
@@ -0,0 +1,67 @@
+#ifndef _TIME_FACTORY_H
+#define _TIME_FACTORY_H
+/* MAL-factory.h KPilot
+**
+** Copyright (C) 2002 by Reinhold Kainhofer
+**
+** This file defines the factory for the mal-conduit plugin.
+*/
+
+/*
+** 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 in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+**
+**
+** Specific permission is granted for this code to be linked to libmal
+** (this is necessary because the libmal license is not GPL-compatible).
+*/
+
+/*
+** Bug reports and questions can be sent to [email protected]
+*/
+
+#include <klibloader.h>
+
+class KInstance;
+class KAboutData;
+
+class MALConduitFactory : public KLibFactory
+{
+Q_OBJECT
+
+public:
+ MALConduitFactory(TQObject * = 0L,const char * = 0L);
+ virtual ~MALConduitFactory();
+
+ static KAboutData *about() { return fAbout; } ;
+
+protected:
+ virtual TQObject* createObject( TQObject* parent = 0,
+ const char* name = 0,
+ const char* classname = "TQObject",
+ const TQStringList &args = TQStringList() );
+private:
+ KInstance *fInstance;
+ static KAboutData *fAbout;
+} ;
+
+extern "C"
+{
+
+void *init_libtimeconduit();
+
+}
+
+#endif
diff --git a/conduits/malconduit/mal-setup.cc b/conduits/malconduit/mal-setup.cc
new file mode 100644
index 0000000..1d1f89f
--- /dev/null
+++ b/conduits/malconduit/mal-setup.cc
@@ -0,0 +1,185 @@
+/* MAL-setup.cc KPilot
+**
+** Copyright (C) 2002 by Reinhold Kainhofer
+**
+** This file defines the setup dialog for the MAL-conduit plugin.
+*/
+
+/*
+** 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 in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+**
+**
+** Specific permission is granted for this code to be linked to libmal
+** (this is necessary because the libmal license is not GPL-compatible).
+*/
+
+/*
+** Bug reports and questions can be sent to [email protected]
+*/
+
+#include "options.h"
+
+#include <tqtabwidget.h>
+#include <tqradiobutton.h>
+#include <tqbuttongroup.h>
+#include <tqlineedit.h>
+#include <tqcheckbox.h>
+
+#include <kcombobox.h>
+#include <knuminput.h>
+#include <kpassdlg.h>
+
+#include <kapplication.h>
+#include <kconfig.h>
+
+
+#include "mal-setup_dialog.h"
+
+#include "mal-factory.h"
+#include "mal-setup.moc"
+#include "malconduitSettings.h"
+
+
+MALWidgetSetup::MALWidgetSetup(TQWidget *w, const char *n) :
+ ConduitConfigBase(w,n),
+ fConfigWidget(new MALWidget(w))
+{
+ FUNCTIONSETUP;
+
+ fConduitName=i18n("MAL");
+ ConduitConfigBase::addAboutPage(fConfigWidget->tabWidget,MALConduitFactory::about());
+ fWidget = fConfigWidget;
+
+ fConfigWidget->tabWidget->adjustSize();
+ fConfigWidget->resize(fConfigWidget->tabWidget->size());
+#define CM(a,b) connect(fConfigWidget->a,b,this,TQT_SLOT(modified()));
+ CM( syncTime, TQT_SIGNAL(clicked(int)) );
+ CM( proxyType, TQT_SIGNAL(clicked(int)) );
+
+ CM( proxyServerName, TQT_SIGNAL(textChanged(const TQString &)) );
+ CM( proxyCustomPortCheck, TQT_SIGNAL(clicked()) );
+ CM( proxyCustomPort, TQT_SIGNAL(valueChanged(int)) );
+ CM( proxyUserName, TQT_SIGNAL(textChanged(const TQString &)) );
+ CM( proxyPassword, TQT_SIGNAL(textChanged(const TQString &)) );
+
+ CM( malServerName, TQT_SIGNAL(textChanged(const TQString &)) );
+ CM( malCustomPortCheck, TQT_SIGNAL(clicked()) );
+ CM( malCustomPort, TQT_SIGNAL(valueChanged(int)) );
+ CM( malUserName, TQT_SIGNAL(textChanged(const TQString &)) );
+ CM( malPassword, TQT_SIGNAL(textChanged(const TQString &)) );
+#undef CM
+}
+
+MALWidgetSetup::~MALWidgetSetup()
+{
+ FUNCTIONSETUP;
+}
+
+/* virtual */ void MALWidgetSetup::commit()
+{
+ FUNCTIONSETUP;
+
+ MALConduitSettings::setSyncFrequency(
+ fConfigWidget->syncTime->id(fConfigWidget->syncTime->selected()));
+
+ // Proxy settings
+ MALConduitSettings::setProxyType(
+ fConfigWidget->proxyType->id(fConfigWidget->proxyType->selected()));
+ MALConduitSettings::setProxyServer( fConfigWidget->proxyServerName->currentText() );
+
+ if (fConfigWidget->proxyCustomPortCheck->isChecked() )
+ {
+ MALConduitSettings::setProxyPort( fConfigWidget->proxyCustomPort->value());
+ }
+ else
+ {
+ MALConduitSettings::setProxyPort(0);
+ }
+ MALConduitSettings::setProxyUser( fConfigWidget->proxyUserName->text() );
+ MALConduitSettings::setProxyPassword( fConfigWidget->proxyPassword->password() );
+
+ // MAL Server settings (not yet possible!!!)
+ MALConduitSettings::setMALServer( fConfigWidget->malServerName->currentText() );
+
+ if (fConfigWidget->malCustomPortCheck->isChecked() )
+ {
+ MALConduitSettings::setMALPort( fConfigWidget->malCustomPort->value());
+ }
+ else
+ {
+ MALConduitSettings::setMALPort(0);
+ }
+ MALConduitSettings::setMALUser( fConfigWidget->malUserName->text() );
+ MALConduitSettings::setMALPassword( fConfigWidget->malPassword->text() );
+
+ MALConduitSettings::self()->writeConfig();
+ unmodified();
+}
+
+
+
+/* virtual */ void MALWidgetSetup::load()
+{
+ FUNCTIONSETUP;
+ MALConduitSettings::self()->readConfig();
+
+ fConfigWidget->syncTime->setButton( MALConduitSettings::syncFrequency() );
+
+ // Proxy settings
+ fConfigWidget->proxyType->setButton(MALConduitSettings::proxyType());
+ fConfigWidget->proxyServerName->setEditText(MALConduitSettings::proxyServer());
+
+ int proxyPortNr=MALConduitSettings::proxyPort();
+ if (proxyPortNr>0 && proxyPortNr<65536)
+ {
+ fConfigWidget->proxyCustomPortCheck->setChecked(true);
+ fConfigWidget->proxyCustomPort->setEnabled(true);
+ fConfigWidget->proxyCustomPort->setValue(proxyPortNr);
+ }
+ fConfigWidget->proxyUserName->setText(MALConduitSettings::proxyUser());
+ fConfigWidget->proxyPassword->setText(TQString::null);
+ fConfigWidget->proxyPassword->insert(MALConduitSettings::proxyPassword());
+
+#ifdef DEBUG
+ DEBUGKPILOT << fname << ": Got proxy password <"
+ << MALConduitSettings::proxyPassword()
+ << "> set Text <"
+ << fConfigWidget->proxyPassword->text()
+ << "> and Pwd <"
+ << fConfigWidget->proxyPassword->password()
+ << ">" << endl;
+#endif
+
+ // MAL Server settings (not yet possible!!!)
+ fConfigWidget->malServerName->setEditText(MALConduitSettings::mALServer());
+
+ int malPortNr=MALConduitSettings::mALPort();
+ if (malPortNr>0 && malPortNr<65536)
+ {
+ fConfigWidget->malCustomPortCheck->setChecked(true);
+ fConfigWidget->malCustomPort->setEnabled(true);
+ fConfigWidget->malCustomPort->setValue(proxyPortNr);
+ }
+ fConfigWidget->malUserName->setText(MALConduitSettings::mALUser());
+ fConfigWidget->malPassword->setText(MALConduitSettings::mALPassword());
+ unmodified();
+}
+
+/* static */ ConduitConfigBase *MALWidgetSetup::create(TQWidget *w, const char *n)
+{
+ return new MALWidgetSetup(w,n);
+}
+
diff --git a/conduits/malconduit/mal-setup.h b/conduits/malconduit/mal-setup.h
new file mode 100644
index 0000000..6a63374
--- /dev/null
+++ b/conduits/malconduit/mal-setup.h
@@ -0,0 +1,54 @@
+#ifndef _MAL_SETUP_H
+#define _MAL_SETUP_H
+/* mal-setup.h KPilot
+**
+** Copyright (C) 2002 by Reinhold Kainhofer
+**
+** This file defines the widget and behavior for the config dialog
+** of the mal conduit.
+*/
+
+/*
+** 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 in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+**
+**
+** Specific permission is granted for this code to be linked to libmal
+** (this is necessary because the libmal license is not GPL-compatible).
+*/
+
+/*
+** Bug reports and questions can be sent to [email protected]
+*/
+
+#include "plugin.h"
+
+class MALWidget;
+
+class MALWidgetSetup : public ConduitConfigBase
+{
+Q_OBJECT
+public:
+ MALWidgetSetup(TQWidget *,const char *);
+ virtual ~MALWidgetSetup();
+ virtual void load();
+ virtual void commit();
+ static ConduitConfigBase *create(TQWidget *, const char *);
+private:
+ MALWidget *fConfigWidget;
+} ;
+
+
+#endif
diff --git a/conduits/malconduit/mal-setup_dialog.ui b/conduits/malconduit/mal-setup_dialog.ui
new file mode 100644
index 0000000..412df1b
--- /dev/null
+++ b/conduits/malconduit/mal-setup_dialog.ui
@@ -0,0 +1,634 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>MALWidget</class>
+<author>Reinhold Kainhofer</author>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>MalWidget</cstring>
+ </property>
+ <property name="tqgeometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>534</width>
+ <height>505</height>
+ </rect>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QTabWidget" row="0" column="0">
+ <property name="name">
+ <cstring>tabWidget</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>tab</cstring>
+ </property>
+ <attribute name="title">
+ <string>General</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup" row="0" column="0">
+ <property name="name">
+ <cstring>syncTime</cstring>
+ </property>
+ <property name="title">
+ <string>Sync</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Select how often AvantGo should be synchronised</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QRadioButton" row="0" column="0">
+ <property name="name">
+ <cstring>RadioButton1</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Every sync</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Select this option to synchronize with the MAL server on every HotSync. To perform a successful synchronization, you need to have access to the MAL server during the HotSync.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" row="1" column="0">
+ <property name="name">
+ <cstring>RadioButton1_2</cstring>
+ </property>
+ <property name="text">
+ <string>Once per &amp;hour</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string></string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Select this option to synchronize with the MAL server on every HotSync that is at least one hour after the previous MAL sync. To perform a successful synchronization, you need to have access to the MAL server during the HotSync.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" row="2" column="0">
+ <property name="name">
+ <cstring>RadioButton1_3</cstring>
+ </property>
+ <property name="text">
+ <string>Once a &amp;day</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Select this option to synchronize with the MAL server on every HotSync that is at least one day after the previous MAL sync. To perform a successful synchronization, you need to have access to the MAL server during the HotSync.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" row="3" column="0">
+ <property name="name">
+ <cstring>RadioButton1_4</cstring>
+ </property>
+ <property name="text">
+ <string>Once a &amp;week</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Select this option to synchronize with the MAL server on every HotSync that is at least one week after the previous MAL sync. To perform a successful synchronization, you need to have access to the MAL server during the HotSync.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton" row="4" column="0">
+ <property name="name">
+ <cstring>RadioButton1_5</cstring>
+ </property>
+ <property name="text">
+ <string>Once a &amp;month</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Select this option to synchronize with the MAL server on every HotSync that is at least one month after the previous MAL sync. To perform a successful synchronization, you need to have access to the MAL server during the HotSync.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <spacer row="1" column="0">
+ <property name="name">
+ <cstring>Spacer3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="tqsizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>tab</cstring>
+ </property>
+ <attribute name="title">
+ <string>Proxy</string>
+ </attribute>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>proxyType</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>GroupBoxPanel</enum>
+ </property>
+ <property name="title">
+ <string>Proxy Type</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>RadioButton8</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;No proxy</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Select this option if you do not want KPilot to use a proxy server. Use this option if you connect to the internet directly.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>RadioButton8_2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;HTTP proxy</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Select this option if you want KPilot to use a HTTP proxy.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>RadioButton8_2_2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;SOCKS proxy</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Select this option if you want KPilot to use a SOCKS proxy.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>proxyServerInformation</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string>Server Information</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <spacer row="1" column="2">
+ <property name="name">
+ <cstring>Spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="tqsizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QCheckBox" row="1" column="0">
+ <property name="name">
+ <cstring>proxyCustomPortCheck</cstring>
+ </property>
+ <property name="text">
+ <string>Custom &amp;port:</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>Check this box to use a non-standard proxy port.</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Ser&amp;ver name:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>proxyServerName</cstring>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;If you selected HTTP or SOCKS proxy, type the address of the proxy server to use here, in the form &lt;i&gt;foo.bar.com&lt;/i&gt; (not &lt;i&gt;http://foo.bar.com&lt;/i&gt; or &lt;i&gt;http://foo.bar.com:8080&lt;/i&gt;).&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="KHistoryCombo" row="0" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>proxyServerName</cstring>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;If you selected HTTP or SOCKS proxy, type the address of the proxy server to use here, in the form &lt;i&gt;foo.bar.com&lt;/i&gt; (not &lt;i&gt;http://foo.bar.com&lt;/i&gt; or &lt;i&gt;http://foo.bar.com:8080&lt;/i&gt;).&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="KIntNumInput" row="1" column="1">
+ <property name="name">
+ <cstring>proxyCustomPort</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="value">
+ <number>80</number>
+ </property>
+ <property name="minValue">
+ <number>0</number>
+ </property>
+ <property name="maxValue">
+ <number>65535</number>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Enter the port you want KPilot to use when connecting to your proxy server here.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="KPasswordEdit" row="5" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>proxyPassword</cstring>
+ </property>
+ <property name="echoMode">
+ <enum>Password</enum>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;If your proxy requires authentication, enter your password here.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="4" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>proxyUserName</cstring>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;If your proxy requires authentication, enter your username here.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="5" column="0">
+ <property name="name">
+ <cstring>TextLabel2_2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Password:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>proxyPassword</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="4" column="0">
+ <property name="name">
+ <cstring>TextLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;User name:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>proxyUserName</cstring>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;If your proxy requires authentication, enter your username here.&lt;/qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="Line" row="3" column="0" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>Line1</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>HLine</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="2" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>proxyExclude</cstring>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Enter a list of MAL servers that do not need the use of a proxy here, separated with commas, e.g: &lt;br&gt;&lt;i&gt;localhost,127.0.0.1,.lan&lt;/i&gt;&lt;qt&gt;</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>N&amp;o proxy for:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>proxyExclude</cstring>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;qt&gt;Enter a list of MAL servers that do not need the use of a proxy here, separated with commas, e.g: &lt;br&gt;&lt;i&gt;localhost,127.0.0.1,.lan&lt;/i&gt;&lt;qt&gt;</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer3_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="tqsizeHint">
+ <size>
+ <width>20</width>
+ <height>70</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>tab</cstring>
+ </property>
+ <attribute name="title">
+ <string>MAL Server</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QGroupBox" row="1" column="0">
+ <property name="name">
+ <cstring>GroupBox1_2</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="title">
+ <string>MAL Server Information</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>TextLabel1_2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;MAL server name:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>malServerName</cstring>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>malCustomPortCheck</cstring>
+ </property>
+ <property name="text">
+ <string>Custom &amp;port:</string>
+ </property>
+ </widget>
+ <widget class="KIntNumInput" row="1" column="2">
+ <property name="name">
+ <cstring>malCustomPort</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="value">
+ <number>80</number>
+ </property>
+ <property name="minValue">
+ <number>0</number>
+ </property>
+ <property name="maxValue">
+ <number>65535</number>
+ </property>
+ </widget>
+ <spacer row="1" column="3">
+ <property name="name">
+ <cstring>Spacer2_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="tqsizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="KHistoryCombo" row="0" column="2" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>malServerName</cstring>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="3" column="1" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>malUserName</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="4" column="0">
+ <property name="name">
+ <cstring>TextLabel2_2_2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Password:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>malPassword</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>textLabel</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;User name:</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>malUserName</cstring>
+ </property>
+ </widget>
+ <widget class="Line" row="2" column="0" rowspan="1" colspan="4">
+ <property name="name">
+ <cstring>Line1_2</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>HLine</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <widget class="KPasswordEdit" row="4" column="1" rowspan="1" colspan="3">
+ <property name="name">
+ <cstring>malPassword</cstring>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <spacer row="2" column="0">
+ <property name="name">
+ <cstring>Spacer5</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="tqsizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel1_3</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;qt&gt;There is currently &lt;b&gt;no way to set server parameters on the desktop&lt;/b&gt;; you need to use the &lt;i&gt;MobileLink&lt;/i&gt; or &lt;i&gt;AGConnect&lt;/i&gt; application on the handheld device. &lt;/qt&gt;</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </widget>
+ </grid>
+</widget>
+<connections>
+ <connection>
+ <sender>RadioButton8</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>proxyServerInformation</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>RadioButton8_2</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>proxyServerInformation</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>RadioButton8_2_2</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>proxyServerInformation</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>proxyCustomPortCheck</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>proxyCustomPort</receiver>
+ <slot>setEditFocus(bool)</slot>
+ </connection>
+ <connection>
+ <sender>proxyCustomPortCheck</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>proxyCustomPort</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>malCustomPortCheck</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>malCustomPort</receiver>
+ <slot>setEditFocus()</slot>
+ </connection>
+ <connection>
+ <sender>malCustomPortCheck</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>malCustomPort</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+</connections>
+<tabstops>
+ <tabstop>tabWidget</tabstop>
+</tabstops>
+<tqlayoutdefaults spacing="6" margin="11"/>
+<includes>
+ <include location="global" impldecl="in implementation">klineedit.h</include>
+ <include location="global" impldecl="in implementation">knuminput.h</include>
+</includes>
+</UI>
diff --git a/conduits/malconduit/mal_conduit.desktop b/conduits/malconduit/mal_conduit.desktop
new file mode 100644
index 0000000..c502668
--- /dev/null
+++ b/conduits/malconduit/mal_conduit.desktop
@@ -0,0 +1,94 @@
+[Desktop Entry]
+Type=Service
+Name=MAL (AvantGo) Conduit
+Name[af]=MAL (AvantGo) pad
+Name[ca]=Conducte MAL (AvantGo)
+Name[cs]=Propojení s AvantGo
+Name[cy]=Cwndid MAL (AvantGo)
+Name[de]=MAL- (AvantGo) Abgleich (Conduit)
+Name[el]=Σύνδεσμος MAL (AvantGo)
+Name[eo]=MAL (AvantGo) Kanalo
+Name[es]=Conducto MAL (AvantGo)
+Name[et]=MAL (AvantGo) kanal
+Name[eu]=MAL (AvantGo) kanala
+Name[fa]=لولۀ MAL (AvantGo)
+Name[fi]=MAL (AvantGo)- yhdyskäytävä
+Name[fr]=MAL (AvantGo) Canal
+Name[ga]=Seoladán MAL (AvantGo)
+Name[gl]=Conducto MAL (AvantGo)
+Name[he]=ממשק AvantGo) MAL)
+Name[hi]=एमएएल (AvantGo) कन्ड्यूइट
+Name[hu]=MAL- (AvantGo) csatoló
+Name[is]=MAL (AvantGo)-rás
+Name[it]=Conduit MAL (AvantGo)
+Name[ja]=MAL (AvantGo) コンジット
+Name[kk]=MAL (AvantGo) арнасы
+Name[km]=បំពង់ MAL (AvantGo)
+Name[lt]=MAL (AvantGo) kanalas
+Name[ms]=Saluran MAL (AvantGo)
+Name[nb]=MAL (AvantGo) kanal
+Name[nds]=MAL(AvantGo)-Synkroniseren
+Name[ne]=MAL (AvantGo) कन्ड्युट
+Name[nn]=MAL-kopling (AvantGo)
+Name[nso]=Conduit ya MAL (AvantGo)
+Name[pl]=Łącznik do MAL (AvantGo)
+Name[pt]=Conduta MAL (AvantGo)
+Name[pt_BR]=Conduto MAL (AvantGo)
+Name[ro]=Conductă MAL (AvantGo)
+Name[ru]=Канал MAL (AvantGo)
+Name[sk]=Spojka MAL (AvantGo)
+Name[sl]=Veznik MAL (AvantGo)
+Name[sr]=MAL (AvantGo) провод
+Name[sr@Latn]=MAL (AvantGo) provod
+Name[sv]=MAL (AvantGo)-kanal
+Name[ta]=MAL (AvantGo) காப்புக் குழாய்
+Name[tg]=Канали MAL (AvantGo)
+Name[tr]=MAL (AvantGo) Kanalı
+Name[uk]=Акведук MAL (AvantGo)
+Name[zh_CN]=MAL (AvantGo) 管道
+Comment=Syncronize AvantGo (or generally a MAL server's content) to the handheld. This allows you to view web-pages offline on the handheld, like your cinema or TV schedule, or any other web page.
+Comment[af]=Sinkroniseer AvantGo (MAL bediener inhoud) informasie na die draagbare toestel. Dit maak dit moontlik om aflyn na web blaaie, soos TV en fliek skedules, te kyk.
+Comment[bg]=Синхронизиране на AvantGo към мобилно устройство. Тази приставка ви позволява да разглеждате уеб страници без връзка с Мрежата.
+Comment[ca]=Sincronitza AvantGo (o el contingut d'un servidor MAL en general) a l'agenda electrònica. Això us permet veure pàgines web a l'agenda electrònica en mode desconnectat, com ara la programació de TV o cinema o qualsevol altra pàgina web.
+Comment[cs]=Synchronizace AvantGo (nebo obecně obsahu MAL serverů) s PDA. To umožňuje offline prohlížení stránek v PDA např. TV programů, programů kin a mnoha dalších stránek.
+Comment[da]=Synkronisér AvantGo (eller mere alment indholdet på en MAL-server) med den håndholdte. Det lader dig kigge på nedsider offline på den håndholdte, såsom biografer eller tv-programmer, eller en hvilken som helst anden netside.
+Comment[de]=Gleicht AvantGo (oder allgemein den Inhalt eines MAL-Servers) mit dem Taschencomputer ab. So können Sie z. B. Internetseiten ohne Internetverbindung auf dem Taschencomputer lesen, zum Beispiel einen Kinoplan oder die aktuelle Programmzeitschrift.
+Comment[el]=Συγχρονισμός ενός AvantGo (ή γενικότερα τα περιεχόμενα ενός εξυπηρετητή MAL) με τον υπολογιστή παλάμης. Αυτό σας επιτρέπει να βλέπετε ιστοσελίδες στον υπολογιστή παλάμης χωρίς να είστε συνδεδεμένοι, όπως το πρόγραμμα των κινηματογράφων ή της τηλεόρασης, ή οποιαδήποτε άλλη ιστοσελίδα.
+Comment[en_GB]=Syncronise AvantGo (or generally a MAL server's content) to the handheld. This allows you to view web-pages offline on the handheld, like your cinema or TV schedule, or any other web page.
+Comment[es]=Sincroniza AvantGo (o más genéricamente, el contenido de un servidor MAL) con la agenda electrónica. Le permite ver páginas web en la agenda electrónica sin estar conectado, como la programación de televisión o la cartelera de cine, o cualquier otra página web.
+Comment[et]=See kanal sünkroniseerib AvantGo (või üldisemalt MAL serveri sisu) pihuarvutiga. See võimaldab vaadata veebilehekülgi pihuseadmelt ilma võrguühendusega, näiteks uurida kino- või telekava või mis tahes muud huvipakkuvat veebilehekülge.
+Comment[eu]=Sinkronizatu AvantGo (edo orokorrean MAL zerbitzariaren edukina) agenda elektronikora. Honek web-orriak agendan konexio gabe ikusteko aukera ematen dizu, zure zine edo TB antolatzailean bezala, edo beste web orri bat bezala.
+Comment[fa]=همگام‌سازی AvantGo (یا عموماً محتوای کارساز MAL) با دستی. به شما اجازه می‌دهد که صفحات وب برون‌خطی روی دستی، مانند برنامۀ سینما یا تلویزیون شما، یا هر صفحه وب دیگری را مشاهده کنید.
+Comment[fi]=Synkronoi AvantGo (tai yleisesti MAL-palvelimen sisältö) taskutietokoneeseen. Tämä mahdollistaa web-sivujen lukemisen offline-tilassa (esim. elokuva- tai tv-ohjelmasivujen).
+Comment[fr]=Synchronise AvantGo (ou plus généralement tout serveur MAL) avec votre Palm. Ceci vous permet de consulter des pages Web hors ligne sur votre Palm, comme des programmes TV, Cinéma ou n'importe quelle page Web.
+Comment[fy]=Avantgo mei de handheld syngronosearje (of eins mei de ynhâld fan in g MAL-tsjinner). Dit makket it mooglik om in webside sûnder ferbining te besjen op jo handheld. Dit is hanjnich foar in soad saken lykas de TV-gids.
+Comment[gl]=Sincronizar AvantGo (ou xeralmente o contido dun servidor MAL) co aparello portátil. Isto permite ver as páxinas web fóra de liña no aparello portátil, como a programación do cine ou da TV, ou calquera outra páxina web.
+Comment[hu]=AvantGo (vagy MAL-kiszolgáló) adatainak szinkronizálása a kézi számítógéppel. Lehetővé teszi weboldalak offline módban való megtekintését, például a mozi- vagy tévéműsort, vagy bármi mást.
+Comment[is]=Samstillir AvantGo (eða venjulega innihald MAL þjóns) við lófatölvuna. Þetta gerir þér kleyft að skoða vefsíður þegar þú ert ótengd(ur) vefnum, t.d. kvikmynda eða sjónvarpsdagskrá.
+Comment[it]=Sincronizza AvantGo (o il contenuto di un generico server MAL) con il palmare. In questo modo potrai visualizzare le pagine web offline sul palmare come per esempio la programmazione di un cinema o una TV o qualsiasi altra pagina web.
+Comment[ja]=AvantGo (または一般に MAL サーバのコンテンツ) とハンドヘルドを同期させます。これにより、ハンドヘルドで映画や TV 番組表、その他のウェブページをオフラインで閲覧できるようになります。
+Comment[kk]=AvantGo (немесе жалпы MAL сервердің мазмұнын) қалта құрылғымен қадамдастыру арнасы. Бұл сол құрылғыда кино, ТВ кестеңізді немесе басқа веб парақтарды желіге қосылмай көруге мүмкіндік береді.
+Comment[km]=ធ្វើ​សមកាលកម្ម AvantGo (ជាទូទៅ​គឺ មាតិកា​របស់​ម៉ាស៊ីន​បម្រើ MAL) ទៅ​នឹង​ឧបករណ៍​យួរ​ដៃ ។ វា​អនុញ្ញាត​ឲ្យ​អ្នក​មើល​ទំព័រ​បណ្ដាញ (កាលវិភាគ​រោង​ភាពយន្ត ឬ ទូរទស្សន៍...) នៅ​ក្រៅ​បណ្ដាញ នៅ​លើ​ឧបករណ៍​យួរ​ដៃ​របស់​អ្នក ។
+Comment[lt]=Sinchronizuoti AvantGo (ar MAL serverio turinį apskritai) su nešiojamu įrenginiu. Tai leis jums peržiūrėti žiniatinklio puslapius nešiojamame įrenginyje, tokius kaip kino teatro ar TV programas, bei bet kokį kitą puslapį, neprisijungus prie Interneto.
+Comment[ms]=Mensegerakkan AvantGo (atau kandungan pelayan MAL secara umum) ke komputer telapak. Ini membolehkan anda memaparkan laman web di luar talian pada komputer telapak, seperti pawagam atau jadual TV, atau laman web lain.
+Comment[nb]=Synkroniser AvantGo (eller generelt innholdet i en MAL-tjener) til PDA-en. På denne måten kan du se nettsider frakoblet på PDA-en. slik som TV-programlister, kinoprogrammer eller andre nettsider.
+Comment[nds]=Synkroniseert den Inholt vun AvantGo oder jichtenseen anner MAL-Server ("Mobile Application Link") mit den Handreekner. So kannst Du Nettsieden ahn Verbinnen op den Handreekner ankieken, t.B. dat Kino- oder Feernsehprogramm.
+Comment[ne]=AvantGo (वा साधारणतया एउटा MAL सर्भरको सामाग्री) ह्यान्डहेल्डमा समक्रमण गर्नुहोस् । यसले तपाईँलाई वेब पृष्ठ, जस्तै: सिनेमा वा टी भी कार्यतालिका, वा अन्य कुनै वेब पृष्ठ ह्यान्डहेल्डको अफलाईनमा हेर्न अनुमति दिन्छ ।
+Comment[nl]=Avantgo met de handheld synchroniseren (of eigenlijk met de inhoud van een MAL-server). Dit maakt het mogelijk om een webpagina offline op uw handheld te bekijken. Dit is handig voor allerlei zaken als bijvoorbeeld de TV-gids.
+Comment[pl]=Synchronizuje AvantGo (lub ogólnie zawartość serwera MAL) z palmtopem. Pozwala to przeglądać bez połączenia z siecią strony WWW na palmtopie, np. repertuar kin lub program telewizyjny.
+Comment[pt]=Sincroniza o AvantGo (ou, genericamente, o conteúdo de um servidor de MAL) para o dispositivo móvel. Isto permite-lhe ver as páginas Web no dispositivo móvel sem estar ligado, como o seu horário de cinema ou TV ou ainda qualquer outra página Web.
+Comment[pt_BR]=Sincroniza AvantGo (ou geralmente o conteúodo de um servidor MAL) com o handheld. Isto permite que você visualize páginas web offline no handheld, por exemplo a grade do cinema ou TV, ou qualquer outra página.
+Comment[ru]=Синхронизация AvantGo (содержимого серверов MAL) с КПК. Это позволит вам просматривать веб-страницы без подключения к Интернет.
+Comment[sk]=Synchronizuje AvantGo (alebo všeobecne obsah MAL servera) s ručným zariadením. Toto umožní vidieť webovské stránky bez pripojenia na ručnom zariadení, ako sú programy kina alebo TV, alebo hociakej webovskej stránky.
+Comment[sl]=Uskladi AvantGo (oziroma v splošnem vsebino strežnika MAL) na ročnem računalniku. S tem si lahko na njem ogledujete spletne strani brez povezave, kot so razpored kino predstav ali pa TV spored ali pa katerokoli drugo spletno stran.
+Comment[sr]=Синхронизује AvantGo (или уопштено садржај MAL сервера) са ручним рачунаром. Ово вам омогућава да на ручном рачунару прегледате веб стране ван везе, као биоскопски или ТВ програм, или било коју другу веб страну.
+Comment[sr@Latn]=Sinhronizuje AvantGo (ili uopšteno sadržaj MAL servera) sa ručnim računarom. Ovo vam omogućava da na ručnom računaru pregledate veb strane van veze, kao bioskopski ili TV program, ili bilo koju drugu veb stranu.
+Comment[sv]=Synkronisera AvantGo (eller mer allmänt innehållet på en MAL-server) med handdatorn. Det låter dig titta på webbsidor i nerkopplat läge på handdatorn, som bio eller tv-program, eller vilken annan webbsida som helst.
+Comment[ta]=AvantGoஐ கையில் வைத்திருப்பதில் கூட்டிணைக்கவும் (அல்லது ஒரு MAL சேவகனின் உள்ளடக்கத்திற்கு). இதன்மூலம் கையில் இருப்பதிலேயே வலைப்பக்கங்களை பார்க்கலாம், அதாவது சினிமா, தொலைக்காட்டி அட்டவ்ணை, அல்லது ஏதாவது ஒரு வலைப்பக்கம்.
+Comment[tr]=AvantGo içeriğini (ya da genel olarak MAL sunucuları içeriğini) el bilgisayarı ile birleştirir. Bu, web sayfalarını el bilgisayarınızda çevirim dışı olarak görüntülemenizi sağlar.
+Comment[uk]=Синхронізація AvantGo (або вміст серверів MAL) на кишеньковий пристрій . Це дозволяє переглядати веб-сторінки на кишеньковому пристрої без з'єднання з Інтернетом.
+Comment[zh_CN]=将 AvantGo(或 MAL 服务器的内容)同步到手持设备中。这允许您在手持设备中脱机查看 Web 页,比如影讯、电视节目时间表或任何其它网页。
+Comment[zh_TW]=同步 AvantGo (或通常為一 MAL 伺服器內容) 與 handheld。
+Implemented=file
+ServiceTypes=KPilotConduit
+X-KDE-Library=conduit_mal
diff --git a/conduits/malconduit/malconduit.kcfg b/conduits/malconduit/malconduit.kcfg
new file mode 100644
index 0000000..146f786
--- /dev/null
+++ b/conduits/malconduit/malconduit.kcfg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
+ http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
+ <kcfgfile name="kpilot_malconduitrc"/>
+ <group name="General">
+ <entry name="LastMALSync" key="Last MAL Sync" type="DateTime">
+ <default>QDateTime( QDate(1970,1,1), QTime(0,0,0) )</default>
+ </entry>
+
+ <entry name="SyncFrequency" key="Sync Frequency" type="Enum">
+ <choices>
+ <choice name="eEverySync"/>
+ <choice name="eEveryHour"/>
+ <choice name="eEveryDay"/>
+ <choice name="eEveryWeek"/>
+ <choice name="eEveryMonth"/>
+ </choices>
+ <default>eEverySync</default>
+ </entry>
+
+ <entry name="ProxyType" key="Proxy Type" type="Enum">
+ <choices>
+ <choice name="eProxyNone"/>
+ <choice name="eProxyHTTP"/>
+ <choice name="eProxySOCKS"/>
+ </choices>
+ <default>eProxyNone</default>
+ </entry>
+ <entry name="ProxyServer" key="Proxy Server" type="String">
+ <default></default>
+ </entry>
+ <entry name="ProxyPort" key="Proxy Port" type="UInt">
+ <default>0</default>
+ </entry>
+ <entry name="ProxyUser" key="Proxy User" type="String">
+ <default></default>
+ </entry>
+ <entry name="ProxyPassword" key="Proxy Password" type="Password">
+ <default></default>
+ </entry>
+ <entry name="MALServer" key="MAL Server" type="String">
+ <default>sync.avantgo.com</default>
+ </entry>
+ <entry name="MALPort" key="MAL Port" type="UInt">
+ <default>0</default>
+ </entry>
+ <entry name="MALUser" key="MAL User" type="String">
+ <default></default>
+ </entry>
+ <entry name="MALPassword" key="MAL Password" type="String">
+ <default></default>
+ </entry>
+ </group>
+</kcfg>
diff --git a/conduits/malconduit/malconduitSettings.kcfgc b/conduits/malconduit/malconduitSettings.kcfgc
new file mode 100644
index 0000000..d4254c4
--- /dev/null
+++ b/conduits/malconduit/malconduitSettings.kcfgc
@@ -0,0 +1,7 @@
+File=malconduit.kcfg
+ClassName=MALConduitSettings
+Singleton=true
+ItemAccessors=true
+Mutators=true
+GlobalEnums=true
+SetUserTexts=true