From 75e5e02f9cf72058c512601b54b065650fd4001c Mon Sep 17 00:00:00 2001 From: Lars Bisballe Jensen Date: Thu, 13 Oct 2011 15:00:11 +0200 Subject: Added AboutBox that show when clicking Pracro button in status bar --- client/aboutbox.cc | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++ client/aboutbox.h | 59 +++++++++++++++++++ client/mainwindow.cc | 16 +++++- client/mainwindow.h | 3 + 4 files changed, 237 insertions(+), 1 deletion(-) create mode 100644 client/aboutbox.cc create mode 100644 client/aboutbox.h (limited to 'client') diff --git a/client/aboutbox.cc b/client/aboutbox.cc new file mode 100644 index 0000000..e4d1ffd --- /dev/null +++ b/client/aboutbox.cc @@ -0,0 +1,160 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * aboutbox.cc + * + * Tue Oct 11 14:39:02 CEST 2011 + * Copyright 2011 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 "aboutbox.h" +#include "stdio.h" + +#include +#include +#include +#include +#include +#include + +AboutBox::AboutBox(QWidget *parent, Qt::WindowFlags f): QDialog(parent, f) +{ + setWindowTitle(tr("About Pracro")); + setFixedSize(590,500); + + // Read AUTHORS data from file + QFile file(":AUTHORS"); + QByteArray authorsText; + if(file.open(QIODevice::ReadOnly)) { + authorsText = file.readAll(); + file.close(); + } else { + printf("ERROR: Couldn't find AUTHORS file at the designated location.\n"); + authorsText = "ERROR: File not found..."; + } + + // Read COPYING data from file + file.setFileName(":COPYING"); + QByteArray gplText; + if(file.open(QIODevice::ReadOnly)) { + gplText = file.readAll(); + file.close(); + } else { + printf("ERROR: Couldn't find COPYING file at the designated location.\n"); + gplText = "ERROR: File not found..."; + } + + QVBoxLayout *layout = new QVBoxLayout(); + + QHBoxLayout *topLayout = new QHBoxLayout(); + QLabel *logo = new QLabel(); + logo->setPixmap(QPixmap(":icons/icon.png")); + QLabel *title = new QLabel(tr("

Pracro Client

" + "

v."VERSION"

" + "Developed at Aarhus University Hospital")); + + topLayout->addWidget(logo); + topLayout->addWidget(title); + topLayout->setStretch(1, 1); + topLayout->setStretch(2, 2); + + QLabel *releaseInfo = new QLabel(authorsText); + releaseInfo->setStyleSheet("QLabel { background-color : white; }"); + + QScrollArea *releaseInfoScroll = new QScrollArea(); + releaseInfoScroll->setWidget(releaseInfo); + + QLabel *license = new QLabel(gplText); + license->setStyleSheet("QLabel { font-family: monospace; " + "background-color : white; }"); + licenseScroll = new QScrollArea(); + licenseScroll->setWidget(license); + + connect(licenseScroll->verticalScrollBar(), SIGNAL(sliderPressed()), + this, SLOT(noMoreScroll())); + tabs = new QTabWidget(); + connect(tabs, SIGNAL(currentChanged(int)), this, SLOT(checkTab(int))); + tabs->addTab(releaseInfoScroll, "Release Info"); + tabs->addTab(licenseScroll, "License"); + + layout->addLayout(topLayout); + layout->addWidget(tabs); + setLayout(layout); + + scrollState = 0; // 0 = initial state + // 1 = initiate scroll + // 2 = scroll 1 step + // 3 = no more scroll + + scrollTimer = new QTimer(); + scrollTimer->setSingleShot(true); + connect(scrollTimer, SIGNAL(timeout()), this, SLOT(scroll())); +} + +void AboutBox::mousePressEvent(QMouseEvent * event) +{ + if(event) { // TODO: Perhaps do a mouse click check on the event + accept(); + } +} + +void AboutBox::scroll() +{ + switch(scrollState) { + case 0 : // 0 = initial state + scrollState = 1; + scrollTimer->setInterval(5000); + scrollTimer->start(); + break; + case 1 : // 1 = initiate scroll + scrollState = 2; + licenseScroll->verticalScrollBar()->setValue(0); + scrollTimer->setInterval(200); + scrollTimer->start(); + break; + case 2 : // 2 = scroll 1 step + licenseScroll->verticalScrollBar()-> + setValue(licenseScroll->verticalScrollBar()->value() + 2); + if(licenseScroll->verticalScrollBar()->value() >= + licenseScroll->verticalScrollBar()->maximum()) { + scrollState = 0; + } + scrollTimer->start(); + break; + case 3 : // 3 = no more scroll + scrollTimer->stop(); + break; + } +} + +void AboutBox::noMoreScroll() +{ + scrollState = 3; +} + +void AboutBox::checkTab(int tabIndex) +{ + if(tabIndex == 1) { + scrollState = 0; + scrollTimer->stop(); + scroll(); + } +} diff --git a/client/aboutbox.h b/client/aboutbox.h new file mode 100644 index 0000000..db031f5 --- /dev/null +++ b/client/aboutbox.h @@ -0,0 +1,59 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * aboutbox.h + * + * Tue Oct 11 14:39:02 CEST 2011 + * Copyright 2011 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. + */ +#ifndef __PRACRO_ABOUTBOX_H__ +#define __PRACRO_ABOUTBOX_H__ + +#include +#include +#include +#include + +class AboutBox : public QDialog +{ +Q_OBJECT + +public: + AboutBox(QWidget *parent, Qt::WindowFlags f); + +public slots: + void scroll(); + void noMoreScroll(); + void checkTab(int tabIndex); + +signals: + +private: + void mousePressEvent(QMouseEvent * event); + QScrollArea *licenseScroll; + QTimer *scrollTimer; + int scrollState; + QTabWidget *tabs; +}; + + +#endif/*__PRACRO_ABOUTBOX_H__*/ diff --git a/client/mainwindow.cc b/client/mainwindow.cc index 6bf0543..7db7076 100644 --- a/client/mainwindow.cc +++ b/client/mainwindow.cc @@ -41,6 +41,7 @@ #include #include +#include "aboutbox.h" #include "messagebox.h" #include "macrodrawer.h" @@ -102,7 +103,14 @@ MainWindow::MainWindow(QString patientid, QString course, QString templ, setWindowIcon(QIcon(":/icons/icon.png")); QStatusBar *status = statusBar(); - status->addPermanentWidget(new QLabel("Pracro v."VERSION)); + //status->addPermanentWidget(new QLabel("Pracro v."VERSION)); + + aboutButton = new QPushButton("Pracro v."VERSION, status); + aboutButton->setIcon(QIcon(":icons/icon.png")); + connect(aboutButton, SIGNAL(clicked()), this, SLOT(showAbout())); + + status->addPermanentWidget(aboutButton); + if(dbg_enabled()) { status->addPermanentWidget(new Dbg()); } @@ -133,6 +141,12 @@ MainWindow::~MainWindow() { } +void MainWindow::showAbout() +{ + AboutBox aboutBox(this, Qt::Dialog); + aboutBox.exec(); +} + bool MainWindow::hasOpen(void *me) { Entities::iterator i = entities.begin(); diff --git a/client/mainwindow.h b/client/mainwindow.h index c52db58..4a06724 100644 --- a/client/mainwindow.h +++ b/client/mainwindow.h @@ -50,6 +50,7 @@ public: public slots: // void update(); + void showAbout(); void closeCommit(); void closeNoCommit(); void closeDiscard(); @@ -79,6 +80,8 @@ private: QLabel *header; + QPushButton *aboutButton; + bool initialising; // Sessions sessions; -- cgit v1.2.3