3 #include "AbstractFilterSelector.h"
11 #include <QPushButton>
12 #include <QWriteLocker>
14 #include "AbstractFilter.h"
15 #include "PointIdFilter.h"
24 AbstractFilterSelector::AbstractFilterSelector() {
29 AbstractFilterSelector::~AbstractFilterSelector() {
34 bool AbstractFilterSelector::hasFilter()
const {
35 return m_filter != NULL;
39 bool AbstractFilterSelector::hasFilter(
40 bool (AbstractFilter::*meth)()
const)
const {
41 return m_filter && (m_filter->*meth)();
45 QString AbstractFilterSelector::getDescription(
46 QString(AbstractFilter::*meth)()
const)
const {
49 description = (m_filter->*meth)();
55 AbstractFilterSelector &AbstractFilterSelector::operator=(
56 const AbstractFilterSelector &other) {
57 getSelector()->setCurrentIndex(other.getSelector()->currentIndex());
58 if (m_filter && other.m_filter)
59 setFilter(other.m_filter->clone());
65 void AbstractFilterSelector::nullify() {
73 void AbstractFilterSelector::createSelector() {
74 m_closeButton =
new QPushButton;
75 m_closeButton->setIcon(QIcon(
":close"));
76 connect(m_closeButton, SIGNAL(clicked()),
this, SLOT(sendClose()));
79 m_selector->addItem(
"---- select ----");
80 m_selector->insertSeparator(m_selector->count());
81 connect(m_selector, SIGNAL(currentIndexChanged(
int)),
82 this, SLOT(changeFilter(
int)));
84 m_mainLayout =
new QHBoxLayout;
85 m_mainLayout->setContentsMargins(0, 0, 0, 0);
86 m_mainLayout->addWidget(m_closeButton);
87 m_mainLayout->addWidget(m_selector);
88 m_mainLayout->addStretch();
89 m_mainLayout->setAlignment(m_closeButton, Qt::AlignTop);
90 m_mainLayout->setAlignment(m_selector, Qt::AlignTop);
93 setLayout(m_mainLayout);
97 QComboBox *AbstractFilterSelector::getSelector()
const {
102 QHBoxLayout *AbstractFilterSelector::getMainLayout()
const {
107 AbstractFilter *AbstractFilterSelector::getFilter()
const {
112 void AbstractFilterSelector::setFilter(AbstractFilter *someFilter) {
118 m_filter = someFilter;
119 connect(getFilter(), SIGNAL(filterChanged()),
120 this, SIGNAL(filterChanged()));
121 getMainLayout()->insertWidget(2, getFilter());
125 void AbstractFilterSelector::deleteFilter() {
135 void AbstractFilterSelector::sendClose() {