diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/mainwindow.cc | 30 | ||||
-rw-r--r-- | client/mainwindow.h | 2 | ||||
-rw-r--r-- | client/pracro.cc | 4 |
3 files changed, 28 insertions, 8 deletions
diff --git a/client/mainwindow.cc b/client/mainwindow.cc index f415dcb..4e41418 100644 --- a/client/mainwindow.cc +++ b/client/mainwindow.cc @@ -78,11 +78,14 @@ MainWindow::MainWindow(QString patientid, QString title, QString course, scrollarea = new QScrollArea(); setCentralWidget(scrollarea); - w = new QWidget(); - scrollarea->setWidget(w); + central = new QWidget(); + scrollarea->setWidget(central); scrollarea->setWidgetResizable(true); - w->setLayout(new QVBoxLayout()); + scrollarea->setFocusPolicy(Qt::NoFocus); + central->setFocusPolicy(Qt::NoFocus); + + central->setLayout(new QVBoxLayout()); connect(&netcom, SIGNAL(gotReply(QDomDocument&)), this, SLOT(handle(QDomDocument&))); @@ -107,6 +110,7 @@ MainWindow::MainWindow(QString patientid, QString title, QString course, aboutButton = new QPushButton("Pracro v."VERSION, status); aboutButton->setIcon(QIcon(":icons/icon.png")); aboutButton->setMaximumHeight(18); + aboutButton->setFocusPolicy(Qt::NoFocus); connect(aboutButton, SIGNAL(clicked()), this, SLOT(showAbout())); status->addPermanentWidget(aboutButton); @@ -278,7 +282,7 @@ void MainWindow::updateTemplateHeaders(QDomNode &node) headerfont.setPointSize(headerfont.pointSize() + 4); header->setFont(headerfont); header->setAlignment(Qt::AlignHCenter); - w->layout()->addWidget(header); + central->layout()->addWidget(header); } header->setText(title); @@ -294,6 +298,8 @@ void MainWindow::showError(QString title, QString text) void MainWindow::updateMacros(QDomNodeList &nodes) { + bool creation = entities.size() == 0; + for(int j = 0; j < nodes.count(); j++) { QDomNode node = nodes.at(j); QDomElement elem = node.toElement(); @@ -311,7 +317,7 @@ void MainWindow::updateMacros(QDomNodeList &nodes) } entities[j] = e; entities[j]->update(node); - w->layout()->addWidget(e->widget()); + central->layout()->addWidget(e->widget()); } else { entities[j]->update(node); } @@ -321,7 +327,16 @@ void MainWindow::updateMacros(QDomNodeList &nodes) showError("XML Error", "Expected macro/header tag. Got '" + elem.tagName() + "' tag."); continue; + } + if(creation) { + for(int i = 0; i < entities.size(); i++) { + Macro *macro = (Macro*)entities[i]; + if(macro->isstatic == false) { + macro->widget()->setFocus(); + break; + } + } } } @@ -340,7 +355,7 @@ void MainWindow::updateTemplates(QDomNodeList &nodes) this, SLOT(setTemplate(QString))); entities[j] = e; entities[j]->update(node); - w->layout()->addWidget(e->widget()); + central->layout()->addWidget(e->widget()); } else { entities[j]->update(node); } @@ -350,7 +365,10 @@ void MainWindow::updateTemplates(QDomNodeList &nodes) showError("XML Error", "Expected template tag. Got '" + elem.tagName() + "' tag."); continue; + } + if(entities.size() > 0) { + entities[0]->widget()->setFocus(); } } diff --git a/client/mainwindow.h b/client/mainwindow.h index 84151ad..ad96154 100644 --- a/client/mainwindow.h +++ b/client/mainwindow.h @@ -77,7 +77,7 @@ private: QString patientid; QString user; - QWidget *w; + QWidget *central; Entities entities; diff --git a/client/pracro.cc b/client/pracro.cc index 1e11e95..9e383e9 100644 --- a/client/pracro.cc +++ b/client/pracro.cc @@ -189,7 +189,6 @@ int main(int argc, char *argv[]) */ MainWindow mainwindow(cpr, title, course, templ, host, port, user); - mainwindow.show(); PCPViewer *pcpviewer = NULL; if(show_viewer) { @@ -199,6 +198,9 @@ int main(int argc, char *argv[]) pcpviewer, SLOT(close())); } + // Show last to gain focus. + mainwindow.show(); + int ret = app.exec(); if(pcpviewer) delete pcpviewer; |