Isis Developer Reference
ControlList.h
Go to the documentation of this file.
1#ifndef ControlList_H
2#define ControlList_H
3
10/* SPDX-License-Identifier: CC0-1.0 */
11
12#include <QDebug>
13#include <QList>
14#include <QMetaType>
15#include <QObject>
16
17#include "Control.h"
19#include "XmlStackedHandler.h"
20
21class QStringList;
22class QXmlStreamWriter;
23
24namespace Isis {
25 class FileName;
26 class XmlStackedHandlerReader;
27
44 class ControlList : public QObject, public QList<Control *> {
45 Q_OBJECT
46
47 public:
48
49 ControlList(QString name, QString path, QObject *parent = NULL);
50 explicit ControlList(QObject *parent = NULL);
51 explicit ControlList(QList<Control *>, QObject *parent = NULL);
52 explicit ControlList(Project *project, XmlStackedHandlerReader *xmlReader,
53 QObject *parent = NULL);
54 explicit ControlList(QStringList &);
55 ControlList(const ControlList &);
57
58 // These are overridden (-ish) in order to add notifications to the list changing
59 void append(Control * const &value);
60 void append(const QList<Control *> &value);
61
62 void clear();
63
64 iterator erase(iterator pos);
65 iterator erase(iterator begin, iterator end);
66
67 void insert(int i, Control * const &value);
68 iterator insert(iterator before, Control * const &value);
69
70 void prepend(Control * const &value);
71 void push_back(Control * const &value);
72 void push_front(Control * const &value);
73 int removeAll(Control * const &value);
74 void removeAt(int i);
75 void removeFirst();
76 void removeLast();
77 bool removeOne(Control * const &value);
78 void swap(QList<Control *> &other);
79 Control *takeAt(int i);
82
83 ControlList &operator+=(const QList<Control *> &other);
84 ControlList &operator+=(Control * const &other);
85 ControlList &operator<<(const QList<Control *> &other);
86 ControlList &operator<<(Control * const &other);
87 ControlList &operator=(const QList<Control *> &rhs);
88
89 // This is our own assignment, but it needs to notify just like the operator=(QList)
91
92 // Done overriding (-ish)
93
94
95 QList<QAction *> supportedActions(Project *project = NULL);
97
98 void setName(QString newName);
99 void setPath(QString newPath);
100
101 QString name() const;
102 QString path() const;
103
104 void deleteFromDisk(Project *project);
105 void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const;
106
107
108 signals:
109 void countChanged(int newCount);
111
112 private:
113
114
126 class CopyControlDataFunctor : public std::function<void *(Control * const &)> {
127 public:
128 CopyControlDataFunctor(const Project *project, FileName newProjectRoot);
129 CopyControlDataFunctor(const CopyControlDataFunctor &other);
130 ~CopyControlDataFunctor();
131
132 void *operator()(Control * const &controlToCopy);
133
134 CopyControlDataFunctor &operator=(const CopyControlDataFunctor &rhs);
135
136 private:
137 const Project *m_project;
138 FileName m_newProjectRoot;
139 };
140
152 class XmlHandler : public XmlStackedHandler {
153 public:
154 XmlHandler(ControlList *controlList, Project *project);
155
156 virtual bool startElement(const QString &namespaceURI, const QString &localName,
157 const QString &qName, const QXmlAttributes &atts);
158 virtual bool endElement(const QString &namespaceURI, const QString &localName,
159 const QString &qName);
160
161 private:
162 Q_DISABLE_COPY(XmlHandler);
163
164 ControlList *m_controlList;
165 Project *m_project;
166 };
167
168
169 private:
170 QString m_name;
171
182 QString m_path;
183 };
184}
185
187
188#endif
Q_DECLARE_METATYPE(Isis::ControlList *)
Property
This is a list of properties and actions that are possible.
Definition ControlDisplayProperties.h:65
This represents an ISIS control net in a project-based GUI interface.
Definition Control.h:66
Maintains a list of Controls so that control nets can easily be copied from one Project to another,...
Definition ControlList.h:44
void deleteFromDisk(Project *project)
Delete all of the contained Controls from disk.
Definition ControlList.cpp:562
void removeLast()
Removes the last control pointer from the control list.
Definition ControlList.cpp:309
iterator erase(iterator pos)
Erases a control pointer from the control list at the specified position.
Definition ControlList.cpp:163
void append(Control *const &value)
Appends a control pointer to the control list.
Definition ControlList.cpp:121
~ControlList()
Destructor.
Definition ControlList.cpp:109
void push_back(Control *const &value)
Equivalent to append(value)
Definition ControlList.cpp:240
ControlList & operator+=(const QList< Control * > &other)
Appends control pointers from the other list to this control list.
Definition ControlList.cpp:404
void insert(int i, Control *const &value)
Inserts a control pointer at the specified position in the control list.
Definition ControlList.cpp:195
QString path() const
Get the path to these controls in the control list (relative to project root).
Definition ControlList.cpp:550
QString name() const
Get the human-readable name of this control list.
Definition ControlList.cpp:539
void countChanged(int newCount)
void setName(QString newName)
Set the human-readable name of this control list.
Definition ControlList.cpp:518
void removeAt(int i)
Removes the control pointer at the specified index.
Definition ControlList.cpp:287
void deletingList(ControlList *list)
bool removeOne(Control *const &value)
Removes the first occurence of the control pointer from the control list.
Definition ControlList.cpp:324
void push_front(Control *const &value)
Equivalent to prepend(value)
Definition ControlList.cpp:254
Control * takeAt(int i)
Remove the control pointer at the specified index and returns it.
Definition ControlList.cpp:360
Control * takeFirst()
Removes the first control pointer from the control list and returns it.
Definition ControlList.cpp:374
ControlList & operator=(const QList< Control * > &rhs)
Assigns another list of control pointers to this control list.
Definition ControlList.cpp:476
int removeAll(Control *const &value)
Removes all occurences of the control pointer in the control list.
Definition ControlList.cpp:269
void save(QXmlStreamWriter &stream, const Project *project, FileName newProjectRoot) const
Convert this control list into XML format for saving/restoring capabilities.
Definition ControlList.cpp:599
void setPath(QString newPath)
Set the relative path (from the project root) to this control list's folder.
Definition ControlList.cpp:529
void prepend(Control *const &value)
Prepends a control pointer to the control list.
Definition ControlList.cpp:226
bool allSupport(ControlDisplayProperties::Property prop)
ControlList & operator<<(const QList< Control * > &other)
Appends a list of other control pointers to this control list.
Definition ControlList.cpp:440
void swap(QList< Control * > &other)
Swaps this control list's control pointers with the other list of control pointers.
Definition ControlList.cpp:342
void clear()
Clears the control list.
Definition ControlList.cpp:145
Control * takeLast()
Removes the last control pointer from the control list and returns it.
Definition ControlList.cpp:388
void removeFirst()
Removes the first control pointer from the control list.
Definition ControlList.cpp:298
ControlList(QString name, QString path, QObject *parent=NULL)
Create an control list from a control list name and path (does not read Controls).
Definition ControlList.cpp:37
QList< QAction * > supportedActions(Project *project=NULL)
File name manipulation and expansion.
Definition FileName.h:100
The main project for ipce.
Definition Project.h:289
XML Handler that parses XMLs in a stack-oriented way.
Definition XmlStackedHandler.h:118
Manage a stack of content handlers for reading XML files.
Definition XmlStackedHandlerReader.h:30
This is free and unencumbered software released into the public domain.
Definition BoxcarCachingAlgorithm.h:13
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16