/AboutDialog.cpp
C++ | 135 lines | 97 code | 11 blank | 27 comment | 12 complexity | 69cb23a6be1ce7d63ba26a23a5726934 MD5 | raw file
Possible License(s): GPL-3.0
- /*****************************************************************************
- * gta5view Grand Theft Auto V 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 Grand Theft Auto V 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));
- }
- }