Exemplo n.º 1
0
void ProjectModel::finishMetadataUpdate(ThreadWeaver::Job * _job)
{
    UpdateStatsJob* job = static_cast<UpdateStatsJob *>(_job);

    if (job->m_status == -2)
    {
        delete job;
        return;
    }

    if ((m_dirsWaitingForMetadata.contains(m_activeNode)) && (job->m_status == 0))
    {
        m_dirsWaitingForMetadata.remove(m_activeNode);
        //store the results

        setMetadataForDir(m_activeNode, m_activeJob->m_info);

        QModelIndex item = indexForNode(m_activeNode);

        //scan dubdirs - initiate data loading into the model.
        for (int row=0; row < m_activeNode->rows.count(); row++)
        {
            QModelIndex child = index(row, 0, item);

            if (canFetchMore(child))
                fetchMore(child);
            //QCoreApplication::processEvents();
        }
    }

    delete m_activeJob;

    startNewMetadataJob();
}
Exemplo n.º 2
0
void ProjectModel::startNewMetadataJob()
{
    if (!m_completeScan) //hack for debugging
        return;

    m_activeJob = NULL;
    m_activeNode = NULL;

    if (m_dirsWaitingForMetadata.isEmpty())
        return;

    ProjectNode* node = *m_dirsWaitingForMetadata.begin();

    //prepare new work
    m_activeNode = node;

    QList<KFileItem> files;

    QModelIndex item = indexForNode(node);

    for (int row=0; row < node->rows.count(); row ++)
        files.append(itemForIndex(index(row, 0, item)));

    m_activeJob = new UpdateStatsJob(files, this);
    connect(
        m_activeJob,SIGNAL(done(ThreadWeaver::Job*)),
        this,SLOT(finishMetadataUpdate(ThreadWeaver::Job*)));

    m_weaver->enqueue(m_activeJob);
}
Exemplo n.º 3
0
void ComponentView::updateDescription(const ModelNode &node)
{
    int nodeIndex = indexForNode(node);

    if (nodeIndex > -1)
        m_standardItemModel->item(nodeIndex)->setText(descriptionForNode(node));
}
void InsertRemoveModel::insertNode(Node *parentNode, int pos, Node *node)
{
    const QModelIndex parent = indexForNode(parentNode);
    int firstRow = pos;
    int lastRow = pos;

    beginInsertRows(parent, firstRow, lastRow);
    parentNode->children.insert(pos, node);
    endInsertRows();
}
Exemplo n.º 5
0
QModelIndex FlatModel::parent(const QModelIndex &idx) const
{
    QModelIndex parentIndex;
    if (Node *node = nodeForIndex(idx)) {
        FolderNode *parentNode = visibleFolderNode(node->parentFolderNode());
        if (parentNode)
            return indexForNode(parentNode);
    }
    return parentIndex;
}
void InsertRemoveModel::removeNode(Node *node)
{
    Node *parentNode = node->parent;
    const QModelIndex parent = indexForNode(parentNode);
    int pos = rowForNode(node);
    int firstRow = pos;
    int lastRow = pos;
    beginRemoveRows(parent, firstRow, lastRow);
    parentNode->children.removeAt(pos);
    endRemoveRows();
}
Exemplo n.º 7
0
void GSeqModel::removeNode( GEventNode* node )
{
	GEventNode* parentNode = node->ParentNode();
	const QModelIndex parent = indexForNode(parentNode);
	int pos = rowForNode(node);
	int firstRow = pos;
	int lastRow = pos;
	beginRemoveRows(parent, firstRow, lastRow);
	node->SetParent(0);
	endRemoveRows();
}
Exemplo n.º 8
0
QModelIndex AMActionHistoryModel3::indexForLogItem(AMActionLogItem3 *logItem) const{
	if(!logItem)
		return QModelIndex();

	const AMPointerTreeNode *relatedNode = itemTree_->nodeFromItem(logItem);
	if(!relatedNode){
		AMErrorMon::alert(this, AMACTIONHISTORYMODEL_INDEXFORLOGITEM_ITEM_NOT_IN_TREE, "The action history attempted to find the index for an item not in the tree. Please report this problem to the Acquaman developers ");
		return QModelIndex();
	}

	return indexForNode(relatedNode);
}
Exemplo n.º 9
0
void GSeqModel::insertNode( GEventNode* parentNode, int pos, GEventNode* node )
{
	QModelIndex parent = indexForNode(parentNode);

	const QList<GEventNode*> listEv = parentNode->ChildNodes();
	const int numEv = listEv.count();
	// if the pos is negative, we will just append the node at the end 
	if(pos < 0 || pos > numEv) {
		pos = numEv;
	}
	int firstRow = pos;
	int lastRow = pos;

	beginInsertRows(parent, firstRow, lastRow);
	parentNode->InsertChildEvent(node, pos);
	endInsertRows();
}
Exemplo n.º 10
0
void ProjectModel::setMetadataForDir(ProjectNode* node, const QList<KFileMetaInfo>& data)
{
    int dataCount = data.count();
    int rowsCount = node->rows.count();
    Q_ASSERT(dataCount == rowsCount);

    for (int row = 0; row < rowsCount; row ++)
        node->rows[row]->setFileStats(data.at(row));

    if (!dataCount)
        return;

    updateDirStats(node);

    QModelIndex item = indexForNode(node);
    QModelIndex topLeft = index(0, Graph, item);
    QModelIndex bottomRight = index(rowsCount - 1, ProjectModelColumnCount - 1, item);
    emit dataChanged(topLeft, bottomRight);
}
Exemplo n.º 11
0
void AMActionHistoryModel3::appendItem(AMActionLogItem3 *item)
{
	int parentId = item->parentId();
	AMPointerTreeNode *parentNode;
	QModelIndex parentIndex;
	if(parentId == -1){
		parentNode = itemTree_->rootNode();
		parentIndex = QModelIndex();
	}
	else{
		parentNode= idsToTreeNodes_.value(parentId);
		parentIndex = indexForNode(parentNode);
	}

	beginInsertRows(parentIndex, parentNode->childCount(), parentNode->childCount());
	AMPointerTreeNode *pointerTreeNode = new AMPointerTreeNode(item, parentNode);
	idsToTreeNodes_.insert(item->id(), pointerTreeNode);
	parentNode->appendChildNode(pointerTreeNode);
	endInsertRows();
}
Exemplo n.º 12
0
void ProjectModel::updateDirStats(ProjectNode* node)
{
    node->calculateDirStats();
    if (node == &m_rootNode)
    {
        updateTotalsChanged();
        return;
    }

    updateDirStats(node->parent);

    if (node->parent->rows.count()==0 || node->parent->rows.count()>=node->rowNumber)
        return;
    QModelIndex index = indexForNode(node);
    kWarning()<<index.row()<<node->parent->rows.count();
    if (index.row()>=node->parent->rows.count())
        return;
    QModelIndex topLeft = index.sibling(index.row(), Graph);
    QModelIndex bottomRight = index.sibling(index.row(), ProjectModelColumnCount - 1);
    emit dataChanged(topLeft, bottomRight);
}
Exemplo n.º 13
0
void ComponentView::setComponentNode(const ModelNode &node)
{
    m_componentAction->setCurrentIndex(indexForNode(node));
}
Exemplo n.º 14
0
bool ComponentView::hasEntryForNode(const ModelNode &node) const
{
    return indexForNode(node) >= 0;
}