summaryrefslogtreecommitdiff
path: root/client/mainwindow.cc
diff options
context:
space:
mode:
authordeva <deva>2008-09-19 12:07:48 +0000
committerdeva <deva>2008-09-19 12:07:48 +0000
commit3541224f0fb3d5b7b531eef45318d7e41cb51915 (patch)
tree450e6fc9d3ae57f7db7a79cfa87386e0b7b09c92 /client/mainwindow.cc
parenteff75e9193b0e1d9175f49e003977d524c6a2d36 (diff)
First working version of the collapser-pracro view.
Diffstat (limited to 'client/mainwindow.cc')
-rw-r--r--client/mainwindow.cc124
1 files changed, 124 insertions, 0 deletions
diff --git a/client/mainwindow.cc b/client/mainwindow.cc
new file mode 100644
index 0000000..06207a5
--- /dev/null
+++ b/client/mainwindow.cc
@@ -0,0 +1,124 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * mainwindow.cc
+ *
+ * Wed Sep 17 09:41:09 CEST 2008
+ * Copyright 2008 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of Pracro.
+ *
+ * Pracro is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Pracro is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Pracro; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#include "mainwindow.h"
+
+#include <QApplication>
+#include <QDomDocument>
+#include <QDomNodeList>
+#include <QDomNode>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QLabel>
+#include <QPushButton>
+#include <QGroupBox>
+#include <QScrollArea>
+
+MainWindow::MainWindow(QString cpr, QString course, QString host, quint16 port, QString user)
+ : netcom(host, port, user, cpr)
+{
+ resize(768, 1024);
+
+ QScrollArea *s = new QScrollArea();
+ setCentralWidget(s);
+ w = new QWidget();
+ s->setWidget(w);
+ s->setWidgetResizable(true);
+
+ w->setLayout(new QVBoxLayout());
+ this->course = course;
+ init();
+}
+
+MainWindow::~MainWindow()
+{
+}
+
+void MainWindow::init()
+{
+ update();
+}
+
+void MainWindow::update()
+{
+ QDomDocument xml_doc = netcom.send(course);
+
+ QDomNodeList courses = xml_doc.documentElement().childNodes();
+ QDomNode coursenode = courses.at(0); // There can be only one! (Swush, flomp)
+ QDomNodeList macronodes = coursenode.childNodes();
+ for(int j = 0; j < macronodes.count(); j++) {
+ QDomNode macronode = macronodes.at(j);
+
+ QDomElement xml_elem = macronode.toElement();
+
+ if(xml_elem.tagName() == "macro") {
+
+ QString macroname;
+ if(xml_elem.hasAttribute("name")) macroname = xml_elem.attribute("name");
+
+ if(macros.find(macroname) == macros.end()) {
+ macros[macroname] = new MacroWindow(netcom, macronode, course);
+
+ QGroupBox *g = new QGroupBox(" " + macroname);
+ g->setCheckable(false);
+ g->setChecked(false);
+
+ QPushButton *b = new QPushButton(">>", g);
+ b->setFixedSize(16,16);
+ b->show();
+ b->move(0,0);
+
+ connect(b, SIGNAL(clicked()), this, SLOT(closeAll()));
+ connect(b, SIGNAL(clicked()), macros[macroname], SLOT(toggleMacro()));
+ ((QBoxLayout*)w->layout())->addWidget(g);
+
+ QHBoxLayout *l = new QHBoxLayout();
+ l->setContentsMargins(10,0,10,0);
+ g->setLayout(l);
+ l->addWidget(macros[macroname]);
+ connect(macros[macroname], SIGNAL(updateOnCommit()), this, SLOT(update()));
+ macros[macroname]->show();
+
+ } else {
+
+ macros[macroname]->update(macronode);
+ macros[macroname]->setCollapsed(true);
+
+ }
+ }
+ }
+}
+
+void MainWindow::closeAll()
+{
+ /*
+ QMap<QString, MacroWindow*>::iterator i = macros.begin();
+ while(i != macros.end()) {
+ i.value()->setCollapsed(true);
+ i++;
+ }
+ */
+}