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(&mActionSettings, SIGNAL(triggered()), this, SLOT(ProgramSettings()));
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(&mThread, SIGNAL(Done()), this, SLOT(CheckDone()));
LoadSettings();
@ -101,6 +108,12 @@ void MainWindow::LoadSettings()
mActionShowStyle.setChecked(mSettings.value(tr("Show style"), true).toBool());
mActionShowUnused.setChecked(mSettings.value(tr("Show unused"), 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()
@ -254,3 +267,28 @@ void MainWindow::EnableCheckButtons(bool 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 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
*

View File

@ -63,20 +63,32 @@ void ResultsTree::AddErrorItem(const QString &file,
if (realfile.isEmpty())
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;
fileitem = CreateItem(realfile);
mModel.appendRow(fileitem);
AddItem(mItems.size()-1);
}
}
QList<QStandardItem*> list;
list << CreateItem(severity);
list << CreateItem(QString("%1").arg(lines[0]));
list << CreateItem(message);
fileitem->appendRow(list);
ShowTypes ResultsTree::SeverityToShowType(const QString &severity)
{
if (severity == "all")
return SHOW_ALL;
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)
@ -90,6 +102,7 @@ QStandardItem *ResultsTree::FindFileItem(const QString &name)
void ResultsTree::Clear()
{
mModel.removeRows(0, mModel.rowCount());
mItems.clear();
}
void ResultsTree::LoadSettings()
@ -110,3 +123,71 @@ void ResultsTree::SaveSettings()
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 <QStandardItem>
#include <QSettings>
#include "common.h"
/**
* @brief Cppcheck's results are shown in this tree
@ -55,7 +55,23 @@ public:
*
*/
void Clear();
void ShowResults(ShowTypes type, bool show);
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
* Colum widths
@ -95,6 +111,8 @@ protected:
*
*/
QSettings &mSettings;
bool mShowTypes[SHOW_NONE];
private:
};

View File

@ -63,3 +63,8 @@ void ResultsView::Error(const QString &file,
{
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 "../src/errorlogger.h"
#include "resultstree.h"
#include "common.h"
/**
* @brief Widget to show cppcheck progressbar and result
@ -35,9 +37,12 @@ class ResultsView : public QWidget
{
Q_OBJECT
public:
ResultsView(QSettings &settings);
virtual ~ResultsView();
void ShowResults(ShowTypes type, bool show);
/**
* @brief Clear results
*