コード例 #1
0
QModelIndex AssetTemplateModel::findElement( const Element & element, bool build )
{
	if( !element.isValid() ) return QModelIndex();
	int cnt = rowCount();
	for( int i=0; i<cnt; i++ ) {
		QModelIndex idx = index(i,0);
		if( idx.isValid() && getElement(idx).key() == element.key() )
			return idx;
	}
	Element p( element.parent() );
	QModelIndex par;
	if( p.isRecord() )
		par = findElement(p);
	if( !par.isValid() ) return par;
	if( !build && !childrenLoaded(par) ) return QModelIndex();
	for( int i = rowCount(par)-1; i>=0; i-- )
	{
		QModelIndex c = par.child( i, 0 );
		if( getElement(c).key() == element.key() )
			return c;
	}
	return QModelIndex();
}
コード例 #2
0
ファイル: metadataitem.cpp プロジェクト: AlfiyaZi/flamerobin
void MetadataItem::ensureChildrenLoaded()
{
    if (!childrenLoaded())
        loadChildren();
}
コード例 #3
0
ファイル: dbtreeviewpanel.cpp プロジェクト: rovshan-b/oraexp
void DbTreeViewPanel::selectLinkedObjects()
{
    QList<DbTreeModel::DbTreeNodeType> fullyCheckedObjectTypes;
    QList<DbTreeModel::DbTreeNodeType> uncheckedObjectTypes;

    DbTreeModel *model=dbTree->getModel();
    int topLevelRowCount = model->rowCount(QModelIndex());

    availableObjectTypes.clear();
    for(int i=0; i<topLevelRowCount; ++i){
        DbTreeItem *item = static_cast<DbTreeItem*>(model->index(i, 0, QModelIndex()).internalPointer());
        availableObjectTypes.append(item->getItemType());

        Qt::CheckState checkState = item->checkState();

        if(checkState==Qt::Checked){
            fullyCheckedObjectTypes.append(item->getItemType());
        }else if(checkState==Qt::Unchecked){
            uncheckedObjectTypes.append(item->getItemType());
        }
    }

    if(fullyCheckedObjectTypes.size()==topLevelRowCount || uncheckedObjectTypes.size()==topLevelRowCount){
        QString title = fullyCheckedObjectTypes.size()==topLevelRowCount ? tr("All items selected") : tr("Nothing selected");
        QString message = fullyCheckedObjectTypes.size()==topLevelRowCount ? tr("All items are already selected.") : tr("Please, select at least one item and try again.");

        QMessageBox::information(this->window(),
                                 title,
                                 message);

        return;
    }

    if(selectLinkedObjectsDialog==0){
        selectLinkedObjectsDialog = new SelectLinkedObjectsDialog(this);
        selectLinkedObjectsDialog->setAvailableObjectTypes(availableObjectTypes);
    }

    if(!selectLinkedObjectsDialog->exec()){
        return;
    }


    selectedObjectTypes = selectLinkedObjectsDialog->getSelectedItemTypes();
    for(int i=0; i<fullyCheckedObjectTypes.size(); ++i){
        selectedObjectTypes.removeOne(fullyCheckedObjectTypes.at(i));
    }

    if(selectedObjectTypes.isEmpty()){
        QMessageBox::information(this->window(), tr("Nothing to find"),
                                 tr("Nothing to search for. Please, select more object types and try again."));
        return;
    }

    findOnlyTables = selectedObjectTypes.size()==1 && selectedObjectTypes.at(0)==DbTreeModel::Tables &&
                      !uncheckedObjectTypes.contains(DbTreeModel::Tables) && uncheckedObjectTypes.size()==topLevelRowCount-1;

    setInProgress(true);

    DbTreeModelNodeExpander *expander = new DbTreeModelNodeExpander(model);
    connect(expander, SIGNAL(loadComplete()), this, SLOT(childrenLoaded()));
    connect(expander, SIGNAL(loadError(OciException)), this, SLOT(childrenLoadError(OciException)));
    expander->loadChildren(QModelIndex(), availableObjectTypes);
}