diff options
-rw-r--r-- | desktop-widgets/simplewidgets.cpp | 87 | ||||
-rw-r--r-- | desktop-widgets/simplewidgets.h | 39 |
2 files changed, 30 insertions, 96 deletions
diff --git a/desktop-widgets/simplewidgets.cpp b/desktop-widgets/simplewidgets.cpp index fbc0a941d..addbda6af 100644 --- a/desktop-widgets/simplewidgets.cpp +++ b/desktop-widgets/simplewidgets.cpp @@ -500,109 +500,52 @@ void DiveComponentSelection::buttonClicked(QAbstractButton *button) } } -TagFilter::TagFilter(QWidget *parent) : QWidget(parent) +FilterBase::FilterBase(FilterModelBase *model_, QWidget *parent) + : QWidget(parent) + , model(model_) { ui.setupUi(this); - ui.label->setText(tr("Tags: ")); #if QT_VERSION >= 0x050200 ui.filterInternalList->setClearButtonEnabled(true); #endif QSortFilterProxyModel *filter = new QSortFilterProxyModel(); - filter->setSourceModel(TagFilterModel::instance()); + filter->setSourceModel(model); filter->setFilterCaseSensitivity(Qt::CaseInsensitive); connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString))); ui.filterList->setModel(filter); } -void TagFilter::showEvent(QShowEvent *event) +void FilterBase::showEvent(QShowEvent *event) { - MultiFilterSortModel::instance()->addFilterModel(TagFilterModel::instance()); + MultiFilterSortModel::instance()->addFilterModel(model); QWidget::showEvent(event); } -void TagFilter::hideEvent(QHideEvent *event) +void FilterBase::hideEvent(QHideEvent *event) { - MultiFilterSortModel::instance()->removeFilterModel(TagFilterModel::instance()); + MultiFilterSortModel::instance()->removeFilterModel(model); QWidget::hideEvent(event); } -BuddyFilter::BuddyFilter(QWidget *parent) : QWidget(parent) -{ - ui.setupUi(this); - ui.label->setText(tr("Person: ")); - ui.label->setToolTip(tr("Searches for buddies and divemasters")); -#if QT_VERSION >= 0x050200 - ui.filterInternalList->setClearButtonEnabled(true); -#endif - QSortFilterProxyModel *filter = new QSortFilterProxyModel(); - filter->setSourceModel(BuddyFilterModel::instance()); - filter->setFilterCaseSensitivity(Qt::CaseInsensitive); - connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString))); - ui.filterList->setModel(filter); -} - -void BuddyFilter::showEvent(QShowEvent *event) +TagFilter::TagFilter(QWidget *parent) : FilterBase(TagFilterModel::instance(), parent) { - MultiFilterSortModel::instance()->addFilterModel(BuddyFilterModel::instance()); - QWidget::showEvent(event); + ui.label->setText(tr("Tags: ")); } -void BuddyFilter::hideEvent(QHideEvent *event) +BuddyFilter::BuddyFilter(QWidget *parent) : FilterBase(BuddyFilterModel::instance(), parent) { - MultiFilterSortModel::instance()->removeFilterModel(BuddyFilterModel::instance()); - QWidget::hideEvent(event); + ui.label->setText(tr("Person: ")); + ui.label->setToolTip(tr("Searches for buddies and divemasters")); } -LocationFilter::LocationFilter(QWidget *parent) : QWidget(parent) +LocationFilter::LocationFilter(QWidget *parent) : FilterBase(LocationFilterModel::instance(), parent) { - ui.setupUi(this); ui.label->setText(tr("Location: ")); -#if QT_VERSION >= 0x050200 - ui.filterInternalList->setClearButtonEnabled(true); -#endif - QSortFilterProxyModel *filter = new QSortFilterProxyModel(); - filter->setSourceModel(LocationFilterModel::instance()); - filter->setFilterCaseSensitivity(Qt::CaseInsensitive); - connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString))); - ui.filterList->setModel(filter); } -void LocationFilter::showEvent(QShowEvent *event) +SuitFilter::SuitFilter(QWidget *parent) : FilterBase(SuitsFilterModel::instance(), parent) { - MultiFilterSortModel::instance()->addFilterModel(LocationFilterModel::instance()); - QWidget::showEvent(event); -} - -void LocationFilter::hideEvent(QHideEvent *event) -{ - MultiFilterSortModel::instance()->removeFilterModel(LocationFilterModel::instance()); - QWidget::hideEvent(event); -} - -SuitFilter::SuitFilter(QWidget *parent) : QWidget(parent) -{ - ui.setupUi(this); ui.label->setText(tr("Suits: ")); -#if QT_VERSION >= 0x050200 - ui.filterInternalList->setClearButtonEnabled(true); -#endif - QSortFilterProxyModel *filter = new QSortFilterProxyModel(); - filter->setSourceModel(SuitsFilterModel::instance()); - filter->setFilterCaseSensitivity(Qt::CaseInsensitive); - connect(ui.filterInternalList, SIGNAL(textChanged(QString)), filter, SLOT(setFilterFixedString(QString))); - ui.filterList->setModel(filter); -} - -void SuitFilter::showEvent(QShowEvent *event) -{ - MultiFilterSortModel::instance()->addFilterModel(SuitsFilterModel::instance()); - QWidget::showEvent(event); -} - -void SuitFilter::hideEvent(QHideEvent *event) -{ - MultiFilterSortModel::instance()->removeFilterModel(SuitsFilterModel::instance()); - QWidget::hideEvent(event); } MultiFilter::MultiFilter(QWidget *parent) : QWidget(parent) diff --git a/desktop-widgets/simplewidgets.h b/desktop-widgets/simplewidgets.h index 4f9746d98..22f1ddd62 100644 --- a/desktop-widgets/simplewidgets.h +++ b/desktop-widgets/simplewidgets.h @@ -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 *); + friend class MultiFilter; +}; -private: - Ui::FilterWidget ui; +class TagFilter : public FilterBase { + Q_OBJECT +public: + TagFilter(QWidget *parent = 0); friend class MultiFilter; }; -class BuddyFilter : public QWidget { +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 { |