diff options
Diffstat (limited to 'client/pcpviewer')
-rw-r--r-- | client/pcpviewer/pcpdoc.cc | 73 | ||||
-rw-r--r-- | client/pcpviewer/pcpdoc.h | 45 | ||||
-rw-r--r-- | client/pcpviewer/pcpdocuments.cc | 72 | ||||
-rw-r--r-- | client/pcpviewer/pcpdocuments.h | 54 | ||||
-rw-r--r-- | client/pcpviewer/pcpimage.cc | 41 | ||||
-rw-r--r-- | client/pcpviewer/pcpimage.h | 45 | ||||
-rw-r--r-- | client/pcpviewer/pcpjournal.cc | 42 | ||||
-rw-r--r-- | client/pcpviewer/pcpjournal.h | 47 | ||||
-rw-r--r-- | client/pcpviewer/pcppatient.cc | 45 | ||||
-rw-r--r-- | client/pcpviewer/pcppatient.h | 48 | ||||
-rw-r--r-- | client/pcpviewer/pcpviewer.cc | 98 | ||||
-rw-r--r-- | client/pcpviewer/pcpviewer.h | 12 |
12 files changed, 603 insertions, 19 deletions
diff --git a/client/pcpviewer/pcpdoc.cc b/client/pcpviewer/pcpdoc.cc new file mode 100644 index 0000000..0d2aa41 --- /dev/null +++ b/client/pcpviewer/pcpdoc.cc @@ -0,0 +1,73 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcpdoc.cc + * + * Thu Oct 20 11:56:32 CEST 2011 + * Copyright 2011 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 "pcpdoc.h" + +#include <QTextCodec> +#include <QByteArray> + +PCPDoc::PCPDoc(QString codepage) +{ + this->codepage = codepage; + setReadOnly(true); + setFontFamily("Courier New"); +} + +void PCPDoc::setText(QString text) +{ + QTextCodec *cp850 = QTextCodec::codecForName(codepage.toStdString().c_str()); + if(!cp850) return; + + QByteArray datacp850; + datacp850 += text; + QString j = cp850->toUnicode(datacp850); + + QString jstrip; + for(int i = 0; i < j.length(); i++) { + if(j[i] != '\xb7') jstrip += j[i]; // Remove end of line symbols. + } + + setPlainText(jstrip); +} + +#ifdef TEST_PCPDOC +//Additional dependency files +//deps: +//Required cflags (autoconf vars may be used) +//cflags: +//Required link options (autoconf vars may be used) +//libs: +#include "test.h" + +TEST_BEGIN; + +// TODO: Put some testcode here (see test.h for usable macros). +TEST_TRUE(false, "No tests yet!"); + +TEST_END; + +#endif/*TEST_PCPDOC*/ diff --git a/client/pcpviewer/pcpdoc.h b/client/pcpviewer/pcpdoc.h new file mode 100644 index 0000000..ad48a26 --- /dev/null +++ b/client/pcpviewer/pcpdoc.h @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcpdoc.h + * + * Thu Oct 20 11:56:32 CEST 2011 + * Copyright 2011 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. + */ +#ifndef __PRACRO_PCPDOC_H__ +#define __PRACRO_PCPDOC_H__ + +#include <QTextEdit> +#include <QString> + +class PCPDoc : public QTextEdit { +Q_OBJECT +public: + PCPDoc(QString codepage); + + void setText(QString text); + +private: + QString codepage; +}; + +#endif/*__PRACRO_PCPDOC_H__*/ diff --git a/client/pcpviewer/pcpdocuments.cc b/client/pcpviewer/pcpdocuments.cc new file mode 100644 index 0000000..a6e39ac --- /dev/null +++ b/client/pcpviewer/pcpdocuments.cc @@ -0,0 +1,72 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcpdocuments.cc + * + * Thu Oct 20 09:11:18 CEST 2011 + * Copyright 2011 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 "pcpdocuments.h" + +#include <QHBoxLayout> + +PCPDocuments::PCPDocuments() +{ + setLayout(new QHBoxLayout()); + tree = new QTreeWidget(this); + layout()->addWidget(tree); + + connect(tree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), + this, SLOT(dblclick(QTreeWidgetItem*,int))); + + QStringList labels; + labels << "Group"; + labels << "Subject"; + labels << "Filename"; + labels << "Size"; + labels << "Date"; + tree->setColumnCount(labels.size()); + tree->setHeaderLabels(labels); + +} + +void PCPDocuments::setData(DokMenuVector d) +{ + DokMenuVector::iterator di = d.begin(); + while(di != d.end()) { + QTreeWidgetItem *item = new QTreeWidgetItem(); + + item->setText(0, di->group); + item->setText(1, di->subject); + item->setText(2, di->filename); + item->setText(3, QString::number(di->filesize)); + item->setText(4, di->date); + + tree->addTopLevelItem(item); + di++; + } +} + +void PCPDocuments::dblclick(QTreeWidgetItem *item, int) +{ + emit open(item->text(2)); +} diff --git a/client/pcpviewer/pcpdocuments.h b/client/pcpviewer/pcpdocuments.h new file mode 100644 index 0000000..ac14646 --- /dev/null +++ b/client/pcpviewer/pcpdocuments.h @@ -0,0 +1,54 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcpdocuments.h + * + * Thu Oct 20 09:11:18 CEST 2011 + * Copyright 2011 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. + */ +#ifndef __PRACRO_PCPDOCUMENTS_H__ +#define __PRACRO_PCPDOCUMENTS_H__ + +#include <QWidget> +#include <QTreeWidget> + +#include "praxisd.h" + +class PCPDocuments : public QWidget { +Q_OBJECT +public: + PCPDocuments(); + +signals: + void open(QString name); + +public slots: + void setData(DokMenuVector d); + +private slots: + void dblclick(QTreeWidgetItem *item, int); + +private: + QTreeWidget *tree; +}; + +#endif/*__PRACRO_PCPDOCUMENTS_H__*/ diff --git a/client/pcpviewer/pcpimage.cc b/client/pcpviewer/pcpimage.cc new file mode 100644 index 0000000..f3426b6 --- /dev/null +++ b/client/pcpviewer/pcpimage.cc @@ -0,0 +1,41 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcpimage.cc + * + * Thu Oct 20 12:14:29 CEST 2011 + * Copyright 2011 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 "pcpimage.h" + +PCPImage::PCPImage() +{ +} + +void PCPImage::setData(QByteArray data) +{ + image = QImage::fromData(data); + image = image.scaled(1024, 1024, + Qt::KeepAspectRatio, Qt::SmoothTransformation); + setPixmap(QPixmap::fromImage(image)); + resize(image.width(), image.height()); +} diff --git a/client/pcpviewer/pcpimage.h b/client/pcpviewer/pcpimage.h new file mode 100644 index 0000000..696a016 --- /dev/null +++ b/client/pcpviewer/pcpimage.h @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcpimage.h + * + * Thu Oct 20 12:14:29 CEST 2011 + * Copyright 2011 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. + */ +#ifndef __PRACRO_PCPIMAGE_H__ +#define __PRACRO_PCPIMAGE_H__ + +#include <QLabel> +#include <QByteArray> + +class PCPImage : public QLabel { +Q_OBJECT +public: + PCPImage(); + + void setData(QByteArray data); + +private: + QImage image; +}; + +#endif/*__PRACRO_PCPIMAGE_H__*/ diff --git a/client/pcpviewer/pcpjournal.cc b/client/pcpviewer/pcpjournal.cc new file mode 100644 index 0000000..0ebaf4b --- /dev/null +++ b/client/pcpviewer/pcpjournal.cc @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcpjournal.cc + * + * Wed Oct 19 11:52:31 CEST 2011 + * Copyright 2011 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 "pcpjournal.h" + +#include <QHBoxLayout> + +PCPJournal::PCPJournal() +{ + setLayout(new QHBoxLayout()); + doc = new PCPDoc("utf8"); + layout()->addWidget(doc); +} + +void PCPJournal::setData(QString data) +{ + doc->setText(data); +} diff --git a/client/pcpviewer/pcpjournal.h b/client/pcpviewer/pcpjournal.h new file mode 100644 index 0000000..0a9cff2 --- /dev/null +++ b/client/pcpviewer/pcpjournal.h @@ -0,0 +1,47 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcpjournal.h + * + * Wed Oct 19 11:52:31 CEST 2011 + * Copyright 2011 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. + */ +#ifndef __PRACRO_PCPJOURNAL_H__ +#define __PRACRO_PCPJOURNAL_H__ + +#include <QWidget> + +#include "pcpdoc.h" + +class PCPJournal : public QWidget { +Q_OBJECT +public: + PCPJournal(); + +public slots: + void setData(QString); + +private: + PCPDoc *doc; +}; + +#endif/*__PRACRO_PCPJOURNAL_H__*/ diff --git a/client/pcpviewer/pcppatient.cc b/client/pcpviewer/pcppatient.cc new file mode 100644 index 0000000..5ba1845 --- /dev/null +++ b/client/pcpviewer/pcppatient.cc @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcppatient.cc + * + * Thu Oct 20 09:11:08 CEST 2011 + * Copyright 2011 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 "pcppatient.h" + +#include <QHBoxLayout> + +PCPPatient::PCPPatient() +{ + setLayout(new QHBoxLayout()); + j = new QLineEdit(this); + layout()->addWidget(j); +} + +void PCPPatient::setData(Patient p) +{ + QString s; + s += p.cpr+ ": " + p.fornavne + " " + p.efternavn; + j->setText(s); +} + diff --git a/client/pcpviewer/pcppatient.h b/client/pcpviewer/pcppatient.h new file mode 100644 index 0000000..6f2a740 --- /dev/null +++ b/client/pcpviewer/pcppatient.h @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * pcppatient.h + * + * Thu Oct 20 09:11:08 CEST 2011 + * Copyright 2011 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. + */ +#ifndef __PRACRO_PCPPATIENT_H__ +#define __PRACRO_PCPPATIENT_H__ + +#include <QWidget> +#include <QLineEdit> + +#include "praxisd.h" + +class PCPPatient : public QWidget { +Q_OBJECT +public: + PCPPatient(); + +public slots: + void setData(Patient p); + +private: + QLineEdit *j; +}; + +#endif/*__PRACRO_PCPPATIENT_H__*/ diff --git a/client/pcpviewer/pcpviewer.cc b/client/pcpviewer/pcpviewer.cc index 739a681..5853e0a 100644 --- a/client/pcpviewer/pcpviewer.cc +++ b/client/pcpviewer/pcpviewer.cc @@ -27,40 +27,102 @@ */ #include "pcpviewer.h" -#include <stdio.h> +#include <QVBoxLayout> -PCPViewer::PCPViewer(QString patientid) : praxisd("localhost", 10000) +#include <QTextCodec> + +#include "pcppatient.h" +#include "pcpjournal.h" +#include "pcpdocuments.h" +#include "pcpdoc.h" +#include "pcpimage.h" + +#include <QSplitter> +#include <QSettings> + +PCPViewer::PCPViewer(QString patientid) : praxisd("sarge", 10000) { this->patientid = patientid; + setLayout(new QVBoxLayout()); + connect(&praxisd, SIGNAL(networkError(QString)), this, SLOT(networkError(QString))); - /* + PCPPatient *patient = new PCPPatient(); + layout()->addWidget(patient); connect(&praxisd, SIGNAL(gotPatient(Patient)), - this, SLOT(gotPatient(Patient))); - */ + patient, SLOT(setData(Patient))); + + split = new QSplitter(Qt::Vertical); + + PCPJournal *journal = new PCPJournal(); + split->addWidget(journal); + connect(&praxisd, SIGNAL(gotJournal(QString)), + journal, SLOT(setData(QString))); + + PCPDocuments *documents = new PCPDocuments(); + split->addWidget(documents); connect(&praxisd, SIGNAL(gotDokMenu(DokMenuVector)), - this, SLOT(gotDokMenu(DokMenuVector))); + documents, SLOT(setData(DokMenuVector))); + connect(documents, SIGNAL(open(QString)), + this, SLOT(open(QString))); + connect(&praxisd, SIGNAL(gotDokMenuFile(QByteArray, QString)), + this, SLOT(gotDokMenuFile(QByteArray, QString))); + + layout()->addWidget(split); + + init(); + praxisd.journal_get_by_cpr(patientid); + praxisd.patient_get_by_cpr(patientid); praxisd.dokmenu_get_all_by_cpr(patientid); } -void PCPViewer::networkError(QString text) +void PCPViewer::networkError(QString) +{ + // printf("ERROR: %s\n", text.toStdString().c_str()); +} + +void PCPViewer::open(QString name) { - printf("ERROR: %s\n", text.toStdString().c_str()); + praxisd.dokmenu_get_by_cpr_and_name(patientid, name); } -void PCPViewer::gotDokMenu(DokMenuVector d) +void PCPViewer::gotDokMenuFile(QByteArray data, QString mimetype) { - DokMenuVector::iterator di = d.begin(); - while(di != d.end()) { - printf("%s %s %s %d %s\n", - di->group.toStdString().c_str(), - di->subject.toStdString().c_str(), - di->filename.toStdString().c_str(), - di->filesize, - di->date.toStdString().c_str()); - di++; + if(mimetype == "image/jpeg; charset=binary") { + PCPImage *img = new PCPImage(); + img->setData(data); + img->show(); } + + if(mimetype == "text/plain; charset=cp850") { + PCPDoc *doc = new PCPDoc("cp850"); + doc->setText(data); + doc->resize(600, 750); + doc->show(); + } +} + +void PCPViewer::closeEvent(QCloseEvent *event) +{ + QSettings settings("Aasimon.org", "PCPViewer"); + + settings.beginGroup("MainWindow"); + settings.setValue("geometry", saveGeometry()); + settings.setValue("split", split->saveState()); + settings.endGroup(); + + event->accept(); +} + +void PCPViewer::init() +{ + QSettings settings("Aasimon.org", "PCPViewer"); + + settings.beginGroup("MainWindow"); + restoreGeometry(settings.value("geometry").toByteArray()); + split->restoreState(settings.value("split").toByteArray()); + settings.endGroup(); } diff --git a/client/pcpviewer/pcpviewer.h b/client/pcpviewer/pcpviewer.h index 35459a1..81a97bf 100644 --- a/client/pcpviewer/pcpviewer.h +++ b/client/pcpviewer/pcpviewer.h @@ -30,6 +30,9 @@ #include <QWidget> +#include <QSplitter> +#include <QCloseEvent> + #include "praxisd.h" class PCPViewer : public QWidget { @@ -37,13 +40,20 @@ Q_OBJECT public: PCPViewer(QString patientid); +protected: + void closeEvent(QCloseEvent *event); + public slots: void networkError(QString text); - void gotDokMenu(DokMenuVector d); + void open(QString name); + void gotDokMenuFile(QByteArray data, QString mimetype); private: + void init(); + Praxisd praxisd; QString patientid; + QSplitter *split; }; #endif/*__PRACRO_PCPVIEWER_H__*/ |