9#include "AbstractFilterSelector.h"
18#include <QWriteLocker>
20#include "AbstractFilter.h"
22#include "PointIdFilter.h"
30 AbstractFilterSelector::AbstractFilterSelector() {
35 AbstractFilterSelector::~AbstractFilterSelector() {
40 bool AbstractFilterSelector::hasFilter()
const {
41 return m_filter != NULL;
45 bool AbstractFilterSelector::hasFilter(
bool (AbstractFilter::*meth)() const) const {
46 return m_filter && (m_filter->*meth)();
50 QString AbstractFilterSelector::getDescription(QString(AbstractFilter::*meth)() const) const {
53 description = (m_filter->*meth)();
60 AbstractFilterSelector &AbstractFilterSelector::operator=(
const AbstractFilterSelector &other) {
61 getSelector()->setCurrentIndex(other.getSelector()->currentIndex());
62 if (m_filter && other.m_filter) {
63 setFilter(other.m_filter->clone());
70 void AbstractFilterSelector::nullify() {
78 void AbstractFilterSelector::createSelector() {
79 m_closeButton =
new QPushButton;
80 m_closeButton->setIcon(QIcon(FileName(
"$ISISROOT/appdata/images/icons/editdelete.png").expanded()));
81 connect(m_closeButton, SIGNAL(clicked()),
this, SLOT(sendClose()));
84 m_selector->addItem(
"---- select ----");
85 m_selector->insertSeparator(m_selector->count());
86 connect(m_selector, SIGNAL(currentIndexChanged(
int)),
87 this, SLOT(changeFilter(
int)));
89 m_mainLayout =
new QHBoxLayout;
90 m_mainLayout->setContentsMargins(0, 0, 0, 0);
91 m_mainLayout->addWidget(m_closeButton);
92 m_mainLayout->addWidget(m_selector);
93 m_mainLayout->addStretch();
94 m_mainLayout->setAlignment(m_closeButton, Qt::AlignTop);
95 m_mainLayout->setAlignment(m_selector, Qt::AlignTop);
98 setLayout(m_mainLayout);
102 QComboBox *AbstractFilterSelector::getSelector()
const {
107 QHBoxLayout *AbstractFilterSelector::getMainLayout()
const {
112 AbstractFilter *AbstractFilterSelector::getFilter()
const {
117 void AbstractFilterSelector::setFilter(AbstractFilter *someFilter) {
123 m_filter = someFilter;
124 connect(getFilter(), SIGNAL(filterChanged()),
125 this, SIGNAL(filterChanged()));
126 getMainLayout()->insertWidget(2, getFilter());
130 void AbstractFilterSelector::deleteFilter() {
138 void AbstractFilterSelector::sendClose() {
This is free and unencumbered software released into the public domain.