-rw-r--r-- | microkde/kidmanager.cpp | 130 | ||||
-rw-r--r-- | microkde/kidmanager.h | 7 |
2 files changed, 134 insertions, 3 deletions
diff --git a/microkde/kidmanager.cpp b/microkde/kidmanager.cpp index ce6184a..d24a41f 100644 --- a/microkde/kidmanager.cpp +++ b/microkde/kidmanager.cpp @@ -1,10 +1,136 @@ #include "kidmanager.h" KIdManager::KIdManager() { } -QString KIdManager::addId (const QString& idString,const QString& id,const QString& idvalue ) +// :profilename;12;id_withLen12;123456: +// 123456 is the csum +QString KIdManager::setId (const QString& idString,const QString& prof,const QString& idvalue ) { - + int startProf; + int startIDnum; + int startIDnumlen; + int startID; + int lenID; + int startCsum; + int lenCsum; + int endall; + QString newIDString; + if ( KIdManager::getNumbers (idString, prof, startProf, startIDnum, startIDnumlen,startID, lenID, startCsum, lenCsum, endall) ) { + newIDString = idString.left(startIDnum ) + QString::number( idvalue.length() ) +";"+idvalue+ ";"+idString.mid( startCsum ); + } else { + newIDString = idString + prof+";"+ QString::number( idvalue.length() ) +";"+idvalue +";0:"; + } + qDebug("setID:profile:%s*retval:%s*idvalue:%s* ", prof.latin1(), newIDString.latin1() ,idvalue.latin1() ); + return newIDString; +} +QString KIdManager::getId (const QString& idString,const QString& prof ) +{ + int startProf; + int startIDnum; + int startIDnumlen; + int startID; + int lenID; + int startCsum; + int lenCsum; + int endall; + QString idval = ""; + if ( KIdManager::getNumbers (idString, prof, startProf, startIDnum, startIDnumlen,startID, lenID, startCsum, lenCsum, endall) ) + idval = idString.mid( startID, lenID ); + + qDebug("getID:profile:%s*retval:%s*idstring:%s* ", prof.latin1(), idval.latin1() ,idString.latin1() ); + return idval; + +} + +QString KIdManager::removeId (const QString& idString,const QString& prof ) +{ + int startProf; + int startIDnum; + int startIDnumlen; + int startID; + int lenID; + int startCsum; + int lenCsum; + int endall; + QString newIDString; + if ( KIdManager::getNumbers (idString, prof, startProf, startIDnum, startIDnumlen,startID, lenID, startCsum, lenCsum, endall) ) { + newIDString = idString.left(startProf) + idString.mid( endall ); + } else { + newIDString = idString; + } + qDebug("removeID:profile:%s*retval:%s*oldidstring:%s* ", prof.latin1(), newIDString.latin1() ,idString.latin1() ); + return newIDString; +} + +QString KIdManager::setCsum (const QString& idString,const QString& prof,const QString& idCsum ) +{ + int startProf; + int startIDnum; + int startIDnumlen; + int startID; + int lenID; + int startCsum; + int lenCsum; + int endall; + QString newIDString; + if ( KIdManager::getNumbers (idString, prof, startProf, startIDnum, startIDnumlen,startID, lenID, startCsum, lenCsum, endall) ) { + newIDString = idString.left(startCsum) + idCsum+ idString.mid( endall +1); + } else { + newIDString = idString + prof + ";3;_u_;"+ idCsum + ":"; + } + qDebug("setCsum:profile:%s*retval:%s*idCsum:%s* ", prof.latin1(), newIDString.latin1() ,idCsum.latin1() ); + return newIDString; +} +QString KIdManager::getCsum (const QString& idString,const QString& prof ) +{ + int startProf; + int startIDnum; + int startIDnumlen; + int startID; + int lenID; + int startCsum; + int lenCsum; + int endall; + QString idval = ""; + if ( KIdManager::getNumbers (idString, prof, startProf, startIDnum, startIDnumlen,startID, lenID, startCsum, lenCsum, endall) ) + idval = idString.mid( startCsum, lenCsum ); + + qDebug("getCsum:profile:%s*retval:%s*idstring:%s* ", prof.latin1(), idval.latin1() ,idString.latin1() ); + return idval; +} +// :profilename;12;id_withLen12;123456: +bool KIdManager::getNumbers (const QString& idString,const QString& prof, int &startProf, int &startIDnum, int &startIDnumlen,int &startID, int& lenID, int &startCsum, int &lenCsum, int & endall) +{ + startProf = idString.find( ":"+prof+";" ); + if ( startProf >= 0 ) { + startIDnum = prof.length()+2+startProf; + startID = idString.find( ";", startIDnum ) +1; + startIDnumlen = startID - startIDnum - 1; + if ( startIDnum > 0 ) { + bool ok; + lenID = idString.mid ( startIDnum,startIDnumlen).toInt( &ok ); + if (ok) { + startCsum = startID+lenID+1; + endall = idString.find( ":", startCsum )-1; + if ( endall < 0 ) { + qDebug("Error getNumbers: andall not found "); + return false; + } + lenCsum = endall-startCsum+1; + } + else { + qDebug("Error getNumbers:length is no number:*%s* ", idString.mid ( startIDnum,startIDnumlen).toInt( &ok )); + return false; + } + } else { + qDebug("Error in KIdManager::getNumbers.startIDnum <= 0"); + return false; + } + } else { + qDebug("getnumbers: profile not found *%s* ",prof.latin1() ); + return false; + } + return true; } diff --git a/microkde/kidmanager.h b/microkde/kidmanager.h index 9d79b2b..00580a0 100644 --- a/microkde/kidmanager.h +++ b/microkde/kidmanager.h @@ -4,16 +4,21 @@ #include <qstring.h> #include <qobject.h> class KIdManager : public QObject { Q_OBJECT public: KIdManager( ); - static QString addId (const QString& idString,const QString& id,const QString& idvalue ) ; + static QString setId (const QString& idString,const QString& id,const QString& idvalue ) ; + static QString getId (const QString& idString,const QString& id ) ; + static QString removeId (const QString& idString,const QString& id ) ; + static QString setCsum (const QString& idString,const QString& id,const QString& idvalue ) ; + static QString getCsum (const QString& idString,const QString& id ) ; + static bool getNumbers (const QString& idString,const QString& id, int &startProf, int &startIDnum, int &startIDnumlen,int &startID, int& lenID, int &startCsum, int &lenCsum, int & endall) ; private: private slots: }; #endif |