• R/O
  • SSH

qtaskwarrior: Commit

Main repository


Commit MetaInfo

Revisionfa3a7abf7be9b06fa3d7e4452ac4fec0c4986970 (tree)
Time2022-06-28 02:16:44
AuthorJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@fast...>
CommiterJaime Marquínez Ferrándiz

Log Message

When editing a task we only save it once and we reload the information from taskwarrior

Change Summary

Incremental Difference

diff -r b39e9dc727df -r fa3a7abf7be9 src/lib/task.cpp
--- a/src/lib/task.cpp Wed Jun 22 22:57:06 2022 +0200
+++ b/src/lib/task.cpp Mon Jun 27 19:16:44 2022 +0200
@@ -11,11 +11,11 @@
1111 Task::Task(QJsonObject jsonObj, QObject *parent) : QObject(parent)
1212 {
1313 this->m_jsonObj = jsonObj;
14+ this->_hasUnsavedChanges = false;
1415 }
1516
16-Task::Task(QObject *parent) : QObject(parent)
17+Task::Task(QObject *parent) : Task(QJsonObject(), parent)
1718 {
18- this->m_jsonObj = QJsonObject();
1919 }
2020
2121 QJsonObject Task::toJSON()
diff -r b39e9dc727df -r fa3a7abf7be9 src/lib/task.h
--- a/src/lib/task.h Wed Jun 22 22:57:06 2022 +0200
+++ b/src/lib/task.h Mon Jun 27 19:16:44 2022 +0200
@@ -69,6 +69,7 @@
6969 void setTags(QStringList tags);
7070 bool Running();
7171 QList<TaskAnnotation> Annotations();
72+ bool _hasUnsavedChanges;
7273 signals:
7374
7475 public slots:
diff -r b39e9dc727df -r fa3a7abf7be9 src/lib/tasksitemmodel.cpp
--- a/src/lib/tasksitemmodel.cpp Wed Jun 22 22:57:06 2022 +0200
+++ b/src/lib/tasksitemmodel.cpp Mon Jun 27 19:16:44 2022 +0200
@@ -37,18 +37,14 @@
3737 process->setArguments(QStringList() << "export");
3838 process->start();
3939 process->waitForFinished();
40- QByteArray output = process->readAllStandardOutput();
41- QJsonDocument jsonDoc = QJsonDocument::fromJson(output);
42- QJsonArray tasksArray = jsonDoc.array();
40+ auto newTasks = this->readTasksFromOutput(process);
4341 qDeleteAll(tasks.begin(), tasks.end());
4442 tasks.clear();
4543 m_projects.clear();
4644 m_projects.insert(""); // No project
4745 m_tags.clear();
4846 m_tags.insert(""); // No tag
49- foreach (QJsonValue t, tasksArray) {
50- Task *task = new Task(t.toObject(), this);
51-
47+ foreach (Task *task, newTasks) {
5248 m_projects.insert(task->Project());
5349 foreach(QString tag, task->Tags())
5450 {
@@ -64,7 +60,7 @@
6460 {
6561 tasks.append(task);
6662 } else {
67- delete task;
63+ task->deleteLater();
6864 }
6965 }
7066 process->deleteLater();
@@ -78,6 +74,19 @@
7874 return;
7975 }
8076
77+QList<Task*> TasksItemModel::readTasksFromOutput(QProcess *process)
78+{
79+ QByteArray output = process->readAllStandardOutput();
80+ QJsonDocument jsonDoc = QJsonDocument::fromJson(output);
81+ QJsonArray tasksArray = jsonDoc.array();
82+ QList<Task*> result;
83+ foreach (QJsonValue t, tasksArray) {
84+ result.append(new Task(t.toObject(), this));
85+ }
86+
87+ return result;
88+}
89+
8190 void TasksItemModel::ReloadTasks()
8291 {
8392 emit layoutAboutToBeChanged();
@@ -109,6 +118,13 @@
109118 }
110119 }
111120 process->deleteLater();
121+
122+ auto exportProc = this->runCommandOnTask(task, QStringList("export"));
123+ auto newTask = this->readTasksFromOutput(exportProc).first();
124+ auto index = this->tasks.indexOf(task);
125+ this->tasks.replace(index, newTask);
126+ emit dataChanged(this->createIndex(index, 0), this->createIndex(index, TaskModelIndex::_LAST_INDEX));
127+ exportProc->deleteLater();
112128 // TODO: check for errors
113129 return;
114130 }
@@ -357,7 +373,7 @@
357373 default:
358374 return false;
359375 }
360- SaveTask(task);
376+ task->_hasUnsavedChanges = true;
361377 emit dataChanged(index, index);
362378 return true;
363379 }
@@ -485,3 +501,15 @@
485501 return KFormat().formatRelativeDateTime(date, format);
486502 }
487503 }
504+
505+bool TasksItemModel::submit()
506+{
507+ foreach(Task *task, this->tasks)
508+ {
509+ if (task->_hasUnsavedChanges)
510+ {
511+ this->SaveTask(task);
512+ }
513+ }
514+ return true;
515+}
diff -r b39e9dc727df -r fa3a7abf7be9 src/lib/tasksitemmodel.h
--- a/src/lib/tasksitemmodel.h Wed Jun 22 22:57:06 2022 +0200
+++ b/src/lib/tasksitemmodel.h Mon Jun 27 19:16:44 2022 +0200
@@ -70,10 +70,12 @@
7070 QModelIndex newTask();
7171
7272 Q_INVOKABLE QString formatRelativeDateTime(QDateTime date, QLocale::FormatType format = QLocale::ShortFormat) const;
73+ bool submit();
7374 signals:
7475 void pendingTasksCountChanged();
7576 private:
7677 QProcess* runCommandOnTask(Task *task, QStringList arguments);
78+ QList<Task*> readTasksFromOutput(QProcess *process);
7779
7880 QList<Task*> tasks;
7981 QSet<QString> m_projects;
diff -r b39e9dc727df -r fa3a7abf7be9 src/translations/qtaskwarrior_es.ts
--- a/src/translations/qtaskwarrior_es.ts Wed Jun 22 22:57:06 2022 +0200
+++ b/src/translations/qtaskwarrior_es.ts Mon Jun 27 19:16:44 2022 +0200
@@ -298,107 +298,107 @@
298298 <context>
299299 <name>TasksItemModel</name>
300300 <message>
301- <location filename="../lib/tasksitemmodel.cpp" line="208"/>
301+ <location filename="../lib/tasksitemmodel.cpp" line="224"/>
302302 <source>Completed</source>
303303 <translation>Completada</translation>
304304 </message>
305305 <message>
306- <location filename="../lib/tasksitemmodel.cpp" line="210"/>
306+ <location filename="../lib/tasksitemmodel.cpp" line="226"/>
307307 <source>Pending</source>
308308 <translation>Pendiente</translation>
309309 </message>
310310 <message>
311- <location filename="../lib/tasksitemmodel.cpp" line="212"/>
311+ <location filename="../lib/tasksitemmodel.cpp" line="228"/>
312312 <source>Deleted</source>
313313 <translation>Eliminada</translation>
314314 </message>
315315 <message>
316- <location filename="../lib/tasksitemmodel.cpp" line="214"/>
316+ <location filename="../lib/tasksitemmodel.cpp" line="230"/>
317317 <source>Waiting</source>
318318 <translation>Esperando</translation>
319319 </message>
320320 <message>
321- <location filename="../lib/tasksitemmodel.cpp" line="216"/>
321+ <location filename="../lib/tasksitemmodel.cpp" line="232"/>
322322 <source>Unknown status</source>
323323 <translation>Estado desconocido</translation>
324324 </message>
325325 <message>
326- <location filename="../lib/tasksitemmodel.cpp" line="231"/>
326+ <location filename="../lib/tasksitemmodel.cpp" line="247"/>
327327 <source>No priority</source>
328328 <translation>Sin prioridad</translation>
329329 </message>
330330 <message>
331- <location filename="../lib/tasksitemmodel.cpp" line="233"/>
331+ <location filename="../lib/tasksitemmodel.cpp" line="249"/>
332332 <source>Low</source>
333333 <translation>Baja</translation>
334334 </message>
335335 <message>
336- <location filename="../lib/tasksitemmodel.cpp" line="235"/>
336+ <location filename="../lib/tasksitemmodel.cpp" line="251"/>
337337 <source>Medium</source>
338338 <translation>Media</translation>
339339 </message>
340340 <message>
341- <location filename="../lib/tasksitemmodel.cpp" line="237"/>
341+ <location filename="../lib/tasksitemmodel.cpp" line="253"/>
342342 <source>High</source>
343343 <translation>Alta</translation>
344344 </message>
345345 <message>
346- <location filename="../lib/tasksitemmodel.cpp" line="300"/>
346+ <location filename="../lib/tasksitemmodel.cpp" line="316"/>
347347 <source>Id</source>
348348 <translation>Id</translation>
349349 </message>
350350 <message>
351- <location filename="../lib/tasksitemmodel.cpp" line="302"/>
351+ <location filename="../lib/tasksitemmodel.cpp" line="318"/>
352352 <source>Description</source>
353353 <translation>Descripción</translation>
354354 </message>
355355 <message>
356- <location filename="../lib/tasksitemmodel.cpp" line="304"/>
356+ <location filename="../lib/tasksitemmodel.cpp" line="320"/>
357357 <source>Due date</source>
358358 <translation>Fecha límite</translation>
359359 </message>
360360 <message>
361- <location filename="../lib/tasksitemmodel.cpp" line="306"/>
361+ <location filename="../lib/tasksitemmodel.cpp" line="322"/>
362362 <source>Urgency</source>
363363 <translation>Urgencia</translation>
364364 </message>
365365 <message>
366- <location filename="../lib/tasksitemmodel.cpp" line="308"/>
366+ <location filename="../lib/tasksitemmodel.cpp" line="324"/>
367367 <source>UUID</source>
368368 <translation>UUID</translation>
369369 </message>
370370 <message>
371- <location filename="../lib/tasksitemmodel.cpp" line="310"/>
371+ <location filename="../lib/tasksitemmodel.cpp" line="326"/>
372372 <source>Status</source>
373373 <translation>Estado</translation>
374374 </message>
375375 <message>
376- <location filename="../lib/tasksitemmodel.cpp" line="312"/>
376+ <location filename="../lib/tasksitemmodel.cpp" line="328"/>
377377 <source>Priority</source>
378378 <translation>Prioridad</translation>
379379 </message>
380380 <message>
381- <location filename="../lib/tasksitemmodel.cpp" line="314"/>
381+ <location filename="../lib/tasksitemmodel.cpp" line="330"/>
382382 <source>Wait until</source>
383383 <translation>Esperar hasta</translation>
384384 </message>
385385 <message>
386- <location filename="../lib/tasksitemmodel.cpp" line="316"/>
386+ <location filename="../lib/tasksitemmodel.cpp" line="332"/>
387387 <source>Project</source>
388388 <translation>Proyecto</translation>
389389 </message>
390390 <message>
391- <location filename="../lib/tasksitemmodel.cpp" line="318"/>
391+ <location filename="../lib/tasksitemmodel.cpp" line="334"/>
392392 <source>Tags</source>
393393 <translation>Etiquetas</translation>
394394 </message>
395395 <message>
396- <location filename="../lib/tasksitemmodel.cpp" line="320"/>
396+ <location filename="../lib/tasksitemmodel.cpp" line="336"/>
397397 <source>Annotations</source>
398398 <translation>Anotaciones</translation>
399399 </message>
400400 <message>
401- <location filename="../lib/tasksitemmodel.cpp" line="322"/>
401+ <location filename="../lib/tasksitemmodel.cpp" line="338"/>
402402 <source>Entry date</source>
403403 <translation>Fecha de introducción</translation>
404404 </message>
Show on old repository browser