Unity Scopes API
RadioButtonsFilter.h
1 /*
2  * Copyright (C) 2014 Canonical Ltd
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License version 3 as
6  * published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by: Pawel Stolowski <pawel.stolowski@canonical.com>
17  */
18 
19 #pragma once
20 
21 #include <unity/scopes/FilterBase.h>
22 #include <unity/scopes/FilterOption.h>
23 
24 namespace unity
25 {
26 
27 namespace scopes
28 {
29 
30 class FilterState;
31 
32 namespace internal
33 {
34 
35 class RadioButtonsFilterImpl;
36 
37 }
38 
39 namespace experimental
40 {
41 
47 class UNITY_API RadioButtonsFilter : public FilterBase
48 {
49 public:
51  UNITY_DEFINES_PTRS(RadioButtonsFilter);
53 
62  static RadioButtonsFilter::UPtr create(std::string const& id, std::string const& label);
63 
71  FilterOption::SCPtr add_option(std::string const& id, std::string const& label);
72 
77  std::string label() const;
78 
83  FilterOption::SCPtr active_option(FilterState const& filter_state) const;
84 
90  bool has_active_option(FilterState const& filter_state) const;
91 
92 
97  std::list<FilterOption::SCPtr> options() const;
98 
106  void update_state(FilterState& filter_state, FilterOption::SCPtr option, bool active) const;
107 
114  static void update_state(FilterState& filter_state, std::string const& filter_id, std::string const& option_id, bool value);
115 
116 private:
117  RadioButtonsFilter(internal::RadioButtonsFilterImpl*);
118  internal::RadioButtonsFilterImpl* fwd() const;
119  friend class internal::RadioButtonsFilterImpl;
120 };
121 
122 } // namespace experimental
123 
124 } // namespace scopes
125 
126 } // namespace unity
Top-level namespace for all things Unity-related.
Definition: Version.h:49
Definition: ActionMetadata.h:31