135 lines
4.8 KiB
C++
135 lines
4.8 KiB
C++
/*****************************************************************************
|
|
* rdr2view Red Dead Redemption 2 Profile Viewer
|
|
* Copyright (C) 2016-2019 Syping
|
|
*
|
|
* 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>
|
|
#include <QStringBuilder>
|
|
#include <QMessageBox>
|
|
#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("_", " ");
|
|
QString projectBuild = AppEnv::getBuildDateTime();
|
|
QString buildStr = GTA5SYNC_BUILDSTRING;
|
|
#ifndef GTA5SYNC_BUILDTYPE_REL
|
|
#ifdef GTA5SYNC_COMMIT
|
|
if (!appVersion.contains("-")) { appVersion = appVersion % "-" % GTA5SYNC_COMMIT; }
|
|
#endif
|
|
#endif
|
|
|
|
// Translator Comments
|
|
//: Translated by translator, example Translated by Syping
|
|
QString translatedByStr = tr("Translated by %1");
|
|
//: 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")
|
|
{
|
|
const QStringList translatorList = translatorVal.split('\n');
|
|
for (const QString &translatorStr : translatorList)
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Project Description
|
|
QString projectDes = tr("A project for viewing Red Dead Redemption 2 Snapmatic<br/>\nPictures and Savegames");
|
|
|
|
// Copyright Description
|
|
QString copyrightDes1 = tr("Copyright © <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;
|
|
if (!translatorContent.isEmpty())
|
|
{
|
|
copyrightDesA = copyrightDes1 % "<br/>" % translatedByStr.arg(translatorContent.join(", ")) % "<br/>" % copyrightDes2;
|
|
}
|
|
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));
|
|
|
|
// Set Icon for Close Button
|
|
if (QIcon::hasThemeIcon("dialog-close"))
|
|
{
|
|
ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close"));
|
|
}
|
|
else if (QIcon::hasThemeIcon("gtk-close"))
|
|
{
|
|
ui->cmdClose->setIcon(QIcon::fromTheme("gtk-close"));
|
|
}
|
|
|
|
// DPI calculation
|
|
qreal screenRatio = AppEnv::screenRatio();
|
|
if (!translatorContent.isEmpty())
|
|
{
|
|
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));
|
|
}
|
|
}
|