[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