@@ -38,7 +38,7 @@ QString DatabaseItem::getDisplayName() const
38
38
} else if (m_keys->isEmpty ()) {
39
39
return m_name;
40
40
} else {
41
- return QString (" %1 (%2/%3)" ).arg (m_name).arg (childCount ()).arg (m_keysCount);
41
+ return QString (" %1 (%2/%3)" ).arg (m_name).arg (m_rawKeys. size ()).arg (m_keysCount);
42
42
}
43
43
}
44
44
@@ -214,6 +214,8 @@ QSharedPointer<DatabaseKeys> DatabaseItem::KeysTreeRenderer::renderKeys(QSharedP
214
214
keys.sort ();
215
215
qDebug () << " Keys sorted in: " << timer.elapsed () << " ms" ;
216
216
QSharedPointer<QList<QSharedPointer<TreeItem>>> result (new QList<QSharedPointer<TreeItem>>());
217
+ QSharedPointer<QHash<QString, QSharedPointer<NamespaceItem>>> rootNamespaces (
218
+ new QHash<QString, QSharedPointer<NamespaceItem>>());
217
219
218
220
// render
219
221
timer.restart ();
@@ -228,7 +230,8 @@ QSharedPointer<DatabaseKeys> DatabaseItem::KeysTreeRenderer::renderKeys(QSharedP
228
230
229
231
renderNamaspacedKey (QSharedPointer<NamespaceItem>(),
230
232
rawKey, rawKey, operations,
231
- namespaceSeparator, result, parent);
233
+ namespaceSeparator, result, parent,
234
+ rootNamespaces);
232
235
}
233
236
qDebug () << " Tree builded in: " << timer.elapsed () << " ms" ;
234
237
return result;
@@ -240,7 +243,8 @@ void DatabaseItem::KeysTreeRenderer::renderNamaspacedKey(QSharedPointer<Namespac
240
243
QSharedPointer<Operations> m_operations,
241
244
const QString& m_namespaceSeparator,
242
245
QSharedPointer<DatabaseKeys> m_result,
243
- QSharedPointer<DatabaseItem> db)
246
+ QSharedPointer<DatabaseItem> db,
247
+ QSharedPointer<QHash<QString, QSharedPointer<NamespaceItem> > > m_rootNamespaces)
244
248
{
245
249
QWeakPointer<TreeItem> currentParent = (currItem.isNull ())? db.staticCast <TreeItem>().toWeakRef () :
246
250
currItem.staticCast <TreeItem>().toWeakRef ();
@@ -259,34 +263,25 @@ void DatabaseItem::KeysTreeRenderer::renderNamaspacedKey(QSharedPointer<Namespac
259
263
}
260
264
261
265
QString firstNamespaceName = notProcessedKeyPart.mid (0 , indexOfNaspaceSeparator);
262
-
263
266
QSharedPointer<NamespaceItem> namespaceItem;
264
267
265
- if (currItem.isNull ()) {
266
- int size = m_result->size ();
267
- QSharedPointer<TreeItem> child;
268
-
269
- for (int i=0 ; i < size; ++i)
270
- {
271
- child = (*m_result)[i];
272
- if (typeid (NamespaceItem)==typeid (*child)
273
- && child->getDisplayName () == firstNamespaceName) {
274
- namespaceItem = qSharedPointerCast<NamespaceItem>(child);
275
- break ;
276
- }
277
- }
278
- } else {
268
+ if (currItem.isNull () && m_rootNamespaces->contains (firstNamespaceName)) {
269
+ namespaceItem = (*m_rootNamespaces)[firstNamespaceName];
270
+ } else if (!currItem.isNull ()) {
279
271
namespaceItem = currItem->findChildNamespace (firstNamespaceName);
280
272
}
281
273
282
274
if (namespaceItem.isNull ()) {
283
275
namespaceItem = QSharedPointer<NamespaceItem>(
284
276
new NamespaceItem (firstNamespaceName, m_operations, currentParent));
285
277
286
- if (currItem.isNull ()) m_result->push_back (namespaceItem);
278
+ if (currItem.isNull ()) {
279
+ m_result->push_back (namespaceItem);
280
+ m_rootNamespaces->insert (namespaceItem->getDisplayName (), namespaceItem);
281
+ }
287
282
else currItem->append (namespaceItem);
288
283
}
289
284
290
285
renderNamaspacedKey (namespaceItem, notProcessedKeyPart.mid (indexOfNaspaceSeparator+m_namespaceSeparator.length ()),
291
- fullKey, m_operations, m_namespaceSeparator, m_result, db);
286
+ fullKey, m_operations, m_namespaceSeparator, m_result, db, m_rootNamespaces );
292
287
}
0 commit comments