kitchensync
idhelper.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <kconfig.h>
00023 #include <kdebug.h>
00024
00025 #include "idhelper.h"
00026
00027 using namespace KSync;
00028
00029
00030 KonnectorUIDHelper::KonnectorUIDHelper( const QString &dir )
00031 {
00032
00033 m_config = new KConfig( dir + "/konnector-ids.conf");
00034 m_config->setGroup("uids");
00035 QString string = m_config->readEntry( "ids" );
00036 QStringList list = QStringList::split( "%%||%%", string );
00037
00038 for ( QStringList::Iterator it = list.begin(); it != list.end() ; ++it ) {
00039 QStringList list2 = QStringList::split("||%%||",(*it), true );
00040 addId( list2[0], list2[1], list2[2] );
00041 }
00042
00043 }
00044 KonnectorUIDHelper::~KonnectorUIDHelper()
00045 {
00046 save();
00047 delete m_config;
00048 }
00049 QString KonnectorUIDHelper::konnectorId( const QString &appName, const QString &kdeId, const QString &defaultId )
00050 {
00051
00052
00053
00054
00055
00056 QMap<QString, Kontainer::ValueList >::Iterator it;
00057 it = m_ids.find( appName );
00058 if ( it != m_ids.end() ) {
00059 Kontainer::ValueList kontainer = it.data();
00060 Kontainer::ValueList::Iterator it;
00061 for ( it = kontainer.begin(); it != kontainer.end(); ++it ) {
00062 if ( kdeId.stripWhiteSpace() == (*it).second.stripWhiteSpace() ) {
00063
00064 return (*it).first;
00065 }
00066 }
00067 }
00068 return defaultId;
00069 }
00070 QString KonnectorUIDHelper::kdeId( const QString &appName, const QString &konnectorId, const QString &defaultId )
00071 {
00072
00073
00074
00075
00076 QMap<QString, Kontainer::ValueList >::Iterator it;
00077 it = m_ids.find( appName );
00078 if ( it != m_ids.end() ) {
00079 Kontainer::ValueList kontainer = it.data();
00080 Kontainer::ValueList::Iterator it;
00081 for ( it = kontainer.begin(); it != kontainer.end(); ++it ) {
00082 if ( konnectorId.stripWhiteSpace() == (*it).first.stripWhiteSpace() ) {
00083
00084 return (*it).second;
00085 }
00086 }
00087 }
00088 return defaultId;
00089 }
00090 void KonnectorUIDHelper::addId( const QString& appName,
00091 const QString& konnectorId,
00092 const QString& kdeId )
00093 {
00094
00095
00096
00097
00098 QMap<QString, Kontainer::ValueList >::Iterator it;
00099 it = m_ids.find( appName );
00100
00101 if ( it == m_ids.end() ) {
00102
00103 Kontainer::ValueList kontainer;
00104 kontainer.append( Kontainer( konnectorId, kdeId ) );
00105 m_ids.replace( appName, kontainer );
00106 }else{
00107
00108 Kontainer::ValueList &kontainer = it.data();
00109 Kontainer kont( konnectorId, kdeId );
00110 kontainer.remove( kont );
00111 kontainer.append( kont );
00112 }
00113 }
00114 void KonnectorUIDHelper::removeId( const QString &appName, const QString &id )
00115 {
00116 QMap<QString, Kontainer::ValueList >::Iterator it;
00117 it = m_ids.find( appName );
00118 if ( it != m_ids.end() ) {
00119 Kontainer::ValueList &kontainer = it.data();
00120 Kontainer::ValueList::Iterator it;
00121 for ( it = kontainer.begin(); it != kontainer.end(); ++it ) {
00122 if ( (*it).first == id || (*it).second == id ) {
00123 it = kontainer.remove( it );
00124 return;
00125 }
00126 }
00127 }
00128 }
00129 void KonnectorUIDHelper::replaceIds( const QString &app,
00130 Kontainer::ValueList ids )
00131 {
00132 m_ids.replace( app, ids );
00133 }
00134 void KonnectorUIDHelper::clear()
00135 {
00136 m_ids.clear();
00137 save();
00138 }
00139 void KonnectorUIDHelper::save()
00140 {
00141 QString string;
00142 QMap<QString, Kontainer::ValueList >::Iterator mapIt;
00143 Kontainer::ValueList::Iterator kontainerIt;
00144 for ( mapIt = m_ids.begin(); mapIt != m_ids.end(); ++mapIt ) {
00145 for ( kontainerIt = mapIt.data().begin();
00146 kontainerIt != mapIt.data().end();
00147 ++kontainerIt ) {
00148
00149
00150
00151
00152
00153
00154 string.append(mapIt.key()+ "||%%||"
00155 + (*kontainerIt).first +
00156 "||%%||" + (*kontainerIt).second+ "%%||%%");
00157 }
00158 }
00159 m_config->writeEntry( "ids", string );
00160 m_config->sync();
00161 }
|