Factor out *Filter code into FilterBase base class

The TagFilter, BuddyFilter, SuitFilter and LocationFilter classes
all did essentially the same thing. Therefore, factor out common
code / objects into a base class FilterBase.

The new base class stores a pointer to the filter model. It was
felt that this is simpler than introducing virtual methods.

The only thing the *Filter classes now do is setting a label and
in one case a tooltip. Thus, in principle, they could be removed
completely, but let's keep them for now.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2017-12-23 14:17:23 +01:00 committed by Dirk Hohndel
parent 603e43f46e
commit 1a4e7ad0dd
2 changed files with 32 additions and 98 deletions

View file

@ -5,6 +5,7 @@
class MinMaxAvgWidgetPrivate;
class QAbstractButton;
class QNetworkReply;
class FilterModelBase;
#include <QWidget>
#include <QGroupBox>
@ -165,49 +166,39 @@ public:
Ui::FilterWidget2 ui;
};
class TagFilter : public QWidget {
Q_OBJECT
public:
TagFilter(QWidget *parent = 0);
class FilterBase : public QWidget {
protected:
FilterBase(FilterModelBase *model, QWidget *parent = 0);
FilterModelBase *model;
Ui::FilterWidget ui;
virtual void showEvent(QShowEvent *);
virtual void hideEvent(QHideEvent *);
private:
Ui::FilterWidget ui;
friend class MultiFilter;
};
class BuddyFilter : public QWidget {
class TagFilter : public FilterBase {
Q_OBJECT
public:
TagFilter(QWidget *parent = 0);
friend class MultiFilter;
};
class BuddyFilter : public FilterBase {
Q_OBJECT
public:
BuddyFilter(QWidget *parent = 0);
virtual void showEvent(QShowEvent *);
virtual void hideEvent(QHideEvent *);
private:
Ui::FilterWidget ui;
};
class SuitFilter : public QWidget {
class SuitFilter : public FilterBase {
Q_OBJECT
public:
SuitFilter(QWidget *parent = 0);
virtual void showEvent(QShowEvent *);
virtual void hideEvent(QHideEvent *);
private:
Ui::FilterWidget ui;
};
class LocationFilter : public QWidget {
class LocationFilter : public FilterBase {
Q_OBJECT
public:
LocationFilter(QWidget *parent = 0);
virtual void showEvent(QShowEvent *);
virtual void hideEvent(QHideEvent *);
private:
Ui::FilterWidget ui;
};
class TextHyperlinkEventFilter : public QObject {