author | zecke <zecke> | 2002-06-17 14:20:23 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-06-17 14:20:23 (UTC) |
commit | f27745ccf2ace20e5adc44bf630b20e5657feeb2 (patch) (side-by-side diff) | |
tree | 3fbd91d407051cf94551e49c29d593d6b8c89058 | |
parent | 77ec78630c69c80a3d8bad7f7feb9cc9f18ab346 (diff) | |
download | opie-f27745ccf2ace20e5adc44bf630b20e5657feeb2.zip opie-f27745ccf2ace20e5adc44bf630b20e5657feeb2.tar.gz opie-f27745ccf2ace20e5adc44bf630b20e5657feeb2.tar.bz2 |
Cross Referencing is possible by now
-rw-r--r-- | libopie/todoevent.cpp | 57 | ||||
-rw-r--r-- | libopie/todoevent.h | 29 |
2 files changed, 86 insertions, 0 deletions
diff --git a/libopie/todoevent.cpp b/libopie/todoevent.cpp index b35ac9d..f744550 100644 --- a/libopie/todoevent.cpp +++ b/libopie/todoevent.cpp @@ -83,8 +83,26 @@ QString ToDoEvent::summary() const ushort ToDoEvent::progress() const { return m_prog; } +QStringList ToDoEvent::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> ToDoEvent::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 ToDoEvent::insertCategory(const QString &str ) { m_category.append( str ); } @@ -138,8 +156,47 @@ void ToDoEvent::setPriority(int prio ) void ToDoEvent::setDate( QDate date ) { m_date = date; } +void ToDoEvent::addRelated( 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 ToDoEvent::addRelated(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() ) { // not there + /** tmp.resize( ids.size() ); stupid?? + */ + 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 ); +} +void ToDoEvent::clearRelated( const QString& app ) +{ + m_relations.remove( app ); +} bool ToDoEvent::isOverdue( ) { if( m_hasDate ) return QDate::currentDate() > m_date; diff --git a/libopie/todoevent.h b/libopie/todoevent.h index de4623f..b55a39b 100644 --- a/libopie/todoevent.h +++ b/libopie/todoevent.h @@ -1,13 +1,16 @@ #ifndef todoevent_h #define todoevent_h + +#include <qarray.h> #include <qmap.h> #include <qregexp.h> #include <qstringlist.h> #include <qdatetime.h> + class ToDoEvent { friend class ToDoDB; public: // priorities from Very low to very high @@ -88,8 +91,18 @@ class ToDoEvent { int uid()const { return m_uid;}; QString extra(const QString& )const; + + /** + * returns a list of apps which have related items + */ + QStringList relatedApps()const; + + /** + * returns all relations for one app + */ + QArray<int> relations( const QString& app )const; /** * Set if this Todo is completed */ void setCompleted(bool completed ); @@ -124,8 +137,23 @@ class ToDoEvent { */ void setProgress( ushort progress ); /** + * add related function it replaces too ;) + */ + void addRelated( const QString& app, int id ); + + /** + * add related + */ + void addRelated( const QString& app, QArray<int> ids ); + + /** + * clear relations for one app + */ + void clearRelated(const QString& app); + + /** * set the end date */ void setDate( QDate date ); void setDescription(const QString& ); @@ -153,8 +181,9 @@ class ToDoEvent { QStringList m_category; QString m_desc; QString m_sum; QMap<QString, QString> m_extra; + QMap<QString, QArray<int> > m_relations; int m_uid; ushort m_prog; }; |