Can now hide and show results based on cpp flags.

This commit is contained in:
Vesa Pikki 2009-03-22 19:37:26 +02:00
parent 592ff8ba3c
commit 856b3cd949
7 changed files with 180 additions and 11 deletions

16
gui/common.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef COMMON_H
#define COMMON_H
typedef enum
{
SHOW_ALL,
SHOW_STYLE,
SHOW_SECURITY,
SHOW_UNUSED,
SHOW_ERRORS,
SHOW_NONE
}
ShowTypes;
#endif

View File

@ -73,6 +73,13 @@ MainWindow::MainWindow() :
connect(&mActionCheckDirectory, SIGNAL(triggered()), this, SLOT(CheckDirectory())); connect(&mActionCheckDirectory, SIGNAL(triggered()), this, SLOT(CheckDirectory()));
connect(&mActionSettings, SIGNAL(triggered()), this, SLOT(ProgramSettings())); connect(&mActionSettings, SIGNAL(triggered()), this, SLOT(ProgramSettings()));
connect(&mActionClearResults, SIGNAL(triggered()), this, SLOT(ClearResults())); connect(&mActionClearResults, SIGNAL(triggered()), this, SLOT(ClearResults()));
connect(&mActionShowAll, SIGNAL(toggled(bool)), this, SLOT(ShowAll(bool)));
connect(&mActionShowSecurity, SIGNAL(toggled(bool)), this, SLOT(ShowSecurity(bool)));
connect(&mActionShowStyle, SIGNAL(toggled(bool)), this, SLOT(ShowStyle(bool)));
connect(&mActionShowUnused, SIGNAL(toggled(bool)), this, SLOT(ShowUnused(bool)));
connect(&mActionShowErrors, SIGNAL(toggled(bool)), this, SLOT(ShowErrors(bool)));
connect(&mActionReCheck, SIGNAL(triggered()), this, SLOT(ReCheck())); connect(&mActionReCheck, SIGNAL(triggered()), this, SLOT(ReCheck()));
connect(&mThread, SIGNAL(Done()), this, SLOT(CheckDone())); connect(&mThread, SIGNAL(Done()), this, SLOT(CheckDone()));
LoadSettings(); LoadSettings();
@ -101,6 +108,12 @@ void MainWindow::LoadSettings()
mActionShowStyle.setChecked(mSettings.value(tr("Show style"), true).toBool()); mActionShowStyle.setChecked(mSettings.value(tr("Show style"), true).toBool());
mActionShowUnused.setChecked(mSettings.value(tr("Show unused"), true).toBool()); mActionShowUnused.setChecked(mSettings.value(tr("Show unused"), true).toBool());
mActionShowErrors.setChecked(mSettings.value(tr("Show errors"), true).toBool()); mActionShowErrors.setChecked(mSettings.value(tr("Show errors"), true).toBool());
mResults.ShowResults(SHOW_ALL,mActionShowAll.isChecked());
mResults.ShowResults(SHOW_ERRORS,mActionShowErrors.isChecked());
mResults.ShowResults(SHOW_SECURITY,mActionShowSecurity.isChecked());
mResults.ShowResults(SHOW_STYLE,mActionShowStyle.isChecked());
mResults.ShowResults(SHOW_UNUSED,mActionShowUnused.isChecked());
} }
void MainWindow::SaveSettings() void MainWindow::SaveSettings()
@ -254,3 +267,28 @@ void MainWindow::EnableCheckButtons(bool enable)
mActionCheckDirectory.setEnabled(enable); mActionCheckDirectory.setEnabled(enable);
} }
void MainWindow::ShowAll(bool checked)
{
mResults.ShowResults(SHOW_ALL,checked);
}
void MainWindow::ShowSecurity(bool checked)
{
mResults.ShowResults(SHOW_SECURITY,checked);
}
void MainWindow::ShowStyle(bool checked)
{
mResults.ShowResults(SHOW_STYLE,checked);
}
void MainWindow::ShowUnused(bool checked)
{
mResults.ShowResults(SHOW_UNUSED,checked);
}
void MainWindow::ShowErrors(bool checked)
{
mResults.ShowResults(SHOW_ERRORS,checked);
}

View File

@ -52,6 +52,12 @@ public slots:
void ReCheck(); void ReCheck();
void ClearResults(); void ClearResults();
void ShowAll(bool checked);
void ShowSecurity(bool checked);
void ShowStyle(bool checked);
void ShowUnused(bool checked);
void ShowErrors(bool checked);
/** /**
* @brief Slot for check directory menu item * @brief Slot for check directory menu item
* *

View File

@ -63,20 +63,32 @@ void ResultsTree::AddErrorItem(const QString &file,
if (realfile.isEmpty()) if (realfile.isEmpty())
realfile = "Undefined file"; realfile = "Undefined file";
QStandardItem *fileitem = FindFileItem(realfile); ErrorItem item;
item.file = realfile;
item.type = SeverityToShowType(severity);
item.message = message;
item.files = files;
item.lines = lines;
mItems<<item;
if (!fileitem) if (mShowTypes[item.type])
{ {
//qDebug()<<"No previous error for file"<<realfile; AddItem(mItems.size()-1);
fileitem = CreateItem(realfile);
mModel.appendRow(fileitem);
} }
}
QList<QStandardItem*> list; ShowTypes ResultsTree::SeverityToShowType(const QString &severity)
list << CreateItem(severity); {
list << CreateItem(QString("%1").arg(lines[0])); if (severity == "all")
list << CreateItem(message); return SHOW_ALL;
fileitem->appendRow(list); if (severity == "error")
return SHOW_ERRORS;
if (severity == "style")
return SHOW_STYLE;
if (severity == "security")
return SHOW_SECURITY;
return SHOW_NONE;
} }
QStandardItem *ResultsTree::FindFileItem(const QString &name) QStandardItem *ResultsTree::FindFileItem(const QString &name)
@ -90,6 +102,7 @@ QStandardItem *ResultsTree::FindFileItem(const QString &name)
void ResultsTree::Clear() void ResultsTree::Clear()
{ {
mModel.removeRows(0, mModel.rowCount()); mModel.removeRows(0, mModel.rowCount());
mItems.clear();
} }
void ResultsTree::LoadSettings() void ResultsTree::LoadSettings()
@ -110,3 +123,71 @@ void ResultsTree::SaveSettings()
mSettings.setValue(temp, columnWidth(i)); mSettings.setValue(temp, columnWidth(i));
} }
} }
void ResultsTree::ShowResults(ShowTypes type, bool show)
{
if (type != SHOW_NONE)
{
if (mShowTypes[type] != show)
{
mShowTypes[type] = show;
RefreshTree();
}
}
}
void ResultsTree::RefreshTree()
{
mModel.removeRows(0, mModel.rowCount());
for (int i=0;i<mItems.size();i++)
{
if (mShowTypes[mItems[i].type])
{
AddItem(i);
}
}
}
QString ResultsTree::ShowTypeToString(ShowTypes type)
{
switch (type)
{
case SHOW_ALL:
return "all";
case SHOW_ERRORS:
return "error";
case SHOW_STYLE:
return "style";
case SHOW_SECURITY:
return "security";
case SHOW_UNUSED:
return "unused";
case SHOW_NONE:
return "none";
}
return "";
}
void ResultsTree::AddItem(int index)
{
if (index >= 0 && index < mItems.size())
{
QStandardItem *fileitem = FindFileItem(mItems[index].file);
if (!fileitem)
{
//qDebug()<<"No previous error for file"<<realfile;
fileitem = CreateItem(mItems[index].file);
mModel.appendRow(fileitem);
}
QList<QStandardItem*> list;
list << CreateItem(ShowTypeToString(mItems[index].type));
list << CreateItem(QString("%1").arg(mItems[index].lines[0]));
list << CreateItem(mItems[index].message);
fileitem->appendRow(list);
}
}

View File

@ -25,7 +25,7 @@
#include <QStandardItemModel> #include <QStandardItemModel>
#include <QStandardItem> #include <QStandardItem>
#include <QSettings> #include <QSettings>
#include "common.h"
/** /**
* @brief Cppcheck's results are shown in this tree * @brief Cppcheck's results are shown in this tree
@ -55,7 +55,23 @@ public:
* *
*/ */
void Clear(); void Clear();
void ShowResults(ShowTypes type, bool show);
protected: protected:
void AddItem(int index);
void RefreshTree();
ShowTypes SeverityToShowType(const QString &severity);
QString ShowTypeToString(ShowTypes type);
typedef struct {
QString file;
ShowTypes type;
QString message;
QStringList files;
QList<int> lines;
}ErrorItem;
QList<ErrorItem> mItems;
/** /**
* @brief Load all settings * @brief Load all settings
* Colum widths * Colum widths
@ -95,6 +111,8 @@ protected:
* *
*/ */
QSettings &mSettings; QSettings &mSettings;
bool mShowTypes[SHOW_NONE];
private: private:
}; };

View File

@ -63,3 +63,8 @@ void ResultsView::Error(const QString &file,
{ {
mTree->AddErrorItem(file, severity, message, files, lines); mTree->AddErrorItem(file, severity, message, files, lines);
} }
void ResultsView::ShowResults(ShowTypes type, bool show)
{
mTree->ShowResults(type,show);
}

View File

@ -26,6 +26,8 @@
#include <QProgressBar> #include <QProgressBar>
#include "../src/errorlogger.h" #include "../src/errorlogger.h"
#include "resultstree.h" #include "resultstree.h"
#include "common.h"
/** /**
* @brief Widget to show cppcheck progressbar and result * @brief Widget to show cppcheck progressbar and result
@ -35,9 +37,12 @@ class ResultsView : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
ResultsView(QSettings &settings); ResultsView(QSettings &settings);
virtual ~ResultsView(); virtual ~ResultsView();
void ShowResults(ShowTypes type, bool show);
/** /**
* @brief Clear results * @brief Clear results
* *