[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdevelop
From:       Aleix Pol Gonzalez <aleixpol () gmail ! com>
Date:       2009-09-18 2:10:28
Message-ID: 1253239828.549973.10083.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1025116 by apol:

Adapt to the documentation changes in kdevplatform.
Use QtHelp's model index for the QtHelp support to provide the index.
Create some simple QStringListModel to create the index for the CMake support.



 M  +53 -19    documentation/qthelp/qthelpplugin.cpp  
 M  +8 -1      documentation/qthelp/qthelpplugin.h  
 M  +34 -13    projectmanagers/cmake/cmakedocumentation.cpp  
 M  +6 -1      projectmanagers/cmake/cmakedocumentation.h  
 M  +15 -0     projectmanagers/cmake/cmakemanager.cpp  
 M  +4 -0      projectmanagers/cmake/cmakemanager.h  


--- trunk/KDE/kdevelop/documentation/qthelp/qthelpplugin.cpp #1025115:1025116
@@ -37,6 +37,7 @@
 
 #include "qthelpnetwork.h"
 #include <QWebFrame>
+#include <KIcon>
 
 K_PLUGIN_FACTORY(QtHelpFactory, registerPlugin<QtHelpPlugin>(); )
 K_EXPORT_PLUGIN(QtHelpFactory(KAboutData("kdevqthelp","kdevqthelp", ki18n("QtHelp"), \
"0.1", ki18n("Check Qt Help documentation"), KAboutData::License_GPL))) @@ -44,15 \
+45,21 @@  class QtHelpDocumentation : public KDevelop::IDocumentation
 {
 	public:
-		QtHelpDocumentation(const QString& name, const QMap<QString, QUrl>& info, \
                QHelpEngineCore* e)
-			: m_info(info), m_engine(e), m_name(name) { Q_ASSERT(!m_info.isEmpty()); }
-		
-		virtual QString name() const { return m_name; }
-		virtual QString description() const {
-            HelpNetworkAccessManager access(m_engine, 0);
-            QUrl url(m_info.values().first());
-            QByteArray data = m_engine->fileData(url);
+		QtHelpDocumentation(const QString& name, QtHelpPlugin* e)
+			: m_name(name) { s_provider=e; }
 
+        virtual QString name() const { return m_name; }
+        
+        virtual QString description() const
+        {
+            QMap< QString, QUrl > _info=info();
+            if(_info.isEmpty()) //QtHelp sometimes has empty info maps. e.g. \
availableaudioeffects i 4.5.2 +                return QString();
+            
+            HelpNetworkAccessManager access(s_provider->engine(), 0);
+            QUrl url(_info.values().first());
+            QByteArray data = s_provider->engine()->fileData(url);
+
             //Extract a short description from the html data
             QString dataString = QString::fromLatin1(data); ///@todo encoding
             QString fragment = url.fragment();
@@ -168,28 +175,35 @@
                 return thisFragment;
             }
             
-            return QStringList(m_info.keys()).join(", ");
+            return QStringList(_info.keys()).join(", ");
         }
         
         virtual QWidget* documentationWidget(QWidget* parent)
         {
+            QMap<QString, QUrl> _info=info();
+            if(_info.isEmpty()) //QtHelp sometimes has empty info maps. e.g. \
availableaudioeffects i 4.5.2 +                return 0;
+            
             m_view=new QWebView(parent);
-            m_view->page()->setNetworkAccessManager(new \
HelpNetworkAccessManager(m_engine, 0)); +            \
m_view->page()->setNetworkAccessManager(new \
HelpNetworkAccessManager(s_provider->engine(), 0));  
-            QUrl url=m_info[m_info.keys().first()];
+            QUrl url=_info[_info.keys().first()];
             m_view->load(url);
             
             return m_view;
         }
         
         virtual bool providesWidget() const { return true; }
-
+        virtual KDevelop::IDocumentationProvider* provider() { return s_provider; }
+        
 	private:
-		QMap<QString, QUrl> m_info;
-		QHelpEngineCore* m_engine;
+        static QtHelpPlugin* s_provider;
+        QMap<QString, QUrl> info() const { return \
s_provider->engine()->linksForIdentifier(m_name); } +        
 		QString m_name;
         QPointer<QWebView> m_view;
 };
+QtHelpPlugin* QtHelpDocumentation::s_provider=0;
 
 QString qtDocsLocation(const QString& qmake)
 {
@@ -213,8 +227,6 @@
 	return ret;
 }
 
-
-
 QtHelpPlugin::QtHelpPlugin(QObject* parent, const QVariantList& args)
 	: KDevelop::IPlugin(QtHelpFactory::componentData(), parent)
 	, m_engine(KStandardDirs::locateLocal("appdata", "qthelpcollection", \
QtHelpFactory::componentData())) @@ -257,13 +269,15 @@
 
 KSharedPtr< KDevelop::IDocumentation > \
QtHelpPlugin::documentationForDeclaration(KDevelop::Declaration* dec)  {
-	KDevelop::DUChainReadLocker lock(KDevelop::DUChain::lock());
 	
 	if(dec) {
+        QStringList idList;
+        {
+        KDevelop::DUChainReadLocker lock(KDevelop::DUChain::lock());
         KDevelop::QualifiedIdentifier qid = dec->qualifiedIdentifier();
-        QStringList idList;
         for(int a = 0; a < qid.count(); ++a)
             idList << qid.at(a).identifier().str(); //Copy over the identifier \
components, without the template-parameters +        }
         
 		QString id = idList.join("::");
 		if(!id.isEmpty()) {
@@ -271,10 +285,30 @@
             
             kDebug() << "doc_found" << id << links;
 			if(!links.isEmpty())
-				return KSharedPtr<KDevelop::IDocumentation>(new QtHelpDocumentation(id, links, \
&m_engine)); +				return KSharedPtr<KDevelop::IDocumentation>(new \
QtHelpDocumentation(id, this));  }
 	}
 	
 	return KSharedPtr<KDevelop::IDocumentation>();
 }
 
+QAbstractListModel* QtHelpPlugin::indexModel()
+{
+    return m_engine.indexModel();
+}
+
+KSharedPtr< KDevelop::IDocumentation > QtHelpPlugin::documentationForIndex(const \
QModelIndex& idx) +{
+    QString name=m_engine.indexModel()->data(m_engine.indexModel()->index(idx.row()), \
Qt::DisplayRole).toString(); +    return KSharedPtr<KDevelop::IDocumentation>(new \
QtHelpDocumentation(name, this)); +}
+
+QIcon QtHelpPlugin::icon() const
+{
+    return KIcon("qtlogo");
+}
+
+QString QtHelpPlugin::name() const
+{
+    return i18n("QtHelp");
+}
--- trunk/KDE/kdevelop/documentation/qthelp/qthelpplugin.h #1025115:1025116
@@ -25,12 +25,19 @@
 #include <QVariantList>
 #include <QHelpEngine>
 
-
 class QtHelpPlugin : public KDevelop::IPlugin, public \
KDevelop::IDocumentationProvider  {
 	public:
 		QtHelpPlugin(QObject *parent, const QVariantList & args= QVariantList());
 		virtual KSharedPtr< KDevelop::IDocumentation > documentationForDeclaration \
(KDevelop::Declaration*); +        
+        virtual KSharedPtr< KDevelop::IDocumentation > documentationForIndex(const \
QModelIndex& idx); +        virtual QAbstractListModel* indexModel();
+        
+        virtual QIcon icon() const;
+        virtual QString name() const;
+        
+        QHelpEngine* engine() { return &m_engine; }
 	private:
 		QHelpEngine m_engine;
 };
--- trunk/KDE/kdevelop/projectmanagers/cmake/cmakedocumentation.cpp #1025115:1025116
@@ -30,10 +30,32 @@
 #include <kmimetype.h>
 #include "cmakemanager.h"
 #include <cmakeparserutils.h>
+#include <QStringListModel>
 
+class CMakeDoc : public KDevelop::IDocumentation
+{
+    public:
+        CMakeDoc(const QString& name, const QString& desc) : mName(name), \
mDesc(desc) {} +        
+        virtual QWidget* documentationWidget(QWidget* ) { return 0; }
+        virtual QString description() const { return mDesc; }
+        virtual QString name() const { return mName; }
+        virtual bool providesWidget() const { return false; }
+        virtual KDevelop::IDocumentationProvider* provider() { return s_provider; }
+        
+        static CMakeManager* s_provider;
+        
+    private:
+        QString mName, mDesc;
+};
+CMakeManager* CMakeDoc::s_provider=0;
+
 CMakeDocumentation::CMakeDocumentation(const QString& cmakeCmd, CMakeManager* m)
     : QObject(m), mCMakeCmd(cmakeCmd), m_manager(m)
 {
+    CMakeDoc::s_provider=m;
+    m_index= new QStringListModel(this);
+    
     QTimer::singleShot(0, this, SLOT(delayedInitialization()));
 }
 
@@ -52,6 +74,8 @@
     {
         m_typeForName[name.toLower()]=type;
     }
+    
+    m_index->setStringList(ids);
 }
 
 QStringList CMakeDocumentation::names(CMakeDocumentation::Type t) const
@@ -59,19 +83,6 @@
     return m_typeForName.keys(t);
 }
 
-class CMakeDoc : public KDevelop::IDocumentation
-{
-    public:
-        CMakeDoc(const QString& name, const QString& desc) : mName(name), \
                mDesc(desc) {}
-        
-        virtual QWidget* documentationWidget(QWidget* ) { return 0; }
-        virtual QString description() const { return mDesc; }
-        virtual QString name() const { return mName; }
-        virtual bool providesWidget() const { return false; }
-    private:
-        QString mName, mDesc;
-};
-
 KSharedPtr<KDevelop::IDocumentation> CMakeDocumentation::description(const QString& \
identifier, const KUrl& file)  {
     if(KMimeType::findByUrl(file)->name()!="text/x-cmake")
@@ -125,3 +136,13 @@
 {
     return description(decl->identifier().toString(), decl->url().toUrl());
 }
+
+KSharedPtr<KDevelop::IDocumentation > \
CMakeDocumentation::documentationForIndex(const QModelIndex& idx) +{
+    return description(idx.data().toString(), KUrl("CMakeLists.txt"));
+}
+
+QAbstractListModel* CMakeDocumentation::indexModel()
+{
+    return m_index;
+}
--- trunk/KDE/kdevelop/projectmanagers/cmake/cmakedocumentation.h #1025115:1025116
@@ -28,6 +28,7 @@
 #include <interfaces/iplugin.h>
 #include <interfaces/idocumentationprovider.h>
 
+class QStringListModel;
 namespace KDevelop { class Declaration; }
 class CMakeManager;
 class KUrl;
@@ -40,9 +41,12 @@
         CMakeDocumentation(const QString& cmakeCmd, CMakeManager* m);
         KSharedPtr<KDevelop::IDocumentation> description(const QString& identifier, \
const KUrl& file);  
-        virtual KSharedPtr< KDevelop::IDocumentation > \
documentationForDeclaration(KDevelop::Declaration* declaration); +        KSharedPtr< \
KDevelop::IDocumentation > documentationForDeclaration(KDevelop::Declaration* \
declaration);  
         QStringList names(Type t) const;
+        
+        QAbstractListModel* indexModel();
+        KSharedPtr<KDevelop::IDocumentation> documentationForIndex(const \
QModelIndex& idx);  public slots:
         void delayedInitialization();
         
@@ -52,6 +56,7 @@
         QMap<QString, Type> m_typeForName;
         QString mCMakeCmd;
         const CMakeManager* m_manager;
+        QStringListModel* m_index;
 };
 
 #endif // CMAKEDOCUMENTATION_H
--- trunk/KDE/kdevelop/projectmanagers/cmake/cmakemanager.cpp #1025115:1025116
@@ -1199,4 +1199,19 @@
     return m_doc->documentationForDeclaration(declaration);
 }
 
+KSharedPtr< IDocumentation > CMakeManager::documentationForIndex(const QModelIndex& \
idx) +{
+    return m_doc->documentationForIndex(idx);
+}
+
+QAbstractListModel* CMakeManager::indexModel()
+{
+    return m_doc->indexModel();
+}
+
+QIcon CMakeManager::icon() const
+{
+    return KIcon("text-x-cmake");
+}
+
 #include "cmakemanager.moc"
--- trunk/KDE/kdevelop/projectmanagers/cmake/cmakemanager.h #1025115:1025116
@@ -116,6 +116,10 @@
 
     //IDocumentationProvider
     virtual KSharedPtr< KDevelop::IDocumentation > \
documentationForDeclaration(KDevelop::Declaration* declaration); +    virtual QIcon \
icon() const; +    virtual QAbstractListModel* indexModel();
+    virtual KSharedPtr<KDevelop::IDocumentation> documentationForIndex(const \
QModelIndex& idx); +
 public slots:
     void dirtyFile(const QString& file);
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic