libdrmconf 0.12.1
A library to program DMR radios.
Loading...
Searching...
No Matches
roamingzone.hh
1#ifndef ROAMINGZONE_HH
2#define ROAMINGZONE_HH
3
4#include <QAbstractListModel>
5#include "configreference.hh"
6#include "roamingchannel.hh"
7
15{
16 Q_OBJECT
17 Q_CLASSINFO("IdPrefix", "roam")
18
19
22 Q_PROPERTY(RoamingChannelRefList * channels READ channels SCRIPTABLE false)
23
24public:
26 Q_INVOKABLE explicit RoamingZone(QObject *parent=nullptr);
27
31 RoamingZone(const QString &name, QObject *parent = nullptr);
32
34 RoamingZone &operator =(const RoamingZone &other);
35 ConfigItem *clone() const;
36
38 int count() const;
39
41 void clear();
42
44 bool contains(const RoamingChannel *ch) const;
47 RoamingChannel *channel(int idx) const;
52 int addChannel(RoamingChannel *ch, int row=-1);
54 bool remChannel(int row);
56 bool remChannel(RoamingChannel *ch);
57
59 const RoamingChannelRefList *channels() const;
62
65 bool link(const YAML::Node &node, const Context &ctx, const ErrorStack &err);
68 bool populate(YAML::Node &node, const Context &context, const ErrorStack &err);
69
70protected:
73};
74
75
81{
82 Q_OBJECT
83
84protected:
87 explicit DefaultRoamingZone(QObject *parent=nullptr);
88
89public:
91 static DefaultRoamingZone *get();
92
93protected:
96};
97
98
103{
104 Q_OBJECT
105
106public:
108 explicit RoamingZoneList(QObject *parent=nullptr);
109
111 RoamingZone *zone(int idx) const;
112
113 int add(ConfigObject *obj, int row=-1, bool unique=true);
114
115public:
116 ConfigItem *allocateChild(const YAML::Node &node, ConfigItem::Context &ctx, const ErrorStack &err=ErrorStack());
117};
118
119#endif // ROAMINGZONE_HH
Parse context for config objects.
Definition configobject.hh:48
Base class for all configuration objects (channels, zones, contacts, etc).
Definition configobject.hh:40
List class for config objects.
Definition configobject.hh:349
Base class of all labeled and named objects.
Definition configobject.hh:199
QString name
The name of the object.
Definition configobject.hh:203
Dummy roaming zone class that represents the default roaming zone.
Definition roamingzone.hh:81
static DefaultRoamingZone * _instance
Holds a reference to the singleton instance of this class.
Definition roamingzone.hh:95
Implements a stack of error messages to provide a pretty formatted error traceback.
Definition errorstack.hh:41
Represents a list of references to some roaming channels.
Definition configreference.hh:191
Represents a roaming channel.
Definition roamingchannel.hh:16
Represents the list of roaming zones within the abstract device configuration.
Definition roamingzone.hh:103
Represents a RoamingZone within the abstract device configuration.
Definition roamingzone.hh:15
ConfigItem * clone() const
Clones this item.
Definition roamingzone.cc:28
void clear()
Clears the zone list.
Definition roamingzone.cc:43
int addChannel(RoamingChannel *ch, int row=-1)
Adds a channel to the roaming zone.
Definition roamingzone.cc:63
bool contains(const RoamingChannel *ch) const
Returns true, if the given roaming channel is member of this zone.
Definition roamingzone.cc:48
bool link(const YAML::Node &node, const Context &ctx, const ErrorStack &err)
Links the channel reference list.
Definition roamingzone.cc:92
bool remChannel(int row)
Removes the channel from the roaming zone at index row.
Definition roamingzone.cc:72
RoamingChannelRefList _channel
Holds the actual channels of the roaming zone.
Definition roamingzone.hh:72
RoamingChannelRefList * channels
The channels in the roaming zone.
Definition roamingzone.hh:22
bool populate(YAML::Node &node, const Context &context, const ErrorStack &err)
Serializes the channel reference list.
Definition roamingzone.cc:143
int count() const
Returns the number of zones.
Definition roamingzone.cc:38
RoamingChannel * channel(int idx) const
Returns the roaming channel, which is the member at index idx (0-based).
Definition roamingzone.cc:56