@@ -38,7 +38,7 @@ QString DatabaseItem::getDisplayName() const
3838 } else if (m_keys->isEmpty ()) {
3939 return m_name;
4040 } 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);
4242 }
4343}
4444
@@ -214,6 +214,8 @@ QSharedPointer<DatabaseKeys> DatabaseItem::KeysTreeRenderer::renderKeys(QSharedP
214214 keys.sort ();
215215 qDebug () << " Keys sorted in: " << timer.elapsed () << " ms" ;
216216 QSharedPointer<QList<QSharedPointer<TreeItem>>> result (new QList<QSharedPointer<TreeItem>>());
217+ QSharedPointer<QHash<QString, QSharedPointer<NamespaceItem>>> rootNamespaces (
218+ new QHash<QString, QSharedPointer<NamespaceItem>>());
217219
218220 // render
219221 timer.restart ();
@@ -228,7 +230,8 @@ QSharedPointer<DatabaseKeys> DatabaseItem::KeysTreeRenderer::renderKeys(QSharedP
228230
229231 renderNamaspacedKey (QSharedPointer<NamespaceItem>(),
230232 rawKey, rawKey, operations,
231- namespaceSeparator, result, parent);
233+ namespaceSeparator, result, parent,
234+ rootNamespaces);
232235 }
233236 qDebug () << " Tree builded in: " << timer.elapsed () << " ms" ;
234237 return result;
@@ -240,7 +243,8 @@ void DatabaseItem::KeysTreeRenderer::renderNamaspacedKey(QSharedPointer<Namespac
240243 QSharedPointer<Operations> m_operations,
241244 const QString& m_namespaceSeparator,
242245 QSharedPointer<DatabaseKeys> m_result,
243- QSharedPointer<DatabaseItem> db)
246+ QSharedPointer<DatabaseItem> db,
247+ QSharedPointer<QHash<QString, QSharedPointer<NamespaceItem> > > m_rootNamespaces)
244248{
245249 QWeakPointer<TreeItem> currentParent = (currItem.isNull ())? db.staticCast <TreeItem>().toWeakRef () :
246250 currItem.staticCast <TreeItem>().toWeakRef ();
@@ -259,34 +263,25 @@ void DatabaseItem::KeysTreeRenderer::renderNamaspacedKey(QSharedPointer<Namespac
259263 }
260264
261265 QString firstNamespaceName = notProcessedKeyPart.mid (0 , indexOfNaspaceSeparator);
262-
263266 QSharedPointer<NamespaceItem> namespaceItem;
264267
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 ()) {
279271 namespaceItem = currItem->findChildNamespace (firstNamespaceName);
280272 }
281273
282274 if (namespaceItem.isNull ()) {
283275 namespaceItem = QSharedPointer<NamespaceItem>(
284276 new NamespaceItem (firstNamespaceName, m_operations, currentParent));
285277
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+ }
287282 else currItem->append (namespaceItem);
288283 }
289284
290285 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 );
292287}
0 commit comments