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

List:       kde-commits
Subject:    KDE/kdeplasma-addons/applets/rememberthemilk
From:       Andrew Stromme <astromme () chatonka ! com>
Date:       2009-05-15 1:10:33
Message-ID: 1242349833.170500.27726.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 968127 by astromme:

Update due headers (and invalidate the model) every day at midnight. This fixes a bug \
where due tasks showed up under the wrong header

 M  +25 -9     taskmodel.cpp  
 M  +4 -0      taskmodel.h  
 M  +2 -2      tasksortfilter.cpp  


--- trunk/KDE/kdeplasma-addons/applets/rememberthemilk/taskmodel.cpp #968126:968127
@@ -31,7 +31,7 @@
   : QStandardItemModel(parent),
   engine(e),
   dropType(SortPriority)
-{
+{ 
   currentListIndex = 0;
 
   rootitem = invisibleRootItem();
@@ -48,6 +48,28 @@
   this->dropType = dropType;
 }
 
+void TaskModel::dayChanged()
+{ 
+  QDateTime nextMidnight = QDateTime(QDate::currentDate().addDays(1));
+  int secsUntilMidnight = QDateTime::currentDateTime().secsTo(nextMidnight);
+  midnightAlarm.setInterval(1000*secsUntilMidnight+5000); // 5 secs over to ensure \
we're not under +  midnightAlarm.start();
+  
+  m_dateItems.at(0)->setData(0, Qt::RTMTimeTRole); // Overdue
+  m_dateItems.at(0)->setData(0, Qt::RTMSortRole);
+  
+  m_dateItems.at(1)->setData(QDateTime(QDate::currentDate()).toTime_t(), \
Qt::RTMTimeTRole); // Today +  \
m_dateItems.at(1)->setData(QDateTime(QDate::currentDate()).toTime_t(), \
Qt::RTMSortRole); +  
+  m_dateItems.at(2)->setData(QDateTime(QDate::currentDate()).addDays(1).toTime_t(), \
Qt::RTMTimeTRole); // Tomorrow +  \
m_dateItems.at(2)->setData(QDateTime(QDate::currentDate()).addDays(1).toTime_t(), \
Qt::RTMSortRole); +  
+  m_dateItems.at(3)->setData(QDateTime(QDate::currentDate()).addDays(2).toTime_t(), \
Qt::RTMTimeTRole); // Past Tomorrow/Never +  \
m_dateItems.at(3)->setData(QDateTime(QDate::currentDate()).addDays(2).toTime_t(), \
Qt::RTMSortRole); +  
+  emit modelUpdated();
+}
+
 void TaskModel::refreshToplevel()
 {
   m_priorityItems.clear();
@@ -66,12 +88,6 @@
   dateStrings.append(i18n("Tomorrow"));
   dateStrings.append(i18n("Anytime"));
   
-  int dates[4];
-  dates[0] = 0;
-  dates[1] = QDateTime(QDate::currentDate()).toTime_t();
-  dates[2] = QDateTime(QDate::currentDate()).addDays(1).toTime_t();
-  dates[3] = QDateTime(QDate::currentDate()).addDays(2).toTime_t();
-
   for(int i=0;i<4;i++) {
     HeaderItem *priority = new HeaderItem(RTMPriorityHeader);
     priority->setData(i+1, Qt::RTMPriorityRole);
@@ -82,13 +98,13 @@
     rootitem->insertRow(rootitem->rowCount(), priority);
     
     HeaderItem *date = new HeaderItem(RTMDateHeader);
-    date->setData(dates[i], Qt::RTMTimeTRole);
-    date->setData(dates[i], Qt::RTMSortRole);
     date->setData(dateStrings.at(i), Qt::DisplayRole);
     date->setEditable(false);
     m_dateItems.append(date);
     rootitem->insertRow(rootitem->rowCount(), date);
   }
+  dayChanged();
+  connect(&midnightAlarm, SIGNAL(timeout()), SLOT(dayChanged()));
 }
 QFlags< Qt::DropAction > TaskModel::supportedDropActions() const {
   //kDebug() << "TaskModel::supportedDropActions()";
--- trunk/KDE/kdeplasma-addons/applets/rememberthemilk/taskmodel.h #968126:968127
@@ -1,3 +1,4 @@
+class HeaderItem;
 /*
  *   Copyright 2009 Andrew Stromme <astromme@chatonka.com>
  *
@@ -20,6 +21,7 @@
 #ifndef RTM_TASKMODEL_H
 #define RTM_TASKMODEL_H
 
+#include <QTimer>
 #include <QStandardItemModel>
 #include <Plasma/DataEngine>
 
@@ -60,6 +62,7 @@
   
 public slots:
   void dataUpdated(const QString &name, const Plasma::DataEngine::Data &data);
+  void dayChanged();
   
 signals:
   void listSwitched(qulonglong listId);
@@ -81,6 +84,7 @@
   SortBy dropType;
 
 private:
+  QTimer midnightAlarm;
   TaskItem* taskFromId(qulonglong id);
   ListItem* listFromId(qulonglong id);
 };
--- trunk/KDE/kdeplasma-addons/applets/rememberthemilk/tasksortfilter.cpp \
#968126:968127 @@ -36,7 +36,7 @@
 
 void TaskSortFilter::listChanged()
 {
-  invalidateFilter();
+  invalidate();
 }
 
 void TaskSortFilter::setSortBy(SortBy sortBy)
@@ -59,7 +59,7 @@
   int rightPriority = sourceModel()->data(right, Qt::RTMPriorityRole).toInt();
   
   if (sortBy == SortDue) {
-    if (sourceModel()->data(left, Qt::RTMItemType).toInt() != RTMTaskItem)
+    if (sourceModel()->data(left, Qt::RTMItemType).toInt() == RTMPriorityHeader)
       return  leftTime <= rightTime;
     else if (leftTime == rightTime)
       return leftPriority < rightPriority; // Subsort by priority


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

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