OSCAR-code/oscar/aboutdialog.cpp
sawinglogz 1f4bb2d435 Clean up build information and version interface.
This removes git dependencies from everything except for version.cpp,
and removes the associated interfaces in version.h.

Since the full version string contains the branch and revision
number where applicable, the build information no longer needs
to report branch and revision separately. It also now queries
version.cpp for a more consistent and reliable build time.

Debug output of build information is also now more consistent with
less redundant code.
2020-01-16 13:58:18 -05:00

147 lines
4.8 KiB
C++

/* OSCAR AboutDialog Implementation
*
* Date created: 7/5/2018
*
* Copyright (c) 2018 Mark Watkins <mark@jedimark.net>
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file COPYING in the main directory of the Source Directory. */
#include <QDesktopServices>
#include <QFile>
#include <QDebug>
#include <QMessageBox>
#include "version.h"
#include "SleepLib/appsettings.h"
#include "aboutdialog.h"
#include "ui_aboutdialog.h"
AboutDialog::AboutDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AboutDialog)
{
ui->setupUi(this);
ui->aboutText->setHtml(getAbout());
ui->creditsText->setHtml(getCredits());
ui->licenseText->setHtml(getLicense());
ui->relnotesText->setHtml(getRelnotes());
ui->versionLabel->setText("");
QString path = GetAppData();
// TODO: consider replacing gitrev below with a link or button to the System Information window
QString text = /* gitrev + */ "<br/><br/><a href=\"file:///"+path+"\">"+tr("Show data folder")+"</a>";
ui->infoLabel->setText(text);
setWindowTitle(tr("About OSCAR %1").arg(getVersion().displayString()));
setMinimumSize(QSize(400,400));
this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
connect(ui->closeButton, SIGNAL(clicked(bool)), this, SLOT(accept()));
int idx=AppSetting->showAboutDialog();
if (idx<0) idx = 0; // start in about tab
ui->tabWidget->setCurrentIndex(idx);
}
AboutDialog::~AboutDialog()
{
disconnect(ui->closeButton, SIGNAL(clicked(bool)), this, SLOT(accept()));
delete ui;
}
/***************************************************
void AboutDialog::on_donateButton_clicked()
{
// QDesktopServices::openUrl(QUrl("http://sleepyhead.jedimark.net/donate.php"));
QMessageBox::information(nullptr, STR_MessageBox_Information, tr("Donations are not yet implemented"));
}
******************************************************/
QString AboutDialog::getFilename(QString name)
{
QString filename;
QString language = AppSetting->language();
if (language == "en_US") {
filename = ":docs/"+name+".html";
} else {
QString docRoot = appResourcePath() + "/Html/";
filename = docRoot + name + "-" + language + ".html";
if ( ! QFile::exists(filename) )
filename = ":docs/"+name+".html";
}
qDebug() << "Looking for " + filename;
return filename;
}
QString AboutDialog::getAbout()
{
QString aboutFile = getFilename("about");
QFile clfile(aboutFile);
QString text = tr("Sorry, could not locate About file.");
if (clfile.open(QIODevice::ReadOnly)) {
text = clfile.readAll();
} else
qDebug() << "Failed to open About file";
return text;
}
QString AboutDialog::getCredits()
{
QString creditsFile = getFilename("credits");
QFile clfile(creditsFile);
QString text = tr("Sorry, could not locate Credits file.");
if (clfile.open(QIODevice::ReadOnly)) {
text = clfile.readAll();
}
return text;
}
QString AboutDialog::getRelnotes()
{
QString relNotesFile = getFilename("release_notes");
QFile clfile(relNotesFile);
QString changeLog = tr("Sorry, could not locate Release Notes.");
if (clfile.open(QIODevice::ReadOnly)) {
//Todo, write XML parser and only show the latest..
//QTextStream ts(&clfile);
changeLog = clfile.readAll();
}
QString text = "<html>"
"<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></head>"
"<body><span style=\" font-size:20pt;\">"+tr("Release Notes")+"</span><br/>"
"<span style=\" font-size:14pt;\">"+tr("OSCAR %1").arg(getVersion())+"</span>"
"<hr/>";
if (getVersion().IsReleaseVersion() == false) {
text += "<p><font color='red' size=+1><b>"+tr("Important:")+"</b></font> "
"<font size=+1><i>"+tr("As this is a pre-release version, it is recommended that you <b>back up your data folder manually</b> before proceeding, because attempting to roll back later may break things.")+"</i></font></p><hr/>";
}
text += changeLog;
text += "</body></html>";
return text;
}
QString AboutDialog::getLicense()
{
QString text;
QString licenseFile = ":/docs/GPLv3-"+AppSetting->language();
if (!QFile::exists(licenseFile)) {
ui->licenceLabel->setText(tr("To see if the license text is available in your language, see %1.").arg("<a href=\"https://www.gnu.org/licenses/translations.en.html\">https://www.gnu.org/licenses/translations.en.html</a>"));
ui->licenceLabel->setVisible(true);
licenseFile = ":/docs/GPLv3-en_US";
} else {
ui->licenceLabel->setVisible(false);
}
QFile file(licenseFile);
if (file.open(QIODevice::ReadOnly)) {
text = "<div align=center>"+QString(file.readAll()).replace("\n","<br/>")+"</div>";
}
return text;
}