[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground
From:       Andrew Stromme <astromme () chatonka ! com>
Date:       2009-01-31 5:47:31
Message-ID: 1233380851.437152.28286.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 918967 by astromme:

- Handle RTM::Task objects in full (i.e. not as pointers)
- Fix some more leaks


 M  +6 -2      base/plasma/applets/rememberthemilk/structure-plasmoid.cpp  
 M  +2 -2      base/plasma/dataengines/rtm/listsource.cpp  
 M  +4 -4      base/plasma/dataengines/rtm/tasksource.cpp  
 M  +2 -1      base/plasma/dataengines/rtm/tasksource.h  
 M  +7 -4      libs/rtm/objects.cpp  
 M  +3 -2      libs/rtm/objects.h  
 M  +16 -21    libs/rtm/rtm.cpp  
 M  +10 -8     libs/rtm/rtm.h  
 M  +26 -28    libs/rtm/xmlreaders.cpp  
 M  +10 -8     libs/rtm/xmlreaders.h  


--- trunk/playground/base/plasma/applets/rememberthemilk/structure-plasmoid.cpp \
#918966:918967 @@ -73,6 +73,10 @@
     } else {
         // Save settings
     }
+
+  delete m_listIds;
+  delete m_tasks;
+  
 }
  
 void StructurePlasmoid::init()
@@ -223,7 +227,7 @@
       m_tasks->clear();
       foreach(QVariant variant, data.values()) {
 	RTM::Task task = variant.value<RTM::Task>();
-	  m_tasks->insert(task.getID(), task);
+	  m_tasks->insert(task.getId(), task);
       }
       if (m_listIds->isEmpty()) // We must wait for the lists.
 	return;
@@ -280,7 +284,7 @@
       else
 	item->setData(INT_MAX, Qt::SortRole);
       item->setData(task.getPriority(), Qt::RTMPriorityRole);
-      item->setData((qint64) task.getID(), Qt::IdRole);
+      item->setData((qint64) task.getId(), Qt::IdRole);
       m_priorityItems.at(task.getPriority()-1)->insertRow(m_priorityItems.at(task.getPriority()-1)->rowCount(), \
item);  }
   }
--- trunk/playground/base/plasma/dataengines/rtm/listsource.cpp #918966:918967
@@ -46,8 +46,8 @@
 
 void ListSource::listsChanged() {
   removeAllData();
-  foreach(RTM::List *list, *session->getCachedLists()) {
-    setData(QString::number(list->getId()), list->getName());
+  foreach(RTM::List list, *session->getCachedLists()) {
+    setData(QString::number(list.getId()), list.getName());
   }
   checkForUpdate();
 }
--- trunk/playground/base/plasma/dataengines/rtm/tasksource.cpp #918966:918967
@@ -136,7 +136,7 @@
 {
     // Session should be an authenticated RTM Session.
     this->session = session;
-    connect(session, SIGNAL(taskChanged(RTM::Task*)), this, \
SLOT(taskChanged(RTM::Task*))); +    connect(session, SIGNAL(taskChanged(RTM::Task)), \
                this, SLOT(taskChanged(RTM::Task)));
     timer.setInterval(1000*60*5); // 5 minute refresh. TODO: Make Configurable.
     timer.start();
     connect(&timer, SIGNAL(timeout()), this, SLOT(update()));
@@ -162,11 +162,11 @@
   //checkForUpdate();
 }
 
-void TaskSource::taskChanged(RTM::Task *task) {
+void TaskSource::taskChanged(RTM::Task task) {
   //kDebug() << task->getName();
   QVariant var;
-  var.setValue(*task);
-  setData(task->getName(), var);
+  var.setValue(task);
+  setData(task.getName(), var);
   emit dataUpdated("Tasks", data());
 }
 
--- trunk/playground/base/plasma/dataengines/rtm/tasksource.h #918966:918967
@@ -21,6 +21,7 @@
 #define TIMELINESOURCE_H
 
 #include "rtm/defines.h"
+#include "rtm/objects.h"
 
 #include <QList>
 #include <QPair>
@@ -94,7 +95,7 @@
     void update();
 
 private slots:
-    void taskChanged(RTM::Task* task);
+    void taskChanged(RTM::Task task);
 
 private:
     RTM::Session *session;
--- trunk/playground/libs/rtm/objects.cpp #918966:918967
@@ -50,7 +50,7 @@
 
 RTM::StaticTask::StaticTask(RTM::Task* normalTask) {
   name = normalTask->getName();
-  taskid = normalTask->getID();
+  taskid = normalTask->getId();
   listid = normalTask->getListId();
   tags = *normalTask->getTags();
   dueDate = normalTask->getDueDate();
@@ -87,6 +87,7 @@
 RTM::Task::Task(RTM::Session *session, QString name, bool parseNameForDate) {
   Q_UNUSED(parseNameForDate);
   this->name = name;
+  taskid = 0;
   //TODO: Implement parse;
   //TODO: Immediate upload to server? or known new task later b/c of no taskid?
   tags = new QList<RTM::Tag>;
@@ -100,11 +101,13 @@
 }
 
 RTM::Task::Task(RTM::Session *session) {
+  taskid = 0;
   tags = new QList<RTM::Tag>;
   this->session = session;
 }
 
 RTM::Task::Task() {
+  taskid = 0;
   tags = new QList<RTM::Tag>;
   this->session = 0;
 }
@@ -117,7 +120,7 @@
 RTM::Task::Task(const RTM::Task& other) {
   session = other.getSession();
   name = other.getName();
-  taskid = other.getID();
+  taskid = other.getId();
   listId = other.getListId();
   tags = new QList<RTM::Tag>(*other.getTags());
   dueDate = other.getDueDate();
@@ -322,7 +325,7 @@
   request->addArgument("task_id", QString::number(taskid));
   return request;
 }
-RTM::Task* RTM::Task::createSyncTaskFromString(RTM::Session* session, QString task) \
{ +RTM::Task RTM::Task::createSyncTaskFromString(RTM::Session* session, QString task) \
{  RTM::Request *request = session->request("rtm.tasks.add"); // auth token is done \
for us  request->addArgument("name", task);
   request->addArgument("parse", "1");
@@ -332,7 +335,7 @@
   reader.read();
   qDebug() << reader.getReadTasks()->keys() << reader.getReadTasks()->isEmpty();
   //return reader.getReadTasks()->values().first();
-  return new Task(session); //TODO: rewrite async.
+  return Task(session); //TODO: rewrite async.
 }
 
 //#include "objects.moc"
--- trunk/playground/libs/rtm/objects.h #918966:918967
@@ -103,10 +103,11 @@
     virtual ~Task();
 
     /** Creates a new task from QString task. Also uploads to RTM::Session session \
                */
-    static Task* createSyncTaskFromString(RTM::Session *session, QString task);
+    static Task createSyncTaskFromString(RTM::Session *session, QString task);
 
     void setAttributesTo(RTM::StaticTask &other);
     
+    bool isValid() { return (taskid != 0); }
     bool isCompleted() { return completed.isValid(); }
     bool isDeleted() { return deleted.isValid(); }
 
@@ -123,7 +124,7 @@
     LocationId getLocationId() const { return locationid; }
     QString getRepeatString() const { return repeatString; }
     QString getUrl() const { return url; }
-    RTM::TaskId getID() const { return taskid; }
+    RTM::TaskId getId() const { return taskid; }
 
     bool hasDueTime() { return dueTime.isValid(); }
 
--- trunk/playground/libs/rtm/rtm.cpp #918966:918967
@@ -56,8 +56,8 @@
   }
   else
     createTimeline();
-  this->tasks = new QMap<QString,RTM::Task*>;
-  this->lists = new QMap<RTM::ListId,RTM::List*>;
+  this->tasks = new QMap<QString,RTM::Task>;
+  this->lists = new QMap<RTM::ListId,RTM::List>;
 }
 
 QString RTM::Session::getAuthUrl() {
@@ -127,9 +127,9 @@
   return true; // TODO: Fix
 }
 
-RTM::Task* RTM::Session::taskFromId(RTM::TaskId id) {
-  foreach(RTM::Task* task, *getCachedTasks()) {
-    if (task->getID() == id)
+RTM::Task RTM::Session::taskFromId(RTM::TaskId id) {
+  foreach(RTM::Task task, *getCachedTasks()) {
+    if (task.getId() == id)
       return task;
   }
   return 0; // Not found
@@ -156,13 +156,13 @@
 void RTM::Session::taskUpdate(QNetworkReply* reply) {
   TasksReader reader(reply);
   reader.read();
-  foreach(RTM::StaticTask* task, reader.getReadTasks()->values()) {
-    RTM::Task *fullTask = taskFromId(task->taskid);
-    if (!fullTask) {
-      fullTask = new RTM::Task(this);
-      tasks->insert(QString::number(fullTask->getID()), fullTask);
+  foreach(RTM::StaticTask task, reader.getReadTasks()->values()) {
+    RTM::Task fullTask = taskFromId(task.taskid);
+    if (fullTask.isValid()) {
+      fullTask = RTM::Task(this);
+      tasks->insert(QString::number(fullTask.getId()), fullTask);
     }
-    fullTask->setAttributesTo(*task);
+    fullTask.setAttributesTo(task);
     emit taskChanged(fullTask);
   }
   lastRefresh = QDateTime::currentDateTime();
@@ -175,8 +175,8 @@
 void RTM::Session::listUpdate(QNetworkReply* reply) {
   ListsReader reader(reply);
   reader.read();
-  foreach(RTM::List *list, reader.getReadLists()->values()) {
-    this->lists->insert(list->getId(), list);
+  foreach(RTM::List list, reader.getReadLists()->values()) {
+    this->lists->insert(list.getId(), list);
     emit listChanged(list);
   }
   kDebug() << "Number of lists: " << this->lists->count();
@@ -184,9 +184,9 @@
     emit listsChanged();
 }
 
-RTM::Task* RTM::Session::createTaskFromString(QString task) {
-  RTM::Task *newTask = RTM::Task::createSyncTaskFromString(this, task);
-  this->tasks->insert(newTask->getName(), newTask);
+RTM::Task RTM::Session::createTaskFromString(QString task) {
+  RTM::Task newTask = RTM::Task::createSyncTaskFromString(this, task);
+  this->tasks->insert(newTask.getName(), newTask);
   return newTask;
 }
 
@@ -195,11 +195,6 @@
 RTM::Session::~Session()
 {
   auth->deleteLater();
-  foreach(RTM::Task* task, tasks->values())
-    delete task;
-  foreach(RTM::List* list, lists->values())
-    delete list;
-
   delete tasks;
   delete lists;
 	//TODO: Cleanup
--- trunk/playground/libs/rtm/rtm.h #918966:918967
@@ -27,6 +27,8 @@
 
 #include "defines.h"
 
+#include "objects.h"
+
 class QNetworkReply;
 
 /**
@@ -64,10 +66,10 @@
 
     bool refreshTasksFromServer();
     bool refreshListsFromServer();
-    QMap<QString,RTM::Task*>* getCachedTasks() { return tasks; }
-    QMap<RTM::ListId,RTM::List*>* getCachedLists() { return lists; }
+    QMap<QString,RTM::Task>* getCachedTasks() { return tasks; }
+    QMap<RTM::ListId,RTM::List>* getCachedLists() { return lists; }
 
-    RTM::Task* taskFromId(RTM::TaskId id);
+    RTM::Task taskFromId(RTM::TaskId id);
 
     ~Session();
 
@@ -83,23 +85,23 @@
 
     RTM::Timeline timeline;
 
-    QMap<QString,RTM::Task*> *tasks;
-    QMap<RTM::ListId,RTM::List*> *lists;
+    QMap<QString,RTM::Task> *tasks;
+    QMap<RTM::ListId,RTM::List> *lists;
 
   public slots:
 
     void handleResponse();
     QString continueAuthForToken();
     //void handleAuthUrl(QString authUrl);
-    RTM::Task* createTaskFromString(QString task);
+    RTM::Task createTaskFromString(QString task);
 
   protected slots:
     void taskUpdate(QNetworkReply *reply);
     void listUpdate(QNetworkReply *reply);
 
   signals:
-    void taskChanged(RTM::Task *task);
-    void listChanged(RTM::List *list);
+    void taskChanged(RTM::Task task);
+    void listChanged(RTM::List list);
   
     void tasksChanged();
     void listsChanged();
--- trunk/playground/libs/rtm/xmlreaders.cpp #918966:918967
@@ -64,7 +64,7 @@
 }
 
 RTM::ListsReader::ListsReader(QIODevice* device) : Reader(device) {
-  lists = new QMap<RTM::ListId, RTM::List*>;
+  lists = new QMap<RTM::ListId, RTM::List>;
 }
 
 bool RTM::ListsReader::read(QNetworkReply* device) {
@@ -114,12 +114,12 @@
 }
 
 void RTM::ListsReader::readList() {
-  RTM::List *newList = new RTM::List(attributes().value("name").toString(), \
                attributes().value("id").toString().toLong());
-  kDebug() << newList->getName();
+  RTM::List newList = RTM::List(attributes().value("name").toString(), \
attributes().value("id").toString().toLong()); +  kDebug() << newList.getName();
   while (tryToWaitForMoreData()) {
     readNext();
     if (isEndElement()) {
-      lists->insert(newList->getId(), newList);
+      lists->insert(newList.getId(), newList);
       return;
     }
     if (isStartElement()) {
@@ -154,7 +154,7 @@
 
 
 RTM::TasksReader::TasksReader(QIODevice* device) : Reader(device) {
-  tasks = new QMap<QString, RTM::StaticTask*>;
+  tasks = new QMap<QString, RTM::StaticTask>;
 }
 
 
@@ -188,13 +188,13 @@
   }
   //   kDebug() << "Parsing Tasks Finished. Printing...";
   //   foreach(RTM::StaticTask* task, tasks->values())
-  //     qDebug() << task->taskid << task->name << task->dueDate.toString();
+  //     qDebug() << task.taskid << task.name << task.dueDate.toString();
 
   emit readFinished(this);
   return true; // !error();
 }
 
-void RTM::TasksReader::readNotes(RTM::StaticTask* task) {
+void RTM::TasksReader::readNotes(RTM::StaticTask & task) {
   Q_UNUSED(task);
   //kDebug() << "Notes not supported yet";
   if (isEndElement())
@@ -207,7 +207,7 @@
   }
 }
 
-void RTM::TasksReader::readParticipants(RTM::StaticTask* task) {
+void RTM::TasksReader::readParticipants(RTM::StaticTask & task) {
   Q_UNUSED(task);
   //kDebug() << "Participants not supported yet";
   if (isEndElement())
@@ -220,7 +220,7 @@
   }
 }
 
-void RTM::TasksReader::readTags(RTM::StaticTask* task) {
+void RTM::TasksReader::readTags(RTM::StaticTask & task) {
   //kDebug() << "Tags Not Fully Supported Yet";
   if (isEndElement())
     return;
@@ -233,35 +233,35 @@
       continue;
 
     if ((isStartElement()) && (name().toString() == "tag"))
-      task->tags.append(readElementText());
+      task.tags.append(readElementText());
     else
       readUnknownElement();
   }
 }
 
-void RTM::TasksReader::readTask(RTM::StaticTask* task) {
+void RTM::TasksReader::readTask(RTM::StaticTask & task) {
   // Grab ID
-  task->taskid = attributes().value("id").toString().toLong();
+  task.taskid = attributes().value("id").toString().toLong();
 
   // Grab Priority
   if (attributes().value("priority") == "N")
-    task->priority = 4;
+    task.priority = 4;
   else
-    task->priority = attributes().value("priority").toString().toInt();
+    task.priority = attributes().value("priority").toString().toInt();
 
   // Grab Due Date/Time
-  task->dueDate = QDate::fromString(attributes().value("due").toString(), \
Qt::ISODate); +  task.dueDate = \
QDate::fromString(attributes().value("due").toString(), Qt::ISODate);  if \
                (attributes().value("has_due_time") == "0")
-    task->dueTime = QTime();
+    task.dueTime = QTime();
   else
-    task->dueTime = QTime::fromString(attributes().value("due").toString(), \
Qt::ISODate); +    task.dueTime = \
QTime::fromString(attributes().value("due").toString(), Qt::ISODate);  
   // Grab Estimate
-  task->estimate = attributes().value("estimate").toString();
+  task.estimate = attributes().value("estimate").toString();
 
   // Grab Completed/Deleted
-  task->completed = \
                QDateTime::fromString(attributes().value("completed").toString(), \
                Qt::ISODate);
-  task->deleted = QDateTime::fromString(attributes().value("deleted").toString(), \
Qt::ISODate); +  task.completed = \
QDateTime::fromString(attributes().value("completed").toString(), Qt::ISODate); +  \
task.deleted = QDateTime::fromString(attributes().value("deleted").toString(), \
Qt::ISODate);  
   // TODO:: Grab Postponed
 
@@ -278,19 +278,19 @@
 
 void RTM::TasksReader::readTaskSeries(RTM::ListId listId) {
   //kDebug() << "Reading Task: " << attributes().value("name").toString();
-  RTM::StaticTask *currentTask;
+  RTM::StaticTask currentTask;
   if (isStartElement()) {
-    currentTask = new RTM::StaticTask();
-    currentTask->name = attributes().value("name").toString();
-    currentTask->seriesId = attributes().value("id").toString().toLong();
-    currentTask->listid = listId;
+    currentTask = RTM::StaticTask();
+    currentTask.name = attributes().value("name").toString();
+    currentTask.seriesId = attributes().value("id").toString().toLong();
+    currentTask.listid = listId;
   }
   
   while(tryToWaitForMoreData()) {
     readNext();
     
     if ((isEndElement()) && (name().toString() == "taskseries")) {
-      tasks->insert(currentTask->name, currentTask); 
+      tasks->insert(currentTask.name, currentTask); 
       break;
     }
     if (isEndElement()) {
@@ -341,8 +341,6 @@
 }
 
 RTM::TasksReader::~TasksReader() {
-  foreach(RTM::StaticTask *task, tasks->values())
-    delete task;
   delete tasks;
 }
 
--- trunk/playground/libs/rtm/xmlreaders.h #918966:918967
@@ -26,6 +26,8 @@
 
 #include "defines.h"
 
+#include "objects.h"
+
 namespace RTM {
 
 class RTM_EXPORT Reader :  public QObject, public QXmlStreamReader
@@ -51,7 +53,7 @@
 Q_OBJECT
 public:
   ListsReader(QIODevice *device=0);
-  QMap<RTM::ListId, RTM::List*>* getReadLists() { return lists; }
+  QMap<RTM::ListId, RTM::List>* getReadLists() { return lists; }
   virtual ~ListsReader();
 public slots:
   bool read(QNetworkReply *device=0);
@@ -62,7 +64,7 @@
     void readList();
       void readFilter();
 
-  QMap<RTM::ListId, RTM::List*> *lists;
+  QMap<RTM::ListId, RTM::List> *lists;
 };
 
 class RTM_EXPORT TasksReader : public Reader
@@ -71,7 +73,7 @@
 public:
   TasksReader(QIODevice *device=0);
 
-  QMap<QString, RTM::StaticTask*>* getReadTasks() { return tasks; }
+  QMap<QString, RTM::StaticTask>* getReadTasks() { return tasks; }
 
   virtual ~TasksReader();
 
@@ -82,12 +84,12 @@
   void readTasksHeader();
     void readTasksList();
       void readTaskSeries(RTM::ListId listId);
-	void readTags(RTM::StaticTask* task);
-	void readParticipants(RTM::StaticTask* task);
-	void readNotes(RTM::StaticTask* task);
-	void readTask(RTM::StaticTask* task);
+	void readTags(RTM::StaticTask & task);
+	void readParticipants(RTM::StaticTask & task);
+	void readNotes(RTM::StaticTask & task);
+	void readTask(RTM::StaticTask & task);
   
-  QMap<QString, RTM::StaticTask*> *tasks;
+  QMap<QString, RTM::StaticTask> *tasks;
   RTM::Session *rtmSession;
 };
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic