@@ -25,8 +25,20 @@ void KeysTreeRenderer::renderKeys(QSharedPointer<Operations> operations,
2525
2626 int unprocessedPartStart = 0 ;
2727 if (parent->getFullPath ().size () > 0 || parent->type () == " namespace" ) {
28- unprocessedPartStart =
29- parent->getFullPath ().size () + settings.nsSeparator .length ();
28+ int nsLength = 0 ;
29+
30+ if (keys.size () > 0 ) {
31+ QString firstKey = QString::fromUtf8 (keys[0 ]);
32+ int res = firstKey.indexOf (settings.nsSeparator , parent->getFullPath ().size ());
33+
34+ qDebug () << " NSs regex pos:" << res;
35+
36+ nsLength = settings.nsSeparator .matchedLength ();
37+ }
38+
39+ unprocessedPartStart =
40+ parent->getFullPath ().size () + nsLength;
41+
3042 }
3143
3244 QByteArray rawKey;
@@ -70,10 +82,17 @@ void KeysTreeRenderer::renderLazily(
7082 QWeakPointer<TreeItem> currentParent =
7183 parent.staticCast <TreeItem>().toWeakRef ();
7284
73- int indexOfNaspaceSeparator =
74- (settings.nsSeparator .isEmpty ())
75- ? -1
76- : notProcessedKeyPart.indexOf (settings.nsSeparator );
85+ int indexOfNaspaceSeparator = -1 ;
86+ auto nsSeparator = settings.nsSeparator ;
87+ int nsSeparatorLength = nsSeparator.pattern ().size ();
88+
89+ if (!nsSeparator.isEmpty () && nsSeparator.patternSyntax () == QRegExp::RegExp) {
90+ QString keyPart = QString::fromUtf8 (notProcessedKeyPart);
91+ indexOfNaspaceSeparator = keyPart.indexOf (nsSeparator);
92+
93+ qDebug () << " NSs regex pos:" << indexOfNaspaceSeparator << nsSeparator.cap ();
94+ nsSeparatorLength = nsSeparator.matchedLength ();
95+ }
7796
7897 if (indexOfNaspaceSeparator == -1 ) {
7998 QSharedPointer<KeyItem> newKey (
@@ -94,7 +113,8 @@ void KeysTreeRenderer::renderLazily(
94113 QByteArray namespaceFullPath = fullKey.mid (0 , nsPos);
95114
96115 // Single namespaced key
97- if (nextKey.isEmpty () || nextKey.indexOf (namespaceFullPath) == -1 ) {
116+ if (nsSeparator.patternSyntax () != QRegExp::RegExp
117+ && (nextKey.isEmpty () || nextKey.indexOf (namespaceFullPath) == -1 )) {
98118 QSharedPointer<KeyItem> newKey (
99119 new KeyItem (fullKey, currentParent, parent->model ()));
100120 parent->append (newKey);
@@ -103,7 +123,7 @@ void KeysTreeRenderer::renderLazily(
103123
104124 namespaceItem = QSharedPointer<NamespaceItem>(
105125 new NamespaceItem (namespaceFullPath, m_operations, currentParent,
106- parent->model (), settings.dbIndex , settings.filter ));
126+ parent->model (), settings.dbIndex , settings.filter , nsSeparator. cap () ));
107127
108128 if (expandedNamespaces.contains (namespaceFullPath)) {
109129 namespaceItem->setExpanded (true );
@@ -113,7 +133,6 @@ void KeysTreeRenderer::renderLazily(
113133 }
114134
115135 renderLazily (namespaceItem,
116- notProcessedKeyPart.mid (indexOfNaspaceSeparator +
117- settings.nsSeparator .length ()),
136+ notProcessedKeyPart.mid (indexOfNaspaceSeparator + nsSeparatorLength),
118137 fullKey, m_operations, settings, expandedNamespaces, level + 1 , nextKey);
119138}
0 commit comments