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 <QStringBuilder>
# 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
About : : About ( QWidget * parent ) : QDialog ( parent ) {
2018-09-14 23:58:58 +02:00
ui_ . setupUi ( this ) ;
setWindowFlags ( this - > 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_ \
2019-07-30 21:30:08 +02:00
< < Person ( " Jonas Kvinge " , " jonas@jkvinge.net " ) ;
2019-08-22 18:49:03 +02:00
strawberry_contributors_ \
2019-07-30 21:30:08 +02:00
< < Person ( " Gavin D. Howard " , " yzena.tech@gmail.com " )
2019-10-29 19:12:29 +01:00
< < Person ( " Martin Delille " , " martin@delille.org " ) ;
2019-07-30 21:30:08 +02:00
2018-02-27 18:06:05 +01:00
clementine_authors_
< < Person ( " David Sansome " , " me@davidsansome.com " )
< < Person ( " John Maguire " , " john.maguire@gmail.com " )
< < Person ( QString : : fromUtf8 ( " Paweł Bara " ) , " keirangtp@gmail.com " )
< < Person ( " Arnaud Bienner " , " arnaud.bienner@gmail.com " ) ;
2019-08-22 18:49:03 +02:00
clementine_contributors_ \
2018-02-27 18:06:05 +01:00
< < Person ( " Jakub Stachowski " , " qbast@go2.pl " )
< < Person ( " Paul Cifarelli " , " paul@cifarelli.net " )
< < Person ( " Felipe Rivera " , " liebremx@users.sourceforge.net " )
< < Person ( " Alexander Peitz " )
2018-07-20 02:07:47 +02:00
< < Person ( " Andreas Muttscheller " , " asfa194@gmail.com " )
< < Person ( " Mark Furneaux " , " mark@furneaux.ca " )
< < Person ( " Florian Bigard " , " florian.bigard@gmail.com " )
2018-07-20 02:28:42 +02:00
< < Person ( " Alex Bikadorov " , " wegwerf@abwesend.de " )
< < Person ( " Mattias Andersson " , " mandersson444@gmail.com " )
2018-07-20 02:07:47 +02:00
< < Person ( " Alan Briolat " , " alan.briolat@gmail.com " )
2018-07-20 02:28:42 +02:00
< < Person ( " Arun Narayanankutty " , " n.arun.lifescience@gmail.com " )
2018-07-20 02:07:47 +02:00
< < Person ( QString : : fromUtf8 ( " Bartłomiej Burdukiewicz " ) , " dev.strikeu@gmail.com " )
< < Person ( " Andre Siviero " , " altsiviero@gmail.com " )
< < Person ( " Santiago Gil " )
2018-10-19 19:13:24 +02:00
< < Person ( " Tyler Rhodes " , " tyler.s.rhodes@gmail.com " )
< < Person ( " Vikram Ambrose " , " ambroseworks@gmail.com " )
< < Person ( " David Guillen " , " david@davidgf.net " )
2018-12-02 16:12:10 +01:00
< < Person ( " Krzysztof Sobiecki " , " sobkas@gmail.com " )
< < Person ( " Valeriy Malov " , " jazzvoid@gmail.com " )
< < Person ( " Nick Lanham " , " nick@afternight.org " ) ;
2018-07-20 02:07:47 +02:00
2020-05-16 00:45:15 +02:00
strawberry_thanks_ \
< < Person ( " Mark Kretschmann " , " kretschmann@kde.org " )
< < Person ( " Max Howell " , " max.howell@methylblue.com " )
< < Person ( " Artur Rona " , " artur.rona@gmail.com " )
< < Person ( " Robert-André Mauchin " , " eclipseo@fedoraproject.org " )
< < Person ( " Thomas Pierson " , " contact@thomaspierson.fr " )
< < Person ( " Fabio Loli " , " fabio.lolix@gmail.com " ) ;
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 ( ) ) ;
2020-08-12 17:27:08 +02:00
ui_ . text_contributors - > document ( ) - > setDefaultStyleSheet ( QString ( " 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 ;
2020-07-19 03:46:41 +02:00
ret + = QString ( " <p> " ) ;
2019-12-29 23:37:48 +01:00
ret + = tr ( " Version %1 " ) . arg ( QCoreApplication : : applicationVersion ( ) ) ;
2020-07-19 03:46:41 +02:00
ret + = QString ( " </p> " ) ;
2019-12-29 23:37:48 +01:00
2020-07-19 03:46:41 +02:00
ret + = QString ( " <p> " ) ;
2019-12-29 23:37:48 +01:00
ret + = tr ( " Strawberry is a music player and music collection organizer. " ) ;
2020-07-19 03:46:41 +02:00
ret + = QString ( " <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. " ) ;
2020-07-19 03:46:41 +02:00
ret + = QString ( " </p> " ) ;
2020-05-16 00:45:15 +02:00
2020-07-19 03:46:41 +02:00
ret + = QString ( " <p> " ) ;
2020-08-12 17:27:08 +02:00
ret + = tr ( " Strawberry is free software released under GPL. The source code is available on %1 " ) . arg ( QString ( " <a style= \" color:%1; \" href= \" https://github.com/strawberrymusicplayer/strawberry \" >GitHub</a>. " ) . arg ( palette ( ) . text ( ) . color ( ) . name ( ) ) ) ;
2020-07-19 03:46:41 +02:00
ret + = QString ( " <br /> " ) ;
2020-08-12 17:27:08 +02:00
ret + = tr ( " You should have received a copy of the GNU General Public License along with this program. If not, see %1 " ) . arg ( QString ( " <a style= \" color:%1; \" href= \" http://www.gnu.org/licenses/ \" >http://www.gnu.org/licenses/</a> " ) . arg ( palette ( ) . text ( ) . color ( ) . name ( ) ) ) ;
2020-07-19 03:46:41 +02:00
ret + = QString ( " </p> " ) ;
2020-05-16 00:45:15 +02:00
2020-07-19 03:46:41 +02:00
ret + = QString ( " <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. " ) ;
2020-07-19 03:46:41 +02:00
ret + = QString ( " <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 (
QString ( " <a style= \" color:%1; \" href= \" https://github.com/sponsors/jonaski \" >GitHub sponsors</a> " ) . arg ( palette ( ) . text ( ) . color ( ) . name ( ) ) ,
QString ( " <a style= \" color:%1; \" href= \" https://paypal.me/jonaskvinge \" >paypal.me/jonaskvinge</a> " ) . arg ( palette ( ) . text ( ) . color ( ) . name ( ) )
) ;
2020-08-12 17:27:08 +02:00
2020-07-19 03:46:41 +02:00
ret + = QString ( " </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
2020-07-19 03:46:41 +02:00
ret + = QString ( " <p> " ) ;
2019-12-29 23:37:48 +01:00
ret + = " <b> " ;
2020-05-16 00:45:15 +02:00
ret + = tr ( " Author and maintainer " ) ;
2019-12-29 23:37:48 +01:00
ret + = " </b> " ;
2018-09-14 23:58:58 +02:00
for ( const Person & person : strawberry_authors_ ) {
ret + = " <br /> " + PersonToHtml ( person ) ;
2018-02-27 18:06:05 +01:00
}
2020-07-19 03:46:41 +02:00
ret + = QString ( " </p> " ) ;
2018-02-27 18:06:05 +01:00
2020-07-19 03:46:41 +02:00
ret + = QString ( " <p> " ) ;
2019-12-29 23:37:48 +01:00
ret + = " <b> " ;
ret + = tr ( " Contributors " ) ;
ret + = " </b> " ;
2019-08-22 18:49:03 +02:00
for ( const Person & person : strawberry_contributors_ ) {
2019-07-30 21:30:08 +02:00
ret + = " <br /> " + PersonToHtml ( person ) ;
}
2020-07-19 03:46:41 +02:00
ret + = QString ( " </p> " ) ;
2019-07-30 21:30:08 +02:00
2020-07-19 03:46:41 +02:00
ret + = QString ( " <p> " ) ;
2019-12-29 23:37:48 +01:00
ret + = " <b> " ;
2020-05-16 00:45:15 +02:00
ret + = tr ( " Clementine authors " ) ;
2019-12-29 23:37:48 +01:00
ret + = " </b> " ;
2020-05-16 00:45:15 +02:00
for ( const Person & person : clementine_authors_ ) {
2019-07-30 21:30:08 +02:00
ret + = " <br /> " + PersonToHtml ( person ) ;
}
2020-07-19 03:46:41 +02:00
ret + = QString ( " </p> " ) ;
2019-07-30 21:30:08 +02:00
2020-07-19 03:46:41 +02:00
ret + = QString ( " <p> " ) ;
2019-12-29 23:37:48 +01:00
ret + = " <b> " ;
2020-05-16 00:45:15 +02:00
ret + = tr ( " Clementine contributors " ) ;
2019-12-29 23:37:48 +01:00
ret + = " </b> " ;
2020-05-16 00:45:15 +02:00
for ( const Person & person : clementine_contributors_ ) {
2018-09-14 23:58:58 +02:00
ret + = " <br /> " + PersonToHtml ( person ) ;
2018-02-27 18:06:05 +01:00
}
2020-07-19 03:46:41 +02:00
ret + = QString ( " </p> " ) ;
2018-02-27 18:06:05 +01:00
2020-07-19 03:46:41 +02:00
ret + = QString ( " <p> " ) ;
2019-12-29 23:37:48 +01:00
ret + = " <b> " ;
2020-05-16 00:45:15 +02:00
ret + = tr ( " Thanks to " ) ;
2019-12-29 23:37:48 +01:00
ret + = " </b> " ;
2020-05-16 00:45:15 +02:00
for ( const Person & person : strawberry_thanks_ ) {
2018-09-14 23:58:58 +02:00
ret + = " <br /> " + PersonToHtml ( person ) ;
2018-02-27 18:06:05 +01:00
}
2020-07-19 03:46:41 +02:00
ret + = QString ( " </p> " ) ;
2018-02-27 18:06:05 +01:00
2020-07-19 03:46:41 +02:00
ret + = QString ( " <p> " ) ;
2019-12-29 23:46:49 +01:00
ret + = tr ( " Thanks to all the other Amarok and Clementine contributors. " ) ;
2020-07-19 03:46:41 +02:00
ret + = QString ( " </p> " ) ;
2018-02-27 18:06:05 +01:00
return ret ;
}
2018-09-14 23:58:58 +02:00
QString About : : PersonToHtml ( const Person & person ) const {
2018-02-27 18:06:05 +01:00
if ( person . email . isNull ( ) )
return person . name ;
else
return QString ( " %1 <<a href= \" mailto:%2 \" >%3</a>> " ) . arg ( person . name , person . email , person . email ) ;
}