Example #1
0
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);
}