@@ -47,6 +47,7 @@ void CombinedFilterOptions::initList(const std::vector<unity::dash::FilterOption
4747 sigc::signal<void, unity::dash::FilterOption::Ptr> itemAddedSignal,
4848 sigc::signal<void, unity::dash::FilterOption::Ptr> itemRemovedSignal)
4949{
50+ // combine options, e.g. A, B, C becomes A-B, B-C, C
5051 unsigned int i = 0;
5152 while (i < list.size()) {
5253 unity::dash::FilterOption::Ptr option1 = list[i];
@@ -54,17 +55,36 @@ void CombinedFilterOptions::initList(const std::vector<unity::dash::FilterOption
5455 if (i < list.size()-1) {
5556 option2 = list[i+1];
5657 }
57− auto co = new CombinedFilterOption(option1, option2);
58+ auto co = new CombinedFilterOption(option1);
59+ connect(co, SIGNAL(activeChanged(bool)), this, SLOT(onActiveChanged(bool)));
60+ addOption(co);
5861 ++i;
5962 }
6063 if (list.size() > 1) {
61− auto co = new CombinedFilterOption(list[i], NULL);
64+ auto co = new CombinedFilterOption(list[i-1], NULL);
65+ addOption(co);
6266 }
6367
6468 itemAddedSignal.connect(sigc::mem_fun(this, &CombinedFilterOptions::onItemAdded));
6569 itemRemovedSignal.connect(sigc::mem_fun(this, &CombinedFilterOptions::onItemRemoved));
6670}
6771
72+void CombinedFilterOptions::addOption(CombinedFilterOption *option)
73+{
74+ int index = m_list.count();
75+ beginInsertRows(QModelIndex(), index, index);
76+ m_list.insert(index, option);
77+ endInsertRows();
78+}
79+
80+void CombinedFilterOptions::onActiveChanged(bool state)
81+{
82+ CombinedFilterOption *option = dynamic_cast<CombinedFilterOption*>(QObject::sender());
83+ if (option) {
84+ //TODO: de-activate all others?
85+ }
86+}
87+
6888void CombinedFilterOptions::onItemAdded(unity::dash::FilterOption::Ptr item)
6989{
7090}