userguide/src/HelpDataProvider.cpp
changeset 15 c0dfc135a46c
parent 13 1eb8015a8491
child 18 375271912456
child 24 bce8d4d2cc72
--- 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)