diff options
Diffstat (limited to 'src/aboutdialog.cc')
-rw-r--r-- | src/aboutdialog.cc | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/src/aboutdialog.cc b/src/aboutdialog.cc new file mode 100644 index 0000000..179f176 --- /dev/null +++ b/src/aboutdialog.cc @@ -0,0 +1,181 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + * aboutdialog.cc + * + * Sat Oct 6 14:29:56 CEST 2018 + * Copyright 2018 Bent Bisballe Nyeng + * deva@aasimon.org + ****************************************************************************/ + +/* + * This file is part of DrumGizmo. + * + * DrumGizmo 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. + * + * DrumGizmo 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 DrumGizmo; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +#include "aboutdialog.h" + +#include "stdio.h" + +#include <QLabel> +#include <QVBoxLayout> +#include <QFile> +#include <QTimer> +#include <QScrollBar> +#include <QScrollArea> + +#include <version.h> + +AboutDialog::AboutDialog(QWidget *parent, Qt::WindowFlags f) + : QDialog(parent, f) +{ + setWindowTitle(tr("About DGEdit")); + 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/logo.png")); + QLabel *title = new QLabel; + title->setWordWrap(true); + title->setText(tr("<h1>DGEdit</h1>" + "<h2>v." VERSION "</h2>" + "Copyright (C) 2008-2018 Bent Bisballe Nyeng - Aasimon.org.<br/>" + "This is free software. You may redistribute copies of it " + "under the terms of the GNU General Public License " + "(http://www.gnu.org/licenses/gpl.html). There is NO " + "WARRANTY, to the extent permitted by law.")); + + 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); + releaseInfoScroll->setStyleSheet("QScrollArea { background-color : white; }"); + + QLabel *license = new QLabel(gplText); + license->setStyleSheet("QLabel { font-family: monospace; " + "background-color : white; }"); + licenseScroll = new QScrollArea(); + licenseScroll->setStyleSheet("QScrollArea { background-color : white; }"); + 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 AboutDialog::mousePressEvent(QMouseEvent * event) +{ + if(event) // TODO: Perhaps do a mouse click check on the event + { + accept(); + } +} + +void AboutDialog::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 AboutDialog::noMoreScroll() +{ + scrollState = 3; +} + +void AboutDialog::checkTab(int tabIndex) +{ + if(tabIndex == 1) + { + scrollState = 0; + scrollTimer->stop(); + scroll(); + } +} |