gta5view/AboutDialog.cpp

135 lines
4.8 KiB
C++
Raw Normal View History

2017-10-09 08:35:48 +02:00
/*****************************************************************************
* gta5sync GRAND THEFT AUTO V SYNC
2018-01-11 08:41:00 +01:00
* Copyright (C) 2016-2018 Syping
2017-10-09 08:35:48 +02:00
*
* This program 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 3 of the License, or
* (at your option) any later version.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
*****************************************************************************/
#include <QDesktopServices>
2017-10-09 08:35:48 +02:00
#include <QStringBuilder>
#include <QMessageBox>
2017-10-09 08:35:48 +02:00
#include "AboutDialog.h"
#include "ui_AboutDialog.h"
#include "AppEnv.h"
#include "config.h"
AboutDialog::AboutDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AboutDialog)
{
// Set Window Flags
setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint);
// Build Strings
QString appVersion = qApp->applicationVersion();
QString buildType = tr(GTA5SYNC_BUILDTYPE);
buildType.replace("_", " ");
2018-01-11 08:41:00 +01:00
QString projectBuild = AppEnv::getBuildDateTime();
2017-10-09 08:35:48 +02:00
QString buildStr = GTA5SYNC_BUILDSTRING;
// Translator Comments
//: Translated by translator, example Translated by Syping
QString translatedByStr = tr("Translated by %1");
2018-01-16 22:28:37 +01:00
//: Insert your name here and profile here in following scheme, First Translator,First Profile\\nSecond Translator\\nThird Translator,Second Profile
QString translatorVal = tr("TRANSLATOR");
QStringList translatorContent;
if (translatorVal != "TRANSLATOR")
2017-10-09 08:35:48 +02:00
{
2018-01-16 22:28:37 +01:00
const QStringList translatorList = translatorVal.split('\n');
for (const QString &translatorStr : translatorList)
2017-10-09 08:35:48 +02:00
{
2018-01-16 22:28:37 +01:00
QStringList translatorStrList = translatorStr.split(',');
QString translatorName = translatorStrList.at(0);
translatorStrList.removeFirst();
QString translatorProfile = translatorStrList.join(QString());
if (!translatorProfile.isEmpty())
{
translatorContent += QString("<a href=\"%1\">%2</a>").arg(translatorProfile, translatorName);
}
else
{
translatorContent += translatorName;
}
2017-10-09 08:35:48 +02:00
}
}
// Project Description
#ifdef GTA5SYNC_ENABLED
QString projectDes = tr("A project for viewing and sync Grand Theft Auto V Snapmatic<br/>\nPictures and Savegames");
#else
QString projectDes = tr("A project for viewing Grand Theft Auto V Snapmatic<br/>\nPictures and Savegames");
#endif
// Copyright Description
QString copyrightDes1 = tr("Copyright &copy; <a href=\"%1\">%2</a> %3");
copyrightDes1 = copyrightDes1.arg(GTA5SYNC_APPVENDORLINK, GTA5SYNC_APPVENDOR, GTA5SYNC_COPYRIGHT);
QString copyrightDes2 = tr("%1 is licensed under <a href=\"https://www.gnu.org/licenses/gpl-3.0.html#content\">GNU GPLv3</a>");
copyrightDes2 = copyrightDes2.arg(GTA5SYNC_APPSTR);
QString copyrightDesA;
2018-01-16 22:28:37 +01:00
if (!translatorContent.isEmpty())
2017-10-09 08:35:48 +02:00
{
2018-01-16 22:28:37 +01:00
copyrightDesA = copyrightDes1 % "<br/>" % translatedByStr.arg(translatorContent.join(", ")) % "<br/>" % copyrightDes2;
2017-10-09 08:35:48 +02:00
}
else
{
copyrightDesA = copyrightDes1 % "<br/>" % copyrightDes2;
}
// Setup User Interface
ui->setupUi(this);
aboutStr = ui->labAbout->text();
titleStr = this->windowTitle();
ui->labAbout->setText(aboutStr.arg(GTA5SYNC_APPSTR, projectDes, appVersion % " (" % buildType % ")", projectBuild, buildStr, qVersion(), copyrightDesA));
this->setWindowTitle(titleStr.arg(GTA5SYNC_APPSTR));
2018-01-11 08:41:00 +01:00
// Set Icon for Close Button
2017-10-09 08:35:48 +02:00
if (QIcon::hasThemeIcon("dialog-close"))
{
ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close"));
}
2018-01-11 08:41:00 +01:00
else if (QIcon::hasThemeIcon("gtk-close"))
{
ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close"));
}
2017-10-09 08:35:48 +02:00
// DPI calculation
qreal screenRatio = AppEnv::screenRatio();
2018-01-16 22:28:37 +01:00
if (!translatorContent.isEmpty())
2017-10-09 08:35:48 +02:00
{
resize(375 * screenRatio, 270 * screenRatio);
}
else
{
resize(375 * screenRatio, 260 * screenRatio);
}
}
AboutDialog::~AboutDialog()
{
delete ui;
}
void AboutDialog::on_labAbout_linkActivated(const QString &link)
{
if (link.left(12) == "g5e://about?")
{
QStringList aboutStrList = QString(link).remove(0, 12).split(":");
QMessageBox::information(this, QString::fromUtf8(QByteArray::fromBase64(aboutStrList.at(0).toUtf8())), QString::fromUtf8(QByteArray::fromBase64(aboutStrList.at(1).toUtf8())));
}
else
{
QDesktopServices::openUrl(QUrl(link));
}
}