author | zecke <zecke> | 2002-11-15 15:31:47 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-11-15 15:31:47 (UTC) |
commit | 5a6e66edad1070f624d54320278d00372f112213 (patch) (side-by-side diff) | |
tree | ab1028759194edace4c79cf90d18dc1362a84aa9 /libopie/pim | |
parent | 05f56fbbbe9ea5546f7503f4852fcab9c5b10a00 (diff) | |
download | opie-5a6e66edad1070f624d54320278d00372f112213.zip opie-5a6e66edad1070f624d54320278d00372f112213.tar.gz opie-5a6e66edad1070f624d54320278d00372f112213.tar.bz2 |
Add the implementation for the XRef Manager
Add it to libopie.pro
Adjust OPimRecord to use the new manager
The backends do not support xref yet
-rw-r--r-- | libopie/pim/opimrecord.cpp | 63 | ||||
-rw-r--r-- | libopie/pim/opimrecord.h | 33 | ||||
-rw-r--r-- | libopie/pim/opimxref.cpp | 47 | ||||
-rw-r--r-- | libopie/pim/opimxref.h | 7 | ||||
-rw-r--r-- | libopie/pim/opimxrefmanager.cpp | 69 | ||||
-rw-r--r-- | libopie/pim/opimxrefmanager.h | 5 | ||||
-rw-r--r-- | libopie/pim/opimxrefpartner.cpp | 43 | ||||
-rw-r--r-- | libopie/pim/otodoaccessxml.cpp | 18 |
8 files changed, 184 insertions, 101 deletions
diff --git a/libopie/pim/opimrecord.cpp b/libopie/pim/opimrecord.cpp index 21cf131..0e3be9d 100644 --- a/libopie/pim/opimrecord.cpp +++ b/libopie/pim/opimrecord.cpp @@ -20,9 +20,9 @@ OPimRecord::OPimRecord( const OPimRecord& rec ) } OPimRecord &OPimRecord::operator=( const OPimRecord& rec) { Qtopia::Record::operator=( rec ); - m_relations = rec.m_relations; + m_xrefman = rec.m_xrefman; return *this; } /* @@ -51,63 +51,9 @@ void OPimRecord::addCategoryName( const QString& ) { } bool OPimRecord::isEmpty()const { return ( uid() == 0 ); } -QStringList OPimRecord::relatedApps()const{ - QStringList list; - QMap<QString, QArray<int> >::ConstIterator it; - for ( it = m_relations.begin(); it != m_relations.end(); ++it ) { - list << it.key(); - } - return list; -} -QArray<int> OPimRecord::relations(const QString& app )const { - QArray<int> tmp; - QMap<QString, QArray<int> >::ConstIterator it; - it = m_relations.find( app); - if ( it != m_relations.end() ) - tmp = it.data(); - return tmp; -} -void OPimRecord::clearRelation( const QString& app ) { - m_relations.remove( app ); -} -void OPimRecord::addRelation( const QString& app, int id ) { - - QMap<QString, QArray<int> >::Iterator it; - QArray<int> tmp; - - it = m_relations.find( app ); - if ( it == m_relations.end() ) { - tmp.resize(1 ); - tmp[0] = id; - }else{ - tmp = it.data(); - tmp.resize( tmp.size() + 1 ); - tmp[tmp.size() - 1] = id; - } - m_relations.replace( app, tmp ); -} -void OPimRecord::setRelations( const QString& app, QArray<int> ids ) { - - QMap<QString, QArray<int> >::Iterator it; - QArray<int> tmp; - - it = m_relations.find( app); - if ( it == m_relations.end() ) { - tmp = ids; - }else{ - tmp = it.data(); - int offset = tmp.size()-1; - tmp.resize( tmp.size() + ids.size() ); - for (uint i = 0; i < ids.size(); i++ ) { - tmp[offset+i] = ids[i]; - } - - } - m_relations.replace( app, tmp ); -} -QString OPimRecord::crossToString()const { +/*QString OPimRecord::crossToString()const { QString str; QMap<QString, QArray<int> >::ConstIterator it; for (it = m_relations.begin(); it != m_relations.end(); ++it ) { QArray<int> id = it.data(); @@ -118,9 +64,9 @@ QString OPimRecord::crossToString()const { str = str.remove( str.length()-1, 1); // strip the ; //qWarning("IDS " + str ); return str; -} + }*/ /* if uid = 1 assign a new one */ void OPimRecord::setUid( int uid ) { if ( uid == 1) uid = uidGen().generate(); @@ -129,4 +75,7 @@ void OPimRecord::setUid( int uid ) { }; Qtopia::UidGen &OPimRecord::uidGen() { return m_uidGen; } +OPimXRefManager &OPimRecord::xrefmanager() { + return m_xrefman; +} diff --git a/libopie/pim/opimrecord.h b/libopie/pim/opimrecord.h index d9ccad4..1642a5e 100644 --- a/libopie/pim/opimrecord.h +++ b/libopie/pim/opimrecord.h @@ -6,8 +6,9 @@ #include <qstringlist.h> #include <qpe/palmtoprecord.h> +#include <opie/opimxrefmanager.h> /** * This is the base class for * all PIM Records @@ -85,46 +86,28 @@ public: */ virtual QString recordField(int)const = 0; /** - * the related apps names + * returns a reference of the + * Cross Reference Manager + * Partner One is THIS PIM RECORD! + * Two is the Partner where we link to */ - QStringList relatedApps()const; - - /** - * the realtions between an app - */ - QArray<int> relations( const QString& app )const; - - /** - * clear the relations for all relations - * with app - */ - void clearRelation( const QString& app ); - - /** - * add a relation - */ - void addRelation( const QString& app, int id ); - - /** - * set the relations for an app - */ - void setRelations( const QString&, QArray<int> ids ); + OPimXRefManager& xrefmanager(); /** * set the uid */ virtual void setUid( int uid ); protected: Qtopia::UidGen &uidGen(); - QString crossToString()const; +// QString crossToString()const; private: class OPimRecordPrivate; OPimRecordPrivate *d; - QMap<QString, QArray<int> > m_relations; + OPimXRefManager m_xrefman; static Qtopia::UidGen m_uidGen; }; diff --git a/libopie/pim/opimxref.cpp b/libopie/pim/opimxref.cpp new file mode 100644 index 0000000..5cae871 --- a/dev/null +++ b/libopie/pim/opimxref.cpp @@ -0,0 +1,47 @@ +#include "opimxref.h" + +OPimXRef::OPimXRef( const OPimXRefPartner& one, const OPimXRefPartner& two ) + : m_partners(2) +{ + m_partners[0] = one; + m_partners[1] = two; +} +OPimXRef::OPimXRef() + : m_partners(2) +{ + +} +OPimXRef::OPimXRef( const OPimXRef& ref) { + *this = ref; +} +OPimXRef::~OPimXRef() { +} +OPimXRef &OPimXRef::operator=( const OPimXRef& ref) { + m_partners = ref.m_partners; + m_partners.detach(); + + return* this; +} +bool OPimXRef::operator==( const OPimXRef& oper ) { + if ( m_partners == oper.m_partners ) return true; + + return false; +} +OPimXRefPartner OPimXRef::partner( enum Partners par) const{ + return m_partners[par]; +} +void OPimXRef::setPartner( enum Partners par, const OPimXRefPartner& part) { + m_partners[par] = part; +} +bool OPimXRef::containsString( const QString& string ) const{ + if ( m_partners[One].appName() == string || + m_partners[Two].appName() == string ) return true; + + return false; +} +bool OPimXRef::containsUid( int uid ) const{ + if ( m_partners[One].uid() == uid || + m_partners[Two].uid() == uid ) return true; + + return false; +} diff --git a/libopie/pim/opimxref.h b/libopie/pim/opimxref.h index 72154ac..354739a 100644 --- a/libopie/pim/opimxref.h +++ b/libopie/pim/opimxref.h @@ -19,14 +19,17 @@ public: OPimXRef( const OPimXRef& ); ~OPimXRef(); OPimXRef &operator=( const OPimXRef& ); - bool operator==( const OPimXRef ); + bool operator==( const OPimXRef& ); - OPimXRefPartner partner( enum Partners ); + OPimXRefPartner partner( enum Partners )const; void setPartner( enum Partners, const OPimXRefPartner& ); + bool containsString( const QString& appName)const; + bool containsUid( int uid )const; + private: QArray<OPimXRefPartner> m_partners; class Private; diff --git a/libopie/pim/opimxrefmanager.cpp b/libopie/pim/opimxrefmanager.cpp new file mode 100644 index 0000000..d49f5f5 --- a/dev/null +++ b/libopie/pim/opimxrefmanager.cpp @@ -0,0 +1,69 @@ +#include "opimxrefmanager.h" + + +OPimXRefManager::OPimXRefManager() { +} +OPimXRefManager::OPimXRefManager( const OPimXRefManager& ref) { + m_list = ref.m_list; +} +OPimXRefManager &OPimXRefManager::operator=( const OPimXRefManager& ref) { + m_list = ref.m_list; + return *this; +} +bool OPimXRefManager::operator==( const OPimXRefManager& /*ref*/) { + // if ( m_list == ref.m_list ) return true; + + return false; +} +void OPimXRefManager::add( const OPimXRef& ref) { + m_list.append( ref ); +} +void OPimXRefManager::remove( const OPimXRef& ref) { + m_list.remove( ref ); +} +void OPimXRefManager::replace( const OPimXRef& ref) { + m_list.remove( ref ); + m_list.append( ref ); +} +void OPimXRefManager::clear() { + m_list.clear(); +} +QStringList OPimXRefManager::apps()const { + OPimXRef::ValueList::ConstIterator it; + QStringList list; + + QString str; + for ( it = m_list.begin(); it != m_list.end(); ++it ) { + str = (*it).partner( OPimXRef::One ).appName(); + if ( !list.contains( str ) ) list << str; + + str = (*it).partner( OPimXRef::Two ).appName(); + if ( !list.contains( str ) ) list << str; + } + return list; +} +OPimXRef::ValueList OPimXRefManager::list()const { + return m_list; +} +OPimXRef::ValueList OPimXRefManager::list( const QString& appName )const{ + OPimXRef::ValueList list; + OPimXRef::ValueList::ConstIterator it; + + for ( it = m_list.begin(); it != m_list.end(); ++it ) { + if ( (*it).containsString( appName ) ) + list.append( (*it) ); + } + + return list; +} +OPimXRef::ValueList OPimXRefManager::list( int uid )const { + OPimXRef::ValueList list; + OPimXRef::ValueList::ConstIterator it; + + for ( it = m_list.begin(); it != m_list.end(); ++it ) { + if ( (*it).containsUid( uid ) ) + list.append( (*it) ); + } + + return list; +} diff --git a/libopie/pim/opimxrefmanager.h b/libopie/pim/opimxrefmanager.h index 147895d..9b003a3 100644 --- a/libopie/pim/opimxrefmanager.h +++ b/libopie/pim/opimxrefmanager.h @@ -1,7 +1,9 @@ #ifndef OPIM_XREF_MANAGER_H #define OPIM_XREF_MANAGER_H +#include <qstringlist.h> + #include <opie/opimxref.h> /** * This is a simple manager for @@ -30,7 +32,10 @@ public: QStringList apps()const; OPimXRef::ValueList list()const; OPimXRef::ValueList list( const QString& appName )const; OPimXRef::ValueList list( int uid )const; + +private: + OPimXRef::ValueList m_list; }; #endif diff --git a/libopie/pim/opimxrefpartner.cpp b/libopie/pim/opimxrefpartner.cpp new file mode 100644 index 0000000..028f4e6 --- a/dev/null +++ b/libopie/pim/opimxrefpartner.cpp @@ -0,0 +1,43 @@ +#include "opimxrefpartner.h" + +OPimXRefPartner::OPimXRefPartner( const QString& appName, + int uid, int field ) + : m_app(appName), m_uid(uid), m_field( field ) { +} +OPimXRefPartner::OPimXRefPartner( const OPimXRefPartner& ref ) { + *this = ref; +} +OPimXRefPartner::~OPimXRefPartner() { +} +OPimXRefPartner &OPimXRefPartner::operator=( const OPimXRefPartner& par ) { + m_app = par.m_app; + m_uid = par.m_uid; + m_field = par.m_field; + + return *this; +} +bool OPimXRefPartner::operator==( const OPimXRefPartner& par ) { + if ( m_app != par.m_app ) return false; + if ( m_uid != par.m_uid ) return false; + if ( m_field != par.m_field ) return false; + + return true; +} +QString OPimXRefPartner::appName()const { + return m_app; +} +int OPimXRefPartner::uid()const { + return m_uid; +} +int OPimXRefPartner::field()const { + return m_field; +} +void OPimXRefPartner::setAppName( const QString& appName ) { + m_app = appName; +} +void OPimXRefPartner::setUid( int uid ) { + m_uid = uid; +} +void OPimXRefPartner::setField( int field ) { + m_field = field; +} diff --git a/libopie/pim/otodoaccessxml.cpp b/libopie/pim/otodoaccessxml.cpp index 591e467..c1682c6 100644 --- a/libopie/pim/otodoaccessxml.cpp +++ b/libopie/pim/otodoaccessxml.cpp @@ -330,9 +330,9 @@ void OTodoAccessXML::todo( QAsciiDict<int>* dict, OTodo& ev, QStringList::Iterator strIt; for (strIt = refs.begin(); strIt != refs.end(); ++strIt ) { int pos = (*strIt).find(','); if ( pos > -1 ) - ev.addRelation( (*strIt).left(pos), (*strIt).mid(pos+1).toInt() ); + ; // ev.addRelation( (*strIt).left(pos), (*strIt).mid(pos+1).toInt() ); } break; } @@ -381,24 +381,8 @@ QString OTodoAccessXML::toString( const OTodo& ev )const { for (extIt = extras.begin(); extIt != extras.end(); ++extIt ) str += extIt.key() + "=\"" + extIt.data() + "\" "; */ // cross refernce - QStringList list = ev.relatedApps(); - QStringList::Iterator listIt; - QString refs; - str += "CrossReference=\""; - bool added = false; - for ( listIt = list.begin(); listIt != list.end(); ++listIt ) { - added = true; - QArray<int> ints = ev.relations( (*listIt) ); - for ( uint i = 0; i< ints.count(); i++ ) { - str += (*listIt) + "," + QString::number( i ) + ";"; - } - } - if ( added ) - str = str.remove( str.length()-1, 1 ); - - str += "\" "; str += "AlarmDateTime=\"" + TimeConversion::toISO8601( ev.alarmDateTime() ) + "\" "; return str; |