21 #include "ldapmodel.h"
22 #include "ldapmodel_p.h"
23 #include "ldapmodelnode_p.h"
24 #include "ldapsearch.h"
30 static const KCatalogLoader loader(
"libkldap" );
32 using namespace KLDAP;
35 : QAbstractItemModel( parent ),
38 m_d->createConnections();
42 : QAbstractItemModel( parent ),
45 m_d->createConnections();
48 m_d->populateRootToBaseDN();
51 LdapModel::~LdapModel()
58 m_d->setConnection( connection );
61 m_d->recreateRootItem();
64 m_d->populateRootToBaseDN();
69 if ( !child.isValid() ) {
76 if ( parentItem == m_d->rootNode() ) {
80 return createIndex( parentItem->row(), 0, parentItem );
87 if ( !parent.isValid() ) {
88 parentItem = m_d->rootNode();
95 return createIndex( row, col, childItem );
97 kDebug() <<
"Could not create valid index for row =" << row <<
", col =" << col;
103 if ( !index.isValid() ) {
107 if ( role == Qt::DisplayRole ) {
110 if ( node->nodeType() == LdapModelNode::DN ) {
112 if ( index.column() == 0 ) {
113 return dn->dn().rdnString();
119 if ( index.column() == 0 ) {
120 return QVariant( attr->attributeName() );
122 return QVariant( QString( attr->attributeData().constData() ) );
125 }
else if ( role == NodeTypeRole ) {
127 return QVariant(
int( node->nodeType() ) );
138 const QVariant &value,
149 if ( orientation == Qt::Horizontal && role == Qt::DisplayRole ) {
150 if ( section == 0 ) {
151 return i18n(
"Attribute" );
153 return i18n(
"Value" );
163 if ( !index.isValid() ) {
164 return Qt::ItemIsEnabled;
167 return Qt::ItemFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
173 parent.isValid() ?
static_cast<LdapModelDNNode*
>( parent.internalPointer() ) : m_d->rootNode();
174 return parentNode->columnCount();
179 if ( parent.column() > 0 ) {
184 parent.isValid() ?
static_cast<LdapModelDNNode*
>( parent.internalPointer() ) : m_d->rootNode();
185 return parentNode->childCount();
192 static_cast<const LdapModelNode*
>( parent.internalPointer() ) :
195 if ( node->nodeType() != LdapModelNode::DN ) {
200 if ( !parent.isValid() || parentNode->isPopulated() ) {
201 return parentNode->childCount() > 0;
209 parent.isValid() ?
static_cast<LdapModelDNNode*
>( parent.internalPointer() ) : m_d->rootNode();
210 return !parentNode->isPopulated();
216 parent.isValid() ?
static_cast<LdapModelDNNode*
>( parent.internalPointer() ) : m_d->rootNode();
219 m_d->searchResults().clear();
220 m_d->setSearchType( LdapModelPrivate::ChildObjects, parentNode );
221 m_d->search( parentNode->dn(),
224 parentNode->setPopulated(
true );
228 const QModelIndex &parent )
237 const QModelIndex &parent )
253 return Qt::MoveAction;
263 int row,
int column,
const QModelIndex &parent )
277 LdapModelNode::NodeType nodeType;
280 nodeType = LdapModelNode::Attr;
283 case DistinguishedName:
285 nodeType = LdapModelNode::DN;
290 static_cast<const LdapModelNode*
>( parent.internalPointer() ) :
294 if ( !parent.isValid() || parentNode->isPopulated() ) {
296 const QList<LdapModelNode*>& children = parentNode->children();
298 if ( child->nodeType() == nodeType ) {
322 #include "moc_ldapmodel.cpp"