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

List:       kde-commits
Subject:    KDE/kdevplatform/veritas
From:       Manuel Breugelmans <mbr.nxi () gmail ! com>
Date:       2008-12-13 19:45:44
Message-ID: 1229197544.546909.10515.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 896549 by mbreugel:

- add to-source toggle. this allows plugins to attach source file(s) to a testcase and jump to it
- dont use stylesheets for the progressbar


 M  +1 -0      CMakeLists.txt  
 M  +1 -1      internal/overlaymanager.cpp  
 M  +5 -0      internal/overlaytoggle.cpp  
 M  +4 -1      internal/overlaytoggle.h  
 M  +52 -36    internal/runnerwindow.cpp  
 M  +17 -3     internal/runnerwindow.h  
 M  +12 -3     internal/runnerwindow.ui  
 M  +2 -13     internal/selectiontoggle.cpp  
 M  +1 -2      internal/selectiontoggle.h  
 M  +1 -1      internal/test_p.h  
 A             internal/tosourcetoggle.cpp   [License: GPL (v2+)]
 A             internal/tosourcetoggle.h   [License: GPL (v2+)]
 M  +4 -16     internal/verbosetoggle.cpp  
 M  +1 -2      internal/verbosetoggle.h  
 M  +1 -0      itestrunner.cpp  
 M  +16 -0     test.cpp  
 M  +6 -0      test.h  
 M  +10 -0     testexecutableinfo.cpp  
 M  +4 -0      testexecutableinfo.h  
 M  +2 -1      tests/CMakeLists.txt  
 M  +1 -0      tests/runnerwindowtest.cpp  


--- trunk/KDE/kdevplatform/veritas/CMakeLists.txt #896548:896549
@@ -29,6 +29,7 @@
     internal/overlaytoggle.cpp
     internal/resultswidget.cpp
     internal/itestframework_p.cpp
+    internal/tosourcetoggle.cpp
     internal/test_p.cpp
     tests/runnertesthelper.cpp # Actual tests of concrete frameworks use these.
     tests/testutils.cpp)       # eg QTestRunnerTest, CppUnitRunnerTest
--- trunk/KDE/kdevplatform/veritas/internal/overlaymanager.cpp #896548:896549
@@ -105,7 +105,7 @@
         Test* t = index2Test(index);
         if (!m_toggle->shouldShow(t)) return;
         const QRect rect = m_view->visualRect(index);
-        const int x = rect.right() - m_toggle->offset();
+        const int x = rect.right() - m_toggle->offset(t);
         const int y = rect.top();
         m_toggle->move(QPoint(x, y));
         m_toggle->show();
--- trunk/KDE/kdevplatform/veritas/internal/overlaytoggle.cpp #896548:896549
@@ -50,7 +50,12 @@
     hide();
 }
 
+QSize OverlayButton::sizeHint() const
+{
+    return QSize(16, 16);
+}
 
+
 void OverlayButton::setVisible(bool visible)
 {
     QAbstractButton::setVisible(visible);
--- trunk/KDE/kdevplatform/veritas/internal/overlaytoggle.h #896548:896549
@@ -42,10 +42,13 @@
      * visually invisible for at least one second after it is shown again. */
     virtual void reset();
 
-    virtual int offset() = 0;
+    /*! Distance between the icon and right border */
+    virtual int offset(Test*) = 0;
+
     virtual QModelIndex index();
     virtual void setIndex(const QModelIndex&);
     virtual bool shouldShow(Test*) = 0;
+    virtual QSize sizeHint() const;
 
 public slots:
     void setVisible(bool visible);
--- trunk/KDE/kdevplatform/veritas/internal/runnerwindow.cpp #896548:896549
@@ -32,6 +32,7 @@
 #include "selectionmanager.h"
 #include "verbosetoggle.h"
 #include "selectiontoggle.h"
+#include "tosourcetoggle.h"
 #include "testexecutor.h"
 
 #include <ktexteditor/cursor.h>
@@ -75,12 +76,39 @@
 using Veritas::ResultsProxyModel;
 using Veritas::TestExecutor;
 using Veritas::Test;
+using Veritas::TestBar;
 
 const Ui::RunnerWindow* RunnerWindow::ui() const
 {
     return m_ui;
 }
 
+TestBar::TestBar(QWidget* parent) : QProgressBar(parent)
+{
+    turnGreen();
+}
+
+TestBar::~TestBar()
+{
+}
+
+void TestBar::turnGreen()
+{
+    QPalette pal = palette();
+    QBrush brush(QColor("green"));
+    pal.setBrush( QPalette::Highlight, brush );
+    setPalette(pal);
+}
+
+void TestBar::turnRed()
+{
+    QPalette pal = palette();
+    QBrush brush(QColor("red"));
+    pal.setBrush( QPalette::Highlight, brush );
+    setPalette(pal);
+}
+
+
 RunnerWindow::RunnerWindow(ResultsModel* rmodel, QWidget* parent, Qt::WFlags flags)
         : QWidget(parent, flags), m_executor(0), m_isRunning(false)
 {
@@ -92,7 +120,6 @@
     runnerView()->setUniformRowHeights(true);
 
     connectFocusStuff();
-    setGreenBar();
     progressBar()->setTextVisible(false);
     progressBar()->show();
     addProjectMenu();
@@ -114,14 +141,20 @@
     m_selection = new SelectionManager(runnerView());
     SelectionToggle* selectionToggle = new SelectionToggle(runnerView()->viewport());
     m_selection->setButton(selectionToggle);
+
     m_verbose = new OverlayManager(runnerView());
     m_verboseToggle = new VerboseToggle(runnerView()->viewport());
     connect(m_verboseToggle, SIGNAL(clicked(bool)),SLOT(showVerboseTestOutput()));
     m_verbose->setButton(m_verboseToggle);
 
+    m_toSource = new OverlayManager(runnerView());
+    m_toSourceToggle = new ToSourceToggle(runnerView()->viewport());
+    connect(m_toSourceToggle, SIGNAL(clicked(bool)), SLOT(openTestSource()));
+    m_toSource->setButton(m_toSourceToggle);
+
     QPixmap refresh = KIconLoader::global()->loadIcon("view-refresh", KIconLoader::Small);
     m_ui->actionReload->setIcon(refresh);
-    QPixmap run = KIconLoader::global()->loadIcon("system-run", KIconLoader::Small);
+    QPixmap run = KIconLoader::global()->loadIcon("arrow-right", KIconLoader::Small);
     m_ui->actionStart->setIcon(run);
     QPixmap stop = KIconLoader::global()->loadIcon("window-close", KIconLoader::Small);
     m_ui->actionStop->setIcon(stop);
@@ -159,6 +192,14 @@
     }
 }
 
+void RunnerWindow::openTestSource()
+{
+    const QModelIndex index = m_toSourceToggle->index();
+    if (index.isValid()) {
+        m_toSource->index2Test(index)->toSource();
+    }
+}
+
 // helper for RunnerWindow(...)
 void RunnerWindow::addProjectMenu()
 {
@@ -178,6 +219,7 @@
     KUrl projectRoot = action->data().value<KUrl>();
     Q_ASSERT(m_project2action.contains(projectRoot));
     m_currentProject = projectRoot;
+    emit requestReload();
 }
 
 void RunnerWindow::addProjectToPopup(IProject* proj)
@@ -332,6 +374,7 @@
         prevModel->disconnect();
         delete prevModel;
     }
+    m_isRunning = false;
 }
 
 // helper for setModel(RunnerModel*)
@@ -407,6 +450,7 @@
     enableTestSync(true);
     m_verbose->makeConnections();
     m_selection->makeConnections();
+    m_toSource->makeConnections();
     runnerView()->resizeColumnToContents(0);
 }
 
@@ -446,52 +490,24 @@
     updateRunText();
 }
 
-void RunnerWindow::setGreenBar() const
-{
-    progressBar()->setStyleSheet(
-        QString("QProgressBar {"
-            "border: 1px solid grey;"
-            "border-radius: 2px;"
-            "text-align: center;"
-        "}"
-        "QProgressBar::chunk {"
-            "background-color: #009700;"
-            "width: 5px;"
-        "}"));
-}
-
-void RunnerWindow::setRedBar() const
-{
-    progressBar()->setStyleSheet(
-        QString("QProgressBar {"
-            "border: 1px solid grey;"
-            "border-radius: 2px;"
-            "text-align: center;"
-        "}"
-        "QProgressBar::chunk {"
-            "background-color: #DF1313;"
-            "width: 5px;"
-        "}"));
-}
-
 void RunnerWindow::displayNumErrors(int numItems) const
 {
-    if (numItems > 0) setRedBar();
+    if (numItems > 0) progressBar()->turnRed();
 }
 
-QProgressBar* RunnerWindow::progressBar() const
+TestBar* RunnerWindow::progressBar() const
 {
-    return ui()->progressRun;
+    return static_cast<TestBar*>(ui()->progressRun);
 }
 
 void RunnerWindow::displayNumFatals(int numItems) const
 {
-    if (numItems > 0) setRedBar();
+    if (numItems > 0) progressBar()->turnRed();
 }
 
 void RunnerWindow::displayNumExceptions(int numItems) const
 {
-    if (numItems > 0) setRedBar();
+    if (numItems > 0) progressBar()->turnRed();
 }
 
 namespace
@@ -611,7 +627,7 @@
     m_isRunning = true;
 
     m_stopWatch = QTime();
-    setGreenBar();
+    progressBar()->turnGreen();
     displayNumCompleted(0);
     m_stopWatch.start();
 
--- trunk/KDE/kdevplatform/veritas/internal/runnerwindow.h #896548:896549
@@ -26,6 +26,7 @@
 #include <QTreeView>
 #include <QList>
 #include <QTime>
+#include <QProgressBar>
 #include <KUrl>
 #include "../veritasexport.h"
 
@@ -46,10 +47,12 @@
 class ResultsProxyModel;
 class SelectionManager;
 class VerboseToggle;
+class ToSourceToggle;
 class ResultsWidget;
 class OverlayManager;
 class TestExecutor;
 class Test;
+class TestBar;
 
 /*!
  * \brief The RunnerWindow class defines the Veritas main toolwindow
@@ -99,12 +102,14 @@
 
 Q_SIGNALS:
     void runCompleted() const;
+    void requestReload() const;
 
 public Q_SLOTS:
 
     void showVerboseTestOutput();
     void addProjectToPopup(KDevelop::IProject*);
     void rmProjectFromPopup(KDevelop::IProject*);
+    void openTestSource();
 
 private Q_SLOTS:
 
@@ -194,10 +199,8 @@
     RunnerWindow(const RunnerWindow&);
     RunnerWindow& operator=(const RunnerWindow&);
     void updateRunText() const;
-    void setRedBar() const;
-    void setGreenBar() const;
 
-    QProgressBar* progressBar() const;
+    TestBar* progressBar() const;
 
 private:
     Ui::RunnerWindow *m_ui;            // QtDesigner main object
@@ -210,10 +213,21 @@
     TestExecutor* m_executor;
     mutable bool m_isRunning;
     VerboseToggle* m_verboseToggle;
+    ToSourceToggle* m_toSourceToggle;
+    OverlayManager* m_toSource;
     KUrl m_currentProject;
     int m_numItemsCompleted;
 };
 
+class TestBar : public QProgressBar
+{
+public:
+    TestBar(QWidget* parent);
+    virtual ~TestBar();
+    void turnGreen();
+    void turnRed();
+};
+
 } // namespace
 
 #endif // VERITAS_RUNNERWINDOW_H
--- trunk/KDE/kdevplatform/veritas/internal/runnerwindow.ui #896548:896549
@@ -5,8 +5,10 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>574</width>
-    <height>581</height>
+    <!--<width>574</width>
+    <height>581</height> -->
+    <width>0</width>
+    <height>0</height>
    </rect>
   </property>
   <property name="windowTitle" >
@@ -69,7 +71,7 @@
         </property>
         <layout class="QHBoxLayout" name="horizontalLayout_4" >
          <item>
-          <widget class="QProgressBar" name="progressRun" >
+          <widget class="Veritas::TestBar" name="progressRun" >
            <property name="sizePolicy" >
             <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
              <horstretch>1</horstretch>
@@ -212,6 +214,13 @@
   </action>
  </widget>
  <layoutdefault spacing="6" margin="6" />
+ <customwidgets>
+  <customwidget>
+   <class>Veritas::TestBar</class>
+   <extends>QProgressBar</extends>
+   <header>internal/runnerwindow.h</header>
+  </customwidget>
+ </customwidgets>
  <resources>
   <include location="../resources/qxrunner.qrc" />
  </resources>
--- trunk/KDE/kdevplatform/veritas/internal/selectiontoggle.cpp #896548:896549
@@ -19,20 +19,15 @@
  ***************************************************************************/
 
 #include "selectiontoggle.h"
+#include "veritas/test.h"
 
-#include <QPainter>
-#include <QPaintEvent>
-#include <QRect>
-#include <QTimer>
+#include <QEvent>
 #include <QTimeLine>
 
 #include <KDebug>
 #include <KGlobalSettings>
-#include <KIcon>
 #include <KIconLoader>
-#include <KIconEffect>
 #include <KLocale>
-#include "veritas/test.h"
 
 using Veritas::SelectionToggle;
 using Veritas::OverlayButton;
@@ -60,12 +55,6 @@
 {
 }
 
-QSize SelectionToggle::sizeHint() const
-{
-    return QSize(16, 16);
-}
-
-
 bool SelectionToggle::eventFilter(QObject* obj, QEvent* event)
 {
     if ((obj == parent()) && (event->type() == QEvent::Leave)) {
--- trunk/KDE/kdevplatform/veritas/internal/selectiontoggle.h #896548:896549
@@ -45,9 +45,8 @@
 public:
     explicit SelectionToggle(QWidget* parent);
     virtual ~SelectionToggle();
-    virtual QSize sizeHint() const;
 
-    virtual int offset() { return 16; }
+    virtual int offset(Test*) { return 17; }
     bool shouldShow(Test*);
 
 protected:
--- trunk/KDE/kdevplatform/veritas/internal/test_p.h #896548:896549
@@ -71,7 +71,7 @@
     bool needVerboseToggle;
     bool needSelectionToggle;
     bool m_isRunning;
-
+    bool supportsToSource;
     static const int columnCount;
 };
 
--- trunk/KDE/kdevplatform/veritas/internal/verbosetoggle.cpp #896548:896549
@@ -19,21 +19,16 @@
  ***************************************************************************/
 
 #include "verbosetoggle.h"
+#include "veritas/test.h"
 
-#include <QPainter>
-#include <QPaintEvent>
-#include <QRect>
-#include <QTimer>
+#include <QEvent>
 #include <QTimeLine>
-
 #include <KDebug>
 #include <KGlobalSettings>
-#include <KIcon>
 #include <KIconLoader>
-#include <KIconEffect>
 #include <KLocale>
-#include "veritas/test.h"
 
+
 using Veritas::Test;
 using Veritas::VerboseToggle;
 using Veritas::OverlayButton;
@@ -45,8 +40,6 @@
     parent->installEventFilter(this);
     resize(sizeHint());
     setIconOverlay();
-    connect(this, SIGNAL(toggled(bool)),
-            this, SLOT(setIconOverlay()));
     connect(KGlobalSettings::self(), SIGNAL(iconChanged(int)),
             this, SLOT(refreshIcon()));
     setToolTip(i18nc("@info:tooltip", "Verbose Output"));
@@ -56,11 +49,6 @@
 {
 }
 
-QSize VerboseToggle::sizeHint() const
-{
-    return QSize(16, 16);
-}
-
 bool VerboseToggle::eventFilter(QObject* obj, QEvent* event)
 {
     if ((obj == parent()) && (event->type() == QEvent::Leave)) {
@@ -91,7 +79,7 @@
 void VerboseToggle::setIconOverlay()
 {
     m_icon = KIconLoader::global()->loadIcon(
-        "document-open",
+        "go-next-page",
         KIconLoader::NoGroup,
         KIconLoader::SizeSmall);
     update();
--- trunk/KDE/kdevplatform/veritas/internal/verbosetoggle.h #896548:896549
@@ -46,10 +46,9 @@
 public:
     explicit VerboseToggle(QWidget* parent);
     virtual ~VerboseToggle();
-    virtual QSize sizeHint() const;
 
     virtual bool shouldShow(Test*);
-    virtual int offset() { return 32; }
+    virtual int offset(Test*) { return 34; }
 
 protected:
     virtual bool eventFilter(QObject* obj, QEvent* event);
--- trunk/KDE/kdevplatform/veritas/itestrunner.cpp #896548:896549
@@ -167,6 +167,7 @@
 
     connect(d->window->ui()->actionReload, SIGNAL(triggered(bool)),
             this, SLOT(reload()));
+    connect(d->window, SIGNAL(requestReload()), SLOT(reload()));
 
     reload();
     return d->window;
--- trunk/KDE/kdevplatform/veritas/test.cpp #896548:896549
@@ -67,8 +67,13 @@
     d->check();
     d->needVerboseToggle = false;
     d->needSelectionToggle = false;
+    d->supportsToSource = false;
 }
 
+void Test::toSource() const
+{
+}
+
 QString Test::name() const
 {
     return d->name;
@@ -77,6 +82,17 @@
 void Test::kill()
 {}
 
+bool Test::supportsToSource() const
+{
+    return d->supportsToSource;
+}
+
+void Test::setSupportsToSource(bool value)
+{
+    d->supportsToSource = value;
+}
+
+
 KJob* Test::createVerboseOutputJob()
 {
     return 0;
--- trunk/KDE/kdevplatform/veritas/test.h #896548:896549
@@ -66,6 +66,7 @@
 Q_OBJECT
 Q_PROPERTY(bool verboseToggle READ needVerboseToggle WRITE setVerboseToggle)
 Q_PROPERTY(bool selectionToggle READ needSelectionToggle WRITE setSelectionToggle)
+Q_PROPERTY(bool toSource READ supportsToSource WRITE setSupportsToSource)
 
 public Q_SLOTS:
 
@@ -78,7 +79,12 @@
     void setVerboseToggle(bool);
     bool needSelectionToggle() const;
     void setSelectionToggle(bool);
+    bool supportsToSource() const;
+    void setSupportsToSource(bool);
 
+    /*! Open sourcelocation, to be implemented by concrete tests */
+    virtual void toSource() const;
+
     /*! Factory method that constructs a blank root test. Always use
      *  this method to construct test-tree roots. */
     static Test* createRoot();
--- trunk/KDE/kdevplatform/veritas/testexecutableinfo.cpp #896548:896549
@@ -89,3 +89,13 @@
     m_workingDirectory = dir;
 }
 
+void TestExecutableInfo::setSource(const KUrl& source)
+{
+    m_source = source;
+}
+
+KUrl TestExecutableInfo::source() const
+{
+    return m_source;
+}
+
--- trunk/KDE/kdevplatform/veritas/testexecutableinfo.h #896548:896549
@@ -51,12 +51,16 @@
     bool hasProperty(const QString& key) const;
     QVariant property(const QString& key) const;
 
+    void setSource(const KUrl& url);
+    KUrl source() const;
+
 private:
     QString m_command;
     QMap<QString, QVariant> m_properties;
     QStringList m_arguments;
     KUrl m_workingDirectory;
     QString m_name;
+    KUrl m_source;
 };
 
 } // Veritas
--- trunk/KDE/kdevplatform/veritas/tests/CMakeLists.txt #896548:896549
@@ -1,4 +1,5 @@
 set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} )
+include_directories(..)
 
 macro(kdev_add_test test_EXEC)
     set(test_SRCS ${ARGN})
@@ -6,7 +7,7 @@
     kde4_add_unit_test(veritas-${test_EXEC} ${test_SRCS})
     target_link_libraries(veritas-${test_EXEC}
         ${QT_QTTEST_LIBRARY}
-		${QT_QTGUI_LIBRARY}
+        ${QT_QTGUI_LIBRARY}
         ${KDE4_KDECORE_LIBS}
         kdevplatformveritas)
 endmacro(kdev_add_test)
--- trunk/KDE/kdevplatform/veritas/tests/runnerwindowtest.cpp #896548:896549
@@ -164,6 +164,7 @@
 void RunnerWindowTest::startItems()
 {
     runAllTests();
+    window->show();
 
     // check they got indeed executed
     // the rows of items that got executed are stored
[prev in list] [next in list] [prev in thread] [next in thread] 

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