aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/options/dialog.cpp
diff options
context:
space:
mode:
authorGravatar Noldor2010-04-13 10:21:52 +0000
committerGravatar Noldor2010-04-13 10:21:52 +0000
commit8e6a739020ca5ab4f812bdd00fd6b09dafe3f61e (patch)
treeee81ec9f13fdfdc998aadd9875722960ad51f85b /src/modules/options/dialog.cpp
parentmoved the "smart nick colors" functions to their own file. (diff)
downloadKVIrc-8e6a739020ca5ab4f812bdd00fd6b09dafe3f61e.tar.gz
KVIrc-8e6a739020ca5ab4f812bdd00fd6b09dafe3f61e.tar.bz2
KVIrc-8e6a739020ca5ab4f812bdd00fd6b09dafe3f61e.zip
Fixed search in options dialogs
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4248 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/options/dialog.cpp')
-rw-r--r--src/modules/options/dialog.cpp118
1 files changed, 39 insertions, 79 deletions
diff --git a/src/modules/options/dialog.cpp b/src/modules/options/dialog.cpp
index fbcad8dc8..526f9b916 100644
--- a/src/modules/options/dialog.cpp
+++ b/src/modules/options/dialog.cpp
@@ -306,37 +306,18 @@ void KviOptionsDialog::searchLineEditTextChanged(const QString &)
QString txt = m_pSearchLineEdit->text().trimmed();
m_pSearchButton->setEnabled(txt.length() > 0);
}
-
-bool KviOptionsDialog::recursiveSearch(KviOptionsTreeWidgetItem * pItem,const QStringList &lKeywords)
+bool KviOptionsDialog::searchInSelectors(KviOptionsWidget *pOptionsWidget,const QStringList &lKeywords)
{
- //qDebug("recursive search:");
- if(!pItem)return false;
-
- if(!pItem->m_pOptionsWidget)
- {
- pItem->m_pOptionsWidget = g_pOptionsInstanceManager->getInstance(pItem->m_pInstanceEntry,m_pWidgetStack);
- m_pWidgetStack->addWidget(pItem->m_pOptionsWidget);
- }
-
- bool bFoundSomethingHere = false;
- KviPointerHashTable<void *,bool> lOptionWidgetsToMark;
- lOptionWidgetsToMark.setAutoDelete(true);
- QTabWidget * pTabWidgetToMark = 0;
-
- QObject * o;
- QObjectList ol = pItem->m_pOptionsWidget->children();
- if(ol.count() > 0)
+ KviPointerList<KviSelectorInterface> *selectors=pOptionsWidget->selectors();
+ bool bFoundSomethingHere=false;
+ if(selectors->count()>0)
{
- for(QObjectList::Iterator it = ol.begin();it != ol.end();++it)
+ for(unsigned int i=0;i<selectors->count();i++)
{
- o = *it;
- QString szText;
- if(o->inherits("QLabel"))szText = ((QLabel *)o)->text();
- else if(o->inherits("QCheckBox"))szText = ((QCheckBox *)o)->text();
- else if(o->inherits("KviTalGroupBox"))szText = ((KviTalGroupBox *)o)->title();
-
- if(o->inherits("QWidget"))
- szText.append(((QWidget *)o)->toolTip());
+ QString szText=selectors->at(i)->textForSearch();
+ QWidget* pWidget=selectors->at(i)->widgetToHighlight();
+ if (pWidget)
+ szText.append(pWidget->toolTip());
if(!szText.isEmpty())
{
bool bOk = true;
@@ -353,73 +334,52 @@ bool KviOptionsDialog::recursiveSearch(KviOptionsTreeWidgetItem * pItem,const QS
bFoundSomethingHere = true;
}
- if(o->inherits("QWidget"))
- {
- QWidget* pWidget=(QWidget*)o;
- QFont font = pWidget->font();
- font.setBold(bOk);
- font.setUnderline(bOk);
- pWidget->setFont(font);
-
- // if there is a QTabWidget in the parent chain, signal it in the tab text
- QObject * pParent = pWidget->parent();
- while(pParent)
- {
- if(pParent->inherits("QTabWidget"))
- {
- pTabWidgetToMark = (QTabWidget *)pParent;
- break;
- }
- pParent = pParent->parent();
- }
-
- if(pTabWidgetToMark)
- {
- // lookup the KviOptionsWidget parent
- pParent = pWidget->parent();
- while(pParent)
- {
- if(pParent->inherits("KviOptionsWidget"))
- {
- bool * pExistingBool = lOptionWidgetsToMark.find(pParent);
- if(pExistingBool)
- {
- if(bOk)
- *pExistingBool = true;
- } else {
- lOptionWidgetsToMark.insert(pParent,new bool(bOk));
- }
- break;
- }
- pParent = pParent->parent();
- }
- }
- }
+ QFont font = pWidget->font();
+ font.setBold(bOk);
+ font.setUnderline(bOk);
+ pWidget->setFont(font);
}
}
}
+ return bFoundSomethingHere;
+}
+
+bool KviOptionsDialog::recursiveSearch(KviOptionsTreeWidgetItem * pItem,const QStringList &lKeywords)
+{
+ if(!pItem)return false;
+ if(!pItem->m_pOptionsWidget)
+ {
+ pItem->m_pOptionsWidget = g_pOptionsInstanceManager->getInstance(pItem->m_pInstanceEntry,m_pWidgetStack);
+ m_pWidgetStack->addWidget(pItem->m_pOptionsWidget);
+ }
- if(pTabWidgetToMark)
+ bool bFoundSomethingHere = false;
+ KviOptionsWidget *pOptionsWidget=pItem->m_pOptionsWidget;
+ QTabWidget *pTab= pOptionsWidget->tabWidget();
+ if (pTab)
{
- KviPointerHashTableIterator<void *,bool> it(lOptionWidgetsToMark);
- while(bool * pBool = it.current())
+ for(int i=0;i<pTab->count();i++)
{
- KviOptionsWidget * pOptionsWidget = (KviOptionsWidget *)it.currentKey();
- QString szTxt = pTabWidgetToMark->tabText(pTabWidgetToMark->indexOf(pOptionsWidget));
+ QString szTxt = pTab->tabText(i);
if(KviQString::equalCIN(szTxt,">>> ",4))
{
szTxt.replace(">>> ","");
szTxt.replace(" <<<","");
}
- if(*pBool)
+ if (searchInSelectors((KviOptionsWidget*)pTab->widget(i),lKeywords))
{
+ bFoundSomethingHere = true;
szTxt.insert(0,">>> ");
szTxt += QString(" <<<");
}
- pTabWidgetToMark->setTabText(pTabWidgetToMark->indexOf(pOptionsWidget), szTxt);
- ++it;
+ pTab->setTabText(i,szTxt);
}
}
+ else
+ {
+ if (searchInSelectors(pOptionsWidget,lKeywords))
+ bFoundSomethingHere = true;
+ }
if(bFoundSomethingHere)
{
@@ -437,7 +397,7 @@ bool KviOptionsDialog::recursiveSearch(KviOptionsTreeWidgetItem * pItem,const QS
for(int j=0;j<ccount;j++)
{
KviOptionsTreeWidgetItem * pChild = (KviOptionsTreeWidgetItem *)pItem->child(j);
-
+ //debug("search in %s",pChild->text(0).toUtf8().data());
bool bRet = recursiveSearch(pChild,lKeywords);
if(bRet)bFoundSomethingInside = true;
}