summaryrefslogtreecommitdiff
path: root/client/launcherwindow.cc
blob: 4734ffe9fcc08e5782504cf7a9cedd4668b0dab0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set et sw=2 ts=2: */
/***************************************************************************
 *            launcherwindow.cc
 *
 *  Tue Oct 12 11:38:47 CEST 2010
 *  Copyright 2010 Lars Bisballe Jensen
 *  elsenator@gmail.com
 ****************************************************************************/

/*
 *  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 <QLabel>
#include <QGridLayout>
#include <QRegExpValidator>
#include <QPushButton>
#include <QFileInfo>
#include <QSettings>
#include <QMessageBox>
#include "launcherwindow.h"

LauncherWindow::LauncherWindow(QString arg, QString cpr, QString templ,
                               QWidget *parent)
  : QDialog(parent)
{
  setWindowTitle(tr("Pracro Launcher"));
  resize(250,80);

  setWindowIcon(QIcon(":/icons/icon.png"));
  
  QSettings templateConfig(QFileInfo(arg).absolutePath() +
                           "/templates.ini", QSettings::IniFormat);

  QLabel *cprLabel = new QLabel(tr("Patient ID:"));
  cprLineEdit = new QLineEdit();
  cprLineEdit->setValidator(new QRegExpValidator(QRegExp("^[0-9]{10,10}$"),
                                                 this));
  QLabel *templatesLabel = new QLabel(tr("Template:"));
  templates = new QComboBox();
  connect(templates, SIGNAL(currentIndexChanged(int)), this,
          SLOT(focusCpr(int)));
  QStringList groups = templateConfig.childGroups();
  QStringList::iterator i = groups.begin();
  while(i != groups.end()) {
    if(i->left(8) == "Template") {
      templateConfig.beginGroup(*i);
      QString name = templateConfig.value("name").toString();
      QString value = templateConfig.value("value").toString();
      templates->addItem(name, value);
      templateConfig.endGroup();
    }
    i++;
  }

  QPushButton *ok = new QPushButton(tr("Accept"));
  connect(ok, SIGNAL(clicked()), this, SLOT(checkForCpr()));
  QPushButton *cancel = new QPushButton(tr("Cancel"));
  connect(cancel, SIGNAL(clicked()), this, SLOT(reject()));

  QGridLayout *layout = new QGridLayout();
  layout->addWidget(templatesLabel, 1, 1);
  layout->addWidget(templates, 1, 2, 1, 2);
  layout->addWidget(cprLabel, 2, 1);
  layout->addWidget(cprLineEdit, 2, 2, 1, 2);
  layout->addWidget(ok, 3, 2);
  layout->addWidget(cancel, 3, 3);

  if(cpr != "CPR_DEFAULT")
    cprLineEdit->setText(cpr);

  if(templ != "TEMPLATE_DEFAULT") {
    long int i = 0;
    for(i = 0; i < templates->count(); i++) {
      if(templates->itemData(i).toString() == templ)
        templates->setCurrentIndex(i);
    }
  }

  setLayout(layout);
  cprLineEdit->setFocus();
}

LauncherWindow::~LauncherWindow()
{
}

QString LauncherWindow::getCpr()
{
  return cprLineEdit->text();
}

QString LauncherWindow::getTemplate()
{
  return templates->itemData(templates->currentIndex()).toString();
}

void LauncherWindow::focusCpr(int)
{
  cprLineEdit->setFocus();
}

void LauncherWindow::checkForCpr()
{
  if(cprLineEdit->text().length() == 10) {
    emit accept();
  } else {
    QMessageBox::critical(this, tr("Incorrect Patient ID"),
                          tr("You need to enter a 10 character\n"
                             "Patient ID in order to continue."),
                          QMessageBox::Ok);
    cprLineEdit->setFocus();
  }
}