From 345cc56416491a268266523c207d0485499f72bd Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Thu, 25 Sep 2008 17:06:11 +0000 Subject: more work on the help search git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2569 17fca916-40b9-46aa-a4ea-0a15b648b75c --- src/modules/help/libkvihelp.cpp | 77 +++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 34 deletions(-) (limited to 'src/modules/help') diff --git a/src/modules/help/libkvihelp.cpp b/src/modules/help/libkvihelp.cpp index a4d096ceb..409984e17 100644 --- a/src/modules/help/libkvihelp.cpp +++ b/src/modules/help/libkvihelp.cpp @@ -138,57 +138,66 @@ static bool help_kvs_cmd_search(KviKvsModuleCommandCall * c) static bool help_kvs_cmd_open(KviKvsModuleCommandCall * c) { - QString szDoc, szHelpDir; + QString szDoc, szHelpDir, szParam; QDir dirHelp; KVSM_PARAMETERS_BEGIN(c) - KVSM_PARAMETER("document",KVS_PT_STRING,KVS_PF_OPTIONAL,szDoc) + KVSM_PARAMETER("document",KVS_PT_STRING,KVS_PF_OPTIONAL,szParam) KVSM_PARAMETERS_END(c) + szDoc=szParam; g_pApp->getGlobalKvircDirectory(szHelpDir,KviApp::Help); dirHelp = QDir(szHelpDir); - if(szDoc.isEmpty()){ + // no document => index + if(szDoc.isEmpty()) + { szDoc = dirHelp.absoluteFilePath("index.html"); qDebug ("No file, use default at path %s",szDoc.toUtf8().data()); - } else qDebug("Doc set from user to %s",szDoc.toUtf8().data()); - - if (g_pDocIndex && !szDoc.isEmpty()) + } + + // try absolute path + QFileInfo * f= new QFileInfo(szDoc); + if(!f->exists()) { - if (!g_pDocIndex->documentList().count()) + //try relative path + szDoc = dirHelp.absoluteFilePath(szDoc); + qDebug("No abs path, trying relative path: %s",szDoc.toUtf8().data()); + f->setFile(szDoc); + } + + if(!f->exists()) + { + //try search + qDebug("No rel path, trying search.."); + if(g_pDocIndex) { - QString szDoclist,szDict; - g_pApp->getLocalKvircDirectory(szDoclist,KviApp::Help,"help.doclist." KVI_SOURCES_DATE); - g_pApp->getLocalKvircDirectory(szDict,KviApp::Help,"help.dict." KVI_SOURCES_DATE); - if ( KviFileUtils::fileExists(szDoclist) && KviFileUtils::fileExists( szDict )) g_pDocIndex->readDict(); - else + if (!g_pDocIndex->documentList().count()) + { + QString szDoclist,szDict; + g_pApp->getLocalKvircDirectory(szDoclist,KviApp::Help,"help.doclist." KVI_SOURCES_DATE); + g_pApp->getLocalKvircDirectory(szDict,KviApp::Help,"help.dict." KVI_SOURCES_DATE); + if ( KviFileUtils::fileExists(szDoclist) && KviFileUtils::fileExists( szDict )) + { + g_pDocIndex->readDict(); + } + } + int i=g_pDocIndex->titlesList().indexOf(szParam); + if (i!=-1) { - c->warning(__tr2qs("Docs database is not builded")); - return true; + szDoc=QUrl::fromLocalFile(g_pDocIndex->documentList()[ i ]).path(); + f->setFile(szDoc); } } - int i=g_pDocIndex->titlesList().indexOf(szDoc); - if (i!=-1) - { - szDoc=QUrl::fromLocalFile(g_pDocIndex->documentList()[ i ]).path(); - if (szDoc.left(1)=="/") szDoc.remove(0,1); - } } - QFileInfo * f= new QFileInfo(szDoc); - if(f) + + if(!f->exists()) { - if(!f->exists()) - { - szDoc = dirHelp.absoluteFilePath(szDoc); - qDebug("No abs path, trying relative path: %s",szDoc.toUtf8().data()); - f->setFile(szDoc); - } - if(!f->exists()) - { - szDoc = dirHelp.absoluteFilePath("nohelpavailable.html"); - qDebug("No rel path, defaulting to error page: %s",szDoc.toUtf8().data()); - f->setFile(szDoc); - } + //everything failed => error + szDoc = dirHelp.absoluteFilePath("nohelpavailable.html"); + + qDebug("Document not found, defaulting to error page: %s",szDoc.toUtf8().data()); + f->setFile(szDoc); } if(!c->switches()->find('n',"new")) -- cgit v1.3.1-10-gc9f91