2021-01-18 07:28:54 +00:00
/* Copyright 2013-2021 MultiMC Contributors
2013-10-08 22:11:24 +01:00
*
* Licensed under the Apache License , Version 2.0 ( the " License " ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an " AS IS " BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*/
2013-11-04 01:53:05 +00:00
# include "AboutDialog.h"
# include "ui_AboutDialog.h"
# include <QIcon>
2021-11-20 15:22:22 +00:00
# include "Application.h"
2014-04-06 02:59:37 +01:00
# include "BuildConfig.h"
2013-10-08 21:45:48 +01:00
2015-02-09 00:51:14 +00:00
# include <net/NetJob.h>
2014-05-01 18:43:55 +01:00
2017-05-06 17:27:47 +01:00
# include "HoeDown.h"
2019-09-30 22:50:32 +01:00
namespace {
2014-05-01 18:43:55 +01:00
// Credits
// This is a hack, but I can't think of a better way to do this easily without screwing with QTextDocument...
2019-09-30 22:50:32 +01:00
QString getCreditsHtml ( QStringList patrons )
2014-05-01 18:43:55 +01:00
{
2019-09-30 22:50:32 +01:00
QString patronsHeading = QObject : : tr ( " Patrons " , " About Credits " ) ;
QString output ;
QTextStream stream ( & output ) ;
2021-10-17 23:47:02 +01:00
stream . setCodec ( QTextCodec : : codecForName ( " UTF-8 " ) ) ;
2019-09-30 22:50:32 +01:00
stream < < " <center> \n " ;
// TODO: possibly retrieve from git history at build time?
2021-10-17 23:47:02 +01:00
stream < < " <h3> " < < QObject : : tr ( " Developers " , " About Credits " ) < < " </h3> \n " ;
2019-09-30 22:50:32 +01:00
stream < < " <p>Andrew Okin <<a href='mailto:forkk@forkk.net'>forkk@forkk.net</a>></p> \n " ;
stream < < " <p>Petr Mrázek <<a href='mailto:peterix@gmail.com'>peterix@gmail.com</a>></p> \n " ;
stream < < " <p>Sky Welch <<a href='mailto:multimc@bunnies.io'>multimc@bunnies.io</a>></p> \n " ;
stream < < " <p>Jan (02JanDal) <<a href='mailto:02jandal@gmail.com'>02jandal@gmail.com</a>></p> \n " ;
stream < < " <p>RoboSky <<a href='https://twitter.com/RoboSky_'>@RoboSky_</a>></p> \n " ;
stream < < " <br /> \n " ;
stream < < " <h3> " < < QObject : : tr ( " With thanks to " , " About Credits " ) < < " </h3> \n " ;
stream < < " <p>Orochimarufan <<a href='mailto:orochimarufan.x3@gmail.com'>orochimarufan.x3@gmail.com</a>></p> \n " ;
stream < < " <p>TakSuyu <<a href='mailto:taksuyu@gmail.com'>taksuyu@gmail.com</a>></p> \n " ;
stream < < " <p>Kilobyte <<a href='mailto:stiepen22@gmx.de'>stiepen22@gmx.de</a>></p> \n " ;
stream < < " <p>Rootbear75 <<a href='https://twitter.com/rootbear75'>@rootbear75</a>></p> \n " ;
2020-03-29 02:12:57 +01:00
stream < < " <p>Zeker Zhayard <<a href='https://twitter.com/zeker_zhayard'>@Zeker_Zhayard</a>></p> \n " ;
2019-09-30 22:50:32 +01:00
stream < < " <br /> \n " ;
if ( ! patrons . isEmpty ( ) ) {
stream < < " <h3> " < < QObject : : tr ( " Patrons " , " About Credits " ) < < " </h3> \n " ;
2018-07-15 13:51:05 +01:00
for ( QString patron : patrons )
{
2019-09-30 22:50:32 +01:00
stream < < " <p> " < < patron < < " </p> \n " ;
2018-07-15 13:51:05 +01:00
}
}
2019-09-30 22:50:32 +01:00
stream < < " </center> \n " ;
return output ;
2014-05-01 18:43:55 +01:00
}
2019-09-30 22:50:32 +01:00
QString getLicenseHtml ( )
2017-05-06 17:27:47 +01:00
{
2018-07-15 13:51:05 +01:00
HoeDown hoedown ;
QFile dataFile ( " :/documents/COPYING.md " ) ;
dataFile . open ( QIODevice : : ReadOnly ) ;
QString output = hoedown . process ( dataFile . readAll ( ) ) ;
return output ;
2017-05-06 17:27:47 +01:00
}
2019-09-30 22:50:32 +01:00
}
2013-11-04 01:53:05 +00:00
AboutDialog : : AboutDialog ( QWidget * parent ) : QDialog ( parent ) , ui ( new Ui : : AboutDialog )
2013-10-09 01:03:02 +01:00
{
2018-07-15 13:51:05 +01:00
ui - > setupUi ( this ) ;
2013-10-08 21:45:48 +01:00
2021-10-17 23:47:02 +01:00
QString launcherName = BuildConfig . LAUNCHER_NAME ;
setWindowTitle ( tr ( " About %1 " ) . arg ( launcherName ) ) ;
2018-07-15 13:51:05 +01:00
QString chtml = getCreditsHtml ( QStringList ( ) ) ;
ui - > creditsText - > setHtml ( chtml ) ;
2014-05-01 18:43:55 +01:00
2018-07-15 13:51:05 +01:00
QString lhtml = getLicenseHtml ( ) ;
ui - > licenseText - > setHtml ( lhtml ) ;
2017-05-06 17:27:47 +01:00
2018-07-15 13:51:05 +01:00
ui - > urlLabel - > setOpenExternalLinks ( true ) ;
2014-01-09 05:38:34 +00:00
2021-11-20 15:22:22 +00:00
ui - > icon - > setPixmap ( APPLICATION - > getThemedIcon ( " logo " ) . pixmap ( 64 ) ) ;
2021-10-17 23:47:02 +01:00
ui - > title - > setText ( launcherName ) ;
2014-01-08 00:31:31 +00:00
2018-07-15 13:51:05 +01:00
ui - > versionLabel - > setText ( tr ( " Version " ) + " : " + BuildConfig . printableVersionString ( ) ) ;
ui - > platformLabel - > setText ( tr ( " Platform " ) + " : " + BuildConfig . BUILD_PLATFORM ) ;
2014-01-08 00:31:31 +00:00
2018-07-15 13:51:05 +01:00
if ( BuildConfig . VERSION_BUILD > = 0 )
ui - > buildNumLabel - > setText ( tr ( " Build Number " ) + " : " + QString : : number ( BuildConfig . VERSION_BUILD ) ) ;
else
ui - > buildNumLabel - > setVisible ( false ) ;
2014-01-08 00:31:31 +00:00
2018-07-15 13:51:05 +01:00
if ( ! BuildConfig . VERSION_CHANNEL . isEmpty ( ) )
ui - > channelLabel - > setText ( tr ( " Channel " ) + " : " + BuildConfig . VERSION_CHANNEL ) ;
else
ui - > channelLabel - > setVisible ( false ) ;
2014-01-08 00:31:31 +00:00
2019-09-30 22:50:32 +01:00
ui - > redistributionText - > setHtml ( tr (
" <p>We keep MultiMC open source because we think it's important to be able to see the source code for a project like this, and we do so using the Apache license.</p> \n "
" <p>Part of the reason for using the Apache license is we don't want people using the "MultiMC" name when redistributing the project. "
" This means people must take the time to go through the source code and remove all references to "MultiMC", including but not limited to the project "
" icon and the title of windows, (no <b>MultiMC-fork</b> in the title).</p> \n "
" <p>The Apache license covers reasonable use for the name - a mention of the project's origins in the About dialog and the license is acceptable. "
" However, it should be abundantly clear that the project is a fork <b>without</b> implying that you have our blessing.</p> "
) ) ;
2021-10-20 22:06:21 +01:00
QString urlText ( " <html><head/><body><p><a href= \" %1 \" >%1</a></p></body></html> " ) ;
ui - > urlLabel - > setText ( urlText . arg ( BuildConfig . LAUNCHER_GIT ) ) ;
QString copyText ( " © 2012-2021 %1 " ) ;
ui - > copyLabel - > setText ( copyText . arg ( BuildConfig . LAUNCHER_COPYRIGHT ) ) ;
2018-07-15 13:51:05 +01:00
connect ( ui - > closeButton , SIGNAL ( clicked ( ) ) , SLOT ( close ( ) ) ) ;
2013-10-08 21:45:48 +01:00
2018-07-15 13:51:05 +01:00
connect ( ui - > aboutQt , & QPushButton : : clicked , & QApplication : : aboutQt ) ;
2014-05-01 18:43:55 +01:00
2018-07-15 13:51:05 +01:00
loadPatronList ( ) ;
2013-11-04 01:53:05 +00:00
}
2013-10-12 14:19:49 +01:00
2013-11-04 01:53:05 +00:00
AboutDialog : : ~ AboutDialog ( )
{
2018-07-15 13:51:05 +01:00
delete ui ;
2013-11-04 01:53:05 +00:00
}
2014-05-01 18:43:55 +01:00
void AboutDialog : : loadPatronList ( )
{
2021-12-31 04:27:59 +00:00
netJob = new NetJob ( " Patreon Patron List " , APPLICATION - > network ( ) ) ;
2018-11-02 12:04:08 +00:00
netJob - > addNetAction ( Net : : Download : : makeByteArray ( QUrl ( " https://files.multimc.org/patrons.txt " ) , & dataSink ) ) ;
2018-07-15 13:51:05 +01:00
connect ( netJob . get ( ) , & NetJob : : succeeded , this , & AboutDialog : : patronListLoaded ) ;
2021-12-31 04:27:59 +00:00
netJob - > start ( ) ;
2014-05-01 18:43:55 +01:00
}
void AboutDialog : : patronListLoaded ( )
{
2018-07-15 13:51:05 +01:00
QString patronListStr ( dataSink ) ;
dataSink . clear ( ) ;
QString html = getCreditsHtml ( patronListStr . split ( " \n " , QString : : SkipEmptyParts ) ) ;
ui - > creditsText - > setHtml ( html ) ;
2014-05-01 18:43:55 +01:00
}