00001
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 m_ids.replace( appName, kontainer );
00113 }
00114 }
00115
void KonnectorUIDHelper::removeId(
const QString &appName,
const QString &
id )
00116 {
00117
QMap<QString, Kontainer::ValueList >::Iterator it;
00118 it = m_ids.find( appName );
00119
if ( it== m_ids.end() ) {
00120
Kontainer::ValueList kontainer = it.data();
00121 Kontainer::ValueList::Iterator it;
00122
for ( it = kontainer.begin(); it != kontainer.end(); ++it ) {
00123
if ( (*it).first() ==
id || (*it).second() ==
id ) {
00124 it = kontainer.remove( it );
00125
return;
00126 }
00127 }
00128 }
00129 }
00130
void KonnectorUIDHelper::replaceIds(
const QString &app,
00131
Kontainer::ValueList ids )
00132 {
00133 m_ids.replace( app, ids );
00134 }
00135
void KonnectorUIDHelper::clear()
00136 {
00137 m_ids.clear();
00138 save();
00139 }
00140
void KonnectorUIDHelper::save()
00141 {
00142
QString string;
00143
QMap<QString, Kontainer::ValueList >::Iterator mapIt;
00144 Kontainer::ValueList::Iterator kontainerIt;
00145
for ( mapIt = m_ids.begin(); mapIt != m_ids.end(); ++mapIt ) {
00146
for ( kontainerIt = mapIt.data().begin();
00147 kontainerIt != mapIt.data().end();
00148 ++kontainerIt ) {
00149
00150
00151
00152
00153
00154
00155 string.append(mapIt.key()+
"||%%||"
00156 + (*kontainerIt).first() +
00157
"||%%||" + (*kontainerIt).second()+
"%%||%%");
00158 }
00159 }
00160 m_config->writeEntry(
"ids", string );
00161 m_config->sync();
00162 }