[140237] trunk/dports/finance/abtransfers

mk at macports.org mk at macports.org
Sun Sep 13 13:27:37 PDT 2015


Revision: 140237
          https://trac.macports.org/changeset/140237
Author:   mk at macports.org
Date:     2015-09-13 13:27:36 -0700 (Sun, 13 Sep 2015)
Log Message:
-----------
abtransfers: fix build by patching to current trunk

Modified Paths:
--------------
    trunk/dports/finance/abtransfers/Portfile

Added Paths:
-----------
    trunk/dports/finance/abtransfers/files/
    trunk/dports/finance/abtransfers/files/patch_623-638.diff

Modified: trunk/dports/finance/abtransfers/Portfile
===================================================================
--- trunk/dports/finance/abtransfers/Portfile	2015-09-13 18:52:38 UTC (rev 140236)
+++ trunk/dports/finance/abtransfers/Portfile	2015-09-13 20:27:36 UTC (rev 140237)
@@ -7,7 +7,8 @@
 
 name                abtransfers
 version             0.0.5.0
-revision            1
+# This version is actually already beyond 0.0.5.0 due to the patches introduced.
+revision            2
 
 categories          finance
 maintainers         mk openmaintainer
@@ -35,6 +36,10 @@
 
 use_parallel_build  yes
 
+patch.dir           ${workpath}/${distname}
+patch.pre_args      -p1
+patchfiles          patch_623-638.diff
+
 pre-configure {
 	configure.pre_args-append	INCLUDEPATH+="${prefix}/include/aqbanking5 ${prefix}/include/gwenhywfar4"
 }

Added: trunk/dports/finance/abtransfers/files/patch_623-638.diff
===================================================================
--- trunk/dports/finance/abtransfers/files/patch_623-638.diff	                        (rev 0)
+++ trunk/dports/finance/abtransfers/files/patch_623-638.diff	2015-09-13 20:27:36 UTC (rev 140237)
@@ -0,0 +1,8325 @@
+diff --git a/abtransfers.pro b/abtransfers.pro
+--- a/abtransfers.pro
++++ b/abtransfers.pro
+@@ -7,10 +7,21 @@
+ DESTDIR = build
+ TEMPLATE = app
+ 
++QT += gui
++#check for Qt5 or greater
++greaterThan(QT_MAJOR_VERSION, 4) {
++    QT += widgets #needed for Qt5
++}
++
+ USEWEBKIT=$$system(pkg-config QtWebKit && echo "available")
+ contains(USEWEBKIT, "available") {
+     message("QtWebKit available")
+-    QT += webkit
++    greaterThan(QT_MAJOR_VERSION, 4) {
++	QT += webkitwidgets #needed for Qt5
++    } else {
++	QT += webkit #needed for Qt4
++    }
++
+     DEFINES += USE_QT_WEBKIT
+ } else {
+     message("QtWebKit not available, using QLabel")
+@@ -121,6 +132,10 @@
+ unix|macx {
+     CONFIG += link_pkgconfig
+     PKGCONFIG += gwenhywfar gwengui-qt4 aqbanking
++# Only for tests with the lastest aqbanking version at development!
++#    LIBS += -L/opt/latest_svn/lib -laqbanking -lgwenhywfar -lgwengui-qt4 -lgwengui-cpp
++#    INCLUDEPATH += /opt/latest_svn/include/aqbanking5 \
++#		   /opt/latest_svn/include/gwenhywfar4
+ } else {
+     warning(configuring project for a not tested platform. The LIBS are probably wrong.)
+     #The above (CONFIG/PKGCONFIG) could be used if pkg-config is available.
+@@ -159,7 +174,8 @@
+ # MVW_VERSION=\\\"$${VERSION}\\\" \ # MVW_VERSION_EXTRA=\"\\\"'development-version-test test-test'\\\"\" #damit auch space möglich ist
+ # MVW_VERSION_EXTRA=\\\"development-version\\\" # keine space möglich!
+ DEFINES += ABTRANSFER_SVN_REVISION=\\\"$${SVN_REVISION}$${HG_REVISION}\\\" \
+-    ABTRANSFER_VERSION=\\\"$${VERSION}\\\"
++    ABTRANSFER_VERSION=\\\"$${VERSION}\\\" \
++    ABTRANSFER_VERSION_EXTRA=\\\"development-version\\\" # no space possible!
+ 
+ 
+ # NO_DEBUG
+diff --git a/src/abt_conv.cpp b/src/abt_conv.cpp
+--- a/src/abt_conv.cpp
++++ b/src/abt_conv.cpp
+@@ -1,5 +1,5 @@
+ /******************************************************************************
+- * Copyright (C) 2011-2013 Patrick Wacker
++ * Copyright (C) 2011-2015 Patrick Wacker
+  * 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)
+@@ -30,6 +30,7 @@
+ 
+ #include "abt_conv.h"
+ #include <QDebug>
++#include <QTextCodec>
+ #include <string>
+ #include <stdio.h>
+ 
+@@ -107,13 +108,31 @@
+ 	case AB_Job_TypeTransfer :
+ 		return (QObject::tr("Überweisung durchführen"));
+ 		break;
++
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 5
++	case AB_Job_TypeSepaCreateStandingOrder :
++		return (QObject::tr("SEPA Dauerauftrag anlegen"));
++		break;
++	case AB_Job_TypeSepaModifyStandingOrder :
++		return (QObject::tr("SEPA Dauerauftrag ändern"));
++		break;
++	case AB_Job_TypeSepaDeleteStandingOrder :
++		return (QObject::tr("SEPA Dauerauftrag löschen"));
++		break;
++	case AB_Job_TypeSepaGetStandingOrders :
++		return (QObject::tr("SEPA Daueraufträge abfragen"));
++		break;
++	case AB_Job_TypeSepaFlashDebitNote :
++		return (QObject::tr("SEPA Lastschrift anlegen (flash)"));
++		break;
++#endif
+ 	case AB_Job_TypeUnknown :
+ 		return (QObject::tr("AqBanking Typ unbekannt"));
+ 		break;
++	default: //if no type matches
++		return QObject::tr("ab_transfers Typ unbekannt");
++		break;
+ 	}
+-
+-	//default if no type match
+-	return QObject::tr("ab_transfers Typ unbekannt");
+ }
+ 
+ //static
+@@ -184,7 +203,7 @@
+ 		GWEN_Time_toUtcString(gwentime, "YYYYMMDD", gbuf);
+ 		std::string stdDatetime(GWEN_Buffer_GetStart(gbuf));
+ 		QString strDate = QString::fromStdString(stdDatetime);
+-		date = QDate::fromString(strDate, "yyyyMMdd");
++		date = QDate::fromString(strDate, QString::fromUtf8("yyyyMMdd"));
+ 		GWEN_Buffer_free(gbuf);
+ 
+ 	} else {
+@@ -214,12 +233,12 @@
+ 		return NULL;
+ 	}
+ 
+-	datestr = QString("%1%2%3")
++	datestr = QString::fromUtf8("%1%2%3")
+ 		  .arg(date.year(), 4, 10, QLatin1Char('0'))
+ 		  .arg(date.month(), 2, 10, QLatin1Char('0'))
+ 		  .arg(date.day(), 2, 10, QLatin1Char('0'));
+ 
+-	datestr.append("-12:00");
++	datestr.append(QString::fromUtf8("-12:00"));
+ 
+ 	gwt = GWEN_Time_fromUtcString(datestr.toStdString().c_str(), "YYYYMMDD-hh:mm");
+ 	//gwt = GWEN_Time_new(date.year(), date.month()-1, date.day(), 12, 0, 0, 1);
+@@ -231,13 +250,18 @@
+ }
+ 
+ //static
+-const QStringList abt_conv::GwenStringListToQStringList(const GWEN_STRINGLIST *gwenList)
++const QStringList abt_conv::GwenStringListToQStringList(const GWEN_STRINGLIST *gwenList,
++							bool fromImport /* = false */)
+ {
+ 	Q_ASSERT(gwenList);
+ 	QStringList ret;
+ 
+ 	for (unsigned int i=0; i<GWEN_StringList_Count(gwenList); ++i) {
+-		ret.append(QString::fromUtf8(GWEN_StringList_StringAt(gwenList, i)));
++		if (fromImport) {
++			ret.append(encodeFromAb(GWEN_StringList_StringAt(gwenList, i)));
++		} else {
++			ret.append(QString::fromUtf8(GWEN_StringList_StringAt(gwenList, i)));
++		}
+ 	}
+ 
+ 	return ret;
+@@ -255,17 +279,35 @@
+ 
+ 	GWEN_STRINGLIST *gwl = GWEN_StringList_new();
+ 	for (int i=0; i<l.size(); ++i) {
+-		QString s = l.at(i);
++		std::string s = l.at(i).toStdString();
+ 		//we allocate memory for a normal c string, so that
+ 		//GWEN_StringList_free() can free it
+-		char *c = (char*)malloc(sizeof(char)*s.toStdString().length()+1);
+-		strcpy(c, s.toStdString().c_str());
++		char *c = (char*)malloc(sizeof(char) * s.length() + 1);
++		strcpy(c, s.c_str());
+ 		//GWEN_StringList_free() will also free the allocated c string
+ 		GWEN_StringList_AppendString(gwl, c, 1, 0);
+ 	}
+ 	//remember the GWEN_STRINGLIST, so that freeAllGwenLists() can delete it
+ 	abt_conv::gwen_strlist->append(gwl);
+ 	return gwl;
++
++//	GWEN_STRINGLIST *gwl = GWEN_StringList_new();
++//	for (int i=0; i<l.size(); ++i) {
++//		//QString s = l.at(i);
++//		const char* str = encodeToAb(l.at(i));
++//		//const char* str = l.at(i).toStdString().c_str();
++//		//we allocate memory for a normal c string, so that
++//		//GWEN_StringList_free() can free it
++//		qDebug() << str;
++//		int len = strlen(str);
++//		char *c = (char*)malloc(sizeof(char) * len + 1);
++//		strcpy(c, str);
++//		//GWEN_StringList_free() will also free the allocated c string
++//		GWEN_StringList_AppendString(gwl, c, 1, 0);
++//	}
++//	//remember the GWEN_STRINGLIST, so that freeAllGwenLists() can delete it
++//	abt_conv::gwen_strlist->append(gwl);
++//	return gwl;
+ }
+ 
+ //static
+@@ -283,13 +325,13 @@
+ 	}
+ 
+ 	if (asDecimal) {
+-		return QString("%L1").arg(AB_Value_GetValueAsDouble(value),0,'f',2);
++		return QString::fromUtf8("%L1").arg(AB_Value_GetValueAsDouble(value),0,'f',2);
+ 	} else {
+ 		GWEN_BUFFER *buf = GWEN_Buffer_new(NULL, 100, 0, 0);
+ 		AB_Value_toString(value, buf);
+-		std::string result(GWEN_Buffer_GetStart(buf));
++		QString ret = encodeFromAb(GWEN_Buffer_GetStart(buf));
+ 		GWEN_Buffer_free(buf);
+-		return QString::fromStdString(result);
++		return ret;
+ 	}
+ }
+ 
+@@ -310,17 +352,52 @@
+ 		return NULL;
+ 	}
+ 
+-	std::string s = str.toStdString();
+ 	AB_VALUE *val;
+-	val = AB_Value_fromString(s.c_str());
+-	QString cur = currency.toUtf8();
+-	std::string c = cur.toStdString();
+-	AB_Value_SetCurrency(val, c.c_str());
++	val = AB_Value_fromString(str.toStdString().c_str());
++	AB_Value_SetCurrency(val, currency.toStdString().c_str());
+ 	//remember the AB_VALUE, so that freeAllGwenLists() can delete it
+ 	abt_conv::gwen_abvlist->append(val);
+ 	return val;
+ }
+ 
++//static
++/** \brief converts a QString (Unicode) to a value that the Im-/Exporter of
++ *	   AqBanking can handle.
++ *
++ */
++const char* abt_conv::encodeToAb(const QString &str)
++{
++	return str.toStdString().c_str();
++	QTextCodec *codec = QTextCodec::codecForName("UTF-8");
++	QByteArray encodedStr = codec->fromUnicode(str);
++	return encodedStr;
++}
++
++//static
++/** \brief converts a const char* from the Im-/Exporter of AqBanking to a
++ *	   QString.
++ *
++ */
++const QString abt_conv::encodeFromAb(const char* str)
++{
++	if (QTextCodec::codecForCStrings() != NULL) {
++		qWarning() << Q_FUNC_INFO
++			   << "WARNING QTextCodec::codecForCString() is set!"
++			   << "This results to a doulbe conversion from UTF-8!";
++		return QString::fromUtf8(str);
++	}
++
++	QTextCodec *codec = QTextCodec::codecForName("UTF-8");
++	QString ret;
++
++	ret = codec->toUnicode(str);
++//	qDebug() << Q_FUNC_INFO << "1:" << ret;
++	ret = QString::fromUtf8(ret.toStdString().c_str());
++	qDebug() << Q_FUNC_INFO << "returning:" << ret;
++	return ret;
++}
++
++
+ /** @brief must be called at the termination of the program so that ALL created
+  *  list are deleted.
+  *
+diff --git a/src/abt_conv.h b/src/abt_conv.h
+--- a/src/abt_conv.h
++++ b/src/abt_conv.h
+@@ -71,11 +71,15 @@
+ 	static const QDate GwenTimeToQDate(const GWEN_TIME *gwen_time);
+ 	static const GWEN_TIME* QDateToGwenTime(const QDate &date);
+ 
+-	static const QStringList GwenStringListToQStringList(const GWEN_STRINGLIST *gwenList);
++	static const QStringList GwenStringListToQStringList(const GWEN_STRINGLIST *gwenList, bool fromImport = false);
+ 	static const GWEN_STRINGLIST* QStringListToGwenStringList(const QStringList &l);
+ 
+ 	static const QString ABValueToString(const AB_VALUE *value, bool asDecimal=false);
+-	static AB_VALUE* ABValueFromString(const QString &str, const QString &currency = "EUR");
++	static AB_VALUE* ABValueFromString(const QString &str,
++					   const QString &currency = QString::fromUtf8("EUR"));
++
++	static const char* encodeToAb(const QString &str);
++	static const QString encodeFromAb(const char* str);
+ 
+ 	static void freeAllGwenLists();
+ 
+diff --git a/src/abt_empfaengerinfo.h b/src/abt_empfaengerinfo.h
+--- a/src/abt_empfaengerinfo.h
++++ b/src/abt_empfaengerinfo.h
+@@ -51,10 +51,10 @@
+ 	QString m_Verw;
+ public:
+ 	abt_EmpfaengerInfo();
+-	abt_EmpfaengerInfo(const QString &Name, const QString &Kontonummer = "",
+-			   const QString &BLZ = "", const QString &IBAN = "",
+-			   const QString &BIC = "", const QString &Institut = "",
+-			   const QString &Verw = "");
++	abt_EmpfaengerInfo(const QString &Name, const QString &Kontonummer = QString(),
++			   const QString &BLZ = QString(), const QString &IBAN = QString(),
++			   const QString &BIC = QString(), const QString &Institut = QString(),
++			   const QString &Verw = QString());
+ 	~abt_EmpfaengerInfo();
+ 
+ 	const QString &getName() const { return this->m_Name; }
+diff --git a/src/abt_history.cpp b/src/abt_history.cpp
+--- a/src/abt_history.cpp
++++ b/src/abt_history.cpp
+@@ -182,8 +182,8 @@
+ 		case AB_Job_TypeDeleteDatedTransfer:
+ 			//append a dated transfer to the history
+ 			t = AB_Transaction_dup(job->getTransaction()->getAB_Transaction());
+-			AB_Transaction_AddCategory(t, QString("JobStatus: %1").arg(job->getAbJobStatus()).toUtf8(), 1);
+-			AB_Transaction_AddCategory(t, QString("JobType: %1").arg(job->getAbJobType()).toUtf8(), 1);
++			AB_Transaction_AddCategory(t, QString::fromUtf8("JobStatus: %1").arg(job->getAbJobStatus()).toUtf8(), 1);
++			AB_Transaction_AddCategory(t, QString::fromUtf8("JobType: %1").arg(job->getAbJobType()).toUtf8(), 1);
+ 			AB_ImExporterAccountInfo_AddDatedTransfer(iea, t);
+ 			break;
+ 		case AB_Job_TypeCreateStandingOrder:
+@@ -191,8 +191,8 @@
+ 		case AB_Job_TypeDeleteStandingOrder:
+ 			//append a standing order to the history
+ 			t = AB_Transaction_dup(job->getTransaction()->getAB_Transaction());
+-			AB_Transaction_AddCategory(t, QString("JobStatus: %1").arg(job->getAbJobStatus()).toUtf8(), 1);
+-			AB_Transaction_AddCategory(t, QString("JobType: %1").arg(job->getAbJobType()).toUtf8(), 1);
++			AB_Transaction_AddCategory(t, QString::fromUtf8("JobStatus: %1").arg(job->getAbJobStatus()).toUtf8(), 1);
++			AB_Transaction_AddCategory(t, QString::fromUtf8("JobType: %1").arg(job->getAbJobType()).toUtf8(), 1);
+ 			AB_ImExporterAccountInfo_AddStandingOrder(iea, t);
+ 			break;
+ 		case AB_Job_TypeTransfer:
+@@ -204,8 +204,8 @@
+ 		case AB_Job_TypeSepaTransfer:
+ 			//append a transfer to the history
+ 			t = AB_Transaction_dup(job->getTransaction()->getAB_Transaction());
+-			AB_Transaction_AddCategory(t, QString("JobStatus: %1").arg(job->getAbJobStatus()).toUtf8(), 1);
+-			AB_Transaction_AddCategory(t, QString("JobType: %1").arg(job->getAbJobType()).toUtf8(), 1);
++			AB_Transaction_AddCategory(t, QString::fromUtf8("JobStatus: %1").arg(job->getAbJobStatus()).toUtf8(), 1);
++			AB_Transaction_AddCategory(t, QString::fromUtf8("JobType: %1").arg(job->getAbJobType()).toUtf8(), 1);
+ 			AB_ImExporterAccountInfo_AddTransfer(iea, t);
+ 			break;
+ 
+diff --git a/src/abt_job_ctrl.cpp b/src/abt_job_ctrl.cpp
+--- a/src/abt_job_ctrl.cpp
++++ b/src/abt_job_ctrl.cpp
+@@ -33,6 +33,7 @@
+ #include <QDebug>
+ #include <QMessageBox>
+ 
++#include <aqbanking/version.h> // for version depended compiling
+ #include <aqbanking/job.h>
+ #include <aqbanking/transaction.h>
+ 
+@@ -55,6 +56,20 @@
+ #include <aqbanking/jobmodifysto.h>
+ #include <aqbanking/jobdeletesto.h>
+ #include <aqbanking/jobgetstandingorders.h>
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 5
++#include <aqbanking/jobsepagetstandingorders.h>
++#include <aqbanking/jobsepaflashdebitnote.h>
++#endif
++
++/***** INFO
++ * as with aqbanking git 33ea5e5910cb2cbe2afc4f69a56fab38747d58ad from
++ * 2013-12-30 the ...Get- and ...SetTransaction() functions for each single job
++ * are marked obsolete, and be replaced with a single AB_Job[Set|Get]Transaction()
++ * function.
++ * Therefore this code was reworked to work with both versions.
++ * If AqBanking >= 5.3.0, the new functions are used, otherwise the old
++ * functions.
++ *****/
+ 
+ #include "abt_parser.h"
+ 
+@@ -114,7 +129,6 @@
+ {
+ 	Q_ASSERT(hash != NULL);
+ 	AB_JOB *j = NULL;
+-
+ 	j = AB_JobCreateDatedTransfer_new(a);
+ 	hash->insert(AB_Job_TypeCreateDatedTransfer, AB_Job_CheckAvailability(j) == 0);
+ 	AB_Job_free(j);
+@@ -183,6 +197,18 @@
+ 	hash->insert(AB_Job_TypeTransfer, AB_Job_CheckAvailability(j) == 0);
+ 	AB_Job_free(j);
+ 
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 5
++	//check for newly added SEPA transfers
++
++	j = AB_JobSepaGetStandingOrders_new(a);
++	hash->insert(AB_Job_TypeSepaGetStandingOrders, AB_Job_CheckAvailability(j) == 0);
++	AB_Job_free(j);
++
++	j = AB_JobSepaFlashDebitNote_new(a);
++	hash->insert(AB_Job_TypeSepaFlashDebitNote, AB_Job_CheckAvailability(j) == 0);
++	AB_Job_free(j);
++
++#endif
+ }
+ 
+ //static public
+@@ -213,8 +239,13 @@
+ 	if (AB_Job_CheckAvailability(j)) {
+ 		qDebug("Job SingleTransfer not available");
+ 	} else {
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++		AB_Job_SetTransaction(j, t);
++		tl = AB_Job_GetFieldLimits(j);
++#else
+ 		AB_JobSingleTransfer_SetTransaction(j, t);
+ 		tl = AB_JobSingleTransfer_GetFieldLimits(j);
++#endif
+ 		if (tl) {
+ 			abt_transactionLimits *limits = new abt_transactionLimits(tl);
+ 			ah->insert(AB_Job_TypeTransfer, limits);
+@@ -229,8 +260,13 @@
+ 	if (AB_Job_CheckAvailability(j)) {
+ 		qDebug("Job SingleDebitNote not available");
+ 	} else {
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++		AB_Job_SetTransaction(j, t);
++		tl = AB_Job_GetFieldLimits(j);
++#else
+ 		AB_JobSingleDebitNote_SetTransaction(j, t);
+ 		tl = AB_JobSingleDebitNote_GetFieldLimits(j);
++#endif
+ 		if (tl) {
+ 			abt_transactionLimits *limits = new abt_transactionLimits(tl);
+ 			ah->insert(AB_Job_TypeDebitNote, limits);
+@@ -247,8 +283,13 @@
+ 	if (AB_Job_CheckAvailability(j)) {
+ 		qDebug("Job InternalTransfer not available");
+ 	} else {
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++		AB_Job_SetTransaction(j, t);
++		tl = AB_Job_GetFieldLimits(j);
++#else
+ 		AB_JobInternalTransfer_SetTransaction(j, t);
+ 		tl = AB_JobInternalTransfer_GetFieldLimits(j);
++#endif
+ 		if (tl) {
+ 			abt_transactionLimits *limits = new abt_transactionLimits(tl);
+ 			ah->insert(AB_Job_TypeInternalTransfer, limits);
+@@ -263,8 +304,13 @@
+ 	if (AB_Job_CheckAvailability(j)) {
+ 		qDebug("Job SepaTransfer not available");
+ 	} else {
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++		AB_Job_SetTransaction(j, t);
++		tl = AB_Job_GetFieldLimits(j);
++#else
+ 		AB_JobSepaTransfer_SetTransaction(j, t);
+ 		tl = AB_JobSepaTransfer_GetFieldLimits(j);
++#endif
+ 		if (tl) {
+ 			abt_transactionLimits *limits = new abt_transactionLimits(tl);
+ 			ah->insert(AB_Job_TypeSepaTransfer, limits);
+@@ -279,8 +325,13 @@
+ 	if (AB_Job_CheckAvailability(j)) {
+ 		qDebug("Job CreateDatedTransfer not available");
+ 	} else {
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++		AB_Job_SetTransaction(j, t);
++		tl = AB_Job_GetFieldLimits(j);
++#else
+ 		AB_JobCreateDatedTransfer_SetTransaction(j, t);
+ 		tl = AB_JobCreateDatedTransfer_GetFieldLimits(j);
++#endif
+ 		if (tl) {
+ 			abt_transactionLimits *limits = new abt_transactionLimits(tl);
+ 			ah->insert(AB_Job_TypeCreateDatedTransfer, limits);
+@@ -295,8 +346,13 @@
+ 	if (AB_Job_CheckAvailability(j)) {
+ 		qDebug("Job ModifyDatedTransfer not available");
+ 	} else {
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++		AB_Job_SetTransaction(j, t);
++		tl = AB_Job_GetFieldLimits(j);
++#else
+ 		AB_JobModifyDatedTransfer_SetTransaction(j, t);
+ 		tl = AB_JobModifyDatedTransfer_GetFieldLimits(j);
++#endif
+ 		if (tl) {
+ 			abt_transactionLimits *limits = new abt_transactionLimits(tl);
+ 			ah->insert(AB_Job_TypeModifyDatedTransfer, limits);
+@@ -311,8 +367,13 @@
+ 	if (AB_Job_CheckAvailability(j)) {
+ 		qDebug("Job CreateStandingOrder not available");
+ 	} else {
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++		AB_Job_SetTransaction(j, t);
++		tl = AB_Job_GetFieldLimits(j);
++#else
+ 		AB_JobCreateStandingOrder_SetTransaction(j, t);
+ 		tl = AB_JobCreateStandingOrder_GetFieldLimits(j);
++#endif
+ 		if (tl) {
+ 			abt_transactionLimits *limits = new abt_transactionLimits(tl);
+ 			ah->insert(AB_Job_TypeCreateStandingOrder, limits);
+@@ -327,8 +388,13 @@
+ 	if (AB_Job_CheckAvailability(j)) {
+ 		qDebug("Job ModifyStandingOrder not available");
+ 	} else {
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++		AB_Job_SetTransaction(j, t);
++		tl = AB_Job_GetFieldLimits(j);
++#else
+ 		AB_JobModifyStandingOrder_SetTransaction(j, t);
+ 		tl = AB_JobModifyStandingOrder_GetFieldLimits(j);
++#endif
+ 		if (tl) {
+ 			abt_transactionLimits *limits = new abt_transactionLimits(tl);
+ 			ah->insert(AB_Job_TypeModifyStandingOrder, limits);
+@@ -361,8 +427,13 @@
+ 	if (AB_Job_CheckAvailability(j)) {
+ 		qDebug("Job SepaDebitNote not available");
+ 	} else {
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++		AB_Job_SetTransaction(j, t);
++		tl = AB_Job_GetFieldLimits(j);
++#else
+ 		AB_JobSepaDebitNote_SetTransaction(j, t);
+ 		tl = AB_JobSepaDebitNote_GetFieldLimits(j);
++#endif
+ 		if (tl) {
+ 			abt_transactionLimits *limits = new abt_transactionLimits(tl);
+ 			ah->insert(AB_Job_TypeSepaDebitNote, limits);
+@@ -389,8 +460,8 @@
+ void abt_job_ctrl::addlog(const QString &str)
+ {
+ 	static QString time;
+-	time = QTime::currentTime().toString("HH:mm:ss.zzz");
+-	time.append(": ");
++	time = QTime::currentTime().toString(QString::fromUtf8("HH:mm:ss.zzz"));
++	time.append(QString::fromUtf8(": "));
+ 	time.append(str);
+ 
+ 	emit this->log(time);
+@@ -421,29 +492,33 @@
+ 		GWEN_StringList_free(gwenStrList);
+ 	}
+ 
++	/*
++	 * FIXME: check the encoding and use the apropriate functions!
++	 */
++
+ 	//preprocess the logs from AqBanking (UTF8 to ASCII)
+ 	//replace %22 by "
+-	strList.replaceInStrings("%22", "\"", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%22"), QString::fromUtf8("\""), Qt::CaseSensitive);
+ 	//replace %28 by (
+-	strList.replaceInStrings("%28", "(", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%28"), QString::fromUtf8("("), Qt::CaseSensitive);
+ 	//replace %29 by )
+-	strList.replaceInStrings("%29", ")", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%29"), QString::fromUtf8(")"), Qt::CaseSensitive);
+ 	//replace %3A by :
+-	strList.replaceInStrings("%3A", ":", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%3A"), QString::fromUtf8(":"), Qt::CaseSensitive);
+ 	//replace %C3%A4 by ä
+-	strList.replaceInStrings("%C3%A4", "ä", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%C3%A4"), QString::fromUtf8("ä"), Qt::CaseSensitive);
+ 	//replace %C3%84 by Ä
+-	strList.replaceInStrings("%C3%84", "Ä", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%C3%84"), QString::fromUtf8("Ä"), Qt::CaseSensitive);
+ 	//replace %C3%BC by ü
+-	strList.replaceInStrings("%C3%BC", "ü", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%C3%BC"), QString::fromUtf8("ü"), Qt::CaseSensitive);
+ 	//replace %C3%9C by Ü
+-	strList.replaceInStrings("%C3%9C", "Ü", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%C3%9C"), QString::fromUtf8("Ü"), Qt::CaseSensitive);
+ 	//replace %C3%B6 by ö
+-	strList.replaceInStrings("%C3%B6", "ö", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%C3%B6"), QString::fromUtf8("ö"), Qt::CaseSensitive);
+ 	//replace %C3%96 by Ö
+-	strList.replaceInStrings("%C3%96", "Ö", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%C3%96"), QString::fromUtf8("Ö"), Qt::CaseSensitive);
+ 	//replace %3D by =
+-	strList.replaceInStrings("%3D", "=", Qt::CaseSensitive);
++	strList.replaceInStrings(QString::fromUtf8("%3D"), QString::fromUtf8("="), Qt::CaseSensitive);
+ 
+ 	return strList;
+ }
+@@ -695,7 +770,11 @@
+ 		wantedPos = this->getSupposedJobqueue_NextStandingPos(firstStandingPos, lastPos);
+ 		break;
+ 	}
+-	case AB_Job_TypeGetStandingOrders: {
++	case AB_Job_TypeGetStandingOrders:
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 5
++	case AB_Job_TypeSepaGetStandingOrders:
++#endif
++	{
+ 		//the update of standingOrders should be after the standingOrder changes
+ 		int firstStandingPos = this->getSupposedJobqueue_NextTransferPos(firstPos, lastPos);
+ 		//the update of standingOrders should be direct after the last
+@@ -928,7 +1007,11 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobSingleTransfer_SetTransaction(job, t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -974,7 +1057,11 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobSingleDebitNote_SetTransaction(job, t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -1066,7 +1153,11 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobInternalTransfer_SetTransaction(job, t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -1112,7 +1203,11 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobSepaTransfer_SetTransaction(job, t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -1162,8 +1257,12 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobCreateDatedTransfer_SetTransaction(job,
+ 						      t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -1224,8 +1323,12 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobModifyDatedTransfer_SetTransaction(job,
+ 						      t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -1278,8 +1381,12 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobDeleteDatedTransfer_SetTransaction(job,
+ 						      t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -1389,8 +1496,12 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobCreateStandingOrder_SetTransaction(job,
+ 						      t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -1450,8 +1561,12 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobModifyStandingOrder_SetTransaction(job,
+ 						      t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -1504,8 +1619,12 @@
+ 	}
+ 
+ 	//add transaction to the job
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	rv = AB_Job_SetTransaction(job, t->getAB_Transaction());
++#else
+ 	rv = AB_JobDeleteStandingOrder_SetTransaction(job,
+ 						      t->getAB_Transaction());
++#endif
+ 
+ 	abt_jobInfo *ji = new abt_jobInfo(job);
+ 
+@@ -1586,7 +1705,68 @@
+ 
+ }
+ 
++//public slot
++/** @brief adds a get sepa standing orders to the jobqueue
++ *
++ * AqBanking >= 5.5.0 is needed for this type of job!
++ */
++void abt_job_ctrl::addGetSepaStandingOrders(const aqb_AccountInfo *acc,
++					    bool withoutInfo /*=false*/)
++{
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 5
++	int rv;
+ 
++	if (acc == NULL) { //Job is not available!
++		qWarning() << Q_FUNC_INFO
++			   << "Job AB_Job_TypeGetSepaStandingOrders is not"
++			   << "available (no valid account [NULL])";
++		emit jobNotAvailable(AB_Job_TypeSepaGetStandingOrders);
++		return; //abort
++	}
++
++	//this jobtype should only be send once
++	if (this->isJobTypeInQueue(AB_Job_TypeSepaGetStandingOrders,
++				   acc->get_AB_ACCOUNT())) {
++		return; //already in queue, nothing to do
++	}
++
++
++	AB_JOB *job = AB_JobSepaGetStandingOrders_new(acc->get_AB_ACCOUNT());
++
++	rv = AB_Job_CheckAvailability(job);
++
++	if (rv) { //Job is not available!
++		qWarning() << Q_FUNC_INFO
++			   << "Job is not available -"
++			   << "AB_Job_CheckAvailability returned:" << rv;
++		emit jobNotAvailable(AB_Job_TypeSepaGetStandingOrders);
++		return; //cancel adding
++	}
++
++	abt_jobInfo *ji = new abt_jobInfo(job);
++
++	//get the right position and insert the job in the jobqueue (at
++	//execution time the AB_JOB_LIST is created from the jobs in the queue)
++	int pos = this->getSupposedJobqueuePos(ji);
++	this->jobqueue->insert(pos, ji);
++
++	if (!withoutInfo) { //only emit a jobAdded() signal if wanted
++		emit this->jobAdded(ji);
++	}
++
++	emit this->jobQueueListChanged();
++
++	//Das zuständige AccountInfo Object darüber informieren wenn wir
++	//mit dem parsen fertig sind (damit dies die SOs neu laden kann)
++	//--> wird jetzt direkt beim parsen erledigt!
++//	connect(this, SIGNAL(standingOrdersParsed()),
++//		acc, SLOT(loadKnownStandingOrders()));
++#else
++	//getSepaStandingOrders not supported by AqBanking version!
++	emit jobNotAvailable(AB_Job_TypeUnknown);
++	return; //cancel further processing
++#endif
++}
+ 
+ //public slot
+ /**
+@@ -1810,7 +1990,7 @@
+ 	}
+ 	while (j) {
+ 		jobType = AB_Job_GetType(j);
+-		strType = AB_Job_Type2Char(jobType);
++		strType = QString::fromUtf8(AB_Job_Type2Char(jobType));
+ 		jobState = AB_Job_GetStatus(j);
+ 
+ 		if (jobState == AB_Job_StatusFinished ||
+@@ -1884,14 +2064,22 @@
+ 				break;
+ 
+ 			case AB_Job_TypeDeleteDatedTransfer:
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++				t = AB_Job_GetTransaction(j);
++#else
+ 				t = AB_JobDeleteDatedTransfer_GetTransaction(j);
++#endif
+ 				dt = new abt_datedTransferInfo(t);
+ 				acc->removeDatedTransfer(dt);
+ 				delete dt;
+ 				break;
+ 
+ 			case AB_Job_TypeModifyDatedTransfer:
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++				t = AB_Job_GetTransaction(j);
++#else
+ 				t = AB_JobModifyDatedTransfer_GetTransaction(j);
++#endif
+ 				dt = new abt_datedTransferInfo(t);
+ 				acc->removeDatedTransfer(dt);
+ 				delete dt;
+@@ -1903,14 +2091,22 @@
+ 				break;
+ 
+ 			case AB_Job_TypeDeleteStandingOrder:
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++				t = AB_Job_GetTransaction(j);
++#else
+ 				t = AB_JobDeleteStandingOrder_GetTransaction(j);
++#endif
+ 				so = new abt_standingOrderInfo(t);
+ 				acc->removeStandingOrder(so);
+ 				delete so;
+ 				break;
+ 
+ 			case AB_Job_TypeModifyStandingOrder:
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++				t = AB_Job_GetTransaction(j);
++#else
+ 				t = AB_JobModifyStandingOrder_GetTransaction(j);
++#endif
+ 				so = new abt_standingOrderInfo(t);
+ 				acc->removeStandingOrder(so);
+ 				delete so;
+diff --git a/src/abt_job_ctrl.h b/src/abt_job_ctrl.h
+--- a/src/abt_job_ctrl.h
++++ b/src/abt_job_ctrl.h
+@@ -158,6 +158,7 @@
+ 	void addModifyStandingOrder(const aqb_AccountInfo *acc, const abt_transaction *t);
+ 	void addDeleteStandingOrder(const aqb_AccountInfo *acc, const abt_transaction *t);
+ 	void addGetStandingOrders(const aqb_AccountInfo *acc, bool withoutInfo = false);
++	void addGetSepaStandingOrders(const aqb_AccountInfo *acc, bool withoutInfo = false);
+ 
+ 	void addGetBalance(const aqb_AccountInfo *acc, bool withoutInfo = false);
+ 
+diff --git a/src/abt_jobinfo.cpp b/src/abt_jobinfo.cpp
+--- a/src/abt_jobinfo.cpp
++++ b/src/abt_jobinfo.cpp
+@@ -30,6 +30,8 @@
+ 
+ #include "abt_jobinfo.h"
+ 
++#include <QDebug>
++
+ #include <aqbanking/jobsingletransfer.h>
+ #include <aqbanking/jobsingledebitnote.h>
+ #include <aqbanking/jobinternaltransfer.h>
+@@ -54,6 +56,17 @@
+ #include "aqb_accountinfo.h"
+ #include "abt_transaction_base.h"
+ 
++#include <aqbanking/version.h> // for version depended compiling
++/***** INFO
++ * as with aqbanking git 33ea5e5910cb2cbe2afc4f69a56fab38747d58ad from
++ * 2013-12-30 the ...Get- and ...SetTransaction() functions for each single job
++ * are marked obsolete, and be replaced with a single AB_Job[Set|Get]Transaction()
++ * function.
++ * Therefore this code was reworked to work with both versions.
++ * If AqBanking >= 5.3.0, the new functions are used, otherwise the old
++ * functions.
++ *****/
++
+ 
+ 
+ abt_jobInfo::abt_jobInfo(AB_JOB *j)
+@@ -106,6 +119,11 @@
+ {
+ 	const AB_TRANSACTION *AB_Trans = NULL;
+ 
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 3
++	//much more simplified with the new API
++	AB_Trans = AB_Job_GetTransaction(this->m_job);
++#else
++	//with the old API we need to call a seperate function for each job type
+ 	switch (this->getAbJobType()) {
+ 	case AB_Job_TypeCreateDatedTransfer:
+ 		AB_Trans = AB_JobCreateDatedTransfer_GetTransaction(this->m_job);
+@@ -157,6 +175,7 @@
+ 		AB_Trans = NULL;
+ 		break;
+ 	}
++#endif
+ 
+ 	if (AB_Trans == NULL) {
+ 		//the job does not have a transaction, so do i
+@@ -288,7 +307,8 @@
+ 	case AB_Job_TypeTransfer:
+ 		this->createJobInfoStringList_Transfer(strList);
+ 		break;
+-	case AB_Job_TypeUnknown:
++	case AB_Job_TypeUnknown: // fall through
++	default:
+ 		this->createJobInfoStringList_Unknown(strList);
+ 		break;
+ 	}
+@@ -324,7 +344,7 @@
+ {
+ 	if (!this->m_trans) return; //only if transaction available
+ 	QString info;
+-
++	qDebug() << Q_FUNC_INFO << this->m_trans->getRemoteName().at(0);
+ 	info = QObject::tr("Zu: %1 (%2 - %3)").arg(this->m_trans->getRemoteName().at(0),
+ 						   this->m_trans->getRemoteAccountNumber(),
+ 						   this->m_trans->getRemoteBankCode());
+@@ -350,7 +370,7 @@
+ 
+ 	strList->append(QObject::tr("Verwendungszweck:"));
+ 	for (int i=0; i<this->m_trans->getPurpose().size(); ++i) {
+-		strList->append("    " + this->m_trans->getPurpose().at(i));
++		strList->append(QString::fromUtf8("    ") + this->m_trans->getPurpose().at(i));
+ 	}
+ }
+ 
+@@ -363,7 +383,7 @@
+ 
+ 	if (v) { //Betrag und Währung enthalten
+ 		info = QObject::tr("Betrag: %1 %2").arg(abt_conv::ABValueToString(v, true),
+-						AB_Value_GetCurrency(v));
++						QString::fromUtf8(AB_Value_GetCurrency(v)));
+ 	} else { //Kein AB_VALUE vorhanden
+ 		info = QObject::tr("Betrag: NICHT VORHANDEN (sollte nicht vorkommen)");
+ 	}
+@@ -400,7 +420,7 @@
+ 	const abt_transaction *t = this->m_trans;
+ 
+ 	this->createJobInfoStringList_Standard_Text(strList);
+-	strList->append(""); //leere Zeile
++	strList->append(QString::fromUtf8("")); //leere Zeile
+ 
+ 	int cycle = t->getCycle();
+ 	AB_TRANSACTION_PERIOD period = t->getPeriod();
+@@ -494,24 +514,24 @@
+ {
+ 	strList->append(QObject::tr("Aktualisiert den aktuellen Saldo für das"));
+ 	strList->append(QObject::tr("Konto %1 (%2)").arg(
+-			AB_Account_GetAccountNumber(this->m_ABAccount),
+-			AB_Account_GetAccountName(this->m_ABAccount)));
++			QString::fromUtf8(AB_Account_GetAccountNumber(this->m_ABAccount)),
++			QString::fromUtf8(AB_Account_GetAccountName(this->m_ABAccount))));
+ }
+ 
+ void abt_jobInfo::createJobInfoStringList_GetDatedTransfers(QStringList *strList) const
+ {
+ 	strList->append(QObject::tr("Holt alle noch nicht ausgeführten terminierten Überweisungen"));
+ 	strList->append(QObject::tr("für das Konto %1 (%2)").arg(
+-			AB_Account_GetAccountNumber(this->m_ABAccount),
+-			AB_Account_GetAccountName(this->m_ABAccount)));
++			QString::fromUtf8(AB_Account_GetAccountNumber(this->m_ABAccount)),
++			QString::fromUtf8(AB_Account_GetAccountName(this->m_ABAccount))));
+ }
+ 
+ void abt_jobInfo::createJobInfoStringList_GetStandingOrders(QStringList *strList) const
+ {
+ 	strList->append(QObject::tr("Holt alle bei der Bank hinterlegten Daueraufträge"));
+ 	strList->append(QObject::tr("für das Konto %1 (%2)").arg(
+-			AB_Account_GetAccountNumber(this->m_ABAccount),
+-			AB_Account_GetAccountName(this->m_ABAccount)));
++			QString::fromUtf8(AB_Account_GetAccountNumber(this->m_ABAccount)),
++			QString::fromUtf8(AB_Account_GetAccountName(this->m_ABAccount))));
+ 
+ }
+ 
+diff --git a/src/abt_jobinfo.h b/src/abt_jobinfo.h
+--- a/src/abt_jobinfo.h
++++ b/src/abt_jobinfo.h
+@@ -126,7 +126,7 @@
+ 	/** \brief gibt den enthaltenen AB_Job zurück (could be NULL!) */
+ 	AB_JOB *getJob() const;
+ 
+-	const abt_transaction* getTransaction() const { return this->m_trans; };
++	const abt_transaction* getTransaction() const { return this->m_trans; }
+ 
+ 	const AB_ACCOUNT* getAbAccount() const;
+ 
+@@ -135,7 +135,7 @@
+ 	int getAccountID() const;
+ };
+ 
+-Q_DECLARE_METATYPE(abt_jobInfo*);
+-Q_DECLARE_METATYPE(const abt_jobInfo*);
++Q_DECLARE_METATYPE(abt_jobInfo*)
++Q_DECLARE_METATYPE(const abt_jobInfo*)
+ 
+ #endif // ABT_JOBINFO_H
+diff --git a/src/abt_parser.cpp b/src/abt_parser.cpp
+--- a/src/abt_parser.cpp
++++ b/src/abt_parser.cpp
+@@ -1,5 +1,5 @@
+ /******************************************************************************
+- * Copyright (C) 2012 Patrick Wacker
++ * Copyright (C) 2012-2014 Patrick Wacker
+  * 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)
+@@ -32,7 +32,7 @@
+ 
+ #include "abt_parser.h"
+ 
+-#include <QtCore/QDebug>
++#include <QDebug>
+ 
+ #include "globalvars.h"
+ 
+@@ -46,6 +46,7 @@
+ #include <aqbanking/accstatus.h>
+ 
+ 
++//private static
+ /**
+  * When a AB_TRANSACTION is exported from the history by the AB_IMEXPORTER_CONTEXT,
+  * that is created at abt_history::getContext(), the AB_JOB_TYPE and AB_JOB_STATUS
+@@ -59,8 +60,8 @@
+  * The values will also be removed from the category field of the AB_TRANSACTION!
+  *
+  */
+-//private static
+-void abt_parser::getJobStatesFromTransaction(AB_TRANSACTION *t, AB_JOB_TYPE &jobType, AB_JOB_STATUS &jobStatus)
++void abt_parser::getJobStatesFromTransaction(AB_TRANSACTION *t, AB_JOB_TYPE *jobType,
++					     AB_JOB_STATUS *jobStatus)
+ {
+ 	const GWEN_STRINGLIST *gsl = AB_Transaction_GetCategory(t);
+ 	if (!gsl) return; //abort, no category exist
+@@ -70,14 +71,16 @@
+ 	GWEN_STRINGLIST *sl = GWEN_StringList_dup(gsl);
+ 	if (!sl) return; //abort
+ 
+-	for(unsigned int i=0; i<GWEN_StringList_Count(sl); i++) {
++	for (unsigned int i=0; i<GWEN_StringList_Count(sl); i++) {
+ 		QString s = QString::fromUtf8(GWEN_StringList_StringAt(sl, i));
+-		if (s.startsWith("JobType: ")) {
+-			jobType = AB_JOB_TYPE(s.right(s.length() - QString("JobType: ").length()).toInt());
++		QString search = QString::fromUtf8("JobType: ");
++		if (s.startsWith(search)) {
++			*jobType = AB_JOB_TYPE(s.right(s.length() - search.length()).toInt());
+ 			AB_Transaction_RemoveCategory(t, s.toUtf8());
+ 		}
+-		if (s.startsWith("JobStatus: ")) {
+-			jobStatus = AB_JOB_STATUS(s.right(s.length() - QString("JobStatus: ").length()).toInt());
++		search = QString::fromUtf8("JobStatus: ");
++		if (s.startsWith(search)) {
++			*jobStatus = AB_JOB_STATUS(s.right(s.length() - search.length()).toInt());
+ 			AB_Transaction_RemoveCategory(t, s.toUtf8());
+ 		}
+ 	}
+@@ -85,16 +88,669 @@
+ 	GWEN_StringList_free(sl);
+ }
+ 
++//private static
++/** \brief adds a new jobInfo object to the history.
++ *
++ * Gets the local used account from the transaction \a t and creates a new
++ * abt_jobInfo object.
++ *
++ * When the transaction \a t has a type and status set at the category list
++ * these values are used, otherwise the supplied default type \a defType and
++ * the default status \a defStatus is used to create the abt_jobInfo and
++ * add it to the history.
++ */
++void abt_parser::addJobInfoToHistory(abt_history *history,
++				     const aqb_Accounts *allAccounts,
++				     AB_TRANSACTION *t, AB_JOB_TYPE defType,
++				     AB_JOB_STATUS defStatus)
++{
++	QString t_kto = QString::fromUtf8(AB_Transaction_GetLocalAccountNumber(t));
++	QString t_blz = QString::fromUtf8(AB_Transaction_GetLocalBankCode(t));
++	const aqb_AccountInfo *acc = allAccounts->getAccount(t_kto, t_blz);
++	if (!acc) {
++		//no matching account
++		qWarning() << "No matching account found!"
++			   << "( KTO:" << t_kto
++			   << " - BLZ:" << t_blz << ")";
++		return; //cancel further processing
++	}
++
++	AB_ACCOUNT *a = acc->get_AB_ACCOUNT();
++
++	//default values for a dated transfer
++	AB_JOB_TYPE jtype = defType;
++	AB_JOB_STATUS jstatus = defStatus;
++
++	//get the jobType and jobStatus from the category field of the transaction.
++	abt_parser::getJobStatesFromTransaction(t, &jtype, &jstatus);
++
++	abt_jobInfo *ji = new abt_jobInfo(jtype, jstatus, t, a);
++
++	history->add(ji);
++}
++
++//private static
++/** \brief parses the messages of the supplied context.
++ *
++ * Parses all messages that are in the supplied context.
++ *
++ * At the moment these values were not stored nor handled by abtransfers at
++ * all! They are only printed through the qDebug function of Qt.
++ *
++ * \returns the count of messages that could be parsed.
++ */
++int abt_parser::parse_ctx_messages(AB_IMEXPORTER_CONTEXT *iec)
++{
++	int cnt = 0;
++	const char *logmsg = "PARSER - Messages: ";
++	const AB_MESSAGE *msg;
++	QString tmp;
++
++	msg = AB_ImExporterContext_GetFirstMessage(iec);
++	while (msg) {
++
++		/** \todo Messages should be stored and handled!
++		 *
++		 * At the moment they are only printed as debug values.
++		 */
++
++#if DEBUG_ABTPARSER
++		QDate date = abt_conv::GwenTimeToQDate(AB_Message_GetDateReceived(msg));
++		tmp = QString("Date:\t%1").arg(date.toString(Qt::DefaultLocaleLongDate));
++		qDebug() << logmsg << tmp;
++
++		tmp = QString("Subject:\t%1").arg(AB_Message_GetSubject(msg));
++		qDebug() << logmsg << tmp;
++
++		tmp = QString("Text:\t%1").arg(AB_Message_GetText(msg));
++		qDebug() << logmsg << tmp;
++
++		int aid = AB_Message_GetAccountId(msg);
++		int uid = AB_Message_GetUserId(msg);
++		tmp = QString("account id: %1  -  user id: %2").arg(aid, uid);
++		qDebug() << logmsg << tmp;
++#endif
++
++		msg = AB_ImExporterContext_GetNextMessage(iec);
++		cnt++;
++	}
++
++	tmp = QString::fromUtf8("Count: %1").arg(cnt);
++	qDebug() << logmsg << tmp;
++
++	return cnt;
++}
++
++//private static
++/** \brief parses the securities of the supplied context.
++ *
++ * Parses all securities that are in the supplied context.
++ *
++ * At the moment these values were not stored nor handled by abtransfers at
++ * all! They are only printed as debug messages (if enabled).
++ *
++ * \returns the count of securities that could be parsed.
++ */
++int abt_parser::parse_ctx_securities(AB_IMEXPORTER_CONTEXT *iec)
++{
++	const char *logmsg = "PARSER - Security: ";
++	const AB_SECURITY *sec;
++	QString tmp;
++	int cnt = 0;
++
++	sec = AB_ImExporterContext_GetFirstSecurity(iec);
++	while (sec) {
++
++		/** \todo Securities should be stored and handled!
++		 *
++		 * At the moment they are only printed as debug values.
++		 */
++
++#if DEBUG_ABTPARSER
++		const AB_VALUE *v;
++
++		tmp = QString("Name:\t%1").arg(AB_Security_GetName(sec));
++		qDebug() << logmsg << tmp;
++
++		v = AB_Security_GetUnitPriceValue(sec);
++		tmp = QString("UnitPriceValue:\t%1").arg(AB_Value_GetValueAsDouble(v));
++		qDebug() << logmsg << tmp;
++#endif
++
++		sec = AB_ImExporterContext_GetNextSecurity(iec);
++		cnt++;
++	}
++
++	tmp = QString::fromUtf8("Count: %1").arg(cnt);
++	qDebug() << logmsg << tmp;
++
++	return cnt;
++}
++
++//private static
++/** \brief parses all account infos of the supplied context \a iec. */
++int abt_parser::parse_ctx_accountInfos(AB_IMEXPORTER_CONTEXT *iec,
++				       const aqb_Accounts *allAccounts,
++				       abt_history *history /* = NULL */)
++{
++	AB_IMEXPORTER_ACCOUNTINFO *ai;
++	const char *logmsg = "PARSER - Acc-Info: ";
++	int cnt = 0;
++	aqb_AccountInfo *acc;
++	abt_history *parseHistory = NULL;
++
++	ai = AB_ImExporterContext_GetFirstAccountInfo(iec);
++	while (ai) {
++		QString accnr = QString::fromUtf8(AB_ImExporterAccountInfo_GetAccountNumber(ai));
++		QString blz = QString::fromUtf8(AB_ImExporterAccountInfo_GetBankCode(ai));
++		QString iban = QString::fromUtf8(AB_ImExporterAccountInfo_GetIban(ai));
++		QString bic = QString::fromUtf8(AB_ImExporterAccountInfo_GetBic(ai));
++		QString owner = QString::fromUtf8(AB_ImExporterAccountInfo_GetOwner(ai));
++		QString name = QString::fromUtf8(AB_ImExporterAccountInfo_GetAccountName(ai));
++		QString id = QString::fromUtf8("%1").arg(AB_ImExporterAccountInfo_GetAccountId(ai));
++
++		//check if we parse data for the "history account"
++		if (history && (accnr == QString::fromUtf8("0000000000")) &&
++		    (blz == QString::fromUtf8("00000000")) &&
++		    (owner == QString::fromUtf8("AB-Transfers"))) {
++			//we should parse data for the history!
++			acc = NULL;
++			parseHistory = history;
++		} else {
++			parseHistory = NULL;
++			//get the internaly used account object (null if not found)
++			acc = allAccounts->getAccount(accnr, blz, owner, name);
++
++			if (!acc) {
++				qWarning() << logmsg << "No account found! Import for: "
++						     << "AccNr:" << accnr
++						     << "BLZ:" << blz
++						     << "( IBAN: " << iban
++						     << "/ BIC: " << bic << ")"
++						     << "Name:" << name
++						     << "Owner:" << owner;
++				//next account
++				ai = AB_ImExporterContext_GetNextAccountInfo(iec);
++				continue;
++			}
++		}
++
++		QString tmp = QString::fromUtf8(
++				"%1 (%3) [%2] Owner: %4 ID: %5 (IBAN: %6 BIC: %7)")
++			      .arg(accnr, blz, name, owner, id, iban, bic);
++		qDebug() << logmsg << tmp;
++
++		if (parseHistory) {
++			//only parse supported account infos
++			abt_parser::parse_ctx_ai_datedTransfers(ai, acc, parseHistory, allAccounts);
++			abt_parser::parse_ctx_ai_standingOrders(ai, acc, parseHistory, allAccounts);
++			abt_parser::parse_ctx_ai_transfers(ai, acc, parseHistory, allAccounts);
++		} else {
++			//parse all account infos
++			abt_parser::parse_ctx_ai_status(ai, acc);
++			abt_parser::parse_ctx_ai_datedTransfers(ai, acc);
++			abt_parser::parse_ctx_ai_notedTransactions(ai, acc);
++			abt_parser::parse_ctx_ai_standingOrders(ai, acc);
++			abt_parser::parse_ctx_ai_transactions(ai, acc);
++			abt_parser::parse_ctx_ai_transfers(ai, acc);
++		}
++
++		//next account
++		ai = AB_ImExporterContext_GetNextAccountInfo(iec);
++		cnt++;
++	}
++
++	return cnt;
++}
++
++//private static
++/** \brief parses all account status of the supplied account info \a ai.
++ *
++ * Includes the bank line, noted balance, booked balance, disposable and
++ * disposed values.
++ *
++ * These values are set at the supplied account \a acc.
++ *
++ * (The account status is not saved at the history, so there is no need to
++ *  to add it to the definition)
++ *
++ * \returns the status counts at the account info.
++ */
++int abt_parser::parse_ctx_ai_status(AB_IMEXPORTER_ACCOUNTINFO *ai,
++				    aqb_AccountInfo *acc)
++{
++	AB_ACCOUNT_STATUS *as;
++	const char *logmsg = "PARSER - AccStats: ";
++	int cnt = 0;
++	QString tmp;
++
++	as = AB_ImExporterAccountInfo_GetFirstAccountStatus(ai);
++	while (as) {
++		acc->setAccountStatus(as); //save the account state
++
++#if DEBUG_ABTPARSER
++		const AB_BALANCE *b;
++		const AB_VALUE *v;
++
++		QDate date = abt_conv::GwenTimeToQDate(AB_AccountStatus_GetTime(as));
++		tmp = QString("Time:\t\t%1").arg(date.toString(Qt::DefaultLocaleLongDate));
++		qDebug() << logmsg << tmp;
++
++		v = AB_AccountStatus_GetBankLine(as);
++		if (v) {
++			tmp = QString("BankLine:\t%1").arg(
++				      AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++			qDebug() << logmsg << tmp;
++		}
++
++		b = AB_AccountStatus_GetNotedBalance(as);
++		if (b) {
++			v = AB_Balance_GetValue(b);
++			if (v) {
++				tmp = QString("NotedBalance:\t%1").arg(
++					      AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++				qDebug() << logmsg << tmp;
++			}
++		}
++
++		b = AB_AccountStatus_GetBookedBalance(as);
++		if (b) {
++			v = AB_Balance_GetValue(b);
++			if (v) {
++				tmp = QString("BookedBalance:\t%1").arg(
++					      AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++				qDebug() << logmsg << tmp;
++			}
++		}
++
++		v = AB_AccountStatus_GetDisposable(as);
++		if (v) {
++			tmp = QString("Disposable:\t%1").arg(
++				      AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++			qDebug() << logmsg << tmp;
++		}
++
++		v = AB_AccountStatus_GetDisposed(as);
++		if (v) {
++			tmp = QString("Disposed:\t%1").arg(
++				      AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++			qDebug() << logmsg << tmp;
++		}
++#endif
++
++		as = AB_ImExporterAccountInfo_GetNextAccountStatus(ai);
++		cnt++;
++	}
++
++	tmp = QString::fromUtf8("Count: %1").arg(cnt);
++	qDebug() << logmsg << tmp;
++
++	return cnt;
++}
++
++//private static
++/** \brief parses all dated transfers of the supplied account info \a ai.
++ *
++ * Depending of the dated transfer state, the found dated transfers are added
++ * or removed form the supplied account \a acc.
++ *
++ * If \a history is supplied != NULL, it is assumed that the parsed data should
++ * be added to the history (no further checks are done!)
++ *
++ * \returns the count of dated transfers found at the account info.
++ */
++int abt_parser::parse_ctx_ai_datedTransfers(AB_IMEXPORTER_ACCOUNTINFO *ai,
++					    aqb_AccountInfo *acc,
++					    abt_history *history /* = NULL */,
++					    const aqb_Accounts *allAccounts /* = NULL */)
++{
++	AB_TRANSACTION *t;
++	const char *logmsg = "PARSER - DatedTra: ";
++	QString tmp;
++
++	int cnt = AB_ImExporterAccountInfo_GetDatedTransferCount(ai);
++
++	tmp = QString::fromUtf8("Count: %1").arg(cnt);
++	qDebug() << logmsg << tmp;
++
++	t = AB_ImExporterAccountInfo_GetFirstDatedTransfer(ai);
++	while (t) {
++		if (history) { //parse history data
++			Q_ASSERT(allAccounts);
++			abt_parser::addJobInfoToHistory(history, allAccounts, t,
++							AB_Job_TypeCreateDatedTransfer,
++							AB_Job_StatusFinished);
++		} else { //parse received data
++			//add or remove the dated transfers to the accuont,
++			//depending on its supplied state.
++			abt_datedTransferInfo *dt = new abt_datedTransferInfo(t);
++			if (dt->getTransaction()->getStatus() == AB_Transaction_StatusRevoked) {
++				//accounts only have existing dated transfers
++				//(the history possible show other values too)
++				acc->removeDatedTransfer(dt);
++				delete dt; //no longer used
++			} else {
++				//the account gets the owner of the dt!
++				acc->addDatedTransfer(dt);
++			}
++		}
++
++#if DEBUG_ABTPARSER
++		const GWEN_STRINGLIST *sl;
++		QStringList strList;
++
++		sl = AB_Transaction_GetPurpose(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("Purpose:\t\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		const AB_VALUE *v = AB_Transaction_GetValue(t);
++		if (v) {
++			tmp = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
++		} else {
++			tmp = QString("Value:\t\tNOT SET!");
++		}
++		qDebug() << logmsg << tmp;
++
++		sl = AB_Transaction_GetRemoteName(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("RemoteName:\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
++		tmp = QString("Status:\t\t%1 (%2)").arg(state).arg(
++				AB_Transaction_Status_toString(state));
++		qDebug() << logmsg << tmp;
++#endif
++
++		t = AB_ImExporterAccountInfo_GetNextDatedTransfer(ai);
++	}
++
++	return cnt;
++}
++
++//private static
++/** \brief parses all noted transactions of the supplied account info \a ai.
++ *
++ * Only prints the values at the debug output (if enabled). If the transactions
++ * should be shown and handled by abtransfers then this must be implemented.
++ *
++ * (The noted transactions are not saved at the history, so there is no need to
++ *  to add it to the definition)
++ *
++ * \returns the count of noted transactions found at the account info.
++ */
++int abt_parser::parse_ctx_ai_notedTransactions(AB_IMEXPORTER_ACCOUNTINFO *ai,
++					       aqb_AccountInfo* /* acc */)
++{
++	AB_TRANSACTION *t;
++	const char *logmsg = "PARSER - NotedTra: ";
++	QString tmp;
++
++	int cnt = AB_ImExporterAccountInfo_GetNotedTransactionCount(ai);
++
++	tmp = QString::fromUtf8("Count: %1").arg(cnt);
++	qDebug() << logmsg << tmp;
++
++	t = AB_ImExporterAccountInfo_GetFirstNotedTransaction(ai);
++	while (t) {
++
++		/** \todo implement the setting at the account if it should
++		 *        be supported.
++		 */
++
++#if DEBUG_ABTPARSER
++		const GWEN_STRINGLIST *sl;
++		QStringList strList;
++
++		sl = AB_Transaction_GetPurpose(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("Purpose:\t\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		const AB_VALUE *v = AB_Transaction_GetValue(t);
++		tmp = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
++		qDebug() << logmsg << tmp;
++
++		sl = AB_Transaction_GetRemoteName(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("RemoteName:\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
++		tmp = QString("Status:\t\t%1 (%2)").arg(state).arg(
++				AB_Transaction_Status_toString(state));
++		qDebug() << logmsg << tmp;
++#endif
++
++		t = AB_ImExporterAccountInfo_GetNextNotedTransaction(ai);
++	}
++
++	return cnt;
++}
++
++//private static
++/** \brief parses all standing orders of the supplied account info \a ai.
++ *
++ * Depending of the standing order state, the found standing orders are added
++ * or removed form the supplied account \a acc.
++ *
++ * If \a history is supplied != NULL, it is assumed that the parsed data should
++ * be added to the history (no further checks are done!)
++ *
++ * \returns the count of standing orders found at the account info.
++ */
++int abt_parser::parse_ctx_ai_standingOrders(AB_IMEXPORTER_ACCOUNTINFO *ai,
++					    aqb_AccountInfo *acc,
++					    abt_history *history /* = NULL */,
++					    const aqb_Accounts *allAccounts /* = NULL */)
++{
++	AB_TRANSACTION *t;
++	const char *logmsg = "PARSER - Standing: ";
++	QString tmp;
++
++	int cnt = AB_ImExporterAccountInfo_GetStandingOrderCount(ai);
++
++	tmp = QString::fromUtf8("Count: %1").arg(cnt);
++	qDebug() << logmsg << tmp;
++
++	t = AB_ImExporterAccountInfo_GetFirstStandingOrder(ai);
++	while (t) {
++		if (history) { //parse for the history
++			Q_ASSERT(allAccounts);
++			abt_parser::addJobInfoToHistory(history, allAccounts, t,
++							AB_Job_TypeCreateStandingOrder,
++							AB_Job_StatusFinished);
++		} else {
++			//add or remove the standing order to the accuont, depending
++			//on its supplied state.
++			abt_standingOrderInfo *so = new abt_standingOrderInfo(t);
++			if (so->getTransaction()->getStatus() == AB_Transaction_StatusRevoked) {
++				//accounts only have existing standing orders
++				//(the history possible show other values too)
++				acc->removeStandingOrder(so);
++				delete so; //no longer used
++			} else {
++				//the account gets the owner of the so and deletes it!
++				acc->addStandingOrder(so);
++			}
++		}
++
++#if DEBUG_ABTPARSER
++		const GWEN_STRINGLIST *sl;
++		QStringList strList;
++
++		sl = AB_Transaction_GetPurpose(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("Purpose:\t\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		const AB_VALUE *v = AB_Transaction_GetValue(t);
++		tmp = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
++		qDebug() << logmsg << tmp;
++
++		sl = AB_Transaction_GetRemoteName(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("RemoteName:\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
++		tmp = QString("Status:\t\t%1 (%2)").arg(state).arg(
++				AB_Transaction_Status_toString(state));
++		qDebug() << logmsg << tmp;
++#endif
++
++		t = AB_ImExporterAccountInfo_GetNextStandingOrder(ai);
++	}
++
++	return cnt;
++}
++
++//private static
++/** \brief parses all transactions of the supplied account info \a ai.
++ *
++ * Only prints the values at the debug output (if enabled). If the transactions
++ * should be shown and handled by abtransfers then this must be implemented.
++ *
++ * (The transactions are not saved at the history, so there is no need to
++ *  to add it to the definition)
++ *
++ * \returns the count of transactions found at the account info.
++ */
++int abt_parser::parse_ctx_ai_transactions(AB_IMEXPORTER_ACCOUNTINFO *ai,
++					  aqb_AccountInfo* /* acc */)
++{
++	AB_TRANSACTION *t;
++	const char *logmsg = "PARSER - Transact: ";
++	QString tmp;
++
++	int cnt = AB_ImExporterAccountInfo_GetTransactionCount(ai);
++	tmp = QString::fromUtf8("Count: %1").arg(cnt);
++	qDebug() << logmsg << tmp;
++
++	t = AB_ImExporterAccountInfo_GetFirstTransaction(ai);
++	while (t) {
++
++		/** \todo implement the setting at the account if it should
++		 *        be supported.
++		 */
++
++#if DEBUG_ABTPARSER
++		const GWEN_STRINGLIST *sl;
++		QStringList strList;
++
++		sl = AB_Transaction_GetPurpose(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("Purpose:\t\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		const AB_VALUE *v = AB_Transaction_GetValue(t);
++		tmp = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
++		qDebug() << logmsg << tmp;
++
++		sl = AB_Transaction_GetRemoteName(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("RemoteName:\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
++		tmp = QString("Status:\t\t%1 (%2)").arg(state).arg(
++				AB_Transaction_Status_toString(state));
++		qDebug() << logmsg << tmp;
++#endif
++
++		t = AB_ImExporterAccountInfo_GetNextTransaction(ai);
++	}
++
++	return cnt;
++}
++
++//private static
++/** \brief parses all transfers of the supplied account info \a ai.
++ *
++ * Transfers are only shown at the history!
++ *
++ * If \a history is supplied != NULL, it is assumed that the parsed data should
++ * be added to the history (no further checks are done!)
++ *
++ * With no \a history supplied the values are only printed as debug output
++ * (if enabled). If the transfers should be shown and handled by abtransfers
++ * then this must be implemented.
++ *
++ * \returns the count of transfers found at the account info.
++ */
++int abt_parser::parse_ctx_ai_transfers(AB_IMEXPORTER_ACCOUNTINFO *ai,
++				       aqb_AccountInfo* /* acc */,
++				       abt_history *history /* = NULL */,
++				       const aqb_Accounts *allAccounts /* = NULL */)
++{
++	AB_TRANSACTION *t;
++	const char *logmsg = "PARSER - Transfer: ";
++	QString tmp;
++
++	int cnt = AB_ImExporterAccountInfo_GetTransferCount(ai);
++
++	tmp = QString::fromUtf8("Count: %1").arg(cnt);
++	qDebug() << logmsg << tmp;
++
++	t = AB_ImExporterAccountInfo_GetFirstTransfer(ai);
++	while (t) {
++		if (history) { //parse for history
++			Q_ASSERT(allAccounts);
++			abt_parser::addJobInfoToHistory(history, allAccounts, t,
++							AB_Job_TypeTransfer,
++							AB_Job_StatusFinished);
++		} else {
++			/** \todo implement the setting at the account if
++			 *        it should be supported.
++			 */
++		}
++
++#if DEBUG_ABTPARSER
++		const GWEN_STRINGLIST *sl;
++		QStringList strList;
++
++		sl = AB_Transaction_GetPurpose(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("Purpose:\t\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		const AB_VALUE *v = AB_Transaction_GetValue(t);
++		tmp = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
++		qDebug() << logmsg << tmp;
++
++		sl = AB_Transaction_GetRemoteName(t);
++		strList = abt_conv::GwenStringListToQStringList(sl);
++		tmp = QString("RemoteName:\t%1").arg(strList.join(" - "));
++		qDebug() << logmsg << tmp;
++
++		AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
++		tmp = QString("Status:\t\t%1 (%2)").arg(state).arg(
++				AB_Transaction_Status_toString(state));
++		qDebug() << logmsg << tmp;
++#endif
++
++		t = AB_ImExporterAccountInfo_GetNextTransfer(ai);
++	}
++
++	return cnt;
++}
++
++//constructor
++/** \brief default constructor, does nothing
++ *
++ * all needed functions are static and an instantiation of the class is not
++ * needed yet.
++ */
+ abt_parser::abt_parser()
+ {
+ }
+ 
+ 
+-/**
+-  * Der zurückgegebene Context muss über AB_ImExporterContext_free() wieder
+-  * freigegeben werden!
+-  */
+ //static
++/** The caller is responsible for freeing the returned context (e.g. with
++ * AB_ImExporterContext_free()).
++ */
+ AB_IMEXPORTER_CONTEXT *abt_parser::load_local_ctx(const QString &filename,
+ 						  const QString &importerName,
+ 						  const QString &profileName)
+@@ -108,7 +764,7 @@
+ 					 NULL,
+ 					 filename.toUtf8());
+ 
+-	//eventuelle "Lücken" versuchen zu füllen (z.B. Account ID)
++	//try to fill gaps (e.g. the account id)
+ 	int ret;
+ 	ret = AB_Banking_FillGapsInImExporterContext(banking->getAqBanking(),
+ 						     ctx);
+@@ -118,8 +774,6 @@
+ 			   << "(this is not an serious error)";
+ 	}
+ 
+-
+-
+ 	return ctx;
+ }
+ 
+@@ -149,28 +803,28 @@
+ 				      filename.toUtf8());
+ 
+ 	if (ret) {
+-		//Fehler aufgetreten!
++		//error occurred!
+ 		qWarning() << Q_FUNC_INFO << "ERROR:" << ret
+ 			   << " -- something went wrong on storing the ctx to file";
+ 	}
+ 
+ }
+ 
+-
++//static
+ /**
+-  * Wenn keine Accounts übergeben wurden wird NULL zurück gegeben!
++  * The caller is responsible to free the returned context (e.g. trough
++  * AB_ImExporterContext_free() )
+   *
+-  * Der zurückgegebene Context muss über AB_ImExporterContext_free() wieder
+-  * freigegeben werden!
++  * \returns an AB_IMEXPORTER_CONTEXT with all values from \a allAccounts
++  * \returns NULL if \a allAccounts is not valid!
+   */
+-//static
+ AB_IMEXPORTER_CONTEXT *abt_parser::create_ctx_from(const aqb_Accounts *allAccounts)
+ {
+-	if (!allAccounts) return NULL; //Abbruch, keine Accounts vorhanden
++	if (!allAccounts) return NULL; //no accounts, cant work
+ 
+ 	AB_IMEXPORTER_CONTEXT *ctx = AB_ImExporterContext_new();
+ 
+-	//wir gehen alle Objecte durch und holen uns den jeweiligen IE-Context
++	//go trough all known accounts and add the IEC to the returned one
+ 	QHashIterator<int, aqb_AccountInfo*> it(allAccounts->getAccountHash());
+ 	while (it.hasNext()) {
+ 		it.next();
+@@ -181,34 +835,32 @@
+ 	return ctx;
+ }
+ 
++//static
+ /**
+- * parses the supplied AB_IMEXPORTER_CONTEXT \a iec and adds the found
+- * transactions to the corresponding aqb_Accounts \a allAccounts.
++ * This is the main function that should be used to parse any data of the
++ * supplied context \a iec.
+  *
+- * This function should be used to parse the account data and the context which
+- * is returned from the bank.
++ * This context could be returned from the bank or the saved values of the
++ * history of abtransfers.
+  *
+- * (the parse_ctx() function wich also has an abt_history parameter should be
+- *  used so load the saved history transactions).
+- *
++ * If data for the history should be paresed the abt_history object must be
++ * supplied as \a history (default is NULL).
+  */
+-//static
+-void abt_parser::parse_ctx(AB_IMEXPORTER_CONTEXT *iec, aqb_Accounts *allAccounts)
++void abt_parser::parse_ctx(AB_IMEXPORTER_CONTEXT *iec, const aqb_Accounts *allAccounts,
++			   abt_history *history /* = NULL */)
+ {
+-	AB_IMEXPORTER_ACCOUNTINFO *ai;
+-	const AB_SECURITY *security;
+-	const AB_MESSAGE *msg;
+-	const AB_VALUE *v;
+-	const AB_BALANCE *b;
+-	QString logmsg;
+-	QString logmsg2;
+-	int cnt = 0;
+-	aqb_AccountInfo *acc;
++	if (!iec) {
++		//if no valid context is supplied we have nothing to do
++		return;
++	}
+ 
+-	//wenn kein gültiger context vorhanden ist brauchen wir auch nichts machen
+-	if (!iec) return;
++	if (!allAccounts) {
++		//we need the accounts to store the vales (even for the history
++		//import)
++		return;
++	}
+ 
+-	//eventuelle Lücken im Context füllen (ID, Bankname etc)
++	//fill possible gaps (e.g. bankname, account number etc)
+ 	int ret = AB_Banking_FillGapsInImExporterContext(banking->getAqBanking(),
+ 							 iec);
+ 	if (ret) {
+@@ -217,679 +869,11 @@
+ 			   << "(this is not an serious error)";
+ 	}
+ 
++	//messages and securities are not supported at the history, so there
++	//is no need to supply it to them (at the moment)
++	abt_parser::parse_ctx_messages(iec);
++	abt_parser::parse_ctx_securities(iec);
+ 
+-	/**********************************************************************/
+-	// Nachrichten
+-	/**********************************************************************/
+-	cnt = 0;
+-	logmsg = "PARSER - Messages: ";
+-
+-	msg = AB_ImExporterContext_GetFirstMessage(iec);
+-	while (msg) {
+-
+-		/** \todo Messages sollten noch gespeichert und angezeigt werden.
+-			  Momentan werden die Daten nur als Debug-Meldung
+-			  ausgegeben.
+-		*/
+-
+-		logmsg2 = QString("Empfangsdatum:\t%1").arg(
+-				abt_conv::GwenTimeToQDate(AB_Message_GetDateReceived(msg))
+-				.toString(Qt::DefaultLocaleLongDate));
+-		qDebug() << logmsg << logmsg2;
+-		logmsg2 = QString("Betreff:\t%1").arg(AB_Message_GetSubject(msg));
+-		qDebug() << logmsg << logmsg2;
+-		logmsg2 = QString("Text:\t%1").arg(AB_Message_GetText(msg));
+-		qDebug() << logmsg << logmsg2;
+-		logmsg2 = QString("AccountID: %1  -  UserID: %2").arg(
+-				  AB_Message_GetAccountId(msg),
+-				  AB_Message_GetUserId(msg));
+-		qDebug() << logmsg << logmsg2;
+-
+-		msg = AB_ImExporterContext_GetNextMessage(iec);
+-		cnt++;
+-	}
+-
+-	logmsg2 = QString("Count: %1").arg(cnt);
+-	qDebug() << logmsg << logmsg2;
+-
+-
+-	/**********************************************************************/
+-	// Securitys
+-	/**********************************************************************/
+-	logmsg = "PARSER - Security: ";
+-	cnt = 0;
+-
+-	security = AB_ImExporterContext_GetFirstSecurity(iec);
+-	while (security) {
+-
+-		/** \todo Securitys sollten noch gespeichert und angezeigt werden.
+-			  Momentan werden die Daten nur als Debug-Meldung
+-			  ausgegeben.
+-		*/
+-
+-		logmsg2 = QString("Name:\t%1").arg(AB_Security_GetName(security));
+-		qDebug() << logmsg << logmsg2;
+-
+-		v = AB_Security_GetUnitPriceValue(security);
+-		logmsg2 = QString("UnitPriceValue:\t%1").arg(AB_Value_GetValueAsDouble(v));
+-		qDebug() << logmsg << logmsg2;
+-
+-		security = AB_ImExporterContext_GetNextSecurity(iec);
+-		cnt++;
+-	}
+-
+-	logmsg2 = QString("Count: %1").arg(cnt);
+-	qDebug() << logmsg << logmsg2;
+-
+-
+-	ai=AB_ImExporterContext_GetFirstAccountInfo(iec);
+-	while(ai) {
+-		logmsg = "PARSER - Acc-Info: ";
+-
+-		//Jetzt folgen Daten für verschiedene Accounts
+-		QString KtoNr = QString::fromUtf8(AB_ImExporterAccountInfo_GetAccountNumber(ai));
+-		QString BLZ = QString::fromUtf8(AB_ImExporterAccountInfo_GetBankCode(ai));
+-		QString Owner = QString::fromUtf8(AB_ImExporterAccountInfo_GetOwner(ai));
+-		QString Name = QString::fromUtf8(AB_ImExporterAccountInfo_GetAccountName(ai));
+-		QString ID = QString("%1").arg(AB_ImExporterAccountInfo_GetAccountId(ai));
+-
+-		//das interne accountInfo-Object besorgen (gibt NULL zurück wenn
+-		//keins gefunden wurde)
+-		acc = allAccounts->getAccount(KtoNr, BLZ, Owner, Name);
+-
+-		//wenn kein lokaler account gefunden wurde können diesem auch
+-		//keine Daten zugewiesen werden
+-		if (!acc) {
+-			qWarning() << logmsg << "Keinen Account gefunden! Import für: "
+-					     << "KtoNr:" << KtoNr
+-					     << "BLZ:" << BLZ
+-					     << "Name:" << Name
+-					     << "Besitzer:" << Owner;
+-			//next account
+-			ai=AB_ImExporterContext_GetNextAccountInfo(iec);
+-			continue;
+-		}
+-
+-		logmsg2 = QString("%1 (%3) [%2] Owner: %4 ID: %5").arg(
+-				   KtoNr, BLZ, Name, Owner, ID);
+-		qDebug() << logmsg << logmsg2;
+-
+-
+-		/**********************************************************************/
+-		// Kontostände
+-		/**********************************************************************/
+-		AB_ACCOUNT_STATUS *as;
+-		logmsg = "PARSER - AccStats: ";
+-		cnt = 0;
+-
+-		as = AB_ImExporterAccountInfo_GetFirstAccountStatus(ai);
+-		while (as) {
+-			QDate date = abt_conv::GwenTimeToQDate(AB_AccountStatus_GetTime(as));
+-			logmsg2 = QString("Time:\t\t%1").arg(date.toString(Qt::DefaultLocaleLongDate));
+-
+-			//Den neuen Account_Status im entsprechenden Object setzen
+-			acc->setAccountStatus(as);
+-
+-			qDebug() << logmsg << logmsg2;
+-
+-			v = AB_AccountStatus_GetBankLine(as);
+-			if (v) {
+-				logmsg2 = QString("BankLine:\t%1").arg(
+-						AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+-				qDebug() << logmsg << logmsg2;
+-			}
+-
+-			b = AB_AccountStatus_GetNotedBalance(as);
+-			if (b) {
+-				v = AB_Balance_GetValue(b);
+-				if (v) {
+-					logmsg2 = QString("NotedBalance:\t%1").arg(
+-							AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+-					qDebug() << logmsg << logmsg2;
+-				}
+-			}
+-
+-			b = AB_AccountStatus_GetBookedBalance(as);
+-			if (b) {
+-				v = AB_Balance_GetValue(b);
+-				if (v) {
+-					logmsg2 = QString("BookedBalance:\t%1").arg(
+-							AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+-					qDebug() << logmsg << logmsg2;
+-				}
+-			}
+-
+-			v = AB_AccountStatus_GetDisposable(as);
+-			if (v) {
+-				logmsg2 = QString("Disposable:\t%1").arg(
+-						AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+-				qDebug() << logmsg << logmsg2;
+-			}
+-
+-			v = AB_AccountStatus_GetDisposed(as);
+-			if (v) {
+-				logmsg2 = QString("Disposed:\t%1").arg(
+-						AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+-				qDebug() << logmsg << logmsg2;
+-			}
+-
+-			as = AB_ImExporterAccountInfo_GetNextAccountStatus(ai);
+-			cnt++;
+-		}
+-
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-
+-
+-		/**********************************************************************/
+-		// Terminüberweisungen
+-		/**********************************************************************/
+-		AB_TRANSACTION *t;
+-		logmsg = "PARSER - DatedTra: ";
+-		QStringList strList;
+-		const GWEN_STRINGLIST *l;
+-
+-		cnt = AB_ImExporterAccountInfo_GetDatedTransferCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstDatedTransfer(ai);
+-		while (t) {
+-			//die terminierte Überweisung dem Account zufügen
+-			//oder evt. auch löschen. Abhängig vom Status.
+-			abt_datedTransferInfo *dt = new abt_datedTransferInfo(t);
+-			if (dt->getTransaction()->getStatus() == AB_Transaction_StatusRevoked) {
+-				//Dem account werden nur gültige Terminüberweisungen
+-				//zugeordnet, gelöschte erscheinen nur in der History
+-				acc->removeDatedTransfer(dt);
+-				delete dt; //dt wird nicht länger benötigt
+-			} else {
+-				acc->addDatedTransfer(dt);
+-				//dt wird durch den Account wieder gelöscht
+-			}
+-
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("Purpose:\t\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			v = AB_Transaction_GetValue(t);
+-			if (v) {
+-				logmsg2 = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
+-
+-			} else {
+-				logmsg2 = QString("Value:\t\tNOT SET!");
+-			}
+-			qDebug() << logmsg << logmsg2;
+-
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("RemoteName:\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
+-			logmsg2 = QString("Status:\t\t%1 (%2)").arg(state).arg(
+-					AB_Transaction_Status_toString(state));
+-			qDebug() << logmsg << logmsg2;
+-
+-			t = AB_ImExporterAccountInfo_GetNextDatedTransfer(ai);
+-		}
+-
+-
+-
+-		/**********************************************************************/
+-		// geplante Buchungen
+-		/**********************************************************************/
+-		logmsg = "PARSER - NotedTra: ";
+-		strList.clear();
+-		const AB_VALUE *v;
+-
+-		cnt = AB_ImExporterAccountInfo_GetNotedTransactionCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstNotedTransaction(ai);
+-		while (t) {
+-
+-			/** \todo Wenn auch Transactionen angezeigt werden sollen
+-				  muss dies noch implementiert werden.
+-			*/
+-
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("Purpose:\t\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			v = AB_Transaction_GetValue(t);
+-			logmsg2 = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
+-			qDebug() << logmsg << logmsg2;
+-
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("RemoteName:\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
+-			logmsg2 = QString("Status:\t\t%1 (%2)").arg(state).arg(
+-					AB_Transaction_Status_toString(state));
+-			qDebug() << logmsg << logmsg2;
+-
+-			t = AB_ImExporterAccountInfo_GetNextNotedTransaction(ai);
+-		}
+-
+-
+-		/**********************************************************************/
+-		// Daueraufträge
+-		/**********************************************************************/
+-		logmsg = "PARSER - Standing: ";
+-		strList.clear();
+-
+-		cnt = AB_ImExporterAccountInfo_GetStandingOrderCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstStandingOrder(ai);
+-		while (t) {
+-			//den Dauerauftrag dem Account zufügen
+-			//oder evt. auch löschen. Abhängig vom Status.
+-			abt_standingOrderInfo *so = new abt_standingOrderInfo(t);
+-			if (so->getTransaction()->getStatus() == AB_Transaction_StatusRevoked) {
+-				//Dem account werden nur gültige Daueraufträge
+-				//zugeordnet, gelöschte erscheinen nur in der History
+-				acc->removeStandingOrder(so);
+-				delete so; //so wird nicht länger benötigt
+-			} else {
+-				acc->addStandingOrder(so);
+-				//so wird durch den Account wieder gelöscht
+-			}
+-
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("Purpose:\t\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			v = AB_Transaction_GetValue(t);
+-			logmsg2 = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
+-			qDebug() << logmsg << logmsg2;
+-
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("RemoteName:\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
+-			logmsg2 = QString("Status:\t\t%1 (%2)").arg(state).arg(
+-					AB_Transaction_Status_toString(state));
+-			qDebug() << logmsg << logmsg2;
+-
+-			t = AB_ImExporterAccountInfo_GetNextStandingOrder(ai);
+-		}
+-
+-
+-		/**********************************************************************/
+-		// Buchungen
+-		/**********************************************************************/
+-		logmsg = "PARSER - Transact: ";
+-		strList.clear();;
+-
+-		cnt = AB_ImExporterAccountInfo_GetTransactionCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstTransaction(ai);
+-		while (t) {
+-
+-			/** \todo Wenn auch Transactionen angezeigt werden sollen
+-				  muss dies noch implementiert werden.
+-			*/
+-
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("Purpose:\t\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			v = AB_Transaction_GetValue(t);
+-			logmsg2 = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
+-			qDebug() << logmsg << logmsg2;
+-
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("RemoteName:\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
+-			logmsg2 = QString("Status:\t\t%1 (%2)").arg(state).arg(
+-					AB_Transaction_Status_toString(state));
+-			qDebug() << logmsg << logmsg2;
+-
+-			t = AB_ImExporterAccountInfo_GetNextTransaction(ai);
+-		}
+-
+-
+-		/**********************************************************************/
+-		// Überweisungen
+-		/**********************************************************************/
+-		logmsg = "PARSER - Transfer: ";
+-		strList.clear();
+-
+-		cnt = AB_ImExporterAccountInfo_GetTransferCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstTransfer(ai);
+-		while (t) {
+-
+-			/** \todo Wenn auch Transactionen angezeigt werden sollen
+-				  muss dies noch implementiert werden.
+-			*/
+-
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("Purpose:\t\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			v = AB_Transaction_GetValue(t);
+-			logmsg2 = QString("Value:\t\t%1").arg(AB_Value_GetValueAsDouble(v));
+-			qDebug() << logmsg << logmsg2;
+-
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2 = QString("RemoteName:\t%1").arg(strList.join(" - "));
+-			qDebug() << logmsg << logmsg2;
+-
+-			AB_TRANSACTION_STATUS state = AB_Transaction_GetStatus(t);
+-			logmsg2 = QString("Status:\t\t%1 (%2)").arg(state).arg(
+-					AB_Transaction_Status_toString(state));
+-			qDebug() << logmsg << logmsg2;
+-
+-
+-			t = AB_ImExporterAccountInfo_GetNextTransfer(ai);
+-		}
+-
+-		//next account
+-		ai=AB_ImExporterContext_GetNextAccountInfo(iec);
+-	} /* while ai */
+-
++	//parse all types of transfers for the accounts (or the history)
++	abt_parser::parse_ctx_accountInfos(iec, allAccounts, history);
+ }
+-
+-
+-/**
+- * parses the supplied AB_IMEXPORTER_CONTEXT \a iec and adds the found
+- * transactions as abt_jobinfo types in the supplied abt_history \a history.
+- *
+- */
+-//static
+-void abt_parser::parse_ctx(AB_IMEXPORTER_CONTEXT *iec,
+-			   const aqb_Accounts *allAccounts,
+-			   abt_history *history)
+-{
+-	AB_IMEXPORTER_ACCOUNTINFO *ai;
+-	const AB_SECURITY *security;
+-	const AB_MESSAGE *msg;
+-	QString logmsg;
+-	QString logmsg2;
+-	int cnt = 0;
+-
+-	//wenn kein gültiger context vorhanden ist brauchen wir auch nichts machen
+-	if (!iec) return;
+-
+-	//die history sollte natürlich auch existieren
+-	if (!history) return;
+-	if (!allAccounts) return;
+-
+-	/**********************************************************************/
+-	// Nachrichten
+-	/**********************************************************************/
+-	cnt = 0;
+-	logmsg = "PARSER HISTORY - Messages: ";
+-
+-	msg = AB_ImExporterContext_GetFirstMessage(iec);
+-	while (msg) {
+-		/** \todo Sollte implementiert werden wenn Nachrichten in der
+-			  History gepeichert werden oder angezeigt werden sollen
+-		*/
+-		msg = AB_ImExporterContext_GetNextMessage(iec);
+-		cnt++;
+-	}
+-
+-	logmsg2 = QString("Count: %1").arg(cnt);
+-	qDebug() << logmsg << logmsg2;
+-
+-
+-	/**********************************************************************/
+-	// Securitys
+-	/**********************************************************************/
+-	logmsg = "PARSER HISTORY - Security: ";
+-	cnt = 0;
+-
+-	security = AB_ImExporterContext_GetFirstSecurity(iec);
+-	while (security) {
+-		/** \todo Sollte implementiert werden wenn Securitys in der
+-			  History gepeichert werden oder angezeigt werden sollen
+-		*/
+-		//Must be implemented
+-		security = AB_ImExporterContext_GetNextSecurity(iec);
+-		cnt++;
+-	}
+-
+-	logmsg2 = QString("Count: %1").arg(cnt);
+-	qDebug() << logmsg << logmsg2;
+-
+-
+-	ai=AB_ImExporterContext_GetFirstAccountInfo(iec);
+-	while(ai) {
+-		logmsg = "PARSER HISTORY - Acc-Info: ";
+-
+-		//Jetzt folgen Daten für verschiedene Accounts
+-		QString KtoNr = QString::fromUtf8(AB_ImExporterAccountInfo_GetAccountNumber(ai));
+-		QString BLZ = QString::fromUtf8(AB_ImExporterAccountInfo_GetBankCode(ai));
+-		QString Owner = QString::fromUtf8(AB_ImExporterAccountInfo_GetOwner(ai));
+-		//der AccountName wird nicht importiert! Und über fillGaps kann
+-		//er auch nicht nachträglich gesetzt werden, da der Account nur
+-		//"virtuell" existiert.
+-
+-		//beim History account sollte nur einer mit vorgegebenen Daten
+-		//existieren!
+-		if (KtoNr != "0000000000" || BLZ != "00000000" ||
+-		    Owner != "AB-Transfers" ) {
+-			//Account ist fehlerhaft!
+-			qWarning() << logmsg << "History Account not correct! "
+-					     << "KtoNr:" << KtoNr
+-					     << "BLZ:" << BLZ
+-					     << "Owner:" << Owner;
+-			qWarning() << logmsg << "ABORTING HISTORY IMPORT";
+-			//perhaps the next account is correct, try it
+-			ai=AB_ImExporterContext_GetNextAccountInfo(iec);
+-			continue;
+-		}
+-
+-		logmsg2 = QString("%1 [%2] Owner: %3").arg(KtoNr, BLZ, Owner);
+-		qDebug() << logmsg << logmsg2;
+-
+-
+-		/**********************************************************************/
+-		// Salden
+-		/**********************************************************************/
+-		AB_ACCOUNT_STATUS *as;
+-		logmsg = "PARSER HISTORY - AccStats: ";
+-		cnt = 0;
+-
+-		as = AB_ImExporterAccountInfo_GetFirstAccountStatus(ai);
+-		while (as) {
+-			// The account states are not stored in the history!
+-			as = AB_ImExporterAccountInfo_GetNextAccountStatus(ai);
+-			cnt++;
+-		}
+-
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-
+-		/**********************************************************************/
+-		// Terminüberweisungen
+-		/**********************************************************************/
+-		AB_TRANSACTION *t;
+-		logmsg = "PARSER HISTORY - DatedTra: ";
+-		QStringList strList;
+-
+-		cnt = AB_ImExporterAccountInfo_GetDatedTransferCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstDatedTransfer(ai);
+-		while (t) {
+-			QString t_kto = AB_Transaction_GetLocalAccountNumber(t);
+-			QString t_blz = AB_Transaction_GetLocalBankCode(t);
+-			aqb_AccountInfo *acc = allAccounts->getAccount(t_kto, t_blz);
+-			if (!acc) {
+-				//keinen passenden Account gefunden, nächster
+-				qWarning() << logmsg << "No matching account found!"
+-						     << "( KTO:" << t_kto
+-						     << " - BLZ:" << t_blz << ")";
+-				t = AB_ImExporterAccountInfo_GetNextDatedTransfer(ai);
+-				continue;
+-			}
+-			AB_ACCOUNT *a = acc->get_AB_ACCOUNT();
+-
+-			//default values for a dated transfer
+-			AB_JOB_TYPE jtype = AB_Job_TypeCreateDatedTransfer;
+-			AB_JOB_STATUS jstatus = AB_Job_StatusFinished;
+-
+-			//get the jobType and jobStatus from the category field
+-			//of the saved transaction.
+-			getJobStatesFromTransaction(t, jtype, jstatus);
+-
+-			abt_jobInfo *ji = new abt_jobInfo(jtype, jstatus, t, a);
+-
+-			history->add(ji);
+-
+-			t = AB_ImExporterAccountInfo_GetNextDatedTransfer(ai);
+-		}
+-
+-
+-		/**********************************************************************/
+-		// geplante Buchungen
+-		/**********************************************************************/
+-		logmsg = "PARSER HISTORY - NotedTra: ";
+-		strList.clear();
+-
+-		cnt = AB_ImExporterAccountInfo_GetNotedTransactionCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstNotedTransaction(ai);
+-		while (t) {
+-			/** \todo Sollte implementiert werden wenn geplante Buchungen in der
+-				  History gepeichert werden oder angezeigt werden sollen
+-			*/
+-			t = AB_ImExporterAccountInfo_GetNextNotedTransaction(ai);
+-		}
+-
+-
+-		/**********************************************************************/
+-		// Daueraufträge
+-		/**********************************************************************/
+-		logmsg = "PARSER HISTORY - Standing: ";
+-		strList.clear();
+-
+-		cnt = AB_ImExporterAccountInfo_GetStandingOrderCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstStandingOrder(ai);
+-		while (t) {
+-			QString t_kto = AB_Transaction_GetLocalAccountNumber(t);
+-			QString t_blz = AB_Transaction_GetLocalBankCode(t);
+-			aqb_AccountInfo *acc = allAccounts->getAccount(t_kto, t_blz);
+-			if (!acc) {
+-				// keinen passenden Account gefunden, Nächste
+-				qWarning() << logmsg << "No matching account found!"
+-						     << "( KTO:" << t_kto
+-						     << " - BLZ:" << t_blz << ")";
+-				t = AB_ImExporterAccountInfo_GetNextStandingOrder(ai);
+-				continue;
+-			}
+-			AB_ACCOUNT *a = acc->get_AB_ACCOUNT();
+-
+-			//default values for a standing order
+-			AB_JOB_TYPE jtype = AB_Job_TypeCreateStandingOrder;
+-			AB_JOB_STATUS jstatus = AB_Job_StatusFinished;
+-
+-			//get the jobType and jobStatus from the category field
+-			//of the saved transaction.
+-			getJobStatesFromTransaction(t, jtype, jstatus);
+-
+-			abt_jobInfo *ji = new abt_jobInfo(jtype, jstatus, t, a);
+-
+-			history->add(ji);
+-
+-			t = AB_ImExporterAccountInfo_GetNextStandingOrder(ai);
+-		}
+-
+-
+-		/**********************************************************************/
+-		// Buchungen
+-		/**********************************************************************/
+-		logmsg = "PARSER HISTORY - Transact: ";
+-		strList.clear();;
+-
+-		cnt = AB_ImExporterAccountInfo_GetTransactionCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstTransaction(ai);
+-		while (t) {
+-			/** \todo Sollte implementiert werden wenn Buchungen in der
+-				  History gepeichert werden oder angezeigt werden sollen
+-			*/
+-			t = AB_ImExporterAccountInfo_GetNextTransaction(ai);
+-		}
+-
+-
+-		/**********************************************************************/
+-		// Überweisungen
+-		/**********************************************************************/
+-		logmsg = "PARSER HISTORY - Transfer: ";
+-		strList.clear();
+-
+-		cnt = AB_ImExporterAccountInfo_GetTransferCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		qDebug() << logmsg << logmsg2;
+-
+-		t = AB_ImExporterAccountInfo_GetFirstTransfer(ai);
+-		while (t) {
+-			QString lclKto = AB_Transaction_GetLocalAccountNumber(t);
+-			QString lclBLZ = AB_Transaction_GetLocalBankCode(t);
+-
+-			aqb_AccountInfo *lclAcc = allAccounts->getAccount(lclKto, lclBLZ);
+-			if (!lclAcc) {
+-				// keinen passenden Account gefunden, Nächste
+-				qWarning() << logmsg << "No matching account found!"
+-						     << "( KTO:" << lclKto
+-						     << " - BLZ:" << lclBLZ << ")";
+-				t = AB_ImExporterAccountInfo_GetNextTransfer(ai);
+-				continue;
+-			}
+-
+-			//default values for a transfer
+-			AB_JOB_TYPE jtype = AB_Job_TypeTransfer;
+-			AB_JOB_STATUS jstatus = AB_Job_StatusFinished;
+-
+-			//get the jobType and jobStatus from the category field
+-			//of the saved transaction.
+-			getJobStatesFromTransaction(t, jtype, jstatus);
+-
+-			abt_jobInfo *ji = new abt_jobInfo(jtype, jstatus, t,
+-							  lclAcc->get_AB_ACCOUNT());
+-
+-			history->add(ji);
+-
+-			t = AB_ImExporterAccountInfo_GetNextTransfer(ai);
+-		}
+-
+-		//next account
+-		ai=AB_ImExporterContext_GetNextAccountInfo(iec);
+-	} /* while ai */
+-
+-}
+diff --git a/src/abt_parser.h b/src/abt_parser.h
+--- a/src/abt_parser.h
++++ b/src/abt_parser.h
+@@ -61,65 +61,98 @@
+ #include "abt_history.h"
+ 
+ 
+-/** \brief parser zum laden der lokal gespeicherten Daten sowie zum Auswerten
+-  *        der vom Institut gelieferten Daten.
+-  *
+-  * Über \ref load_local_ctx() können die Daten einer lokal gespeicherten Datei
+-  * in den Context (Rückgabewert) geladen werden.
+-  *
+-  * Dieser Context [ctx] kann dann über \ref parse_ctx() ausgewertet werden.
+-  * \ref parse_ctx() setzt dabei alle Werte die im Context gefunden wurden in
+-  * den entsprechenden Objekten.
+-  *
+-  * Außerdem kann \ref parse_ctx() dazu verwendet werden die gelieferten Daten
+-  * des Instituts aus zu werten und die entsprechenden Objekte zu aktualisieren.
+-  *
+-  */
++#ifndef DEBUG_ABTPARSER
++/** \brief DEBUG_ABTPARSER should be 1 to enable debug output of the parser!
++ *
++ * It could also be set with -DDEBUG_ABTPARSER=1 as a compiler parameter to
++ * enable it for a test compilation only!
++*/
++//disable debug messages if not supplied as compiler define
++#define DEBUG_ABTPARSER 0
++#endif
++
++
++/** \brief parser for the local saved data and for the data retrieved from
++ *         the bank.
++ *
++ * With \ref load_local_ctx() local saved data can be loaded (returned as
++ * AB_IMEXPORTER_CONTEXT).
++ *
++ * Every AB_IMEXPORTER_CONTEXT [ctx] can be parsed with \ref parse_ctx().
++ * \ref parse_ctx() sets all read values from the supplied ctx at the
++ * corresponding objects.
++ *
++ * \ref parse_ctx() could also be used to parse the information retrieved from
++ * the bank and update the corresponding objects.
++ *
++ */
+ class abt_parser
+ {
+ private:
+-	//static AB_IMEXPORTER_CONTEXT *ctx;
+ 	/** \brief reads the type and status from the category field */
+ 	static void getJobStatesFromTransaction(AB_TRANSACTION *t,
+-						AB_JOB_TYPE &jobType,
+-						AB_JOB_STATUS &jobStatus);
++						AB_JOB_TYPE *jobType,
++						AB_JOB_STATUS *jobStatus);
++	static void addJobInfoToHistory(abt_history *history,
++					const aqb_Accounts *allAccounts,
++					AB_TRANSACTION *t, AB_JOB_TYPE defType,
++					AB_JOB_STATUS defStatus);
++
++	//private functions to parse the different possible contents of a
++	//AB_IMEXPORTER_CONTEXT object
++	static int parse_ctx_messages(AB_IMEXPORTER_CONTEXT *iec);
++	static int parse_ctx_securities(AB_IMEXPORTER_CONTEXT *iec);
++	static int parse_ctx_accountInfos(AB_IMEXPORTER_CONTEXT *iec,
++					  const aqb_Accounts *allAccounts,
++					  abt_history *history = NULL);
++
++	static int parse_ctx_ai_status(AB_IMEXPORTER_ACCOUNTINFO *ai,
++				       aqb_AccountInfo *acc);
++	static int parse_ctx_ai_datedTransfers(AB_IMEXPORTER_ACCOUNTINFO *ai,
++					       aqb_AccountInfo *acc,
++					       abt_history *history = NULL,
++					       const aqb_Accounts *allAccounts = NULL);
++	static int parse_ctx_ai_notedTransactions(AB_IMEXPORTER_ACCOUNTINFO *ai,
++						  aqb_AccountInfo *acc);
++	static int parse_ctx_ai_standingOrders(AB_IMEXPORTER_ACCOUNTINFO *ai,
++					       aqb_AccountInfo *acc,
++					       abt_history *history = NULL,
++					       const aqb_Accounts *allAccounts = NULL);
++	static int parse_ctx_ai_transactions(AB_IMEXPORTER_ACCOUNTINFO *ai,
++					     aqb_AccountInfo *acc);
++	static int parse_ctx_ai_transfers(AB_IMEXPORTER_ACCOUNTINFO *ai,
++					  aqb_AccountInfo *acc,
++					  abt_history *history = NULL,
++					  const aqb_Accounts *allAccounts = NULL);
+ 
+ public:
+ 	abt_parser();
+ 
+-	/** \brief erstellt einen AB_IMEXPORTER_CONTEXT für alle in aqb_Accounts
+-	  * enhaltenen aqb_AccountInfo Objekte
+-	  */
++	/** \brief creates an AB_IMEXPORTER_CONTEXT for all aqb_AccountInfo
++	 *         objects of the aqb_Accounts object.
++	 */
+ 	static AB_IMEXPORTER_CONTEXT *create_ctx_from(const aqb_Accounts *allAccounts);
+ 
+-
+-	/** \brief lädt alle Daten der Datei \a filename mit dem Importer
+-	  * \a importerName und dem Profile \a profileName in den \return ctx
+-	  */
++	/** \brief loads all data from the \a filename with the \a importerName
++	 *         and \a profileName to the returned context.
++	 */
+ 	static AB_IMEXPORTER_CONTEXT *load_local_ctx(const QString &filename,
+ 						     const QString &importerName,
+ 						     const QString &profileName);
+ 
+-	/** \brief speichert alle Daten des IE-Context \a ctx in der Datei
+-	  * \a filename mit dem Importer \a importerName und dem Profile
+-	  * \a profileName
+-	  */
++	/** \brief saves all data of the \a ctx to the given \a filename.
++	 */
+ 	static void save_local_ctx(AB_IMEXPORTER_CONTEXT *ctx,
+ 				   const QString &filename,
+ 				   const QString &exporterName,
+ 				   const QString &profileName);
+ 
+-
+-	/** \brief parst den Context \a iec und setzt die entsprechenden Werte
+-	  * des entsprechenden Accounts
+-	  */
+-	static void parse_ctx(AB_IMEXPORTER_CONTEXT *iec, aqb_Accounts *allAccounts);
+-
+-	/** \overload zur Verwendung wenn die History geladen werden soll
+-	  */
++	/** \brief parses the supplied context \a iec and stores the relevant
++	 *         data to the matching accounts at \a allAccounts
++	 */
+ 	static void parse_ctx(AB_IMEXPORTER_CONTEXT *iec,
+ 			      const aqb_Accounts *allAccounts,
+-			      abt_history *history);
++			      abt_history *history = NULL);
+ 
+ };
+ 
+diff --git a/src/abt_settings.cpp b/src/abt_settings.cpp
+--- a/src/abt_settings.cpp
++++ b/src/abt_settings.cpp
+@@ -45,11 +45,11 @@
+ 	//there is always the settings.ini
+ 
+ 	QString homePath = QDir::homePath();
+-	QString iniFilename = homePath + "/.abtransfers/settings.ini";
++	QString iniFilename = homePath + QString::fromUtf8("/.abtransfers/settings.ini");
+ 	//the path must be useable on all systems
+ 	iniFilename = QDir::toNativeSeparators(iniFilename);
+ 	//if the folder does not exist, we create it
+-	QDir dataStorage(QDir::toNativeSeparators(homePath + "/.abtransfers"));
++	QDir dataStorage(QDir::toNativeSeparators(homePath + QString::fromUtf8("/.abtransfers")));
+ 	if (!dataStorage.exists()) {
+ 		bool ret = dataStorage.mkpath(dataStorage.absolutePath());
+ 		if (!ret) {
+@@ -70,33 +70,38 @@
+ 	QString defValue;
+ 
+ 	//Standard folder to store data
+-	defValue = homePath + "/.abtransfers/";
++	defValue = homePath + QString::fromUtf8("/.abtransfers/");
+ 	defValue = QDir::toNativeSeparators(defValue);
+-	this->m_dataDir = this->settings->value("Main/DataDir", defValue).toString();
++	this->m_dataDir = this->settings->value(QString::fromUtf8("Main/DataDir"),
++						defValue).toString();
+ 
+ 	//file for known recipients
+-	defValue = homePath + "/.abtransfers/recipients.txt";
++	defValue = homePath + QString::fromUtf8("/.abtransfers/recipients.txt");
+ 	defValue = QDir::toNativeSeparators(defValue);
+ 	this->m_recipientsFilename =
+-		this->settings->value("Main/RecipientsFilename", defValue).toString();
++		this->settings->value(QString::fromUtf8("Main/RecipientsFilename"),
++				      defValue).toString();
+ 
+ 	//file for account data (balance, standing-/dated-transfers)
+-	defValue = homePath + "/.abtransfers/accountdata.ctx";
++	defValue = homePath + QString::fromUtf8("/.abtransfers/accountdata.ctx");
+ 	defValue = QDir::toNativeSeparators(defValue);
+ 	this->m_accountdataFilename =
+-		this->settings->value("Main/AccountDataFilename", defValue).toString();
++		this->settings->value(QString::fromUtf8("Main/AccountDataFilename"),
++				      defValue).toString();
+ 
+ 	//file for the history
+-	defValue = homePath + "/.abtransfers/history.ctx";
++	defValue = homePath + QString::fromUtf8("/.abtransfers/history.ctx");
+ 	defValue = QDir::toNativeSeparators(defValue);
+ 	this->m_historyFilename =
+-		this->settings->value("Main/HistoryFilename", defValue).toString();
++		this->settings->value(QString::fromUtf8("Main/HistoryFilename"),
++				      defValue).toString();
+ 
+ 	//filename for the automatic export
+-	defValue = homePath + "/.abtransfers/automatic_export.csv";
++	defValue = homePath + QString::fromUtf8("/.abtransfers/automatic_export.csv");
+ 	defValue = QDir::toNativeSeparators(defValue);
+ 	this->m_autoExportFilename =
+-		this->settings->value("Main/AutoExportFilename", defValue).toString();
++		this->settings->value(QString::fromUtf8("Main/AutoExportFilename"),
++				      defValue).toString();
+ 
+ 	this->m_textKeyDescr = NULL;
+ 	this->loadTextKeyDescriptions();
+@@ -136,22 +141,22 @@
+ 
+ 	this->m_textKeyDescr->clear();
+ 
+-	if (!this->settings->childGroups().contains("TextKeyDescriptions")) {
++	if (!this->settings->childGroups().contains(QString::fromUtf8("TextKeyDescriptions"))) {
+ 		//TextKexDescriptions doesnt exists, use default values
+-		this->settings->beginGroup("TextKeyDescriptions");
+-		this->settings->setValue("04", "Lastschrift (Abbuchungsauftragsverfahren)");
+-		this->settings->setValue("05", "Lastschrift (Einzugsermächtigungsverfahren)");
+-		this->settings->setValue("51", "Überweisung");
+-		this->settings->setValue("52", "Dauerauftrags-Überweisung");
+-		this->settings->setValue("53", "Lohn-, Gehalts-, Renten-Überweisung");
+-		this->settings->setValue("54", "Vermögenswirksame Leistung (VL)");
+-		this->settings->setValue("56", "Überweisung öffentlicher Kassen");
+-		this->settings->setValue("67", "Überweisung mit prüfziffergesicherten Zuordnungsdaten (BZÜ)");
+-		this->settings->setValue("69", "Spendenüberweisung");
++		this->settings->beginGroup(QString::fromUtf8("TextKeyDescriptions"));
++		this->settings->setValue(QString::fromUtf8("04"), QString::fromUtf8("Lastschrift (Abbuchungsauftragsverfahren)"));
++		this->settings->setValue(QString::fromUtf8("05"), QString::fromUtf8("Lastschrift (Einzugsermächtigungsverfahren)"));
++		this->settings->setValue(QString::fromUtf8("51"), QString::fromUtf8("Überweisung"));
++		this->settings->setValue(QString::fromUtf8("52"), QString::fromUtf8("Dauerauftrags-Überweisung"));
++		this->settings->setValue(QString::fromUtf8("53"), QString::fromUtf8("Lohn-, Gehalts-, Renten-Überweisung"));
++		this->settings->setValue(QString::fromUtf8("54"), QString::fromUtf8("Vermögenswirksame Leistung (VL)"));
++		this->settings->setValue(QString::fromUtf8("56"), QString::fromUtf8("Überweisung öffentlicher Kassen"));
++		this->settings->setValue(QString::fromUtf8("67"), QString::fromUtf8("Überweisung mit prüfziffergesicherten Zuordnungsdaten (BZÜ)"));
++		this->settings->setValue(QString::fromUtf8("69"), QString::fromUtf8("Spendenüberweisung"));
+ 		this->settings->endGroup();
+ 	}
+ 	
+-	this->settings->beginGroup("TextKeyDescriptions");
++	this->settings->beginGroup(QString::fromUtf8("TextKeyDescriptions"));
+ 	//go through all keys and store the values in a QHash
+ 	foreach (QString key, this->settings->allKeys()) {
+ 		QString text = this->settings->value(key, tr("Unbekannt")).toString();
+@@ -165,7 +170,7 @@
+ void abt_settings::setFilePermissions()
+ {
+ 	QString homePath = QDir::homePath();
+-	QString iniFilename = homePath + "/.abtransfers/settings.ini";
++	QString iniFilename = homePath + QString::fromUtf8("/.abtransfers/settings.ini");
+ 	//the path must be useable on all systems
+ 	iniFilename = QDir::toNativeSeparators(iniFilename);
+ 
+@@ -195,11 +200,11 @@
+ 			     << this->getRecipientsFilename() << "failed";
+ 
+ 	//also the permissions fpr the folder should be correct
+-	ret = QFile::setPermissions(QDir::toNativeSeparators(homePath + "/.abtransfers"),
++	ret = QFile::setPermissions(QDir::toNativeSeparators(homePath + QString::fromUtf8("/.abtransfers")),
+ 				    QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner |
+ 				    QFile::ReadUser | QFile::WriteUser | QFile::ExeUser);
+ 	if (!ret) qWarning() << Q_FUNC_INFO << " setting permissions on folder"
+-			     << QDir::toNativeSeparators(homePath + "/.abtransfers") << "failed";
++			     << QDir::toNativeSeparators(homePath + QString::fromUtf8("/.abtransfers")) << "failed";
+ 
+ 	ret = QFile::setPermissions(this->getDataDir(),
+ 				    QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner |
+@@ -227,7 +232,8 @@
+ 	abt_EmpfaengerInfo *recipientInfo;
+ 	while (!in.atEnd()) {
+ 		QString line = in.readLine();
+-		InfoStringList = line.split("\t", QString::KeepEmptyParts);
++		InfoStringList = line.split(QString::fromUtf8("\t"),
++					    QString::KeepEmptyParts);
+ 
+ 		recipientInfo = new abt_EmpfaengerInfo();
+ 		recipientInfo->setName(InfoStringList.at(0));
+@@ -319,7 +325,8 @@
+  */
+ void abt_settings::setLanguage(const QString &language)
+ {
+-	this->settings->setValue("Options/Language", language);
++	this->settings->setValue(QString::fromUtf8("Options/Language"),
++				 language);
+ }
+ 
+ 
+@@ -328,33 +335,37 @@
+ void abt_settings::saveWindowStateGeometry(QByteArray state,
+ 					   QByteArray geometry)
+ {
+-	this->settings->setValue("Main/WindowState", state);
+-	this->settings->setValue("Main/WindowGeometry", geometry);
++	this->settings->setValue(QString::fromUtf8("Main/WindowState"), state);
++	this->settings->setValue(QString::fromUtf8("Main/WindowGeometry"),
++				 geometry);
+ }
+ 
+ QByteArray abt_settings::loadWindowState() const
+ {
+-	return this->settings->value("Main/WindowState", QVariant()).toByteArray();
++	return this->settings->value(QString::fromUtf8("Main/WindowState"),
++				     QVariant()).toByteArray();
+ }
+ 
+ QByteArray abt_settings::loadWindowGeometry() const
+ {
+-	return this->settings->value("Main/WindowGeometry", QVariant()).toByteArray();
++	return this->settings->value(QString::fromUtf8("Main/WindowGeometry"),
++				     QVariant()).toByteArray();
+ }
+ 
+ 
+ 
+ 
+-void abt_settings::saveSelAccountInWidget(const QString &widgetName, const aqb_AccountInfo *acc)
++void abt_settings::saveSelAccountInWidget(const QString &widgetName,
++					  const aqb_AccountInfo *acc)
+ {
+-	QString groupname("Main/Widget");
++	QString groupname(QString::fromUtf8("Main/Widget"));
+ 	groupname.append(widgetName);
+ 	this->settings->setValue(groupname, acc->get_ID());
+ }
+ 
+ int abt_settings::loadSelAccountInWidget(const QString &widgetName) const
+ {
+-	QString groupname("Main/Widget");
++	QString groupname(QString::fromUtf8("Main/Widget"));
+ 	groupname.append(widgetName);
+ 	return this->settings->value(groupname, -1).toInt();
+ }
+@@ -363,13 +374,14 @@
+ 
+ bool abt_settings::showDialog(const QString &dialogType) const
+ {
+-	return this->settings->value(QString("Dialogs/Show").append(dialogType),
++	return this->settings->value(QString::fromUtf8("Dialogs/Show").append(dialogType),
+ 				     true).toBool();
+ }
+ 
+ void abt_settings::setShowDialog(const QString &dialogType, bool show)
+ {
+-	this->settings->setValue(QString("Dialogs/Show").append(dialogType), show);
++	this->settings->setValue(QString::fromUtf8("Dialogs/Show").append(dialogType),
++				 show);
+ }
+ 
+ 
+@@ -377,74 +389,85 @@
+ 
+ bool abt_settings::appendJobToOutbox(const QString &jobname) const
+ {
+-	return this->settings->value(QString("LoadAtStart/").append(jobname),
++	return this->settings->value(QString::fromUtf8("LoadAtStart/").append(jobname),
+ 				     false).toBool();
+ }
+ 
+ void abt_settings::setAppendJobToOutbox(const QString &jobname, bool get)
+ {
+-	this->settings->setValue(QString("LoadAtStart/").append(jobname), get);
++	this->settings->setValue(QString::fromUtf8("LoadAtStart/").append(jobname),
++				 get);
+ }
+ 
+ 
+ //public
+ bool abt_settings::autoAddNewRecipients() const
+ {
+-	return this->settings->value("Options/autoAddNewRecipients", true).toBool();
++	return this->settings->value(QString::fromUtf8("Options/autoAddNewRecipients"),
++				     true).toBool();
+ }
+ 
+ //public
+ void abt_settings::setAutoAddNewRecipients(bool value)
+ {
+-	this->settings->setValue("Options/autoAddNewRecipients", value);
++	this->settings->setValue(QString::fromUtf8("Options/autoAddNewRecipients"),
++				 value);
+ }
+ 
+ //public
+ bool abt_settings::autoExportEnabled() const
+ {
+-	return this->settings->value("Options/autoExportEnabled", false).toBool();
++	return this->settings->value(QString::fromUtf8("Options/autoExportEnabled"),
++				     false).toBool();
+ }
+ 
+ //public
+ void abt_settings::setAutoExportEnabled(bool value)
+ {
+-	this->settings->setValue("Options/autoExportEnabled", value);
++	this->settings->setValue(QString::fromUtf8("Options/autoExportEnabled"),
++				 value);
+ }
+ 
+ //public
+ const QString abt_settings::autoExportProfileName() const
+ {
+-	return this->settings->value("Options/autoExportProfileName", "csv").toString();
++	return this->settings->value(QString::fromUtf8("Options/autoExportProfileName"),
++				     QString::fromUtf8("csv")).toString();
+ }
+ 
+ //public
+ void abt_settings::setAutoExportProfileName(const QString name) const
+ {
+-	this->settings->setValue("Options/autoExportProfileName", name);
++	this->settings->setValue(QString::fromUtf8("Options/autoExportProfileName"),
++				 name);
+ }
+ 
+ //public
+ const QString abt_settings::autoExportPluginName() const
+ {
+-	return this->settings->value("Options/autoExportPluginName", "default").toString();
++	return this->settings->value(QString::fromUtf8("Options/autoExportPluginName"),
++				     QString::fromUtf8("default")).toString();
+ }
+ 
+ //public
+ void abt_settings::setAutoExportPluginName(const QString name) const
+ {
+-	this->settings->setValue("Options/autoExportPluginName", name);
++	this->settings->setValue(QString::fromUtf8("Options/autoExportPluginName"),
++				 name);
+ }
+ 
+ //public
+ bool abt_settings::autoExportAsTransaction() const
+ {
+-	return this->settings->value("Main/AutoExportAsTransaction", true).toBool();
++	return this->settings->value(QString::fromUtf8("Main/AutoExportAsTransaction"),
++				     true).toBool();
+ }
+ 
+ //public
+ void abt_settings::setAutoExportAsTransaction(bool value)
+ {
+-	this->settings->setValue("Main/AutoExportAsTransaction", value);
++	this->settings->setValue(QString::fromUtf8("Main/AutoExportAsTransaction"),
++				 value);
+ }
+ 
+ /**
+@@ -458,14 +481,16 @@
+  */
+ QStringList abt_settings::getAllProfileFavorites() const
+ {
+-	this->settings->beginGroup("ImExportFavorites");
++	this->settings->beginGroup(QString::fromUtf8("ImExportFavorites"));
+ 	QStringList retList;
+ 
+ 	foreach(const QString group, this->settings->childGroups()) {
+ 		this->settings->beginGroup(group);
+ 
+ 		foreach(const QString key, this->settings->childKeys()) {
+-			retList.append(QString(group).append("/").append(key));
++			retList.append(QString(group)
++				       .append(QString::fromUtf8("/"))
++				       .append(key));
+ 		}
+ 
+ 		this->settings->endGroup();
+@@ -477,13 +502,13 @@
+ 
+ bool abt_settings::isProfileFavorit(const QString &name) const
+ {
+-	QString key = QString("ImExportFavorites/").append(name);
++	QString key = QString::fromUtf8("ImExportFavorites/").append(name);
+ 	return this->settings->value(key, false).toBool();
+ }
+ 
+ void abt_settings::setProfileFavorit(const QString &name, bool favorit)
+ {
+-	QString key = QString("ImExportFavorites/").append(name);
++	QString key = QString::fromUtf8("ImExportFavorites/").append(name);
+ 	this->settings->setValue(key, favorit);
+ }
+ 
+@@ -493,52 +518,167 @@
+  */
+ void abt_settings::deleteProfileFavorit(const QString &name)
+ {
+-	this->settings->beginGroup("ImExportFavorites");
++	this->settings->beginGroup(QString::fromUtf8("ImExportFavorites"));
+ 	this->settings->remove(name);
+ 	this->settings->endGroup();
+ }
+ 
++//public
++/** \brief sets the advanced options enabled flag.
++ *
++ * This function must be used to alter the enable flag for the advanced options!
++ *
++ * The setAdvancedOption() function would not save anything when the
++ * advanced options are disabled!
++ */
++void abt_settings::setAdvancedOptionEnabled(bool enable)
++{
++	this->settings->setValue(QString::fromUtf8("Options/Advanced/enabled"),
++				 enable);
++}
+ 
+-bool abt_settings::isAdvancedOptionSet(const QString &option) const
++//public
++/** \brief checks if the advanced options are enabled or not
++ *
++ * \returns true if enabled
++ * \returns false if disabled
++ */
++bool abt_settings::isAdvancedEnabled() const
+ {
+-	QString key = QString("Options/Advanced/").append(option);
++	QString key = QString::fromUtf8("Options/Advanced/enabled");
+ 	return this->settings->value(key, false).toBool();
+ }
+ 
++//public
++/** \brief checks if the advanced options are enabled and returns the value
++ *        of the wanted \a option.
++ *
++ * If the advanced options are not enabled, false is returned always!
++ * Otherwise the value of the supplied \a option.
++ */
++bool abt_settings::isAdvancedOptionSet(const QString &option) const
++{
++	bool ret = false;
++
++	if (this->isAdvancedEnabled()) {
++		QString key = QString::fromUtf8("Options/Advanced/").append(option);
++		ret = this->settings->value(key, false).toBool();
++	}
++	return ret;
++}
++
++//public
++/** \brief stores the \a value for the \a \option
++ *
++ * The value is only stored when the advanced options are enabled!
++ */
+ void abt_settings::setAdvancedOption(const QString &option, bool value)
+ {
+-	QString key = QString("Options/Advanced/").append(option);
+-	this->settings->setValue(key, value);
++	if (this->isAdvancedEnabled()) {
++		QString key = QString::fromUtf8("Options/Advanced/").append(option);
++		this->settings->setValue(key, value);
++	}
+ }
+ 
++//public
++/** \overload */
++void abt_settings::setAdvancedOption(const QString &option, QString value)
++{
++	if (this->isAdvancedEnabled()) {
++		QString key = QString::fromUtf8("Options/Advanced/").append(option);
++		this->settings->setValue(key, value);
++	}
++}
++
++//public
++/** \brief gets the value for the \a option from the advanced options
++ *
++ * If the advanced options are not enabled or if the \a option is not stored
++ * at the settings file, the \a defValue is returned.
++ *
++ * Otherwise the read string from the settings file is returned.
++ */
++QString abt_settings::getAdvancedOption(const QString &option,
++					const QString defValue) const
++{
++	if (this->isAdvancedEnabled()) {
++		QString key = QString::fromUtf8("Options/Advanced/").append(option);
++		return this->settings->value(key, defValue).toString();
++	}
++	return defValue;
++}
++
++//public
++/** \brief deletes an advanced option from the settings file */
+ void abt_settings::deleteAdvancedOption(const QString &option)
+ {
+-	this->settings->beginGroup("Options/Advanced/");
++	this->settings->beginGroup(QString::fromUtf8("Options/Advanced/"));
+ 	this->settings->remove(option);
+ 	this->settings->endGroup();
+ }
+ 
+ //public
++/** \brief returns the regular expression for the purpose field.
++ *
++ * Additional checks are performed to be sure the returned value could be
++ * used as a regular expression.
++ *
++ * If the stored regex is empty or an invalid regex, the default value is
++ * returned.
++ */
++QString abt_settings::allowedCharsPurposeRegex() const
++{
++	QString regex = this->getAdvancedOption(QString::fromUtf8("RegexPurpose"),
++						DEFAULT_REGEX_PURPOSE);
++
++	if (regex.isEmpty() || !QRegExp(regex).isValid())
++		regex = DEFAULT_REGEX_PURPOSE;
++
++	return regex;
++}
++
++//public
++/** \brief returns the regular expression for the recipient name / bankname field.
++ *
++ * Additional checks are performed to be sure the returned value could be
++ * used as a regular expression.
++ *
++ * If the stored regex is empty or an invalid regex, the default value is
++ * returned.
++ */
++QString abt_settings::allowedCharsRecipientRegex() const
++{
++	QString regex = this->getAdvancedOption(QString::fromUtf8("RegexRecipient"),
++						DEFAULT_REGEX_RECIPIENT);
++
++	if (regex.isEmpty() || !QRegExp(regex).isValid())
++		regex = DEFAULT_REGEX_RECIPIENT;
++
++	return regex;
++}
++
++//public
+ /** \brief returns the language set by the user (or an empty string if nothing set)
+  */
+ QString abt_settings::language() const
+ {
+-	return this->settings->value("Options/Language", QString("")).toString();
++	return this->settings->value(QString::fromUtf8("Options/Language"),
++				     QString()).toString();
+ }
+ 
+ 
+ void abt_settings::saveColWidth(const QString &name, int col, int width)
+ {
+-	QString key = QString("Main/").append(name);
+-	QString key2 = QString("/col%1").arg(col);
++	QString key = QString::fromUtf8("Main/").append(name);
++	QString key2 = QString::fromUtf8("/col%1").arg(col);
+ 	key.append(key2);
+ 	this->settings->setValue(key, width);
+ }
+ 
+ int abt_settings::getColWidth(const QString &name, int col, int def)
+ {
+-	QString key = QString("Main/").append(name);
+-	QString key2 = QString("/col%1").arg(col);
++	QString key = QString::fromUtf8("Main/").append(name);
++	QString key2 = QString::fromUtf8("/col%1").arg(col);
+ 	key.append(key2);
+ 	bool convOK;
+ 	int ret = this->settings->value(key, def).toInt(&convOK);
+@@ -558,7 +698,6 @@
+ 	}
+ }
+ 
+-
+ /**
+  * @returns -1: error (not handled \a type passed)
+  * @returns  0: not supported
+@@ -569,6 +708,8 @@
+ //static public
+ int abt_settings::supportedByAbtransfers(const AB_JOB_TYPE type)
+ {
++	int ret = -1; //default error
++
+ 	switch (type) {
+ 	//supported and implemented types
+ 	case AB_Job_TypeGetBalance :
+@@ -586,7 +727,7 @@
+ 	case AB_Job_TypeModifyStandingOrder :
+ 	case AB_Job_TypeDeleteStandingOrder :
+ 	case AB_Job_TypeGetStandingOrders :
+-		return 1;
++		ret = 1; //supported
+ 		break;
+ 
+ 		//not supported but should be implemented
+@@ -594,17 +735,26 @@
+ 	case AB_Job_TypeDebitNote :
+ 	case AB_Job_TypeSepaDebitNote :
+ 	case AB_Job_TypeLoadCellPhone :
+-		return 2;
++#if AQBANKING_VERSION_MAJOR >= 5 && AQBANKING_VERSION_MINOR >= 5
++	case AB_Job_TypeSepaFlashDebitNote :
++	case AB_Job_TypeSepaCreateStandingOrder :
++	case AB_Job_TypeSepaDeleteStandingOrder :
++	case AB_Job_TypeSepaModifyStandingOrder :
++	case AB_Job_TypeSepaGetStandingOrders :
++#endif
++		ret = 2; //not supported yet
+ 		break;
+ 
+ 		//not supported (and not planed to be implemented)
+ 	case AB_Job_TypeGetTransactions :
+ 	case AB_Job_TypeUnknown :
+-		return 0;
++		ret = 0; //not supported yet
+ 		break;
++	default:
++		ret = -1; //error (not handled type)
+ 	}
+ 
+-	return -1; //error
++	return ret;
+ }
+ 
+ //public
+@@ -615,7 +765,8 @@
+ 		return; //Abbruch
+ 	}
+ 
+-	this->settings->setValue("Main/RecipientsFilename", filename);
++	this->settings->setValue(QString::fromUtf8("Main/RecipientsFilename"),
++				 filename);
+ 
+ 	this->m_recipientsFilename = filename;
+ }
+@@ -628,7 +779,8 @@
+ 		return; //Abbruch
+ 	}
+ 
+-	this->settings->setValue("Main/AccountDataFilename", filename);
++	this->settings->setValue(QString::fromUtf8("Main/AccountDataFilename"),
++				 filename);
+ 
+ 	this->m_accountdataFilename = filename;
+ }
+@@ -641,7 +793,8 @@
+ 		return; //Abbruch
+ 	}
+ 
+-	this->settings->setValue("Main/HistoryFilename", filename);
++	this->settings->setValue(QString::fromUtf8("Main/HistoryFilename"),
++				 filename);
+ 
+ 	this->m_historyFilename = filename;
+ }
+@@ -654,7 +807,7 @@
+ 		return; //Abbruch
+ 	}
+ 
+-	this->settings->setValue("Main/DataDir", dirname);
++	this->settings->setValue(QString::fromUtf8("Main/DataDir"), dirname);
+ 
+ 	this->m_dataDir = dirname;
+ }
+@@ -667,7 +820,8 @@
+ 		return; // cancel
+ 	}
+ 
+-	this->settings->setValue("Main/AutoExportFilename", filename);
++	this->settings->setValue(QString::fromUtf8("Main/AutoExportFilename"),
++				 filename);
+ 
+ 	this->m_autoExportFilename = filename;
+ }
+diff --git a/src/abt_settings.h b/src/abt_settings.h
+--- a/src/abt_settings.h
++++ b/src/abt_settings.h
+@@ -42,8 +42,15 @@
+ #include "abt_standingorderinfo.h"
+ #include "abt_datedtransferinfo.h"
+ 
++
++/** default regular expression for valid characters at the purpose field. */
++static const QString DEFAULT_REGEX_PURPOSE = QString::fromUtf8("[-+ .,/*&%0-9A-Za-z]");
++
++/** default regular expression for valid characters at the recipient and bankname field. */
++static const QString DEFAULT_REGEX_RECIPIENT = QString::fromUtf8("[-+ .,/*&%0-9A-Za-z]");
++
++
+ /** \brief saves and restores settings which can be modified by the user */
+-
+ class abt_settings : public QObject
+ {
+ Q_OBJECT
+@@ -114,10 +121,18 @@
+ 	void setProfileFavorit(const QString &name, bool favorit);
+ 	void deleteProfileFavorit(const QString &name);
+ 
++	void setAdvancedOptionEnabled(bool enable);
++	bool isAdvancedEnabled() const;
+ 	bool isAdvancedOptionSet(const QString &option) const;
+ 	void setAdvancedOption(const QString &option, bool value);
++	void setAdvancedOption(const QString &option, QString value);
++	QString getAdvancedOption(const QString &option,
++				  const QString defValue = QString()) const;
+ 	void deleteAdvancedOption(const QString &option);
+ 
++	QString allowedCharsPurposeRegex() const;
++	QString allowedCharsRecipientRegex() const;
++
+ 	QString language() const;
+ 
+ 	void saveColWidth(const QString &name, int col, int width);
+@@ -128,6 +143,7 @@
+ 
+ 	static void resizeColToContentsFor(QTreeWidget *w);
+ 
++
+ signals:
+ 	void recipientsListChanged();
+ 
+diff --git a/src/abt_transaction_base.cpp b/src/abt_transaction_base.cpp
+--- a/src/abt_transaction_base.cpp
++++ b/src/abt_transaction_base.cpp
+@@ -133,6 +133,9 @@
+ 
+ const QString abt_transaction::getLocalCountry() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetLocalCountry(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetLocalCountry(this->aqb_transaction_C));
+@@ -142,12 +145,15 @@
+ void abt_transaction::setLocalCountry(const QString &Country)
+ {
+ 	AB_Transaction_SetLocalCountry(this->aqb_transaction,
+-				       Country.toUtf8());
++				       Country.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getLocalBankCode() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetLocalBankCode(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetLocalBankCode(this->aqb_transaction_C));
+@@ -157,12 +163,15 @@
+ void abt_transaction::setLocalBankCode(const QString &BankCode)
+ {
+ 	AB_Transaction_SetLocalBankCode(this->aqb_transaction,
+-					BankCode.toUtf8());
++					BankCode.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getLocalBranchId() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetLocalBranchId(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetLocalBranchId(this->aqb_transaction_C));
+@@ -172,12 +181,15 @@
+ void abt_transaction::setLocalBranchId(const QString &BranchId)
+ {
+ 	AB_Transaction_SetLocalBranchId(this->aqb_transaction,
+-					BranchId.toUtf8());
++					BranchId.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getLocalAccountNumber() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetLocalAccountNumber(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetLocalAccountNumber(this->aqb_transaction_C));
+@@ -187,12 +199,15 @@
+ void abt_transaction::setLocalAccountNumber(const QString &AccountNumber)
+ {
+ 	AB_Transaction_SetLocalAccountNumber(this->aqb_transaction,
+-					     AccountNumber.toUtf8());
++					     AccountNumber.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getLocalSuffix() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetLocalSuffix(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetLocalSuffix(this->aqb_transaction_C));
+@@ -202,12 +217,15 @@
+ void abt_transaction::setLocalSuffix(const QString &Suffix)
+ {
+ 	AB_Transaction_SetLocalSuffix(this->aqb_transaction,
+-				      Suffix.toUtf8());
++				      Suffix.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getLocalIban() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetLocalIban(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetLocalIban(this->aqb_transaction_C));
+@@ -217,12 +235,15 @@
+ void abt_transaction::setLocalIban(const QString &Iban)
+ {
+ 	AB_Transaction_SetLocalIban(this->aqb_transaction,
+-				    Iban.toUtf8());
++				    Iban.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getLocalName() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetLocalName(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetLocalName(this->aqb_transaction_C));
+@@ -232,12 +253,15 @@
+ void abt_transaction::setLocalName(const QString &Name)
+ {
+ 	AB_Transaction_SetLocalName(this->aqb_transaction,
+-				    Name.toUtf8());
++				    Name.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getLocalBic() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetLocalBic(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetLocalBic(this->aqb_transaction_C));
+@@ -247,7 +271,7 @@
+ void abt_transaction::setLocalBic(const QString &Bic)
+ {
+ 	AB_Transaction_SetLocalBic(this->aqb_transaction,
+-				   Bic.toUtf8());
++				   Bic.toStdString().c_str());
+ }
+ 
+ 
+@@ -257,6 +281,9 @@
+ 
+ const QString abt_transaction::getRemoteCountry() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteCountry(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteCountry(this->aqb_transaction_C));
+@@ -266,12 +293,15 @@
+ void abt_transaction::setRemoteCountry(const QString &Country)
+ {
+ 	AB_Transaction_SetRemoteCountry(this->aqb_transaction,
+-					Country.toUtf8());
++					Country.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemoteBankName() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteBankName(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteBankName(this->aqb_transaction_C));
+@@ -281,12 +311,15 @@
+ void abt_transaction::setRemoteBankName(const QString &BankName)
+ {
+ 	AB_Transaction_SetRemoteBankName(this->aqb_transaction,
+-					 BankName.toUtf8());
++					 BankName.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemoteBankLocation() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteBankLocation(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteBankLocation(this->aqb_transaction_C));
+@@ -296,12 +329,15 @@
+ void abt_transaction::setRemoteBankLocation(const QString &BankLocation)
+ {
+ 	AB_Transaction_SetRemoteBankLocation(this->aqb_transaction,
+-					     BankLocation.toUtf8());
++					     BankLocation.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemoteBankCode() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteBankCode(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteBankCode(this->aqb_transaction_C));
+@@ -311,12 +347,15 @@
+ void abt_transaction::setRemoteBankCode(const QString &BankCode)
+ {
+ 	AB_Transaction_SetRemoteBankCode(this->aqb_transaction,
+-					 BankCode.toUtf8());
++					 BankCode.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemoteBranchId() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteBranchId(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteBranchId(this->aqb_transaction_C));
+@@ -326,12 +365,15 @@
+ void abt_transaction::setRemoteBranchId(const QString &BranchId)
+ {
+ 	AB_Transaction_SetRemoteBranchId(this->aqb_transaction,
+-					 BranchId.toUtf8());
++					 BranchId.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemoteAccountNumber() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteAccountNumber(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteAccountNumber(this->aqb_transaction_C));
+@@ -341,12 +383,15 @@
+ void abt_transaction::setRemoteAccountNumber(const QString &AccountNumber)
+ {
+ 	AB_Transaction_SetRemoteAccountNumber(this->aqb_transaction,
+-					      AccountNumber.toUtf8());
++					      AccountNumber.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemoteSuffix() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteSuffix(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteSuffix(this->aqb_transaction_C));
+@@ -356,12 +401,15 @@
+ void abt_transaction::setRemoteSuffix(const QString &Suffix)
+ {
+ 	AB_Transaction_SetRemoteSuffix(this->aqb_transaction,
+-				       Suffix.toUtf8());
++				       Suffix.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemoteIban() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteIban(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteIban(this->aqb_transaction_C));
+@@ -371,7 +419,7 @@
+ void abt_transaction::setRemoteIban(const QString &Iban)
+ {
+ 	AB_Transaction_SetRemoteIban(this->aqb_transaction,
+-				     Iban.toUtf8());
++				     Iban.toStdString().c_str());
+ }
+ 
+ const QStringList abt_transaction::getRemoteName() const
+@@ -389,6 +437,9 @@
+ 
+ const QString abt_transaction::getRemoteBic() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteBic(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteBic(this->aqb_transaction_C));
+@@ -398,7 +449,7 @@
+ void abt_transaction::setRemoteBic(const QString &Bic)
+ {
+ 	AB_Transaction_SetRemoteBic(this->aqb_transaction,
+-				    Bic.toUtf8());
++				    Bic.toStdString().c_str());
+ }
+ 
+ 
+@@ -485,6 +536,9 @@
+ 
+ const QString abt_transaction::getTransactionKey() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetTransactionKey(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetTransactionKey(this->aqb_transaction_C));
+@@ -494,12 +548,15 @@
+ void abt_transaction::setTransactionKey(const QString &TransactionKey)
+ {
+ 	AB_Transaction_SetTransactionKey(this->aqb_transaction,
+-					 TransactionKey.toUtf8());
++					 TransactionKey.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getCustomerReference() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetCustomerReference(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetCustomerReference(this->aqb_transaction_C));
+@@ -509,12 +566,15 @@
+ void abt_transaction::setCustomerReference(const QString &CustomerReference)
+ {
+ 	AB_Transaction_SetCustomerReference(this->aqb_transaction,
+-					    CustomerReference.toUtf8());
++					    CustomerReference.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getBankReference() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetBankReference(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetBankReference(this->aqb_transaction_C));
+@@ -524,12 +584,15 @@
+ void abt_transaction::setBankReference(const QString &BankReference)
+ {
+ 	AB_Transaction_SetBankReference(this->aqb_transaction,
+-					BankReference.toUtf8());
++					BankReference.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getEndToEndReference() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetEndToEndReference(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetEndToEndReference(this->aqb_transaction_C));
+@@ -539,42 +602,64 @@
+ void abt_transaction::setEndToEndReference(const QString &EndToEndReference)
+ {
+ 	AB_Transaction_SetEndToEndReference(this->aqb_transaction,
+-					    EndToEndReference.toUtf8());
++					    EndToEndReference.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getMandateReference() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetMandateId(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+-		AB_Transaction_GetMandateReference(this->aqb_transaction_C));
++		//removed in aqBanking > 5.5.0 because it is not used yet in
++		//abtransfers, we simple replace this with an equal function!
++		//AB_Transaction_GetMandateReference(this->aqb_transaction_C));
++		AB_Transaction_GetMandateId(this->aqb_transaction_C));
+ 	return ret;
+ }
+ 
+ void abt_transaction::setMandateReference(const QString &MandateReference)
+ {
+-	AB_Transaction_SetMandateReference(this->aqb_transaction,
+-					   MandateReference.toUtf8());
++	//removed in aqBanking > 5.5.0 because it is not used yet in
++	//abtransfers, we simple replace this with an equal function!
++	//AB_Transaction_SetMandateReference(this->aqb_transaction,
++	//				   MandateReference.toUtf8());
++	AB_Transaction_SetMandateId(this->aqb_transaction,
++				    MandateReference.toStdString().c_str());
+ }
+ 
+ 
+-const QString abt_transaction::getCreditorIdentifier() const
++//was getCreditorIdentifier()
++//removed in aqBanking > 5.5.0, because it is not used yet in abtransfers, we
++//simple replace this with an equal function!
++const QString abt_transaction::getCreditorSchemeId() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetCreditorSchemeId(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+-		AB_Transaction_GetCreditorIdentifier(this->aqb_transaction_C));
++		AB_Transaction_GetCreditorSchemeId(this->aqb_transaction_C));
+ 	return ret;
+ }
+ 
+-void abt_transaction::setCreditorIdentifier(const QString &CreditorIdentifier)
++//was setCreditorIdentifier()
++//removed in aqBanking > 5.5.0, because it is not used yet in abtransfers, we
++//simple replace this with an equal function!
++void abt_transaction::setCreditorSchemeId(const QString &CreditorIdentifier)
+ {
+-	AB_Transaction_SetCreditorIdentifier(this->aqb_transaction,
+-					     CreditorIdentifier.toUtf8());
++	AB_Transaction_SetCreditorSchemeId(this->aqb_transaction,
++					   CreditorIdentifier.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getOriginatorIdentifier() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetOriginatorIdentifier(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetOriginatorIdentifier(this->aqb_transaction_C));
+@@ -584,7 +669,7 @@
+ void abt_transaction::setOriginatorIdentifier(const QString &OriginatorIdentifier)
+ {
+ 	AB_Transaction_SetOriginatorIdentifier(this->aqb_transaction,
+-					       OriginatorIdentifier.toUtf8());
++					       OriginatorIdentifier.toStdString().c_str());
+ }
+ 
+ 
+@@ -602,6 +687,9 @@
+ 
+ const QString abt_transaction::getTransactionText() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetTransactionText(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetTransactionText(this->aqb_transaction_C));
+@@ -611,12 +699,15 @@
+ void abt_transaction::setTransactionText(const QString &TransactionText)
+ {
+ 	AB_Transaction_SetTransactionText(this->aqb_transaction,
+-					  TransactionText.toUtf8());
++					  TransactionText.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getPrimanota() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetPrimanota(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetPrimanota(this->aqb_transaction_C));
+@@ -626,12 +717,15 @@
+ void abt_transaction::setPrimanota(const QString &Primanota)
+ {
+ 	AB_Transaction_SetPrimanota(this->aqb_transaction,
+-				    Primanota.toUtf8());
++				    Primanota.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getFiId() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetFiId(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetFiId(this->aqb_transaction_C));
+@@ -641,7 +735,7 @@
+ void abt_transaction::setFiId(const QString &FiId)
+ {
+ 	AB_Transaction_SetFiId(this->aqb_transaction,
+-			       FiId.toUtf8());
++			       FiId.toStdString().c_str());
+ }
+ 
+ const QStringList abt_transaction::getPurpose() const
+@@ -816,6 +910,9 @@
+ 
+ const QString abt_transaction::getRemoteAddrStreet() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteAddrStreet(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteAddrStreet(this->aqb_transaction_C));
+@@ -825,12 +922,15 @@
+ void abt_transaction::setRemoteAddrStreet(const QString &RemoteAddrStreet)
+ {
+ 	AB_Transaction_SetRemoteAddrStreet(this->aqb_transaction,
+-					   RemoteAddrStreet.toUtf8());
++					   RemoteAddrStreet.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemoteAddrZipcode() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteAddrZipcode(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteAddrZipcode(this->aqb_transaction_C));
+@@ -840,12 +940,15 @@
+ void abt_transaction::setRemoteAddrZipcode(const QString &RemoteAddrZipcode)
+ {
+ 	AB_Transaction_SetRemoteAddrZipcode(this->aqb_transaction,
+-					    RemoteAddrZipcode.toUtf8());
++					    RemoteAddrZipcode.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemoteAddrCity() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemoteAddrCity(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemoteAddrCity(this->aqb_transaction_C));
+@@ -855,12 +958,15 @@
+ void abt_transaction::setRemoteAddrCity(const QString &RemoteAddrCity)
+ {
+ 	AB_Transaction_SetRemoteAddrCity(this->aqb_transaction,
+-					 RemoteAddrCity.toUtf8());
++					 RemoteAddrCity.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getRemotePhone() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetRemotePhone(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetRemotePhone(this->aqb_transaction_C));
+@@ -870,7 +976,7 @@
+ void abt_transaction::setRemotePhone(const QString &RemotePhone)
+ {
+ 	AB_Transaction_SetRemotePhone(this->aqb_transaction,
+-				      RemotePhone.toUtf8());
++				      RemotePhone.toStdString().c_str());
+ }
+ 
+ 
+@@ -884,6 +990,9 @@
+ 
+ const QString abt_transaction::getUnitId() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetUnitId(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetUnitId(this->aqb_transaction_C));
+@@ -892,12 +1001,16 @@
+ 
+ void abt_transaction::setUnitId(const QString &UnitId)
+ {
+-	AB_Transaction_SetUnitId(this->aqb_transaction, UnitId.toUtf8());
++	AB_Transaction_SetUnitId(this->aqb_transaction,
++				 UnitId.toStdString().c_str());
+ }
+ 
+ 
+ const QString abt_transaction::getUnitIdNameSpace() const
+ {
++//	return abt_conv::encodeFromAb(
++//		AB_Transaction_GetUnitIdNameSpace(this->aqb_transaction_C));
++
+ 	QString ret;
+ 	ret = QString::fromUtf8(
+ 		AB_Transaction_GetUnitIdNameSpace(this->aqb_transaction_C));
+@@ -907,7 +1020,7 @@
+ void abt_transaction::setUnitIdNameSpace(const QString &UnitIdNameSpace)
+ {
+ 	AB_Transaction_SetUnitIdNameSpace(this->aqb_transaction,
+-					  UnitIdNameSpace.toUtf8());
++					  UnitIdNameSpace.toStdString().c_str());
+ }
+ 
+ 
+diff --git a/src/abt_transaction_base.h b/src/abt_transaction_base.h
+--- a/src/abt_transaction_base.h
++++ b/src/abt_transaction_base.h
+@@ -176,8 +176,8 @@
+ 	const QString getMandateReference() const;
+ 	void setMandateReference(const QString &MandateReference);
+ 
+-	const QString getCreditorIdentifier() const;
+-	void setCreditorIdentifier(const QString &CreditorIdentifier);
++	const QString getCreditorSchemeId() const;
++	void setCreditorSchemeId(const QString &CreditorIdentifier);
+ 
+ 	const QString getOriginatorIdentifier() const;
+ 	void setOriginatorIdentifier(const QString &OriginatorIdentifier);
+@@ -323,8 +323,8 @@
+ 
+ };
+ 
+-Q_DECLARE_METATYPE(abt_transaction);
+-Q_DECLARE_METATYPE(abt_transaction*);
+-Q_DECLARE_METATYPE(const abt_transaction*);
++Q_DECLARE_METATYPE(abt_transaction)
++Q_DECLARE_METATYPE(abt_transaction*)
++Q_DECLARE_METATYPE(const abt_transaction*)
+ 
+ #endif // TRANS_JOB_H
+diff --git a/src/abt_transactionlimits.cpp b/src/abt_transactionlimits.cpp
+--- a/src/abt_transactionlimits.cpp
++++ b/src/abt_transactionlimits.cpp
+@@ -100,7 +100,7 @@
+ //	} else {
+ //		this->TextKeys = "Not available";
+ //	}
+-	this->TextKeys = "not used by AB-Transfers, yet.";
++	this->TextKeys = QString::fromUtf8("not used by AB-Transfers, yet.");
+ 
+ 	this->MaxLenCustomerReference = AB_TransactionLimits_GetMaxLenCustomerReference(el);
+ 	this->MinLenCustomerReference = AB_TransactionLimits_GetMinLenCustomerReference(el);
+diff --git a/src/abt_validators.cpp b/src/abt_validators.cpp
+--- a/src/abt_validators.cpp
++++ b/src/abt_validators.cpp
+@@ -43,16 +43,16 @@
+ 
+ void BetragValidator::fixup(QString &input) const
+ {
+-	int commapos = input.lastIndexOf(',');
++	int commapos = input.lastIndexOf(QLatin1Char(','));
+ 	if (commapos == -1) {
+-		input.append(",00");
++		input.append(QString::fromUtf8(",00"));
+ 		return;
+ 	} else {
+ 		if (input.length()-1 - commapos == 1) {
+-			input.append("0");
++			input.append(QString::fromUtf8("0"));
+ 			return;
+ 		} else if (input.length()-1 - commapos == 0) {
+-			input.append("00");
++			input.append(QString::fromUtf8("00"));
+ 			return;
+ 		}
+ 	}
+diff --git a/src/aqb_accountinfo.cpp b/src/aqb_accountinfo.cpp
+--- a/src/aqb_accountinfo.cpp
++++ b/src/aqb_accountinfo.cpp
+@@ -101,18 +101,18 @@
+ 	this->m_availableJobs = NULL;
+ 
+ 	this->m_ID = 0;
+-	this->m_BankCode = "";
+-	this->m_BankName = "";
+-	this->m_Number = "";
+-	this->m_Name = "";
+-	this->m_BackendName = "";
+-	this->m_SubAccountId = "";
+-	this->m_IBAN = "";
+-	this->m_BIC = "";
+-	this->m_OwnerName = "";
+-	this->m_Currency = "";
+-	this->m_Country = "";
+-	this->m_AccountType = "";
++	this->m_BankCode = QString();
++	this->m_BankName = QString();
++	this->m_Number = QString();
++	this->m_Name = QString();
++	this->m_BackendName = QString();
++	this->m_SubAccountId = QString();
++	this->m_IBAN = QString();
++	this->m_BIC = QString();
++	this->m_OwnerName = QString();
++	this->m_Currency = QString();
++	this->m_Country = QString();
++	this->m_AccountType = QString();
+ 
+ 
+ 	//geblockte Signale wieder auf den vorherigen Zustand setzen
+@@ -250,7 +250,7 @@
+ //protected
+ AB_IMEXPORTER_CONTEXT *aqb_AccountInfo::getContext() const
+ {
+-	//Dadurch das die aufrugende Funktion über AB_ImExporterContext_free()
++	//Dadurch das die aufrufende Funktion über AB_ImExporterContext_free()
+ 	//den Context wieder freigibt dürfen wir nur kopien unserer Daten in den
+ 	//Context einfügen, ansonsten würden die Daten in unserem Objekt
+ 	//gelöscht werden.
+@@ -388,11 +388,11 @@
+ 	if (!this->account_status) return QString();
+ 
+ 	const AB_VALUE *v;
+-	QString value = ""; //empty string als default
++	QString value = QString(); //empty string als default
+ 
+ 	v = AB_AccountStatus_GetBankLine(this->account_status);
+ 	if (v) {
+-		value = QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++		value = QString::fromUtf8("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+ 	}
+ 
+ 	return value;
+@@ -405,13 +405,13 @@
+ 
+ 	const AB_VALUE *v;
+ 	const AB_BALANCE *b;
+-	QString value = ""; //empty string als default
++	QString value = QString(); //empty string als default
+ 
+ 	b = AB_AccountStatus_GetNotedBalance(this->account_status);
+ 	if (b) {
+ 		v = AB_Balance_GetValue(b);
+ 		if (v) {
+-			value = QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++			value = QString::fromUtf8("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+ 		}
+ 	}
+ 
+@@ -425,13 +425,13 @@
+ 
+ 	const AB_VALUE *v;
+ 	const AB_BALANCE *b;
+-	QString value = ""; //empty string als default
++	QString value = QString(); //empty string als default
+ 
+ 	b = AB_AccountStatus_GetBookedBalance(this->account_status);
+ 	if (b) {
+ 		v = AB_Balance_GetValue(b);
+ 		if (v) {
+-			value = QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++			value = QString::fromUtf8("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+ 		}
+ 	}
+ 
+@@ -444,11 +444,11 @@
+ 	if (!this->account_status) return QString();
+ 
+ 	const AB_VALUE *v;
+-	QString value = ""; //empty string als default
++	QString value = QString(); //empty string als default
+ 
+ 	v = AB_AccountStatus_GetDisposable(this->account_status);
+ 	if (v) {
+-		value = QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++		value = QString::fromUtf8("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+ 	}
+ 
+ 	return value;
+@@ -460,11 +460,11 @@
+ 	if (!this->account_status) return QString();
+ 
+ 	const AB_VALUE *v;
+-	QString value = ""; //empty string als default
++	QString value = QString(); //empty string als default
+ 
+ 	v = AB_AccountStatus_GetDisposed(this->account_status);
+ 	if (v) {
+-		value = QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
++		value = QString::fromUtf8("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2);
+ 	}
+ 
+ 	return value;
+diff --git a/src/aqb_accounts.cpp b/src/aqb_accounts.cpp
+--- a/src/aqb_accounts.cpp
++++ b/src/aqb_accounts.cpp
+@@ -144,6 +144,8 @@
+ 					  const QString &owner,
+ 					  const QString &name) const
+ {
++	/** \todo should also support iban and bic! */
++
+ 	aqb_AccountInfo *acc = NULL;
+ 
+ 	//Alle Accounts durchgehen
+@@ -171,10 +173,10 @@
+ aqb_AccountInfo* aqb_Accounts::getAccount(const AB_ACCOUNT *a) const
+ {
+ 	Q_ASSERT(a);
+-	QString kto = AB_Account_GetAccountNumber(a);
+-	QString blz = AB_Account_GetBankCode(a);
+-	QString name = AB_Account_GetAccountName(a);
+-	QString owner = AB_Account_GetOwnerName(a);
++	QString kto = QString::fromUtf8(AB_Account_GetAccountNumber(a));
++	QString blz = QString::fromUtf8(AB_Account_GetBankCode(a));
++	QString name = QString::fromUtf8(AB_Account_GetAccountName(a));
++	QString owner = QString::fromUtf8(AB_Account_GetOwnerName(a));
+ 
+ 	return this->getAccount(kto, blz, owner, name);
+ }
+diff --git a/src/aqb_accounts.h b/src/aqb_accounts.h
+--- a/src/aqb_accounts.h
++++ b/src/aqb_accounts.h
+@@ -65,9 +65,9 @@
+ 
+ 	/** \brief returns the account that matches or NULL */
+ 	aqb_AccountInfo* getAccount(const QString &kontonummer,
+-				    const QString &blz = "",
+-				    const QString &owner = "",
+-				    const QString &name = "") const;
++				    const QString &blz = QString(),
++				    const QString &owner = QString(),
++				    const QString &name = QString()) const;
+ 	/** \overload */
+ 	aqb_AccountInfo* getAccount(const AB_ACCOUNT *a) const;
+ 
+diff --git a/src/aqb_banking.cpp b/src/aqb_banking.cpp
+--- a/src/aqb_banking.cpp
++++ b/src/aqb_banking.cpp
+@@ -60,7 +60,7 @@
+ 	}
+ 
+ 	AB_Banking_GetVersion(&this->major, &this->minor, &this->patch, &this->build);
+-	this->aqbanking_version = QString("%1.%2.%3.%4")
++	this->aqbanking_version = QString::fromUtf8("%1.%2.%3.%4")
+ 					.arg(this->major)
+ 					.arg(this->minor)
+ 					.arg(this->patch)
+@@ -185,7 +185,7 @@
+ 	/** \todo: Adjust the version label when AqBanking supports setting
+ 	 *         the last date.
+ 	 */
+-	return !(this->aqbanking_version < "9.9.9");
++	return !(this->aqbanking_version < QString::fromUtf8("9.9.9"));
+ }
+ 
+ 
+@@ -194,8 +194,8 @@
+ QString aqb_banking::getInstituteFromBLZ(const QString &BLZ) const
+ {
+ 	AB_BANKINFO *bankinfo;
+-	QString Institute = "NO INFORMATION";
+-	bankinfo = AB_Banking_GetBankInfo(this->ab, "de", "", BLZ.toUtf8());
++	QString Institute = QString::fromUtf8("NO INFORMATION");
++	bankinfo = AB_Banking_GetBankInfo(this->ab, "de", "", BLZ.toStdString().c_str());
+ 
+ 	if (bankinfo) {
+ 		Institute = QString::fromUtf8(AB_BankInfo_GetBankName(bankinfo));
+@@ -244,8 +244,10 @@
+ {
+ 	AB_BANKINFO_CHECKRESULT res;
+ 	res = AB_Banking_CheckAccount(this->ab,
+-				      country.toUtf8(), branchId.toUtf8(),
+-				      bankId.toUtf8(), accountId.toUtf8());
++				      country.toStdString().c_str(),
++				      branchId.toStdString().c_str(),
++				      bankId.toStdString().c_str(),
++				      accountId.toStdString().c_str());
+ 	switch (res) {
+ 	case AB_BankInfoCheckResult_Ok:
+ 		result = QObject::tr("OK");
+@@ -289,16 +291,16 @@
+ 		}
+ 	}
+ 
+-	QString resStr = "";
++	QString resStr = QString();
+ 	QString countryCode = iban.left(2);
+ 	QString pruefziffer = iban.mid(2,2);
+ 	QString blz = iban.mid(4,8);
+ 	QString ktonr = iban.mid(12);
+ 
+-	if (countryCode.toUpper() == "DE") {
++	if (countryCode.toUpper() == QString::fromUtf8("DE")) {
+ 		//the IBAN is for a german bank account, so we can also check
+ 		//the account-number and bankcode
+-		if (!this->checkAccount("de", "", blz, ktonr, resStr)) {
++		if (!this->checkAccount(QString::fromUtf8("de"), QString(), blz, ktonr, resStr)) {
+ 			result = QObject::tr("Überprüfung von Kontonummer und "
+ 					     "Bankleitzahl für Deutsches Konto "
+ 					     "fehlerhaft: %1").arg(resStr);
+@@ -312,7 +314,7 @@
+ 	for(int i=0; i<4; i++) {
+ 		if (iban.at(i).isLetter()) {
+ 			//A=10, B=11, C=12 etc.
+-			int value = iban.at(i).toUpper().toAscii()-55;
++			int value = iban.at(i).toUpper().toLatin1()-55;
+ 			pp_substitution.append(QString::number(value));
+ 		} else {
+ 			pp_substitution.append(iban.at(i));
+@@ -324,7 +326,7 @@
+ 	QString sIban;
+ 	for(int i=4; i<iban.size(); i++) {
+ 		if (iban.at(i).isLetter()) {
+-			int value = iban.at(i).toUpper().toAscii()-55;
++			int value = iban.at(i).toUpper().toLatin1()-55;
+ 			sIban.append(QString::number(value));
+ 		} else {
+ 			sIban.append(iban.at(i));
+diff --git a/src/aqb_imexporters.cpp b/src/aqb_imexporters.cpp
+--- a/src/aqb_imexporters.cpp
++++ b/src/aqb_imexporters.cpp
+@@ -274,7 +274,7 @@
+ 	this->names = new QStringList();
+ 	GWEN_DB_NODE *nvars = GWEN_DB_GetFirstVar(this->dbnode);
+ 	while (nvars) {
+-		const char *varname = GWEN_DB_VariableName(nvars);
++		QString varname = QString::fromUtf8(GWEN_DB_VariableName(nvars));
+ 		this->names->append(varname);
+ 
+ 		nvars = GWEN_DB_GetNextVar(nvars);
+@@ -302,7 +302,7 @@
+ QVariant aqb_ieProfile::getValue(const char *varname, int idx /* = 0 */) const
+ {
+ 	QVariant value = QVariant::Invalid;
+-	if (!this->names->contains(varname)) {
++	if (!this->names->contains(QString::fromUtf8(varname))) {
+ 		qWarning() << Q_FUNC_INFO << this << "does not contain a var" << varname;
+ 		return value;
+ 	}
+@@ -311,7 +311,8 @@
+ 
+ 	switch(vartype) {
+ 	case GWEN_DB_NodeType_ValueChar:
+-		value = GWEN_DB_GetCharValue(this->dbnode, varname, idx, "");
++		value = QString::fromUtf8(GWEN_DB_GetCharValue(
++						this->dbnode, varname, idx, ""));
+ 		break;
+ 	case GWEN_DB_NodeType_ValueInt:
+ 		value = GWEN_DB_GetIntValue(this->dbnode, varname, idx, 0);
+diff --git a/src/aqb_imexporters.h b/src/aqb_imexporters.h
+--- a/src/aqb_imexporters.h
++++ b/src/aqb_imexporters.h
+@@ -138,14 +138,14 @@
+ 	int loadProfiles(AB_BANKING *ab);
+ 
+ public:
+-	const char *getName() const { return this->name; }
+-	const char *getType() const { return this->type; }
+-	const char *getDescShort() const { return this->desc_short; }
+-	const char *getDescLong() const { return this->desc_long; }
+-	const char *getFilename() const { return this->filename; }
+-	const char *getPath() const { return this->path; }
+-	const char *getAuthor() const { return this->author; }
+-	const char *getVersion() const { return this->version; }
++	const QString getName() const { return QString::fromUtf8(this->name); }
++	const QString getType() const { return QString::fromUtf8(this->type); }
++	const QString getDescShort() const { return QString::fromUtf8(this->desc_short); }
++	const QString getDescLong() const { return QString::fromUtf8(this->desc_long); }
++	const QString getFilename() const { return QString::fromUtf8(this->filename); }
++	const QString getPath() const { return QString::fromUtf8(this->path); }
++	const QString getAuthor() const { return QString::fromUtf8(this->author); }
++	const QString getVersion() const { return QString::fromUtf8(this->version); }
+ 
+ 	const GWEN_PLUGIN_DESCRIPTION *getPD() const { return this->pd; }
+ 
+diff --git a/src/dialogs/abt_dialog.cpp b/src/dialogs/abt_dialog.cpp
+--- a/src/dialogs/abt_dialog.cpp
++++ b/src/dialogs/abt_dialog.cpp
+@@ -69,7 +69,7 @@
+ 	}
+ 
+ 	//Icon entsprechend der vorgabe einstellen
+-	this->ui->label_Icon->setText(""); //keine Beschriftung
++	this->ui->label_Icon->setText(QString()); //keine Beschriftung
+ 	QIcon tmpIcon;
+ 	QStyle *style = parent ? parent->style() : QApplication::style();
+ 	int iconSize = style->pixelMetric(QStyle::PM_MessageBoxIconSize, 0, parent);
+diff --git a/src/dialogs/abt_dialog.h b/src/dialogs/abt_dialog.h
+--- a/src/dialogs/abt_dialog.h
++++ b/src/dialogs/abt_dialog.h
+@@ -72,9 +72,9 @@
+ 		   QDialogButtonBox::StandardButtons buttons,
+ 		   QDialogButtonBox::StandardButton defaultButton = QDialogButtonBox::NoButton,
+ 		   QMessageBox::Icon Icon = QMessageBox::NoIcon,
+-		   QString dialogName = "",
++		   QString dialogName = QString(),
+ 		   bool showCheckBox = true,
+-		   QString checkBoxText = "");
++		   QString checkBoxText = QString());
+ 
+ 	~abt_dialog();
+ 
+diff --git a/src/dialogs/dialogsettings.cpp b/src/dialogs/dialogsettings.cpp
+--- a/src/dialogs/dialogsettings.cpp
++++ b/src/dialogs/dialogsettings.cpp
+@@ -32,10 +32,10 @@
+ #include "dialogsettings.h"
+ #include "ui_dialogsettings.h"
+ 
+-#include <QtCore/QDebug>
+-#include <QtGui/QFileDialog>
+-#include <QtGui/QInputDialog>
+-#include <QtGui/QMessageBox>
++#include <QDebug>
++#include <QFileDialog>
++#include <QInputDialog>
++#include <QMessageBox>
+ 
+ #include "../abt_settings.h"
+ #include "../dialogs/abt_dialog.h"
+@@ -68,11 +68,16 @@
+ 	this->onCheckBoxRefereshAtStartStateChanged(0);
+ 
+ 	QIcon ico;
+-	ico = QIcon::fromTheme("document-new", QIcon(":/icons/document-new"));
++	ico = QIcon::fromTheme(QString::fromUtf8("document-new"),
++			       QIcon(QString::fromUtf8(":/icons/document-new")));
+ 	this->ui->actionNewProfile->setIcon(ico);
+-	ico = QIcon::fromTheme("document-edit", QIcon(":/icons/document-edit"));
++
++	ico = QIcon::fromTheme(QString::fromUtf8("document-edit"),
++			       QIcon(QString::fromUtf8(":/icons/document-edit")));
+ 	this->ui->actionEditProfile->setIcon(ico);
+-	ico = QIcon::fromTheme("edit-delete", QIcon(":/icons/delete"));
++
++	ico = QIcon::fromTheme(QString::fromUtf8("edit-delete"),
++			       QIcon(QString::fromUtf8(":/icons/delete")));
+ 	this->ui->actionDeleteProfile->setIcon(ico);
+ 
+ 	connect(this->ui->checkBox_getBalance, SIGNAL(stateChanged(int)),
+@@ -135,19 +140,27 @@
+ 	this->ui->lineEdit_history->setText(this->settings->getHistoryFilename());
+ 	this->ui->lineEdit_recipients->setText(this->settings->getRecipientsFilename());
+ 
+-	this->ui->checkBox_warnCosts->setChecked(this->settings->showDialog("WarnCosts"));
+-	this->ui->checkBox_jobAddedToOutput->setChecked(this->settings->showDialog("JobAddOutput"));
+-	this->ui->checkBox_warnDeleteProfile->setChecked(this->settings->showDialog("ProfileConfirmDelete"));
+-	this->ui->checkBox_warnDeleteHistory->setChecked(this->settings->showDialog("HistoryConfirmDelete"));
+-	this->ui->checkBox_runtimeLanguageChange->setChecked(this->settings->showDialog("RuntimeLanguageChange"));
++	QString name = QString::fromUtf8("WarnCosts");
++	this->ui->checkBox_warnCosts->setChecked(this->settings->showDialog(name));
++	name = QString::fromUtf8("JobAddOutput");
++	this->ui->checkBox_jobAddedToOutput->setChecked(this->settings->showDialog(name));
++	name = QString::fromUtf8("ProfileConfirmDelete");
++	this->ui->checkBox_warnDeleteProfile->setChecked(this->settings->showDialog(name));
++	name = QString::fromUtf8("HistoryConfirmDelete");
++	this->ui->checkBox_warnDeleteHistory->setChecked(this->settings->showDialog(name));
++	name = QString::fromUtf8("RuntimeLanguageChange");
++	this->ui->checkBox_runtimeLanguageChange->setChecked(this->settings->showDialog(name));
+ 
+-	this->ui->checkBox_getBalance->setChecked(this->settings->appendJobToOutbox("getBalance"));
+-	this->ui->checkBox_getStandingOrders->setChecked(this->settings->appendJobToOutbox("getStandingOrders"));
+-	this->ui->checkBox_getDatedTransfers->setChecked(this->settings->appendJobToOutbox("getDatedTransfers"));
+-	this->ui->checkBox_executeAtStart->setChecked(this->settings->appendJobToOutbox("executeAtStart"));
++	name = QString::fromUtf8("getBalance");
++	this->ui->checkBox_getBalance->setChecked(this->settings->appendJobToOutbox(name));
++	name = QString::fromUtf8("getStandingOrders");
++	this->ui->checkBox_getStandingOrders->setChecked(this->settings->appendJobToOutbox(name));
++	name = QString::fromUtf8("getDatedTransfers");
++	this->ui->checkBox_getDatedTransfers->setChecked(this->settings->appendJobToOutbox(name));
++	name = QString::fromUtf8("executeAtStart");
++	this->ui->checkBox_executeAtStart->setChecked(this->settings->appendJobToOutbox(name));
+ 
+-	this->ui->checkBox_adv_manualOutboxRearrange->setChecked(
+-			this->settings->isAdvancedOptionSet("ManualOutboxRearrange"));
++	this->loadAdvancedSettings();
+ 
+ 	this->loadFavoriteImExpFromSettings();
+ 
+@@ -178,7 +191,6 @@
+ 			break;
+ 		}
+ 	}
+-
+ }
+ 
+ //private
+@@ -189,20 +201,46 @@
+ 	this->settings->setHistoryFilename(this->ui->lineEdit_history->text());
+ 	this->settings->setRecipientsFilename(this->ui->lineEdit_recipients->text());
+ 
+-	this->settings->setShowDialog("WarnCosts", this->ui->checkBox_warnCosts->isChecked());
+-	this->settings->setShowDialog("JobAddOutput", this->ui->checkBox_jobAddedToOutput->isChecked());
+-	this->settings->setShowDialog("ProfileConfirmDelete", this->ui->checkBox_warnDeleteProfile->isChecked());
+-	this->settings->setShowDialog("HistoryConfirmDelete", this->ui->checkBox_warnDeleteHistory->isChecked());
+-	this->settings->setShowDialog("RuntimeLanguageChange", this->ui->checkBox_runtimeLanguageChange->isChecked());
++	this->settings->setShowDialog(QString::fromUtf8("WarnCosts"),
++				      this->ui->checkBox_warnCosts->isChecked());
++	this->settings->setShowDialog(QString::fromUtf8("JobAddOutput"),
++				      this->ui->checkBox_jobAddedToOutput->isChecked());
++	this->settings->setShowDialog(QString::fromUtf8("ProfileConfirmDelete"),
++				      this->ui->checkBox_warnDeleteProfile->isChecked());
++	this->settings->setShowDialog(QString::fromUtf8("HistoryConfirmDelete"),
++				      this->ui->checkBox_warnDeleteHistory->isChecked());
++	this->settings->setShowDialog(QString::fromUtf8("RuntimeLanguageChange"),
++				      this->ui->checkBox_runtimeLanguageChange->isChecked());
+ 
+-	this->settings->setAppendJobToOutbox("getBalance", this->ui->checkBox_getBalance->isChecked());
+-	this->settings->setAppendJobToOutbox("getStandingOrders", this->ui->checkBox_getStandingOrders->isChecked());
+-	this->settings->setAppendJobToOutbox("getDatedTransfers", this->ui->checkBox_getDatedTransfers->isChecked());
+-	this->settings->setAppendJobToOutbox("executeAtStart", this->ui->checkBox_executeAtStart->isChecked());
++	this->settings->setAppendJobToOutbox(QString::fromUtf8("getBalance"),
++					     this->ui->checkBox_getBalance->isChecked());
++	this->settings->setAppendJobToOutbox(QString::fromUtf8("getStandingOrders"),
++					     this->ui->checkBox_getStandingOrders->isChecked());
++	this->settings->setAppendJobToOutbox(QString::fromUtf8("getDatedTransfers"),
++					     this->ui->checkBox_getDatedTransfers->isChecked());
++	this->settings->setAppendJobToOutbox(QString::fromUtf8("executeAtStart"),
++					     this->ui->checkBox_executeAtStart->isChecked());
+ 
+-	this->settings->setAdvancedOption("ManualOutboxRearrange",
++	//Hint: the advanced options are only saved by this->settings if the
++	//      advanced options are enabled!
++	this->settings->setAdvancedOption(QString::fromUtf8("ManualOutboxRearrange"),
+ 			this->ui->checkBox_adv_manualOutboxRearrange->isChecked());
+ 
++	//save regex values only if they can be used with QRegExp, otherwise
++	//store the default regex value!
++	QString regex;
++	regex = this->ui->lineEdit_regexPurpose->text();
++	if (!QRegExp(regex).isValid())
++		regex = DEFAULT_REGEX_PURPOSE;
++	this->settings->setAdvancedOption(QString::fromUtf8("RegexPurpose"), regex);
++
++	regex = this->ui->lineEdit_regexRecipient->text();
++	if (!QRegExp(regex).isValid())
++		regex = DEFAULT_REGEX_PURPOSE;
++	this->settings->setAdvancedOption(QString::fromUtf8("RegexRecipient"),
++					  this->ui->lineEdit_regexRecipient->text());
++
++
+ 	this->settings->setAutoAddNewRecipients(this->ui->checkBox_autoAddNewRecipients->isChecked());
+ 
+ 	this->settings->setAutoExportEnabled(this->ui->checkBox_autoExport->isChecked());
+@@ -215,6 +253,25 @@
+ 
+ }
+ 
++//private
++/** \brief only loads and updates the advanced settings options! */
++void DialogSettings::loadAdvancedSettings(bool updateState /* = true */)
++{
++	bool checked;
++
++	checked = this->settings->isAdvancedEnabled();
++	this->ui->checkBox_adv_iKnowWhatIDo->setChecked(checked);
++
++	if (updateState)
++		this->setAdvancedOptionState(checked);
++
++	checked = this->settings->isAdvancedOptionSet(QString::fromUtf8("ManualOutboxRearrange"));
++	this->ui->checkBox_adv_manualOutboxRearrange->setChecked(checked);
++
++	this->ui->lineEdit_regexPurpose->setText(this->settings->allowedCharsPurposeRegex());
++	this->ui->lineEdit_regexRecipient->setText(this->settings->allowedCharsRecipientRegex());
++}
++
+ void DialogSettings::loadFavoriteImExpFromSettings()
+ {
+ 	//load all as favorite marked im-/exort profiles
+@@ -261,7 +318,7 @@
+ 	Q_ASSERT(this->imexp);
+ 
+ 	//remember the selected item
+-	QString pluginName = "";
++	QString pluginName = QString();
+ 	int row = this->ui->listWidget_plugins->currentRow();
+ 	if (row != -1) {
+ 		pluginName = this->ui->listWidget_plugins->item(row)->text();
+@@ -289,7 +346,7 @@
+ {
+ 	const aqb_iePlugin *plugin = NULL;
+ 	int row = this->ui->listWidget_plugins->currentRow();
+-	QString pluginName = "";
++	QString pluginName = QString();
+ 	if (row >= 0)
+ 		pluginName = this->ui->listWidget_plugins->item(row)->text();
+ 
+@@ -317,7 +374,7 @@
+ 		item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
+ 		this->ui->tableWidget_profiles->setItem(rowc, 0, item);
+ 
+-		bool selected = this->selection.value(pluginName, "") == item->text();
++		bool selected = this->selection.value(pluginName, QString()) == item->text();
+ 		//qDebug() << "ROW:" << rowc << "profile" << item->text() << selected;
+ 
+ 		item = new QTableWidgetItem();
+@@ -363,7 +420,7 @@
+ 
+ 		//if the profile is a favorite this is stored in the private QHash
+ 		QString key = pluginName;
+-		key.append("/");
++		key.append(QString::fromUtf8("/"));
+ 		key.append(profile->getValue("name").toString());
+ 		if (this->imex_favorites->value(key, false)) {
+ 			checkState = Qt::Checked;
+@@ -422,7 +479,7 @@
+ 		exportsAvailable = false;
+ 		foreach(aqb_ieProfile *profile, *plugin->getProfiles()) {
+ 			//the plugin must contain a profile useable for export
+-			if (profile->getNames()->contains("export") &&
++			if (profile->getNames()->contains(QString::fromUtf8("export")) &&
+ 			    profile->getValue("export").toInt() == 1) {
+ 				exportsAvailable = true;
+ 				break;
+@@ -447,6 +504,25 @@
+ }
+ 
+ //private
++/** \brief sets the advanced options state
++ *
++ * Enables or disables the input to the the advanced option fields depending
++ * on the supplied \a enabled value.
++ */
++void DialogSettings::setAdvancedOptionState(bool enabled)
++{
++	this->ui->checkBox_adv_manualOutboxRearrange->setEnabled(enabled);
++	this->ui->lineEdit_regexPurpose->setEnabled(enabled);
++	this->ui->label_12->setEnabled(enabled);
++	this->ui->lineEdit_regexRecipient->setEnabled(enabled);
++	this->ui->label_13->setEnabled(enabled);
++
++	//the state is set already, do not update it. Otherwise we get a
++	//circular calling!
++	this->loadAdvancedSettings(false);
++}
++
++//private
+ bool DialogSettings::getSelectedPluginAndProfile(const aqb_iePlugin **plugin,
+ 						 const aqb_ieProfile **profile) const
+ {
+@@ -679,7 +755,7 @@
+ 	QString key; // in the form of "pluginname/profilename"
+ 	int listWidgetRow = this->ui->listWidget_plugins->currentRow();
+ 	key = this->ui->listWidget_plugins->item(listWidgetRow)->text(); //pluginname
+-	key.append("/");
++	key.append(QString::fromUtf8("/"));
+ 	key.append(this->ui->tableWidget_profiles->item(item->row(), 0)->text()); //profilename
+ 
+ 	this->imex_favorites->insert(key, checked);
+@@ -762,9 +838,9 @@
+ 
+ 		QString path = banking->getUserDataDir();
+ 
+-		path.append("/imexporters");
+-		path.append("/").append(plugin->getName());
+-		path.append("/profiles/");
++		path.append(QString::fromUtf8("/imexporters"));
++		path.append(QString::fromUtf8("/")).append(plugin->getName());
++		path.append(QString::fromUtf8("/profiles/"));
+ 		lclImexpDir.setPath(path);
+ 
+ 		if (!lclImexpDir.exists()) {
+@@ -787,15 +863,17 @@
+ 
+ 	}
+ 
+-	GWEN_DB_NODE *dbProfile = AB_Banking_GetImExporterProfile(banking->getAqBanking(),
+-								  plugin->getName(),
+-								  profileName.toUtf8());
++	GWEN_DB_NODE *dbProfile = AB_Banking_GetImExporterProfile(
++					banking->getAqBanking(),
++					plugin->getName().toStdString().c_str(),
++					profileName.toStdString().c_str());
+ 
+ 	QString filename = profile->getValue("fileName").toString();
+ 
+-	int ret = this->imexp->editProfileWithAqbDialog(dbProfile,
+-							plugin->getName(),
+-							filename.toUtf8());
++	int ret = this->imexp->editProfileWithAqbDialog(
++					dbProfile,
++					plugin->getName().toStdString().c_str(),
++					filename.toStdString().c_str());
+ 
+ 	if (ret < 0) {
+ 		//something went wrong
+@@ -822,7 +900,7 @@
+ 	newname = QInputDialog::getText(this, tr("Profil Name"),
+ 					tr("Bitte geben sie einen Namen für "
+ 					   "das neue Profil ein"),
+-					QLineEdit::Normal, "", &inputOk);
++					QLineEdit::Normal, QString(), &inputOk);
+ 
+ 	if (!inputOk || newname.isEmpty()) {
+ 		//no name was given or cancel clicked
+@@ -871,7 +949,7 @@
+ 			     newname.toUtf8());
+ 
+ 	QString filename = newname;
+-	filename.append(".conf");
++	filename.append(QString::fromUtf8(".conf"));
+ 
+ 	//the folder for the new local profile must exists, otherwise the
+ 	//profile could not be saved by aqbanking
+@@ -881,9 +959,9 @@
+ 
+ 	QString path = banking->getUserDataDir();
+ 
+-	path.append("/imexporters");
+-	path.append("/").append(selPlugin->getName());
+-	path.append("/profiles/");
++	path.append(QString::fromUtf8("/imexporters"));
++	path.append(QString::fromUtf8("/")).append(selPlugin->getName());
++	path.append(QString::fromUtf8("/profiles/"));
+ 	lclImexpDir.setPath(path);
+ 
+ 	if (!lclImexpDir.exists()) {
+@@ -904,9 +982,10 @@
+ 		}
+ 	}
+ 
+-	int ret = this->imexp->editProfileWithAqbDialog(dbProfile,
+-							selPlugin->getName(),
+-							filename.toUtf8());
++	int ret = this->imexp->editProfileWithAqbDialog(
++					dbProfile,
++					selPlugin->getName().toStdString().c_str(),
++					filename.toStdString().c_str());
+ 
+ 	if (ret < 0) {
+ 		//something went wrong
+@@ -961,9 +1040,10 @@
+ 
+ 	QString path = banking->getUserDataDir();
+ 
+-	path.append("/imexporters");
+-	path.append("/").append(selPlugin->getName());
+-	path.append("/profiles/");
++	//TODO: used 3 or more times, make a function!
++	path.append(QString::fromUtf8("/imexporters"));
++	path.append(QString::fromUtf8("/")).append(selPlugin->getName());
++	path.append(QString::fromUtf8("/profiles/"));
+ 	lclImexpDir.setPath(path);
+ 
+ 	if (!lclImexpDir.exists()) {
+@@ -982,15 +1062,15 @@
+ 				     "werden?").arg(selProfile->getValue("name").toString()),
+ 				  QDialogButtonBox::Yes | QDialogButtonBox::No,
+ 				  QDialogButtonBox::Yes, QMessageBox::Question,
+-				  "ProfileConfirmDelete");
++				  QString::fromUtf8("ProfileConfirmDelete"));
+ 		if (delDia.exec() == QDialogButtonBox::Yes) {
+ 			//remember the key for settings before deletion
+ 			QString key = selPlugin->getName();
+-			key.append("/");
++			key.append(QString::fromUtf8("/"));
+ 			key.append(selProfile->getValue("name").toString());
+ 
+ 			QString file = lclImexpDir.absolutePath();
+-			file.append("/").append(profileFilename);
++			file.append(QString::fromUtf8("/")).append(profileFilename);
+ 			QFile::remove(file);
+ 			qDebug() << Q_FUNC_INFO << "file" << file << "deleted!";
+ 
+@@ -1052,7 +1132,8 @@
+ 		return;
+ 	} else {
+ 		for (int i=0; i<this->ui->comboBox_profile->count(); ++i) {
+-			if (this->ui->comboBox_profile->itemText(i) == "default") {
++			if (this->ui->comboBox_profile->itemText(i) ==
++			    QString::fromUtf8("default")) {
+ 				idx = i;
+ 				//default idx found, use it
+ 				goto CURRENT_INDEX_CHANGED_SET_INDEX;
+@@ -1081,3 +1162,17 @@
+ 	this->ui->label_10->setEnabled(checked);
+ 	this->ui->label_11->setEnabled(checked);
+ }
++
++//private slot
++/** \brief gets called when the checked value is changed.
++ *
++ * Saves the value immediately so that others functions can use this to
++ * evaluate if edits are allowed or not.
++ *
++ * Also update the enabled options for the advanced edits.
++*/
++void DialogSettings::on_checkBox_adv_iKnowWhatIDo_toggled(bool checked)
++{
++	this->settings->setAdvancedOptionEnabled(checked);
++	this->setAdvancedOptionState(checked);
++}
+diff --git a/src/dialogs/dialogsettings.h b/src/dialogs/dialogsettings.h
+--- a/src/dialogs/dialogsettings.h
++++ b/src/dialogs/dialogsettings.h
+@@ -32,9 +32,9 @@
+ #ifndef DIALOGSETTINGS_H
+ #define DIALOGSETTINGS_H
+ 
+-#include <QtGui/QDialog>
+-#include <QtGui/QAbstractButton>
+-#include <QtGui/QTableWidgetItem>
++#include <QDialog>
++#include <QAbstractButton>
++#include <QTableWidgetItem>
+ 
+ #include "../aqb_imexporters.h"
+ 
+@@ -66,6 +66,7 @@
+ 
+ 	void loadFromSettings();
+ 	void saveToSettings();
++	void loadAdvancedSettings(bool updateState = true);
+ 
+ 	void loadFavoriteImExpFromSettings();
+ 	void saveFavoriteImExpToSettings();
+@@ -75,6 +76,8 @@
+ 	void refreshImExProfileTableWidget();
+ 	void refreshAutoExportComboBoxPlugin();
+ 
++	void setAdvancedOptionState(bool enabled);
++
+ 	/** @brief set @a plugin and @a profile to the selected values (or NULL) */
+ 	bool getSelectedPluginAndProfile(const aqb_iePlugin **plugin = NULL,
+ 					 const aqb_ieProfile **profile = NULL) const;
+@@ -103,6 +106,7 @@
+ 	void on_actionDeleteProfile_triggered();
+ 	void on_comboBox_plugin_currentIndexChanged(const QString &arg1);
+ 	void on_checkBox_autoExport_toggled(bool checked);
++	void on_checkBox_adv_iKnowWhatIDo_toggled(bool checked);
+ };
+ 
+ #endif // DIALOGSETTINGS_H
+diff --git a/src/dialogs/dialogsettings.ui b/src/dialogs/dialogsettings.ui
+--- a/src/dialogs/dialogsettings.ui
++++ b/src/dialogs/dialogsettings.ui
+@@ -49,7 +49,7 @@
+    <item>
+     <widget class="QTabWidget" name="tabWidget">
+      <property name="currentIndex">
+-      <number>0</number>
++      <number>2</number>
+      </property>
+      <widget class="QWidget" name="tab_general">
+       <attribute name="title">
+@@ -925,7 +925,7 @@
+       <attribute name="title">
+        <string>Erweitert</string>
+       </attribute>
+-      <layout class="QVBoxLayout" name="verticalLayout_10">
++      <layout class="QVBoxLayout" name="verticalLayout_9">
+        <item>
+         <widget class="QLabel" name="label_7">
+          <property name="text">
+@@ -937,42 +937,90 @@
+         </widget>
+        </item>
+        <item>
+-        <layout class="QVBoxLayout" name="verticalLayout_9">
+-         <property name="leftMargin">
+-          <number>12</number>
++        <widget class="QCheckBox" name="checkBox_adv_iKnowWhatIDo">
++         <property name="text">
++          <string>Ich weiß was ich mache. Änderungen zulassen!</string>
+          </property>
+-         <property name="topMargin">
+-          <number>16</number>
++        </widget>
++       </item>
++       <item>
++        <widget class="Line" name="line_2">
++         <property name="orientation">
++          <enum>Qt::Horizontal</enum>
+          </property>
+-         <item>
+-          <widget class="QCheckBox" name="checkBox_adv_manualOutboxRearrange">
+-           <property name="whatsThis">
+-            <string>Wenn diese Option aktiviert ist können die Aufträge im Ausgang in der vorgegebenen Reihenfolge verändert werden.
++        </widget>
++       </item>
++       <item>
++        <widget class="QCheckBox" name="checkBox_adv_manualOutboxRearrange">
++         <property name="whatsThis">
++          <string>Wenn diese Option aktiviert ist können die Aufträge im Ausgang in der vorgegebenen Reihenfolge verändert werden.
+ 
+ Je nachdem an welcher Position ein Auftrag zur Bank gesendet wird kann dies Auswirkungen auf die Antwort der Bank haben.
+ 
+ Außerdem hat eine Verschiebung unter Umständen Einfluss darauf an welche Stelle ein neuer Aufträge in den Ausgang eingereiht wird!</string>
+-           </property>
+-           <property name="text">
+-            <string>Änderung der Reihenfolge im Ausgang ermöglichen (Hilfetext beachten)</string>
++         </property>
++         <property name="text">
++          <string>Änderung der Reihenfolge im Ausgang ermöglichen (Hilfetext beachten)</string>
++         </property>
++        </widget>
++       </item>
++       <item>
++        <layout class="QFormLayout" name="formLayout">
++         <item row="0" column="0">
++          <widget class="QLineEdit" name="lineEdit_regexPurpose">
++           <property name="minimumSize">
++            <size>
++             <width>140</width>
++             <height>22</height>
++            </size>
+            </property>
+           </widget>
+          </item>
+-         <item>
+-          <spacer name="verticalSpacer_4">
+-           <property name="orientation">
+-            <enum>Qt::Vertical</enum>
++         <item row="0" column="1">
++          <widget class="QLabel" name="label_12">
++           <property name="whatsThis">
++            <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Der hier angegebene reguläre Ausdruck wird verwendet um zu Prüfen das nur gültige Zeichen als Verwendungszweck eingegeben werden können.&lt;/p&gt;&lt;p&gt;Er wird auf jedes Zeichen das Eingegeben wird angewendet und wenn der reguläre Ausdruck nicht passt wird die Eingabe unterdrückt.&lt;/p&gt;&lt;p&gt;Zusätzlich wird beim Absenden der Nachricht jede Zeile des Verwendungszwecks gegen den angegebenen regulären Ausdruck, mit einem vorgestellten &amp;quot;^&amp;quot; und angehangenem &amp;quot;+$&amp;quot;, auf Gültigkeit geprüft.&lt;/p&gt;&lt;p&gt;Beachten Sie Bitte beim Ändern des Ausdrucks das nicht alle Zeichen durch die Banken unterstützt werden!&lt;/p&gt;&lt;p&gt;Standard: &amp;quot;[-+ .,/*&amp;amp;%0-9A-Za-z]&amp;quot;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+            </property>
+-           <property name="sizeHint" stdset="0">
++           <property name="text">
++            <string>Regulärer Ausdruck der definiert welche Zeichen als Eingabe im Verwendungszweck zugelassen sind.</string>
++           </property>
++          </widget>
++         </item>
++         <item row="1" column="0">
++          <widget class="QLineEdit" name="lineEdit_regexRecipient">
++           <property name="minimumSize">
+             <size>
+-             <width>20</width>
+-             <height>40</height>
++             <width>140</width>
++             <height>22</height>
+             </size>
+            </property>
+-          </spacer>
++          </widget>
++         </item>
++         <item row="1" column="1">
++          <widget class="QLabel" name="label_13">
++           <property name="whatsThis">
++            <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Der hier angegebene reguläre Ausdruck wird verwendet um zu Prüfen das nur gültige Zeichen als Empfängernamen eingegeben werden können.&lt;/p&gt;&lt;p&gt;Er wird auf jedes Zeichen das Eingegeben wird angewendet und wenn der reguläre Ausdruck nicht passt wird die Eingabe unterdrückt.&lt;/p&gt;&lt;p&gt;Zusätzlich wird beim Absenden der Nachricht jede Zeile des Empfängernamens gegen den angegebenen regulären Ausdruck, mit einem vorgestellten &amp;quot;^&amp;quot; und angehangenem &amp;quot;+$&amp;quot;, auf Gültigkeit geprüft.&lt;/p&gt;&lt;p&gt;Beachten Sie Bitte beim Ändern des Ausdrucks das nicht alle Zeichen durch die Banken unterstützt werden!&lt;/p&gt;&lt;p&gt;Standard: &amp;quot;[-+ .,/*&amp;amp;%0-9A-Za-z]&amp;quot;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
++           </property>
++           <property name="text">
++            <string>Regulärer Ausdruck der definiert welche Zeichen als Eingabe für Empfängernamen zugelassen sind.</string>
++           </property>
++          </widget>
+          </item>
+         </layout>
+        </item>
++       <item>
++        <spacer name="verticalSpacer_4">
++         <property name="orientation">
++          <enum>Qt::Vertical</enum>
++         </property>
++         <property name="sizeHint" stdset="0">
++          <size>
++           <width>20</width>
++           <height>220</height>
++          </size>
++         </property>
++        </spacer>
++       </item>
+       </layout>
+      </widget>
+     </widget>
+@@ -1048,7 +1096,6 @@
+   <tabstop>checkBox_getDatedTransfers</tabstop>
+   <tabstop>checkBox_executeAtStart</tabstop>
+   <tabstop>buttonBox</tabstop>
+-  <tabstop>tabWidget</tabstop>
+   <tabstop>listWidget_plugins</tabstop>
+   <tabstop>tableWidget_profiles</tabstop>
+   <tabstop>checkBox_adv_manualOutboxRearrange</tabstop>
+diff --git a/src/main.cpp b/src/main.cpp
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -28,7 +28,7 @@
+  *
+  ******************************************************************************/
+ 
+-#include <QtGui/QApplication>
++#include <QApplication>
+ #include <QTextCodec>
+ #include <QSharedMemory>
+ #include <QMessageBox>
+@@ -47,7 +47,11 @@
+ 
+ 
+ /** a message handler to display qDebug(), qWarning() etc. in the debug-Dialog */
++#if QT_VERSION >= 0x050000
++void myMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg);
++#else
+ void myMessageHandler(QtMsgType type, const char *msg);
++#endif
+ 
+ int main(int argc, char *argv[])
+ {
+@@ -60,25 +64,28 @@
+ 	//setCodecForTr() and setCodedForCString() are removed in Qt 5.0.0
+ 	//see http://qt-project.org/doc/qt-5.0/qtdoc/sourcebreaks.html
+ 	QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
+-	QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
++	//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
+ #endif
+-	QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
+ 	QLocale::setDefault(QLocale(QLocale::German, QLocale::Germany));
++	//QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
+ 
+ 	//create the DebugDialogWidget, that displays all qDebug(), qWarning()
+ 	//etc. messages and install the MsgHandler that redirect the messages.
+ 	debugDialog = new DebugDialogWidget();
++#if QT_VERSION >= 0x050000
++	qInstallMessageHandler(myMessageHandler);
++#else
+ 	qInstallMsgHandler(myMessageHandler);
+-
++#endif
+ 
+ 	#ifdef ABTRANSFER_VERSION
+-		app.setApplicationVersion(ABTRANSFER_VERSION);
++		app.setApplicationVersion(QString::fromUtf8(ABTRANSFER_VERSION));
+ 	#else
+ 	#warning "ABTRANSFER_VERSION not set! Compiling without version information!"
+ 	#endif
+-	app.setOrganizationName("Patrick Wacker");
+-	app.setOrganizationDomain("schmufu.dyndns.org");
+-	app.setApplicationName("AB-Transfers");
++	app.setOrganizationName(QString::fromUtf8("Patrick Wacker"));
++	app.setOrganizationDomain(QString::fromUtf8("schmufu.dyndns.org"));
++	app.setApplicationName(QString::fromUtf8("AB-Transfers"));
+ 
+ 	//On MacOS the QSharedMemory seems not to work as assumed.
+ 	//Therefore, as a fast workaround, we do not use the protection on MacOS.
+@@ -88,7 +95,7 @@
+ 	//As key for the sharedMemory the program name and the "Key-ID" from
+ 	//my the PGP-Key is used (Patrick Wacker <schmufu.s at gmx.net>)
+ 	QString smKey = app.applicationName();
+-	smKey.append("-49E8D03B0700F6C4"); //PGP-Key-ID from Patrick Wacker
++	smKey.append(QString::fromUtf8("-49E8D03B0700F6C4")); //PGP-Key-ID from Patrick Wacker
+ 	QSharedMemory myMem(smKey);
+ 	if ( !myMem.create(sizeof(int)) ) {
+ 		qDebug() << Q_FUNC_INFO << "SharedMemoryError:" << myMem.errorString();
+@@ -121,7 +128,11 @@
+ 
+ 			if (msgRet != QMessageBox::Yes) {
+ 				//cleanup and cancel execution
++#if QT_VERSION >= 0x050000
++				qInstallMessageHandler(NULL);
++#else
+ 				qInstallMsgHandler(NULL);
++#endif
+ 				delete debugDialog;
+ 				return 9;
+ 			}
+@@ -159,17 +170,21 @@
+ 	//free all created GWEN_STRINGLIST and GWEN_TIME objects
+ 	abt_conv::freeAllGwenLists();
+ 
+-
++#if QT_VERSION >= 0x050000
++	qInstallMessageHandler(NULL);
++#else
+ 	qInstallMsgHandler(NULL); //uninstall the MsgHandler
++#endif
+ 	delete debugDialog; //and the corresponding dialog
+ 
+ 	return apprv;
+ }
+ 
+-
+-void myMessageHandler(QtMsgType type, const char *msg)
++#if QT_VERSION >= 0x050000
++void myMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
+ {
+-	fprintf(stderr, "%s\n", msg); //always show the messages at stderr
++	//always show the messages at stderr
++	fprintf(stderr, "[%s] %s\n", context.function, msg.toStdString().c_str());
+ 
+ 	//only show the messages if wanted
+ 	//! @todo implement the option to deactivate debug messges
+@@ -177,16 +192,45 @@
+ 
+ 	switch(type) {
+ 	case QtDebugMsg:
+-		debugDialog->appendMsg(QString("DEBUG: ").append(msg));
++		debugDialog->appendMsg(QString::fromUtf8("DEBUG: ").append(msg);
+ 		break;
+ 	case QtWarningMsg:
+-		debugDialog->appendMsg(QString("WARNING: ").append(msg));
++		debugDialog->appendMsg(QString::fromUtf8("WARNING: ").append(msg);
+ 		break;
+ 	case QtCriticalMsg:
+-		debugDialog->appendMsg(QString("CRITICAL: ").append(msg));
++		debugDialog->appendMsg(QString::fromUtf8("CRITICAL: ").append(msg);
++		break;
++	case QtFatalMsg:
++		fprintf(stderr, "Fatal: %s\n", msg.toStdString().c_str());
++		abort();
++	}
++}
++#else
++void myMessageHandler(QtMsgType type, const char *msg)
++{
++	//always show the messages at stderr
++	fprintf(stderr, "%s\n", QString::fromUtf8(msg).toStdString().c_str());
++
++	//only show the messages if wanted
++	//! @todo implement the option to deactivate debug messges
++	//if (!settings->displayDebugMessages()) return;
++
++	switch(type) {
++	case QtDebugMsg:
++		debugDialog->appendMsg(QString::fromUtf8("DEBUG: ").
++				       append(QString::fromUtf8(msg)));
++		break;
++	case QtWarningMsg:
++		debugDialog->appendMsg(QString::fromUtf8("WARNING: ").
++				       append(QString::fromUtf8(msg)));
++		break;
++	case QtCriticalMsg:
++		debugDialog->appendMsg(QString::fromUtf8("CRITICAL: ").
++				       append(QString::fromUtf8(msg)));
+ 		break;
+ 	case QtFatalMsg:
+ 		fprintf(stderr, "Fatal: %s\n", msg);
+ 		abort();
+ 	}
+ }
++#endif
+diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
+--- a/src/mainwindow.cpp
++++ b/src/mainwindow.cpp
+@@ -196,11 +196,6 @@
+ 	this->timer->setSingleShot(true);
+ 	connect(this->timer, SIGNAL(timeout()), this, SLOT(TimerTimeOut()));
+ 	this->timer->start(10);
+-
+-#ifdef TESTWIDGETACCESS
+-	this->ui->menuBar->addAction(this->actTestWidgetAccess);
+-#endif
+-
+ }
+ 
+ MainWindow::~MainWindow()
+@@ -324,7 +319,7 @@
+ 				QDialogButtonBox::Ok,
+ 				QDialogButtonBox::Ok,
+ 				QMessageBox::Information,
+-				"RuntimeLanguageChange");
++				QString::fromUtf8("RuntimeLanguageChange"));
+ 		 dia.exec();
+ 	}
+ }
+@@ -357,24 +352,24 @@
+ 		       QDialogButtonBox::Ok,
+ 		       QDialogButtonBox::Ok,
+ 		       QMessageBox::Information,
+-		       "WarnCosts");
++		       QString::fromUtf8("WarnCosts"));
+ 	dia.exec();
+ 
+ 	//check if jobs should be put in the outbox and if the should be
+ 	//executed at start.
+-	if (settings->appendJobToOutbox("getBalance")) {
++	if (settings->appendJobToOutbox(QString::fromUtf8("getBalance"))) {
+ 		this->appendGetBalanceToOutbox();
+ 	}
+ 
+-	if (settings->appendJobToOutbox("getDatedTransfers")) {
++	if (settings->appendJobToOutbox(QString::fromUtf8("getDatedTransfers"))) {
+ 		this->appendGetDatedTransfersToOutbox();
+ 	}
+ 
+-	if (settings->appendJobToOutbox("getStandingOrders")) {
++	if (settings->appendJobToOutbox(QString::fromUtf8("getStandingOrders"))) {
+ 		this->appendGetStandingOrdersToOutbox();
+ 	}
+ 
+-	if (settings->appendJobToOutbox("executeAtStart")) {
++	if (settings->appendJobToOutbox(QString::fromUtf8("executeAtStart"))) {
+ 		this->jobctrl->execQueuedTransactions();
+ 	}
+ 
+@@ -391,89 +386,106 @@
+ {
+ 	actTransferNational = new QAction(this);
+ 	actTransferNational->setText(tr("National"));
+-	actTransferNational->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actTransferNational, SIGNAL(triggered()), this, SLOT(onActionTransferNationalTriggered()));
++	actTransferNational->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actTransferNational, SIGNAL(triggered()),
++		this, SLOT(onActionTransferNationalTriggered()));
+ 	connect(this->ui->pushButton_transferNational, SIGNAL(clicked()),
+ 		this->actTransferNational, SLOT(trigger()));
+ 
+ 	actTransferInternational = new QAction(this);
+ 	actTransferInternational->setText(tr("International"));
+-	actTransferInternational->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actTransferInternational, SIGNAL(triggered()), this, SLOT(onActionTransferInternationalTriggered()));
++	actTransferInternational->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actTransferInternational, SIGNAL(triggered()),
++		this, SLOT(onActionTransferInternationalTriggered()));
+ 	connect(this->ui->pushButton_transferInternational, SIGNAL(clicked()),
+ 		this->actTransferInternational, SLOT(trigger()));
+ 
+ 	actTransferSepa = new QAction(this);
+ 	actTransferSepa->setText(tr("SEPA (EU weit)"));
+-	actTransferSepa->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actTransferSepa, SIGNAL(triggered()), this, SLOT(onActionTransferSepaTriggered()));
++	actTransferSepa->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actTransferSepa, SIGNAL(triggered()),
++		this, SLOT(onActionTransferSepaTriggered()));
+ 	connect(this->ui->pushButton_transferSepa, SIGNAL(clicked()),
+ 		this->actTransferSepa, SLOT(trigger()));
+ 
+ 	actTransferInternal = new QAction(this);
+ 	actTransferInternal->setText(tr("Umbuchung"));
+-	actTransferInternal->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actTransferInternal, SIGNAL(triggered()), this, SLOT(onActionTransferInternalTriggered()));
++	actTransferInternal->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actTransferInternal, SIGNAL(triggered()),
++		this, SLOT(onActionTransferInternalTriggered()));
+ 	connect(this->ui->pushButton_transferInternal, SIGNAL(clicked()),
+ 		this->actTransferInternal, SLOT(trigger()));
+ 
+ 	actDatedNew = new QAction(this);
+ 	actDatedNew->setText(tr("Anlegen"));
+-	actDatedNew->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actDatedNew, SIGNAL(triggered()), this, SLOT(onActionDatedNewTriggered()));
++	actDatedNew->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actDatedNew, SIGNAL(triggered()),
++		this, SLOT(onActionDatedNewTriggered()));
+ 	connect(this->ui->pushButton_datedNew, SIGNAL(clicked()),
+ 		this->actDatedNew, SLOT(trigger()));
+ 
+ 	actDatedUpdate = new QAction(this);
+ 	actDatedUpdate->setText(tr("Aktualisieren"));
+-	actDatedUpdate->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actDatedUpdate, SIGNAL(triggered()), this, SLOT(onActionDatedUpdateTriggered()));
++	actDatedUpdate->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actDatedUpdate, SIGNAL(triggered()),
++		this, SLOT(onActionDatedUpdateTriggered()));
+ 	connect(this->ui->pushButton_datedUpdate, SIGNAL(clicked()),
+ 		this->actDatedUpdate, SLOT(trigger()));
+ 
+ 	actStandingNew = new QAction(this);
+ 	actStandingNew->setText(tr("Anlegen"));
+-	actStandingNew->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actStandingNew, SIGNAL(triggered()), this, SLOT(onActionStandingNewTriggered()));
++	actStandingNew->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actStandingNew, SIGNAL(triggered()),
++		this, SLOT(onActionStandingNewTriggered()));
+ 	connect(this->ui->pushButton_standingNew, SIGNAL(clicked()),
+ 		this->actStandingNew, SLOT(trigger()));
+ 
+ 	actStandingUpdate = new QAction(this);
+ 	actStandingUpdate->setText(tr("Aktualisieren"));
+-	actStandingUpdate->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actStandingUpdate, SIGNAL(triggered()), this, SLOT(onActionStandingUpdateTriggered()));
++	actStandingUpdate->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actStandingUpdate, SIGNAL(triggered()),
++		this, SLOT(onActionStandingUpdateTriggered()));
+ 	connect(this->ui->pushButton_standingUpdate, SIGNAL(clicked()),
+ 		this->actStandingUpdate, SLOT(trigger()));
+ 
+ 	actDebitNote = new QAction(this);
+ 	actDebitNote->setText(tr("Lastschrift"));
+-	actDebitNote->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actDebitNote, SIGNAL(triggered()), this, SLOT(onActionDebitNoteTriggered()));
++	actDebitNote->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actDebitNote, SIGNAL(triggered()),
++		this, SLOT(onActionDebitNoteTriggered()));
+ 
+ 	actDebitNoteSepa = new QAction(this);
+ 	actDebitNoteSepa->setText(tr("SEPA-Lastschrift (EU weit)"));
+-	actDebitNoteSepa->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actDebitNoteSepa, SIGNAL(triggered()), this, SLOT(onActionDebitNoteSepaTriggered()));
++	actDebitNoteSepa->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actDebitNoteSepa, SIGNAL(triggered()),
++		this, SLOT(onActionDebitNoteSepaTriggered()));
+ 
+ 	actUpdateBalance = new QAction(this);
+ 	actUpdateBalance->setText(tr("Kontostand aktualisieren"));
+-	actUpdateBalance->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actUpdateBalance, SIGNAL(triggered()), this, SLOT(onActionUpdateBalanceTriggered()));
++	actUpdateBalance->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actUpdateBalance, SIGNAL(triggered()),
++		this, SLOT(onActionUpdateBalanceTriggered()));
+ 
+ 	actShowAvailableJobs = new QAction(this);
+ 	actShowAvailableJobs->setText(tr("Unterstütze Aufträge"));
+-	actShowAvailableJobs->setIcon(QIcon(":/icons/bank-icon"));
+-	connect(actShowAvailableJobs, SIGNAL(triggered()), this, SLOT(onActionShowAvailableJobsTriggered()));
++	actShowAvailableJobs->setIcon(QIcon(QString::fromUtf8(":/icons/bank-icon")));
++	connect(actShowAvailableJobs, SIGNAL(triggered()),
++		this, SLOT(onActionShowAvailableJobsTriggered()));
+ 
+ 	actSaveAllData = new QAction(this);
+ 	actSaveAllData->setText(tr("Speichern"));
+-	actSaveAllData->setIcon(QIcon::fromTheme("document-save", QIcon(":/icons/document-save")));
+-	connect(actSaveAllData, SIGNAL(triggered()), this, SLOT(onActionSaveAllDataTriggered()));
++	actSaveAllData->setIcon(QIcon::fromTheme(QString::fromUtf8("document-save"),
++						 QIcon(QString::fromUtf8(":/icons/document-save"))));
++	connect(actSaveAllData, SIGNAL(triggered()),
++		this, SLOT(onActionSaveAllDataTriggered()));
+ 
+ 
+ #ifdef TESTWIDGETACCESS
+-	actTestWidgetAccess = new QAction(tr("TestWidget"), this);
+-	connect(actTestWidgetAccess, SIGNAL(triggered()), this, SLOT(onActionTestWidgetAccessTriggered()));
++	actTestWidgetAccess = new QAction(this);
++	actTestWidgetAccess->setText(tr("TestWidget"));
++	connect(actTestWidgetAccess, SIGNAL(triggered()),
++		this, SLOT(onActionTestWidgetAccessTriggered()));
++	this->ui->menuBar->addAction(this->actTestWidgetAccess);
+ #endif
+ 
+ 
+@@ -538,7 +550,7 @@
+ void MainWindow::createDockToolbar()
+ {
+ 	this->dockToolbar = new QToolBar(tr("Dock Toolbar"),this);
+-	this->dockToolbar->setObjectName("dockToolbar");
++	this->dockToolbar->setObjectName(QString::fromUtf8("dockToolbar"));
+ 	this->dockToolbar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
+ 	this->dockToolbar->addAction(this->dock_Accounts->toggleViewAction());
+ 	this->dockToolbar->addAction(this->dock_KnownRecipient->toggleViewAction());
+@@ -610,7 +622,7 @@
+ {
+ 	/** create a new QDockWidget ("Online Konten"). */
+ 	this->dock_Accounts = new QDockWidget(tr("Online Konten"),this);
+-	this->dock_Accounts->setObjectName("OnlineAccounts");
++	this->dock_Accounts->setObjectName(QString::fromUtf8("OnlineAccounts"));
+ 	qDebug() << "creating bankAccountsWidget";
+ 	/** A new BankAccountsWidget is set as the new widget in der QDockWidget. */
+ 	BankAccountsWidget *baw = new BankAccountsWidget(this->accounts, this->dock_Accounts);
+@@ -619,7 +631,8 @@
+ 	this->dock_Accounts->setAllowedAreas(Qt::AllDockWidgetAreas);
+ 	this->dock_Accounts->setFloating(false);
+ 	this->dock_Accounts->hide();
+-	this->dock_Accounts->toggleViewAction()->setIcon(QIcon(":/icons/bank-icon"));
++	QIcon ico = QIcon(QString::fromUtf8(":/icons/bank-icon"));
++	this->dock_Accounts->toggleViewAction()->setIcon(ico);
+ 	/** Add the DockWidget topDockWidgetArea of the MainWindow. */
+ 	this->addDockWidget(Qt::TopDockWidgetArea, this->dock_Accounts);
+ 	/** Connection for the ContextMenu is established. */
+@@ -642,7 +655,7 @@
+ void MainWindow::createDockKnownRecipients()
+ {
+ 	this->dock_KnownRecipient = new QDockWidget(tr("Bekannte Empfänger"),this);
+-	this->dock_KnownRecipient->setObjectName("KnownRecipients");
++	this->dock_KnownRecipient->setObjectName(QString::fromUtf8("KnownRecipients"));
+ 	qDebug() << "creating knownEmpfaengerWidget";
+ 	KnownEmpfaengerWidget *kew = new KnownEmpfaengerWidget(settings->loadKnownEmpfaenger(), this->dock_KnownRecipient);
+ 	//Changes of the known recipients must be send to the widget
+@@ -659,7 +672,8 @@
+ 	this->dock_KnownRecipient->setAllowedAreas(Qt::AllDockWidgetAreas);
+ 	this->dock_KnownRecipient->setFloating(false);
+ 	this->dock_KnownRecipient->hide();
+-	this->dock_KnownRecipient->toggleViewAction()->setIcon(QIcon(":/icons/knownEmpfaenger"));
++	QIcon ico = QIcon(QString::fromUtf8(":/icons/knownEmpfaenger"));
++	this->dock_KnownRecipient->toggleViewAction()->setIcon(ico);
+ 	this->addDockWidget(Qt::RightDockWidgetArea, this->dock_KnownRecipient);
+ 
+ 	//restore widget state to the previous settings
+@@ -671,7 +685,7 @@
+ void MainWindow::createDockStandingOrders()
+ {
+ 	QDockWidget *dock = new QDockWidget(tr("Daueraufträge"), this);
+-	dock->setObjectName("dockStandingOrders");
++	dock->setObjectName(QString::fromUtf8("dockStandingOrders"));
+ 
+ 	QVBoxLayout *layoutDock = new QVBoxLayout();
+ 	QHBoxLayout *layoutAcc = new QHBoxLayout();
+@@ -710,7 +724,7 @@
+ 	dock->setAllowedAreas(Qt::AllDockWidgetAreas);
+ 	dock->setFloating(false);
+ 	dock->hide();
+-	dock->toggleViewAction()->setIcon(QIcon(":/icons/dauerauftrag"));
++	dock->toggleViewAction()->setIcon(QIcon(QString::fromUtf8(":/icons/dauerauftrag")));
+ 	this->addDockWidget(Qt::RightDockWidgetArea, dock);
+ 
+ 	this->dock_KnownStandingOrders = dock;
+@@ -733,7 +747,7 @@
+ 	}
+ 
+ 	//get the last selected account (from settings)
+-	int selAccID = settings->loadSelAccountInWidget("StandingOrders");
++	int selAccID = settings->loadSelAccountInWidget(QString::fromUtf8("StandingOrders"));
+ 	const aqb_AccountInfo *lastAcc = this->accounts->getAccount(selAccID);
+ 
+ 	//set all known accounts in the ComboBox
+@@ -749,7 +763,7 @@
+ void MainWindow::createDockDatedTransfers()
+ {
+ 	QDockWidget *dock = new QDockWidget(tr("Terminüberweisungen"), this);
+-	dock->setObjectName("dockDatedTransfers");
++	dock->setObjectName(QString::fromUtf8("dockDatedTransfers"));
+ 
+ 	QVBoxLayout *layoutDock = new QVBoxLayout();
+ 	QHBoxLayout *layoutAcc = new QHBoxLayout();
+@@ -789,7 +803,7 @@
+ 	dock->setAllowedAreas(Qt::AllDockWidgetAreas);
+ 	dock->setFloating(false);
+ 	dock->hide();
+-	dock->toggleViewAction()->setIcon(QIcon(":/icons/dauerauftrag"));
++	dock->toggleViewAction()->setIcon(QIcon(QString::fromUtf8(":/icons/dauerauftrag")));
+ 	this->addDockWidget(Qt::RightDockWidgetArea, dock);
+ 
+ 	this->dock_KnownDatedTransfers = dock;
+@@ -812,7 +826,7 @@
+ 	}
+ 
+ 	//get the last selected account (from settings)
+-	int selAccID = settings->loadSelAccountInWidget("DatedTransfers");
++	int selAccID = settings->loadSelAccountInWidget(QString::fromUtf8("DatedTransfers"));
+ 	const aqb_AccountInfo *lastAcc = this->accounts->getAccount(selAccID);
+ 
+ 	//set all known accounts in the ComboBox
+@@ -884,7 +898,8 @@
+ 
+ 	//get all account data from the relevant file
+ 	ctx = abt_parser::load_local_ctx(settings->getAccountDataFilename(),
+-					 "ctxfile", "default");
++					 QString::fromUtf8("ctxfile"),
++					 QString::fromUtf8("default"));
+ 	abt_parser::parse_ctx(ctx, this->accounts);
+ 	AB_ImExporterContext_free(ctx); //ctx no longer needed, all loaded
+ }
+@@ -902,7 +917,8 @@
+ 	if (!ctx) return; //if no ctx created, we have nothing to save
+ 
+ 	abt_parser::save_local_ctx(ctx, settings->getAccountDataFilename(),
+-				   "ctxfile", "default");
++				   QString::fromUtf8("ctxfile"),
++				   QString::fromUtf8("default"));
+ 	AB_ImExporterContext_free(ctx);
+ }
+ 
+@@ -919,7 +935,8 @@
+ 
+ 	//load all history items from the relevant file
+ 	ctx = abt_parser::load_local_ctx(settings->getHistoryFilename(),
+-					 "ctxfile", "default");
++					 QString::fromUtf8("ctxfile"),
++					 QString::fromUtf8("default"));
+ 	abt_parser::parse_ctx(ctx, this->accounts, this->history);
+ 	AB_ImExporterContext_free(ctx);
+ }
+@@ -935,7 +952,8 @@
+ 	//get the AB_IMEXPORTER_CONTEXT for the history and save it to file
+ 	ctx = this->history->getContext();
+ 	abt_parser::save_local_ctx(ctx, settings->getHistoryFilename(),
+-				   "ctxfile", "default");
++				   QString::fromUtf8("ctxfile"),
++				   QString::fromUtf8("default"));
+ 	AB_ImExporterContext_free(ctx);
+ }
+ 
+@@ -962,7 +980,7 @@
+ 		       tr("Der Auftrag \"%1\" wurde erfolgreich zum "
+ 			  "Ausgangskorb hinzugefügt").arg(ji->getType()),
+ 		       QDialogButtonBox::Ok, QDialogButtonBox::Ok,
+-		       QMessageBox::Information, "JobAddOutput");
++		       QMessageBox::Information, QString::fromUtf8("JobAddOutput"));
+ 	dia.exec();
+ }
+ 
+@@ -996,18 +1014,20 @@
+ 	licenseDialog->setWindowTitle(tr("Lizenz"));
+ 	QVBoxLayout *licenseLayout = new QVBoxLayout(licenseDialog);
+ 	QLabel *licenseText = new QLabel(licenseDialog);
+-	QString lt = "Copyright (C) 2011-2013 Patrick Wacker<br /><br />"
+-		     "This program is free software; you can redistribute it and/or<br />"
+-		     "modify it under the terms of the GNU General Public License<br />"
+-		     "as published by the Free Software Foundation; either version 2<br />"
+-		     "of the License, or (at your option) any later version.<br /><br />"
+-		     "This program is distributed in the hope that it will be useful,<br />"
+-		     "but WITHOUT ANY WARRANTY; without even the implied warranty of<br />"
+-		     "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br />"
+-		     "GNU General Public License for more details.<br /><br />"
+-		     "You should have received a copy of the GNU General Public License<br />"
+-		     "along with this program; if not, write to the Free Software<br />"
+-		     "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.<br /><br />";
++	QString lt = QString::fromUtf8(
++		"Copyright (C) 2011-2013 Patrick Wacker<br /><br />"
++		"This program is free software; you can redistribute it and/or<br />"
++		"modify it under the terms of the GNU General Public License<br />"
++		"as published by the Free Software Foundation; either version 2<br />"
++		"of the License, or (at your option) any later version.<br /><br />"
++		"This program is distributed in the hope that it will be useful,<br />"
++		"but WITHOUT ANY WARRANTY; without even the implied warranty of<br />"
++		"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<br />"
++		"GNU General Public License for more details.<br /><br />"
++		"You should have received a copy of the GNU General Public License<br />"
++		"along with this program; if not, write to the Free Software<br />"
++		"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.<br /><br />"
++		);
+ 	lt.append(tr("siehe auch <a href=\"http://www.gnu.de/documents/gpl-2.0.de.html\">http://www.gnu.de/documents/gpl-2.0.de.html</a>"));
+ 	licenseText->setText(lt);
+ 	licenseText->setOpenExternalLinks(true);
+@@ -1021,7 +1041,7 @@
+ 	QHBoxLayout *hbox = new QHBoxLayout();
+ 	//Icon-Image as graphic top left
+ 	QLabel *img = new QLabel(about);
+-	QPixmap *iconpic = new QPixmap(":/icons/bank-icon");
++	QPixmap *iconpic = new QPixmap(QString::fromUtf8(":/icons/bank-icon"));
+ 	img->setPixmap(*iconpic);
+ 	img->setScaledContents(true);
+ 	img->setMaximumSize(100, 100);
+@@ -1041,31 +1061,31 @@
+ 
+ 	vbox->addSpacing(16);
+ 
+-	QLabel *author = new QLabel(QString("Author: Patrick Wacker"));
++	QLabel *author = new QLabel(QString::fromUtf8("Author: Patrick Wacker"));
+ 	vbox->addWidget(author, 0, Qt::AlignCenter);
+-	QLabel *version = new QLabel(QString("Version: %1").arg(qApp->applicationVersion()));
++	QLabel *version = new QLabel(QString::fromUtf8("Version: %1").arg(qApp->applicationVersion()));
+ 	vbox->addWidget(version, 0, Qt::AlignCenter);
+ #ifdef ABTRANSFER_VERSION_EXTRA
+-	QLabel *versionExtra = new QLabel(QString("<b>%1</b>").arg(ABTRANSFER_VERSION_EXTRA));
++	QLabel *versionExtra = new QLabel(QString::fromUtf8("<b>%1</b>").arg(QString::fromUtf8(ABTRANSFER_VERSION_EXTRA)));
+ 	vbox->addWidget(versionExtra, 0, Qt::AlignCenter);
+ #endif
+-	QLabel *versionSVN = new QLabel(QString("svn revision: %1").arg(ABTRANSFER_SVN_REVISION));
++	QLabel *versionSVN = new QLabel(QString::fromUtf8("svn revision: %1").arg(QString::fromUtf8(ABTRANSFER_SVN_REVISION)));
+ 	vbox->addWidget(versionSVN, 0, Qt::AlignCenter);
+ 
+ 	vbox->addSpacing(10);
+ 
+ 
+-	QLabel *webURL = new QLabel(tr("Website: <a href=\"%1\">%1</a>").arg("http://schmufu.dyndns.org/dokuwiki/ab_transfer:start"));
++	QLabel *webURL = new QLabel(tr("Website: <a href=\"%1\">%1</a>").arg(QString::fromUtf8("http://schmufu.dyndns.org/dokuwiki/ab_transfer:start")));
+ 	webURL->setOpenExternalLinks(true);
+ 	webURL->setTextInteractionFlags(Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard);
+ 	vbox->addWidget(webURL, 0, Qt::AlignLeft);
+ 
+-	QLabel *svnURL = new QLabel(tr("svn repo: <a href=\"%1\">%1</a>").arg("http://schmufu.dyndns.org/svn/ab_transfers/"));
++	QLabel *svnURL = new QLabel(tr("svn repo: <a href=\"%1\">%1</a>").arg(QString::fromUtf8("http://schmufu.dyndns.org/svn/ab_transfers/")));
+ 	svnURL->setOpenExternalLinks(true);
+ 	svnURL->setTextInteractionFlags(Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard);
+ 	vbox->addWidget(svnURL, 0, Qt::AlignLeft);
+ 
+-	QLabel *tracUrl = new QLabel(tr("trac: <a href=\"%1\">%1</a>").arg("http://schmufu.dyndns.org/trac/abtransfers/"));
++	QLabel *tracUrl = new QLabel(tr("trac: <a href=\"%1\">%1</a>").arg(QString::fromUtf8("http://schmufu.dyndns.org/trac/abtransfers/")));
+ 	tracUrl->setOpenExternalLinks(true);
+ 	tracUrl->setTextInteractionFlags(Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard);
+ 	vbox->addWidget(tracUrl, 0, Qt::AlignLeft);
+@@ -1086,11 +1106,12 @@
+ 	QLabel *usedImages = new QLabel(tr("<b>genutzte Grafiken:</b>"));
+ 	vbox->addWidget(usedImages, 0, Qt::AlignLeft);
+ 
+-	QLabel *iconsUrl = new QLabel(QString("Icons used from Oxygen <a href=\"%1\">%1</a><br />"
+-					      "and from 'Ecommerce Business icon pack'<br />"
+-					      "<a href=\"%2\">%2</a>")
+-					      .arg("http://www.oxygen-icons.org")
+-					      .arg("http://www.iconspedia.com/pack/ecommerce-business-icons-4074"));
++	QLabel *iconsUrl = new QLabel(QString::fromUtf8(
++			"Icons used from Oxygen <a href=\"%1\">%1</a><br />"
++			"and from 'Ecommerce Business icon pack'<br />"
++			"<a href=\"%2\">%2</a>")
++			.arg(QString::fromUtf8("http://www.oxygen-icons.org"))
++			.arg(QString::fromUtf8("http://www.iconspedia.com/pack/ecommerce-business-icons-4074")));
+ 	iconsUrl->setOpenExternalLinks(true);
+ 	iconsUrl->setAlignment(Qt::AlignHCenter);
+ 	iconsUrl->setTextInteractionFlags(Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard);
+@@ -1141,7 +1162,7 @@
+ 	}
+ #else //QtWebKit is available, we use a QWebView. (supporting 'local links')
+ 	QWebView *view = new QWebView();
+-	view->settings()->setDefaultTextEncoding("utf-8");
++	view->settings()->setDefaultTextEncoding(QString::fromUtf8("utf-8"));
+ 	view->setMinimumSize(520, 600);
+ 
+ 	if (helpText.open(QFile::ReadOnly)) {
+@@ -1170,8 +1191,8 @@
+ {
+ 	DialogSettings DiaSettings(settings, banking->getAqBanking(), this);
+ 
+-	QString classname = QObject::sender()->metaObject()->className();
+-	if (classname == "page_history") {
++	QString classname = QString::fromUtf8(QObject::sender()->metaObject()->className());
++	if (classname == QString::fromUtf8("page_history")) {
+ 		//we were called from the history page
+ 		DiaSettings.setActiveTab(1); //set im-/export as active tab
+ 	}
+@@ -1202,14 +1223,14 @@
+ void MainWindow::selectedStandingOrdersAccountChanged(const aqb_AccountInfo* acc)
+ {
+ 	if (acc == NULL) return; //cancel if no account is supplied
+-	settings->saveSelAccountInWidget("StandingOrders", acc);
++	settings->saveSelAccountInWidget(QString::fromUtf8("StandingOrders"), acc);
+ }
+ 
+ //private slot
+ void MainWindow::selectedDatedTransfersAccountChanged(const aqb_AccountInfo* acc)
+ {
+ 	if (acc == NULL) return; //cancel if no account is supplied
+-	settings->saveSelAccountInWidget("DatedTransfers", acc);
++	settings->saveSelAccountInWidget(QString::fromUtf8("DatedTransfers"), acc);
+ }
+ 
+ //private slot
+@@ -1262,6 +1283,8 @@
+ 	BankAccountsWidget *acc = this->dock_Accounts->findChild<BankAccountsWidget*>();
+ 	if (!acc) return; //cancel if no BankAccountsWidget was found
+ 	this->jobctrl->addGetStandingOrders(acc->getSelectedAccount());
++	//disable above and enable below to test the SEPA StandingOrders
++	//this->jobctrl->addGetSepaStandingOrders(acc->getSelectedAccount());
+ }
+ 
+ //private slot
+@@ -1308,8 +1331,10 @@
+ 	gl->setRowMinimumHeight(1, 12); //one row as seperator
+ 
+ 	//prepare used icons
+-	QIcon icoSup = QIcon::fromTheme("dialog-ok-apply", QIcon(":/icons/ok"));
+-	QIcon icoNotSup = QIcon::fromTheme("edit-delete", QIcon(":/icons/delete"));
++	QIcon icoSup = QIcon::fromTheme(QString::fromUtf8("dialog-ok-apply"),
++					QIcon(QString::fromUtf8(":/icons/ok")));
++	QIcon icoNotSup = QIcon::fromTheme(QString::fromUtf8("edit-delete"),
++					   QIcon(QString::fromUtf8(":/icons/delete")));
+ 	const QPixmap pixSup = icoSup.pixmap(16, QIcon::Normal); //supported
+ 	const QPixmap pixNotSup = icoNotSup.pixmap(16, QIcon::Normal); //not supported
+ 	const QPixmap pixLatSup = icoSup.pixmap(16, QIcon::Disabled); //later supported
+@@ -1845,9 +1870,11 @@
+ 		break;
+ 	} //switch(period)
+ 
+-	QString strFirstDate = correctFirstDate.toString("ddd dd.MM.yyyy");
+-	QString strLastDate = correctLastDate.isValid() ? correctLastDate.toString("ddd dd.MM.yyyy") : tr("Bis auf weiteres");
+-	QString strNextDate = correctNextDate.toString("ddd dd.MM.yyyy");
++	QString strFirstDate = correctFirstDate.toString(QString::fromUtf8("ddd dd.MM.yyyy"));
++	QString strLastDate = correctLastDate.isValid() ?
++		correctLastDate.toString(QString::fromUtf8("ddd dd.MM.yyyy")) :
++		tr("Bis auf weiteres");
++	QString strNextDate = correctNextDate.toString(QString::fromUtf8("ddd dd.MM.yyyy"));
+ 
+ 	int ret;
+ 	ret = QMessageBox::question(
+@@ -2098,8 +2125,10 @@
+ 	abt_jobInfo *job = this->jobctrl->jobqueueList()->at(itemNr);
+ 
+ 	QString jobAccBankcode, jobAccNumber;
+-	jobAccBankcode = AB_Account_GetBankCode(AB_Job_GetAccount(job->getJob()));
+-	jobAccNumber =AB_Account_GetAccountNumber(AB_Job_GetAccount(job->getJob()));
++	jobAccBankcode = QString::fromUtf8(
++		AB_Account_GetBankCode(AB_Job_GetAccount(job->getJob())));
++	jobAccNumber = QString::fromUtf8(
++		AB_Account_GetAccountNumber(AB_Job_GetAccount(job->getJob())));
+ 
+ 	//get the account that matches the local transaction data
+ 	acc = this->accounts->getAccount(jobAccNumber, jobAccBankcode);
+@@ -2182,7 +2211,7 @@
+ 
+ 	const QString langFile = this->translations->currentLanguageFile();
+ 
+-	if (langFile.startsWith(":") || langFile.isEmpty()) {
++	if (langFile.startsWith(QChar::fromLatin1(':')) || langFile.isEmpty()) {
+ 		//language file from embedded resource or the default language
+ 		//(German) is selected. Everthing fine ;)
+ 		return;
+@@ -2212,8 +2241,9 @@
+ 		       .arg(langFile),
+ 		       QDialogButtonBox::Ok, QDialogButtonBox::Ok,
+ 		       QMessageBox::Warning,
+-		       QString("WarnTrans_%1-%2").arg(this->translations->currentLanguage())
+-						 .arg(appVersion),
++		       QString::fromUtf8("WarnTrans_%1-%2")
++				.arg(this->translations->currentLanguage())
++				.arg(appVersion),
+ 		       true, tr("Diese Meldung nicht wieder anzeigen "
+ 				"(nicht reaktivierbar!)."));
+ 	dia.exec();
+@@ -2262,7 +2292,7 @@
+ void MainWindow::createAndSendEUTransfer(const widgetTransfer* /* not used yet: sender */)
+ {
+ 	qWarning() << "create EU Transfer not implemented yet!";
+-	this->statusBar()->showMessage("create EU Transfer not implemented yet!");
++	this->statusBar()->showMessage(QString::fromUtf8("create EU Transfer not implemented yet!"));
+ 	return;
+ 
+ //	const aqb_AccountInfo *acc = sender->localAccount->getAccount();
+@@ -2469,7 +2499,7 @@
+ void MainWindow::createAndSendDebitNote(const widgetTransfer *sender)
+ {
+ 	qWarning() << "create Debit Note not implemented yet!";
+-	this->statusBar()->showMessage("create Debit Note not implemented yet!");
++	this->statusBar()->showMessage(QString::fromUtf8("create Debit Note not implemented yet!"));
+ 	return;
+ 
+ 	const aqb_AccountInfo *acc = sender->localAccount->getAccount();
+@@ -2533,7 +2563,7 @@
+ void MainWindow::createAndSendSepaDebitNote(const widgetTransfer* /* not used yet: sender */)
+ {
+ 	qWarning() << "create SEPA Debit Note not implemented yet!";
+-	this->statusBar()->showMessage("create SEPA Debit Note not implemented yet!");
++	this->statusBar()->showMessage(QString::fromUtf8("create SEPA Debit Note not implemented yet!"));
+ 	return;
+ 
+ //	const aqb_AccountInfo *acc = sender->localAccount->getAccount();
+@@ -2595,18 +2625,18 @@
+ //private
+ void MainWindow::checkReachedDatedTransfers()
+ {
+-	QString msgText = "";
++	QString msgText = QString();
+ 	foreach(aqb_AccountInfo *acc, this->accounts->getAccountHash().values()) {
+ 		//next account if this account does not have a datedTransfers-List
+ 		if (acc->getKnownDatedTransfers() == NULL) continue;
+ 		for(int i=0; i < acc->getKnownDatedTransfers()->size(); ++i) {
+ 			abt_datedTransferInfo *dt = acc->getKnownDatedTransfers()->at(i);
+ 			if (dt->getTransaction()->getDate() <= QDate::currentDate()) {
+-				msgText.append("<table>");
++				msgText.append(QString::fromUtf8("<table>"));
+ 				msgText.append(tr("<tr><td>Begünstigter:</td><td>%1</td></tr>").arg(dt->getTransaction()->getRemoteName().at(0)));
+ 				msgText.append(tr("<tr><td>Betrag:</td><td>%1</td></tr>").arg(abt_conv::ABValueToString(dt->getTransaction()->getValue(), true)));
+ 				msgText.append(tr("<tr><td><b>Ausführen am:</b></td><td>%1</td></tr>").arg(dt->getTransaction()->getDate().toString(Qt::SystemLocaleShortDate)));
+-				msgText.append("</table>");
++				msgText.append(QString::fromUtf8("</table>"));
+ 			}
+ 		}
+ 	}
+diff --git a/src/mainwindow.h b/src/mainwindow.h
+--- a/src/mainwindow.h
++++ b/src/mainwindow.h
+@@ -32,9 +32,9 @@
+ #define MAINWINDOW_H
+ 
+ #include <QMainWindow>
+-#include <QtGui/QListWidgetItem>
+-#include <QtGui/QDockWidget>
+-#include <QtGui/QToolBar>
++#include <QListWidgetItem>
++#include <QDockWidget>
++#include <QToolBar>
+ 
+ #include "aqb_accounts.h"
+ #include "abt_job_ctrl.h"
+@@ -45,7 +45,7 @@
+ #include "pages/page_history.h"
+ 
+ //uncomment the following if access to pagewidgettests.cpp is wanted
+-//#define TESTWIDGETACCESS
++#define TESTWIDGETACCESS
+ 
+ class widgetTransfer;
+ class widgetRecurrence;
+diff --git a/src/pages/page_ausgang.cpp b/src/pages/page_ausgang.cpp
+--- a/src/pages/page_ausgang.cpp
++++ b/src/pages/page_ausgang.cpp
+@@ -101,7 +101,8 @@
+ 	this->actDelete = new QAction(this);
+ 	this->actDelete->setText(tr("Löschen"));
+ 	this->actDelete->setToolTip(tr("Ausgewählten Job löschen"));
+-	this->actDelete->setIcon(QIcon::fromTheme("edit-delete", QIcon(":/icons/delete")));
++	this->actDelete->setIcon(QIcon::fromTheme(QString::fromUtf8("edit-delete"),
++						  QIcon(QString::fromUtf8(":/icons/delete"))));
+ 	connect(this->ui->pushButton_del, SIGNAL(clicked()),
+ 		this->actDelete, SLOT(trigger()));
+ 	connect(this->actDelete, SIGNAL(triggered()),
+@@ -110,14 +111,15 @@
+ 	this->actEdit = new QAction(this);
+ 	this->actEdit->setText(tr("Bearbeiten"));
+ 	this->actEdit->setToolTip(tr("Ausgewählten Job bearbeiten"));
+-	this->actEdit->setIcon(QIcon::fromTheme("document-edit", QIcon(":/icons/document-edit")));
++	this->actEdit->setIcon(QIcon::fromTheme(QString::fromUtf8("document-edit"),
++						QIcon(QString::fromUtf8(":/icons/document-edit"))));
+ 	connect(this->actEdit, SIGNAL(triggered()),
+ 		this, SLOT(onActionEditTriggered()));
+ 
+ 	this->actUp = new QAction(this);
+ 	this->actUp->setText(tr("Auf"));
+ 	this->actUp->setToolTip(tr("Ausgewählten Job nach oben verschieben"));
+-	this->actUp->setIcon(QIcon(":/icons/up"));
++	this->actUp->setIcon(QIcon(QString::fromUtf8(":/icons/up")));
+ 	connect(this->ui->pushButton_up, SIGNAL(clicked()),
+ 		this->actUp, SLOT(trigger()));
+ 	connect(this->actUp, SIGNAL(triggered()),
+@@ -126,7 +128,7 @@
+ 	this->actDown = new QAction(this);
+ 	this->actDown->setText(tr("Ab"));
+ 	this->actDown->setToolTip(tr("Ausgewählten Job nach unten verschieben"));
+-	this->actDown->setIcon(QIcon(":/icons/down"));
++	this->actDown->setIcon(QIcon(QString::fromUtf8(":/icons/down")));
+ 	connect(this->actDown, SIGNAL(triggered()),
+ 		this, SLOT(onActionDownTriggered()));
+ 	connect(this->ui->pushButton_down, SIGNAL(clicked()),
+@@ -214,7 +216,7 @@
+ 		JobInfo = jql->at(i)->getInfo();
+ 		for (int j=0; j<JobInfo->size(); j++) {
+ 			item = new QTreeWidgetItem();
+-			item->setData(0, Qt::DisplayRole, "");
++			item->setData(0, Qt::DisplayRole, QString());
+ 			item->setData(1, Qt::DisplayRole, JobInfo->at(j));
+ 			item->setFlags(Qt::NoItemFlags);
+ 			topItem->addChild(item);
+@@ -245,7 +247,8 @@
+ {
+ 	bool enabled = (this->ui->treeWidget->selectedItems().size() > 0);
+ 	bool one_selected = (this->ui->treeWidget->selectedItems().size() == 1);
+-	bool adv_wanted = this->settings->isAdvancedOptionSet("ManualOutboxRearrange");
++	bool adv_wanted = this->settings->isAdvancedOptionSet(
++				  QString::fromUtf8("ManualOutboxRearrange"));
+ 
+ 	this->ui->pushButton_del->setEnabled(enabled);
+ 	this->ui->pushButton_up->setEnabled(one_selected && adv_wanted);
+diff --git a/src/pages/page_history.cpp b/src/pages/page_history.cpp
+--- a/src/pages/page_history.cpp
++++ b/src/pages/page_history.cpp
+@@ -33,9 +33,9 @@
+ #include "ui_page_history.h"
+ 
+ #include <QMessageBox>
+-#include <QtGui/QMenu>
+-#include <QtGui/QFileDialog>
+-#include <QtCore/QDebug>
++#include <QMenu>
++#include <QFileDialog>
++#include <QDebug>
+ 
+ #include "../dialogs/abt_dialog.h"
+ #include "../abt_history.h"
+@@ -56,11 +56,14 @@
+ 	ui->setupUi(this);
+ 
+ 	QIcon ico;
+-	ico = QIcon::fromTheme("document-new", QIcon(":/icons/document-new"));
++	ico = QIcon::fromTheme(QString::fromUtf8("document-new"),
++			       QIcon(QString::fromUtf8(":/icons/document-new")));
+ 	this->ui->toolButton_new->setIcon(ico);
+-	ico = QIcon::fromTheme("document-export", QIcon(":/icons/document-export"));
++	ico = QIcon::fromTheme(QString::fromUtf8("document-export"),
++			       QIcon(QString::fromUtf8(":/icons/document-export")));
+ 	this->ui->toolButton_export->setIcon(ico);
+-	ico = QIcon::fromTheme("edit-delete", QIcon(":/icons/delete"));
++	ico = QIcon::fromTheme(QString::fromUtf8("edit-delete"),
++			       QIcon(QString::fromUtf8(":/icons/delete")));
+ 	this->ui->toolButton_delete->setIcon(ico);
+ 
+ 	this->history = history;
+@@ -130,15 +133,15 @@
+ 	if (ui->treeWidget->isHeaderHidden())
+ 		return; //do nothing! No items shown.
+ 
+-	int width = settings->getColWidth("history", 0, 210);
++	int width = settings->getColWidth(QString::fromUtf8("history"), 0, 210);
+ 	ui->treeWidget->setColumnWidth(0, width); //type
+-	width = settings->getColWidth("history", 1, 135);
++	width = settings->getColWidth(QString::fromUtf8("history"), 1, 135);
+ 	ui->treeWidget->setColumnWidth(1, width); //recipient
+-	width = settings->getColWidth("history", 2, 200);
++	width = settings->getColWidth(QString::fromUtf8("history"), 2, 200);
+ 	ui->treeWidget->setColumnWidth(2, width); //purpose
+-	width = settings->getColWidth("history", 3, 90);
++	width = settings->getColWidth(QString::fromUtf8("history"), 3, 90);
+ 	ui->treeWidget->setColumnWidth(3, width); //value
+-	width = settings->getColWidth("history", 4, 105);
++	width = settings->getColWidth(QString::fromUtf8("history"), 4, 105);
+ 	ui->treeWidget->setColumnWidth(4, width); //date
+ }
+ 
+@@ -284,7 +287,7 @@
+ 	abt_dialog dialog(this, msgTitle, msgText,
+ 			  QDialogButtonBox::Yes | QDialogButtonBox::No,
+ 			  QDialogButtonBox::Yes, QMessageBox::Question,
+-			  "HistoryConfirmDelete");
++			  QString::fromUtf8("HistoryConfirmDelete"));
+ 	int ret = dialog.exec();
+ 
+ 	if (ret != QDialogButtonBox::Yes) {
+@@ -309,9 +312,12 @@
+  * @returns a context-menu which can be used for user-selection
+  */
+ //private
+-QMenu *page_history::createExportContextMenu(QWidget *parent, const aqb_imexporters *iep) const
++QMenu *page_history::createExportContextMenu(QWidget* /* parent */,
++					     const aqb_imexporters *iep) const
+ {
+-	QMenu *menu = new QMenu(parent);
++	//when we set the parent of the created menu, the program crashes
++	//when it is closed!
++	QMenu *menu = new QMenu();
+ 
+ 	QMenu *preferredMenu = new QMenu(tr("Favorit"), menu);
+ 
+@@ -329,7 +335,7 @@
+ 		foreach (aqb_ieProfile *profile, *plugin->getProfiles()) {
+ 			//if this is not an export-profile, we cant use it.
+ 			//Therefore, export must exist and must be unequal 0
+-			if (!profile->getNames()->contains("export") ||
++			if (!profile->getNames()->contains(QString::fromUtf8("export")) ||
+ 			    profile->getValue("export").toInt() == 0) {
+ 				continue; //next profile
+ 			}
+@@ -346,12 +352,12 @@
+ 			//check if the profile is favorite and add it to the
+ 			//preferred submenu with the plugin-name as prefix
+ 			QString key = plugin->getName();
+-			key.append("/");
++			key.append(QString::fromUtf8("/"));
+ 			key.append(profile->getValue("name").toString());
+ 			if (settings->isProfileFavorit(key)) {
+ 				QAction *prefItem = new QAction(preferredMenu);
+ 				QString itemText = item->text();
+-				itemText.prepend(" - ");
++				itemText.prepend(QString::fromUtf8(" - "));
+ 				itemText.prepend(plugin->getName());
+ 				prefItem->setText(itemText);
+ 				prefItem->setUserData(0,
+@@ -400,9 +406,10 @@
+ 	AB_IMEXPORTER_CONTEXT *ctx = NULL;
+ 	aqb_iePlugin *plugin = NULL;
+ 	aqb_ieProfile *profile = NULL;
+-	QString saveFilename = "";
+-	QString dialogTitle = "";
+-	QString tmpstr = "";
++	QString saveFilename = QString();
++	QString dialogTitle = QString();
++	QString tmpstr = QString();
++	QString profileName = QString();
+ 
+ 	aqb_imexporters *iep = new aqb_imexporters(banking->getAqBanking());
+ 	QMenu *exportConextMenu = this->createExportContextMenu(this, iep);
+@@ -448,13 +455,14 @@
+ 		goto ONACTEXPORTSELECTED_CLEANUP;
+ 	}
+ 
++	profileName = profile->getValue("name").toString();
+ 	qDebug() << Q_FUNC_INFO << "selected Plugin :" << plugin->getName();
+-	qDebug() << Q_FUNC_INFO << "selected Profile:" << profile->getValue("name").toString();
++	qDebug() << Q_FUNC_INFO << "selected Profile:" << profileName;
+ 
+ 	//Now we need to know where to store the data
+ 	dialogTitle = tr("(%1 / %2) Export ...")
+ 		      .arg(plugin->getName())
+-		      .arg(profile->getValue("name").toString());
++		      .arg(profileName);
+ 	saveFilename = QFileDialog::getSaveFileName(this, dialogTitle,
+ 						    settings->getDataDir());
+ 
+@@ -468,10 +476,10 @@
+ 	}
+ 
+ 	if (ctx) {
+-		err = AB_Banking_ExportToFile(banking->getAqBanking(),
+-					      ctx, plugin->getName(),
+-					      profile->getValue("name").toString().toUtf8(),
+-					      saveFilename.toUtf8());
++		err = AB_Banking_ExportToFile(banking->getAqBanking(), ctx,
++					      plugin->getName().toStdString().c_str(),
++					      profileName.toStdString().c_str(),
++					      saveFilename.toStdString().c_str());
+ 	} else {
+ 		err = 99; //no ctx available!
+ 	}
+@@ -497,7 +505,8 @@
+ 		//we must free the ctx after using it
+ 		AB_ImExporterContext_free(ctx);
+ 	}
+-	delete exportConextMenu; //menu and all childs no longer needed
++	//The following deletion lets the program crash. Why? I dont know.
++	//delete exportConextMenu; //menu and all childs no longer needed
+ 	delete iep; //also deletes ALL childs objects from aqb_imexporters!
+ }
+ 
+@@ -558,7 +567,7 @@
+ 		topItem->setData(2, Qt::DisplayRole, trans->getPurpose().at(0));
+ 
+ 		QString value = abt_conv::ABValueToString(trans->getValue(), true);
+-		value.append(" EUR");
++		value.append(QString::fromUtf8(" EUR"));
+ 		topItem->setData(3, Qt::DisplayRole, value);
+ 
+ 		//the idForApplication is the unix timestamp of the creation
+@@ -641,7 +650,7 @@
+ 	if (!this->ui->treeWidget->isHeaderHidden()) {
+ 		//if no header is displayed there are no columns.
+ 		//Only save the width when headers are visible.
+-		settings->saveColWidth("history", column, newSize);
++		settings->saveColWidth(QString::fromUtf8("history"), column, newSize);
+ 	}
+ }
+ 
+diff --git a/src/pages/page_history.h b/src/pages/page_history.h
+--- a/src/pages/page_history.h
++++ b/src/pages/page_history.h
+@@ -32,8 +32,8 @@
+ #ifndef PAGE_HISTORY_H
+ #define PAGE_HISTORY_H
+ 
+-#include <QtGui/QFrame>
+-#include <QtGui/QTreeWidgetItem>
++#include <QFrame>
++#include <QTreeWidgetItem>
+ 
+ #include "../abt_jobinfo.h"
+ 
+diff --git a/src/pages/page_log.cpp b/src/pages/page_log.cpp
+--- a/src/pages/page_log.cpp
++++ b/src/pages/page_log.cpp
+@@ -57,7 +57,7 @@
+ 
+ void page_log::setLogText(const QStringList *strList)
+ {
+-	this->ui->textEdit->setHtml(strList->join("<br />"));
++	this->ui->textEdit->setHtml(strList->join(QString::fromUtf8("<br />")));
+ }
+ 
+ void page_log::appendLogText(const QString &str)
+diff --git a/src/pages/pagewidgettests.cpp b/src/pages/pagewidgettests.cpp
+--- a/src/pages/pagewidgettests.cpp
++++ b/src/pages/pagewidgettests.cpp
+@@ -1,5 +1,5 @@
+ /******************************************************************************
+- * Copyright (C) 2011 Patrick Wacker
++ * Copyright (C) 2011, 2014-2015 Patrick Wacker
+  * 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)
+@@ -31,6 +31,10 @@
+ #include "pagewidgettests.h"
+ 
+ #include <QList>
++#include <QHBoxLayout>
++#include <QPushButton>
++
++#include <QTextCodec>
+ 
+ 
+ pageWidgetTests::pageWidgetTests(aqb_Accounts *accs, QWidget *parent) :
+@@ -38,14 +42,14 @@
+ {
+ 	qDebug() << Q_FUNC_INFO << "constructor started";
+ 	QHBoxLayout *hb = new QHBoxLayout();
+-	this->button1 = new QPushButton("Button 1");
+-	this->button2 = new QPushButton("Button 2");
+-	this->button3 = new QPushButton("Button 3");
+-	this->button4 = new QPushButton("Button 4");
+-	this->button5 = new QPushButton("Button 5");
+-	this->button6 = new QPushButton("Button 6");
+-	this->button7 = new QPushButton("Button 7");
+-	this->button8 = new QPushButton("Button 8");
++	this->button1 = new QPushButton(QString::fromUtf8("Button 1"));
++	this->button2 = new QPushButton(QString::fromUtf8("Button 2"));
++	this->button3 = new QPushButton(QString::fromUtf8("Button 3"));
++	this->button4 = new QPushButton(QString::fromUtf8("Button 4"));
++	this->button5 = new QPushButton(QString::fromUtf8("Button 5"));
++	this->button6 = new QPushButton(QString::fromUtf8("Button 6"));
++	this->button7 = new QPushButton(QString::fromUtf8("Button 7"));
++	this->button8 = new QPushButton(QString::fromUtf8("Button 8"));
+ 	hb->addWidget(this->button1);
+ 	hb->addWidget(this->button2);
+ 	hb->addWidget(this->button3);
+@@ -54,6 +58,23 @@
+ 	hb->addWidget(this->button6);
+ 	hb->addWidget(this->button7);
+ 	hb->addWidget(this->button8);
++	this->edit1 = new QLineEdit();
++	this->edit2 = new QLineEdit();
++	this->edit3 = new QLineEdit();
++	this->edit4 = new QLineEdit();
++	this->edit5 = new QLineEdit();
++	this->edit6 = new QLineEdit();
++	this->edit7 = new QLineEdit();
++	this->edit8 = new QLineEdit();
++	QHBoxLayout *hb2 = new QHBoxLayout();
++	hb2->addWidget(this->edit1);
++	hb2->addWidget(this->edit2);
++	hb2->addWidget(this->edit3);
++	hb2->addWidget(this->edit4);
++	hb2->addWidget(this->edit5);
++	hb2->addWidget(this->edit6);
++	hb2->addWidget(this->edit7);
++	hb2->addWidget(this->edit8);
+ 
+ 	connect(this->button1, SIGNAL(clicked()), this, SLOT(onButton1Clicked()));
+ 	connect(this->button2, SIGNAL(clicked()), this, SLOT(onButton2Clicked()));
+@@ -67,6 +88,7 @@
+ 	this->textEdit = new QPlainTextEdit();
+ 	QVBoxLayout *vb = new QVBoxLayout();
+ 	vb->addLayout(hb);
++	vb->addLayout(hb2);
+ 	vb->addWidget(this->textEdit);
+ 
+ 	this->setLayout(vb);
+@@ -87,24 +109,26 @@
+ 
+ void pageWidgetTests::onButton1Clicked()
+ {
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" started"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" started")));
+ 
+ 
+-	aqb_AccountInfo *acc = this->accounts->getAccount(5);
++	aqb_AccountInfo *acc = this->accounts->getAccount(QString::fromUtf8("1234567891"));
+ 
+ 	if (acc == NULL) {
+-		this->textEdit->appendPlainText("Account == NULL --> abort");
++		this->textEdit->appendPlainText(QString::fromUtf8("Account == NULL --> abort"));
+ 		return;
+ 	}
+ 
+ 	abt_transaction *t = new abt_transaction();
+ 	t->fillLocalFromAccount(acc->get_AB_ACCOUNT());
+-	t->setRemoteAccountNumber("123456");
+-	t->setRemoteBankCode("29050101");
+-	t->setRemoteBankName("Sparkasse Bremen");
+-	t->setRemoteName(QStringList("Test User"));
+-	t->setValue(abt_conv::ABValueFromString("5.44", "EUR"));
+-	t->setPurpose(QStringList("Verwendungszweck Test1"));
++	t->setRemoteAccountNumber(QString::fromUtf8("123456"));
++	t->setRemoteBankCode(QString::fromUtf8("29050101"));
++	t->setRemoteBankName(QString::fromUtf8("Sparkasse Brämen"));
++	t->setRemoteName(QStringList(QString::fromUtf8("Test Üser")));
++	t->setValue(abt_conv::ABValueFromString(QString::fromUtf8("5.44"),
++						QString::fromUtf8("EUR")));
++	t->setPurpose(QStringList(QString::fromUtf8("Überweisung Öfter")));
+ 	t->setTextKey(51);
+ 
+ 
+@@ -117,11 +141,26 @@
+ 	AB_ImExporterContext_AddAccountInfo(this->iec1, this->iea1);
+ 	const QList<abt_standingOrderInfo*> *stos;
+ 	stos = acc->getKnownStandingOrders();
+-	for (int i=0; i<stos->size(); i++) {
+-		AB_ImExporterContext_AddStandingOrder(this->iec1, AB_Transaction_dup(stos->at(i)->getTransaction()->getAB_Transaction()));
++	if (stos != NULL) {
++		for (int i=0; i<stos->size(); i++) {
++			AB_ImExporterContext_AddStandingOrder(this->iec1, AB_Transaction_dup(stos->at(i)->getTransaction()->getAB_Transaction()));
++		}
+ 	}
+ 
++	AB_TRANSACTION *t2 = AB_Transaction_dup(t->getAB_Transaction());
+ 
++	QString bn = QString::fromUtf8("Sparkasse AeÄ UeÜ OeÖ aeä ueü oeö");
++	QTextCodec *codec = QTextCodec::codecForName("UTF-8");
++	QByteArray encodedString = codec->fromUnicode(bn);
++	qDebug() << encodedString;
++	qDebug() << bn;
++
++
++
++//	AB_Transaction_SetRemoteBankName(t2, abt_conv::encodeToAb(bn));
++	AB_Transaction_SetRemoteBankName(t2, bn.toStdString().c_str());
++	AB_Transaction_SetPurpose(t2, abt_conv::QStringListToGwenStringList(QStringList(QString::fromUtf8("AeÄ UeÜ OeÖ aeä ueü oeö"))));
++	AB_ImExporterContext_AddTransfer(this->iec1, t2);
+ 
+ 
+ //	int 	AB_Banking_FillGapsInImExporterContext (AB_BANKING *ab, AB_IMEXPORTER_CONTEXT *iec)
+@@ -135,7 +174,7 @@
+ 
+ 	int ret = AB_Banking_ExportToFile(banking->getAqBanking(), this->iec1, "ctxfile", "default", "/tmp/exporterFilename.ctx");
+ 
+-	this->textEdit->appendPlainText(QString("%1").arg(ret));
++	this->textEdit->appendPlainText(QString::fromUtf8("/tmp/exporterFilename.ctx saved (0=OK): %1").arg(ret));
+ 
+ 
+ 	delete t;
+@@ -143,18 +182,20 @@
+ 
+ 
+ 
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" ended"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" ended")));
+ }
+ 
+ void pageWidgetTests::onButton2Clicked()
+ {
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" started"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" started")));
+ 
+ 
+ 	this->iec2 = AB_ImExporterContext_new();
+ 	int ret = AB_Banking_ImportFileWithProfile(banking->getAqBanking(), "ctxfile", this->iec2, "default", NULL, "/tmp/exporterFilename.ctx");
+ 
+-	this->textEdit->appendPlainText(QString("return value from import: %1").arg(ret));
++	this->textEdit->appendPlainText(QString::fromUtf8("return value from import: %1").arg(ret));
+ 
+ 	//parse the incoming context
+ 	this->parseContext(this->iec2);
+@@ -164,61 +205,158 @@
+ 	AB_ImExporterContext_free(this->iec2);
+ 
+ 
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" ended"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" ended")));
+ }
+ 
+ void pageWidgetTests::onButton3Clicked()
+ {
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" started"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" started")));
+ 
+ 
++	QString t1 = QString::fromUtf8("Grün Weiß");
++	addlog(t1);
++	addlog(QString::fromUtf8(t1.toStdString().c_str()));
++	addlog(QString::fromUtf8("Grün Weiß"));
++	//qDebug() << QTextCodec::codecForCStrings()->availableCodecs());
++	addlog(QString::fromUtf8(QTextCodec::codecForLocale()->name()));
++	addlog(QString::fromUtf8(QTextCodec::codecForUtfText(QByteArray("Mäüö"))->name()));
++	QTextCodec *codec = QTextCodec::codecForName("UTF-8");
++	addlog(codec->toUnicode(QByteArray::fromPercentEncoding("Gr%C3%BCn Wei%C3%9F")));
++	addlog(QString::fromUtf8(QByteArray::fromPercentEncoding("Gr%C3%BCn Wei%C3%9F")));
++	t1 = QString::fromUtf8("Gr%C3%BCn Wei%C3%9F");
++	addlog(t1);
++	QByteArray a = QByteArray::fromRawData(t1.toStdString().c_str(), t1.length());
++	addlog(QString::fromUtf8("%1 - %2").arg(t1).arg(QString::fromUtf8(a.toPercentEncoding())));
+ 
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" ended"));
++
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" ended")));
+ }
+ 
+ void pageWidgetTests::onButton4Clicked()
+ {
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" started"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" started")));
+ 
+ 
+ 
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" ended"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" ended")));
+ }
+ 
+ void pageWidgetTests::onButton5Clicked()
+ {
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" started"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" started")));
+ 
+ 
+ 
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" ended"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" ended")));
+ }
+ 
+ void pageWidgetTests::onButton6Clicked()
+ {
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" started"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" started")));
+ 
+ 
++	aqb_AccountInfo *acc = this->accounts->getAccount(QString::fromUtf8("1234567891"));
+ 
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" ended"));
++	if (acc == NULL) {
++		this->textEdit->appendPlainText(QString::fromUtf8("Account == NULL --> abort"));
++		return;
++	}
++
++	abt_transaction *t = new abt_transaction();
++	t->fillLocalFromAccount(acc->get_AB_ACCOUNT());
++	t->setRemoteAccountNumber(QString::fromUtf8("123456"));
++	t->setRemoteBankCode(QString::fromUtf8("29050101"));
++	t->setRemoteBankName(QString::fromUtf8("Sparkasse Brämen"));
++	t->setRemoteName(QStringList(QString::fromUtf8("Test Üser")));
++	t->setValue(abt_conv::ABValueFromString(QString::fromUtf8("5.44"),
++						QString::fromUtf8("EUR")));
++	t->setPurpose(QStringList(QString::fromUtf8("Überweisung Öfter")));
++	t->setTextKey(51);
++
++
++	this->iec1 = AB_ImExporterContext_new();
++	//AB_ImExporterContext_Add
++	this->iea1 = AB_ImExporterAccountInfo_new();
++	AB_ImExporterAccountInfo_FillFromAccount(this->iea1, acc->get_AB_ACCOUNT());
++
++	AB_ImExporterContext_AddAccountInfo(this->iec1, this->iea1);
++
++	AB_TRANSACTION *t2 = AB_Transaction_dup(t->getAB_Transaction());
++
++	QString bn = QString::fromUtf8("Sparkasse AeÄ UeÜ OeÖ aeä ueü oeö");
++//	QString bn = this->edit6->text();
++	QTextCodec *codec = QTextCodec::codecForName("UTF-8");
++	QByteArray encodedString = codec->fromUnicode(bn);
++	qDebug() << encodedString;
++	qDebug() << bn;
++
++
++
++//	AB_Transaction_SetRemoteBankName(t2, abt_conv::encodeToAb(bn));
++	AB_Transaction_SetRemoteBankName(t2, encodedString);
++	AB_Transaction_SetRemoteAddrStreet(t2, this->edit5->text().toStdString().c_str());
++	AB_Transaction_SetPurpose(t2, abt_conv::QStringListToGwenStringList(QStringList(QString::fromUtf8("AeÄ UeÜ OeÖ aeä ueü oeö"))));
++	AB_ImExporterContext_AddTransfer(this->iec1, t2);
++
++
++//	int 	AB_Banking_FillGapsInImExporterContext (AB_BANKING *ab, AB_IMEXPORTER_CONTEXT *iec)
++//	int 	AB_Banking_ExportToBuffer (AB_BANKING *ab, AB_IMEXPORTER_CONTEXT *ctx, const char *exporterName, const char *profileName, GWEN_BUFFER *buf)
++//	int 	AB_Banking_ExportToFile (AB_BANKING *ab, AB_IMEXPORTER_CONTEXT *ctx, const char *exporterName, const char *profileName, const char *fileName)
++//	int 	AB_Banking_ExportToFileWithProfile (AB_BANKING *ab, const char *exporterName, AB_IMEXPORTER_CONTEXT *ctx, const char *profileName, const char *profileFile, const char *outputFileName)
++//	int 	AB_Banking_ExportWithProfile (AB_BANKING *ab, const char *exporterName, AB_IMEXPORTER_CONTEXT *ctx, const char *profileName, const char *profileFile, GWEN_SYNCIO *sio)
++//	int 	AB_Banking_ImportBuffer (AB_BANKING *ab, AB_IMEXPORTER_CONTEXT *ctx, const char *exporterName, const char *profileName, GWEN_BUFFER *buf)
++//	int 	AB_Banking_ImportFileWithProfile (AB_BANKING *ab, const char *importerName, AB_IMEXPORTER_CONTEXT *ctx, const char *profileName, const char *profileFile, const char *inputFileName)
++//	int 	AB_Banking_ImportWithProfile (AB_BANKING *ab, const char *importerName, AB_IMEXPORTER_CONTEXT *ctx, const char *profileName, const char *profileFile, GWEN_SYNCIO *sio)
++
++	int ret = AB_Banking_ExportToFile(banking->getAqBanking(), this->iec1, "ctxfile", "default", "/tmp/exporterFilename.ctx");
++
++	this->textEdit->appendPlainText(QString::fromUtf8("/tmp/exporterFilename.ctx saved (0=OK): %1").arg(ret));
++
++
++	delete t;
++	AB_ImExporterContext_free(this->iec1);
++
++
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" ended")));
+ }
+ 
+ void pageWidgetTests::onButton7Clicked()
+ {
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" started"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" started")));
+ 
+ 
+ 
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" ended"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" ended")));
+ }
+ 
+ void pageWidgetTests::onButton8Clicked()
+ {
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" started"));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" started")));
+ 
+-
+-
+-	this->textEdit->appendPlainText(QString(Q_FUNC_INFO).append(" ended"));
++	qDebug() << "\n" << "AVAILABLE CODECS:";
++	qDebug() << QTextCodec::availableCodecs();
++	qDebug() << "\n";
++//	qDebug() << "for CStrings:" << QTextCodec::codecForCStrings();
++	qDebug() << "for Locale  :" << QTextCodec::codecForLocale()->name();
++//	qDebug() << "for Tr()    :" << QTextCodec::codecForTr()->name();
++	qDebug() << "for UtfText :" << QTextCodec::codecForUtfText(QByteArray("Sparkasse Brämen"))->name();
++	qDebug() << "for System  :" << QTextCodec::codecForName("System")->name();
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" printed supported codecs at stdout")));
++	this->textEdit->appendPlainText(QString::fromUtf8(Q_FUNC_INFO)
++					.append(QString::fromUtf8(" ended")));
+ }
+ 
+ 
+@@ -227,390 +365,492 @@
+ 
+ void pageWidgetTests::addlog(const QString &logMsg)
+ {
+-	this->textEdit->appendPlainText(QString("LOG: ").append(logMsg));
++	this->textEdit->appendPlainText(QString::fromUtf8("LOG: ").append(logMsg));
+ }
+ 
+ 
+ 
+ void pageWidgetTests::parseContext(AB_IMEXPORTER_CONTEXT *ctx)
+ {
+-	AB_IMEXPORTER_ACCOUNTINFO *ai;
++	Q_UNUSED(ctx);
++//	AB_IMEXPORTER_ACCOUNTINFO *ai;
+ 
+-	QString log = AB_ImExporterContext_GetLog(ctx);
+-	this->addlog(QString("CTX-LOG: ").append(log));
++//	QString log = AB_ImExporterContext_GetLog(ctx);
++//	this->addlog(QString("CTX-LOG: ").append(log));
+ 
+-	QString logmsg;
+-	QString logmsg2;
+-	int cnt = 0;
++//	QString logmsg;
++//	QString logmsg2;
++//	int cnt = 0;
+ 
+-	/**********************************************************************/
+-	//this->parseImExporterContext_Messages(ctx);
+-	/**********************************************************************/
+-	AB_MESSAGE *msg;
+-	logmsg = "Recvd-Message: ";
+-	cnt = 0;
++//	/**********************************************************************/
++//	//this->parseImExporterContext_Messages(ctx);
++//	/**********************************************************************/
++//	AB_MESSAGE *msg;
++//	logmsg = "Recvd-Message: ";
++//	cnt = 0;
+ 
+-	msg = AB_ImExporterContext_GetFirstMessage(ctx);
+-	while (msg) {
+-		logmsg2 = QString("Empfangsdatum:\t");
+-		logmsg2.append(abt_conv::GwenTimeToQDate(
+-				AB_Message_GetDateReceived(msg)).toString(
+-						Qt::DefaultLocaleLongDate));
+-		this->addlog(logmsg + logmsg2);
+-		logmsg2 = QString("Betreff:\t");
+-		logmsg2.append(AB_Message_GetSubject(msg));
+-		this->addlog(logmsg + logmsg2);
+-		logmsg2 = QString("Text:\t");
+-		logmsg2.append(AB_Message_GetText(msg));
+-		this->addlog(logmsg + logmsg2);
+-		msg = AB_ImExporterContext_GetNextMessage(ctx);
+-		cnt++;
+-	}
++//	msg = AB_ImExporterContext_GetFirstMessage(ctx);
++//	while (msg) {
++//		logmsg2 = QString("Empfangsdatum:\t");
++//		logmsg2.append(abt_conv::GwenTimeToQDate(
++//				AB_Message_GetDateReceived(msg)).toString(
++//						Qt::DefaultLocaleLongDate));
++//		this->addlog(logmsg + logmsg2);
++//		logmsg2 = QString("Betreff:\t");
++//		logmsg2.append(AB_Message_GetSubject(msg));
++//		this->addlog(logmsg + logmsg2);
++//		logmsg2 = QString("Text:\t");
++//		logmsg2.append(AB_Message_GetText(msg));
++//		this->addlog(logmsg + logmsg2);
++//		msg = AB_ImExporterContext_GetNextMessage(ctx);
++//		cnt++;
++//	}
+ 
+-	logmsg2 = QString("Count: %1").arg(cnt);
+-	this->addlog(logmsg + logmsg2);
++//	logmsg2 = QString("Count: %1").arg(cnt);
++//	this->addlog(logmsg + logmsg2);
+ 
+ 
+-	/**********************************************************************/
+-	//this->parseImExporterContext_Securitys(ctx);
+-	/**********************************************************************/
+-	AB_SECURITY *s;
+-	logmsg = "Recvd-Security: ";
+-	const AB_VALUE *v;
+-	cnt = 0;
++//	/**********************************************************************/
++//	//this->parseImExporterContext_Securitys(ctx);
++//	/**********************************************************************/
++//	AB_SECURITY *s;
++//	logmsg = "Recvd-Security: ";
++//	const AB_VALUE *v;
++//	cnt = 0;
+ 
+-	s = AB_ImExporterContext_GetFirstSecurity(ctx);
+-	while (s) {
+-		logmsg2 = QString("Name:\t");
+-		logmsg2.append(AB_Security_GetName(s));
+-		this->addlog(logmsg + logmsg2);
++//	s = AB_ImExporterContext_GetFirstSecurity(ctx);
++//	while (s) {
++//		logmsg2 = QString("Name:\t");
++//		logmsg2.append(AB_Security_GetName(s));
++//		this->addlog(logmsg + logmsg2);
+ 
+-		logmsg2 = QString("UnitPriceValue:\t");
+-		v = AB_Security_GetUnitPriceValue(s);
+-		logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
+-		this->addlog(logmsg + logmsg2);
++//		logmsg2 = QString("UnitPriceValue:\t");
++//		v = AB_Security_GetUnitPriceValue(s);
++//		logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
++//		this->addlog(logmsg + logmsg2);
+ 
+-		s = AB_ImExporterContext_GetNextSecurity(ctx);
+-		cnt++;
+-	}
++//		s = AB_ImExporterContext_GetNextSecurity(ctx);
++//		cnt++;
++//	}
+ 
+-	logmsg2 = QString("Count: %1").arg(cnt);
+-	this->addlog(logmsg + logmsg2);
++//	logmsg2 = QString("Count: %1").arg(cnt);
++//	this->addlog(logmsg + logmsg2);
+ 
+ 
+ 
+-	ai=AB_ImExporterContext_GetFirstAccountInfo(ctx);
+-	while(ai) {
+-		//Beim Anlegen einer Terminüberweisung wird hierher nicht verzweigt!
+-		/**********************************************************************/
+-		//this->parseImExporterAccountInfo_Status(ai);
+-		/**********************************************************************/
+-		AB_ACCOUNT_STATUS *s;
+-		logmsg = "Recvd-AccountStatus: ";
+-		const AB_BALANCE *b;
+-		cnt = 0;
++//	ai=AB_ImExporterContext_GetFirstAccountInfo(ctx);
++//	while(ai) {
++//		//Beim Anlegen einer Terminüberweisung wird hierher nicht verzweigt!
++//		/**********************************************************************/
++//		//this->parseImExporterAccountInfo_Status(ai);
++//		/**********************************************************************/
++//		AB_ACCOUNT_STATUS *s;
++//		logmsg = "Recvd-AccountStatus: ";
++//		const AB_BALANCE *b;
++//		cnt = 0;
+ 
+-		s = AB_ImExporterAccountInfo_GetFirstAccountStatus(ai);
+-		while (s) {
+-			logmsg2 = QString("Balance for: ");
+-			logmsg2.append(AB_ImExporterAccountInfo_GetAccountNumber(ai));
+-			logmsg2.append("(");
+-			logmsg2.append(AB_ImExporterAccountInfo_GetAccountName(ai));
+-			logmsg2.append(")");
+-			this->addlog(logmsg + logmsg2);
++//		s = AB_ImExporterAccountInfo_GetFirstAccountStatus(ai);
++//		while (s) {
++//			logmsg2 = QString("Balance for: ");
++//			logmsg2.append(AB_ImExporterAccountInfo_GetAccountNumber(ai));
++//			logmsg2.append("(");
++//			logmsg2.append(AB_ImExporterAccountInfo_GetAccountName(ai));
++//			logmsg2.append(")");
++//			this->addlog(logmsg + logmsg2);
+ 
+-			v = AB_AccountStatus_GetBankLine(s);
+-			if (v != NULL) {
+-				logmsg2 = QString("BankLine:\t");
+-				logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
+-				this->addlog(logmsg + logmsg2);
+-			}
++//			v = AB_AccountStatus_GetBankLine(s);
++//			if (v != NULL) {
++//				logmsg2 = QString("BankLine:\t");
++//				logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
++//				this->addlog(logmsg + logmsg2);
++//			}
+ 
+-			b = AB_AccountStatus_GetNotedBalance(s);
+-			if (b != NULL) {
+-				v = AB_Balance_GetValue(b);
+-				if (v != NULL) {
+-					logmsg2 = QString("NotedBalance:\t");
+-					logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
+-					this->addlog(logmsg + logmsg2);
+-				}
+-			}
++//			b = AB_AccountStatus_GetNotedBalance(s);
++//			if (b != NULL) {
++//				v = AB_Balance_GetValue(b);
++//				if (v != NULL) {
++//					logmsg2 = QString("NotedBalance:\t");
++//					logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
++//					this->addlog(logmsg + logmsg2);
++//				}
++//			}
+ 
+-			b = AB_AccountStatus_GetBookedBalance(s);
+-			if (b != NULL) {
+-				v = AB_Balance_GetValue(b);
+-				if (v != NULL) {
+-					logmsg2 = QString("BookedBalance:\t");
+-					logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
+-					this->addlog(logmsg + logmsg2);
+-				}
+-			}
++//			b = AB_AccountStatus_GetBookedBalance(s);
++//			if (b != NULL) {
++//				v = AB_Balance_GetValue(b);
++//				if (v != NULL) {
++//					logmsg2 = QString("BookedBalance:\t");
++//					logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
++//					this->addlog(logmsg + logmsg2);
++//				}
++//			}
+ 
+-			v = AB_AccountStatus_GetDisposable(s);
+-			if (v != NULL) {
+-				logmsg2 = QString("Disposable:\t");
+-				logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
+-				this->addlog(logmsg + logmsg2);
+-			}
++//			v = AB_AccountStatus_GetDisposable(s);
++//			if (v != NULL) {
++//				logmsg2 = QString("Disposable:\t");
++//				logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
++//				this->addlog(logmsg + logmsg2);
++//			}
+ 
+-			v = AB_AccountStatus_GetDisposed(s);
+-			if (v != NULL) {
+-				logmsg2 = QString("Disposed:\t");
+-				logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
+-				this->addlog(logmsg + logmsg2);
+-			}
++//			v = AB_AccountStatus_GetDisposed(s);
++//			if (v != NULL) {
++//				logmsg2 = QString("Disposed:\t");
++//				logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v), 0, 'f', 2));
++//				this->addlog(logmsg + logmsg2);
++//			}
+ 
+-			logmsg2 = QString("Time:\t");
+-			logmsg2.append(abt_conv::GwenTimeToQDate(
+-							AB_AccountStatus_GetTime(s)).toString(
+-									Qt::DefaultLocaleLongDate));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("Time:\t");
++//			logmsg2.append(abt_conv::GwenTimeToQDate(
++//							AB_AccountStatus_GetTime(s)).toString(
++//									Qt::DefaultLocaleLongDate));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			s = AB_ImExporterAccountInfo_GetNextAccountStatus(ai);
+-			cnt++;
+-		}
++//			s = AB_ImExporterAccountInfo_GetNextAccountStatus(ai);
++//			cnt++;
++//		}
+ 
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		this->addlog(logmsg + logmsg2);
++//		logmsg2 = QString("Count: %1").arg(cnt);
++//		this->addlog(logmsg + logmsg2);
+ 
+ 
+ 
+-		/**********************************************************************/
+-		//this->parseImExporterAccountInfo_DatedTransfers(ai);	//Terminüberweisungen
+-		/**********************************************************************/
+-		AB_TRANSACTION *t;
+-		logmsg = "Recvd-DatedTransfers: ";
+-		QStringList strList;
+-		const GWEN_STRINGLIST *l;
+-		cnt = 0;
++//		/**********************************************************************/
++//		//this->parseImExporterAccountInfo_DatedTransfers(ai);	//Terminüberweisungen
++//		/**********************************************************************/
++//		AB_TRANSACTION *t;
++//		logmsg = "Recvd-DatedTransfers: ";
++//		QStringList strList;
++//		const GWEN_STRINGLIST *l;
++//		cnt = 0;
+ 
+-		cnt = AB_ImExporterAccountInfo_GetDatedTransferCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		this->addlog(logmsg + logmsg2);
++//		cnt = AB_ImExporterAccountInfo_GetDatedTransferCount(ai);
++//		logmsg2 = QString("Count: %1").arg(cnt);
++//		this->addlog(logmsg + logmsg2);
+ 
+-		t = AB_ImExporterAccountInfo_GetFirstDatedTransfer(ai);
+-		while (t) {
++//		t = AB_ImExporterAccountInfo_GetFirstDatedTransfer(ai);
++//		while (t) {
+ 
+-			logmsg2 = QString("Purpose:\t");
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("Purpose:\t");
++//			l = AB_Transaction_GetPurpose(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			logmsg2 = QString("Value:\t");
+-			v = AB_Transaction_GetValue(t);
+-			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("Value:\t");
++//			v = AB_Transaction_GetValue(t);
++//			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			logmsg2 = QString("RemoteName:\t");
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("RemoteName:\t");
++//			l = AB_Transaction_GetRemoteName(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			switch (AB_Transaction_GetStatus(t)) {
+-			case AB_Transaction_StatusRevoked:
+-				//Bei der Bank hinterlegte Terminüberweisung wurde gelöscht
+-				this->addlog(QString(
+-					"Lösche bei der Bank gelöschte Terminüberweisung (ID: %1)"
+-					).arg(AB_Transaction_GetFiId(t)));
+-				break;
+-			case AB_Transaction_StatusManuallyReconciled:
+-			case AB_Transaction_StatusAutoReconciled:
+-				//Bei der Bank hinterlegte Terminüberweisung wurde geändert
+-				this->addlog(QString(
+-					"Speichere bei der Bank geänderte Terminüberweisung (ID: %1)"
+-					).arg(AB_Transaction_GetFiId(t)));
+-				break;
+-			default:
+-				//Bei der Bank hinterlegte Terminüberweisung auch lokal speichern
+-				this->addlog(QString(
+-					"Speichere bei der Bank hinterlegte Terminüberweisung (ID: %1)"
+-					).arg(AB_Transaction_GetFiId(t)));
+-				break;
+-			}
++//			switch (AB_Transaction_GetStatus(t)) {
++//			case AB_Transaction_StatusRevoked:
++//				//Bei der Bank hinterlegte Terminüberweisung wurde gelöscht
++//				this->addlog(QString(
++//					"Lösche bei der Bank gelöschte Terminüberweisung (ID: %1)"
++//					).arg(AB_Transaction_GetFiId(t)));
++//				break;
++//			case AB_Transaction_StatusManuallyReconciled:
++//			case AB_Transaction_StatusAutoReconciled:
++//				//Bei der Bank hinterlegte Terminüberweisung wurde geändert
++//				this->addlog(QString(
++//					"Speichere bei der Bank geänderte Terminüberweisung (ID: %1)"
++//					).arg(AB_Transaction_GetFiId(t)));
++//				break;
++//			default:
++//				//Bei der Bank hinterlegte Terminüberweisung auch lokal speichern
++//				this->addlog(QString(
++//					"Speichere bei der Bank hinterlegte Terminüberweisung (ID: %1)"
++//					).arg(AB_Transaction_GetFiId(t)));
++//				break;
++//			}
+ 
+-			t = AB_ImExporterAccountInfo_GetNextDatedTransfer(ai);
+-		}
++//			t = AB_ImExporterAccountInfo_GetNextDatedTransfer(ai);
++//		}
+ 
+ 
+ 
+-		/**********************************************************************/
+-		//this->parseImExporterAccountInfo_NotedTransactions(ai);	//geplante Buchungen
+-		/**********************************************************************/
+-		//AB_TRANSACTION *t;
+-		logmsg = "Recvd-NotedTransactions: ";
+-		strList.clear();
+-		const AB_VALUE *v;
+-		//const GWEN_STRINGLIST *l;
+-		cnt = 0;
++//		/**********************************************************************/
++//		//this->parseImExporterAccountInfo_NotedTransactions(ai);	//geplante Buchungen
++//		/**********************************************************************/
++//		//AB_TRANSACTION *t;
++//		logmsg = "Recvd-NotedTransactions: ";
++//		strList.clear();
++//		const AB_VALUE *v;
++//		//const GWEN_STRINGLIST *l;
++//		cnt = 0;
+ 
+-		cnt = AB_ImExporterAccountInfo_GetNotedTransactionCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		this->addlog(logmsg + logmsg2);
++//		cnt = AB_ImExporterAccountInfo_GetNotedTransactionCount(ai);
++//		logmsg2 = QString("Count: %1").arg(cnt);
++//		this->addlog(logmsg + logmsg2);
+ 
+-		t = AB_ImExporterAccountInfo_GetFirstNotedTransaction(ai);
+-		while (t) {
+-			logmsg2 = QString("Purpose:\t");
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//		t = AB_ImExporterAccountInfo_GetFirstNotedTransaction(ai);
++//		while (t) {
++//			logmsg2 = QString("Purpose:\t");
++//			l = AB_Transaction_GetPurpose(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			logmsg2 = QString("Value:\t");
+-			v = AB_Transaction_GetValue(t);
+-			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("Value:\t");
++//			v = AB_Transaction_GetValue(t);
++//			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			logmsg2 = QString("RemoteName:\t");
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("RemoteName:\t");
++//			l = AB_Transaction_GetRemoteName(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			t = AB_ImExporterAccountInfo_GetNextNotedTransaction(ai);
+-		}
++//			t = AB_ImExporterAccountInfo_GetNextNotedTransaction(ai);
++//		}
+ 
+ 
+-		/**********************************************************************/
+-		//this->parseImExporterAccountInfo_StandingOrders(ai);	//Daueraufträge
+-		/**********************************************************************/
+-//		AB_TRANSACTION *t;
+-		logmsg = "Recvd-StandingOrders: ";
+-		strList.clear();
+-//		const AB_VALUE *v;
+-//		const GWEN_STRINGLIST *l;
+-		cnt = 0;
++//		/**********************************************************************/
++//		//this->parseImExporterAccountInfo_StandingOrders(ai);	//Daueraufträge
++//		/**********************************************************************/
++////		AB_TRANSACTION *t;
++//		logmsg = "Recvd-StandingOrders: ";
++//		strList.clear();
++////		const AB_VALUE *v;
++////		const GWEN_STRINGLIST *l;
++//		cnt = 0;
+ 
+-		cnt = AB_ImExporterAccountInfo_GetStandingOrderCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		this->addlog(logmsg + logmsg2);
++//		cnt = AB_ImExporterAccountInfo_GetStandingOrderCount(ai);
++//		logmsg2 = QString("Count: %1").arg(cnt);
++//		this->addlog(logmsg + logmsg2);
+ 
+-		t = AB_ImExporterAccountInfo_GetFirstStandingOrder(ai);
+-		while (t) {
+-			logmsg2 = QString("Purpose:\t");
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//		t = AB_ImExporterAccountInfo_GetFirstStandingOrder(ai);
++//		while (t) {
++//			logmsg2 = QString("Purpose:\t");
++//			l = AB_Transaction_GetPurpose(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			logmsg2 = QString("Value:\t");
+-			v = AB_Transaction_GetValue(t);
+-			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("Value:\t");
++//			v = AB_Transaction_GetValue(t);
++//			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			logmsg2 = QString("RemoteName:\t");
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("RemoteName:\t");
++//			l = AB_Transaction_GetRemoteName(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
+ 
+ 
+-			switch (AB_Transaction_GetStatus(t)) {
+-			case AB_Transaction_StatusRevoked:
+-				//Bei der Bank hinterlegter Dauerauftrag wurde gelöscht
+-				this->addlog(QString(
+-					"Lösche bei der Bank gelöschten Dauerauftrag (ID: %1)"
+-					).arg(AB_Transaction_GetFiId(t)));
+-				break;
+-			case AB_Transaction_StatusManuallyReconciled:
+-			case AB_Transaction_StatusAutoReconciled:
+-				//Bei der Bank hinterlegter Dauerauftrag wurde geändert
+-				this->addlog(QString(
+-					"Speichere bei der Bank geänderten Dauerauftrag (ID: %1)"
+-					).arg(AB_Transaction_GetFiId(t)));
+-				break;
+-			default:
+-				//Bei der Bank hinterlegten Dauerauftrag auch lokal speichern
+-				this->addlog(QString(
+-					"Speichere bei der Bank hinterlegten Dauerauftrag (ID: %1)"
+-					).arg(AB_Transaction_GetFiId(t)));
+-				break;
+-			}
++//			switch (AB_Transaction_GetStatus(t)) {
++//			case AB_Transaction_StatusRevoked:
++//				//Bei der Bank hinterlegter Dauerauftrag wurde gelöscht
++//				this->addlog(QString(
++//					"Lösche bei der Bank gelöschten Dauerauftrag (ID: %1)"
++//					).arg(AB_Transaction_GetFiId(t)));
++//				break;
++//			case AB_Transaction_StatusManuallyReconciled:
++//			case AB_Transaction_StatusAutoReconciled:
++//				//Bei der Bank hinterlegter Dauerauftrag wurde geändert
++//				this->addlog(QString(
++//					"Speichere bei der Bank geänderten Dauerauftrag (ID: %1)"
++//					).arg(AB_Transaction_GetFiId(t)));
++//				break;
++//			default:
++//				//Bei der Bank hinterlegten Dauerauftrag auch lokal speichern
++//				this->addlog(QString(
++//					"Speichere bei der Bank hinterlegten Dauerauftrag (ID: %1)"
++//					).arg(AB_Transaction_GetFiId(t)));
++//				break;
++//			}
+ 
+-			t = AB_ImExporterAccountInfo_GetNextStandingOrder(ai);
+-		}
++//			t = AB_ImExporterAccountInfo_GetNextStandingOrder(ai);
++//		}
+ 
+ 
+-		/**********************************************************************/
+-		//this->parseImExporterAccountInfo_Transactions(ai);	//Buchungen
+-		/**********************************************************************/
+-//		AB_TRANSACTION *t;
+-		logmsg = "Recvd-Transactions: ";
+-		strList.clear();;
+-//		const AB_VALUE *v;
+-//		const GWEN_STRINGLIST *l;
+-		cnt = 0;
++//		/**********************************************************************/
++//		//this->parseImExporterAccountInfo_Transactions(ai);	//Buchungen
++//		/**********************************************************************/
++////		AB_TRANSACTION *t;
++//		logmsg = "Recvd-Transactions: ";
++//		strList.clear();;
++////		const AB_VALUE *v;
++////		const GWEN_STRINGLIST *l;
++//		cnt = 0;
+ 
+-		cnt = AB_ImExporterAccountInfo_GetTransactionCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		this->addlog(logmsg + logmsg2);
++//		cnt = AB_ImExporterAccountInfo_GetTransactionCount(ai);
++//		logmsg2 = QString("Count: %1").arg(cnt);
++//		this->addlog(logmsg + logmsg2);
+ 
+-		t = AB_ImExporterAccountInfo_GetFirstTransaction(ai);
+-		while (t) {
+-			logmsg2 = QString("Purpose:\t");
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//		t = AB_ImExporterAccountInfo_GetFirstTransaction(ai);
++//		while (t) {
++//			logmsg2 = QString("Purpose:\t");
++//			l = AB_Transaction_GetPurpose(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			logmsg2 = QString("Value:\t");
+-			v = AB_Transaction_GetValue(t);
+-			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("Value:\t");
++//			v = AB_Transaction_GetValue(t);
++//			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			logmsg2 = QString("RemoteName:\t");
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//			logmsg2 = QString("RemoteName:\t");
++//			l = AB_Transaction_GetRemoteName(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
+ 
+-			t = AB_ImExporterAccountInfo_GetNextTransaction(ai);
+-		}
++//			t = AB_ImExporterAccountInfo_GetNextTransaction(ai);
++//		}
+ 
+ 
+-		/**********************************************************************/
+-		//this->parseImExporterAccountInfo_Transfers(ai);		//Überweisungen
+-		/**********************************************************************/
+-//		AB_TRANSACTION *t;
+-		logmsg = "Recvd-Transfers: ";
+-		strList.clear();
+-//		const AB_VALUE *v;
+-//		const GWEN_STRINGLIST *l;
+-		cnt = 0;
++//		/**********************************************************************/
++//		//this->parseImExporterAccountInfo_Transfers(ai);		//Überweisungen
++//		/**********************************************************************/
++////		AB_TRANSACTION *t;
++//		logmsg = "Recvd-Transfers: ";
++//		strList.clear();
++////		const AB_VALUE *v;
++////		const GWEN_STRINGLIST *l;
++//		cnt = 0;
+ 
+-		cnt = AB_ImExporterAccountInfo_GetTransferCount(ai);
+-		logmsg2 = QString("Count: %1").arg(cnt);
+-		this->addlog(logmsg + logmsg2);
++//		cnt = AB_ImExporterAccountInfo_GetTransferCount(ai);
++//		logmsg2 = QString("Count: %1").arg(cnt);
++//		this->addlog(logmsg + logmsg2);
+ 
+-		t = AB_ImExporterAccountInfo_GetFirstTransfer(ai);
+-		while (t) {
+-			logmsg2 = QString("Purpose:\t");
+-			l = AB_Transaction_GetPurpose(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//		t = AB_ImExporterAccountInfo_GetFirstTransfer(ai);
++//		while (t) {
++//			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << AB_Transaction_GetRemoteBankName(t);
++//			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QString(AB_Transaction_GetRemoteBankName(t));
++//			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QString(QByteArray::fromPercentEncoding(AB_Transaction_GetRemoteBankName(t)));
++////			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QString::fromAscii(AB_Transaction_GetRemoteBankName(t));
++//			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QString::fromLatin1(AB_Transaction_GetRemoteBankName(t));
++//			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QString::fromLocal8Bit(AB_Transaction_GetRemoteBankName(t));
++//			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QString::fromStdString(AB_Transaction_GetRemoteBankName(t));
++//			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QString::fromUtf8(AB_Transaction_GetRemoteBankName(t));
++//			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QByteArray::fromPercentEncoding(QString::fromLatin1(AB_Transaction_GetRemoteBankName(t)).toLatin1());
++//			qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QString::fromUtf8(QByteArray::fromPercentEncoding(AB_Transaction_GetRemoteBankName(t)));
+ 
+-			logmsg2 = QString("Value:\t");
+-			v = AB_Transaction_GetValue(t);
+-			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
+-			this->addlog(logmsg + logmsg2);
++//			QByteArray encodedString = AB_Transaction_GetRemoteBankName(t);
++//			QTextCodec *codec = QTextCodec::codecForName("UTF-8");
++//			qDebug() << Q_FUNC_INFO << "1" << codec->name();
++//			qDebug() << Q_FUNC_INFO << "1 Should always work1:" << codec->toUnicode(encodedString);
++//			qDebug() << Q_FUNC_INFO << "1 Should always work2:" << codec->toUnicode(AB_Transaction_GetRemoteBankName(t));
++//			codec = QTextCodec::codecForCStrings();
++//			if (codec) {
++//				qDebug() << Q_FUNC_INFO << "2" << codec->name();
++//				qDebug() << Q_FUNC_INFO << "2 Should always work1:" << codec->toUnicode(encodedString);
++//				qDebug() << Q_FUNC_INFO << "2 Should always work2:" << codec->toUnicode(AB_Transaction_GetRemoteBankName(t));
++//			}
++//			codec = QTextCodec::codecForLocale();
++//			qDebug() << Q_FUNC_INFO << "3" << codec->name();
++//			qDebug() << Q_FUNC_INFO << "3 Should always work1:" << QString(codec->toUnicode(encodedString).toStdString().c_str());
++//			qDebug() << Q_FUNC_INFO << "3 Should always work2:" << QString::fromAscii(codec->toUnicode(encodedString).toStdString().c_str());
++//			qDebug() << Q_FUNC_INFO << "3 Should always work3:" << QString::fromUtf8(codec->toUnicode(encodedString).toStdString().c_str());
++//			qDebug() << Q_FUNC_INFO << "3 Should always work4:" << codec->toUnicode(AB_Transaction_GetRemoteBankName(t));
++//			qDebug() << Q_FUNC_INFO << "3 Should always work5:" << QString::fromUtf8(AB_Transaction_GetRemoteBankName(t));
++//			codec = QTextCodec::codecForUtfText(encodedString);
++//			qDebug() << Q_FUNC_INFO << "4" << codec->name();
++//			qDebug() << Q_FUNC_INFO << "4 Should always work1:" << codec->toUnicode(encodedString);
++//			qDebug() << Q_FUNC_INFO << "4 Should always work2:" << codec->toUnicode(AB_Transaction_GetRemoteBankName(t));
+ 
+-			logmsg2 = QString("RemoteName:\t");
+-			l = AB_Transaction_GetRemoteName(t);
+-			strList = abt_conv::GwenStringListToQStringList(l);
+-			logmsg2.append(strList.join(" - "));
+-			this->addlog(logmsg + logmsg2);
++//			qDebug() << Q_FUNC_INFO << "WORKS!:" << abt_conv::encodeFromAb(AB_Transaction_GetRemoteBankName(t));
+ 
+-			t = AB_ImExporterAccountInfo_GetNextTransfer(ai);
+-		}
++//			const char* str = AB_Transaction_GetRemoteBankName(t);
++//			while (*str != 0) {
++//				qDebug("*str = 0x%4X = %c", *str, *str);
++//				fprintf(stdout, "0x%4X ", *str);
++//				str++;
++//			}
++//			fprintf(stdout, "\n");
+ 
++//			//qDebug() << Q_FUNC_INFO << "RemoteBankName:" << QByteArray::fromRawData(str);
+ 
++//			logmsg2 = QString("RemoteBankName:\t");
++//			QString s = QString("%1").arg(AB_Transaction_GetRemoteBankName(t));
++//			logmsg2.append(s);
++//			this->addlog(logmsg + logmsg2);
+ 
++//			logmsg2 = QString("RemoteBankName:\t");
++//			QString bankName = abt_conv::encodeFromAb(AB_Transaction_GetRemoteBankName(t));
++//			logmsg2.append(bankName);
++//			this->addlog(logmsg + logmsg2);
+ 
++//			logmsg2 = QString("RemoteBankName:\t");
++//			bankName = AB_Transaction_GetRemoteBankName(t);
++//			logmsg2.append(bankName);
++//			this->addlog(logmsg + logmsg2);
+ 
+-		ai=AB_ImExporterContext_GetNextAccountInfo(ctx);
+-	} /* while ai */
++//			logmsg2 = QString("RemoteBankName:\t");
++//			bankName = QString::fromLocal8Bit(AB_Transaction_GetRemoteBankName(t));
++//			logmsg2.append(bankName);
++//			this->addlog(logmsg + logmsg2);
++
++//			logmsg2 = QString("RemoteBankName:\t");
++//			bankName = QString::fromUtf8(AB_Transaction_GetRemoteBankName(t));
++//			logmsg2.append(bankName);
++//			this->addlog(logmsg + logmsg2);
++
++//			logmsg2 = QString("RemoteBankName:\t");
++//			bankName = QString::fromAscii(AB_Transaction_GetRemoteBankName(t));
++//			logmsg2.append(bankName);
++//			this->addlog(logmsg + logmsg2);
++
++//			logmsg2 = QString("RemoteBankName:\t");
++//			bankName = QString::fromLatin1(AB_Transaction_GetRemoteBankName(t));
++//			logmsg2.append(bankName);
++//			this->addlog(logmsg + logmsg2);
++
++//			logmsg2 = QString("Purpose:\t");
++//			l = AB_Transaction_GetPurpose(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
++
++//			logmsg2 = QString("Value:\t");
++//			v = AB_Transaction_GetValue(t);
++//			qDebug() << Q_FUNC_INFO << "Value:" << abt_conv::ABValueToString(v);
++//			logmsg2.append(QString("%1").arg(AB_Value_GetValueAsDouble(v)));
++//			this->addlog(logmsg + logmsg2);
++
++//			logmsg2 = QString("RemoteName:\t");
++//			l = AB_Transaction_GetRemoteName(t);
++//			strList = abt_conv::GwenStringListToQStringList(l);
++//			logmsg2.append(strList.join(" - "));
++//			this->addlog(logmsg + logmsg2);
++
++//			logmsg2 = QString("LocalName:\t");
++//			bankName = QString::fromUtf8(AB_Transaction_GetLocalName(t));
++//			logmsg2.append(bankName);
++//			this->addlog(logmsg + logmsg2);
++
++//			abt_transaction trans(t);
++//			this->addlog("----- abt_transaction usage below -----");
++
++//			logmsg2 = QString("LocalName:\t");
++//			bankName = trans.getLocalName();
++//			logmsg2.append(bankName);
++//			this->addlog(logmsg + logmsg2);
++
++//			logmsg2 = QString("RemoteBankName:\t");
++//			bankName = trans.getRemoteBankName();
++//			logmsg2.append(bankName);
++//			this->addlog(logmsg + logmsg2);
++
++
++//			t = AB_ImExporterAccountInfo_GetNextTransfer(ai);
++//		}
++
++
++
++
++
++//		ai=AB_ImExporterContext_GetNextAccountInfo(ctx);
++//	} /* while ai */
+ 
+ 	//return true;
+ }
+diff --git a/src/pages/pagewidgettests.h b/src/pages/pagewidgettests.h
+--- a/src/pages/pagewidgettests.h
++++ b/src/pages/pagewidgettests.h
+@@ -28,11 +28,14 @@
+  *
+  ******************************************************************************/
+ 
++/** \todo translation of documentation and comments needed */
++
+ #ifndef PAGEWIDGETTESTS_H
+ #define PAGEWIDGETTESTS_H
+ 
+-#include <QtGui>
+-#include <QtCore>
++#include <QPlainTextEdit>
++#include <QLineEdit>
++#include <QDebug>
+ 
+ #include <aqbanking/job.h>
+ #include <aqbanking/transaction.h>
+@@ -61,6 +64,7 @@
+ #include "../abt_conv.h"
+ #include "../aqb_accounts.h"
+ 
++
+ /*! \brief NUR FÜR TESTZECKE!
+  *
+  * Diese Klasse wird nur genutzt um widgets zu testen, im eigentlichen
+@@ -83,6 +87,14 @@
+ 	QPushButton *button6;
+ 	QPushButton *button7;
+ 	QPushButton *button8;
++	QLineEdit *edit1;
++	QLineEdit *edit2;
++	QLineEdit *edit3;
++	QLineEdit *edit4;
++	QLineEdit *edit5;
++	QLineEdit *edit6;
++	QLineEdit *edit7;
++	QLineEdit *edit8;
+ 	QPlainTextEdit *textEdit;
+ 
+ 	aqb_Accounts *accounts;
+diff --git a/src/translationchooser.cpp b/src/translationchooser.cpp
+--- a/src/translationchooser.cpp
++++ b/src/translationchooser.cpp
+@@ -49,31 +49,31 @@
+  *  application executeable is used (TARGET from .pro file), otherwise the
+  *  name defined here.
+  */
+-QT_STATIC_CONST QString TC_APPNAME = "abtransfers";
++static const QString TC_APPNAME = QString::fromUtf8("abtransfers");
+ 
+ /** default language (tr() in the source is used with this language) */
+-QT_STATIC_CONST QString TC_DEFAULT_LANGUAGE = "Deutsch";
++static const QString TC_DEFAULT_LANGUAGE = QString::fromUtf8("Deutsch");
+ /** default locale for TC_DEFAULT_LANGUAGE */
+-QT_STATIC_CONST QString TC_DEFAULT_LOCALE = "de_DE";
++static const QString TC_DEFAULT_LOCALE = QString::fromUtf8("de_DE");
+ /** default translation verison number (if none is supplied by the translator) */
+-QT_STATIC_CONST double TC_DEFAULT_VERSION_NR = 0.0;
++static const double TC_DEFAULT_VERSION_NR = 0.0;
+ 
+ /** directory in the resources under which the *.qm files are */
+-QT_STATIC_CONST QString TC_TRANS_RESOURCE_DIRNAME = "translation/";
++static const QString TC_TRANS_RESOURCE_DIRNAME = QString::fromUtf8("translation/");
+ /** addional directory for nearly every path */
+-QT_STATIC_CONST QString TC_TRANSLATION_DIRNAME = "translation/";
++static const QString TC_TRANSLATION_DIRNAME = QString::fromUtf8("translation/");
+ /** directory for system wide shared data (mainly used under Linux) */
+-QT_STATIC_CONST QString TC_SYSTEM_SHARED = "/usr/share/";
++static const QString TC_SYSTEM_SHARED = QString::fromUtf8("/usr/share/");
+ /** directory for Mac OS resources within an Application package
+  *  (only supported unter Mac OS) */
+-QT_STATIC_CONST QString TC_RESOURCES_MAC = "/../Resources/";
++static const QString TC_RESOURCES_MAC = QString::fromUtf8("/../Resources/");
+ 
+ /** convenient access to TC_TRANS_RESOURCE_DIRNAME */
+-QT_STATIC_CONST QString TC_TRANS_RESOURCE_STRING =
+-				QString(":/").append(TC_TRANS_RESOURCE_DIRNAME);
++static const QString TC_TRANS_RESOURCE_STRING =
++		QString::fromUtf8(":/").append(TC_TRANS_RESOURCE_DIRNAME);
+ 
+ /** directory for translations within the users home directory */
+-QT_STATIC_CONST QString APP_SETTINGS_DIRNAME = "/.abtransfers/";
++static const QString APP_SETTINGS_DIRNAME = QString::fromUtf8("/.abtransfers/");
+ 
+ 
+ /** \brief data class that is only used within the TranslationChooser class.
+@@ -167,7 +167,7 @@
+ 		this->appFilename = TC_APPNAME;
+ 
+ 	this->activeTranslators.clear();
+-	this->activeLanguageName = ""; //is updated by setLanguage();
++	this->activeLanguageName = QString::fromUtf8(""); //updated by setLanguage();
+ 	this->langMenu = NULL;
+ 
+ 	//the calling order is important!
+@@ -206,7 +206,7 @@
+ 		qDebug() << "Translations -"
+ 			 << "searching:" << location;
+ 		QDir dir(location);
+-		QString nameFilter = this->appFilename + QString("*.qm");
++		QString nameFilter = this->appFilename + QString::fromUtf8("*.qm");
+ 		QStringList fileNames = dir.entryList(QStringList(nameFilter),
+ 						      QDir::Files, QDir::Name);
+ 
+@@ -288,12 +288,14 @@
+ 	locations.append(TC_TRANS_RESOURCE_STRING);
+ 
+ 	//e.g.: /usr/share/APPNAME/
+-	locations.append(TC_SYSTEM_SHARED + appName + QString("/"));;
++	locations.append(TC_SYSTEM_SHARED + appName + QString::fromUtf8("/"));;
+ 	 //e.g.: /usr/share/APPNAME/translation
+-	locations.append(TC_SYSTEM_SHARED + appName + QString("/") + TC_TRANSLATION_DIRNAME);
++	locations.append(TC_SYSTEM_SHARED + appName + QString::fromUtf8("/") +
++			 TC_TRANSLATION_DIRNAME);
+ 
+ 	locations.append(appPath); //app dir
+-	locations.append(appPath + QString("/") + TC_TRANSLATION_DIRNAME);
++	locations.append(appPath + QString::fromUtf8("/") +
++			 TC_TRANSLATION_DIRNAME);
+ 
+ #if defined(Q_OS_MAC)
+ 	locations.append(appPath + TC_RESOURCES_MAC);
+@@ -366,7 +368,7 @@
+ 	//: used version of the application.
+ 	appVersion = translator.translate("TranslationChooser", "APP_VERSION");
+ 
+-	if (appVersion == "APP_VERSION") {
++	if (appVersion == QString::fromUtf8("APP_VERSION")) {
+ 		//translator did not set any version
+ 		appVersion = QString(); //use an empty strings
+ 	}
+@@ -394,7 +396,7 @@
+ {
+ 	QString localeStr;
+ 	localeStr = QFileInfo(qmFile).fileName().remove(this->appFilename);
+-	localeStr = localeStr.remove(".qm", Qt::CaseInsensitive);
++	localeStr = localeStr.remove(QString::fromUtf8(".qm"), Qt::CaseInsensitive);
+ 	//there must be _one_ separation between program name and locale
+ 	localeStr = localeStr.remove(0, 1);
+ 	return localeStr;
+@@ -431,8 +433,8 @@
+ {
+ 	QTranslator *qtTranslator = new QTranslator();
+ 	QString libDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
+-	if (!qtTranslator->load("qt_" + locale, libDir)) {
+-		if (!locale.startsWith("en")) {
++	if (!qtTranslator->load(QString::fromUtf8("qt_") + locale, libDir)) {
++		if (!locale.startsWith(QString::fromUtf8("en"))) {
+ 			//the locale en is built in qt, this could not be loaded
+ 			qWarning() << Q_FUNC_INFO << "could not load qt"
+ 				   << "translations for locale" << locale;
+@@ -544,8 +546,8 @@
+  */
+ void TranslationChooser::setLanguage(const QString &language)
+ {
+-	QString qtLocale = "";
+-	QString qmFile = "";
++	QString qtLocale = QString();
++	QString qmFile = QString();
+ 	const TranslationChooserData *tData;
+ 	tData = this->supportedTranslations.value(language, NULL);
+ 
+@@ -605,8 +607,8 @@
+ 
+ 	QStringList localeStrList;
+ 	localeStrList.append(localeStr);
+-	while (localeStr.contains("_")) {
+-		int pos = localeStr.lastIndexOf("_");
++	while (localeStr.contains(QString::fromUtf8("_"))) {
++		int pos = localeStr.lastIndexOf(QString::fromUtf8("_"));
+ 		localeStr.truncate(pos);
+ 		qDebug() << Q_FUNC_INFO << "localeStr =" << localeStr;
+ 		localeStrList.append(localeStr);
+@@ -678,7 +680,7 @@
+ 	if (!tdata)
+ 		return QString();
+ 
+-	return QString("%1").arg(tdata->translationVersion);
++	return QString::fromUtf8("%1").arg(tdata->translationVersion);
+ }
+ 
+ //public
+@@ -721,13 +723,14 @@
+  */
+ QString TranslationChooser::helpTextFilename() const
+ {
+-	static const QString defVal(TC_TRANS_RESOURCE_STRING + "abtransfers-helptext_de.html");
++	static const QString defVal(TC_TRANS_RESOURCE_STRING +
++				    QString::fromUtf8("abtransfers-helptext_de.html"));
+ 
+ 	//: The filename of the help text.
+ 	//: The same directories as for the qm-files are searched!
+ 	QString helpFilename = tr("HELPTEXTFILENAME");
+ 
+-	if (helpFilename == "HELPTEXTFILENAME") {
++	if (helpFilename == QString::fromUtf8("HELPTEXTFILENAME")) {
+ 		//no translation supplied, use default (german)
+ 		return defVal;
+ 	}
+diff --git a/src/widgets/bankaccountswidget.cpp b/src/widgets/bankaccountswidget.cpp
+--- a/src/widgets/bankaccountswidget.cpp
++++ b/src/widgets/bankaccountswidget.cpp
+@@ -35,6 +35,8 @@
+ #include <QTreeWidgetItem>
+ #include <QStringList>
+ #include <QMouseEvent>
++#include <QDrag>
++#include <QMimeData>
+ 
+ #include <QDebug>
+ 
+@@ -151,10 +153,10 @@
+ 	QTextStream(&result) << a;
+ 	qDebug() << result;
+ 	//Nur dieselbe Instanz darf diesen Pointer verwenden!
+-	QString mimetype = QString("application/x-abBanking_%1_AccountInfo").arg(app);
+-	mimeData->setData(mimetype, QByteArray(result.toAscii()));
++	QString mimetype = QString::fromUtf8("application/x-abBanking_%1_AccountInfo").arg(app);
++	mimeData->setData(mimetype, QByteArray(result.toLatin1()));
+ 	drag->setMimeData(mimeData);
+-	drag->setPixmap(QPixmap(":/icons/bank-icon"));
++	drag->setPixmap(QPixmap(QString::fromUtf8(":/icons/bank-icon")));
+ 
+ 	drag->exec(Qt::CopyAction);
+ 
+@@ -276,7 +278,10 @@
+ 	item->setData(3, Qt::DisplayRole, acc->Currency());
+ 	item->setData(4, Qt::DisplayRole, acc->getBankLine());
+ 	item->setData(4, Qt::TextAlignmentRole, Qt::AlignRight); //Dispo rechtsbündig
+-	item->setData(5, Qt::DisplayRole, QString("%1").arg(acc->getDate().toString("ddd dd. MMM yyyy")));
++	QDate date = acc->getDate();
++	QString format = QString::fromUtf8("ddd dd. MMM yyyy");
++	QString value = QString::fromUtf8("%1").arg(date.toString(format));
++	item->setData(5, Qt::DisplayRole, value);
+ 	item->setData(5, Qt::TextAlignmentRole, Qt::AlignHCenter); //Datum mittig
+ 	item->setData(6, Qt::DisplayRole, acc->AccountType());
+ 	item->setData(7, Qt::DisplayRole, acc->Country());
+diff --git a/src/widgets/knownempfaengerwidget.cpp b/src/widgets/knownempfaengerwidget.cpp
+--- a/src/widgets/knownempfaengerwidget.cpp
++++ b/src/widgets/knownempfaengerwidget.cpp
+@@ -41,6 +41,8 @@
+ #include <QDialog>
+ #include <QLayout>
+ #include <QPushButton>
++#include <QDrag>
++#include <QMimeData>
+ 
+ KnownEmpfaengerWidget::KnownEmpfaengerWidget(const QList<abt_EmpfaengerInfo*> *list, QWidget *parent) :
+     QGroupBox(parent),
+@@ -155,11 +157,11 @@
+ 	QTextStream(&result) << a;
+ 	qDebug() << result;
+ 	//Nur dieselbe Instanz darf diesen Pointer verwenden!
+-	QString mimetype = QString("application/x-abBanking_%1_KnownRecipient").arg(app);
+-	mimeData->setData(mimetype, QByteArray(result.toAscii()));
++	QString mimetype = QString::fromUtf8("application/x-abBanking_%1_KnownRecipient").arg(app);
++	mimeData->setData(mimetype, QByteArray(result.toLatin1()));
+ 	//mimeData->setData("text/plain", info);
+ 	drag->setMimeData(mimeData);
+-	drag->setPixmap(QPixmap(":/icons/knownEmpfaenger"));
++	drag->setPixmap(QPixmap(QString::fromUtf8(":/icons/knownEmpfaenger")));
+ 
+ 	drag->exec(Qt::CopyAction);
+ 	//evt. später auch den return wert auswerten um zu wissen was mit dem
+@@ -175,19 +177,22 @@
+ 	this->actNew = new QAction(this);
+ 	this->actNew->setText(tr("Neu"));
+ 	this->actNew->setToolTip(tr("Einen neuen Empfänger anlegen"));
+-	this->actNew->setIcon(QIcon::fromTheme("document-new", QIcon(":/icons/document-new")));
++	this->actNew->setIcon(QIcon::fromTheme(QString::fromUtf8("document-new"),
++					       QIcon(QString::fromUtf8(":/icons/document-new"))));
+ 	connect(this->actNew, SIGNAL(triggered()), this, SLOT(onActionNewTriggered()));
+ 
+ 	this->actDelete = new QAction(this);
+ 	this->actDelete->setText(tr("Löschen"));
+ 	this->actDelete->setToolTip(tr("Ausgewählten Empfänger löschen"));
+-	this->actDelete->setIcon(QIcon::fromTheme("edit-delete", QIcon(":/icons/delete")));
++	this->actDelete->setIcon(QIcon::fromTheme(QString::fromUtf8("edit-delete"),
++						  QIcon(QString::fromUtf8(":/icons/delete"))));
+ 	connect(this->actDelete, SIGNAL(triggered()), this, SLOT(onActionDeleteTriggered()));
+ 
+ 	this->actEdit = new QAction(this);
+ 	this->actEdit->setText(tr("Ändern"));
+ 	this->actEdit->setToolTip(tr("Ausgewählten Empfänger bearbeiten"));
+-	this->actEdit->setIcon(QIcon::fromTheme("document-edit", QIcon(":/icons/document-edit")));
++	this->actEdit->setIcon(QIcon::fromTheme(QString::fromUtf8("document-edit"),
++						QIcon(QString::fromUtf8(":/icons/document-edit"))));
+ 	connect(this->actEdit, SIGNAL(triggered()), this, SLOT(onActionEditTriggered()));
+ }
+ 
+diff --git a/src/widgets/widgetaccountcombobox.cpp b/src/widgets/widgetaccountcombobox.cpp
+--- a/src/widgets/widgetaccountcombobox.cpp
++++ b/src/widgets/widgetaccountcombobox.cpp
+@@ -28,8 +28,10 @@
+  *
+  ******************************************************************************/
+ 
++/** \todo translation of documentation and comments needed */
++
+ #include "widgetaccountcombobox.h"
+-#include <QtGui/QLayout>
++#include <QLayout>
+ 
+ #include "../aqb_accounts.h"
+ #include "../aqb_accountinfo.h"
+@@ -76,7 +78,7 @@
+ 	this->comboBox->setDisabled(false); //es sind Accounts vorhanden
+ 
+ 	foreach(const aqb_AccountInfo *account, this->m_allAccounts->getAccountHash().values()) {
+-		QString cbText = QString("%1").arg(account->Name());
++		QString cbText = QString::fromUtf8("%1").arg(account->Name());
+ 		this->comboBox->addItem(cbText, QVariant::fromValue(account));
+ 	}
+ }
+diff --git a/src/widgets/widgetaccountcombobox.h b/src/widgets/widgetaccountcombobox.h
+--- a/src/widgets/widgetaccountcombobox.h
++++ b/src/widgets/widgetaccountcombobox.h
+@@ -32,7 +32,7 @@
+ #define WIDGETACCOUNTCOMBOBOX_H
+ 
+ #include <QWidget>
+-#include <QtGui/QComboBox>
++#include <QComboBox>
+ 
+ class aqb_AccountInfo;
+ class aqb_Accounts;
+diff --git a/src/widgets/widgetaccountdata.cpp b/src/widgets/widgetaccountdata.cpp
+--- a/src/widgets/widgetaccountdata.cpp
++++ b/src/widgets/widgetaccountdata.cpp
+@@ -30,15 +30,16 @@
+ 
+ #include "widgetaccountdata.h"
+ 
+-#include <QtCore/QDebug>
+-#include <QtCore/QVariant>
+-#include <QtGui/QLayout>
+-#include <QtGui/QDragEnterEvent>
+-#include <QtGui/QDropEvent>
+-#include <QtGui/QLabel>
+-#include <QtGui/QComboBox>
++#include <QDebug>
++#include <QVariant>
++#include <QLayout>
++#include <QDragEnterEvent>
++#include <QDropEvent>
++#include <QLabel>
++#include <QComboBox>
++#include <QMimeData>
+ 
+-#include <QtCore/QCoreApplication> //um qApp verwenden zu können
++#include <QCoreApplication> //to use qApp
+ 
+ #include "widgetlineeditwithlabel.h"
+ #include "widgetaccountcombobox.h"
+@@ -109,17 +110,17 @@
+ 	QHBoxLayout *hl_acc = new QHBoxLayout(); // layout for kto, blz
+ 	QHBoxLayout *hl_sepa = new QHBoxLayout(); // layout for iban, bic
+ 
+-	validatorAccNr->setRegExp(QRegExp("\\d*", Qt::CaseSensitive));
+-	validatorBLZ->setRegExp(QRegExp("\\d{3} ?\\d{3} ?\\d{2}", Qt::CaseSensitive));
+-	validatorIBAN->setRegExp(QRegExp("[a-zA-Z]{2}[0-9]{2} ?[a-zA-Z0-9]{4} ?[0-9]{4} ?[0-9]{3}([a-zA-Z0-9]?){0,1} ?([ a-zA-Z0-9]?){0,15}", Qt::CaseSensitive));
+-	validatorBIC->setRegExp(QRegExp("([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)", Qt::CaseSensitive));
++	validatorAccNr->setRegExp(QRegExp(QString::fromUtf8("\\d*"), Qt::CaseSensitive));
++	validatorBLZ->setRegExp(QRegExp(QString::fromUtf8("\\d{3} ?\\d{3} ?\\d{2}"), Qt::CaseSensitive));
++	validatorIBAN->setRegExp(QRegExp(QString::fromUtf8("[a-zA-Z]{2}[0-9]{2} ?[a-zA-Z0-9]{4} ?[0-9]{4} ?[0-9]{3}([a-zA-Z0-9]?){0,1} ?([ a-zA-Z0-9]?){0,15}"), Qt::CaseSensitive));
++	validatorBIC->setRegExp(QRegExp(QString::fromUtf8("([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)"), Qt::CaseSensitive));
+ 
+-	this->llName = new widgetLineEditWithLabel(tr("Name"), "", Qt::AlignTop, this);
++	this->llName = new widgetLineEditWithLabel(tr("Name"), QString(), Qt::AlignTop, this);
+ 
+ 	if (!sepaFields || recipientInput) {
+-		this->llAccountNumber = new widgetLineEditWithLabel(tr("Kontonummer"), "", Qt::AlignTop, this);
++		this->llAccountNumber = new widgetLineEditWithLabel(tr("Kontonummer"), QString(), Qt::AlignTop, this);
+ 		this->llAccountNumber->lineEdit->setMinimumWidth(170);
+-		this->llBankCode = new widgetLineEditWithLabel(tr("Bankleitzahl"), "", Qt::AlignTop, this);
++		this->llBankCode = new widgetLineEditWithLabel(tr("Bankleitzahl"), QString(), Qt::AlignTop, this);
+ 		this->llBankCode->lineEdit->setMinimumWidth(110);
+ 		this->llAccountNumber->lineEdit->setValidator(validatorAccNr);
+ 		this->llBankCode->lineEdit->setValidator(validatorBLZ);
+@@ -140,9 +141,9 @@
+ 			this, SLOT(lineEditBankCode_editingFinished()));
+ 	}
+ 	if (sepaFields) {
+-		this->llIBAN = new widgetLineEditWithLabel(tr("IBAN"), "", Qt::AlignTop, this);
++		this->llIBAN = new widgetLineEditWithLabel(tr("IBAN"), QString(), Qt::AlignTop, this);
+ 		this->llIBAN->lineEdit->setMinimumWidth(170);
+-		this->llBIC = new widgetLineEditWithLabel(tr("BIC"), "", Qt::AlignTop, this);
++		this->llBIC = new widgetLineEditWithLabel(tr("BIC"), QString(), Qt::AlignTop, this);
+ 		this->llBIC->lineEdit->setMinimumWidth(110);
+ 		this->llIBAN->lineEdit->setValidator(validatorIBAN);
+ 		this->llBIC->lineEdit->setValidator(validatorBIC);
+@@ -166,15 +167,13 @@
+ 	hl_acc->setSpacing(0);
+ 	hl_sepa->setSpacing(0);
+ 
+-	this->llBankName = new widgetLineEditWithLabel(tr("Kreditinstitut"), "", Qt::AlignTop, this);
++	this->llBankName = new widgetLineEditWithLabel(tr("Kreditinstitut"), QString(), Qt::AlignTop, this);
+ 
+-	//Nur Zeichen gemäß ZKA-Zeichensatz zulassen
+-//	UppercaseValidator *validatorText = new UppercaseValidator(this);
+-//	validatorText->setRegExp(QRegExp("[-+ .,/*&%0-9A-Z]*", Qt::CaseSensitive));
+-
+-	//Nur Zeichen gemäß ZKA-Zeichensatz, aber auch Kleinbuchstaben, zulassen
++	//only allow characters that match the regex from the settings
++	//default: "[-+ .,/*&%0-9A-Za-z]"
+ 	QRegExpValidator *validatorText = new QRegExpValidator(this);
+-	validatorText->setRegExp(QRegExp("[-+ .,/*&%0-9A-Za-z]*", Qt::CaseSensitive));
++	QRegExp regex(settings->allowedCharsRecipientRegex().append(QString::fromUtf8("*")), Qt::CaseSensitive);
++	validatorText->setRegExp(regex);
+ 
+ 	this->llName->lineEdit->setValidator(validatorText);
+ 	this->llBankName->lineEdit->setValidator(validatorText);
+@@ -565,7 +564,7 @@
+ 	if (this->llName->isEnabled()) {
+ 		return this->llName->lineEdit->text();
+ 	} else {
+-		return QString("");
++		return QString();
+ 	}
+ }
+ 
+@@ -582,7 +581,7 @@
+ 	if (this->llAccountNumber->isEnabled()) {
+ 		return this->llAccountNumber->lineEdit->text();
+ 	} else {
+-		return QString("");
++		return QString();
+ 	}
+ }
+ 
+@@ -597,9 +596,10 @@
+ 	}
+ 
+ 	if (this->llIBAN->isEnabled()) {
+-		return this->llIBAN->lineEdit->text().replace(" ", "");
++		return this->llIBAN->lineEdit->text().replace(QString::fromUtf8(" "),
++							      QString::fromUtf8(""));
+ 	} else {
+-		return QString("");
++		return QString();
+ 	}
+ }
+ 
+@@ -624,12 +624,13 @@
+ 	if (this->llBankCode->isEnabled()) {
+ 		//Eingabe ist durch die "Limits" erlaubt.
+ 		//Wir geben eine BLZ ohne Leerzeichen zurück.
+-		return this->llBankCode->lineEdit->text().replace(" ", "");
++		return this->llBankCode->lineEdit->text().replace(QString::fromUtf8(" "),
++								  QString::fromUtf8(""));
+ 	}
+ 
+ 	//Wir sind kein "localAccount" und die Eingabe als "remoteAccount" ist
+ 	//nicht erlaubt. Wir geben einen leeren String zurück.
+-	return QString("");
++	return QString();
+ 
+ }
+ 
+@@ -654,12 +655,13 @@
+ 	if (this->llBIC->isEnabled()) {
+ 		//Eingabe ist durch die "Limits" erlaubt.
+ 		//Wir geben eine BIC ohne Leerzeichen zurück.
+-		return this->llBIC->lineEdit->text().replace(" ", "");
++		return this->llBIC->lineEdit->text().replace(QString::fromUtf8(" "),
++							     QString::fromUtf8(""));
+ 	}
+ 
+ 	//Wir sind kein "localAccount" und die Eingabe als "remoteAccount" ist
+ 	//nicht erlaubt. Wir geben einen leeren String zurück.
+-	return QString("");
++	return QString();
+ 
+ }
+ 
+@@ -676,7 +678,7 @@
+ 	if (this->llBankName->isEnabled()) {
+ 		return this->llBankName->lineEdit->text();
+ 	} else {
+-		return QString("");
++		return QString();
+ 	}
+ }
+ 
+@@ -732,8 +734,8 @@
+ 	 */
+ 
+ 	qulonglong app = (qulonglong)qApp;
+-	QString mimetypeRecipient = QString("application/x-abBanking_%1_KnownRecipient").arg(app);
+-	QString mimetypeAccount = QString("application/x-abBanking_%1_AccountInfo").arg(app);
++	QString mimetypeRecipient = QString::fromUtf8("application/x-abBanking_%1_KnownRecipient").arg(app);
++	QString mimetypeAccount = QString::fromUtf8("application/x-abBanking_%1_AccountInfo").arg(app);
+ 
+ 
+ 	//qDebug() << "dragEnterEvent: Format =" << event->mimeData()->formats();
+@@ -766,8 +768,8 @@
+ 	//Über den mimeType wird auch sichergestellt das nur dieselbe Instanz
+ 	//den übergebenen Pointer verwendet!
+ 	qulonglong app = (qulonglong)qApp;
+-	QString mimetypeRecipient = QString("application/x-abBanking_%1_KnownRecipient").arg(app);
+-	QString mimetypeAccount = QString("application/x-abBanking_%1_AccountInfo").arg(app);
++	QString mimetypeRecipient = QString::fromUtf8("application/x-abBanking_%1_KnownRecipient").arg(app);
++	QString mimetypeAccount = QString::fromUtf8("application/x-abBanking_%1_AccountInfo").arg(app);
+ 
+ 	if (event->mimeData()->hasFormat(mimetypeRecipient)) {
+ 		QByteArray encoded = event->mimeData()->data(mimetypeRecipient);
+diff --git a/src/widgets/widgetcalculator.cpp b/src/widgets/widgetcalculator.cpp
+--- a/src/widgets/widgetcalculator.cpp
++++ b/src/widgets/widgetcalculator.cpp
+@@ -80,26 +80,26 @@
+ 	this->display->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+ 	grid->addWidget(display, 0, 0, 1, 5);
+ 
+-	this->buttons[0] = new QPushButton("0", this);
+-	this->buttons[1] = new QPushButton("1", this);
+-	this->buttons[2] = new QPushButton("2", this);
+-	this->buttons[3] = new QPushButton("3", this);
+-	this->buttons[4] = new QPushButton("4", this);
+-	this->buttons[5] = new QPushButton("5", this);
+-	this->buttons[6] = new QPushButton("6", this);
+-	this->buttons[7] = new QPushButton("7", this);
+-	this->buttons[8] = new QPushButton("8", this);
+-	this->buttons[9] = new QPushButton("9", this);
+-	this->buttons[PLUS] = new QPushButton("+", this);
+-	this->buttons[MINUS] = new QPushButton("-", this);
+-	this->buttons[STAR] = new QPushButton("X", this);
++	this->buttons[0] = new QPushButton(QString::fromUtf8("0"), this);
++	this->buttons[1] = new QPushButton(QString::fromUtf8("1"), this);
++	this->buttons[2] = new QPushButton(QString::fromUtf8("2"), this);
++	this->buttons[3] = new QPushButton(QString::fromUtf8("3"), this);
++	this->buttons[4] = new QPushButton(QString::fromUtf8("4"), this);
++	this->buttons[5] = new QPushButton(QString::fromUtf8("5"), this);
++	this->buttons[6] = new QPushButton(QString::fromUtf8("6"), this);
++	this->buttons[7] = new QPushButton(QString::fromUtf8("7"), this);
++	this->buttons[8] = new QPushButton(QString::fromUtf8("8"), this);
++	this->buttons[9] = new QPushButton(QString::fromUtf8("9"), this);
++	this->buttons[PLUS] = new QPushButton(QString::fromUtf8("+"), this);
++	this->buttons[MINUS] = new QPushButton(QString::fromUtf8("-"), this);
++	this->buttons[STAR] = new QPushButton(QString::fromUtf8("X"), this);
+ 	this->buttons[COMMA] = new QPushButton(comma, this);
+-	this->buttons[EQUAL] = new QPushButton("=", this);
+-	this->buttons[SLASH] = new QPushButton("/", this);
+-	this->buttons[CLEAR] = new QPushButton("C", this);
+-	this->buttons[CLEARALL] = new QPushButton("AC", this);
+-	this->buttons[PLUSMINUS] = new QPushButton("+-", this);
+-	this->buttons[PERCENT] = new QPushButton("%", this);
++	this->buttons[EQUAL] = new QPushButton(QString::fromUtf8("="), this);
++	this->buttons[SLASH] = new QPushButton(QString::fromUtf8("/"), this);
++	this->buttons[CLEAR] = new QPushButton(QString::fromUtf8("C"), this);
++	this->buttons[CLEARALL] = new QPushButton(QString::fromUtf8("AC"), this);
++	this->buttons[PLUSMINUS] = new QPushButton(QString::fromUtf8("+-"), this);
++	this->buttons[PERCENT] = new QPushButton(QString::fromUtf8("%"), this);
+ 
+ 	grid->addWidget(buttons[7], 1, 0);
+ 	grid->addWidget(buttons[8], 1, 1);
+@@ -128,7 +128,7 @@
+ 	this->op1 = 0.0;
+ 	this->stackedOp = op = 0;
+ 	this->operand.clear();
+-	this->changeDisplay("0");
++	this->changeDisplay(QString::fromUtf8("0"));
+ 
+ 	// connect the digit signals through a signal mapper
+ 	QSignalMapper* mapper = new QSignalMapper(this);
+@@ -193,9 +193,9 @@
+ void WidgetCalculator::commaClicked(void)
+ {
+ 	if (this->operand.length() == 0)
+-		this->operand = '0';
+-	if (this->operand.contains('.', Qt::CaseInsensitive) == 0)
+-		this->operand.append('.');
++		this->operand = QString::fromUtf8("0");
++	if (this->operand.contains(QString::fromUtf8("."), Qt::CaseInsensitive) == 0)
++		this->operand.append(QString::fromUtf8("."));
+ 
+ 	if (this->operand.length() > 16)
+ 		this->operand = operand.left(16);
+@@ -212,10 +212,10 @@
+ 	}
+ 
+ 	if (this->operand.length() > 0) {
+-		if (this->operand.indexOf('-') != -1) {
+-			this->operand.remove('-');
++		if (this->operand.indexOf(QString::fromUtf8("-")) != -1) {
++			this->operand.remove(QString::fromUtf8("-"));
+ 		} else {
+-			this->operand.prepend('-');
++			this->operand.prepend(QString::fromUtf8("-"));
+ 		}
+ 		this->changeDisplay(operand);
+ 	}
+@@ -281,7 +281,7 @@
+ 
+ 		if (error) {
+ 			this->op = 0;
+-			this->changeDisplay("Error");
++			this->changeDisplay(QString::fromUtf8("Error"));
+ 			this->operand.clear();
+ 		} else {
+ 			this->op1 = op2;
+@@ -315,14 +315,14 @@
+ 	QString str;
+ 	str.setNum(val, 'f');
+ 	int i = str.length();
+-	while (i > 1 && str[i-1] == '0') {
++	while (i > 1 && str.at(i-1) == QChar::fromLatin1('0')) {
+ 		--i;
+ 	}
+ 	// cut off trailing 0's
+ 	str.remove(i, str.length());
+ 	if (str.length() > 0) {
+ 		// possibly remove trailing period
+-		if (str[str.length()-1] == '.') {
++		if (str[str.length()-1] == QChar::fromLatin1('.')) {
+ 			str.remove(str.length() - 1, 1);
+ 		}
+ 	}
+@@ -337,7 +337,7 @@
+ 		this->operand = this->operand.left(this->operand.length() - 1);
+ 	}
+ 	if (this->operand.length() == 0)
+-		this->changeDisplay("0");
++		this->changeDisplay(QString::fromUtf8("0"));
+ 	else
+ 		this->changeDisplay(this->operand);
+ }
+@@ -348,7 +348,7 @@
+ {
+ 	this->operand.clear();
+ 	this->op = 0;
+-	this->changeDisplay("0");
++	this->changeDisplay(QString::fromUtf8("0"));
+ }
+ 
+ //protected slot
+@@ -384,12 +384,12 @@
+ const QString WidgetCalculator::result(void) const
+ {
+ 	QString txt = lastResult;
+-	txt.replace(QRegExp("\\."), this->comma);
+-	if (txt[0] == '-') {
++	txt.replace(QRegExp(QString::fromUtf8("\\.")), this->comma);
++	if (txt[0] == QChar::fromLatin1('-')) {
+ 		txt = txt.mid(1); // get rid of the minus sign
+ 		QString mask;
+ 		mask = QLocale::system().negativeSign();
+-		mask.append("%1");
++		mask.append(QString::fromUtf8("%1"));
+ 		txt = QString(mask).arg(txt);
+ 	}
+ 	return txt;
+@@ -425,8 +425,9 @@
+ void WidgetCalculator::changeDisplay(const QString& str)
+ {
+ 	QString txt = str;
+-	txt.replace(QRegExp("\\."), comma);
+-	this->display->setText("<b>" + txt + "</b>");
++	txt.replace(QRegExp(QString::fromUtf8("\\.")), comma);
++	this->display->setText(QString::fromUtf8("<b>") + txt +
++			       QString::fromUtf8("</b>"));
+ }
+ 
+ //protected
+@@ -522,20 +523,21 @@
+ 	  */
+ 	//operand.replace(QRegExp(QString('\\') + KGlobal::locale()->thousandsSeparator()), QChar());
+ 	//this->operand.replace(QRegExp(QString('\\') + QLocale::system().groupSeparator()), QChar());
+-	this->operand.replace(QRegExp(QString('\\') + this->comma), ".");
+-	if (this->operand.contains('(')) {
++	this->operand.replace(QRegExp(QString::fromUtf8("\\") + this->comma),
++			      QString::fromUtf8("."));
++	if (this->operand.contains(QString::fromUtf8("("))) {
+ 		negative = true;
+-		this->operand.remove('(');
+-		this->operand.remove(')');
++		this->operand.remove(QString::fromUtf8("("));
++		this->operand.remove(QString::fromUtf8(")"));
+ 	}
+-	if (this->operand.contains('-')) {
++	if (this->operand.contains(QString::fromUtf8("-"))) {
+ 		negative = true;
+-		this->operand.remove('-');
++		this->operand.remove(QString::fromUtf8("-"));
+ 	}
+ 	if (this->operand.isEmpty())
+-		this->operand = '0';
++		this->operand = QString::fromUtf8("0");
+ 	else if (negative)
+-		this->operand = QString("-%1").arg(operand);
++		this->operand = QString::fromUtf8("-%1").arg(operand);
+ 
+ 	this->changeDisplay(this->operand);
+ 
+diff --git a/src/widgets/widgetdate.cpp b/src/widgets/widgetdate.cpp
+--- a/src/widgets/widgetdate.cpp
++++ b/src/widgets/widgetdate.cpp
+@@ -30,11 +30,11 @@
+ 
+ #include "widgetdate.h"
+ 
+-#include <QtGui/QLayout>
+-#include <QtGui/QCalendarWidget>
+-#include <QtGui/QTextCharFormat>
++#include <QLayout>
++#include <QCalendarWidget>
++#include <QTextCharFormat>
+ 
+-#include <QtCore/QDebug>
++#include <QDebug>
+ 
+ widgetDate::widgetDate(const QString &labelText, Qt::Alignment labelAt, QWidget *parent) :
+ 	QWidget(parent)
+@@ -51,7 +51,7 @@
+ 	this->allowedWeekDays.clear(); //Alle Wochentage erlaubt
+ 
+ 	this->dateEdit = new QDateEdit(this);
+-	this->dateEdit->setDisplayFormat("ddd dd.MM.yyyy"); //z.B. Mi. 07.09.2011
++	this->dateEdit->setDisplayFormat(QString::fromUtf8("ddd dd.MM.yyyy")); //z.B. Mi. 07.09.2011
+ 	this->dateEdit->setCalendarPopup(true);
+ 	this->dateEdit->calendarWidget()->setFirstDayOfWeek(Qt::Monday);
+ 	this->dateEdit->setDate(QDate::currentDate());
+@@ -244,7 +244,7 @@
+  */
+ void widgetDate::setLimitValuesExecutionDayWeek(const QStringList &execWeekdays)
+ {
+-	if (execWeekdays.isEmpty() || execWeekdays.contains("0")) {
++	if (execWeekdays.isEmpty() || execWeekdays.contains(QString::fromUtf8("0"))) {
+ 		this->allowedWeekDays.clear(); //Alle Tage erlaubt
+ 		return; //Fertig
+ 	}
+diff --git a/src/widgets/widgetdate.h b/src/widgets/widgetdate.h
+--- a/src/widgets/widgetdate.h
++++ b/src/widgets/widgetdate.h
+@@ -32,10 +32,10 @@
+ #define WIDGETDATE_H
+ 
+ #include <QWidget>
+-#include <QtGui/QDateEdit>
+-#include <QtGui/QLabel>
++#include <QDateEdit>
++#include <QLabel>
+ 
+-#include <QtCore/QStringList>
++#include <QStringList>
+ 
+ /** \brief Widget zur Anzeige und Einstellung eines Datums
+  *
+diff --git a/src/widgets/widgetknowndatedtransfers.cpp b/src/widgets/widgetknowndatedtransfers.cpp
+--- a/src/widgets/widgetknowndatedtransfers.cpp
++++ b/src/widgets/widgetknowndatedtransfers.cpp
+@@ -28,9 +28,11 @@
+  *
+  ******************************************************************************/
+ 
++/** \todo translation of documentation and comments needed */
++
+ #include "widgetknowndatedtransfers.h"
+-#include <QtGui/QLayout>
+-#include <QtGui/QMenu>
++#include <QLayout>
++#include <QMenu>
+ #include <QEvent>
+ 
+ #include "../aqb_accountinfo.h"
+@@ -94,19 +96,22 @@
+ 	actDelete = new QAction(this);
+ 	actDelete->setText(tr("Löschen"));
+ 	actDelete->setToolTip(tr("Ausgewählte terminierte Überweisung löschen"));
+-	actDelete->setIcon(QIcon::fromTheme("edit-delete", QIcon(":/icons/delete")));
++	actDelete->setIcon(QIcon::fromTheme(QString::fromUtf8("edit-delete"),
++					    QIcon(QString::fromUtf8(":/icons/delete"))));
+ 	connect(actDelete, SIGNAL(triggered()), this, SLOT(onActionDeleteTriggered()));
+ 
+ 	actEdit= new QAction(this);
+ 	actEdit->setText(tr("Ändern"));
+ 	actEdit->setToolTip(tr("Ausgewählte terminierte Überweisung bearbeiten"));
+-	actEdit->setIcon(QIcon::fromTheme("document-edit", QIcon(":/icons/document-edit")));
++	actEdit->setIcon(QIcon::fromTheme(QString::fromUtf8("document-edit"),
++					  QIcon(QString::fromUtf8(":/icons/document-edit"))));
+ 	connect(actEdit, SIGNAL(triggered()), this, SLOT(onActionEditTriggered()));
+ 
+ 	actRefresh= new QAction(this);
+ 	actRefresh->setText(tr("Aktualisieren"));
+ 	actRefresh->setToolTip(tr("Holt alle beim Institut hinterlegten terminierten Überweisungen"));
+-	actRefresh->setIcon(QIcon::fromTheme("edit-redo", QIcon(":/icons/edit-redo")));
++	actRefresh->setIcon(QIcon::fromTheme(QString::fromUtf8("edit-redo"),
++					     QIcon(QString::fromUtf8(":/icons/edit-redo"))));
+ 	connect(actRefresh, SIGNAL(triggered()), this, SLOT(onActionRefreshTriggered()));
+ 
+ }
+@@ -178,9 +183,9 @@
+ 		v = trans->getValue();
+ 		//abt_conv::ABValueToString() gibt "" zurück wenn v == NULL!
+ 		QString Betrag = abt_conv::ABValueToString(v, true);
+-		if (v) Betrag.append(QString(" %1").arg(AB_Value_GetCurrency(v)));
++		if (v) Betrag.append(QString::fromUtf8(" %1").arg(QString::fromUtf8(AB_Value_GetCurrency(v))));
+ 		Item->setData(3, Qt::DisplayRole, Betrag);
+-		Item->setData(4, Qt::DisplayRole, trans->getDate().toString("dd.MM.yyyy"));
++		Item->setData(4, Qt::DisplayRole, trans->getDate().toString(QString::fromUtf8("dd.MM.yyyy")));
+ 		this->treeWidget->addTopLevelItem(Item);
+ 	}
+ 
+diff --git a/src/widgets/widgetknowndatedtransfers.h b/src/widgets/widgetknowndatedtransfers.h
+--- a/src/widgets/widgetknowndatedtransfers.h
++++ b/src/widgets/widgetknowndatedtransfers.h
+@@ -32,8 +32,8 @@
+ #define WIDGETKNOWNDATEDTRANSFERS_H
+ 
+ #include <QWidget>
+-#include <QtGui/QTreeWidget>
+-#include <QtGui/QAction>
++#include <QTreeWidget>
++#include <QAction>
+ 
+ class aqb_AccountInfo;
+ class abt_datedTransferInfo;
+diff --git a/src/widgets/widgetknownstandingorders.cpp b/src/widgets/widgetknownstandingorders.cpp
+--- a/src/widgets/widgetknownstandingorders.cpp
++++ b/src/widgets/widgetknownstandingorders.cpp
+@@ -30,9 +30,9 @@
+  ******************************************************************************/
+ 
+ #include "widgetknownstandingorders.h"
+-#include <QtGui/QLayout>
+-#include <QtGui/QMenu>
+-#include <QtGui/QTreeWidget>
++#include <QLayout>
++#include <QMenu>
++#include <QTreeWidget>
+ #include <QEvent>
+ 
+ #include "../aqb_accountinfo.h"
+@@ -103,19 +103,22 @@
+ 	actDelete = new QAction(this);
+ 	actDelete->setText(tr("Löschen"));
+ 	actDelete->setToolTip(tr("Ausgewählten Dauerauftrag löschen"));
+-	actDelete->setIcon(QIcon::fromTheme("edit-delete", QIcon(":/icons/delete")));
++	actDelete->setIcon(QIcon::fromTheme(QString::fromUtf8("edit-delete"),
++					    QIcon(QString::fromUtf8(":/icons/delete"))));
+ 	connect(actDelete, SIGNAL(triggered()), this, SLOT(onActionDeleteTriggered()));
+ 
+ 	actEdit= new QAction(this);
+ 	actEdit->setText(tr("Ändern"));
+ 	actEdit->setToolTip(tr("Ausgewählten Dauerauftrag bearbeiten"));
+-	actEdit->setIcon(QIcon::fromTheme("document-edit", QIcon(":/icons/document-edit")));
++	actEdit->setIcon(QIcon::fromTheme(QString::fromUtf8("document-edit"),
++					  QIcon(QString::fromUtf8(":/icons/document-edit"))));
+ 	connect(actEdit, SIGNAL(triggered()), this, SLOT(onActionEditTriggered()));
+ 
+ 	actRefresh= new QAction(this);
+ 	actRefresh->setText(tr("Aktualisieren"));
+ 	actRefresh->setToolTip(tr("Holt alle beim Institut hinterlegten Daueraufträge"));
+-	actRefresh->setIcon(QIcon::fromTheme("edit-redo", QIcon(":/icons/edit-redo")));
++	actRefresh->setIcon(QIcon::fromTheme(QString::fromUtf8("edit-redo"),
++					     QIcon(QString::fromUtf8(":/icons/edit-redo"))));
+ 	connect(actRefresh, SIGNAL(triggered()), this, SLOT(onActionRefreshTriggered()));
+ }
+ 
+@@ -145,10 +148,10 @@
+ 	item->setData(2, Qt::DisplayRole, t->getRemoteName().at(0));
+ 
+ 	const AB_VALUE *v = t->getValue();
+-	QString amount = "";
++	QString amount = QString();
+ 	if (v != NULL) {
+ 		amount = abt_conv::ABValueToString(v, true);
+-		amount.append(QString(" %1").arg(AB_Value_GetCurrency(v)));
++		amount.append(QString::fromUtf8(" %1").arg(QString::fromUtf8(AB_Value_GetCurrency(v))));
+ 	}
+ 	item->setData(3, Qt::DisplayRole, amount);
+ 
+diff --git a/src/widgets/widgetlineeditwithlabel.cpp b/src/widgets/widgetlineeditwithlabel.cpp
+--- a/src/widgets/widgetlineeditwithlabel.cpp
++++ b/src/widgets/widgetlineeditwithlabel.cpp
+@@ -30,9 +30,9 @@
+ 
+ #include "widgetlineeditwithlabel.h"
+ 
+-#include <QtGui/QLabel>
+-#include <QtGui/QLayout>
+-#include <QtCore/QDebug>
++#include <QLabel>
++#include <QLayout>
++#include <QDebug>
+ 
+ widgetLineEditWithLabel::widgetLineEditWithLabel(const QString &labelText,
+ 						 const QString &editText,
+diff --git a/src/widgets/widgetlineeditwithlabel.h b/src/widgets/widgetlineeditwithlabel.h
+--- a/src/widgets/widgetlineeditwithlabel.h
++++ b/src/widgets/widgetlineeditwithlabel.h
+@@ -33,7 +33,7 @@
+ 
+ #include <QWidget>
+ 
+-#include <QtGui/QLineEdit>
++#include <QLineEdit>
+ 
+ class QLabel;
+ class QLayout;
+@@ -48,7 +48,7 @@
+ 	Q_OBJECT
+ public:
+ 	explicit widgetLineEditWithLabel(const QString &labelText,
+-					 const QString &editText = "",
++					 const QString &editText = QString(),
+ 					 Qt::Alignment labelAt = Qt::AlignTop,
+ 					 QWidget *parent = 0);
+ 	~widgetLineEditWithLabel();
+diff --git a/src/widgets/widgetpurpose.cpp b/src/widgets/widgetpurpose.cpp
+--- a/src/widgets/widgetpurpose.cpp
++++ b/src/widgets/widgetpurpose.cpp
+@@ -30,9 +30,10 @@
+ 
+ #include "widgetpurpose.h"
+ 
+-#include <QtCore/QDebug>
+-#include <QtGui/QLayout>
+-#include <QtGui/QTextBlock>
++#include <QDebug>
++#include <QLayout>
++#include <QTextBlock>
++#include "../globalvars.h"
+ 
+ 
+ /*! \bug
+@@ -128,8 +129,9 @@
+ 		return true;
+ 	}
+ 
+-	//Nur Zeichen gemäß ZKA-Zeichensatz, aber auch Kleinbuchstaben, zulassen
+-	QRegExp regex("^[-+ .,/*&%0-9A-Za-z]$", Qt::CaseSensitive);
++	//only allow characters that match the regex from the settings
++	//default: "[-+ .,/*&%0-9A-Za-z]"
++	QRegExp regex(settings->allowedCharsPurposeRegex(), Qt::CaseSensitive);
+ 
+ 	//ev->setModifiers(Qt::ShiftModifier);
+ 	if (regex.indexIn(ev->text()) != -1) { //Zeichen ist erlaubt!
+@@ -229,7 +231,7 @@
+ //public slot
+ void widgetPurpose::setPurpose(const QStringList &text)
+ {
+-	this->setPurpose(text.join("\n"));
++	this->setPurpose(text.join(QString::fromUtf8("\n")));
+ }
+ 
+ //public slot
+diff --git a/src/widgets/widgetpurpose.h b/src/widgets/widgetpurpose.h
+--- a/src/widgets/widgetpurpose.h
++++ b/src/widgets/widgetpurpose.h
+@@ -33,9 +33,9 @@
+ 
+ #include <QWidget>
+ 
+-#include <QtGui/QPlainTextEdit>
+-#include <QtGui/QTextEdit>
+-#include <QtGui/QLabel>
++#include <QPlainTextEdit>
++#include <QTextEdit>
++#include <QLabel>
+ 
+ 
+ /** \brief Widget zur Darstellung und Eingabe des Verwendungszwecks
+diff --git a/src/widgets/widgetrecurrence.cpp b/src/widgets/widgetrecurrence.cpp
+--- a/src/widgets/widgetrecurrence.cpp
++++ b/src/widgets/widgetrecurrence.cpp
+@@ -28,12 +28,14 @@
+  *
+  ******************************************************************************/
+ 
++/** \todo translation of documentation and comments needed */
++
+ #include "widgetrecurrence.h"
+ 
+-#include <QtCore/QDebug>
++#include <QDebug>
+ 
+-#include <QtGui/QLayout>
+-#include <QtGui/QLabel>
++#include <QLayout>
++#include <QLabel>
+ 
+ widgetRecurrence::widgetRecurrence(QWidget *parent) :
+ 	QWidget(parent)
+@@ -67,7 +69,7 @@
+ 		this, SLOT(spinBoxValueChanged(int)));
+ 
+ 	//Beschreibendes Label erstellen
+-	this->label_week_month = new QLabel("Monat", this);
++	this->label_week_month = new QLabel(QString::fromUtf8("Monat"), this);
+ 	this->label_week_month->setMinimumWidth(60);
+ 	this->label_week_month->setAlignment(Qt::AlignCenter);
+ 	QLabel *labelAt = new QLabel(tr("am"), this);
+@@ -250,8 +252,8 @@
+ 				itemhint = tr("Immer 2 Tage vor dem letzten des Monats");
+ 				break;
+ 			default:
+-				itemtext = QString("%1").arg(day);
+-				itemhint = QString("Immer am %1. des Monats").arg(day);
++				itemtext = QString::fromUtf8("%1").arg(day);
++				itemhint = QString::fromUtf8("Immer am %1. des Monats").arg(day);
+ 				break;
+ 			}
+ 
+diff --git a/src/widgets/widgetrecurrence.h b/src/widgets/widgetrecurrence.h
+--- a/src/widgets/widgetrecurrence.h
++++ b/src/widgets/widgetrecurrence.h
+@@ -32,11 +32,11 @@
+ #define WIDGETRECURRENCE_H
+ 
+ #include <QWidget>
+-#include <QtGui/QButtonGroup>
+-#include <QtGui/QRadioButton>
+-#include <QtGui/QComboBox>
+-#include <QtGui/QSpinBox>
+-#include <QtGui/QCheckBox>
++#include <QButtonGroup>
++#include <QRadioButton>
++#include <QComboBox>
++#include <QSpinBox>
++#include <QCheckBox>
+ 
+ 
+ #include <aqbanking/transaction.h>
+diff --git a/src/widgets/widgettextkey.cpp b/src/widgets/widgettextkey.cpp
+--- a/src/widgets/widgettextkey.cpp
++++ b/src/widgets/widgettextkey.cpp
+@@ -30,10 +30,10 @@
+ 
+ #include "widgettextkey.h"
+ 
+-#include <QtGui/QComboBox>
+-#include <QtGui/QLabel>
+-#include <QtGui/QLayout>
+-#include <QtCore/QDebug>
++#include <QComboBox>
++#include <QLabel>
++#include <QLayout>
++#include <QDebug>
+ 
+ #include "../globalvars.h"
+ 
+diff --git a/src/widgets/widgettransfer.cpp b/src/widgets/widgettransfer.cpp
+--- a/src/widgets/widgettransfer.cpp
++++ b/src/widgets/widgettransfer.cpp
+@@ -28,14 +28,16 @@
+  *
+  ******************************************************************************/
+ 
++/** \todo translation of documentation and comments needed */
++
+ #include "widgettransfer.h"
+ 
+-#include <QtGui/QLayout>
+-#include <QtGui/QGroupBox>
+-#include <QtGui/QLabel>
+-#include <QtGui/QPushButton>
++#include <QLayout>
++#include <QGroupBox>
++#include <QLabel>
++#include <QPushButton>
+ 
+-#include <QtCore/QDebug>
++#include <QDebug>
+ 
+ #include "../aqb_accountinfo.h"
+ #include "../globalvars.h"	//for the global "banking" object
+@@ -158,11 +160,14 @@
+ 	this->setAllLimits(this->m_limits);
+ 
+ 	QIcon ico;
+-	ico = QIcon::fromTheme("edit-undo", QIcon(":/icons/edit-undo"));
++	ico = QIcon::fromTheme(QString::fromUtf8("edit-undo"),
++			       QIcon(QString::fromUtf8(":/icons/edit-undo")));
+ 	this->pushButtonRevert = new QPushButton(ico, tr("Rückgängig"), this);
+-	ico = QIcon::fromTheme("dialog-close", QIcon(":/icons/dialog-close"));
++	ico = QIcon::fromTheme(QString::fromUtf8("dialog-close"),
++			       QIcon(QString::fromUtf8(":/icons/dialog-close")));
+ 	this->pushButtonCancel = new QPushButton(ico, tr("Abbrechen"), this);
+-	ico = QIcon::fromTheme("dialog-ok-apply", QIcon(":/icons/ok"));
++	ico = QIcon::fromTheme(QString::fromUtf8("dialog-ok-apply"),
++			       QIcon(QString::fromUtf8(":/icons/ok")));
+ 	this->pushButtonOK = new QPushButton(ico, tr("Senden"), this);
+ 	connect(this->pushButtonOK, SIGNAL(clicked()),
+ 		this, SLOT(onOkButtonPressed()));
+@@ -219,10 +224,10 @@
+ 		BankName = tr("unbekannt");
+ 		KontoName = tr("unbekannt");
+ 	} else {
+-		BankName = QString("%1 [%2]").arg(
++		BankName = QString::fromUtf8("%1 [%2]").arg(
+ 				   this->m_accountAtCreation->BankName(),
+ 				   this->m_accountAtCreation->BankCode());
+-		KontoName = QString("%1 [%2]").arg(
++		KontoName = QString::fromUtf8("%1 [%2]").arg(
+ 				    this->m_accountAtCreation->Name(),
+ 				    this->m_accountAtCreation->Number());
+ 	}
+@@ -767,9 +772,9 @@
+ 			QString colNum;
+ 			for(int i=0; i<tooLong.size(); ++i) {
+ 				if (i == tooLong.size()-1) {
+-					colNum.append(QString("%1").arg(tooLong.at(i)));
++					colNum.append(QString::fromUtf8("%1").arg(tooLong.at(i)));
+ 				} else {
+-					colNum.append(QString("%1, ").arg(tooLong.at(i)));
++					colNum.append(QString::fromUtf8("%1, ").arg(tooLong.at(i)));
+ 				}
+ 			}
+ 
+@@ -791,7 +796,7 @@
+ 
+ 	if (this->textKey != NULL) {
+ 		if (!this->m_limits->ValuesTextKey.contains(
+-				QString("%1").arg(this->textKey->getTextKey()))) {
++				QString::fromUtf8("%1").arg(this->textKey->getTextKey()))) {
+ 			errorMsg.append(tr(" - Textschlüssel nicht erlaubt<br />"));
+ 		}
+ 	}
+@@ -1123,7 +1128,7 @@
+ 	if (this->value != NULL) {
+ 		this->value->setValue(t->getValue());
+ 		//! \todo currency der Transaction verwenden
+-		this->value->setCurrency("EUR");
++		this->value->setCurrency(QString::fromUtf8("EUR"));
+ 	}
+ 
+ 	if (this->purpose != NULL) {
+diff --git a/src/widgets/widgetvalue.cpp b/src/widgets/widgetvalue.cpp
+--- a/src/widgets/widgetvalue.cpp
++++ b/src/widgets/widgetvalue.cpp
+@@ -30,7 +30,7 @@
+ 
+ #include "widgetvalue.h"
+ 
+-#include <QtGui/QLayout>
++#include <QLayout>
+ #include <QApplication>
+ #include <QDesktopWidget>
+ 
+@@ -49,9 +49,10 @@
+ 	this->calcFrame->hide();
+ 
+ 	BetragValidator *validatorBetrag = new BetragValidator(this);
+-	validatorBetrag->setRegExp(QRegExp("[0-9]+,[0-9][0-9]", Qt::CaseSensitive));
++	validatorBetrag->setRegExp(QRegExp(QString::fromUtf8("[0-9]+,[0-9][0-9]"),
++					   Qt::CaseSensitive));
+ 
+-	this->currency->setText("EUR");
++	this->currency->setText(QString::fromUtf8("EUR"));
+ 	this->currency->setReadOnly(true);
+ 	this->currency->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+ 	this->currency->setMaximumWidth(45);
+@@ -63,8 +64,9 @@
+ 	this->value->installEventFilter(this);
+ 
+ 	QHBoxLayout *layout = new QHBoxLayout();
+-	QIcon ico = QIcon::fromTheme("accessories-calculator", QIcon(":/icons/calculator"));
+-	QPushButton *calcBtn = new QPushButton(ico, "", this);
++	QIcon ico = QIcon::fromTheme(QString::fromUtf8("accessories-calculator"),
++				     QIcon(QString::fromUtf8(":/icons/calculator")));
++	QPushButton *calcBtn = new QPushButton(ico, QString(), this);
+ 	calcBtn->setFocusProxy(this->value);
+ 	connect(calcBtn, SIGNAL(clicked()), this, SLOT(showCalculator()));
+ 
+@@ -111,7 +113,7 @@
+ 			// no '-' sign at the first position.
+ 			if (k->key() == Qt::Key_Minus) {
+ 				if (this->value->cursorPosition() == 0 &&
+-				    this->value->text()[0] != '-') {
++				    this->value->text()[0] != QChar::fromLatin1('-')) {
+ 					rc = false;
+ 					break;
+ 				}
+@@ -220,13 +222,15 @@
+ 	if (!this->calcFrame)
+ 		this->createCalcFrame();
+ 
+-	/* only works when the comma is set to ',' regardless of the comma
++	/* TODO: only works when the comma is set to ',' regardless of the comma
+ 	 * character the comma in the value text must be replaced with a
+ 	 * period. This should be further investigated, but for the moment
+ 	 * this works.
+ 	 */
+-	this->calculator->setComma(',');
+-	this->calculator->setInitialValues(this->value->text().replace(',','.'), e);
++	this->calculator->setComma(QChar::fromLatin1(','));
++	this->calculator->setInitialValues(this->value->text().replace(
++						   QChar::fromLatin1(','),
++						   QChar::fromLatin1('.')), e);
+ 
+ 	int h = this->calcFrame->height();
+ 	int w = this->calcFrame->width();
+diff --git a/src/widgets/widgetvalue.h b/src/widgets/widgetvalue.h
+--- a/src/widgets/widgetvalue.h
++++ b/src/widgets/widgetvalue.h
+@@ -32,8 +32,8 @@
+ #define WIDGETVALUE_H
+ 
+ #include <QWidget>
+-#include <QtGui/QLineEdit>
+-#include <QtCore/QDebug>
++#include <QLineEdit>
++#include <QDebug>
+ 
+ #include "../abt_conv.h"
+ #include "widgetcalculator.h"
+@@ -80,7 +80,7 @@
+ 	void setValue(const AB_VALUE *abv);
+ 	void setCurrency(const QString &currency);
+ 	//void setValueCurrency(const AB_VALUE *abv);
+-	void setValueCurrency(const QString &value, const QString &currency = "EUR");
++	void setValueCurrency(const QString &value, const QString &currency = QString::fromUtf8("EUR"));
+ 
+ 	void setLimitAllowChange(int b);
+ 
+diff --git a/translation/scripts/make-translations.bash b/translation/scripts/make-translations.bash
+--- a/translation/scripts/make-translations.bash
++++ b/translation/scripts/make-translations.bash
+@@ -13,14 +13,14 @@
+ 
+ 
+ if [ `uname` = "Darwin" ]; then
+-	PREFIX=/opt/macports-test
++	PREFIX=/opt/local
+ else
+ 	PREFIX=/usr
+ fi
+ 
+ BIN=${PREFIX}/bin
+ TC_APPNAME=abtransfers
+-APP_RESOURCES=../abtransfers-build-Qt_4_8_4_macports_test-Release/build/AB-Transfers.app/Contents/Resources/
++APP_RESOURCES=../build-abtransfers-Desktop-Release/build/AB-Transfers.app/Contents/Resources/
+ LANGS="en_GB"
+ 
+ if [ "$1" == "up" ]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/macports-changes/attachments/20150913/8780d5c7/attachment-0001.html>


More information about the macports-changes mailing list