Merged gui branch to master.

This commit is contained in:
Vesa Pikki 2009-03-22 19:39:44 +02:00
parent c6e8d61db3
commit 0953995ee3
7 changed files with 220 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

@ -34,6 +34,11 @@ MainWindow::MainWindow() :
mActionReCheck(tr("Recheck files"), this),
mActionCheckDirectory(tr("Check &directory"), this),
mActionSettings(tr("&Settings"), this),
mActionShowAll(tr("Show &more errors"), this),
mActionShowSecurity(tr("Show &security errors"), this),
mActionShowStyle(tr("Show s&tyle errors"), this),
mActionShowUnused(tr("Show errors on &unused functions"), this),
mActionShowErrors(tr("Show &common errors"), this),
mResults(mSettings)
{
QMenu *menu = menuBar()->addMenu(tr("&File"));
@ -44,6 +49,19 @@ MainWindow::MainWindow() :
menu->addSeparator();
menu->addAction(&mActionExit);
QMenu *menuview = menuBar()->addMenu(tr("&View"));
mActionShowAll.setCheckable(true);
mActionShowSecurity.setCheckable(true);
mActionShowStyle.setCheckable(true);
mActionShowUnused.setCheckable(true);
mActionShowErrors.setCheckable(true);
menuview->addAction(&mActionShowAll);
menuview->addAction(&mActionShowSecurity);
menuview->addAction(&mActionShowStyle);
menuview->addAction(&mActionShowUnused);
menuview->addAction(&mActionShowErrors);
QMenu *menuprogram = menuBar()->addMenu(tr("&Program"));
menuprogram->addAction(&mActionSettings);
@ -55,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();
@ -77,6 +102,18 @@ void MainWindow::LoadSettings()
resize(mSettings.value(tr("Window width"), 800).toInt(),
mSettings.value(tr("Window height"), 600).toInt());
}
mActionShowAll.setChecked(mSettings.value(tr("Show all"), true).toBool());
mActionShowSecurity.setChecked(mSettings.value(tr("Show security"), true).toBool());
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()
@ -84,6 +121,12 @@ void MainWindow::SaveSettings()
mSettings.setValue(tr("Window width"), size().width());
mSettings.setValue(tr("Window height"), size().height());
mSettings.setValue(tr("Window maximized"), isMaximized());
mSettings.setValue(tr("Show all"), mActionShowAll.isChecked());
mSettings.setValue(tr("Show security"), mActionShowSecurity.isChecked());
mSettings.setValue(tr("Show style"), mActionShowStyle.isChecked());
mSettings.setValue(tr("Show unused"), mActionShowUnused.isChecked());
mSettings.setValue(tr("Show errors"), mActionShowErrors.isChecked());
}
@ -224,3 +267,29 @@ 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
*
@ -130,6 +136,13 @@ protected:
*/
QAction mActionSettings;
QAction mActionShowAll;
QAction mActionShowSecurity;
QAction mActionShowStyle;
QAction mActionShowUnused;
QAction mActionShowErrors;
/**
* @brief Results for checking

View File

@ -63,20 +63,33 @@ 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 +103,7 @@ QStandardItem *ResultsTree::FindFileItem(const QString &name)
void ResultsTree::Clear()
{
mModel.removeRows(0, mModel.rowCount());
mItems.clear();
}
void ResultsTree::LoadSettings()
@ -110,3 +124,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,24 @@ 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 +112,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
*