summaryrefslogtreecommitdiff
authorzecke <zecke>2002-06-17 14:20:23 (UTC)
committer zecke <zecke>2002-06-17 14:20:23 (UTC)
commitf27745ccf2ace20e5adc44bf630b20e5657feeb2 (patch) (side-by-side diff)
tree3fbd91d407051cf94551e49c29d593d6b8c89058
parent77ec78630c69c80a3d8bad7f7feb9cc9f18ab346 (diff)
downloadopie-f27745ccf2ace20e5adc44bf630b20e5657feeb2.zip
opie-f27745ccf2ace20e5adc44bf630b20e5657feeb2.tar.gz
opie-f27745ccf2ace20e5adc44bf630b20e5657feeb2.tar.bz2
Cross Referencing is possible by now
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie/todoevent.cpp57
-rw-r--r--libopie/todoevent.h29
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
@@ -71,32 +71,50 @@ int ToDoEvent::priority()const
QStringList ToDoEvent::allCategories()const
{
return m_category;
}
QString ToDoEvent::extra(const QString& )const
{
return QString::null;
}
QString ToDoEvent::summary() const
{
return m_sum;
}
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 );
}
void ToDoEvent::clearCategories()
{
m_category.clear();
}
void ToDoEvent::setCategories(const QStringList &list )
{
m_category = list;
}
QDate ToDoEvent::date()const
{
return m_date;
}
@@ -126,32 +144,71 @@ void ToDoEvent::setSummary( const QString& sum )
m_sum = sum;
}
void ToDoEvent::setCategory( const QString &cat )
{
qWarning("setCategory %s", cat.latin1() );
m_category.clear();
m_category << cat;
}
void ToDoEvent::setPriority(int prio )
{
m_priority = 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;
return false;
}
void ToDoEvent::setProgress(ushort progress )
{
m_prog = progress;
}
/*!
Returns a richt text string
*/
QString ToDoEvent::richText() const
{
QString text;
diff --git a/libopie/todoevent.h b/libopie/todoevent.h
index de4623f..b55a39b 100644
--- a/libopie/todoevent.h
+++ b/libopie/todoevent.h
@@ -1,25 +1,28 @@
#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
enum Priority { VERYHIGH=1, HIGH, NORMAL, LOW, VERYLOW };
/* Constructs a new ToDoEvent
@param completed Is the TodoEvent completed
@param priority What is the priority of this ToDoEvent
@param category Which category does it belong( uid )
@param summary A small summary of the todo
@param description What is this ToDoEvent about
@param hasDate Does this Event got a deadline
@param date what is the deadline?
@param uid what is the UUID of this Event
**/
ToDoEvent( bool completed = false, int priority = NORMAL,
@@ -76,32 +79,42 @@ class ToDoEvent {
* A small summary of the todo
*/
QString summary() const;
/**
* Return this todoevent in a RichText formatted QString
*/
QString richText() const;
/**
* Returns the UID of the Todo
*/
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 );
/**
* set if this todo got an end data
*/
void setHasDate( bool hasDate );
// if the category doesn't exist we will create it
// this sets the the Category after this call category will be the only category
void setCategory( const QString &category );
// adds a category to the Categories of this event
void insertCategory(const QString &category );
/**
@@ -112,51 +125,67 @@ class ToDoEvent {
/**
* This todo belongs to xxx categories
*/
void setCategories(const QStringList& );
/**
* Set the priority of the Todo
*/
void setPriority(int priority );
/**
* Set the progress.
*/
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& );
void setSummary(const QString& );
void setExtra( const QString&, const QString& );
bool isOverdue();
bool match( const QRegExp &r )const;
void setUid(int id) {m_uid = id; };
bool operator<(const ToDoEvent &toDoEvent )const;
bool operator<=(const ToDoEvent &toDoEvent )const;
bool operator!=(const ToDoEvent &toDoEvent )const { return !(*this == toDoEvent); };
bool operator>(const ToDoEvent &toDoEvent )const;
bool operator>=(const ToDoEvent &toDoEvent)const;
bool operator==(const ToDoEvent &toDoEvent )const;
ToDoEvent &operator=(const ToDoEvent &toDoEvent );
private:
class ToDoEventPrivate;
ToDoEventPrivate *d;
QDate m_date;
bool m_isCompleted:1;
bool m_hasDate:1;
int m_priority;
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;
};
#endif