Task::Task(TaskManager::AbstractGroupableItem *abstractItem, QObject *parent) : QObject(parent), m_task(NULL), m_group(NULL), m_abstractItem(abstractItem), m_flags(0), m_type(OtherItem), m_icon() { connect( abstractItem, SIGNAL(destroyed(QObject*)), this, SLOT(itemDestroyed())); if (abstractItem->itemType() == TaskManager::GroupItemType) { m_type = GroupItem; m_group = static_cast<TaskManager::TaskGroup*>(abstractItem); connect( m_group, SIGNAL(changed(::TaskManager::TaskChanges)), this, SLOT(updateTask(::TaskManager::TaskChanges))); updateTask(::TaskManager::EverythingChanged); } else if (abstractItem->itemType() == TaskManager::LauncherItemType) { m_type = LauncherItem; m_launcher = static_cast<TaskManager::LauncherItem*>(abstractItem); connect( m_launcher, SIGNAL(changed(::TaskManager::TaskChanges)), this, SLOT(updateTask(::TaskManager::TaskChanges))); updateTask(::TaskManager::EverythingChanged); } else { m_task = static_cast<TaskManager::TaskItem*>(abstractItem); if (task()) { m_type = TaskItem; connect( m_task, SIGNAL(changed(::TaskManager::TaskChanges)), this, SLOT(updateTask(::TaskManager::TaskChanges))); updateTask(::TaskManager::EverythingChanged); emit gotTask(); } else if (startup()) { m_type = StartupItem; connect(m_task, SIGNAL(gotTaskPointer()), this, SLOT(gotTaskPointer())); connect( m_task, SIGNAL(changed(::TaskManager::TaskChanges)), this, SLOT(updateTask(::TaskManager::TaskChanges))); updateTask(::TaskManager::EverythingChanged); } } }
void AbstractSortingStrategy::handleItem(AbstractGroupableItem *item) { //qDebug() << item->name(); if (item->itemType() == GroupItemType) { handleGroup(qobject_cast<TaskGroup*>(item)); } else if (item->itemType() == TaskItemType && !(qobject_cast<TaskItem*>(item))->task()) { //ignore startup tasks connect(item, SIGNAL(gotTaskPointer()), this, SLOT(check())); //sort the task as soon as it is a real one return; } check(item); }