diff -r 1eb8015a8491 -r c0dfc135a46c userguide/src/HelpDataProvider.cpp --- a/userguide/src/HelpDataProvider.cpp Fri Apr 16 14:53:45 2010 +0300 +++ b/userguide/src/HelpDataProvider.cpp Mon May 03 12:24:47 2010 +0300 @@ -34,7 +34,8 @@ { mHelpModel = new QStandardItemModel(); mKeywordModel = new QStandardItemModel(); - mSearhResultModel = NULL; + mSearhResultModel = new HelpProxyModel(); + mSearhResultModel->setSourceModel(mKeywordModel); } HelpDataProvider::~HelpDataProvider() @@ -80,14 +81,30 @@ QAbstractItemModel* HelpDataProvider::getSearchData(const QString& key) { - delete mSearhResultModel; - mSearhResultModel = NULL; - - mSearhResultModel = new HelpProxyModel();; - mSearhResultModel->setSourceModel(mKeywordModel); - mSearhResultModel->setFilterRole(KeywordRole); +/* if(key.isEmpty()) + { + return mKeywordModel; + }*/ + + if(key == mLastSrhKey) + { + return mSearhResultModel; + } +/* + if(!mLastSrhKey.isEmpty() && HelpUtils::findStr(key, mLastSrhKey) != -1) + { + searchInResult(key); + } + else + { + mSearhResultModel->removeRows(0, mSearhResultModel->rowCount()); + searchInAllData((HelpStandardItem*)mKeywordModel->invisibleRootItem(), key); + }*/ + + mLastSrhKey = key; mSearhResultModel->setFilterRegExp(key); + return mSearhResultModel; } @@ -157,6 +174,7 @@ constructAppHelp(path); } } + mKeywordModel->sort(0, HelpUtils::sortOrder()); } void HelpDataProvider::createBuiltInCategory(const QString& path) @@ -199,7 +217,7 @@ if(item) { mHelpModel->appendRow(item); - constructKeywordModel(uid); +// constructKeywordModel(uid); } } file.close(); @@ -249,6 +267,7 @@ HelpStandardItem* item = new HelpStandardItem(temp[1]); item->setData(temp[0], HrefRole); itemParent->appendRow(item); + constructKeywordModel(temp[1], uid, temp[0]); } file.close(); @@ -306,7 +325,7 @@ itemApp = new HelpStandardItem("Applications"); } itemApp->appendRow(item); - constructKeywordModel(pathTemp); +// constructKeywordModel(pathTemp); } file.close(); } @@ -318,56 +337,50 @@ } } -void HelpDataProvider::constructKeywordModel(const QString& path) +/* +void HelpDataProvider::searchInAllData(HelpStandardItem* item, const QString& key) { - QString pathKeyword(path); - pathKeyword.append(BACKSLASH); - pathKeyword.append(KEYWORDXML); - - QFile file(pathKeyword); - if (!file.open(QIODevice::ReadOnly)) { - return; + if(item->rowCount() > 0) + { + for(int i = 0; i < item->rowCount(); i++) + { + searchInAllData((HelpStandardItem*)item->child(i),key); + } } - - //construct keyword model, title and keyword is one to more - QXmlStreamReader reader(&file); - QString keyword; - QString title; - - while (!reader.atEnd()) { - if (!reader.readNextStartElement()) - { - continue; - } - if (reader.name() == "text") + else + { + if(HelpUtils::findStr(item->text(), key) != -1) { - keyword = reader.readElementText(); + HelpStandardItem* itemSearch = new HelpStandardItem(item->text()); + itemSearch->setData(item->data(UidRole), UidRole); + itemSearch->setData(item->data(HrefRole), HrefRole); + mSearhResultModel->appendRow(itemSearch); } - else if (reader.name() == "target") + } +} + +void HelpDataProvider::searchInResult(const QString& key) +{ + for(int i = 0; i < mSearhResultModel->rowCount();) + { + QStandardItem* item = mSearhResultModel->item(i); + if(HelpUtils::findStr(item->text(), key) == -1) { - QString href = reader.attributes().value("href").toString(); - HelpStandardItem* item = findItemWithHref((HelpStandardItem *)(mKeywordModel->invisibleRootItem()), href); - QStringList keywordLst; - if(item) - { - keywordLst = item->data(KeywordRole).toStringList(); - keywordLst.append(keyword); - item->setData(keywordLst,KeywordRole); - } - else - { - item = new HelpStandardItem(reader.readElementText()); - item->setData(path, UidRole); - item->setData(href, HrefRole); - - keywordLst.append(keyword); - item->setData(keywordLst,KeywordRole); - mKeywordModel->appendRow(item); - } - } + mSearhResultModel->removeRow(i); + } + else + { + i++; + } } - file.close(); - mKeywordModel->sort(0, HelpUtils::sortOrder()); +} +*/ +void HelpDataProvider::constructKeywordModel(const QString& title, const QString& uid, const QString& href) +{ + HelpStandardItem* itemTemp = new HelpStandardItem(title); + itemTemp->setData(uid, UidRole); + itemTemp->setData(href, HrefRole); + mKeywordModel->appendRow(itemTemp); } HelpStandardItem* HelpDataProvider::findItemWithHref(HelpStandardItem* itemParent, const QString& href)