Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef _nsRadioVisitor_h__
8 : #define _nsRadioVisitor_h__
9 :
10 : #include "mozilla/Attributes.h"
11 : #include "nsIRadioVisitor.h"
12 :
13 : class nsIFormControl;
14 :
15 : /**
16 : * nsRadioVisitor is the base class implementing nsIRadioVisitor and inherited
17 : * by all radio visitors.
18 : */
19 : class nsRadioVisitor : public nsIRadioVisitor
20 : {
21 : protected:
22 0 : virtual ~nsRadioVisitor() { }
23 :
24 : public:
25 0 : nsRadioVisitor() { }
26 :
27 : NS_DECL_ISUPPORTS
28 :
29 : virtual bool Visit(nsIFormControl* aRadio) override = 0;
30 : };
31 :
32 : /**
33 : * The following declarations are radio visitors inheriting from nsRadioVisitor.
34 : */
35 :
36 : /**
37 : * nsRadioSetCheckedChangedVisitor is calling SetCheckedChanged with the given
38 : * parameter to all radio elements in the group.
39 : */
40 0 : class nsRadioSetCheckedChangedVisitor : public nsRadioVisitor
41 : {
42 : public:
43 0 : explicit nsRadioSetCheckedChangedVisitor(bool aCheckedChanged)
44 0 : : mCheckedChanged(aCheckedChanged)
45 0 : { }
46 :
47 : virtual bool Visit(nsIFormControl* aRadio) override;
48 :
49 : protected:
50 : bool mCheckedChanged;
51 : };
52 :
53 : /**
54 : * nsRadioGetCheckedChangedVisitor is getting the current checked changed value.
55 : * Getting it from one radio element is the group is enough given that all
56 : * elements should have the same value.
57 : */
58 0 : class nsRadioGetCheckedChangedVisitor : public nsRadioVisitor
59 : {
60 : public:
61 0 : nsRadioGetCheckedChangedVisitor(bool* aCheckedChanged,
62 : nsIFormControl* aExcludeElement)
63 0 : : mCheckedChanged(aCheckedChanged)
64 0 : , mExcludeElement(aExcludeElement)
65 0 : { }
66 :
67 : virtual bool Visit(nsIFormControl* aRadio) override;
68 :
69 : protected:
70 : bool* mCheckedChanged;
71 : nsIFormControl* mExcludeElement;
72 : };
73 :
74 : /**
75 : * nsRadioSetValueMissingState is calling SetValueMissingState with the given
76 : * parameter to all radio elements in the group.
77 : * It is also calling ContentStatesChanged if needed.
78 : */
79 0 : class nsRadioSetValueMissingState : public nsRadioVisitor
80 : {
81 : public:
82 0 : nsRadioSetValueMissingState(nsIFormControl* aExcludeElement,
83 : bool aValidity, bool aNotify)
84 0 : : mExcludeElement(aExcludeElement)
85 : , mValidity(aValidity)
86 0 : , mNotify(aNotify)
87 0 : { }
88 :
89 : virtual bool Visit(nsIFormControl* aRadio) override;
90 :
91 : protected:
92 : nsIFormControl* mExcludeElement;
93 : bool mValidity;
94 : bool mNotify;
95 : };
96 :
97 0 : class nsRadioUpdateStateVisitor : public nsRadioVisitor
98 : {
99 : public:
100 0 : explicit nsRadioUpdateStateVisitor(nsIFormControl* aExcludeElement)
101 0 : : mExcludeElement(aExcludeElement)
102 0 : { }
103 :
104 : virtual bool Visit(nsIFormControl* aRadio) override;
105 :
106 : protected:
107 : nsIFormControl* mExcludeElement;
108 : };
109 :
110 : #endif // _nsRadioVisitor_h__
111 :
|