2018-02-27 18:06:05 +01:00
/*
* Strawberry Music Player
* This file was part of Clementine .
* Copyright 2010 , David Sansome < me @ davidsansome . com >
2021-03-20 21:14:47 +01:00
* Copyright 2013 - 2021 , Jonas Kvinge < jonas @ jkvinge . net >
2018-02-27 18:06:05 +01:00
*
* Strawberry 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 .
*
* Strawberry 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 Strawberry . If not , see < http : //www.gnu.org/licenses/>.
2018-08-09 18:39:44 +02:00
*
2018-02-27 18:06:05 +01:00
*/
# include "config.h"
# include <QCoreApplication>
2018-05-01 00:41:33 +02:00
# include <QWidget>
# include <QDialog>
# include <QDialogButtonBox>
# include <QString>
# include <QFlags>
# include <QFont>
# include <QLabel>
2018-02-27 18:06:05 +01:00
# include <QPushButton>
2018-05-01 00:41:33 +02:00
# include <QKeySequence>
2020-02-09 02:29:35 +01:00
# include <QTextBrowser>
2018-05-01 00:41:33 +02:00
# include "about.h"
# include "ui_about.h"
2018-02-27 18:06:05 +01:00
2021-10-30 01:58:47 +02:00
About : : About ( QWidget * parent ) : QDialog ( parent ) , ui_ { } {
2018-09-14 23:58:58 +02:00
ui_ . setupUi ( this ) ;
2021-09-13 20:49:33 +02:00
setWindowFlags ( windowFlags ( ) | Qt : : WindowStaysOnTopHint ) ;
2020-08-12 17:27:08 +02:00
setWindowTitle ( tr ( " About Strawberry " ) ) ;
2018-09-14 23:58:58 +02:00
strawberry_authors_ \
2024-04-09 23:20:26 +02:00
< < Person ( QStringLiteral ( " Jonas Kvinge " ) ) ;
2019-07-30 21:30:08 +02:00
2019-08-22 18:49:03 +02:00
strawberry_contributors_ \
2024-04-09 23:20:26 +02:00
< < Person ( QStringLiteral ( " Gavin D. Howard " ) )
< < Person ( QStringLiteral ( " Martin Delille " ) ) ;
2019-07-30 21:30:08 +02:00
2018-02-27 18:06:05 +01:00
clementine_authors_
2024-04-09 23:20:26 +02:00
< < Person ( QStringLiteral ( " David Sansome " ) )
< < Person ( QStringLiteral ( " John Maguire " ) )
< < Person ( QStringLiteral ( " Paweł Bara " ) )
< < Person ( QStringLiteral ( " Arnaud Bienner " ) ) ;
2018-02-27 18:06:05 +01:00
2019-08-22 18:49:03 +02:00
clementine_contributors_ \
2024-04-09 23:20:26 +02:00
< < Person ( QStringLiteral ( " Jakub Stachowski " ) )
< < Person ( QStringLiteral ( " Paul Cifarelli " ) )
< < Person ( QStringLiteral ( " Felipe Rivera " ) )
< < Person ( QStringLiteral ( " Alexander Peitz " ) )
< < Person ( QStringLiteral ( " Andreas Muttscheller " ) )
< < Person ( QStringLiteral ( " Mark Furneaux " ) )
< < Person ( QStringLiteral ( " Florian Bigard " ) )
< < Person ( QStringLiteral ( " Alex Bikadorov " ) )
< < Person ( QStringLiteral ( " Mattias Andersson " ) )
< < Person ( QStringLiteral ( " Alan Briolat " ) )
< < Person ( QStringLiteral ( " Arun Narayanankutty " ) )
< < Person ( QStringLiteral ( " Bartłomiej Burdukiewicz " ) )
< < Person ( QStringLiteral ( " Andre Siviero " ) )
< < Person ( QStringLiteral ( " Santiago Gil " ) )
< < Person ( QStringLiteral ( " Tyler Rhodes " ) )
< < Person ( QStringLiteral ( " Vikram Ambrose " ) )
< < Person ( QStringLiteral ( " David Guillen " ) )
< < Person ( QStringLiteral ( " Krzysztof Sobiecki " ) )
< < Person ( QStringLiteral ( " Valeriy Malov " ) )
< < Person ( QStringLiteral ( " Nick Lanham " ) ) ;
2018-07-20 02:07:47 +02:00
2020-05-16 00:45:15 +02:00
strawberry_thanks_ \
2024-04-09 23:20:26 +02:00
< < Person ( QStringLiteral ( " Mark Kretschmann " ) )
< < Person ( QStringLiteral ( " Max Howell " ) )
< < Person ( QStringLiteral ( " Artur Rona " ) )
< < Person ( QStringLiteral ( " Robert-André Mauchin " ) )
< < Person ( QStringLiteral ( " Thomas Pierson " ) )
< < Person ( QStringLiteral ( " Fabio Loli " ) ) ;
2020-05-16 00:45:15 +02:00
2018-02-27 18:06:05 +01:00
QFont title_font ;
title_font . setBold ( true ) ;
title_font . setPointSize ( title_font . pointSize ( ) + 4 ) ;
2018-09-14 23:58:58 +02:00
ui_ . label_title - > setFont ( title_font ) ;
2020-08-12 17:27:08 +02:00
ui_ . label_title - > setText ( windowTitle ( ) ) ;
2018-09-14 23:58:58 +02:00
ui_ . label_text - > setText ( MainHtml ( ) ) ;
2024-04-09 23:20:26 +02:00
ui_ . text_contributors - > document ( ) - > setDefaultStyleSheet ( QStringLiteral ( " a {color: %1; } " ) . arg ( palette ( ) . text ( ) . color ( ) . name ( ) ) ) ;
2019-08-22 18:49:03 +02:00
ui_ . text_contributors - > setText ( ContributorsHtml ( ) ) ;
2018-02-27 18:06:05 +01:00
2018-09-14 23:58:58 +02:00
ui_ . buttonBox - > button ( QDialogButtonBox : : Close ) - > setShortcut ( QKeySequence : : Close ) ;
2018-02-27 18:06:05 +01:00
2018-09-14 23:58:58 +02:00
}
2018-04-06 22:13:11 +02:00
2018-09-14 23:58:58 +02:00
QString About : : MainHtml ( ) const {
QString ret ;
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
2019-12-29 23:37:48 +01:00
ret + = tr ( " Version %1 " ) . arg ( QCoreApplication : : applicationVersion ( ) ) ;
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " </p> " ) ;
2019-12-29 23:37:48 +01:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
2019-12-29 23:37:48 +01:00
ret + = tr ( " Strawberry is a music player and music collection organizer. " ) ;
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <br /> " ) ;
2020-05-16 00:45:15 +02:00
ret + = tr ( " It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles. " ) ;
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " </p> " ) ;
2020-05-16 00:45:15 +02:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
ret + = tr ( " Strawberry is free software released under GPL. The source code is available on %1 " ) . arg ( QStringLiteral ( " <a style= \" color:%1; \" href= \" https://github.com/strawberrymusicplayer/strawberry \" >GitHub</a>. " ) . arg ( palette ( ) . text ( ) . color ( ) . name ( ) ) ) ;
ret + = QStringLiteral ( " <br /> " ) ;
ret + = tr ( " You should have received a copy of the GNU General Public License along with this program. If not, see %1 " ) . arg ( QStringLiteral ( " <a style= \" color:%1; \" href= \" http://www.gnu.org/licenses/ \" >http://www.gnu.org/licenses/</a> " ) . arg ( palette ( ) . text ( ) . color ( ) . name ( ) ) ) ;
ret + = QStringLiteral ( " </p> " ) ;
2020-05-16 00:45:15 +02:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
2020-06-08 23:40:15 +02:00
ret + = tr ( " If you like Strawberry and can make use of it, consider sponsoring or donating. " ) ;
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <br /> " ) ;
2021-03-21 04:47:11 +01:00
ret + = tr ( " You can sponsor the author on %1. You can also make a one-time payment through %2. " ) . arg (
2024-04-09 23:20:26 +02:00
QStringLiteral ( " <a style= \" color:%1; \" href= \" https://github.com/sponsors/jonaski \" >GitHub sponsors</a> " ) . arg ( palette ( ) . text ( ) . color ( ) . name ( ) ) ,
QStringLiteral ( " <a style= \" color:%1; \" href= \" https://paypal.me/jonaskvinge \" >paypal.me/jonaskvinge</a> " ) . arg ( palette ( ) . text ( ) . color ( ) . name ( ) )
2021-03-21 04:47:11 +01:00
) ;
2020-08-12 17:27:08 +02:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " </p> " ) ;
2018-04-06 22:13:11 +02:00
2018-09-14 23:58:58 +02:00
return ret ;
2018-04-06 22:13:11 +02:00
2018-09-14 23:58:58 +02:00
}
2018-02-27 18:06:05 +01:00
2018-09-14 23:58:58 +02:00
QString About : : ContributorsHtml ( ) const {
2018-02-27 18:06:05 +01:00
2018-09-14 23:58:58 +02:00
QString ret ;
2018-02-27 18:06:05 +01:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
ret + = QLatin1String ( " <b> " ) ;
2020-05-16 00:45:15 +02:00
ret + = tr ( " Author and maintainer " ) ;
2024-04-09 23:20:26 +02:00
ret + = QLatin1String ( " </b> " ) ;
2018-09-14 23:58:58 +02:00
for ( const Person & person : strawberry_authors_ ) {
2024-04-11 02:56:01 +02:00
ret + = QStringLiteral ( " <br /> " ) + PersonToHtml ( person ) ;
2018-02-27 18:06:05 +01:00
}
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " </p> " ) ;
2018-02-27 18:06:05 +01:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
ret + = QLatin1String ( " <b> " ) ;
2019-12-29 23:37:48 +01:00
ret + = tr ( " Contributors " ) ;
2024-04-09 23:20:26 +02:00
ret + = QLatin1String ( " </b> " ) ;
2019-08-22 18:49:03 +02:00
for ( const Person & person : strawberry_contributors_ ) {
2024-04-11 02:56:01 +02:00
ret + = QStringLiteral ( " <br /> " ) + PersonToHtml ( person ) ;
2019-07-30 21:30:08 +02:00
}
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " </p> " ) ;
2019-07-30 21:30:08 +02:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
ret + = QLatin1String ( " <b> " ) ;
2020-05-16 00:45:15 +02:00
ret + = tr ( " Clementine authors " ) ;
2024-04-09 23:20:26 +02:00
ret + = QLatin1String ( " </b> " ) ;
2020-05-16 00:45:15 +02:00
for ( const Person & person : clementine_authors_ ) {
2024-04-11 02:56:01 +02:00
ret + = QStringLiteral ( " <br /> " ) + PersonToHtml ( person ) ;
2019-07-30 21:30:08 +02:00
}
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " </p> " ) ;
2019-07-30 21:30:08 +02:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
ret + = QLatin1String ( " <b> " ) ;
2020-05-16 00:45:15 +02:00
ret + = tr ( " Clementine contributors " ) ;
2024-04-09 23:20:26 +02:00
ret + = QLatin1String ( " </b> " ) ;
2020-05-16 00:45:15 +02:00
for ( const Person & person : clementine_contributors_ ) {
2024-04-11 02:56:01 +02:00
ret + = QStringLiteral ( " <br /> " ) + PersonToHtml ( person ) ;
2018-02-27 18:06:05 +01:00
}
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " </p> " ) ;
2018-02-27 18:06:05 +01:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
ret + = QLatin1String ( " <b> " ) ;
2020-05-16 00:45:15 +02:00
ret + = tr ( " Thanks to " ) ;
2024-04-09 23:20:26 +02:00
ret + = QLatin1String ( " </b> " ) ;
2020-05-16 00:45:15 +02:00
for ( const Person & person : strawberry_thanks_ ) {
2024-04-11 02:56:01 +02:00
ret + = QStringLiteral ( " <br /> " ) + PersonToHtml ( person ) ;
2018-02-27 18:06:05 +01:00
}
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " </p> " ) ;
2018-02-27 18:06:05 +01:00
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " <p> " ) ;
2019-12-29 23:46:49 +01:00
ret + = tr ( " Thanks to all the other Amarok and Clementine contributors. " ) ;
2024-04-09 23:20:26 +02:00
ret + = QStringLiteral ( " </p> " ) ;
2018-02-27 18:06:05 +01:00
return ret ;
}
2021-06-22 13:41:38 +02:00
QString About : : PersonToHtml ( const Person & person ) {
2018-02-27 18:06:05 +01:00
2021-08-23 21:21:08 +02:00
if ( person . email . isEmpty ( ) ) {
2018-02-27 18:06:05 +01:00
return person . name ;
2021-08-23 21:21:08 +02:00
}
else {
2024-04-09 23:20:26 +02:00
return QStringLiteral ( " %1 <<a href= \" mailto:%2 \" >%3</a>> " ) . arg ( person . name , person . email , person . email ) ;
2021-08-23 21:21:08 +02:00
}
2018-02-27 18:06:05 +01:00
}