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 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 client/aboutbox.cc (limited to 'client/aboutbox.cc') 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(); + } +} -- cgit v1.2.3