on e82caeb help sign in
unity8/plugins/Unity/checkoptionfilter.cpp
65 lines 2.2 kB history raw
1/*
2 * Copyright (C) 2011 Canonical, Ltd.
3 *
4 * Authors:
5 * Florian Boucault <florian.boucault@canonical.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; version 3.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
20// Self
21#include "checkoptionfilter.h"
23// local
24#include "unityoptionsmodel.h"
26CheckOptionFilter::CheckOptionFilter(QObject *parent) :
27 Filter(parent),
28 m_unityCheckOptionFilter(nullptr),
29 m_options(nullptr)
33GenericOptionsModel* CheckOptionFilter::options() const
35 return m_options;
38void CheckOptionFilter::setUnityFilter(unity::dash::Filter::Ptr filter)
40 Filter::setUnityFilter(filter);
41 m_unityCheckOptionFilter = std::dynamic_pointer_cast<unity::dash::CheckOptionFilter>(m_unityFilter);
42 onOptionsChanged(m_unityCheckOptionFilter->options);
45void CheckOptionFilter::onOptionsChanged(unity::dash::CheckOptionFilter::CheckOptions options)
47 if (m_options != nullptr) {
48 m_signals.disconnectAll();
49 delete m_options;
50 m_options = nullptr;
51 }
53 m_options = new UnityOptionsModel(this, options,
54 m_unityCheckOptionFilter->option_added,
55 m_unityCheckOptionFilter->option_removed,
56 m_unityCheckOptionFilter->show_all_button);
58 connect(m_options, SIGNAL(activeChanged(AbstractFilterOption *)), m_options, SLOT(ensureTheOnlyActive(AbstractFilterOption *)));
59 connect(m_options, SIGNAL(showAllActivated()), this, SLOT(clear()));
61 /* Property change signals */
62 m_signals << m_unityCheckOptionFilter->options.changed.connect(sigc::mem_fun(this, &CheckOptionFilter::onOptionsChanged));
64 Q_EMIT optionsChanged();