@@ -20,8 +20,11 @@
2020// Self
2121#include "ratingsfilter.h"
2222
23+// local
24+#include "genericlistmodel.h"
25+
2326RatingsFilter::RatingsFilter(QObject *parent) :
24− Filter(parent), m_unityRatingsFilter(NULL)
27+ Filter(parent), m_unityRatingsFilter(NULL), m_options(nullptr)
2528{
2629}
2730
@@ -30,6 +33,11 @@ float RatingsFilter::rating() const
3033 return m_unityRatingsFilter->rating();
3134}
3235
36+GenericListModel* RatingsFilter::options() const
37+{
38+ return m_options;
39+}
40+
3341void RatingsFilter::setRating(float rating)
3442{
3543 m_unityRatingsFilter->rating = rating;
@@ -44,8 +52,27 @@ void RatingsFilter::setUnityFilter(unity::dash::Filter::Ptr filter)
4452 Filter::setUnityFilter(filter);
4553 m_unityRatingsFilter = std::dynamic_pointer_cast<unity::dash::RatingsFilter>(m_unityFilter);
4654
55+ if (m_options) {
56+ delete m_options;
57+ }
58+
59+ m_options = new GenericListModel(this);
60+ for (int i=1; i<=5; i++) {
61+ auto opt = new RatingFilterOption(QString::number(i), i*0.2f, this);
62+ connect(opt, SIGNAL(activeChanged(bool)), this, SLOT(onActiveChanged()));
63+ m_options->addOption(opt);
64+ }
65+
4766 /* Property change signals */
4867 m_signals << m_unityRatingsFilter->rating.changed.connect(sigc::mem_fun(this, &RatingsFilter::ratingChanged));
4968}
5069
70+void RatingsFilter::onActiveChanged()
71+{
72+ RatingFilterOption *option = dynamic_cast<RatingFilterOption*>(QObject::sender());
73+ if (option != nullptr) {
74+ setRating(option->value());
75+ }
76+}
77+
5178#include "ratingsfilter.moc"