示例#1
0
QAbstractItemModel *Tag::taskModel()
{
    // TODO: this should be ok now
    if (!m_taskModel && m_kernel) {
        m_taskModel = new TaskFilterProxyModel(this);
        m_taskModel->setTagName(m_name);
        m_taskModel->setSourceModel(m_kernel->storage()->archivedTasksModel());
        m_taskModel->setObjectName(QString("Tasks with tag %1 model").arg(m_name));

        connect(this, &Tag::taskCountChanged,
                m_taskModel, &TaskFilterProxyModel::invalidateFilter,
                Qt::QueuedConnection);
#if defined(UNIT_TEST_RUN)
        AssertingProxyModel *assert = new AssertingProxyModel(this);
        assert->setSourceModel(m_taskModel);
#endif
    }

    return m_taskModel;
}
示例#2
0
void Task::modelSetup()
{
    Storage *storage = m_kernel->storage();

    m_checkableTagModel = new CheckableTagModel(this);

    m_tags.setDataFunction(&dataFunction);
    m_tags.insertRole("tag", Q_NULLPTR, TagRole);
    m_tags.insertRole("task", Q_NULLPTR, TaskRole);

    QAbstractItemModel *tagsModel = m_tags; // android doesn't build if you use m_tags directly in the connect statement
    connect(tagsModel, &QAbstractListModel::modelReset, this, &Task::tagsChanged);
    connect(tagsModel, &QAbstractListModel::rowsInserted, this, &Task::tagsChanged);
    connect(tagsModel, &QAbstractListModel::rowsRemoved, this, &Task::tagsChanged);
    connect(tagsModel, &QAbstractListModel::layoutChanged, this, &Task::tagsChanged);
    connect(tagsModel, &QAbstractListModel::dataChanged, this, &Task::tagsChanged);

    QHash<int, QByteArray> roleNames = storage->tagsModel()->roleNames();
    roleNames.insert(Qt::CheckStateRole, QByteArray("checkState"));
    QAbstractItemModel *allTagsModel = storage->tagsModel();
    Q_ASSERT(allTagsModel);
    m_checkableTagModel->setSourceModel(allTagsModel);
    m_contextMenuModel = new TaskContextMenuModel(this, this);
    m_sortedContextMenuModel = new SortedTaskContextMenuModel(this);
    m_sortedContextMenuModel->setSourceModel(m_contextMenuModel);

#if defined(UNIT_TEST_RUN)
    AssertingProxyModel *assert = new AssertingProxyModel(this);
    assert->setSourceModel(m_contextMenuModel);
    assert = new AssertingProxyModel(this);
    assert->setSourceModel(m_sortedContextMenuModel);
    assert = new AssertingProxyModel(this);
    assert->setSourceModel(m_checkableTagModel);
    assert = new AssertingProxyModel(this);
    assert->setSourceModel(m_tags);
#endif
}