on 3657461 help sign in
unity8/plugins/Unity/filter.cpp
132 lines 3.8 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 "filter.h"
23// local
24#include "ratingsfilter.h"
25#include "radiooptionfilter.h"
26#include "checkoptionfilter.h"
27#include "multirangefilter.h"
29// libunity-core
30#include <UnityCore/Filter.h>
31#include <UnityCore/RatingsFilter.h>
32#include <UnityCore/RadioOptionFilter.h>
33#include <UnityCore/CheckOptionFilter.h>
34#include <UnityCore/MultiRangeFilter.h>
36// Qt
37#include <QDebug>
39Filter::Filter(QObject *parent) :
40 QObject(parent)
44QString Filter::id() const
46 return QString::fromStdString(m_unityFilter->id());
49QString Filter::name() const
51 return QString::fromStdString(m_unityFilter->name());
54QString Filter::iconHint() const
56 return QString::fromStdString(m_unityFilter->icon_hint());
59QString Filter::rendererName() const
61 return QString::fromStdString(m_unityFilter->renderer_name());
64bool Filter::visible() const
66 return m_unityFilter->visible();
69bool Filter::collapsed() const
71 return m_unityFilter->collapsed();
74bool Filter::filtering() const
76 return m_unityFilter->filtering();
79void Filter::clear()
81 m_unityFilter->Clear();
85void Filter::setUnityFilter(unity::dash::Filter::Ptr unityFilter)
87 if (m_unityFilter != NULL) {
88 m_signals.disconnectAll();
89 }
91 m_unityFilter = unityFilter;
93 /* Property change signals */
94 m_signals << m_unityFilter->id.changed.connect(sigc::mem_fun(this, &Filter::idChanged))
95 << m_unityFilter->name.changed.connect(sigc::mem_fun(this, &Filter::nameChanged))
96 << m_unityFilter->icon_hint.changed.connect(sigc::mem_fun(this, &Filter::iconHintChanged))
97 << m_unityFilter->renderer_name.changed.connect(sigc::mem_fun(this, &Filter::rendererNameChanged))
98 << m_unityFilter->visible.changed.connect(sigc::mem_fun(this, &Filter::visibleChanged))
99 << m_unityFilter->collapsed.changed.connect(sigc::mem_fun(this, &Filter::collapsedChanged))
100 << m_unityFilter->filtering.changed.connect(sigc::mem_fun(this, &Filter::filteringChanged));
102 /* Signals forwarding */
103 m_signals << m_unityFilter->removed.connect(sigc::mem_fun(this, &Filter::removed));
106Filter* Filter::newFromUnityFilter(unity::dash::Filter::Ptr unityFilter)
108 Filter* filter;
110 if (typeid(*unityFilter) == typeid(unity::dash::RatingsFilter)) {
111 filter = new RatingsFilter;
112 } else if (typeid(*unityFilter) == typeid(unity::dash::CheckOptionFilter)) {
113 filter = new CheckOptionFilter;
114 } else if (typeid(*unityFilter) == typeid(unity::dash::RadioOptionFilter)) {
115 filter = new RadioOptionFilter;
116 } else if (typeid(*unityFilter) == typeid(unity::dash::MultiRangeFilter)) {
117 filter = new MultiRangeFilter;
118 } else {
119 qWarning() << "Filter of unknown type: " << typeid(*unityFilter).name();
120 filter = new Filter;
121 }
123 filter->setUnityFilter(unityFilter);
124 return filter;
127bool Filter::hasUnityFilter(unity::dash::Filter::Ptr unityFilter) const
129 return m_unityFilter == unityFilter;
132#include "filter.moc"