src: Yearly copyright bump
[quassel.git] / src / uisupport / aboutdata.cpp
1 /***************************************************************************
2  *   Copyright (C) 2005-2020 by the Quassel Project                        *
3  *   devel@quassel-irc.org                                                 *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU General Public License as published by  *
7  *   the Free Software Foundation; either version 2 of the License, or     *
8  *   (at your option) version 3.                                           *
9  *                                                                         *
10  *   This program is distributed in the hope that it will be useful,       *
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13  *   GNU General Public License for more details.                          *
14  *                                                                         *
15  *   You should have received a copy of the GNU General Public License     *
16  *   along with this program; if not, write to the                         *
17  *   Free Software Foundation, Inc.,                                       *
18  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
19  ***************************************************************************/
20
21 #include "aboutdata.h"
22
23 #include <utility>
24
25 #include <QImage>
26
27 #include "quassel.h"
28
29 AboutPerson::AboutPerson(QString name, QString nick, QString task, QString emailAddress, QLocale::Language translatedLanguage)
30     : _name(std::move(name))
31     , _nick(std::move(nick))
32     , _task(std::move(task))
33     , _emailAddress(std::move(emailAddress))
34     , _language(translatedLanguage)
35 {}
36
37 QString AboutPerson::name() const
38 {
39     return _name;
40 }
41
42 QString AboutPerson::nick() const
43 {
44     return _nick;
45 }
46
47 QString AboutPerson::task() const
48 {
49     return _task;
50 }
51
52 QString AboutPerson::emailAddress() const
53 {
54     return _emailAddress;
55 }
56
57 QLocale::Language AboutPerson::translatedLanguage() const
58 {
59     return _language;
60 }
61
62 QString AboutPerson::prettyName() const
63 {
64     if (!name().isEmpty() && !nick().isEmpty())
65         return name() + " (" + nick() + ')';
66
67     if (name().isEmpty() && !nick().isEmpty())
68         return nick();
69
70     return name();
71 }
72
73 /**************************************************************************************************/
74
75 AboutData::AboutData(QObject* parent)
76     : QObject(parent)
77 {}
78
79 QList<AboutPerson> AboutData::authors() const
80 {
81     return _authors;
82 }
83
84 QList<AboutPerson> AboutData::credits() const
85 {
86     return _credits;
87 }
88
89 AboutData& AboutData::addAuthor(const AboutPerson& author)
90 {
91     _authors.append(author);
92     return *this;
93 }
94
95 AboutData& AboutData::addAuthors(std::initializer_list<AboutPerson> authors)
96 {
97     _authors.append(authors);
98     return *this;
99 }
100
101 AboutData& AboutData::addCredit(const AboutPerson& credit)
102 {
103     _credits.append(credit);
104     return *this;
105 }
106
107 AboutData& AboutData::addCredits(std::initializer_list<AboutPerson> credits)
108 {
109     _credits.append(credits);
110     return *this;
111 }
112
113 #ifdef HAVE_KF5
114
115 KAboutData AboutData::kAboutData() const
116 {
117     KAboutData aboutData(Quassel::buildInfo().applicationName, tr("Quassel IRC"), Quassel::buildInfo().plainVersionString);
118     aboutData.addLicense(KAboutLicense::GPL_V2);
119     aboutData.addLicense(KAboutLicense::GPL_V3);
120     aboutData.setShortDescription(tr("A modern, distributed IRC client"));
121     aboutData.setProgramLogo(QVariant::fromValue(QImage(":/pics/quassel-logo.png")));
122     aboutData.setBugAddress("https://bugs.quassel-irc.org/projects/quassel-irc/issues/new");
123     aboutData.setOrganizationDomain(Quassel::buildInfo().organizationDomain.toUtf8());
124
125     for (const auto& person : authors()) {
126         aboutData.addAuthor(person.prettyName(), person.task(), person.emailAddress());
127     }
128
129     for (const auto& person : credits()) {
130         aboutData.addCredit(person.prettyName(), person.task(), person.emailAddress());
131     }
132
133     return aboutData;
134 }
135
136 #endif
137
138 /**************************************************************************************************/
139
140 /*
141  * NOTE: The list of contributors was retrieved from the Git history, but sometimes things fall
142  *       through the cracks... especially for translations, we don't have an easy way to track
143  *       contributors' names.
144  *       If you find wrong data for yourself, want your nickname and/or mail addresses added or
145  *       removed, or feel left out or unfairly credited, please don't hesitate to let us know! We
146  *       do want to credit everyone who has contributed to Quassel development.
147  */
148
149 void AboutData::setQuasselPersons(AboutData* aboutData)
150 {
151     aboutData->addAuthors({
152         {"Manuel Nickschas", "Sputnick", tr("Project founder, lead developer"), "sputnick@quassel-irc.org"},
153         {"Marcus Eggenberger", "EgS", tr("Project motivator, lead developer"), "egs@quassel-irc.org"},
154         {"Alexander von Renteln", "phon", tr("Former lead developer"), "phon@quassel-irc.org"},
155         {"Daniel Albers", "al", tr("Master of Translation, many fixes and enhancements, Travis support")},
156         {"Sebastian Goth", "seezer", tr("Many features, fixes and improvements")},
157         {"Bas Pape", "Tucos", tr("Many fixes and improvements, bug and patch triaging, community support")},
158         {"Shane Synan", "digitalcircuit", tr("IRCv3 support, documentation, many other improvements, testing, outstanding PRs")},
159         {"Janne Koschinski", "justJanne", tr("Quasseldroid, architecture, (mobile) performance, many other improvements and fixes, testing")},
160     });
161
162     aboutData->addCredits(
163         {{"A. V. Lukyanov", "", tr("OSX UI improvements")},
164          {"Adam Harwood", "2kah", tr("Chatview improvements")},
165          {"Adam Tulinius", "adamt", tr("Early beta tester and bughunter, Danish translation"), "", QLocale::Danish},
166          {"Adolfo Jayme Barrientos", "", tr("Spanish translation"), "", QLocale::Spanish},
167          {"Adriaan de Groot", "", tr("Build system fixes")},
168          {"Alex Ingram", "", tr("Database performance improvements")},
169          {"Alexander Stein", "", tr("Tray icon fix")},
170          {"Alf Gaida", "agaida", tr("Language improvements")},
171          {"Allan Jude", "", tr("Documentation improvements")},
172          {"André Marcelo Alvarenga", "", tr("Brazilian translation"), "", QLocale::Portuguese},
173          {"Andrej Mernik", "", tr("Slovenian translation"), "", QLocale::Slovenian},
174          {"Andrew Brown", "", tr("Fixes")},
175          {"Arthur Țițeică", "roentgen", tr("Romanian translation"), "", QLocale::Romanian},
176          {"A S Alam", "", tr("Punjabi translation"), "", QLocale::Punjabi},
177          {"Atte Virtanen", "", tr("Finnish translation"), "", QLocale::Finnish},
178          {"Aurélien Gâteau", "agateau", tr("Message indicator support")},
179          {"Awad Mackie", "firesock", tr("Chatview improvements")},
180          {"Armin K", "", tr("Build system fix")},
181          {"", "Ayonix", tr("Build system fix")},
182          {"Benjamin Zeller", "zbenjamin", tr("Windows build system fixes")},
183          {"Ben Rosser", "", tr("AppData metadata, LDAP support")},
184          {"Bernhard Scheirle", "", tr("Nicer tooltips, spell check and other improvements")},
185          {"Bruno Brigras", "", tr("Crash fixes")},
186          {"Bruno Patri", "", tr("French translation"), "", QLocale::French},
187          {"Cédric Valmary", "", tr("Occitan translation"), "", QLocale::Occitan},
188          {"Celeste Paul", "seele", tr("Usability review")},
189          {"Chris Fuenty", "stitch", tr("SASL support")},
190          {"Chris Holland", "Shade / Zren", tr("Various improvements")},
191          {"Chris Le Sueur", "Fish-Face", tr("Various fixes and improvements")},
192          {"Chris Moeller", "kode54", tr("Various fixes and improvements")},
193          {"Christian Schwarz", "", tr("Settings fixes")},
194          {"", "Condex", tr("Galician translation"), "", QLocale::Galician},
195          {"", "cordata", tr("Esperanto translation"), "", QLocale::Esperanto},
196          {"Daniel E. Moctezuma", "", tr("Japanese translation"), "", QLocale::Japanese},
197          {"Daniel Meltzer", "hydrogen", tr("Various fixes and improvements")},
198          {"Daniel Pielmeier", "billie", tr("Gentoo maintainer")},
199          {"Daniel Schaal", "", tr("Certificate handling improvements")},
200          {"Daniel Silverstone", "", tr("Fixes")},
201          {"Daniel Steinmetz", "son", tr("Early beta tester and bughunter (on Vista™!)")},
202          {"David Planella", "", tr("Translation system fixes")},
203          {"David Roden", "Bombe", tr("Fixes")},
204          {"David Sansome", "", tr("OSX Notification Center support")},
205          {"Demiray Muhterem", "", tr("Turkish translation"), "", QLocale::Turkish},
206          {"Deniz Türkoglu", "", tr("Mac fixes")},
207          {"Dennis Schridde", "devurandom", tr("D-Bus notifications")},
208          {"", "derpella", tr("Polish translation"), "", QLocale::Polish},
209          {"Diego Pettenò", "Flameeyes", tr("Build system improvements")},
210          {"Dirk Rettschlag", "MarcLandis", tr("Formatting support and other input line improvements, many other fixes")},
211          {"", "Dorian", tr("French translation"), "", QLocale::French},
212          {"Drew Patridge", "LinuxDolt", tr("BluesTheme stylesheet")},
213          {"Edward Hades", "", tr("Russian translation"), "", QLocale::Russian},
214          {"Fabiano Francesconi", "elbryan", tr("Italian translation"), "", QLocale::Italian},
215          {"Felix Geyer", "debfx", tr("Certificate handling improvements")},
216          {"Felix Kaechele", "", tr("German translation"), "", QLocale::German},
217          {"Florent Castelli", "", tr("Sanitize topic handling, twitch.tv support")},
218          {"Frederik M.J. Vestre", "freqmod", tr("Norwegian translation"), "", QLocale::Norwegian},
219          {"Gábor Németh", "ELITE_x", tr("Hungarian translation"), "", QLocale::Hungarian},
220          {"Gryllida A", "gry", tr("IRC parser improvements")},
221          {"György Balló", "", tr("Fixes")},
222          {"H. İbrahim Güngör", "igungor", tr("Turkish translation"), "", QLocale::Turkish},
223          {"Hannah von Reth", "TheOneRing", tr("Windows build support and Appveyor maintenance, snorenotify backend")},
224          {"Harald Fernengel", "harryF", tr("Initial Qt5 support")},
225          {"Harald Sitter", "apachelogger", tr("{Ku|U}buntu packager, motivator, promoter")},
226          {"Hendrik Leppkes", "nevcairiel", tr("Various features and improvements")},
227          {"Henning Rohlfs", "honk", tr("Various fixes")},
228          {"J-P Nurmi", "", tr("Various fixes")},
229          {"Jaak Ristioja", "", tr("Bugfixes")},
230          {"Jan Alexander Steffens", "heftig", tr("Fixes")},
231          {"Jaroslav Lichtblau", "", tr("Czech translation"), "", QLocale::Czech},
232          {"Jason Joyce", "", tr("Python improvements")},
233          {"Jason Lynch", "", tr("Bugfixes")},
234          {"Javier Llorente", "", tr("Proxy improvements, Spanish translation"), "", QLocale::Spanish},
235          {"Jens Arnold", "amiconn", tr("Postgres migration fixes")},
236          {"Jens True", "", tr("Danish translation"), "", QLocale::Danish},
237          {"Jerome Leclanche", "Adys", tr("Context menu fixes")},
238          {"Jesper Thomschütz", "", tr("Various fixes")},
239          {"Jiri Grönroos", "", tr("Finnish translation"), "", QLocale::Finnish},
240          {"Joe Hansen", "", tr("Danish translation"), "", QLocale::Danish},
241          {"Johannes Huber", "johu", tr("Many fixes and improvements, bug triaging")},
242          {"John Hand", "nox", tr("Original \"All-Seeing Eye\" logo")},
243          {"Jonas Heese", "Dante", tr("Project founder, various improvements")},
244          {"Jonathan Farnham", "", tr("Spanish translation"), "", QLocale::Spanish},
245          {"Joshua T Corbin", "tvakah", tr("Various fixes")},
246          {"Jovan Jojkić", "", tr("Serbian translation"), "", QLocale::Serbian},
247          {"Jure Repinc", "JLP", tr("Slovenian translation"), "", QLocale::Slovenian},
248          {"Jussi Schultink", "jussi01", tr("Tireless tester, {Ku|U}buntu tester and lobbyist, liters of delicious Finnish alcohol")},
249          {"K. Ernest Lee", "iFire", tr("Qt5 porting help, Travis CI setup")},
250          {"Kevin Funk", "KRF", tr("German translation"), "", QLocale::German},
251          {"Kimmo Huoman", "kipe", tr("Buffer merge improvements")},
252          {"Konstantin Bläsi", "", tr("Fixes")},
253          {"Kostas Koudaras", "", tr("Greek translation"), "", QLocale::Greek},
254          {"", "Larso", tr("Finnish translation"), "", QLocale::Finnish},
255          {"Lasse Liehu", "", tr("Finnish translation"), "", QLocale::Finnish},
256          {"Leo Franchi", "", tr("OSX improvements")},
257          {"Liudas Alisauskas", "", tr("Lithuanian translation"), "", QLocale::Lithuanian},
258          {"Luke Faraone", "", tr("Documentation fixes")},
259          {"Maia Kozheva", "", tr("Russian translation"), "", QLocale::Russian},
260          {"Manuel Hoffmann", "contradictioned", tr("German translation"), "", QLocale::German},
261          {"Marcin Jabrzyk", "", tr("Improvements")},
262          {"Marco Genise", "kaffeedoktor", tr("Ideas, hacking, initial motivation")},
263          {"Marco Paolone", "Quizzlo", tr("Italian translation"), "", QLocale::Italian},
264          {"Martin Mayer", "m4yer", tr("German translation"), "", QLocale::German},
265          {"Martin Sandsmark", "sandsmark", tr("Many fixes and improvements, Sonnet support, QuasselDroid")},
266          {"Matt Schatz", "genius3000", tr("Various fixes")},
267          {"Matthias Coy", "pennywise", tr("German translation"), "", QLocale::German},
268          {"Mattia Basaglia", "", tr("Fixes")},
269          {"Michael Groh", "brot", tr("German translation, fixes"), "", QLocale::German},
270          {"Michael Kedzierski", "ycros", tr("Mac fixes")},
271          {"Michael Marley", "mamarley", tr("Many fixes and improvements; Ubuntu PPAs")},
272          {"Miguel Anxo Bouzada", "", tr("Galician translation"), "", QLocale::Galician},
273          {"Miguel Revilla", "", tr("Spanish translation"), "", QLocale::Spanish},
274          {"Nuno Pinheiro", "", tr("Tons of Oxygen icons including the Quassel logo")},
275          {"Patrick Lauer", "bonsaikitten", tr("Gentoo maintainer")},
276          {"Paul Klumpp", "Haudrauf", tr("Initial design and main window layout")},
277          {"Pavel Volkovitskiy", "int", tr("Early beta tester and bughunter")},
278          {"Pedro Araujo", "", tr("Brazilian translation"), "", QLocale::Portuguese},
279          {"Per Nielsen", "", tr("Danish translation"), "", QLocale::Danish},
280          {"Pete Beardmore", "elbeardmorez", tr("Linewrap for input line")},
281          {"Petr Bena", "", tr("Performance improvements and cleanups")},
282          {"", "phuzion", tr("Various fixes")},
283          {"Pierre-Hugues Husson", "", tr("/print command")},
284          {"Pierre Schweitzer", "", tr("Performance improvements")},
285          {"Rafael Belmonte", "EagleScreen", tr("Spanish translation"), "", QLocale::Spanish},
286          {"Raju Devidas Vindane", "", tr("Hindi and Marathi translations"), "", QLocale::Hindi},
287          {"Ramanathan Sivagurunathan", "", tr("Bugfixes")},
288          {"Raul Salinas-Monteagudo", "", tr("Fixes")},
289          {"Regis Perrin", "ZRegis", tr("French translation"), "", QLocale::French},
290          {"Rolf Eike Beer", "DerDakon", tr("Build system improvements")},
291          {"Rolf Michael Bislin", "romibi", tr("Windows build support, automated OSX builds in Travis, various improvements")},
292          {"Roscoe van Wyk", "", tr("Bugfixes")},
293          {"Rüdiger Sonderfeld", "ruediger", tr("Emacs keybindings")},
294          {"Ryan Bales", "selabnayr", tr("Improvements")},
295          {"Sai Nane", "esainane", tr("Various fixes")},
296          {"", "salnx", tr("Highlight configuration improvements")},
297          {"Scott Kitterman", "ScottK", tr("Debian/Kubuntu packager, (packaging/build system) bughunter")},
298          {"Sebastian Meyer", "", tr("Bugfixes, German translation"), "", QLocale::German},
299          {"Sebastien Fricker", "", tr("Audio backend improvements")},
300          {"Sergiu Bivol", "", tr("Romanian translation"), "", QLocale::Romanian},
301          {"", "sfionov", tr("Russian translation"), "", QLocale::Russian},
302          {"Shengjing Zhu", "", tr("Chinese translation"), "", QLocale::Chinese},
303          {"Simon Philips", "", tr("Dutch translation"), "", QLocale::Dutch},
304          {"Sjors Gielen", "dazjorz", tr("Bugfixes")},
305          {"Stefanos Sofroniou", "", tr("Greek translation"), "", QLocale::Greek},
306          {"Stella Rouzi", "differentreality", tr("Greek translation"), "", QLocale::Greek},
307          {"Sungjin Kang", "", tr("Korean translation"), "", QLocale::Korean},
308          {"Sven Anderson", "", tr("Database performance improvements")},
309          {"Svetlana Tkachenko", "gry", tr("Alias improvements")},
310          {"Tae-Hoon Kwon", "", tr("Korean translation"), "", QLocale::Korean},
311          {"Terje Andersen", "tan", tr("Norwegian translation, documentation")},
312          {"Theo Chatzimichos", "tampakrap", tr("Greek translation"), "", QLocale::Greek},
313          {"Theofilos Intzoglou", "", tr("Greek translation"), "", QLocale::Greek},
314          {"Thomas Hogh", "Datafreak", tr("Former Windows builder")},
315          {"Thomas Müller", "", tr("Fixes, Debian packaging")},
316          {"Tim Schumacher", "xAFFE", tr("Fixes and feedback")},
317          {"Tinjo Kohen", "", tr("Esperanto translation"), "", QLocale::Esperanto},
318          {"Tobias Frei", "ToBeFree", tr("German translation"), "", QLocale::German},
319          {"Tomáš Chvátal", "scarabeus", tr("Czech translation"), "", QLocale::Czech},
320          {"Veeti Paananen", "", tr("Certificate handling improvements")},
321          {"Viktor Suprun", "", tr("Russian translation"), "", QLocale::Russian},
322          {"Vít Pelčák", "", tr("Czech translation"), "", QLocale::Czech},
323          {"Volkan Gezer", "", tr("Turkish translation"), "", QLocale::Turkish},
324          {"Weng Xuetian", "wengxt", tr("Build system fix")},
325          {"Willem Jan Palenstijn", "", tr("Fixes")},
326          {"Yaohan Chen", "hagabaka", tr("Network detection improvements")},
327          {"Yuri Chornoivan", "", tr("Ukrainian translation"), "", QLocale::Ukrainian},
328          {"Zé", "", tr("Portuguese translation"), "", QLocale::Portuguese},
329          {"", "zeugma", tr("Turkish translation"), "", QLocale::Turkish}});
330 }