daypage.cpp Example File
calendardemo/src/daypage.cpp
#include "daypage.h"
#include "calendardemo.h"
#include <QtGui>
#include <qtorganizer.h>
QTM_USE_NAMESPACE
Q_DECLARE_METATYPE(QOrganizerItem)
DayPage::DayPage(QWidget *parent)
:QWidget(parent),
m_manager(0),
m_dateLabel(0),
m_itemList(0),
m_menuBar(0)
{
QVBoxLayout *mainLayout = new QVBoxLayout();
QHBoxLayout *dateLayout = new QHBoxLayout();
m_dateLabel = new QLabel(this);
m_dateLabel->setAlignment(Qt::AlignCenter);
dateLayout->addWidget(m_dateLabel);
dateLayout->addStretch();
#ifndef Q_OS_SYMBIAN
QPushButton* backButton = new QPushButton("View Month",this);
connect(backButton,SIGNAL(clicked()),this,SLOT(viewMonthClicked()));
dateLayout->addWidget(backButton);
#endif
mainLayout->addLayout(dateLayout);
m_itemList = new QListWidget(this);
mainLayout->addWidget(m_itemList);
connect(m_itemList, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(itemDoubleClicked(QListWidgetItem *)));
QHBoxLayout* hbLayout = new QHBoxLayout();
QPushButton* editEventButton = new QPushButton("Edit",this);
connect(editEventButton,SIGNAL(clicked()),this,SLOT(editItem()));
hbLayout->addWidget(editEventButton);
QPushButton* removeEventButton = new QPushButton("Remove",this);
connect(removeEventButton,SIGNAL(clicked()),this,SLOT(removeItem()));
hbLayout->addWidget(removeEventButton);
mainLayout->addLayout(hbLayout);
#ifdef Q_OS_SYMBIAN
QAction* backSoftKey = new QAction("View Month", this);
backSoftKey->setSoftKeyRole(QAction::NegativeSoftKey);
addAction(backSoftKey);
connect(backSoftKey, SIGNAL(triggered(bool)), this, SLOT(viewMonthClicked()));
#endif
setLayout(mainLayout);
}
DayPage::~DayPage()
{
}
#ifdef Q_OS_SYMBIAN
void DayPage::setMenu(QMenu *menu)
{
QAction* optionsSoftKey = new QAction("Options", this);
optionsSoftKey->setSoftKeyRole(QAction::PositiveSoftKey);
optionsSoftKey->setMenu(menu);
addAction(optionsSoftKey);
}
#endif
void DayPage::refresh()
{
m_dateLabel->setText(m_day.toString());
m_itemList->clear();
QList<QOrganizerItem> items = m_manager->items(QDateTime(m_day), QDateTime(m_day, QTime(23, 59, 59)));
foreach (const QOrganizerItem &item, items)
{
QOrganizerEventTime eventTime = item.detail<QOrganizerEventTime>();
if (!eventTime.isEmpty()) {
QString time = eventTime.startDateTime().time().toString("hh:mm");
QListWidgetItem* listItem = new QListWidgetItem();
if (item.type() == QOrganizerItemType::TypeEventOccurrence)
listItem->setText(QString("Event occurrence:%1-%2").arg(time).arg(item.displayLabel()));
else
listItem->setText(QString("Event:%1-%2").arg(time).arg(item.displayLabel()));
QVariant data = QVariant::fromValue<QOrganizerItem>(item);
listItem->setData(ORGANIZER_ITEM_ROLE, data);
m_itemList->addItem(listItem);
}
QOrganizerTodoTime todoTime = item.detail<QOrganizerTodoTime>();
if (!todoTime.isEmpty()) {
QString time = todoTime.startDateTime().time().toString("hh:mm");
QListWidgetItem* listItem = new QListWidgetItem();
listItem->setText(QString("Todo:%1-%2").arg(time).arg(item.displayLabel()));
QVariant data = QVariant::fromValue<QOrganizerItem>(item);
listItem->setData(ORGANIZER_ITEM_ROLE, data);
m_itemList->addItem(listItem);
}
QOrganizerJournalTime journalTime = item.detail<QOrganizerJournalTime>();
if (!journalTime.isEmpty()) {
QString time = journalTime.entryDateTime().time().toString("hh:mm");
QListWidgetItem* listItem = new QListWidgetItem();
listItem->setText(QString("Journal:%1-%2").arg(time).arg(item.displayLabel()));
QVariant data = QVariant::fromValue<QOrganizerItem>(item);
listItem->setData(ORGANIZER_ITEM_ROLE, data);
m_itemList->addItem(listItem);
}
}
if (m_itemList->count() == 0)
m_itemList->addItem("(no entries)");
}
void DayPage::changeManager(QOrganizerManager *manager)
{
m_manager = manager;
}
void DayPage::dayChanged(QDate date)
{
m_day = date;
}
void DayPage::itemDoubleClicked(QListWidgetItem *listItem)
{
if (!listItem)
return;
QOrganizerItem organizerItem = listItem->data(ORGANIZER_ITEM_ROLE).value<QOrganizerItem>();
if (!organizerItem.isEmpty())
emit showEditPage(organizerItem);
}
void DayPage::viewMonthClicked()
{
emit showMonthPage();
}
void DayPage::editItem()
{
QListWidgetItem *listItem = m_itemList->currentItem();
if (!listItem)
return;
QOrganizerItem organizerItem = listItem->data(ORGANIZER_ITEM_ROLE).value<QOrganizerItem>();
if (!organizerItem.isEmpty())
emit showEditPage(organizerItem);
}
void DayPage::removeItem()
{
QListWidgetItem *listItem = m_itemList->currentItem();
if (!listItem)
return;
QOrganizerItem organizerItem = listItem->data(ORGANIZER_ITEM_ROLE).value<QOrganizerItem>();
if (organizerItem.isEmpty())
return;
if (organizerItem.type() == QOrganizerItemType::TypeEventOccurrence
|| organizerItem.type() == QOrganizerItemType::TypeTodoOccurrence) {
m_manager->removeItem(organizerItem.detail<QOrganizerItemParent>().parentId());
} else {
m_manager->removeItem(organizerItem.id());
}
if (m_manager->error())
QMessageBox::information(this, "Failed!", QString("Failed to remove item!\n(error code %1)").arg(m_manager->error()));
else
delete m_itemList->takeItem(m_itemList->currentRow());
if (m_itemList->count() == 0)
m_itemList->addItem("(no entries)");
}
void DayPage::showEvent(QShowEvent *event)
{
window()->setWindowTitle(m_day.toString("dddd"));
QWidget::showEvent(event);
}
|