summaryrefslogtreecommitdiff
path: root/client/praxisd.h
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2011-10-12 12:09:50 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2011-10-12 12:09:50 +0200
commitffc19fdcd0845dbd85c2bba990c590fcc5fba670 (patch)
treef8a397c2c3a24f2b7fe180c7402f36919e784179 /client/praxisd.h
parent29b92e2906823878a7c516dc454d9ae8654de8fb (diff)
Finalised the praxisd communination code. Still untested though...
Diffstat (limited to 'client/praxisd.h')
-rw-r--r--client/praxisd.h85
1 files changed, 78 insertions, 7 deletions
diff --git a/client/praxisd.h b/client/praxisd.h
index dfaac59..c9ccaf3 100644
--- a/client/praxisd.h
+++ b/client/praxisd.h
@@ -28,12 +28,31 @@
#ifndef __PRACRO_PRAXISD_H__
#define __PRACRO_PRAXISD_H__
-class Praxisd {
+#include <QObject>
+#include <QString>
+#include <QVector>
+
+#include <QNetworkAccessManager>
+#include <QNetworkRequest>
+
+#include <QByteArray>
+#include <QThread>
+#include <QSemaphore>
+
+class Praxisd : public QObject {
Q_OBJECT
-public;
- Praxisd();
+public:
+ typedef enum {
+ journal,
+ cavelist,
+ patient,
+ dokmenu,
+ dokmenufile
+ } reply_t;
- QString journal_get_by_cpr(QString patientid);
+ Praxisd(QString host, quint16 port);
+
+ void journal_get_by_cpr(QString patientid);
typedef struct {
QString sogenr;
@@ -42,7 +61,7 @@ public;
QString bemaerkning2;
QString bemaerkning3;
} cave_t;
- QVector<cave_t> diverse_get_cave(QString sogenr);
+ void diverse_get_cave(QString sogenr);
typedef struct {
QString sogenr;
@@ -87,18 +106,70 @@ public;
QString unknown251;
QString jtime;
} patient_t;
- patient_t patient_get_by_cpr(QString cpr);
+ void patient_get_by_cpr(QString cpr);
typedef struct {
+ QString cpr;
QString group;
QString subject;
QString filename;
size_t filesize;
QString date;
} dokmenu_t;
- QVector<dokmenu_t> dokmenu_get_all_by_cpr(QString cpr);
+ void dokmenu_get_all_by_cpr(QString cpr);
+
+ void dokmenu_get_by_cpr_and_name(QString cpr, QString name);
+
+signals:
+ void gotReply(QByteArray data);
+ void networkError(QString text);
+
+ void gotJournal(QString data);
+ void gotCave(QVector<cave_t> cave);
+ void gotPatient(patient_t patient);
+ void gotDokMenu(QVector<dokmenu_t> dokmenu);
+ void gotDokMenuFile(QString data);
+
+public slots:
+ void replyFinished(QNetworkReply*);
+
+private:
+ void makeTransfer(reply_t t, QString uri, QMap<QString, QString> params);
+
+ QNetworkAccessManager *manager;
+ QNetworkRequest request;
+ QString host;
+ unsigned short int port;
+
+ QMap<QNetworkReply*, reply_t> replytypes;
+};
+
+class PraxisdSync : public QThread {
+Q_OBJECT
+public:
+ PraxisdSync(QString host, unsigned short int port);
+
+ QString journal_get_by_cpr(QString patientid);
+ QVector<Praxisd::cave_t> diverse_get_cave(QString sogenr);
+ Praxisd::patient_t patient_get_by_cpr(QString cpr);
+ QVector<Praxisd::dokmenu_t> dokmenu_get_all_by_cpr(QString cpr);
QString dokmenu_get_by_cpr_and_name(QString cpr, QString name);
+
+ void run();
+
+public slots:
+ void gotCaveList(QVector<Praxisd::cave_t>);
+
+private:
+ Praxisd praxisd;
+ QSemaphore rsem;
+ QSemaphore wsem;
+
+ Praxisd::reply_t request_type;
+ QString request_sogenr;
+
+ QVector<Praxisd::cave_t> cavelist;
};
#endif/*__PRACRO_PRAXISD_H__*/