[79783] trunk/dports/kde/kmymoney4
mk at macports.org
mk at macports.org
Sat Jun 25 14:40:04 PDT 2011
Revision: 79783
http://trac.macports.org/changeset/79783
Author: mk at macports.org
Date: 2011-06-25 14:40:04 -0700 (Sat, 25 Jun 2011)
Log Message:
-----------
kmymoney4: update to version 4.5.96
Modified Paths:
--------------
trunk/dports/kde/kmymoney4/Portfile
Removed Paths:
-------------
trunk/dports/kde/kmymoney4/files/patch_for_kbanking.diff
Modified: trunk/dports/kde/kmymoney4/Portfile
===================================================================
--- trunk/dports/kde/kmymoney4/Portfile 2011-06-25 20:50:03 UTC (rev 79782)
+++ trunk/dports/kde/kmymoney4/Portfile 2011-06-25 21:40:04 UTC (rev 79783)
@@ -7,7 +7,7 @@
PortGroup kde4 1.1
name kmymoney4
-version 4.5.95
+version 4.5.96
categories kde finance
maintainers mk pixilla openmaintainer
@@ -27,9 +27,9 @@
distname kmymoney-${version}
use_bzip2 yes
-checksums md5 ea12b4d0f08ec519ea2f754f78cd5a24 \
- sha1 74f92a78561aa64791c5fd9ba4bca088f9c89195 \
- rmd160 eff0a6c518757015cd50d51b50dcd9140f891a08
+checksums md5 da30f3fe200125faef691caa6cfd0cbe \
+ sha1 354f4c3df5ce730d24105be6ba75242583ad35d3 \
+ rmd160 1e2a5b5d336d7b57141f22125fcdea2caed879fc
conflicts kmymoney4-devel
Deleted: trunk/dports/kde/kmymoney4/files/patch_for_kbanking.diff
===================================================================
--- trunk/dports/kde/kmymoney4/files/patch_for_kbanking.diff 2011-06-25 20:50:03 UTC (rev 79782)
+++ trunk/dports/kde/kmymoney4/files/patch_for_kbanking.diff 2011-06-25 21:40:04 UTC (rev 79783)
@@ -1,3587 +0,0 @@
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/cmake/modules/FindAqBanking.cmake kmymoney-4.5.patched/cmake/modules/FindAqBanking.cmake
---- kmymoney-4.5/cmake/modules/FindAqBanking.cmake 2010-11-12 02:27:25.000000000 +0100
-+++ kmymoney-4.5.patched/cmake/modules/FindAqBanking.cmake 2010-11-12 02:09:27.000000000 +0100
-@@ -8,14 +8,17 @@
- set(AQBANKING_FOUND FALSE)
-
- if(NOT AQBANKING_MIN_VERSION)
-- set(AQBANKING_MIN_VERSION "4.2.4")
-+ set(AQBANKING_MIN_VERSION "5.0.0")
- endif(NOT AQBANKING_MIN_VERSION)
-
- if(NOT AQBANKING_MAX_VERSION)
- # for some unknown reason, we need to give a micro version number
-- # with an offset of 1 to the PKG_CHECK_MODULES macro. The actual
-- # version KBanking will work with is 4.99.8
-- set(AQBANKING_MAX_VERSION "4.99.9")
-+ # with an offset of 1 to the PKG_CHECK_MODULES macro.
-+ # The actual version of KBanking will work with is 4.99.8
-+
-+ # set(AQBANKING_MAX_VERSION "4.99.9")
-+
-+ # Currently there is no max version necessary
- endif(NOT AQBANKING_MAX_VERSION)
-
- if(AQBANKING_INCLUDE_DIRS AND AQBANKING_LIBRARIES)
-@@ -23,11 +26,10 @@
- set(AQBANKING_FIND_QUIETLY TRUE)
- endif(AQBANKING_INCLUDE_DIRS AND AQBANKING_LIBRARIES)
-
--PKG_CHECK_MODULES(AQBANKING aqbanking>=${AQBANKING_MIN_VERSION} aqbanking<=${AQBANKING_MAX_VERSION})
--
--if(${AQBANKING_FOUND})
-- # if AqBanking has been found make sure to add the q4banking lib
-- set(AQBANKING_LIBRARIES ${AQBANKING_LIBRARIES} q4banking)
--endif(${AQBANKING_FOUND})
-+if(AQBANKING_MIN_VERSION AND AQBANKING_MAX_VERSION)
-+ PKG_CHECK_MODULES(AQBANKING aqbanking>=${AQBANKING_MIN_VERSION} aqbanking<=${AQBANKING_MAX_VERSION})
-+else (AQBANKING_MIN_VERSION AND AQBANKING_MAX_VERSION)
-+ PKG_CHECK_MODULES(AQBANKING aqbanking>=${AQBANKING_MIN_VERSION})
-+endif (AQBANKING_MIN_VERSION AND AQBANKING_MAX_VERSION)
-
- mark_as_advanced(AQBANKING_INCLUDE_DIRS AQBANKING_LIBRARIES)
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/cmake/modules/FindGwenhywfar.cmake kmymoney-4.5.patched/cmake/modules/FindGwenhywfar.cmake
---- kmymoney-4.5/cmake/modules/FindGwenhywfar.cmake 2010-11-12 02:27:25.000000000 +0100
-+++ kmymoney-4.5.patched/cmake/modules/FindGwenhywfar.cmake 2010-11-12 02:09:27.000000000 +0100
-@@ -8,7 +8,7 @@
- set(GWENHYWFAR_FOUND FALSE)
-
- if(NOT GWENHYWFAR_MIN_VERSION)
-- set(GWENHYWFAR_MIN_VERSION "3.10.1")
-+ set(GWENHYWFAR_MIN_VERSION "4.0.0")
- endif(NOT GWENHYWFAR_MIN_VERSION)
-
- if(GWENHYWFAR_INCLUDE_DIRS AND GWENHYWFAR_LIBRARIES)
-@@ -19,12 +19,23 @@
- PKG_CHECK_MODULES(GWENHYWFAR gwenhywfar>=${GWENHYWFAR_MIN_VERSION})
-
- if(${GWENHYWFAR_FOUND})
-- find_library(GWENHYWFAR_GUI_LIBRARY NAMES gwengui-qt4 libgwengui-qt4
-- HINTS ${GWENHYWFAR_LIBRARY_DIRS})
-- if(GWENHYWFAR_GUI_LIBRARY STREQUAL "GWENHYWFAR_GUI_LIBRARY-NOTFOUND")
-- set(GWENHYWFAR_GUI_LIBRARY "")
-- endif(GWENHYWFAR_GUI_LIBRARY STREQUAL "GWENHYWFAR_GUI_LIBRARY-NOTFOUND")
-- set(GWENHYWFAR_LIBRARIES ${GWENHYWFAR_LIBRARIES} ${GWENHYWFAR_GUI_LIBRARY})
-+ PKG_CHECK_MODULES(QT4GUI gwengui-qt4)
-+ if (NOT ${QT4GUI_FOUND})
-+ set(GWENHYWFAR_FOUND FALSE)
-+ unset(GWENHYWFAR_INCLUDE_DIRS)
-+ unset(GWENHYWFAR_LIBRARIES)
-+ unset(GWENHYWFAR_VERSION)
-+ message(STATUS "Gwenhywfar does not have the Q4Banking frontend enabled")
-+ endif (NOT ${QT4GUI_FOUND})
-+
-+ if(${GWENHYWFAR_FOUND})
-+ find_library(GWENHYWFAR_GUI_LIBRARY NAMES gwengui-qt4 libgwengui-qt4
-+ HINTS ${GWENHYWFAR_LIBRARY_DIRS})
-+ if(GWENHYWFAR_GUI_LIBRARY STREQUAL "GWENHYWFAR_GUI_LIBRARY-NOTFOUND")
-+ set(GWENHYWFAR_GUI_LIBRARY "")
-+ endif(GWENHYWFAR_GUI_LIBRARY STREQUAL "GWENHYWFAR_GUI_LIBRARY-NOTFOUND")
-+ set(GWENHYWFAR_LIBRARIES ${GWENHYWFAR_LIBRARIES} ${GWENHYWFAR_GUI_LIBRARY})
-+ endif(${GWENHYWFAR_FOUND})
- endif(${GWENHYWFAR_FOUND})
-
- mark_as_advanced(GWENHYWFAR_INCLUDE_DIRS GWENHYWFAR_LIBRARIES)
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/CMakeLists.txt kmymoney-4.5.patched/kmymoney/plugins/kbanking/CMakeLists.txt
---- kmymoney-4.5/kmymoney/plugins/kbanking/CMakeLists.txt 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/CMakeLists.txt 2010-11-12 02:09:27.000000000 +0100
-@@ -17,7 +17,10 @@
-
- ########### next target ###############
-
--SET(kmm_kbanking_PART_SRCS kbanking.cpp mymoneybanking.cpp)
-+SET(kmm_kbanking_PART_SRCS
-+ mymoneybanking.cpp
-+ banking.cpp
-+ )
-
- KDE4_ADD_PLUGIN(kmm_kbanking ${kmm_kbanking_PART_SRCS})
-
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/banking.cpp kmymoney-4.5.patched/kmymoney/plugins/kbanking/banking.cpp
---- kmymoney-4.5/kmymoney/plugins/kbanking/banking.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/banking.cpp 2010-11-12 02:09:27.000000000 +0100
-@@ -0,0 +1,462 @@
-+/***************************************************************************
-+ begin : Mon Mar 01 2004
-+ copyright : (C) 2004 by Martin Preuss
-+ email : martin at libchipcard.de
-+
-+ ***************************************************************************
-+ * This file is part of the project "AqBanking". *
-+ * Please see toplevel file COPYING of that project for license details. *
-+ ***************************************************************************/
-+
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config-kmymoney.h>
-+#endif
-+
-+
-+#include "banking.hpp"
-+#include <aqbanking/banking_be.h>
-+#include <aqbanking/banking_cfg.h>
-+#include <assert.h>
-+
-+#include <gwenhywfar/inherit.h>
-+#include <gwenhywfar/debug.h>
-+
-+
-+
-+AB_Banking::AB_Banking(const char *appname, const char *fname)
-+{
-+ assert(appname);
-+ _banking = AB_Banking_new(appname, fname, 0);
-+}
-+
-+
-+
-+AB_Banking::~AB_Banking()
-+{
-+ DBG_NOTICE(AQBANKING_LOGDOMAIN, "~AB_Banking: Freeing AB_Banking");
-+ AB_Banking_free(_banking);
-+}
-+
-+
-+
-+int AB_Banking::init()
-+{
-+ return AB_Banking_Init(_banking);
-+}
-+
-+
-+
-+int AB_Banking::fini()
-+{
-+ return AB_Banking_Fini(_banking);
-+}
-+
-+
-+
-+int AB_Banking::onlineInit()
-+{
-+ return AB_Banking_OnlineInit(_banking);
-+}
-+
-+
-+
-+int AB_Banking::onlineFini()
-+{
-+ return AB_Banking_OnlineFini(_banking);
-+}
-+
-+
-+
-+const char *AB_Banking::getAppName()
-+{
-+ return AB_Banking_GetAppName(_banking);
-+}
-+
-+
-+
-+std::list<AB_ACCOUNT*> AB_Banking::getAccounts()
-+{
-+ AB_ACCOUNT_LIST2 *ll;
-+ std::list<AB_ACCOUNT*> rl;
-+
-+ ll = AB_Banking_GetAccounts(_banking);
-+ if (ll) {
-+ AB_ACCOUNT *a;
-+ AB_ACCOUNT_LIST2_ITERATOR *it;
-+
-+ it = AB_Account_List2_First(ll);
-+ assert(it);
-+ a = AB_Account_List2Iterator_Data(it);
-+ assert(a);
-+ while (a) {
-+ rl.push_back(a);
-+ a = AB_Account_List2Iterator_Next(it);
-+ }
-+ AB_Account_List2Iterator_free(it);
-+ AB_Account_List2_free(ll);
-+ }
-+ return rl;
-+}
-+
-+
-+
-+AB_ACCOUNT *AB_Banking::getAccount(uint32_t uniqueId)
-+{
-+ return AB_Banking_GetAccount(_banking, uniqueId);
-+}
-+
-+
-+
-+std::list<AB_USER*> AB_Banking::getUsers()
-+{
-+ AB_USER_LIST2 *ll;
-+ std::list<AB_USER*> rl;
-+
-+ ll = AB_Banking_GetUsers(_banking);
-+ if (ll) {
-+ AB_USER *a;
-+ AB_USER_LIST2_ITERATOR *it;
-+
-+ it = AB_User_List2_First(ll);
-+ assert(it);
-+ a = AB_User_List2Iterator_Data(it);
-+ assert(a);
-+ while (a) {
-+ rl.push_back(a);
-+ a = AB_User_List2Iterator_Next(it);
-+ }
-+ AB_User_List2Iterator_free(it);
-+ AB_User_List2_free(ll);
-+ }
-+ return rl;
-+}
-+
-+
-+
-+int AB_Banking::getUserDataDir(GWEN_BUFFER *buf) const
-+{
-+ return AB_Banking_GetUserDataDir(_banking, buf);
-+}
-+
-+
-+
-+int AB_Banking::getAppUserDataDir(GWEN_BUFFER *buf) const
-+{
-+ return AB_Banking_GetAppUserDataDir(_banking, buf);
-+}
-+
-+
-+
-+AB_BANKING *AB_Banking::getCInterface()
-+{
-+ return _banking;
-+}
-+
-+
-+
-+std::list<std::string> AB_Banking::getActiveProviders()
-+{
-+ const GWEN_STRINGLIST *sl;
-+ std::list<std::string> l;
-+
-+ sl = AB_Banking_GetActiveProviders(_banking);
-+ if (sl) {
-+ GWEN_STRINGLISTENTRY *se;
-+
-+ se = GWEN_StringList_FirstEntry(sl);
-+ assert(se);
-+ while (se) {
-+ const char *p;
-+
-+ p = GWEN_StringListEntry_Data(se);
-+ assert(p);
-+ l.push_back(p);
-+ se = GWEN_StringListEntry_Next(se);
-+ } /* while */
-+ }
-+ return l;
-+}
-+
-+
-+AB_PROVIDER *AB_Banking::getProvider(const char *name)
-+{
-+ return AB_Banking_GetProvider(_banking, name);
-+}
-+
-+
-+
-+bool AB_Banking::importContext(AB_IMEXPORTER_CONTEXT *ctx, uint32_t flags)
-+{
-+ AB_IMEXPORTER_ACCOUNTINFO *ai;
-+
-+ ai = AB_ImExporterContext_GetFirstAccountInfo(ctx);
-+ while (ai) {
-+ if (!importAccountInfo(ai, flags))
-+ return false;
-+ ai = AB_ImExporterContext_GetNextAccountInfo(ctx);
-+ }
-+
-+ return true;
-+}
-+
-+
-+
-+bool AB_Banking::importAccountInfo(AB_IMEXPORTER_ACCOUNTINFO*, uint32_t)
-+{
-+ return false;
-+}
-+
-+
-+
-+int AB_Banking::executeJobs(AB_JOB_LIST2 *jl, AB_IMEXPORTER_CONTEXT *ctx)
-+{
-+ return AB_Banking_ExecuteJobs(_banking, jl, ctx);
-+}
-+
-+
-+
-+int AB_Banking::loadSharedConfig(const char *name, GWEN_DB_NODE **pDb)
-+{
-+ return AB_Banking_LoadSharedConfig(_banking, name, pDb);
-+}
-+
-+
-+
-+int AB_Banking::saveSharedConfig(const char *name, GWEN_DB_NODE *db)
-+{
-+ return AB_Banking_SaveSharedConfig(_banking, name, db);
-+}
-+
-+
-+
-+int AB_Banking::lockSharedConfig(const char *name)
-+{
-+ return AB_Banking_LockSharedConfig(_banking, name);
-+}
-+
-+
-+
-+int AB_Banking::unlockSharedConfig(const char *name)
-+{
-+ return AB_Banking_UnlockSharedConfig(_banking, name);
-+}
-+
-+
-+
-+int AB_Banking::loadSharedSubConfig(const char *name,
-+ const char *subGroup,
-+ GWEN_DB_NODE **pDb)
-+{
-+ GWEN_DB_NODE *dbShared = NULL;
-+ int rv;
-+
-+ rv = loadSharedConfig(name, &dbShared);
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to load config (%d)", rv);
-+ GWEN_DB_Group_free(dbShared);
-+ return rv;
-+ } else {
-+ GWEN_DB_NODE *dbSrc;
-+
-+ dbSrc = GWEN_DB_GetGroup(dbShared,
-+ GWEN_PATH_FLAGS_NAMEMUSTEXIST,
-+ subGroup);
-+ if (dbSrc) {
-+ *pDb = GWEN_DB_Group_dup(dbSrc);
-+ } else {
-+ *pDb = GWEN_DB_Group_new("config");
-+ }
-+ GWEN_DB_Group_free(dbShared);
-+
-+ return 0;
-+ }
-+}
-+
-+
-+
-+int AB_Banking::saveSharedSubConfig(const char *name,
-+ const char *subGroup,
-+ GWEN_DB_NODE *dbSrc)
-+{
-+ GWEN_DB_NODE *dbShared = NULL;
-+ int rv;
-+
-+ rv = lockSharedConfig(name);
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to lock config");
-+ return rv;
-+ } else {
-+ rv = loadSharedConfig(name, &dbShared);
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to load config (%d)", rv);
-+ unlockSharedConfig(name);
-+ return rv;
-+ } else {
-+ GWEN_DB_NODE *dbDst;
-+
-+ dbDst = GWEN_DB_GetGroup(dbShared,
-+ GWEN_DB_FLAGS_OVERWRITE_GROUPS,
-+ subGroup);
-+ assert(dbDst);
-+ if (dbSrc)
-+ GWEN_DB_AddGroupChildren(dbDst, dbSrc);
-+ rv = saveSharedConfig(name, dbShared);
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to store config (%d)", rv);
-+ unlockSharedConfig(name);
-+ GWEN_DB_Group_free(dbShared);
-+ return rv;
-+ }
-+ GWEN_DB_Group_free(dbShared);
-+ }
-+
-+ rv = unlockSharedConfig(name);
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to unlock config (%d)", rv);
-+ return rv;
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+int AB_Banking::loadAppConfig(GWEN_DB_NODE **pDb)
-+{
-+ return AB_Banking_LoadAppConfig(_banking, pDb);
-+}
-+
-+
-+
-+int AB_Banking::saveAppConfig(GWEN_DB_NODE *db)
-+{
-+ return AB_Banking_SaveAppConfig(_banking, db);
-+}
-+
-+
-+
-+int AB_Banking::lockAppConfig()
-+{
-+ return AB_Banking_LockAppConfig(_banking);
-+}
-+
-+
-+
-+int AB_Banking::unlockAppConfig()
-+{
-+ return AB_Banking_UnlockAppConfig(_banking);
-+}
-+
-+
-+
-+int AB_Banking::loadAppSubConfig(const char *subGroup,
-+ GWEN_DB_NODE **pDb)
-+{
-+ GWEN_DB_NODE *dbApp = NULL;
-+ int rv;
-+
-+ rv = loadAppConfig(&dbApp);
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to load config (%d)", rv);
-+ GWEN_DB_Group_free(dbApp);
-+ return rv;
-+ } else {
-+ GWEN_DB_NODE *dbSrc;
-+
-+ dbSrc = GWEN_DB_GetGroup(dbApp,
-+ GWEN_PATH_FLAGS_NAMEMUSTEXIST,
-+ subGroup);
-+ if (dbSrc) {
-+ *pDb = GWEN_DB_Group_dup(dbSrc);
-+ } else {
-+ *pDb = GWEN_DB_Group_new("config");
-+ }
-+ GWEN_DB_Group_free(dbApp);
-+
-+ return 0;
-+ }
-+}
-+
-+
-+
-+int AB_Banking::saveAppSubConfig(const char *subGroup,
-+ GWEN_DB_NODE *dbSrc)
-+{
-+ GWEN_DB_NODE *dbApp = NULL;
-+ int rv;
-+
-+ rv = lockAppConfig();
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to lock config");
-+ return rv;
-+ } else {
-+ rv = loadAppConfig(&dbApp);
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to load config (%d)", rv);
-+ unlockAppConfig();
-+ return rv;
-+ } else {
-+ GWEN_DB_NODE *dbDst;
-+
-+ dbDst = GWEN_DB_GetGroup(dbApp,
-+ GWEN_DB_FLAGS_OVERWRITE_GROUPS,
-+ subGroup);
-+ assert(dbDst);
-+ if (dbSrc)
-+ GWEN_DB_AddGroupChildren(dbDst, dbSrc);
-+ rv = saveAppConfig(dbApp);
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to store config (%d)", rv);
-+ unlockAppConfig();
-+ GWEN_DB_Group_free(dbApp);
-+ return rv;
-+ }
-+ GWEN_DB_Group_free(dbApp);
-+ }
-+
-+ rv = unlockAppConfig();
-+ if (rv < 0) {
-+ DBG_ERROR(0, "Unable to unlock config (%d)", rv);
-+ return rv;
-+ }
-+ }
-+ return 0;
-+}
-+
-+
-+int AB_Banking::beginExclUseAccount(AB_ACCOUNT *a)
-+{
-+ return AB_Banking_BeginExclUseAccount(_banking, a);
-+}
-+
-+
-+
-+int AB_Banking::endExclUseAccount(AB_ACCOUNT *a, int abandon)
-+{
-+ return AB_Banking_EndExclUseAccount(_banking, a, abandon);
-+}
-+
-+
-+
-+int AB_Banking::beginExclUseUser(AB_USER *u)
-+{
-+ return AB_Banking_BeginExclUseUser(_banking, u);
-+}
-+
-+
-+
-+int AB_Banking::endExclUseUser(AB_USER *u, int abandon)
-+{
-+ return AB_Banking_EndExclUseUser(_banking, u, abandon);
-+}
-+
-+
-+void AB_Banking::setAccountAlias(AB_ACCOUNT *a, const char *alias)
-+{
-+ AB_Banking_SetAccountAlias(_banking, a, alias);
-+}
-+
-+
-+
-+
-+
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/banking.hpp kmymoney-4.5.patched/kmymoney/plugins/kbanking/banking.hpp
---- kmymoney-4.5/kmymoney/plugins/kbanking/banking.hpp 1970-01-01 01:00:00.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/banking.hpp 2010-11-12 02:09:27.000000000 +0100
-@@ -0,0 +1,185 @@
-+/***************************************************************************
-+ begin : Mon Mar 01 2004
-+ copyright : (C) 2004 by Martin Preuss
-+ email : martin at libchipcard.de
-+
-+ ***************************************************************************
-+ * This file is part of the project "AqBanking". *
-+ * Please see toplevel file COPYING of that project for license details. *
-+ ***************************************************************************/
-+
-+/** @file
-+ * @short A C++ wrapper of the main aqbanking interface
-+ */
-+
-+#ifndef AQ_BANKING_CPP_H
-+#define AQ_BANKING_CPP_H
-+
-+
-+#include <aqbanking/banking.h>
-+#include <aqbanking/system.h>
-+
-+#include <list>
-+#include <string>
-+
-+
-+/**
-+ * @brief A C++ binding for the C module @ref AB_BANKING
-+ *
-+ * This class simply is a C++ binding for the C module @ref AB_BANKING.
-+ * It redirects C callbacks used by AB_BANKING to virtual functions in
-+ * this class. It als transforms some return values inconveniant for
-+ * C++ into STL objects (such as "list<T>").
-+ *
-+ * @ingroup G_AB_CPP_INTERFACE
-+ *
-+ * @author Martin Preuss<martin at aquamaniac.de>
-+ */
-+class AB_Banking {
-+private:
-+ AB_BANKING *_banking;
-+
-+public:
-+ AB_Banking(const char *appname,
-+ const char *fname);
-+ virtual ~AB_Banking();
-+
-+
-+ AB_BANKING *getCInterface();
-+
-+
-+ /**
-+ * See @ref AB_Banking_Init
-+ */
-+ virtual int init();
-+
-+ /**
-+ * See @ref AB_Banking_Fini
-+ */
-+ virtual int fini();
-+
-+
-+ /**
-+ * See @ref AB_Banking_OnlineInit
-+ */
-+ int onlineInit();
-+
-+ /**
-+ * See @ref AB_Banking_OnlineFini
-+ */
-+ int onlineFini();
-+
-+ /**
-+ * Loads a backend with the given name. You can use
-+ * @ref AB_Banking_GetProviderDescrs to retrieve a list of available
-+ * backends. Such a backend can then be asked to return an account list.
-+ */
-+ AB_PROVIDER *getProvider(const char *name);
-+
-+
-+ /**
-+ * Returns the application name as given to @ref AB_Banking_new.
-+ */
-+ const char *getAppName();
-+
-+ /**
-+ * Returns a list of pointers to currently known accounts.
-+ * Please note that the pointers in this list are still owned by
-+ * AqBanking, so you MUST NOT free them.
-+ * However, destroying the list will not free the accounts, so it is
-+ * safe to do that.
-+ */
-+ std::list<AB_ACCOUNT*> getAccounts();
-+
-+ /**
-+ * This function does an account lookup based on the given unique id.
-+ * This id is assigned by AqBanking when an account is created.
-+ * The pointer returned is still owned by AqBanking, so you MUST NOT free
-+ * it.
-+ */
-+ AB_ACCOUNT *getAccount(uint32_t uniqueId);
-+
-+ /**
-+ * Returns a list of pointers to currently known users.
-+ * Please note that the pointers in this list are still owned by
-+ * AqBanking, so you MUST NOT free them.
-+ * However, destroying the list will not free the users, so it is
-+ * safe to do that.
-+ */
-+ std::list<AB_USER*> getUsers();
-+
-+ int getUserDataDir(GWEN_BUFFER *buf) const ;
-+ int getAppUserDataDir(GWEN_BUFFER *buf) const ;
-+
-+ int loadAppConfig(GWEN_DB_NODE **pDb);
-+ int saveAppConfig(GWEN_DB_NODE *db);
-+ int lockAppConfig();
-+ int unlockAppConfig();
-+
-+ int loadAppSubConfig(const char *subGroup,
-+ GWEN_DB_NODE **pDb);
-+
-+ int saveAppSubConfig(const char *subGroup,
-+ GWEN_DB_NODE *dbSrc);
-+
-+
-+ int loadSharedConfig(const char *name, GWEN_DB_NODE **pDb);
-+ int saveSharedConfig(const char *name, GWEN_DB_NODE *db);
-+ int lockSharedConfig(const char *name);
-+ int unlockSharedConfig(const char *name);
-+
-+ int loadSharedSubConfig(const char *name,
-+ const char *subGroup,
-+ GWEN_DB_NODE **pDb);
-+
-+ int saveSharedSubConfig(const char *name,
-+ const char *subGroup,
-+ GWEN_DB_NODE *dbSrc);
-+
-+ int beginExclUseAccount(AB_ACCOUNT *a);
-+ int endExclUseAccount(AB_ACCOUNT *a, int abandon);
-+
-+ int beginExclUseUser(AB_USER *u);
-+ int endExclUseUser(AB_USER *u, int abandon);
-+
-+ std::list<std::string> getActiveProviders();
-+
-+ void setAccountAlias(AB_ACCOUNT *a, const char *alias);
-+
-+
-+ /** @name Enqueueing, Dequeueing and Executing Jobs
-+ *
-+ * Enqueued jobs are preserved across shutdowns. As soon as a job has been
-+ * sent to the appropriate backend it will be removed from the queue.
-+ * Only those jobs are saved/reloaded which have been enqueued but never
-+ * presented to the backend. This means after calling
-+ * @ref AB_Banking_ExecuteQueue only those jobs are still in the queue which
-+ * have not been processed (e.g. because they belonged to a second backend
-+ * but the user aborted while the jobs for a first backend were in process).
-+ */
-+ /*@{*/
-+ /**
-+ * This function sends all jobs in the list to their corresponding backends
-+ * and allows that backend to process it.
-+ */
-+ virtual int executeJobs(AB_JOB_LIST2 *jl,
-+ AB_IMEXPORTER_CONTEXT *ctx);
-+
-+ /*@}*/
-+
-+ /**
-+ * Let the application import a given statement context.
-+ */
-+ virtual bool importContext(AB_IMEXPORTER_CONTEXT *ctx,
-+ uint32_t flags);
-+
-+ virtual bool importAccountInfo(AB_IMEXPORTER_ACCOUNTINFO *ai, uint32_t flags);
-+
-+};
-+
-+
-+
-+
-+#endif /* AQ_BANKING_CPP_H */
-+
-+
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/CMakeLists.txt kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/CMakeLists.txt
---- kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/CMakeLists.txt 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/CMakeLists.txt 2010-11-12 02:09:27.000000000 +0100
-@@ -4,12 +4,13 @@
- SET(kmm_kbanking_dialogs_la_SOURCES
- kbaccountsettings.cpp
- kbpickstartdate.cpp
-- kbsettings.cpp
-+ kbmapaccount.cpp
- )
-
- SET(kmm_kbanking_dialogs_UI
- kbaccountsettings.ui
- kbpickstartdate.ui
-+ kbmapaccount.ui
- )
-
- KDE4_ADD_UI_FILES(kmm_kbanking_dialogs_la_SOURCES
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbmapaccount.cpp kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbmapaccount.cpp
---- kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbmapaccount.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbmapaccount.cpp 2010-11-12 02:09:27.000000000 +0100
-@@ -0,0 +1,111 @@
-+/***************************************************************************
-+ begin : Mon Mar 01 2004
-+ copyright : (C) 2004 by Martin Preuss
-+ email : martin at libchipcard.de
-+
-+ ***************************************************************************
-+ * Please see toplevel file COPYING for license details *
-+ ***************************************************************************/
-+
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config-kmymoney.h>
-+#endif
-+
-+
-+// QBanking includes
-+#include "kbmapaccount.h"
-+#include "kbaccountlist.h"
-+#include "mymoneybanking.h"
-+
-+// QT includes
-+#include <qlabel.h>
-+#include <qpushbutton.h>
-+#include <qmessagebox.h>
-+#include <qlayout.h>
-+#include <qpushbutton.h>
-+#include <qlineedit.h>
-+
-+
-+
-+
-+KBMapAccount::KBMapAccount(KMyMoneyBanking *kb,
-+ const char *bankCode,
-+ const char *accountId,
-+ QWidget* parent,
-+ Qt::WFlags fl)
-+ : QDialog(parent, fl)
-+ , _banking(kb)
-+ , _account(0)
-+{
-+ _ui.setupUi(this);
-+
-+ _ui.accountList->setSelectionMode(QAbstractItemView::SingleSelection);
-+
-+ if (bankCode)
-+ _ui.bankCodeEdit->setText(QString::fromUtf8(bankCode));
-+ else
-+ _ui.bankCodeEdit->setEnabled(false);
-+ if (accountId)
-+ _ui.accountIdEdit->setText(QString::fromUtf8(accountId));
-+ else
-+ _ui.accountIdEdit->setEnabled(false);
-+
-+ QObject::connect(_ui.accountList, SIGNAL(itemSelectionChanged()),
-+ this, SLOT(slotSelectionChanged()));
-+ QObject::connect(_ui.helpButton, SIGNAL(clicked()),
-+ this, SLOT(slotHelpClicked()));
-+
-+ _ui.accountList->addAccounts(_banking->getAccounts());
-+}
-+
-+
-+KBMapAccount::~KBMapAccount()
-+{
-+}
-+
-+
-+
-+AB_ACCOUNT *KBMapAccount::getAccount()
-+{
-+ return _account;
-+}
-+
-+
-+
-+void KBMapAccount::accept()
-+{
-+ if (_account)
-+ QDialog::accept();
-+}
-+
-+
-+
-+void KBMapAccount::slotSelectionChanged()
-+{
-+ std::list<AB_ACCOUNT*> al;
-+ AB_ACCOUNT *a;
-+
-+ al = _ui.accountList->getSelectedAccounts();
-+ if (al.empty()) {
-+ _ui.assignButton->setEnabled(false);
-+ _account = 0;
-+ return;
-+ }
-+ a = al.front();
-+ if (AB_Account_GetUniqueId(a) != 0) {
-+ _account = a;
-+ _ui.assignButton->setEnabled(true);
-+ } else
-+ _ui.assignButton->setEnabled(false);
-+}
-+
-+
-+
-+void KBMapAccount::slotHelpClicked()
-+{
-+}
-+
-+
-+
-+
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbmapaccount.h kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbmapaccount.h
---- kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbmapaccount.h 1970-01-01 01:00:00.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbmapaccount.h 2010-11-12 02:09:27.000000000 +0100
-@@ -0,0 +1,54 @@
-+/***************************************************************************
-+ begin : Mon Mar 01 2004
-+ copyright : (C) 2004 by Martin Preuss
-+ email : martin at libchipcard.de
-+
-+ ***************************************************************************
-+ * Please see toplevel file COPYING for license details *
-+ ***************************************************************************/
-+
-+#ifndef QBANKING_MAPACCOUNT_H
-+#define QBANKING_MAPACCOUNT_H
-+
-+#include "mymoneybanking.h"
-+#include "kbaccountlist.h"
-+#include "ui_kbmapaccount.h"
-+
-+#include <aqbanking/account.h>
-+
-+
-+class KMyMoneyBanking;
-+
-+
-+class KBMapAccount: public QDialog
-+{
-+ Q_OBJECT
-+public:
-+ KBMapAccount(KMyMoneyBanking *kb,
-+ const char *bankCode,
-+ const char *accountId,
-+ QWidget* parent = 0,
-+ Qt::WFlags fl = 0);
-+ ~KBMapAccount();
-+
-+ AB_ACCOUNT *getAccount();
-+
-+ void accept();
-+
-+protected slots:
-+ void slotSelectionChanged();
-+ void slotHelpClicked();
-+
-+private:
-+ Ui_KBMapAccountUi _ui;
-+ KMyMoneyBanking *_banking;
-+ AB_ACCOUNT *_account;
-+ KBAccountListView *_accountList;
-+};
-+
-+
-+
-+
-+
-+#endif /* QBANKING_MAPACCOUNT_H */
-+
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbmapaccount.ui kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbmapaccount.ui
---- kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbmapaccount.ui 1970-01-01 01:00:00.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbmapaccount.ui 2010-11-12 02:09:27.000000000 +0100
-@@ -0,0 +1,183 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<ui version="4.0">
-+ <class>KBMapAccountUi</class>
-+ <widget class="QDialog" name="KBMapAccountUi">
-+ <property name="geometry">
-+ <rect>
-+ <x>0</x>
-+ <y>0</y>
-+ <width>743</width>
-+ <height>534</height>
-+ </rect>
-+ </property>
-+ <property name="windowTitle">
-+ <string>Account Mapping</string>
-+ </property>
-+ <layout class="QVBoxLayout">
-+ <item>
-+ <widget class="QLabel" name="textLabel1">
-+ <property name="text">
-+ <string><qt>
-+Please choose the <b>online</b> account you want the
-+<b>application</b> account to be mapped to from the list below.
-+</qt></string>
-+ </property>
-+ <property name="wordWrap">
-+ <bool>false</bool>
-+ </property>
-+ </widget>
-+ </item>
-+ <item>
-+ <widget class="QGroupBox" name="groupBox1">
-+ <property name="sizePolicy">
-+ <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
-+ <horstretch>0</horstretch>
-+ <verstretch>0</verstretch>
-+ </sizepolicy>
-+ </property>
-+ <property name="title">
-+ <string>Application Account</string>
-+ </property>
-+ <layout class="QHBoxLayout">
-+ <item>
-+ <widget class="QLabel" name="textLabel2">
-+ <property name="text">
-+ <string>Bank Code</string>
-+ </property>
-+ <property name="wordWrap">
-+ <bool>false</bool>
-+ </property>
-+ </widget>
-+ </item>
-+ <item>
-+ <widget class="QLineEdit" name="bankCodeEdit">
-+ <property name="readOnly">
-+ <bool>true</bool>
-+ </property>
-+ </widget>
-+ </item>
-+ <item>
-+ <widget class="QLabel" name="textLabel2_2">
-+ <property name="text">
-+ <string>Account Number</string>
-+ </property>
-+ <property name="wordWrap">
-+ <bool>false</bool>
-+ </property>
-+ </widget>
-+ </item>
-+ <item>
-+ <widget class="QLineEdit" name="accountIdEdit">
-+ <property name="readOnly">
-+ <bool>true</bool>
-+ </property>
-+ </widget>
-+ </item>
-+ </layout>
-+ </widget>
-+ </item>
-+ <item>
-+ <widget class="QGroupBox" name="accountBox">
-+ <property name="sizePolicy">
-+ <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-+ <horstretch>0</horstretch>
-+ <verstretch>0</verstretch>
-+ </sizepolicy>
-+ </property>
-+ <property name="title">
-+ <string>Online Accounts</string>
-+ </property>
-+ <layout class="QHBoxLayout">
-+ <item>
-+ <widget class="KBAccountListView" name="accountList" native="true"/>
-+ </item>
-+ </layout>
-+ </widget>
-+ </item>
-+ <item>
-+ <layout class="QHBoxLayout">
-+ <item>
-+ <widget class="QPushButton" name="helpButton">
-+ <property name="text">
-+ <string>Help</string>
-+ </property>
-+ </widget>
-+ </item>
-+ <item>
-+ <spacer name="spacer1">
-+ <property name="orientation">
-+ <enum>Qt::Horizontal</enum>
-+ </property>
-+ <property name="sizeType">
-+ <enum>QSizePolicy::Expanding</enum>
-+ </property>
-+ <property name="sizeHint" stdset="0">
-+ <size>
-+ <width>326</width>
-+ <height>29</height>
-+ </size>
-+ </property>
-+ </spacer>
-+ </item>
-+ <item>
-+ <widget class="QPushButton" name="assignButton">
-+ <property name="text">
-+ <string>Assign</string>
-+ </property>
-+ </widget>
-+ </item>
-+ <item>
-+ <widget class="QPushButton" name="abortButton">
-+ <property name="text">
-+ <string>Abort</string>
-+ </property>
-+ </widget>
-+ </item>
-+ </layout>
-+ </item>
-+ </layout>
-+ </widget>
-+ <layoutdefault spacing="6" margin="11"/>
-+ <customwidgets>
-+ <customwidget>
-+ <class>KBAccountListView</class>
-+ <extends>QWidget</extends>
-+ <header>kbaccountlist.h</header>
-+ </customwidget>
-+ </customwidgets>
-+ <resources/>
-+ <connections>
-+ <connection>
-+ <sender>abortButton</sender>
-+ <signal>clicked()</signal>
-+ <receiver>KBMapAccountUi</receiver>
-+ <slot>reject()</slot>
-+ <hints>
-+ <hint type="sourcelabel">
-+ <x>676</x>
-+ <y>521</y>
-+ </hint>
-+ <hint type="destinationlabel">
-+ <x>512</x>
-+ <y>430</y>
-+ </hint>
-+ </hints>
-+ </connection>
-+ <connection>
-+ <sender>assignButton</sender>
-+ <signal>clicked()</signal>
-+ <receiver>KBMapAccountUi</receiver>
-+ <slot>accept()</slot>
-+ <hints>
-+ <hint type="sourcelabel">
-+ <x>590</x>
-+ <y>521</y>
-+ </hint>
-+ <hint type="destinationlabel">
-+ <x>452</x>
-+ <y>459</y>
-+ </hint>
-+ </hints>
-+ </connection>
-+ </connections>
-+</ui>
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.cpp kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.cpp
---- kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.cpp 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.cpp 2010-11-12 02:09:27.000000000 +0100
-@@ -25,7 +25,6 @@
-
- // QBanking includes
- #include "kbpickstartdate.h"
--#include <q4banking/qbanking.h>
-
- // Gwenhywfar includes
- #include <gwenhywfar/debug.h>
-@@ -46,7 +45,7 @@
-
-
-
--KBPickStartDate::KBPickStartDate(QBanking *qb,
-+KBPickStartDate::KBPickStartDate(KMyMoneyBanking* qb,
- const QDate &firstPossible,
- const QDate &lastUpdate,
- const QString& accountName,
-@@ -139,6 +138,5 @@
-
- void KBPickStartDate::slotHelpClicked()
- {
-- _banking->invokeHelp("KBPickStartDate", "none");
- }
-
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.h kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.h
---- kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.h 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.h 2010-11-12 02:09:27.000000000 +0100
-@@ -25,8 +25,7 @@
- #include <QDateTime>
- #include <QDialog>
-
--
--class QBanking;
-+#include "mymoneybanking.h"
-
- /**
- * Class derived from QBPickStartDate and modified to
-@@ -39,11 +38,11 @@
- {
- Q_OBJECT
- private:
-- QBanking *_banking;
-+ KMyMoneyBanking *_banking;
- const QDate &_firstPossible;
- const QDate &_lastUpdate;
- public:
-- KBPickStartDate(QBanking *banking,
-+ KBPickStartDate(KMyMoneyBanking* qb,
- const QDate &firstPossible,
- const QDate &lastUpdate,
- const QString& accountName,
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbsettings.cpp kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbsettings.cpp
---- kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbsettings.cpp 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbsettings.cpp 2010-11-12 02:09:27.000000000 +0100
-@@ -1,58 +0,0 @@
--/***************************************************************************
-- * Copyright 2009 Cristian Onet onet.cristian at gmail.com *
-- * Copyright 2004 Martin Preuss aquamaniac at users.sourceforge.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) version 3 or any later version *
-- * accepted by the membership of KDE e.V. (or its successor approved *
-- * by the membership of KDE e.V.), which shall act as a proxy *
-- * defined in Section 14 of version 3 of the license. *
-- * *
-- * 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, see <http://www.gnu.org/licenses/> *
-- ***************************************************************************/
--#ifdef HAVE_CONFIG_H
--# include <config-kmymoney.h>
--#endif
--
--#include "kbsettings.h"
--
--#include <gwenhywfar/debug.h>
--
--KBankingSettings::KBankingSettings(KBanking *ab,
-- QWidget* parent,
-- const char* name,
-- Qt::WFlags fl)
-- : QBCfgTabSettings(ab, parent, name, fl)
--{
-- addUsersPage();
-- addAccountsPage();
-- addBackendsPage();
--}
--
--KBankingSettings::~KBankingSettings()
--{
--}
--
--int KBankingSettings::init()
--{
-- if (!toGui()) {
-- DBG_ERROR(0, "Could not init dialog");
-- return -1;
-- }
-- return 0;
--}
--
--int KBankingSettings::fini()
--{
-- if (!fromGui())
-- return -1;
-- return 0;
--}
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbsettings.h kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbsettings.h
---- kmymoney-4.5/kmymoney/plugins/kbanking/dialogs/kbsettings.h 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/dialogs/kbsettings.h 2010-11-12 02:09:27.000000000 +0100
-@@ -1,40 +0,0 @@
--/***************************************************************************
-- * Copyright 2009 Cristian Onet onet.cristian at gmail.com *
-- * Copyright 2004 Martin Preuss aquamaniac at users.sourceforge.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) version 3 or any later version *
-- * accepted by the membership of KDE e.V. (or its successor approved *
-- * by the membership of KDE e.V.), which shall act as a proxy *
-- * defined in Section 14 of version 3 of the license. *
-- * *
-- * 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, see <http://www.gnu.org/licenses/> *
-- ***************************************************************************/
--#ifndef KBANKING_KBSETTINGS_H
--#define KBANKING_KBSETTINGS_H
--
--#include "kbanking.h"
--#include <q4banking/qbcfgtabsettings.h>
--
--class KBankingSettings: public QBCfgTabSettings
--{
--private:
--public:
-- explicit KBankingSettings(KBanking *ab,
-- QWidget* parent = 0,
-- const char* name = 0, Qt::WFlags fl = 0);
-- ~KBankingSettings();
--
-- int init();
-- int fini();
--};
--
--#endif /* KBANKING_KBSETTINGS_H */
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/kbanking.cpp kmymoney-4.5.patched/kmymoney/plugins/kbanking/kbanking.cpp
---- kmymoney-4.5/kmymoney/plugins/kbanking/kbanking.cpp 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/kbanking.cpp 2010-11-12 02:09:27.000000000 +0100
-@@ -1,162 +0,0 @@
--/***************************************************************************
-- * Copyright 2009 Cristian Onet onet.cristian at gmail.com *
-- * Copyright 2004 Martin Preuss aquamaniac at users.sourceforge.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) version 3 or any later version *
-- * accepted by the membership of KDE e.V. (or its successor approved *
-- * by the membership of KDE e.V.), which shall act as a proxy *
-- * defined in Section 14 of version 3 of the license. *
-- * *
-- * 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, see <http://www.gnu.org/licenses/> *
-- ***************************************************************************/
--#ifdef HAVE_CONFIG_H
--# include <config-kmymoney.h>
--#endif
--
--
--#include "kbanking.h"
--
--#include <assert.h>
--#include <QString>
--#include <QMessageBox>
--#include <QInputDialog>
--#include <QApplication>
--#include <QDateTime>
--#include <QWidget>
--
--#include <gwenhywfar/debug.h>
--#include <gwenhywfar/text.h>
--
--KBanking::KBanking(const char *appname,
-- const char *cfgDir) :
-- QBanking(appname, cfgDir),
-- _jobQueue(0)
--{
--}
--
--
--
--KBanking::~KBanking()
--{
--}
--
--
--
--int KBanking::init()
--{
-- int rv;
--
-- rv = QBanking::init();
-- if (rv < 0)
-- return rv;
--
-- rv = onlineInit();
-- if (rv) {
-- fprintf(stderr, "Error on online init (%d).\n", rv);
-- QBanking::fini();
-- return rv;
-- }
--
-- _jobQueue = AB_Job_List2_new();
--
-- return 0;
--}
--
--
--
--int KBanking::fini()
--{
-- int rv;
--
-- if (_jobQueue) {
-- AB_Job_List2_FreeAll(_jobQueue);
-- _jobQueue = 0;
-- }
--
-- rv = onlineFini();
-- if (rv) {
-- QBanking::fini();
-- return rv;
-- }
-- return QBanking::fini();
--}
--
--
--
--int KBanking::executeQueue(AB_IMEXPORTER_CONTEXT *ctx)
--{
-- int rv;
-- AB_JOB_LIST2 *oldQ;
--
-- rv = AB_BANKING_QBANKING_EXECUTE_JOBS(_jobQueue, ctx);
-- oldQ = _jobQueue;
-- _jobQueue = AB_Job_List2_new();
-- flagStaff()->queueUpdated();
-- AB_Job_List2_FreeAll(oldQ);
-- return rv;
--}
--
--
--
--std::list<AB_JOB*> KBanking::getEnqueuedJobs()
--{
-- AB_JOB_LIST2 *ll;
-- std::list<AB_JOB*> rl;
--
-- ll = _jobQueue;
-- if (ll && AB_Job_List2_GetSize(ll)) {
-- AB_JOB *j;
-- AB_JOB_LIST2_ITERATOR *it;
--
-- it = AB_Job_List2_First(ll);
-- assert(it);
-- j = AB_Job_List2Iterator_Data(it);
-- assert(j);
-- while (j) {
-- rl.push_back(j);
-- j = AB_Job_List2Iterator_Next(it);
-- }
-- AB_Job_List2Iterator_free(it);
-- }
-- return rl;
--}
--
--
--
--int KBanking::enqueueJob(AB_JOB *j)
--{
-- assert(_jobQueue);
-- assert(j);
-- AB_Job_Attach(j);
-- AB_Job_List2_PushBack(_jobQueue, j);
-- flagStaff()->queueUpdated();
-- return 0;
--}
--
--
--
--int KBanking::dequeueJob(AB_JOB *j)
--{
-- assert(_jobQueue);
-- AB_Job_List2_Remove(_jobQueue, j);
-- AB_Job_free(j);
-- flagStaff()->queueUpdated();
-- return 0;
--}
--
--
--
--
--
--
--
--
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/kbanking.h kmymoney-4.5.patched/kmymoney/plugins/kbanking/kbanking.h
---- kmymoney-4.5/kmymoney/plugins/kbanking/kbanking.h 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/kbanking.h 2010-11-12 02:09:27.000000000 +0100
-@@ -1,86 +0,0 @@
--/***************************************************************************
-- * Copyright 2009 Cristian Onet onet.cristian at gmail.com *
-- * Copyright 2004 Martin Preuss aquamaniac at users.sourceforge.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) version 3 or any later version *
-- * accepted by the membership of KDE e.V. (or its successor approved *
-- * by the membership of KDE e.V.), which shall act as a proxy *
-- * defined in Section 14 of version 3 of the license. *
-- * *
-- * 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, see <http://www.gnu.org/licenses/> *
-- ***************************************************************************/
--#ifndef KBANKING_KBANKING_H
--#define KBANKING_KBANKING_H
--
--#include <aqbanking/version.h>
--#include <aqbanking/banking.h>
--#include <q4banking/qbanking.h>
--
--#ifndef AQB_MAKE_VERSION
--#define AQB_MAKE_VERSION(a,b,c,d) (((a)<<24) | ((b)<<16) | (c<<8) | (d))
--#endif
--
--#ifndef AQBANKING_VERSION
--#define AQBANKING_VERSION AQB_MAKE_VERSION(AQBANKING_VERSION_MAJOR,AQBANKING_VERSION_MINOR,AQBANKING_VERSION_PATCHLEVEL,AQBANKING_VERSION_BUILD)
--#endif
--
--#ifndef AQB_IS_VERSION
--#define AQB_IS_VERSION(a,b,c,d) (AQBANKING_VERSION >= AQB_MAKE_VERSION(a,b,c,d))
--#endif
--
--#ifndef KBANKING_GUIID
--#if AQB_IS_VERSION(4,99,0,0)
--# define AB_BANKING_QBANKING_EXECUTE_JOBS(a, b) QBanking::executeJobs(a, b)
--# define AB_BANKING_JOB_CHECKAVAILABILITY(a) AB_Job_CheckAvailability(a)
--# define AB_BANKING_GETACCOUNTBYALIAS(a, b) AB_Banking_GetAccountByAlias(a, b)
--#elif AQB_IS_VERSION(3,9,0,0)
--# define onlineInit() onlineInit(0)
--# define onlineFini() onlineFini(0)
--# define AB_BANKING_QBANKING_EXECUTE_JOBS(a, b) QBanking::executeJobs(a, b, 0)
--# define AB_BANKING_GETACCOUNTBYALIAS(a, b) AB_Banking_GetAccountByAlias(a, b, 0)
--# define AB_BANKING_JOB_CHECKAVAILABILITY(a) AB_Job_CheckAvailability(a, 0)
--#else
--# define AB_BANKING_GETACCOUNTBYALIAS(a, b) AB_Banking_GetAccountByAlias(a, b)
--#endif
--#endif
--
--
--#include <list>
--
--
--class KBanking: public QBanking
--{
--private:
-- AB_JOB_LIST2 *_jobQueue;
--
--public:
-- explicit KBanking(const char *appname,
-- const char *cfgDir = 0);
-- virtual ~KBanking();
--
-- int init();
-- int fini();
--
-- int executeQueue(AB_IMEXPORTER_CONTEXT *ctx);
--
-- int enqueueJob(AB_JOB *j);
-- int dequeueJob(AB_JOB *j);
-- std::list<AB_JOB*> getEnqueuedJobs();
--
--};
--
--
--
--
--#endif /* KBANKING_KBANKING_H */
--
--
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/kmm_kbanking.desktop kmymoney-4.5.patched/kmymoney/plugins/kbanking/kmm_kbanking.desktop
---- kmymoney-4.5/kmymoney/plugins/kbanking/kmm_kbanking.desktop 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/kmm_kbanking.desktop 2010-11-12 02:08:54.000000000 +0100
-@@ -1,9 +1,13 @@
- [Desktop Entry]
- Name=KBanking
-+Name[ca]=KBanking
- Name[cs]=KBanking
-+Name[da]=KBanking
- Name[de]=KBanking
-+Name[el]=KBanking
- Name[en_GB]=KBanking
- Name[es]=KBanking
-+Name[eu]=KBanking
- Name[fr]=KBanking
- Name[it]=KBanking
- Name[nds]=KBanking
-@@ -14,9 +18,13 @@
- Name[uk]=KBanking
- Name[x-test]=xxKBankingxx
- Comment=Add online banking to KMyMoney
-+Comment[ca]=Afegeix la banca en línia al KMyMoney
-+Comment[da]=Føj netbank til KMyMoney
- Comment[de]=Fügt Onlinebanking zu KMyMoney hinzu
-+Comment[el]=Προσθήκη τραπεζικών διαδικτυακών υπηρεσιών στο KMyMoney
- Comment[en_GB]=Add online banking to KMyMoney
- Comment[es]=Añade banca en línea a KMyMoney
-+Comment[eu]=Erantsi lerroko bankua KMyMoney-ri
- Comment[fr]=Ajoute des capacités de banque en ligne à KMyMoney
- Comment[it]=Aggiungi l'online banking a KMyMoney
- Comment[nl]=Voegt online bankieren toe aan KMyMoney
-@@ -32,7 +40,7 @@
- X-KDE-PluginInfo-Name=KBanking
- X-KDE-PluginInfo-Author=Martin Preuss,Thomas Baumgart
- X-KDE-PluginInfo-Email=aquamaniac at users.sourceforge.net,ipwizard at users.sourceforge.net
--X-KDE-PluginInfo-Version=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}-${VERSION_SUFFIX}
-+X-KDE-PluginInfo-Version=${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}${VERSION_SUFFIX}
- X-KDE-PluginInfo-Website=http://kmymoney.org/plugins.html
- X-KDE-PluginInfo-License=GPL
- X-KDE-PluginInfo-EnabledByDefault=true
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/mymoneybanking.cpp kmymoney-4.5.patched/kmymoney/plugins/kbanking/mymoneybanking.cpp
---- kmymoney-4.5/kmymoney/plugins/kbanking/mymoneybanking.cpp 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/mymoneybanking.cpp 2010-11-12 02:09:27.000000000 +0100
-@@ -1,6 +1,7 @@
- /***************************************************************************
-- * Copyright 2009 Cristian Onet onet.cristian at gmail.com *
- * Copyright 2004 Martin Preuss aquamaniac at users.sourceforge.net *
-+ * Copyright 2009 Cristian Onet onet.cristian at gmail.com *
-+ * Copyright 2010 Thomas Baumgart ipwizard at users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License as *
-@@ -33,6 +34,7 @@
- #include <QRegExp>
- #include <QCheckBox>
- #include <QLabel>
-+#include <QTimer>
-
- // ----------------------------------------------------------------------------
- // KDE Includes
-@@ -59,9 +61,12 @@
- #include <aqbanking/jobgettransactions.h>
- #include <aqbanking/jobgetbalance.h>
- #include <aqbanking/job.h>
--#include <q4banking/qbgui.h>
-+#include <aqbanking/abgui.h>
-+#include <aqbanking/dlg_setup.h>
-+#include <aqbanking/dlg_importer.h>
- #include <gwenhywfar/logger.h>
- #include <gwenhywfar/debug.h>
-+#include <gwen-gui-qt4/qt4_gui.hpp>
-
- // ----------------------------------------------------------------------------
- // Project Includes
-@@ -69,6 +74,7 @@
- #include "kbjobview.h"
- #include "kbsettings.h"
- #include "kbaccountsettings.h"
-+#include "kbmapaccount.h"
- #include <kmymoney/mymoneyfile.h>
- #include <kmymoney/kmymoneyview.h>
- #include <kmymoney/mymoneykeyvaluecontainer.h>
-@@ -80,7 +86,7 @@
- class KBankingPlugin::Private
- {
- public:
-- Private() {
-+ Private() : passwordCacheTimer(0) {
- QString gwenProxy = QString::fromLocal8Bit(qgetenv("GWEN_PROXY"));
- if (gwenProxy.isEmpty()) {
- KConfig *cfg = new KConfig("kioslaverc");
-@@ -112,6 +118,8 @@
- delete cfg;
- }
- }
-+
-+ QTimer *passwordCacheTimer;
- };
-
- KBankingPlugin::KBankingPlugin(QObject *parent, const QStringList&) :
-@@ -122,10 +130,14 @@
- {
- m_kbanking = new KMyMoneyBanking(this, "KMyMoney");
-
-+ d->passwordCacheTimer = new QTimer(this);
-+ d->passwordCacheTimer->setSingleShot(true);
-+ d->passwordCacheTimer->setInterval(60000);
-+ connect(d->passwordCacheTimer, SIGNAL(timeout()), this, SLOT(slotClearPasswordCache()));
-+
- if (m_kbanking) {
-- QBGui *gui;
-+ QT4_Gui *gui;
-
--#if AQB_IS_VERSION(4,99,0,0)
- if (AB_Banking_HasConf4(m_kbanking->getCInterface())) {
- qDebug("KBankingPlugin: No AqB4 config found.");
- if (AB_Banking_HasConf3(m_kbanking->getCInterface())) {
-@@ -139,33 +151,20 @@
- AB_Banking_ImportConf3(m_kbanking->getCInterface());
- }
- }
--#elif AQB_IS_VERSION(3,9,0,0)
-- if (AB_Banking_HasConf4(m_kbanking->getCInterface(), 0)) {
-- qDebug("KBankingPlugin: No AqB4 config found.");
-- if (AB_Banking_HasConf3(m_kbanking->getCInterface(), 0)) {
-- qDebug("KBankingPlugin: No AqB3 config found.");
-- if (!AB_Banking_HasConf2(m_kbanking->getCInterface(), 0)) {
-- qDebug("KBankingPlugin: AqB2 config found - converting.");
-- AB_Banking_ImportConf2(m_kbanking->getCInterface(), 0);
-- }
-- } else {
-- qDebug("KBankingPlugin: AqB3 config found - converting.");
-- AB_Banking_ImportConf3(m_kbanking->getCInterface(), 0);
-- }
-- }
--#endif
-
-- gui = new QBGui(m_kbanking);
-+ gui = new QT4_Gui();
- GWEN_Gui_SetGui(gui->getCInterface());
- GWEN_Logger_SetLevel(0, GWEN_LoggerLevel_Info);
- GWEN_Logger_SetLevel(AQBANKING_LOGDOMAIN, GWEN_LoggerLevel_Debug);
-- m_kbanking->setGui(gui);
- if (m_kbanking->init() == 0) {
- // Tell the host application to load my GUI component
- setComponentData(KGenericFactory<KBankingPlugin>::componentData());
- setXMLFile("kmm_kbanking.rc");
- qDebug("KMyMoney kbanking plugin loaded");
-
-+ // get certificate handling and dialog settings management
-+ AB_Gui_Extend(gui->getCInterface(), m_kbanking->getCInterface());
-+
- // create view
- createJobView();
-
-@@ -281,6 +280,7 @@
- QWidget* w = new KBJobView(m_kbanking, view, "JobView");
- viewInterface()->addWidget(view, w);
- connect(viewInterface(), SIGNAL(viewStateChanged(bool)), view, SLOT(setEnabled(bool)));
-+ connect(this, SIGNAL(queueChanged()), w, SLOT(slotQueueUpdated()));
- }
-
- void KBankingPlugin::createActions(void)
-@@ -298,15 +298,24 @@
-
- void KBankingPlugin::slotSettings(void)
- {
-- QPointer<KBankingSettings> bs = new KBankingSettings(m_kbanking);
-- if (bs->init())
-- qWarning("Error on ini of settings dialog.");
-- else {
-- bs->exec();
-- if (bs && bs->fini())
-- qWarning("Error on fini of settings dialog.");
-+ if (m_kbanking) {
-+ GWEN_DIALOG *dlg;
-+ int rv;
-+
-+ dlg = AB_SetupDialog_new(m_kbanking->getCInterface());
-+ if (dlg == NULL) {
-+ DBG_ERROR(0, "Could not create setup dialog.");
-+ return;
-+ }
-+
-+ rv = GWEN_Gui_ExecDialog(dlg, 0);
-+ if (rv == 0) {
-+ DBG_ERROR(0, "Aborted by user");
-+ GWEN_Dialog_free(dlg);
-+ return;
-+ }
-+ GWEN_Dialog_free(dlg);
- }
-- delete bs;
- }
-
- bool KBankingPlugin::mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& settings)
-@@ -346,7 +355,7 @@
- // at this point, the account should be mapped
- // so we search it and setup the account reference in the KMyMoney object
- AB_ACCOUNT* ab_acc;
-- ab_acc = AB_BANKING_GETACCOUNTBYALIAS(m_kbanking->getCInterface(), acc.id().toUtf8().data());
-+ ab_acc = AB_Banking_GetAccountByAlias(m_kbanking->getCInterface(), acc.id().toUtf8().data());
- if (ab_acc) {
- MyMoneyAccount a(acc);
- setupAccountReference(a, ab_acc);
-@@ -402,7 +411,7 @@
- {
- AB_ACCOUNT* ab_acc = 0;
- if (m_kbanking)
-- ab_acc = AB_BANKING_GETACCOUNTBYALIAS(m_kbanking->getCInterface(), acc.id().toUtf8().data());
-+ ab_acc = AB_Banking_GetAccountByAlias(m_kbanking->getCInterface(), acc.id().toUtf8().data());
- return ab_acc != 0;
- }
-
-@@ -427,7 +436,7 @@
- QDate qd;
-
- /* get AqBanking account */
-- ba = AB_BANKING_GETACCOUNTBYALIAS(m_kbanking->getCInterface(), acc.id().toUtf8().data());
-+ ba = AB_Banking_GetAccountByAlias(m_kbanking->getCInterface(), acc.id().toUtf8().data());
- if (!ba) {
- KMessageBox::error(0,
- i18n("<qt>"
-@@ -448,7 +457,7 @@
- if (acc.onlineBankingSettings().value("kbanking-txn-download") != "no") {
- /* create getTransactions job */
- job = AB_JobGetTransactions_new(ba);
-- rv = AB_BANKING_JOB_CHECKAVAILABILITY(job);
-+ rv = AB_Job_CheckAvailability(job);
- if (rv) {
- DBG_ERROR(0, "Job \"GetTransactions\" is not available (%d)", rv);
- KMessageBox::error(0,
-@@ -540,7 +549,7 @@
-
- /* create getBalance job */
- job = AB_JobGetBalance_new(ba);
-- rv = AB_BANKING_JOB_CHECKAVAILABILITY(job);
-+ rv = AB_Job_CheckAvailability(job);
- if (!rv)
- rv = m_kbanking->enqueueJob(job);
- else
-@@ -559,6 +568,7 @@
-
- // make sure, we have at least one job in the queue before we continue.
- if (m_kbanking->getEnqueuedJobs().size() > 0) {
-+ emit queueChanged();
-
- // ask if the user want's to execute this job right away or spool it
- // for later execution
-@@ -607,9 +617,6 @@
- DBG_ERROR(0, "Error: %d", rv);
- }
- AB_ImExporterContext_free(ctx);
--
-- // let application emit signals to inform views
-- m_kbanking->accountsUpdated();
- }
- rc = true;
- }
-@@ -617,7 +624,17 @@
- return rc;
- }
-
-+void KBankingPlugin::startPasswordTimer(void)
-+{
-+ if (d->passwordCacheTimer->isActive())
-+ d->passwordCacheTimer->stop();
-+ d->passwordCacheTimer->start();
-+}
-
-+void KBankingPlugin::slotClearPasswordCache(void)
-+{
-+ m_kbanking->clearPasswordCache();
-+}
-
- void KBankingPlugin::slotImport(void)
- {
-@@ -644,11 +661,176 @@
-
-
- KMyMoneyBanking::KMyMoneyBanking(KBankingPlugin* parent, const char* appname, const char* fname)
-- : KBanking(appname, fname)
-+ : AB_Banking(appname, fname)
- , m_parent(parent)
-+ , _jobQueue(0)
-+{
-+}
-+
-+int KMyMoneyBanking::init()
-+{
-+ int rv;
-+
-+ rv = AB_Banking::init();
-+ if (rv < 0)
-+ return rv;
-+
-+ rv = onlineInit();
-+ if (rv) {
-+ fprintf(stderr, "Error on online init (%d).\n", rv);
-+ AB_Banking::fini();
-+ return rv;
-+ }
-+
-+ _jobQueue = AB_Job_List2_new();
-+
-+ return 0;
-+}
-+
-+int KMyMoneyBanking::fini()
- {
-+ int rv;
-+
-+ if (_jobQueue) {
-+ AB_Job_List2_FreeAll(_jobQueue);
-+ _jobQueue = 0;
-+ }
-+
-+ rv = onlineFini();
-+ if (rv) {
-+ AB_Banking::fini();
-+ return rv;
-+ }
-+ return AB_Banking::fini();
- }
-
-+int KMyMoneyBanking::executeQueue(AB_IMEXPORTER_CONTEXT *ctx)
-+{
-+ int rv;
-+ AB_JOB_LIST2 *oldQ;
-+
-+ m_parent->startPasswordTimer();
-+
-+ rv = AB_Banking::executeJobs(_jobQueue, ctx);
-+ oldQ = _jobQueue;
-+ _jobQueue = AB_Job_List2_new();
-+ AB_Job_List2_FreeAll(oldQ);
-+
-+ emit m_parent->queueChanged();
-+ m_parent->startPasswordTimer();
-+
-+ return rv;
-+}
-+
-+void KMyMoneyBanking::clearPasswordCache(void)
-+{
-+ /* clear password DB */
-+ GWEN_Gui_SetPasswordStatus(NULL, NULL, GWEN_Gui_PasswordStatus_Remove, 0);
-+}
-+
-+std::list<AB_JOB*> KMyMoneyBanking::getEnqueuedJobs()
-+{
-+ AB_JOB_LIST2 *ll;
-+ std::list<AB_JOB*> rl;
-+
-+ ll = _jobQueue;
-+ if (ll && AB_Job_List2_GetSize(ll)) {
-+ AB_JOB *j;
-+ AB_JOB_LIST2_ITERATOR *it;
-+
-+ it = AB_Job_List2_First(ll);
-+ assert(it);
-+ j = AB_Job_List2Iterator_Data(it);
-+ assert(j);
-+ while (j) {
-+ rl.push_back(j);
-+ j = AB_Job_List2Iterator_Next(it);
-+ }
-+ AB_Job_List2Iterator_free(it);
-+ }
-+ return rl;
-+}
-+
-+int KMyMoneyBanking::enqueueJob(AB_JOB *j)
-+{
-+ assert(_jobQueue);
-+ assert(j);
-+ AB_Job_Attach(j);
-+ AB_Job_List2_PushBack(_jobQueue, j);
-+ return 0;
-+}
-+
-+
-+
-+int KMyMoneyBanking::dequeueJob(AB_JOB *j)
-+{
-+ assert(_jobQueue);
-+ AB_Job_List2_Remove(_jobQueue, j);
-+ AB_Job_free(j);
-+ emit m_parent->queueChanged();
-+ return 0;
-+}
-+
-+bool KMyMoneyBanking::askMapAccount(const char *id,
-+ const char *bankCode,
-+ const char *accountId)
-+{
-+ KBMapAccount *w;
-+
-+ w = new KBMapAccount(this, bankCode, accountId);
-+ if (w->exec() == QDialog::Accepted) {
-+ AB_ACCOUNT *a;
-+
-+ a = w->getAccount();
-+ assert(a);
-+ DBG_NOTICE(0,
-+ "Mapping application account \"%s\" to "
-+ "online account \"%s/%s\"",
-+ id,
-+ AB_Account_GetBankCode(a),
-+ AB_Account_GetAccountNumber(a));
-+ setAccountAlias(a, id);
-+ delete w;
-+ return true;
-+ }
-+
-+ delete w;
-+ return false;
-+}
-+
-+bool KMyMoneyBanking::interactiveImport()
-+{
-+ AB_IMEXPORTER_CONTEXT *ctx;
-+ GWEN_DIALOG *dlg;
-+ int rv;
-+
-+ ctx = AB_ImExporterContext_new();
-+ dlg = AB_ImporterDialog_new(getCInterface(), ctx, NULL);
-+ if (dlg == NULL) {
-+ DBG_ERROR(0, "Could not create importer dialog.");
-+ AB_ImExporterContext_free(ctx);
-+ return false;
-+ }
-+
-+ rv = GWEN_Gui_ExecDialog(dlg, 0);
-+ if (rv == 0) {
-+ DBG_ERROR(0, "Aborted by user");
-+ GWEN_Dialog_free(dlg);
-+ AB_ImExporterContext_free(ctx);
-+ return false;
-+ }
-+
-+ if (!importContext(ctx, 0)) {
-+ DBG_ERROR(0, "Error on importContext");
-+ GWEN_Dialog_free(dlg);
-+ AB_ImExporterContext_free(ctx);
-+ return false;
-+ }
-+
-+ GWEN_Dialog_free(dlg);
-+ AB_ImExporterContext_free(ctx);
-+ return true;
-+}
-
-
- const AB_ACCOUNT_STATUS* KMyMoneyBanking::_getAccountStatus(AB_IMEXPORTER_ACCOUNTINFO *ai)
-@@ -716,11 +898,12 @@
- GWEN_STRINGLISTENTRY *se;
-
- se = GWEN_StringList_FirstEntry(sl);
-- if (se) {
-+ while (se) {
- p = GWEN_StringListEntry_Data(se);
- assert(p);
- s = QString::fromUtf8(p);
-- }
-+ se = GWEN_StringListEntry_Next(se);
-+ } // while
- }
- kt.m_strPayee = s;
- h = MyMoneyTransaction::hash(s.trimmed());
-@@ -777,8 +960,8 @@
- // - remove leading blanks
- // - remove trailing blanks
- // - reduce multiple blanks to one
-- kt.m_strMemo = kt.m_strMemo.trimmed();
-- kt.m_strPayee = kt.m_strPayee.trimmed();
-+ kt.m_strMemo = kt.m_strMemo.simplified();
-+ kt.m_strPayee = kt.m_strPayee.simplified();
-
- // date
- ti = AB_Transaction_GetDate(t);
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/mymoneybanking.cpp.orig kmymoney-4.5.patched/kmymoney/plugins/kbanking/mymoneybanking.cpp.orig
---- kmymoney-4.5/kmymoney/plugins/kbanking/mymoneybanking.cpp.orig 1970-01-01 01:00:00.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/mymoneybanking.cpp.orig 2010-11-12 02:08:54.000000000 +0100
-@@ -0,0 +1,986 @@
-+/***************************************************************************
-+ * Copyright 2009 Cristian Onet onet.cristian at gmail.com *
-+ * Copyright 2004 Martin Preuss aquamaniac at users.sourceforge.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) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * 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, see <http://www.gnu.org/licenses/> *
-+ ***************************************************************************/
-+#ifdef HAVE_CONFIG_H
-+# include <config-kmymoney.h>
-+#endif
-+
-+#include "mymoneybanking.h"
-+
-+// ----------------------------------------------------------------------------
-+// QT Includes
-+
-+#include <QLayout>
-+#include <QRadioButton>
-+#include <QStringList>
-+#include <QRegExp>
-+#include <QCheckBox>
-+#include <QLabel>
-+
-+// ----------------------------------------------------------------------------
-+// KDE Includes
-+
-+#include <KLocale>
-+#include <KMessageBox>
-+#include <KGenericFactory>
-+#include <KAction>
-+#include <KActionCollection>
-+#include <KGlobal>
-+#include <KStandardDirs>
-+#include <KMenu>
-+#include <KIconLoader>
-+#include <KGuiItem>
-+#include <KLineEdit>
-+#include <KEditListBox>
-+#include <KComboBox>
-+#include <KConfig>
-+
-+// ----------------------------------------------------------------------------
-+// Library Includes
-+
-+#include <aqbanking/imexporter.h>
-+#include <aqbanking/jobgettransactions.h>
-+#include <aqbanking/jobgetbalance.h>
-+#include <aqbanking/job.h>
-+#include <q4banking/qbgui.h>
-+#include <gwenhywfar/logger.h>
-+#include <gwenhywfar/debug.h>
-+
-+// ----------------------------------------------------------------------------
-+// Project Includes
-+
-+#include "kbjobview.h"
-+#include "kbsettings.h"
-+#include "kbaccountsettings.h"
-+#include <kmymoney/mymoneyfile.h>
-+#include <kmymoney/kmymoneyview.h>
-+#include <kmymoney/mymoneykeyvaluecontainer.h>
-+#include <kbpickstartdate.h>
-+
-+K_EXPORT_COMPONENT_FACTORY(kmm_kbanking,
-+ KGenericFactory<KBankingPlugin>("kmm_kbanking"))
-+
-+class KBankingPlugin::Private
-+{
-+public:
-+ Private() {
-+ QString gwenProxy = QString::fromLocal8Bit(qgetenv("GWEN_PROXY"));
-+ if (gwenProxy.isEmpty()) {
-+ KConfig *cfg = new KConfig("kioslaverc");
-+ QRegExp exp("(\\w+://)?([^/]{2}.+:\\d+)");
-+ QString proxy;
-+
-+ KConfigGroup grp = cfg->group("Proxy Settings");
-+ int type = grp.readEntry("ProxyType", 0);
-+ switch (type) {
-+ case 0: // no proxy
-+ break;
-+
-+ case 1: // manual specified
-+ proxy = grp.readEntry("httpsProxy");
-+ qDebug("KDE https proxy setting is '%s'", qPrintable(proxy));
-+ if (exp.exactMatch(proxy) != -1) {
-+ proxy = exp.cap(2);
-+ qDebug("Setting GWEN_PROXY to '%s'", qPrintable(proxy));
-+ if (setenv("GWEN_PROXY", qPrintable(proxy), 1) == -1) {
-+ qDebug("Unable to setup GWEN_PROXY");
-+ }
-+ }
-+ break;
-+
-+ default: // other currently not supported
-+ qDebug("KDE proxy setting of type %d not supported", type);
-+ break;
-+ }
-+ delete cfg;
-+ }
-+ }
-+};
-+
-+KBankingPlugin::KBankingPlugin(QObject *parent, const QStringList&) :
-+ KMyMoneyPlugin::Plugin(parent, "KBanking"/*must be the same as X-KDE-PluginInfo-Name*/),
-+ KMyMoneyPlugin::OnlinePlugin(),
-+ d(new Private),
-+ m_accountSettings(0)
-+{
-+ m_kbanking = new KMyMoneyBanking(this, "KMyMoney");
-+
-+ if (m_kbanking) {
-+ QBGui *gui;
-+
-+#if AQB_IS_VERSION(4,99,0,0)
-+ if (AB_Banking_HasConf4(m_kbanking->getCInterface())) {
-+ qDebug("KBankingPlugin: No AqB4 config found.");
-+ if (AB_Banking_HasConf3(m_kbanking->getCInterface())) {
-+ qDebug("KBankingPlugin: No AqB3 config found.");
-+ if (!AB_Banking_HasConf2(m_kbanking->getCInterface())) {
-+ qDebug("KBankingPlugin: AqB2 config found - converting.");
-+ AB_Banking_ImportConf2(m_kbanking->getCInterface());
-+ }
-+ } else {
-+ qDebug("KBankingPlugin: AqB3 config found - converting.");
-+ AB_Banking_ImportConf3(m_kbanking->getCInterface());
-+ }
-+ }
-+#elif AQB_IS_VERSION(3,9,0,0)
-+ if (AB_Banking_HasConf4(m_kbanking->getCInterface(), 0)) {
-+ qDebug("KBankingPlugin: No AqB4 config found.");
-+ if (AB_Banking_HasConf3(m_kbanking->getCInterface(), 0)) {
-+ qDebug("KBankingPlugin: No AqB3 config found.");
-+ if (!AB_Banking_HasConf2(m_kbanking->getCInterface(), 0)) {
-+ qDebug("KBankingPlugin: AqB2 config found - converting.");
-+ AB_Banking_ImportConf2(m_kbanking->getCInterface(), 0);
-+ }
-+ } else {
-+ qDebug("KBankingPlugin: AqB3 config found - converting.");
-+ AB_Banking_ImportConf3(m_kbanking->getCInterface(), 0);
-+ }
-+ }
-+#endif
-+
-+ gui = new QBGui(m_kbanking);
-+ GWEN_Gui_SetGui(gui->getCInterface());
-+ GWEN_Logger_SetLevel(0, GWEN_LoggerLevel_Info);
-+ GWEN_Logger_SetLevel(AQBANKING_LOGDOMAIN, GWEN_LoggerLevel_Debug);
-+ m_kbanking->setGui(gui);
-+ if (m_kbanking->init() == 0) {
-+ // Tell the host application to load my GUI component
-+ setComponentData(KGenericFactory<KBankingPlugin>::componentData());
-+ setXMLFile("kmm_kbanking.rc");
-+ qDebug("KMyMoney kbanking plugin loaded");
-+
-+ // create view
-+ createJobView();
-+
-+ // create actions
-+ createActions();
-+
-+ // load protocol conversion list
-+ loadProtocolConversion();
-+ } else {
-+ qWarning("Could not initialize KBanking online banking interface");
-+ delete m_kbanking;
-+ m_kbanking = 0;
-+ }
-+ }
-+}
-+
-+
-+
-+KBankingPlugin::~KBankingPlugin()
-+{
-+ if (m_kbanking) {
-+ m_kbanking->fini();
-+ delete m_kbanking;
-+ }
-+ delete d;
-+}
-+
-+
-+void KBankingPlugin::loadProtocolConversion(void)
-+{
-+ if (m_kbanking) {
-+ m_protocolConversionMap.clear();
-+ m_protocolConversionMap["aqhbci"] = "HBCI";
-+ m_protocolConversionMap["aqofxconnect"] = "OFX";
-+ m_protocolConversionMap["aqyellownet"] = "YellowNet";
-+ m_protocolConversionMap["aqgeldkarte"] = "Geldkarte";
-+ m_protocolConversionMap["aqdtaus"] = "DTAUS";
-+ }
-+}
-+
-+void KBankingPlugin::protocols(QStringList& protocolList) const
-+{
-+ if (m_kbanking) {
-+ std::list<std::string> list = m_kbanking->getActiveProviders();
-+ std::list<std::string>::iterator it;
-+ for (it = list.begin(); it != list.end(); ++it) {
-+ // skip the dummy
-+ if (*it == "aqnone")
-+ continue;
-+ QMap<QString, QString>::const_iterator it_m;
-+ it_m = m_protocolConversionMap.find((*it).c_str());
-+ if (it_m != m_protocolConversionMap.end())
-+ protocolList << (*it_m);
-+ else
-+ protocolList << (*it).c_str();
-+ }
-+ }
-+}
-+
-+QWidget* KBankingPlugin::accountConfigTab(const MyMoneyAccount& acc, QString& name)
-+{
-+ const MyMoneyKeyValueContainer& kvp = acc.onlineBankingSettings();
-+ name = i18n("Online settings");
-+ if (m_kbanking) {
-+ m_accountSettings = new KBAccountSettings(acc, 0);
-+ m_accountSettings->m_usePayeeAsIsButton->setChecked(true);
-+ m_accountSettings->m_transactionDownload->setChecked(kvp.value("kbanking-txn-download") != "no");
-+ m_accountSettings->m_preferredJobMethod->setCurrentIndex(kvp.value("kbanking-jobexec").toInt());
-+ m_accountSettings->m_preferredStatementDate->setCurrentIndex(kvp.value("kbanking-statementDate").toInt());
-+ if (!kvp.value("kbanking-payee-regexp").isEmpty()) {
-+ m_accountSettings->m_extractPayeeButton->setChecked(true);
-+ m_accountSettings->m_payeeRegExpEdit->setText(kvp.value("kbanking-payee-regexp"));
-+ m_accountSettings->m_memoRegExpEdit->setText(kvp.value("kbanking-memo-regexp"));
-+ m_accountSettings->m_payeeExceptions->clear();
-+ m_accountSettings->m_payeeExceptions->insertStringList(kvp.value("kbanking-payee-exceptions").split(';', QString::SkipEmptyParts));
-+ }
-+ return m_accountSettings;
-+ }
-+ QLabel* label = new QLabel(i18n("KBanking module not correctly initialized"), 0);
-+ label->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
-+ return label;
-+}
-+
-+MyMoneyKeyValueContainer KBankingPlugin::onlineBankingSettings(const MyMoneyKeyValueContainer& current)
-+{
-+ MyMoneyKeyValueContainer kvp(current);
-+ kvp["provider"] = objectName();
-+ if (m_accountSettings) {
-+ kvp.deletePair("kbanking-payee-regexp");
-+ kvp.deletePair("kbanking-memo-regexp");
-+ kvp.deletePair("kbanking-payee-exceptions");
-+ kvp.deletePair("kbanking-txn-download");
-+ if (m_accountSettings->m_extractPayeeButton->isChecked()
-+ && !m_accountSettings->m_payeeRegExpEdit->text().isEmpty()
-+ && !m_accountSettings->m_memoRegExpEdit->text().isEmpty()) {
-+ kvp["kbanking-payee-regexp"] = m_accountSettings->m_payeeRegExpEdit->text();
-+ kvp["kbanking-memo-regexp"] = m_accountSettings->m_memoRegExpEdit->text();
-+ kvp["kbanking-payee-exceptions"] = m_accountSettings->m_payeeExceptions->items().join(";");
-+ } else if (m_accountSettings->m_extractPayeeButton->isChecked()) {
-+ KMessageBox::information(0, i18n("You selected to extract the payee from the memo field but did not supply a regular expression for payee and memo extraction. The option will not be activated."), i18n("Missing information"));
-+ }
-+ if (!m_accountSettings->m_transactionDownload->isChecked())
-+ kvp["kbanking-txn-download"] = "no";
-+ kvp["kbanking-jobexec"] = QString("%1").arg(m_accountSettings->m_preferredJobMethod->currentIndex());
-+ kvp["kbanking-statementDate"] = QString("%1").arg(m_accountSettings->m_preferredStatementDate->currentIndex());
-+ }
-+ return kvp;
-+}
-+
-+void KBankingPlugin::createJobView(void)
-+{
-+ KMyMoneyViewBase* view = viewInterface()->addPage(i18nc("Label for icon in KMyMoney's view pane", "Outbox"), "online-banking");
-+ QWidget* w = new KBJobView(m_kbanking, view, "JobView");
-+ viewInterface()->addWidget(view, w);
-+ connect(viewInterface(), SIGNAL(viewStateChanged(bool)), view, SLOT(setEnabled(bool)));
-+}
-+
-+void KBankingPlugin::createActions(void)
-+{
-+ KAction *settings_aqbanking = actionCollection()->addAction("settings_aqbanking");
-+ settings_aqbanking->setText(i18n("Configure Aq&Banking..."));
-+ connect(settings_aqbanking, SIGNAL(triggered()), this, SLOT(slotSettings()));
-+
-+ KAction *file_import_aqbanking = actionCollection()->addAction("file_import_aqbanking");
-+ file_import_aqbanking->setText(i18n("AqBanking importer..."));
-+ connect(file_import_aqbanking, SIGNAL(triggered()), this, SLOT(slotImport()));
-+
-+ connect(viewInterface(), SIGNAL(viewStateChanged(bool)), action("file_import_aqbanking"), SLOT(setEnabled(bool)));
-+}
-+
-+void KBankingPlugin::slotSettings(void)
-+{
-+ QPointer<KBankingSettings> bs = new KBankingSettings(m_kbanking);
-+ if (bs->init())
-+ qWarning("Error on ini of settings dialog.");
-+ else {
-+ bs->exec();
-+ if (bs && bs->fini())
-+ qWarning("Error on fini of settings dialog.");
-+ }
-+ delete bs;
-+}
-+
-+bool KBankingPlugin::mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& settings)
-+{
-+ bool rc = false;
-+ if (m_kbanking && !acc.id().isEmpty()) {
-+ MyMoneyFile* file = MyMoneyFile::instance();
-+
-+ QString bankId;
-+ QString accountId;
-+ // extract some information about the bank. if we have a sortcode
-+ // (BLZ) we display it, otherwise the name is enough.
-+ try {
-+ const MyMoneyInstitution &bank = file->institution(acc.institutionId());
-+ bankId = bank.name();
-+ if (!bank.sortcode().isEmpty())
-+ bankId = bank.sortcode();
-+ } catch (MyMoneyException *e) {
-+ // no bank assigned, we just leave the field emtpy
-+ delete e;
-+ }
-+
-+ // extract account information. if we have an account number
-+ // we show it, otherwise the name will be displayed
-+ accountId = acc.number();
-+ if (accountId.isEmpty())
-+ accountId = m_account.name();
-+
-+ // do the mapping. the return value of this method is either
-+ // true, when the user mapped the account or false, if he
-+ // decided to quit the dialog. So not really a great thing
-+ // to present some more information.
-+ m_kbanking->askMapAccount(acc.id().toUtf8().data(),
-+ bankId.toUtf8().data(),
-+ accountId.toUtf8().data());
-+
-+ // at this point, the account should be mapped
-+ // so we search it and setup the account reference in the KMyMoney object
-+ AB_ACCOUNT* ab_acc;
-+ ab_acc = AB_BANKING_GETACCOUNTBYALIAS(m_kbanking->getCInterface(), acc.id().toUtf8().data());
-+ if (ab_acc) {
-+ MyMoneyAccount a(acc);
-+ setupAccountReference(a, ab_acc);
-+ settings = a.onlineBankingSettings();
-+ rc = true;
-+ }
-+ }
-+ return rc;
-+}
-+
-+QString KBankingPlugin::stripLeadingZeroes(const QString& s) const
-+{
-+ QString rc(s);
-+ QRegExp exp("(0*)(.*)");
-+ if (exp.exactMatch(s) != -1) {
-+ rc = exp.cap(2);
-+ }
-+ return rc;
-+}
-+
-+void KBankingPlugin::setupAccountReference(const MyMoneyAccount& acc, AB_ACCOUNT* ab_acc)
-+{
-+ MyMoneyKeyValueContainer kvp;
-+
-+ if (ab_acc) {
-+ QString accountNumber = stripLeadingZeroes(AB_Account_GetAccountNumber(ab_acc));
-+ QString routingNumber = stripLeadingZeroes(AB_Account_GetBankCode(ab_acc));
-+
-+ QString val = QString("%1-%2").arg(routingNumber, accountNumber);
-+ if (val != acc.onlineBankingSettings().value("kbanking-acc-ref")) {
-+ MyMoneyKeyValueContainer kvp;
-+
-+ // make sure to keep our own previous settings
-+ const QMap<QString, QString>& vals = acc.onlineBankingSettings().pairs();
-+ QMap<QString, QString>::const_iterator it_p;
-+ for (it_p = vals.begin(); it_p != vals.end(); ++it_p) {
-+ if (QString(it_p.key()).startsWith("kbanking-")) {
-+ kvp.setValue(it_p.key(), *it_p);
-+ }
-+ }
-+
-+ kvp.setValue("kbanking-acc-ref", val);
-+ kvp.setValue("provider", objectName());
-+ setAccountOnlineParameters(acc, kvp);
-+ }
-+ } else {
-+ // clear the connection
-+ setAccountOnlineParameters(acc, kvp);
-+ }
-+}
-+
-+bool KBankingPlugin::accountIsMapped(const MyMoneyAccount& acc)
-+{
-+ AB_ACCOUNT* ab_acc = 0;
-+ if (m_kbanking)
-+ ab_acc = AB_BANKING_GETACCOUNTBYALIAS(m_kbanking->getCInterface(), acc.id().toUtf8().data());
-+ return ab_acc != 0;
-+}
-+
-+bool KBankingPlugin::updateAccount(const MyMoneyAccount& acc)
-+{
-+ return updateAccount(acc, false);
-+}
-+
-+bool KBankingPlugin::updateAccount(const MyMoneyAccount& acc, bool moreAccounts)
-+{
-+ if (!m_kbanking)
-+ return false;
-+
-+ bool rc = false;
-+
-+ if (!acc.id().isEmpty()) {
-+ AB_ACCOUNT *ba = 0;
-+ AB_JOB *job = 0;
-+ int rv;
-+ int days;
-+ int year, month, day;
-+ QDate qd;
-+
-+ /* get AqBanking account */
-+ ba = AB_BANKING_GETACCOUNTBYALIAS(m_kbanking->getCInterface(), acc.id().toUtf8().data());
-+ if (!ba) {
-+ KMessageBox::error(0,
-+ i18n("<qt>"
-+ "The given application account <b>%1</b> "
-+ "has not been mapped to an online "
-+ "account."
-+ "</qt>",
-+ acc.name()),
-+ i18n("Account Not Mapped"));
-+ // clear the connection between the KMyMoney account
-+ // and the AqBanking equivalent
-+ setupAccountReference(acc, 0);
-+ }
-+
-+ if (ba) {
-+ setupAccountReference(acc, ba);
-+
-+ if (acc.onlineBankingSettings().value("kbanking-txn-download") != "no") {
-+ /* create getTransactions job */
-+ job = AB_JobGetTransactions_new(ba);
-+ rv = AB_BANKING_JOB_CHECKAVAILABILITY(job);
-+ if (rv) {
-+ DBG_ERROR(0, "Job \"GetTransactions\" is not available (%d)", rv);
-+ KMessageBox::error(0,
-+ i18n("<qt>"
-+ "The update job is not supported by the "
-+ "bank/account/backend.\n"
-+ "</qt>"),
-+ i18n("Job not Available"));
-+ AB_Job_free(job);
-+ job = 0;
-+ }
-+
-+ if (job) {
-+ days = AB_JobGetTransactions_GetMaxStoreDays(job);
-+ if (days > 0) {
-+ GWEN_TIME *ti1;
-+ GWEN_TIME *ti2;
-+
-+ ti1 = GWEN_CurrentTime();
-+ ti2 = GWEN_Time_fromSeconds(GWEN_Time_Seconds(ti1) - (60 * 60 * 24 * days));
-+ GWEN_Time_free(ti1);
-+ ti1 = ti2;
-+
-+ if (GWEN_Time_GetBrokenDownDate(ti1, &day, &month, &year)) {
-+ DBG_ERROR(0, "Bad date");
-+ qd = QDate();
-+ } else
-+ qd = QDate(year, month + 1, day);
-+ GWEN_Time_free(ti1);
-+ }
-+
-+ // get last statement request date from application account object
-+ // and start from the next day if the date is valid
-+ QDate lastUpdate = QDate::fromString(acc.value("lastImportedTransactionDate"), Qt::ISODate);
-+ if (lastUpdate.isValid())
-+ lastUpdate = lastUpdate.addDays(-3);
-+
-+ int dateOption = acc.onlineBankingSettings().value("kbanking-statementDate").toInt();
-+ switch (dateOption) {
-+ case 0: // Ask user
-+ break;
-+ case 1: // No date
-+ qd = QDate();
-+ break;
-+ case 2: // Last download
-+ qd = lastUpdate;
-+ break;
-+ case 3: // First possible
-+ // qd is already setup
-+ break;
-+ }
-+
-+ // the pick start date option dialog is needed in
-+ // case the dateOption is 0 or the date option is > 1
-+ // and the qd is invalid
-+ if (dateOption == 0
-+ || (dateOption > 1 && !qd.isValid())) {
-+ QPointer<KBPickStartDate> psd = new KBPickStartDate(m_kbanking, qd, lastUpdate, acc.name(),
-+ lastUpdate.isValid() ? 2 : 3, 0, true);
-+ if (psd->exec() != QDialog::Accepted) {
-+ AB_Job_free(job);
-+ delete psd;
-+ return rc;
-+ }
-+ qd = psd->date();
-+ delete psd;
-+ }
-+
-+ if (qd.isValid()) {
-+ GWEN_TIME *ti1;
-+
-+ ti1 = GWEN_Time_new(qd.year(), qd.month() - 1, qd.day(), 0, 0, 0, 0);
-+ AB_JobGetTransactions_SetFromTime(job, ti1);
-+ GWEN_Time_free(ti1);
-+ }
-+
-+ rv = m_kbanking->enqueueJob(job);
-+ AB_Job_free(job);
-+ if (rv) {
-+ DBG_ERROR(0, "Error %d", rv);
-+ KMessageBox::error(0,
-+ i18n("<qt>"
-+ "Could not enqueue the job.\n"
-+ "</qt>"),
-+ i18n("Error"));
-+ }
-+ }
-+ }
-+
-+ /* create getBalance job */
-+ job = AB_JobGetBalance_new(ba);
-+ rv = AB_BANKING_JOB_CHECKAVAILABILITY(job);
-+ if (!rv)
-+ rv = m_kbanking->enqueueJob(job);
-+ else
-+ rv = 0;
-+
-+ AB_Job_free(job);
-+ if (rv) {
-+ DBG_ERROR(0, "Error %d", rv);
-+ KMessageBox::error(0,
-+ i18n("<qt>"
-+ "Could not enqueue the job.\n"
-+ "</qt>"),
-+ i18n("Error"));
-+ }
-+ }
-+
-+ // make sure, we have at least one job in the queue before we continue.
-+ if (m_kbanking->getEnqueuedJobs().size() > 0) {
-+
-+ // ask if the user want's to execute this job right away or spool it
-+ // for later execution
-+ KIconLoader *ic = KIconLoader::global();
-+ KGuiItem executeButton(i18n("&Execute"),
-+ KIcon(ic->loadIcon("tools-wizard",
-+ KIconLoader::Small, KIconLoader::SizeSmall)),
-+ i18n("Close this window"),
-+ i18n("Use this button to close the window"));
-+
-+ KGuiItem queueButton(i18n("&Queue"),
-+ KIcon(ic->loadIcon("document-export",
-+ KIconLoader::Small, KIconLoader::SizeSmall)),
-+ i18n("Close this window"),
-+ i18n("Use this button to close the window"));
-+
-+ KMessageBox::ButtonCode result = KMessageBox::Cancel;
-+ if (!moreAccounts) {
-+ switch (acc.onlineBankingSettings().value("kbanking-jobexec").toInt()) {
-+ case 1:
-+ result = KMessageBox::Yes;
-+ break;
-+ case 2:
-+ result = KMessageBox::No;
-+ break;
-+ default:
-+ result = static_cast<KMessageBox::ButtonCode>(KMessageBox::questionYesNo(0,
-+ i18n("Do you want to execute or queue this job in the outbox?"),
-+ i18n("Execution"), executeButton, queueButton));
-+ break;
-+ }
-+ } else {
-+ result = KMessageBox::No;
-+ }
-+
-+
-+ if (result == KMessageBox::Yes) {
-+
-+ AB_IMEXPORTER_CONTEXT *ctx;
-+
-+ ctx = AB_ImExporterContext_new();
-+ rv = m_kbanking->executeQueue(ctx);
-+ if (!rv)
-+ m_kbanking->importContext(ctx, 0);
-+ else {
-+ DBG_ERROR(0, "Error: %d", rv);
-+ }
-+ AB_ImExporterContext_free(ctx);
-+
-+ // let application emit signals to inform views
-+ m_kbanking->accountsUpdated();
-+ }
-+ rc = true;
-+ }
-+ }
-+ return rc;
-+}
-+
-+
-+
-+void KBankingPlugin::slotImport(void)
-+{
-+ if (!m_kbanking->interactiveImport())
-+ qWarning("Error on import dialog");
-+}
-+
-+
-+
-+bool KBankingPlugin::importStatement(const MyMoneyStatement& s)
-+{
-+ return statementInterface()->import(s);
-+}
-+
-+const MyMoneyAccount& KBankingPlugin::account(const QString& key, const QString& value) const
-+{
-+ return statementInterface()->account(key, value);
-+}
-+
-+void KBankingPlugin::setAccountOnlineParameters(const MyMoneyAccount& acc, const MyMoneyKeyValueContainer& kvps) const
-+{
-+ return statementInterface()->setAccountOnlineParameters(acc, kvps);
-+}
-+
-+
-+KMyMoneyBanking::KMyMoneyBanking(KBankingPlugin* parent, const char* appname, const char* fname)
-+ : KBanking(appname, fname)
-+ , m_parent(parent)
-+{
-+}
-+
-+
-+
-+const AB_ACCOUNT_STATUS* KMyMoneyBanking::_getAccountStatus(AB_IMEXPORTER_ACCOUNTINFO *ai)
-+{
-+ const AB_ACCOUNT_STATUS *ast;
-+ const AB_ACCOUNT_STATUS *best;
-+
-+ best = 0;
-+ ast = AB_ImExporterAccountInfo_GetFirstAccountStatus(ai);
-+ while (ast) {
-+ if (!best)
-+ best = ast;
-+ else {
-+ const GWEN_TIME *tiBest;
-+ const GWEN_TIME *ti;
-+
-+ tiBest = AB_AccountStatus_GetTime(best);
-+ ti = AB_AccountStatus_GetTime(ast);
-+
-+ if (!tiBest) {
-+ best = ast;
-+ } else {
-+ if (ti) {
-+ double d;
-+
-+ /* we have two times, compare them */
-+ d = GWEN_Time_Diff(ti, tiBest);
-+ if (d > 0)
-+ /* newer */
-+ best = ast;
-+ }
-+ }
-+ }
-+ ast = AB_ImExporterAccountInfo_GetNextAccountStatus(ai);
-+ } /* while */
-+ return best;
-+}
-+
-+
-+
-+void KMyMoneyBanking::_xaToStatement(MyMoneyStatement &ks,
-+ const MyMoneyAccount& acc,
-+ const AB_TRANSACTION *t)
-+{
-+ const GWEN_STRINGLIST *sl;
-+ QString s;
-+ const char *p;
-+ const AB_VALUE *val;
-+ const GWEN_TIME *ti;
-+ const GWEN_TIME *startTime = 0;
-+ MyMoneyStatement::Transaction kt;
-+ unsigned long h;
-+
-+ kt.m_fees = MyMoneyMoney();
-+
-+ // bank's transaction id
-+ p = AB_Transaction_GetFiId(t);
-+ if (p)
-+ kt.m_strBankID = QString("ID ") + QString::fromUtf8(p);
-+
-+ // payee
-+ s.truncate(0);
-+ sl = AB_Transaction_GetRemoteName(t);
-+ if (sl) {
-+ GWEN_STRINGLISTENTRY *se;
-+
-+ se = GWEN_StringList_FirstEntry(sl);
-+ while (se) {
-+ p = GWEN_StringListEntry_Data(se);
-+ assert(p);
-+ s = QString::fromUtf8(p);
-+ se = GWEN_StringListEntry_Next(se);
-+ } // while
-+ }
-+ kt.m_strPayee = s;
-+ h = MyMoneyTransaction::hash(s.trimmed());
-+
-+ // memo
-+ s.truncate(0);
-+ sl = AB_Transaction_GetPurpose(t);
-+ if (sl) {
-+ GWEN_STRINGLISTENTRY *se;
-+ bool insertSpace = false;
-+
-+ se = GWEN_StringList_FirstEntry(sl);
-+ while (se) {
-+ p = GWEN_StringListEntry_Data(se);
-+ assert(p);
-+ if (insertSpace)
-+ s += ' ';
-+ insertSpace = true;
-+ s += QString::fromUtf8(p);
-+ se = GWEN_StringListEntry_Next(se);
-+ } // while
-+ }
-+ kt.m_strMemo = s;
-+ h = MyMoneyTransaction::hash(s.trimmed(), h);
-+
-+ // see, if we need to extract the payee from the memo field
-+ const MyMoneyKeyValueContainer& kvp = acc.onlineBankingSettings();
-+ QString rePayee = kvp.value("kbanking-payee-regexp");
-+ if (!rePayee.isEmpty() && kt.m_strPayee.isEmpty()) {
-+ QString reMemo = kvp.value("kbanking-memo-regexp");
-+ QStringList exceptions = kvp.value("kbanking-payee-exceptions").split(';', QString::SkipEmptyParts);
-+
-+ bool needExtract = true;
-+ QStringList::const_iterator it_s;
-+ for (it_s = exceptions.constBegin(); needExtract && it_s != exceptions.constEnd(); ++it_s) {
-+ QRegExp exp(*it_s, Qt::CaseInsensitive);
-+ if (exp.indexIn(kt.m_strMemo) != -1) {
-+ needExtract = false;
-+ }
-+ }
-+ if (needExtract) {
-+ QRegExp expPayee(rePayee, Qt::CaseInsensitive);
-+ QRegExp expMemo(reMemo, Qt::CaseInsensitive);
-+ if (expPayee.indexIn(kt.m_strMemo) != -1) {
-+ kt.m_strPayee = expPayee.cap(1);
-+ if (expMemo.indexIn(kt.m_strMemo) != -1) {
-+ kt.m_strMemo = expMemo.cap(1);
-+ }
-+ }
-+ }
-+ }
-+
-+ // massage whitespaces a bit:
-+ // - remove leading blanks
-+ // - remove trailing blanks
-+ // - reduce multiple blanks to one
-+ kt.m_strMemo = kt.m_strMemo.simplified();
-+ kt.m_strPayee = kt.m_strPayee.simplified();
-+
-+ // date
-+ ti = AB_Transaction_GetDate(t);
-+ if (!ti)
-+ ti = AB_Transaction_GetValutaDate(t);
-+ if (ti) {
-+ int year, month, day;
-+
-+ if (!startTime)
-+ startTime = ti;
-+ else {
-+ if (GWEN_Time_Diff(ti, startTime) < 0)
-+ startTime = ti;
-+ }
-+
-+ if (!GWEN_Time_GetBrokenDownDate(ti, &day, &month, &year)) {
-+ kt.m_datePosted = QDate(year, month + 1, day);
-+ }
-+ } else {
-+ DBG_WARN(0, "No date for transaction");
-+ }
-+
-+ // value
-+ val = AB_Transaction_GetValue(t);
-+ if (val) {
-+ if (ks.m_strCurrency.isEmpty()) {
-+ p = AB_Value_GetCurrency(val);
-+ if (p)
-+ ks.m_strCurrency = p;
-+ } else {
-+ p = AB_Value_GetCurrency(val);
-+ if (p)
-+ s = p;
-+ if (ks.m_strCurrency.toLower() != s.toLower()) {
-+ // TODO: handle currency difference
-+ DBG_ERROR(0, "Mixed currencies currently not allowed");
-+ }
-+ }
-+
-+ kt.m_amount = MyMoneyMoney(AB_Value_GetValueAsDouble(val));
-+ h = MyMoneyTransaction::hash(kt.m_amount.toString(), h);
-+ } else {
-+ DBG_WARN(0, "No value for transaction");
-+ }
-+
-+ if (startTime) {
-+ int year, month, day;
-+
-+ if (!GWEN_Time_GetBrokenDownDate(startTime, &day, &month, &year)) {
-+ QDate d(year, month + 1, day);
-+
-+ if (!ks.m_dateBegin.isValid())
-+ ks.m_dateBegin = d;
-+ else if (d < ks.m_dateBegin)
-+ ks.m_dateBegin = d;
-+
-+ if (!ks.m_dateEnd.isValid())
-+ ks.m_dateEnd = d;
-+ else if (d > ks.m_dateEnd)
-+ ks.m_dateEnd = d;
-+ }
-+ } else {
-+ DBG_WARN(0, "No date in current transaction");
-+ }
-+
-+ // make hash value unique in case we don't have one already
-+ if (kt.m_strBankID.isEmpty()) {
-+ QString hashBase;
-+ hashBase.sprintf("%s-%07lx", qPrintable(kt.m_datePosted.toString(Qt::ISODate)), h);
-+ int idx = 1;
-+ QString hash;
-+ for (;;) {
-+ hash = QString("%1-%2").arg(hashBase).arg(idx);
-+ QMap<QString, bool>::const_iterator it;
-+ it = m_hashMap.constFind(hash);
-+ if (it == m_hashMap.constEnd()) {
-+ m_hashMap[hash] = true;
-+ break;
-+ }
-+ ++idx;
-+ }
-+ kt.m_strBankID = QString("%1-%2").arg(acc.id()).arg(hash);
-+ }
-+
-+ // store transaction
-+ ks.m_listTransactions += kt;
-+}
-+
-+
-+
-+bool KMyMoneyBanking::importAccountInfo(AB_IMEXPORTER_ACCOUNTINFO *ai,
-+ uint32_t /*flags*/)
-+{
-+ QString s;
-+ const char *p;
-+ const AB_TRANSACTION *t;
-+ MyMoneyStatement ks;
-+ MyMoneyAccount kacc;
-+ const AB_ACCOUNT_STATUS *ast;
-+ const AB_VALUE *val;
-+ const GWEN_TIME *ti;
-+
-+ DBG_INFO(0, "Importing account...");
-+
-+ // account number
-+ p = AB_ImExporterAccountInfo_GetAccountNumber(ai);
-+ if (p) {
-+ ks.m_strAccountNumber = m_parent->stripLeadingZeroes(p);
-+ }
-+
-+ p = AB_ImExporterAccountInfo_GetBankCode(ai);
-+ if (p) {
-+ ks.m_strRoutingNumber = m_parent->stripLeadingZeroes(p);
-+ }
-+
-+ kacc = m_parent->account("kbanking-acc-ref", QString("%1-%2").arg(ks.m_strRoutingNumber, ks.m_strAccountNumber));
-+ ks.m_accountId = kacc.id();
-+
-+ // account name
-+ p = AB_ImExporterAccountInfo_GetAccountName(ai);
-+ if (p)
-+ ks.m_strAccountName = p;
-+
-+ // account type
-+ switch (AB_ImExporterAccountInfo_GetType(ai)) {
-+ case AB_AccountType_Bank:
-+ ks.m_eType = MyMoneyStatement::etSavings;
-+ break;
-+ case AB_AccountType_CreditCard:
-+ ks.m_eType = MyMoneyStatement::etCreditCard;
-+ break;
-+ case AB_AccountType_Checking:
-+ ks.m_eType = MyMoneyStatement::etCheckings;
-+ break;
-+ case AB_AccountType_Savings:
-+ ks.m_eType = MyMoneyStatement::etSavings;
-+ break;
-+ case AB_AccountType_Investment:
-+ ks.m_eType = MyMoneyStatement::etInvestment;
-+ break;
-+ case AB_AccountType_Cash:
-+ ks.m_eType = MyMoneyStatement::etNone;
-+ break;
-+ default:
-+ ks.m_eType = MyMoneyStatement::etNone;
-+ }
-+
-+ // account status
-+ ast = _getAccountStatus(ai);
-+ if (ast) {
-+ const AB_BALANCE *bal;
-+
-+ bal = AB_AccountStatus_GetBookedBalance(ast);
-+ if (!bal)
-+ bal = AB_AccountStatus_GetNotedBalance(ast);
-+ if (bal) {
-+ val = AB_Balance_GetValue(bal);
-+ if (val) {
-+ DBG_INFO(0, "Importing balance");
-+ ks.m_closingBalance = MyMoneyMoney(AB_Value_GetValueAsDouble(val));
-+ p = AB_Value_GetCurrency(val);
-+ if (p)
-+ ks.m_strCurrency = p;
-+ }
-+ ti = AB_Balance_GetTime(bal);
-+ if (ti) {
-+ int year, month, day;
-+
-+ if (!GWEN_Time_GetBrokenDownDate(ti, &day, &month, &year))
-+ ks.m_dateEnd = QDate(year, month + 1, day);
-+ } else {
-+ DBG_WARN(0, "No time for balance");
-+ }
-+ } else {
-+ DBG_WARN(0, "No account balance");
-+ }
-+ } else {
-+ DBG_WARN(0, "No account status");
-+ }
-+
-+ // clear hash map
-+ m_hashMap.clear();
-+
-+ // get all transactions
-+ t = AB_ImExporterAccountInfo_GetFirstTransaction(ai);
-+ while (t) {
-+ _xaToStatement(ks, kacc, t);
-+ t = AB_ImExporterAccountInfo_GetNextTransaction(ai);
-+ }
-+
-+ // import them
-+ if (!m_parent->importStatement(ks)) {
-+ if (KMessageBox::warningYesNo(0,
-+ i18n("Error importing statement. Do you want to continue?"),
-+ i18n("Critical Error")) == KMessageBox::No) {
-+ DBG_ERROR(0, "User aborted");
-+ return false;
-+ }
-+ }
-+ return true;
-+}
-+
-+
-+#include "mymoneybanking.moc"
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/mymoneybanking.cpp.rej kmymoney-4.5.patched/kmymoney/plugins/kbanking/mymoneybanking.cpp.rej
---- kmymoney-4.5/kmymoney/plugins/kbanking/mymoneybanking.cpp.rej 1970-01-01 01:00:00.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/mymoneybanking.cpp.rej 2010-11-12 02:09:27.000000000 +0100
-@@ -0,0 +1,43 @@
-+***************
-+*** 716,725 ****
-+ GWEN_STRINGLISTENTRY *se;
-+
-+ se = GWEN_StringList_FirstEntry(sl);
-+- if (se) {
-+ p = GWEN_StringListEntry_Data(se);
-+ assert(p);
-+- s = QString::fromUtf8(p);
-+ }
-+ }
-+ kt.m_strPayee = s;
-+--- 898,908 ----
-+ GWEN_STRINGLISTENTRY *se;
-+
-+ se = GWEN_StringList_FirstEntry(sl);
-++ while (se) {
-+ p = GWEN_StringListEntry_Data(se);
-+ assert(p);
-++ s += QString::fromUtf8(p);
-++ se = GWEN_StringListEntry_Next(se);
-+ }
-+ }
-+ kt.m_strPayee = s;
-+***************
-+*** 777,784 ****
-+ // - remove leading blanks
-+ // - remove trailing blanks
-+ // - reduce multiple blanks to one
-+- kt.m_strMemo = kt.m_strMemo.trimmed();
-+- kt.m_strPayee = kt.m_strPayee.trimmed();
-+
-+ // date
-+ ti = AB_Transaction_GetDate(t);
-+--- 960,967 ----
-+ // - remove leading blanks
-+ // - remove trailing blanks
-+ // - reduce multiple blanks to one
-++ kt.m_strMemo = kt.m_strMemo.simplified();
-++ kt.m_strPayee = kt.m_strPayee.simplified();
-+
-+ // date
-+ ti = AB_Transaction_GetDate(t);
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/mymoneybanking.h kmymoney-4.5.patched/kmymoney/plugins/kbanking/mymoneybanking.h
---- kmymoney-4.5/kmymoney/plugins/kbanking/mymoneybanking.h 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/mymoneybanking.h 2010-11-12 02:09:27.000000000 +0100
-@@ -1,6 +1,7 @@
- /***************************************************************************
-- * Copyright 2009 Cristian Onet onet.cristian at gmail.com *
- * Copyright 2004 Martin Preuss aquamaniac at users.sourceforge.net *
-+ * Copyright 2009 Cristian Onet onet.cristian at gmail.com *
-+ * Copyright 2010 Thomas Baumgart ipwizard at users.sourceforge.net *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License as *
-@@ -25,6 +26,22 @@
- #include <config-kmymoney.h>
- #endif
-
-+#include <aqbanking/version.h>
-+#include <aqbanking/banking.h>
-+#include "banking.hpp"
-+
-+#ifndef AQB_MAKE_VERSION
-+#define AQB_MAKE_VERSION(a,b,c,d) (((a)<<24) | ((b)<<16) | (c<<8) | (d))
-+#endif
-+
-+#ifndef AQBANKING_VERSION
-+#define AQBANKING_VERSION AQB_MAKE_VERSION(AQBANKING_VERSION_MAJOR,AQBANKING_VERSION_MINOR,AQBANKING_VERSION_PATCHLEVEL,AQBANKING_VERSION_BUILD)
-+#endif
-+
-+#ifndef AQB_IS_VERSION
-+#define AQB_IS_VERSION(a,b,c,d) (AQBANKING_VERSION >= AQB_MAKE_VERSION(a,b,c,d))
-+#endif
-+
- // ----------------------------------------------------------------------------
- // QT Includes
-
-@@ -39,7 +56,6 @@
- // ----------------------------------------------------------------------------
- // Project Includes
-
--#include "kbanking.h"
- #include <kmymoney/kmymoneyplugin.h>
- #include <kmymoney/mymoneyaccount.h>
- #include <kmymoney/mymoneykeyvaluecontainer.h>
-@@ -146,9 +162,18 @@
- */
- bool updateAccount(const MyMoneyAccount& acc);
-
-+ /**
-+ * Trigger the password cache timer
-+ */
-+ void startPasswordTimer(void);
-+
- protected slots:
- void slotSettings(void);
- void slotImport(void);
-+ void slotClearPasswordCache(void);
-+
-+signals:
-+ void queueChanged(void);
-
- private:
- class Private;
-@@ -162,27 +187,45 @@
- };
-
- /**
-- * This class is the special implementation to glue the KBanking class
-+ * This class is the special implementation to glue the AB_Banking class
- * with the KMyMoneyPlugin structure.
- */
--class KMyMoneyBanking : public KBanking
-+class KMyMoneyBanking : public AB_Banking
- {
-+ friend class KBankingPlugin;
-
- public:
- KMyMoneyBanking(KBankingPlugin* parent, const char* appname, const char* fname = 0);
- virtual ~KMyMoneyBanking() {};
-
-- bool importAccountInfo(AB_IMEXPORTER_ACCOUNTINFO *ai, uint32_t flags);
-+ int executeQueue(AB_IMEXPORTER_CONTEXT *ctx);
-+
-+ int enqueueJob(AB_JOB *j);
-+ int dequeueJob(AB_JOB *j);
-+ std::list<AB_JOB*> getEnqueuedJobs();
-+
-+ bool askMapAccount(const char *id,
-+ const char *bankCode,
-+ const char *accountId);
-+
-+ virtual bool interactiveImport();
-
- protected:
-+ int init();
-+ int fini();
-+
-+ bool importAccountInfo(AB_IMEXPORTER_ACCOUNTINFO *ai, uint32_t flags);
- const AB_ACCOUNT_STATUS* _getAccountStatus(AB_IMEXPORTER_ACCOUNTINFO *ai);
- void _xaToStatement(MyMoneyStatement &ks,
- const MyMoneyAccount&,
- const AB_TRANSACTION *t);
-+ void clearPasswordCache(void);
-
- private:
- KBankingPlugin* m_parent;
- QMap<QString, bool> m_hashMap;
-+ AB_JOB_LIST2 *_jobQueue;
-+
- };
-
- #endif
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/views/kbjobview.cpp kmymoney-4.5.patched/kmymoney/plugins/kbanking/views/kbjobview.cpp
---- kmymoney-4.5/kmymoney/plugins/kbanking/views/kbjobview.cpp 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/views/kbjobview.cpp 2010-11-12 02:09:27.000000000 +0100
-@@ -38,14 +38,13 @@
- #include <KIconLoader>
- #include <KMessageBox>
-
--#include "kbanking.h"
- #include <aqbanking/jobgetbalance.h>
- #include <aqbanking/jobgettransactions.h>
-
- #include <gwenhywfar/debug.h>
-
-
--KBJobView::KBJobView(KBanking *kb,
-+KBJobView::KBJobView(KMyMoneyBanking *kb,
- QWidget* parent,
- const char* name,
- Qt::WFlags fl) :
-@@ -64,8 +63,6 @@
- m_jobList = new KBJobListView(jobBox);
- jobBoxLayout->addWidget(m_jobList);
-
-- QObject::connect(m_app->flagStaff(), SIGNAL(signalQueueUpdated()),
-- this, SLOT(slotQueueUpdated()));
- QObject::connect(executeButton, SIGNAL(clicked()),
- this, SLOT(slotExecute()));
- QObject::connect(dequeueButton, SIGNAL(clicked()),
-@@ -154,9 +151,6 @@
- DBG_ERROR(0, "Error: %d", rv);
- }
- AB_ImExporterContext_free(ctx);
--
-- // let App emit signals to inform account views
-- m_app->accountsUpdated();
- }
-
-
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/views/kbjobview.h kmymoney-4.5.patched/kmymoney/plugins/kbanking/views/kbjobview.h
---- kmymoney-4.5/kmymoney/plugins/kbanking/views/kbjobview.h 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/views/kbjobview.h 2010-11-12 02:09:27.000000000 +0100
-@@ -32,14 +32,14 @@
-
-
- #include "kbjoblist.h"
--#include "kbanking.h"
-+#include "mymoneybanking.h"
-
-
- class KBJobView: public QWidget, public Ui::KBJobViewUi
- {
- Q_OBJECT
- public:
-- explicit KBJobView(KBanking *kb,
-+ explicit KBJobView(KMyMoneyBanking *kb,
- QWidget* parent = 0, const char* name = 0, Qt::WFlags fl = 0);
- ~KBJobView();
-
-@@ -47,7 +47,7 @@
- bool fini();
-
- private:
-- KBanking *m_app;
-+ KMyMoneyBanking *m_app;
- KBJobListView *m_jobList;
-
- protected slots:
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/widgets/CMakeLists.txt kmymoney-4.5.patched/kmymoney/plugins/kbanking/widgets/CMakeLists.txt
---- kmymoney-4.5/kmymoney/plugins/kbanking/widgets/CMakeLists.txt 2010-11-12 02:27:38.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/widgets/CMakeLists.txt 2010-11-12 02:09:27.000000000 +0100
-@@ -2,6 +2,7 @@
- ########### next target ###############
-
- SET(kmm_kbanking_widgets_la_SOURCES
-+ kbaccountlist.cpp
- kbjoblist.cpp
- )
-
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/widgets/kbaccountlist.cpp kmymoney-4.5.patched/kmymoney/plugins/kbanking/widgets/kbaccountlist.cpp
---- kmymoney-4.5/kmymoney/plugins/kbanking/widgets/kbaccountlist.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/widgets/kbaccountlist.cpp 2010-11-12 02:09:27.000000000 +0100
-@@ -0,0 +1,253 @@
-+/***************************************************************************
-+ begin : Mon Mar 01 2004
-+ copyright : (C) 2004 by Martin Preuss
-+ email : martin at libchipcard.de
-+
-+ ***************************************************************************
-+ * Please see toplevel file COPYING for license details *
-+ ***************************************************************************/
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config-kmymoney.h>
-+#endif
-+
-+
-+#include "kbaccountlist.h"
-+#include <assert.h>
-+#include <QtCore/qstring.h>
-+
-+
-+
-+KBAccountListViewItem::KBAccountListViewItem(KBAccountListView *parent,
-+ AB_ACCOUNT *acc)
-+ : QTreeWidgetItem(parent)
-+ , _account(acc)
-+{
-+ assert(acc);
-+ _populate();
-+}
-+
-+
-+
-+KBAccountListViewItem::KBAccountListViewItem(const KBAccountListViewItem &item)
-+ : QTreeWidgetItem(item)
-+ , _account(0)
-+{
-+
-+ if (item._account) {
-+ _account = item._account;
-+ }
-+}
-+
-+
-+KBAccountListViewItem::KBAccountListViewItem(KBAccountListView *parent,
-+ QTreeWidgetItem *after,
-+ AB_ACCOUNT *acc)
-+ : QTreeWidgetItem(parent, after)
-+ , _account(acc)
-+{
-+ assert(acc);
-+ _populate();
-+}
-+
-+
-+
-+KBAccountListViewItem::~KBAccountListViewItem()
-+{
-+}
-+
-+
-+
-+AB_ACCOUNT *KBAccountListViewItem::getAccount()
-+{
-+ return _account;
-+}
-+
-+
-+void KBAccountListViewItem::_populate()
-+{
-+ QString tmp;
-+ int i;
-+
-+ assert(_account);
-+
-+ i = 0;
-+
-+ // unique id
-+ setText(i++, QString::number(AB_Account_GetUniqueId(_account)));
-+
-+ // bank code
-+ setText(i++, QString::fromUtf8(AB_Account_GetBankCode(_account)));
-+
-+ // bank name
-+ tmp = AB_Account_GetBankName(_account);
-+ if (tmp.isEmpty())
-+ tmp = "(unnamed)";
-+ setText(i++, tmp);
-+
-+ // account id
-+ setText(i++, QString::fromUtf8(AB_Account_GetAccountNumber(_account)));
-+
-+ // account name
-+ tmp = QString::fromUtf8(AB_Account_GetAccountName(_account));
-+ if (tmp.isEmpty())
-+ tmp = "(unnamed)";
-+ setText(i++, tmp);
-+
-+ tmp = QString::fromUtf8(AB_Account_GetOwnerName(_account));
-+ if (tmp.isEmpty())
-+ tmp = "";
-+ setText(i++, tmp);
-+
-+ tmp = QString::fromUtf8(AB_Provider_GetName(AB_Account_GetProvider(_account)));
-+ if (tmp.isEmpty())
-+ tmp = "(unknown)";
-+ setText(i++, tmp);
-+
-+}
-+
-+bool KBAccountListViewItem::operator< (const QTreeWidgetItem & other) const
-+{
-+ bool ok1, ok2;
-+ int column = treeWidget() ? treeWidget()->sortColumn() : 0;
-+ int a = text(column).toInt(&ok1);
-+ int b = other.text(column).toInt(&ok2);
-+ if (ok1 && ok2)
-+ return a < b;
-+ return QTreeWidgetItem::operator<(other);
-+}
-+
-+
-+QString KBAccountListViewItem::key(int column, bool) const
-+{
-+ QString result;
-+
-+ if (column == 0) {
-+ ulong i;
-+ bool ok;
-+
-+ // id
-+ i = text(column).toULong(&ok);
-+ if (ok) {
-+ char numbuf[32];
-+
-+ snprintf(numbuf, sizeof(numbuf), "%012lu", i);
-+ result = QString(numbuf);
-+ } else
-+ result = text(column);
-+ } else
-+ result = text(column);
-+
-+ return result;
-+}
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+KBAccountListView::KBAccountListView(QWidget *parent)
-+ : QTreeWidget(parent)
-+{
-+ setAllColumnsShowFocus(true);
-+ setColumnCount(7);
-+ QStringList header;
-+ header << QWidget::tr("Id");
-+ header << QWidget::tr("Institute Code");
-+ header << QWidget::tr("Institute Name");
-+ header << QWidget::tr("Account Number");
-+ header << QWidget::tr("Account Name");
-+ header << QWidget::tr("Owner");
-+ header << QWidget::tr("Backend");
-+ setHeaderLabels(header);
-+
-+ setSortingEnabled(true);
-+ sortItems(0, Qt::AscendingOrder);
-+}
-+
-+
-+
-+KBAccountListView::~KBAccountListView()
-+{
-+}
-+
-+
-+
-+void KBAccountListView::addAccount(AB_ACCOUNT *acc)
-+{
-+ KBAccountListViewItem *entry;
-+
-+ entry = new KBAccountListViewItem(this, acc);
-+}
-+
-+
-+
-+void KBAccountListView::addAccounts(const std::list<AB_ACCOUNT*> &accs)
-+{
-+ std::list<AB_ACCOUNT*>::const_iterator it;
-+
-+ for (it = accs.begin(); it != accs.end(); it++) {
-+ KBAccountListViewItem *entry;
-+
-+ entry = new KBAccountListViewItem(this, *it);
-+ } /* for */
-+}
-+
-+
-+
-+AB_ACCOUNT *KBAccountListView::getCurrentAccount()
-+{
-+ KBAccountListViewItem *entry;
-+
-+ entry = dynamic_cast<KBAccountListViewItem*>(currentItem());
-+ if (!entry) {
-+ return 0;
-+ }
-+ return entry->getAccount();
-+}
-+
-+
-+
-+std::list<AB_ACCOUNT*> KBAccountListView::getSelectedAccounts()
-+{
-+ std::list<AB_ACCOUNT*> accs;
-+ KBAccountListViewItem *entry;
-+
-+ // Create an iterator and give the listview as argument
-+ QTreeWidgetItemIterator it(this);
-+ // iterate through all items of the listview
-+ for (; *it; ++it) {
-+ if ((*it)->isSelected()) {
-+ entry = dynamic_cast<KBAccountListViewItem*>(*it);
-+ if (entry)
-+ accs.push_back(entry->getAccount());
-+ }
-+ } // for
-+
-+ return accs;
-+}
-+
-+
-+
-+std::list<AB_ACCOUNT*> KBAccountListView::getSortedAccounts()
-+{
-+ std::list<AB_ACCOUNT*> accs;
-+ KBAccountListViewItem *entry;
-+
-+ // Create an iterator and give the listview as argument
-+ QTreeWidgetItemIterator it(this);
-+ // iterate through all items of the listview
-+ for (; *it; ++it) {
-+ entry = dynamic_cast<KBAccountListViewItem*>(*it);
-+ if (entry)
-+ accs.push_back(entry->getAccount());
-+ } // for
-+
-+ return accs;
-+}
-+
-+
-+
-diff --unidirectional-new-file -r -x .svn -u kmymoney-4.5/kmymoney/plugins/kbanking/widgets/kbaccountlist.h kmymoney-4.5.patched/kmymoney/plugins/kbanking/widgets/kbaccountlist.h
---- kmymoney-4.5/kmymoney/plugins/kbanking/widgets/kbaccountlist.h 1970-01-01 01:00:00.000000000 +0100
-+++ kmymoney-4.5.patched/kmymoney/plugins/kbanking/widgets/kbaccountlist.h 2010-11-12 02:09:27.000000000 +0100
-@@ -0,0 +1,71 @@
-+/***************************************************************************
-+ begin : Mon Mar 01 2004
-+ copyright : (C) 2004 by Martin Preuss
-+ email : martin at libchipcard.de
-+
-+ ***************************************************************************
-+ * Please see toplevel file COPYING for license details *
-+ ***************************************************************************/
-+
-+#ifndef Q4BANKING_ACCOUNTLIST_H
-+#define Q4BANKING_ACCOUNTLIST_H
-+
-+
-+#include <QTreeWidget>
-+
-+#include <aqbanking/account.h>
-+
-+#include <list>
-+
-+class KBAccountListView;
-+class KBAccountListViewItem;
-+
-+
-+class KBAccountListViewItem: public QTreeWidgetItem
-+{
-+private:
-+ AB_ACCOUNT *_account;
-+
-+ void _populate();
-+ bool operator< (const QTreeWidgetItem & other) const; //!< correctly sort text columns, which contain numbers
-+
-+public:
-+ KBAccountListViewItem(KBAccountListView *parent, AB_ACCOUNT *acc);
-+ KBAccountListViewItem(KBAccountListView *parent,
-+ QTreeWidgetItem *after,
-+ AB_ACCOUNT *acc);
-+ KBAccountListViewItem(const KBAccountListViewItem &item);
-+
-+ virtual ~KBAccountListViewItem();
-+
-+ AB_ACCOUNT *getAccount();
-+
-+ QString key(int column, bool ascending) const;
-+};
-+
-+
-+
-+class KBAccountListView: public QTreeWidget
-+{
-+private:
-+public:
-+ KBAccountListView(QWidget *parent = 0);
-+ virtual ~KBAccountListView();
-+
-+ void addAccount(AB_ACCOUNT *acc);
-+ void addAccounts(const std::list<AB_ACCOUNT*> &accs);
-+
-+ AB_ACCOUNT *getCurrentAccount();
-+ std::list<AB_ACCOUNT*> getSelectedAccounts();
-+
-+ std::list<AB_ACCOUNT*> getSortedAccounts();
-+
-+};
-+
-+
-+
-+
-+#endif /* QBANKING_ACCOUNTLIST_H */
-+
-+
-+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20110625/18a84c7a/attachment-0001.html>
More information about the macports-changes
mailing list