Fotobot
Get data from your photovoltaic plant
Signals | Public Member Functions | Static Public Member Functions | Private Member Functions | List of all members
InterfaceboxesController Class Reference
Inheritance diagram for InterfaceboxesController:
WebPage MRequestHandler

Signals

int saveInterfacebox (DBT_INTERFACEBOXES)
 
void deleteInterfacebox (int)
 
void restartInterfacebox ()
 

Public Member Functions

 InterfaceboxesController ()
 
void servicePrivate (HttpRequest &request)
 
- Public Member Functions inherited from WebPage
 WebPage ()
 
virtual void service (HttpRequest &request, HttpResponse &response)
 
void redirect (const QString &location)
 
- Public Member Functions inherited from MRequestHandler
 MRequestHandler ()
 

Static Public Member Functions

static QString getEditFormContents (HttpRequest &request, const DBT_INTERFACEBOXES &line=DBT_INTERFACEBOXES(), bool generator=false)
 
static void readForm (DBT_INTERFACEBOXES &interfacebox, HttpRequest &request)
 
- Static Public Member Functions inherited from WebPage
static QString percentEncode (const QString &s)
 

Private Member Functions

 Q_DISABLE_COPY (InterfaceboxesController)
 
void actionAdd (HttpRequest &request)
 
void actionEdit (HttpRequest &request)
 
void actionDelete (HttpRequest &request)
 
void actionRestart (HttpRequest &request)
 

Additional Inherited Members

- Protected Member Functions inherited from WebPage
void setStatus (int code, QByteArray description)
 
void setHeader (QByteArray name, QByteArray value)
 
void setHeader (QByteArray name, int value)
 
void write (QByteArray data)
 
void write (QString data)
 
void write (const char *data)
 
void about ()
 
HttpSession getSession ()
 
virtual void writeHeader (HttpRequest &request, HttpResponse &response)
 
virtual void writeFooter (HttpRequest &request, HttpResponse &response)
 
- Protected Member Functions inherited from MRequestHandler
bool needsLogin (HttpRequest &request, HttpResponse &response)
 
- Protected Attributes inherited from WebPage
QString m_javascript
 
- Protected Attributes inherited from MRequestHandler
bool m_needs_access_data
 
bool m_needs_change_settings
 
bool m_cacheable
 

Detailed Description

Definition at line 16 of file interfaceboxescontroller.h.

Constructor & Destructor Documentation

InterfaceboxesController::InterfaceboxesController ( )

Constructor

Definition at line 12 of file interfaceboxescontroller.cpp.

12  {
13  qRegisterMetaType<DBT_INTERFACEBOXES>();
14  connect(this, SIGNAL(saveInterfacebox(DBT_INTERFACEBOXES)), Static::db, SLOT(saveInterfacebox(DBT_INTERFACEBOXES)), Qt::QueuedConnection);
15  connect(this, SIGNAL(deleteInterfacebox(int)), Static::db, SLOT(deleteInterfacebox(int)), Qt::QueuedConnection);
16  connect(this, SIGNAL(restartInterfacebox()), Static::interfacebox, SLOT(restart()), Qt::QueuedConnection);
17 }

Member Function Documentation

void InterfaceboxesController::actionAdd ( HttpRequest &  request)
private

Add an interfacebox action

a form

second page doing the action and redirecting

validation

Definition at line 92 of file interfaceboxescontroller.cpp.

92  {
93  qDebug() << "InterfaceboxesController::actionAdd()";
94  QByteArray action = request.getParameter("action");
96  write(QString("<h2>%1</h2>\n").arg(tr("Add an interfacebox")));
97  write("<form method=\"post\">\n"
98  "<input type=\"hidden\" name=\"action\" value=\"add2\" />\n");
99  DBT_INTERFACEBOXES interfacebox;
100  readForm(interfacebox, request);
101  write("<table class=\"formTable\">");
102  write(getEditFormContents(request));
103  write("</table>");
104  write(QString("<input type=\"submit\" value=\"%1\">\n"
105  "</form>\n").arg(tr("Add")));
106  if(action == "add2") {
108  interfacebox.interfacebox= 0;
110  if(true) {
111  emit saveInterfacebox(interfacebox);
112  QString location = QString("/interfaceboxes?message=%1").arg(percentEncode(tr("Interfacebox added.")));
113  redirect(location);
114  } else {
115  write(QString("<p>%1</p>").arg(tr("Interfacebox definition invalid (not added).")));
116  }
117  }
118 }
static void readForm(DBT_INTERFACEBOXES &interfacebox, HttpRequest &request)
static QString getEditFormContents(HttpRequest &request, const DBT_INTERFACEBOXES &line=DBT_INTERFACEBOXES(), bool generator=false)
void InterfaceboxesController::actionDelete ( HttpRequest &  request)
private

Delete itnerfacebox action

Definition at line 169 of file interfaceboxescontroller.cpp.

169  {
170  write(QString("<h2>%1</h2>\n").arg(tr("Delete an interfacebox")));
171  QString location;
172  QByteArray id = request.getParameter("id");
173  int idi = id.toInt();
174  if(!id.isEmpty() && idi > 0) {
175  emit deleteInterfacebox(idi);
176  location = QString("/interfaceboxes?message=%1").arg(percentEncode(tr("Interfacebox deleted.")));
177  } else {
178  location = QString("/interfaceboxes?message=%1").arg(percentEncode(tr("Error: Invalid invertor ID. Interfacebox not deleted.")));
179  }
180  redirect(location);
181 }
void InterfaceboxesController::actionEdit ( HttpRequest &  request)
private

Edit interfacebox action

a form

second page doing the action and redirecting validation

Definition at line 123 of file interfaceboxescontroller.cpp.

123  {
124  QByteArray action = request.getParameter("action");
125  DBT_INTERFACEBOXES interfacebox;
127  write(QString("<h2>%1</h2>\n").arg(tr("Edit an interfacebox")));
128  write("<form method=\"post\">\n"
129  "<input type=\"hidden\" name=\"action\" value=\"edit2\" />\n");
130  if(action == "edit") {
131  QByteArray id = request.getParameter("id");
132  int idi = id.toInt();
133  if(id.isEmpty() || idi < 1) {
134  redirect(QString("/interfaceboxes?message=%1").arg(percentEncode(tr("Error: Invalid interfacebox ID."))));
135  return;
136  }
137  QList<DBT_INTERFACEBOXES> interfaceboxes = Static::db->interfaceboxes(QList<int>() << idi);
138  if(interfaceboxes.empty()) {
139  redirect(QString("/interfaceboxes?message=%1").arg(percentEncode(tr("Error: no such interfacebox found."))));
140  return;
141  }
142  write("<table class=\"formTable\">");
143  write(getEditFormContents(request, interfaceboxes.at(0)));
144  write("</table>");
145  } else {
146  readForm(interfacebox, request);
147  write("<table class=\"formTable\">");
148  write(getEditFormContents(request, interfacebox));
149  write("</table>");
150  }
151  write(QString("<input type=\"submit\" value=\"%1\">\n"
152  "</form>\n").arg(tr("Edit")));
153  if(action == "edit2") {
156  if(interfacebox.interfacebox> 0 && true) {
157  emit saveInterfacebox(interfacebox);
158  QString location = QString("/interfaceboxes?message=%1").arg(percentEncode(tr("Interfacebox edited.")));
159  redirect(location);
160  } else {
161  write(QString("<p>%1</p>").arg(tr("Error: Interfacebox definition invalid (not edited).")));
162  }
163  }
164 }
QList< DBT_INTERFACEBOXES > interfaceboxes(int line=0)
Returns list of interfaceboxes filtered by line number.
Definition: database.cpp:524
static void readForm(DBT_INTERFACEBOXES &interfacebox, HttpRequest &request)
static QString getEditFormContents(HttpRequest &request, const DBT_INTERFACEBOXES &line=DBT_INTERFACEBOXES(), bool generator=false)
void InterfaceboxesController::actionRestart ( HttpRequest &  request)
private

Restarts all administered Interfaceboxes

Definition at line 187 of file interfaceboxescontroller.cpp.

187  {
188  Q_UNUSED(request);
189  write(QString("<h2>%1</h2>\n")
190  .arg(tr("All interfaceboxes were signalled to restart"))
191  );
192  emit restartInterfacebox();
193 }
QString InterfaceboxesController::getEditFormContents ( HttpRequest &  request,
const DBT_INTERFACEBOXES line = DBT_INTERFACEBOXES(),
bool  generator = false 
)
static

Generates an edit form contents (html input fields)

Definition at line 60 of file interfaceboxescontroller.cpp.

60  {
61  Q_UNUSED(request);
62  Q_UNUSED(generator);
63  QString s;
64  s.append(QString("<input type=\"hidden\" name=\"id\" value=\"%1\" />\n").arg(interfacebox.interfacebox));
65  QString i ("<tr><td><label for=\"%2\">%1</label>: </td><td><input type=\"text\" name=\"%2\" value=\"%3\" /></td></tr>\n");
66  s.append(i.arg(tr("Description"), "description", interfacebox.description));
67 
68  // line selectbox
69  QList<DBT_LINES> lines = Static::db->lines();
70  s.append(QString("<tr><td><label for=\"%2\">%1</label>: </td><td><select id=\"%2\" name=\"%2\">\n").arg(tr("Line"), "line"));
71  QList<DBT_LINES>::const_iterator ii;
72  for(ii = lines.constBegin(); ii != lines.constEnd(); ++ii) {
73  const DBT_LINES& l = *ii;
74  s.append(QString("<option value=\"%1\" %4>%1 %2 %3</option>\n")
75  .arg(l.line).arg(l.device, l.description,
76  (l.line == interfacebox.line) ? "selected=\"selected\"" : ""));
77  }
78  s.append("</select></td></tr>\n");
79 
80  return s;
81 }
QList< DBT_LINES > lines(int line=0)
Returns list of communications lines.
Definition: database.cpp:380
Class describing database table LINES.
void InterfaceboxesController::readForm ( DBT_INTERFACEBOXES interfacebox,
HttpRequest &  request 
)
static

Read form HTTP post reply and load into the interfacebox

Definition at line 83 of file interfaceboxescontroller.cpp.

83  {
84  interfacebox.interfacebox = request.getParameter("id").toInt();
85  interfacebox.description = request.getParameter("description");
86  interfacebox.line = request.getParameter("line").toInt();
87 }
void InterfaceboxesController::servicePrivate ( HttpRequest &  request)
virtual

Generates the response

Default action/page

Implements WebPage.

Definition at line 19 of file interfaceboxescontroller.cpp.

19  {
20  QByteArray action = request.getParameter("action");
21  if(action.startsWith("add")) {
22  actionAdd(request); return;
23  } else if(action.startsWith("edit")) {
24  actionEdit(request); return;
25  } else if(action.startsWith("delete")) {
26  actionDelete(request); return;
27  } else if(action.startsWith("restart")) {
28  actionRestart(request); return;
29  }
30 
33  QList<DBT_INTERFACEBOXES> interfaceboxes = Static::db->interfaceboxes();
34  write(QString("<h2>%1</h2>\n").arg(tr("Interfaceboxes")));
35  write(QString("<a href=\"/interfaceboxes?action=add\">%1</a>\n").arg(tr("Add an interfacebox")));
36  write("<table>\n");
37  write( QString("<tr class=\"line1st\"><th></th><th>%1</th><th>%2</th>""</tr>")
38  .arg(tr("Description"))
39  .arg(tr("Line"))
40  );
41 
42  QString s2 ("<tr>"
43  "<td><a href=\"/interfaceboxes?action=edit&id=%4\">%1</a> "
44  "<a href=\"/interfaceboxes?action=delete&id=%4\">%2</a></td>"
45  "<td>%3</td><td>%5</td></tr>");
46  QList<DBT_INTERFACEBOXES>::const_iterator i;
47  for(i = interfaceboxes.constBegin(); i != interfaceboxes.constEnd(); ++i) {
48  const DBT_INTERFACEBOXES& l = *i;
49  write(QString(s2)
50  .arg(tr("Edit"), tr("Delete"))
51  .arg(l.description)
52  .arg(l.interfacebox)
53  .arg(l.line)
54  );
55  }
56 
57  write("</table>\n");
58 }
QList< DBT_INTERFACEBOXES > interfaceboxes(int line=0)
Returns list of interfaceboxes filtered by line number.
Definition: database.cpp:524
void actionEdit(HttpRequest &request)
void actionDelete(HttpRequest &request)
void actionRestart(HttpRequest &request)
void actionAdd(HttpRequest &request)

The documentation for this class was generated from the following files: