55
55
m_calendarWidget(0),
58
m_ignoreShowDayPageOnceFlag(false)
60
61
QFormLayout *mainlayout = new QFormLayout(this);
62
63
m_managerComboBox = new QComboBox(this);
63
foreach (const QString& manager, QOrganizerItemManager::availableManagers()) {
64
foreach (const QString& manager, QOrganizerManager::availableManagers()) {
64
65
if (manager != "invalid" && manager != "skeleton")
65
66
m_managerComboBox->addItem(manager);
127
128
// Try creating a new manager
128
129
QMap<QString, QString> parameters;
129
QOrganizerItemManager* newManager = new QOrganizerItemManager(managerName, parameters, this);
130
QOrganizerManager* newManager = new QOrganizerManager(managerName, parameters, this);
130
131
if (!newManager || newManager->error()) {
131
132
QMessageBox::information(this, tr("Failed!"), QString("Failed to create manager"));
132
133
delete newManager;
187
188
m_calendarWidget->setDateTextFormat(QDate::currentDate(), cf);
189
190
// TODO: switch to item instances when theres a backed
190
QList<QOrganizerItem> items = m_manager->items();
191
QList<QOrganizerItem> items = m_manager->items(startDateTime, endDateTime);
192
193
// Get dates for all items
193
194
QList<QDate> dates;
194
QList<QOrganizerItem> instanceList;
195
195
foreach (const QOrganizerItem &item, items)
197
// Get the instances of the item for that month and collect those dates.
198
instanceList.clear();
199
instanceList.append(m_manager->itemInstances(item, startDateTime, endDateTime));
200
for (int count = 0; count < instanceList.count(); count++) {
201
QOrganizerEventTimeRange eventTimeRange = instanceList.at(count).detail<QOrganizerEventTimeRange>();
202
QDate startDate(eventTimeRange.startDateTime().date());
203
QDate endDate(eventTimeRange.endDateTime().date());
200
QOrganizerEventTime eventTime = item.detail<QOrganizerEventTime>();
201
if (!eventTime.isEmpty()) {
202
startDate = eventTime.startDateTime().date();
203
endDate = eventTime.endDateTime().date();
205
QOrganizerTodoTime todoTime = item.detail<QOrganizerTodoTime>();
206
if (!todoTime.isEmpty()) {
207
startDate = todoTime.startDateTime().date();
208
endDate = todoTime.dueDateTime().date();
210
QOrganizerJournalTime journalTime = item.detail<QOrganizerJournalTime>();
211
if (!journalTime.isEmpty())
212
startDate = endDate = journalTime.entryDateTime().date();
216
if (!startDate.isNull()) {
204
217
while (startDate <= endDate) {
205
dates << (eventTimeRange.startDateTime().date());
206
219
startDate = startDate.addDays(1);
210
QOrganizerTodoTimeRange todoTimeRange = item.detail<QOrganizerTodoTimeRange>();
211
if (!todoTimeRange.isEmpty())
212
dates << todoTimeRange.startDateTime().date();
214
QOrganizerJournalTimeRange journalTimeRange = item.detail<QOrganizerJournalTimeRange>();
215
if (!journalTimeRange.isEmpty())
216
dates << journalTimeRange.entryDateTime().date();
218
instanceList.clear();
219
// TODO: other item types
222
224
// Mark all dates which has events.
231
233
m_calendarWidget->setDateTextFormat(date, cf);
236
#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
237
// As the day item list is not showed do not refresh
238
// the day items in Maemo5 or Maemo6 to improve performance
234
239
refreshDayItems();
237
243
void MonthPage::refreshDayItems()
245
251
m_itemList->clear();
247
253
// Find all items for today
248
// TODO: refactor this when we have itemInstances() working properly
249
QList<QOrganizerItem> items = m_manager->items();
250
QList<QOrganizerItem> instanceList;
254
QList<QOrganizerItem> items = m_manager->items(startOfDay, endOfDay);
251
256
foreach (const QOrganizerItem &item, items)
253
instanceList.clear();
254
instanceList.append(m_manager->itemInstances(item, startOfDay, endOfDay));
255
if(instanceList.count() > 0) {
256
QOrganizerEventTimeRange eventTimeRange = item.detail<QOrganizerEventTimeRange>();
257
QString time = eventTimeRange.startDateTime().time().toString("hh:mm");
258
QOrganizerEventTime eventTime = item.detail<QOrganizerEventTime>();
259
if (!eventTime.isEmpty()) {
260
QString time = eventTime.startDateTime().time().toString("hh:mm");
258
261
QListWidgetItem* listItem = new QListWidgetItem();
259
262
listItem->setText(QString("Event:%1-%2").arg(time).arg(item.displayLabel()));
260
263
QVariant data = QVariant::fromValue<QOrganizerItem>(item);
262
265
m_itemList->addItem(listItem);
265
QOrganizerTodoTimeRange todoTimeRange = item.detail<QOrganizerTodoTimeRange>();
266
if (!todoTimeRange.isEmpty()) {
267
if (todoTimeRange.startDateTime().date() == selectedDate) {
268
QString time = todoTimeRange.startDateTime().time().toString("hh:mm");
269
QListWidgetItem* listItem = new QListWidgetItem();
270
listItem->setText(QString("Todo:%1-%2").arg(time).arg(item.displayLabel()));
271
QVariant data = QVariant::fromValue<QOrganizerItem>(item);
272
listItem->setData(ORGANIZER_ITEM_ROLE, data);
273
m_itemList->addItem(listItem);
268
QOrganizerTodoTime todoTime = item.detail<QOrganizerTodoTime>();
269
if (!todoTime.isEmpty()) {
270
QString time = todoTime.startDateTime().time().toString("hh:mm");
271
QListWidgetItem* listItem = new QListWidgetItem();
272
listItem->setText(QString("Todo:%1-%2").arg(time).arg(item.displayLabel()));
273
QVariant data = QVariant::fromValue<QOrganizerItem>(item);
274
listItem->setData(ORGANIZER_ITEM_ROLE, data);
275
m_itemList->addItem(listItem);
277
QOrganizerJournalTimeRange journalTimeRange = item.detail<QOrganizerJournalTimeRange>();
278
if (!journalTimeRange.isEmpty()) {
279
if (journalTimeRange.entryDateTime().date() == selectedDate) {
280
QString time = journalTimeRange.entryDateTime().time().toString("hh:mm");
281
QListWidgetItem* listItem = new QListWidgetItem();
282
listItem->setText(QString("Journal:%1-%2").arg(time).arg(item.displayLabel()));
283
QVariant data = QVariant::fromValue<QOrganizerItem>(item);
284
listItem->setData(ORGANIZER_ITEM_ROLE, data);
285
m_itemList->addItem(listItem);
278
QOrganizerJournalTime journalTime = item.detail<QOrganizerJournalTime>();
279
if (!journalTime.isEmpty()) {
280
QString time = journalTime.entryDateTime().time().toString("hh:mm");
281
QListWidgetItem* listItem = new QListWidgetItem();
282
listItem->setText(QString("Journal:%1-%2").arg(time).arg(item.displayLabel()));
283
QVariant data = QVariant::fromValue<QOrganizerItem>(item);
284
listItem->setData(ORGANIZER_ITEM_ROLE, data);
285
m_itemList->addItem(listItem);
289
288
// TODO: other item types
300
299
int year = m_calendarWidget->yearShown();
301
300
m_dateLabel->setText(QString("%1 %2").arg(QDate::longMonthName(month)).arg(year));
302
m_ignoreShowDayPageOnceFlag = true;
305
305
void MonthPage::dayDoubleClicked(QDate date)
307
emit showDayPage(date);
307
if (!m_ignoreShowDayPageOnceFlag)
308
emit showDayPage(date);
310
m_ignoreShowDayPageOnceFlag = false;
310
313
void MonthPage::openDay()