[kde-doc-english] KDE/kdevelop/tools/coverage

Daniel Calviño Sánchez danxuliu at gmail.com
Mon Apr 6 01:04:21 CEST 2009


SVN commit 949802 by danxuliu:

Configure colors for directory coverage percentages.
ColorRange class and its helper classes map colors to a position in a 0 to 1 range. ColorRange objects can be loaded and saved from a KConfigGroup, and ReportModel was updated to use ColorRange class.
LCovSettingsBase and associated widgets were introduced to manage custom data (color ranges) in the configuration module, but keeping the KConfigXT data managed by KConfigXT.
Further information in http://reviewboard.kde.org/r/466/

FEATURE: 178470
GUI:

 M  +13 -2     CMakeLists.txt  
 A             colorrange.cpp   [License: GPL (v2+)]
 A             colorrange.h   [License: GPL (v2+)]
 AM            colorrangebar.cpp   [License: GPL (v2+)]
 AM            colorrangebar.h   [License: GPL (v2+)]
 A             discretecolorrange.cpp   [License: GPL (v2+)]
 A             discretecolorrange.h   [License: GPL (v2+)]
 A             gradientcolorrange.cpp   [License: GPL (v2+)]
 AM            gradientcolorrange.h   [License: GPL (v2+)]
 M  +2 -0      lcovconfig.kcfgc  
 M  +14 -2     lcovprefs.cpp  
 M  +5 -6      lcovprefs.h  
 D             lcovprefs.ui  
 AM            lcovprefswidget.cpp   [License: GPL (v2+)]
 AM            lcovprefswidget.h   [License: GPL (v2+)]
 A             lcovprefswidget.ui   lcovprefs.ui#943869
 AM            lcovsettingsbase.cpp   [License: GPL (v2+)]
 AM            lcovsettingsbase.h   [License: GPL (v2+)]
 M  +20 -11    reportmodel.cpp  
 M  +15 -1     reportmodel.h  
 AM            stoppointwidget.cpp   [License: GPL (v2+)]
 AM            stoppointwidget.h   [License: GPL (v2+)]
 A             stoppointwidget.ui  
 M  +6 -0      tests/CMakeLists.txt  
 A             tests/colorrangetest.cpp   [License: GPL (v2+)]
 A             tests/colorrangetest.h   [License: GPL (v2+)]
 A             tests/discretecolorrangetest.cpp   [License: GPL (v2+)]
 A             tests/discretecolorrangetest.h   [License: GPL (v2+)]
 A             tests/gradientcolorrangetest.cpp   [License: GPL (v2+)]
 A             tests/gradientcolorrangetest.h   [License: GPL (v2+)]


--- trunk/KDE/kdevelop/tools/coverage/CMakeLists.txt #949801:949802
@@ -18,6 +18,9 @@
     reportmodel.cpp
     reportproxymodel.cpp
     drilldownview.cpp
+    colorrange.cpp
+    discretecolorrange.cpp
+    gradientcolorrange.cpp
     tests/viewstub.cpp
     tests/pluginstub.cpp)
 
@@ -54,9 +57,17 @@
 
 if( NOT KDE_VERSION VERSION_LESS "4.2.2" )
 
-  set(lcovsettings_cfg_SRCS lcovprefs.cpp)
+  set(lcovsettings_cfg_SRCS
+      lcovprefs.cpp
+      lcovprefswidget.cpp
+      lcovsettingsbase.cpp
+      stoppointwidget.cpp
+      colorrangebar.cpp
+      colorrange.cpp
+      discretecolorrange.cpp
+      gradientcolorrange.cpp)
   
-  kde4_add_ui_files( lcovsettings_cfg_SRCS lcovprefs.ui )
+  kde4_add_ui_files( lcovsettings_cfg_SRCS lcovprefswidget.ui stoppointwidget.ui)
   kde4_add_kcfg_files( lcovsettings_cfg_SRCS lcovconfig.kcfgc )
   kde4_add_plugin( kcm_kdev_lcovsettings ${lcovsettings_cfg_SRCS} )
   target_link_libraries( kcm_kdev_lcovsettings ${KDE4_KUTILS_LIBS} ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS} )
** trunk/KDE/kdevelop/tools/coverage/colorrangebar.cpp #property svn:eol-style
   + native
** trunk/KDE/kdevelop/tools/coverage/colorrangebar.h #property svn:eol-style
   + native
** trunk/KDE/kdevelop/tools/coverage/gradientcolorrange.h #property svn:eol-style
   + native
--- trunk/KDE/kdevelop/tools/coverage/lcovconfig.kcfgc #949801:949802
@@ -1,6 +1,8 @@
 File=lcovconfig.kcfg
 ClassName=LCovSettings
+Inherits=LCovSettingsBase
 Singleton=true
+IncludeFiles=\"lcovsettingsbase.h\"
 UseEnumTypes=true
 SetUserTexts=true
 ItemAccessors=true
--- trunk/KDE/kdevelop/tools/coverage/lcovprefs.cpp #949801:949802
@@ -23,6 +23,7 @@
 #include <kaboutdata.h>
 
 #include "lcovconfig.h"
+#include "lcovprefswidget.h"
 
 K_PLUGIN_FACTORY(LCovPrefsFactory, registerPlugin<LCovPrefs>();)
 K_EXPORT_PLUGIN(LCovPrefsFactory(KAboutData("kcm_kdev_lcovsettings", "kdevelop", ki18n("LCov Settings"), "0.1")))
@@ -32,10 +33,13 @@
 {
 
     QVBoxLayout * l = new QVBoxLayout( this );
-    QWidget* w = new QWidget(parent);
-    preferencesDialog.setupUi( w );
+    QWidget* w = new LCovPrefsWidget(LCovSettings::self(), parent);
     l->addWidget( w );
 
+    connect(w, SIGNAL(changed(bool)), this, SLOT(changeState(bool)));
+    connect(LCovSettings::self(), SIGNAL(colorRangeChanged()),
+            w, SLOT(reloadColorRange()));
+
     addConfig( LCovSettings::self(), w );
 
     load();
@@ -43,18 +47,26 @@
 
 void LCovPrefs::save()
 {
+    LCovSettings::self()->writeConfig();
     KCModule::save();
 }
 
 void LCovPrefs::load()
 {
+    LCovSettings::self()->readConfig();
     KCModule::load();
 }
 
 void LCovPrefs::defaults()
 {
+    LCovSettings::self()->setDefaults();
     KCModule::defaults();
 }
 
+void LCovPrefs::changeState(bool changed)
+{
+    unmanagedWidgetChangeState(changed);
+}
+
 #include "lcovprefs.moc"
 
--- trunk/KDE/kdevelop/tools/coverage/lcovprefs.h #949801:949802
@@ -18,15 +18,13 @@
  * 02110-1301, USA.
  */
 
-#ifndef KDEVPROJECTPREFERENCES_H
-#define KDEVPROJECTPREFERENCES_H
+#ifndef LCOVPREFS_H
+#define LCOVPREFS_H
 
 #include <kcmodule.h>
 
 #include <kurl.h>
 
-#include "ui_lcovprefs.h"
-
 class LCovPrefs : public KCModule
 {
     Q_OBJECT
@@ -37,9 +35,10 @@
     virtual void load();
     virtual void defaults();
 
-private:
-    Ui::LCovPrefs preferencesDialog;
+public slots:
 
+    void changeState(bool changed);
+
 };
 
 #endif
** trunk/KDE/kdevelop/tools/coverage/lcovprefswidget.cpp #property svn:eol-style
   + native
** trunk/KDE/kdevelop/tools/coverage/lcovprefswidget.h #property svn:eol-style
   + native
** trunk/KDE/kdevelop/tools/coverage/lcovsettingsbase.cpp #property svn:eol-style
   + native
** trunk/KDE/kdevelop/tools/coverage/lcovsettingsbase.h #property svn:eol-style
   + native
--- trunk/KDE/kdevelop/tools/coverage/reportmodel.cpp #949801:949802
@@ -1,5 +1,5 @@
 /* KDevelop coverage plugin
- *    Copyright 2008 Manuel Breugelmans <mbr.nxi at gmail.com>
+ *    Copyright 2008-2009 Manuel Breugelmans <mbr.nxi at gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -20,6 +20,8 @@
 
 #include "reportmodel.h"
 #include "coveredfile.h"
+#include <KConfigGroup>
+#include <KGlobal>
 #include <KLocale>
 
 using Veritas::CoveredFile;
@@ -231,6 +233,19 @@
             << i18n("visited")
             << i18n("SLOC");
     setHorizontalHeaderLabels(headers);
+
+    KConfigGroup group = KGlobal::config()->group("Code Coverage");
+    if (group.hasGroup("Color Range")) {
+        m_colorRange.load(group.group("Color Range"));
+    } else {
+        m_colorRange.setMode(ColorRange::Discrete);
+        StopPoints stopPoints;
+        stopPoints.append(StopPoint(0.25, QColor("black")));
+        stopPoints.append(StopPoint(0.50, QColor("red")));
+        stopPoints.append(StopPoint(0.75, QColor("orange")));
+        stopPoints.append(StopPoint(1, QColor("green")));
+        m_colorRange.setStopPoints(stopPoints);
+    }
 }
 
 void ReportModel::setRootDirectory(const KUrl& root)
@@ -266,16 +281,6 @@
     return row;
 }
 
-QBrush brushForCoverage(double percent)
-{
-    QString color;
-    if      (percent < 5)  color = "black";
-    else if (percent < 30) color = "red";
-    else if (percent < 60) color = "orange";
-    else                   color = "green";
-    return QBrush(QColor(color));
-}
-
 // slot called when new CoveredFile has been parsed
 void ReportModel::addCoverageData(CoveredFile* f)
 {
@@ -314,5 +319,9 @@
     it->setData(dir->coverageRatio(), Qt::DisplayRole);
 }
 
+QBrush ReportModel::brushForCoverage(double percent)
+{
+    return QBrush(m_colorRange.colorAt(percent / 100));
+}
 
 #include "reportmodel.moc"
--- trunk/KDE/kdevelop/tools/coverage/reportmodel.h #949801:949802
@@ -1,5 +1,5 @@
 /* KDevelop coverage plugin
- *    Copyright 2008 Manuel Breugelmans <mbr.nxi at gmail.com>
+ *    Copyright 2008-2009 Manuel Breugelmans <mbr.nxi at gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -28,6 +28,7 @@
 #include <KUrl>
 
 #include "coverageexport.h"
+#include "colorrange.h"
 
 namespace Veritas
 {
@@ -64,10 +65,23 @@
     void appendDir(const QString& dir);
     void updateColoredCoverageColumn(ReportDirItem* dir);
 
+    /**
+     * Returns the brush with the color for the given coverage percent.
+     *
+     * @param percent The coverage percent.
+     * @return The brush.
+     */
+    QBrush brushForCoverage(double percent);
+
 private:
     KUrl m_root;
     QHash<KUrl, ReportFileItem*> m_files;
     QMap<QString, ReportDirItem*> m_dirs;
+
+    /**
+     * The color range used to associate colors with coverage percent values.
+     */
+    ColorRange m_colorRange;
 };
 
 // TODO merge this with the CoveredFile class, it is totally redundant to have both waste resources
** trunk/KDE/kdevelop/tools/coverage/stoppointwidget.cpp #property svn:eol-style
   + native
** trunk/KDE/kdevelop/tools/coverage/stoppointwidget.h #property svn:eol-style
   + native
--- trunk/KDE/kdevelop/tools/coverage/tests/CMakeLists.txt #949801:949802
@@ -21,6 +21,9 @@
 kdev_add_test(unit-lcovinfoparser lcovinfoparsertest.cpp)
 kdev_add_test(unit-coveredfile coveredfiletest.cpp)
 #kdev_add_test(ut-lcovjob lcovjobtest.cpp)
+kdev_add_test(unit-colorrange colorrangetest.cpp)
+kdev_add_test(unit-discretecolorrange discretecolorrangetest.cpp)
+kdev_add_test(unit-gradientcolorrange gradientcolorrangetest.cpp)
 kdev_add_test(unit-reportmodel reportmodeltest.cpp)
 kdev_add_test(unit-reportitems reportitemstest.cpp)
 kdev_add_test(unit-reportfileitem reportfileitemtest.cpp)
@@ -36,6 +39,9 @@
 coverage_add_mem_test(annotationmanager unit)
 coverage_add_mem_test(lcovinfoparser unit)
 coverage_add_mem_test(coveredfile unit)
+coverage_add_mem_test(colorrange unit)
+coverage_add_mem_test(discretecolorrange unit)
+coverage_add_mem_test(gradientcolorrange unit)
 coverage_add_mem_test(reportmodel unit)
 coverage_add_mem_test(reportitems unit)
 coverage_add_mem_test(reportfileitem unit)



More information about the kde-doc-english mailing list