~ubuntu-branches/ubuntu/quantal/qtmobility/quantal

« back to all changes in this revision

Viewing changes to examples/calendardemo/src/monthpage.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2010-11-16 16:18:07 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20101116161807-k2dzt2nyse975r3l
Tags: 1.1.0-0ubuntu1
* New upstream release
* Syncronise with Debian, no remaining changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
 
41
41
#include <QtGui>
42
42
#include <qtorganizer.h>
43
 
#include <qorganizeritemabstractrequest.h>
 
43
#include <qorganizerabstractrequest.h>
44
44
 
45
45
#include "monthpage.h"
46
46
#include "calendardemo.h"
54
54
    m_manager(0),
55
55
    m_calendarWidget(0),
56
56
    m_dateLabel(0),
57
 
    m_itemList(0)
 
57
    m_itemList(0),
 
58
    m_ignoreShowDayPageOnceFlag(false)
58
59
{
59
60
    // Create widgets
60
61
    QFormLayout *mainlayout = new QFormLayout(this);
61
62
 
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);
66
67
    }
126
127
 
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;
161
162
    if (organizerItem.isEmpty())
162
163
        return;
163
164
 
164
 
    m_manager->removeItem(organizerItem.localId());
 
165
    m_manager->removeItem(organizerItem.id());
165
166
    refresh();
166
167
}
167
168
 
187
188
    m_calendarWidget->setDateTextFormat(QDate::currentDate(), cf);
188
189
 
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);
191
192
 
192
193
    // Get dates for all items
193
194
    QList<QDate> dates;
194
 
    QList<QOrganizerItem> instanceList;
195
195
    foreach (const QOrganizerItem &item, items)
196
196
    {
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());
 
197
        QDate startDate;
 
198
        QDate endDate;
 
199
 
 
200
        QOrganizerEventTime eventTime = item.detail<QOrganizerEventTime>();
 
201
        if (!eventTime.isEmpty()) {
 
202
            startDate = eventTime.startDateTime().date();
 
203
            endDate = eventTime.endDateTime().date();
 
204
        } else {
 
205
            QOrganizerTodoTime todoTime = item.detail<QOrganizerTodoTime>();
 
206
            if (!todoTime.isEmpty()) {
 
207
                startDate = todoTime.startDateTime().date();
 
208
                endDate = todoTime.dueDateTime().date();
 
209
            } else {
 
210
                QOrganizerJournalTime journalTime = item.detail<QOrganizerJournalTime>();
 
211
                if (!journalTime.isEmpty())
 
212
                    startDate = endDate = journalTime.entryDateTime().date();
 
213
            }
 
214
        }
 
215
 
 
216
        if (!startDate.isNull()) {
204
217
            while (startDate <= endDate) {
205
 
                dates << (eventTimeRange.startDateTime().date());
 
218
                dates << startDate;
206
219
                startDate = startDate.addDays(1);
207
220
            }
208
221
        }
209
 
 
210
 
        QOrganizerTodoTimeRange todoTimeRange = item.detail<QOrganizerTodoTimeRange>();
211
 
        if (!todoTimeRange.isEmpty())
212
 
            dates << todoTimeRange.startDateTime().date();
213
 
 
214
 
        QOrganizerJournalTimeRange journalTimeRange = item.detail<QOrganizerJournalTimeRange>();
215
 
        if (!journalTimeRange.isEmpty())
216
 
            dates << journalTimeRange.entryDateTime().date();
217
 
 
218
 
        instanceList.clear();
219
 
        // TODO: other item types
220
222
    }
221
223
 
222
224
    // Mark all dates which has events.
231
233
        m_calendarWidget->setDateTextFormat(date, cf);
232
234
    }
233
235
 
 
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();
 
240
#endif
235
241
}
236
242
 
237
243
void MonthPage::refreshDayItems()
245
251
    m_itemList->clear();
246
252
 
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);
 
255
 
251
256
    foreach (const QOrganizerItem &item, items)
252
257
    {
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);
263
266
        }
264
267
 
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);
274
 
            }
 
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);
275
276
        }
276
277
 
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);
286
 
            }
 
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);
287
286
        }
288
287
 
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
301
    refresh();
 
302
    m_ignoreShowDayPageOnceFlag = true;
303
303
}
304
304
 
305
305
void MonthPage::dayDoubleClicked(QDate date)
306
306
{
307
 
    emit showDayPage(date);
 
307
    if (!m_ignoreShowDayPageOnceFlag)
 
308
        emit showDayPage(date);
 
309
    else
 
310
        m_ignoreShowDayPageOnceFlag = false;
308
311
}
309
312
 
310
313
void MonthPage::openDay()