subsurface/qt-ui/simplewidgets.h
Thiago Macieira b22f1da59e Fix all leak-at-exit from singletons in Subsurface
Subsurface creates a lot of singleton instances on demand, but nothing
ever deleted them. Since they are singletons, these memory allocations
are technically not leaks. However, they clutter the output in valgrind
and other memory analysers, hiding the real issues.

The solution is to delete these items at exit. For the models and for
gettextFromC, the solution is to use a QScopedPointer, which will delete
its payload when it gets destroyed. For the dialogs and other widgets,
we can't do that: they need to be deleted before QApplication exits, so
we just set the parent in all of them to the main window.

Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2013-11-30 09:28:42 -08:00

59 lines
1.3 KiB
C++

#ifndef SIMPLEWIDGETS_H
#define SIMPLEWIDGETS_H
class MinMaxAvgWidgetPrivate;
class QAbstractButton;
#include <QWidget>
#include <QDialog>
#include "ui_renumber.h"
#include "ui_shifttimes.h"
class MinMaxAvgWidget : public QWidget{
Q_OBJECT
Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
Q_PROPERTY(double maximum READ maximum WRITE setMaximum)
Q_PROPERTY(double average READ average WRITE setAverage)
public:
MinMaxAvgWidget(QWidget *parent);
~MinMaxAvgWidget();
double minimum() const;
double maximum() const;
double average() const;
void setMinimum(double minimum);
void setMaximum(double maximum);
void setAverage(double average);
void setMinimum(const QString& minimum);
void setMaximum(const QString& maximum);
void setAverage(const QString& average);
void clear();
private:
QScopedPointer<MinMaxAvgWidgetPrivate> d;
};
class RenumberDialog : public QDialog {
Q_OBJECT
public:
static RenumberDialog *instance();
private slots:
void buttonClicked(QAbstractButton *button);
private:
explicit RenumberDialog(QWidget *parent);
Ui::RenumberDialog ui;
};
class ShiftTimesDialog : public QDialog {
Q_OBJECT
public:
static ShiftTimesDialog *instance();
private slots:
void buttonClicked(QAbstractButton *button);
private:
explicit ShiftTimesDialog(QWidget *parent);
Ui::ShiftTimesDialog ui;
};
bool isGnome3Session();
#endif