cmake: avoid de-duplication of user's CXXFLAGS
[quassel.git] / src / uisupport / aboutdata.cpp
1 /***************************************************************************
2  *   Copyright (C) 2005-2022 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          {"A. Wilcox", "", tr("Fixes")},
165          {"Adam Harwood", "2kah", tr("Chatview improvements")},
166          {"Adam Tulinius", "adamt", tr("Early beta tester and bughunter, Danish translation"), "", QLocale::Danish},
167          {"Adolfo Jayme Barrientos", "", tr("Spanish translation"), "", QLocale::Spanish},
168          {"Adriaan de Groot", "", tr("Build system fixes")},
169          {"Alex Ingram", "", tr("Database performance improvements")},
170          {"Alex McGrath", "", tr("UI improvements")},
171          {"Alexander Stein", "", tr("Tray icon fix")},
172          {"Alf Gaida", "agaida", tr("Language improvements")},
173          {"Allan Jude", "", tr("Documentation improvements")},
174          {"", "alturiak", tr("Various improvements")},
175          {"André Marcelo Alvarenga", "", tr("Brazilian translation"), "", QLocale::Portuguese},
176          {"Andrej Mernik", "", tr("Slovenian translation"), "", QLocale::Slovenian},
177          {"Andrew Brown", "", tr("Fixes")},
178          {"Arthur Țițeică", "roentgen", tr("Romanian translation"), "", QLocale::Romanian},
179          {"A S Alam", "", tr("Punjabi translation"), "", QLocale::Punjabi},
180          {"Atte Virtanen", "", tr("Finnish translation"), "", QLocale::Finnish},
181          {"Aurélien Gâteau", "agateau", tr("Message indicator support")},
182          {"Awad Mackie", "firesock", tr("Chatview improvements")},
183          {"Armin K", "", tr("Build system fix")},
184          {"", "Ayonix", tr("Build system fix")},
185          {"Benjamin Zeller", "zbenjamin", tr("Windows build system fixes")},
186          {"Ben Rosser", "", tr("AppData metadata, LDAP support")},
187          {"Bernhard Scheirle", "", tr("Nicer tooltips, spell check and other improvements")},
188          {"Bruno Brigras", "", tr("Crash fixes")},
189          {"Bruno Patri", "", tr("French translation"), "", QLocale::French},
190          {"Cédric Valmary", "", tr("Occitan translation"), "", QLocale::Occitan},
191          {"Celeste Paul", "seele", tr("Usability review")},
192          {"Chris Fuenty", "stitch", tr("SASL support")},
193          {"Chris Holland", "Shade / Zren", tr("Various improvements")},
194          {"Chris Le Sueur", "Fish-Face", tr("Various fixes and improvements")},
195          {"Chris Moeller", "kode54", tr("Various fixes and improvements")},
196          {"Christian Schwarz", "", tr("Settings fixes")},
197          {"", "Condex", tr("Galician translation"), "", QLocale::Galician},
198          {"", "cordata", tr("Esperanto translation"), "", QLocale::Esperanto},
199          {"Daniel E. Moctezuma", "", tr("Japanese translation"), "", QLocale::Japanese},
200          {"Daniel Meltzer", "hydrogen", tr("Various fixes and improvements")},
201          {"Daniel Pielmeier", "billie", tr("Gentoo maintainer")},
202          {"Daniel Schaal", "", tr("Certificate handling improvements")},
203          {"Daniel Silverstone", "", tr("Fixes")},
204          {"Daniel Steinmetz", "son", tr("Early beta tester and bughunter (on Vista™!)")},
205          {"David Planella", "", tr("Translation system fixes")},
206          {"David Roden", "Bombe", tr("Fixes")},
207          {"David Sansome", "", tr("OSX Notification Center support")},
208          {"Demiray Muhterem", "", tr("Turkish translation"), "", QLocale::Turkish},
209          {"Deniz Türkoglu", "", tr("Mac fixes")},
210          {"Dennis Schridde", "devurandom", tr("D-Bus notifications")},
211          {"", "derpella", tr("Polish translation"), "", QLocale::Polish},
212          {"Diego Pettenò", "Flameeyes", tr("Build system improvements")},
213          {"Dirk Rettschlag", "MarcLandis", tr("Formatting support and other input line improvements, many other fixes")},
214          {"", "Dorian", tr("French translation"), "", QLocale::French},
215          {"Drew Patridge", "LinuxDolt", tr("BluesTheme stylesheet")},
216          {"Edward Hades", "", tr("Russian translation"), "", QLocale::Russian},
217          {"Fabiano Francesconi", "elbryan", tr("Italian translation"), "", QLocale::Italian},
218          {"Felix Geyer", "debfx", tr("Certificate handling improvements")},
219          {"Felix Kaechele", "", tr("German translation"), "", QLocale::German},
220          {"Florent Castelli", "", tr("Sanitize topic handling, twitch.tv support")},
221          {"Frederik M.J. Vestre", "freqmod", tr("Norwegian translation"), "", QLocale::Norwegian},
222          {"Gábor Németh", "ELITE_x", tr("Hungarian translation"), "", QLocale::Hungarian},
223          {"Gryllida A", "gry", tr("IRC parser improvements")},
224          {"György Balló", "", tr("Fixes")},
225          {"H. İbrahim Güngör", "igungor", tr("Turkish translation"), "", QLocale::Turkish},
226          {"Hannah von Reth", "TheOneRing", tr("Windows build support and Appveyor maintenance, snorenotify backend")},
227          {"Harald Fernengel", "harryF", tr("Initial Qt5 support")},
228          {"Harald Sitter", "apachelogger", tr("{Ku|U}buntu packager, motivator, promoter")},
229          {"Hendrik Leppkes", "nevcairiel", tr("Various features and improvements")},
230          {"Henning Rohlfs", "honk", tr("Various fixes")},
231          {"J-P Nurmi", "", tr("Various fixes")},
232          {"Jaak Ristioja", "", tr("Bugfixes")},
233          {"Jan Alexander Steffens", "heftig", tr("Fixes")},
234          {"Jaroslav Lichtblau", "", tr("Czech translation"), "", QLocale::Czech},
235          {"Jason Joyce", "", tr("Python improvements")},
236          {"Jason Lynch", "", tr("Bugfixes")},
237          {"Javier Llorente", "", tr("Proxy improvements, Spanish translation"), "", QLocale::Spanish},
238          {"Jay Colson", "", tr("Postgres improvements")},
239          {"Jens Arnold", "amiconn", tr("Postgres migration fixes")},
240          {"Jens True", "", tr("Danish translation"), "", QLocale::Danish},
241          {"Jerome Leclanche", "Adys", tr("Context menu fixes")},
242          {"Jesper Thomschütz", "", tr("Various fixes")},
243          {"Jiri Grönroos", "", tr("Finnish translation"), "", QLocale::Finnish},
244          {"Joe Hansen", "", tr("Danish translation"), "", QLocale::Danish},
245          {"Johannes Huber", "johu", tr("Many fixes and improvements, bug triaging")},
246          {"John Hand", "nox", tr("Original \"All-Seeing Eye\" logo")},
247          {"Jonas Heese", "Dante", tr("Project founder, various improvements")},
248          {"Jonathan Farnham", "", tr("Spanish translation"), "", QLocale::Spanish},
249          {"Joshua T Corbin", "tvakah", tr("Various fixes")},
250          {"Jovan Jojkić", "", tr("Serbian translation"), "", QLocale::Serbian},
251          {"Jure Repinc", "JLP", tr("Slovenian translation"), "", QLocale::Slovenian},
252          {"Jussi Schultink", "jussi01", tr("Tireless tester, {Ku|U}buntu tester and lobbyist, liters of delicious Finnish alcohol")},
253          {"K. Ernest Lee", "iFire", tr("Qt5 porting help, Travis CI setup")},
254          {"Kai Uwe Broulik", "", tr("Various fixes")},
255          {"Kevin Funk", "KRF", tr("German translation"), "", QLocale::German},
256          {"Kimmo Huoman", "kipe", tr("Buffer merge improvements")},
257          {"Konstantin Bläsi", "", tr("Fixes")},
258          {"Kostas Koudaras", "", tr("Greek translation"), "", QLocale::Greek},
259          {"", "Larso", tr("Finnish translation"), "", QLocale::Finnish},
260          {"Lasse Liehu", "", tr("Finnish translation"), "", QLocale::Finnish},
261          {"Lee Starnes", "", tr("Improvements")},
262          {"Leo Franchi", "", tr("OSX improvements")},
263          {"Liudas Alisauskas", "", tr("Lithuanian translation"), "", QLocale::Lithuanian},
264          {"Luke Faraone", "", tr("Documentation fixes")},
265          {"Maia Kozheva", "", tr("Russian translation"), "", QLocale::Russian},
266          {"Manuel Hoffmann", "contradictioned", tr("German translation"), "", QLocale::German},
267          {"Manuel Rüger", "", tr("IRC network list updates")},
268          {"Marcin Jabrzyk", "", tr("Improvements")},
269          {"Marco Genise", "kaffeedoktor", tr("Ideas, hacking, initial motivation")},
270          {"Marco Paolone", "Quizzlo", tr("Italian translation"), "", QLocale::Italian},
271          {"Martin Mayer", "m4yer", tr("German translation"), "", QLocale::German},
272          {"Martin Sandsmark", "sandsmark", tr("Many fixes and improvements, Sonnet support, QuasselDroid")},
273          {"Matt Schatz", "genius3000", tr("Various fixes")},
274          {"Matthias Coy", "pennywise", tr("German translation"), "", QLocale::German},
275          {"Mattia Basaglia", "", tr("Fixes")},
276          {"Michael Groh", "brot", tr("German translation, fixes"), "", QLocale::German},
277          {"Michael Kedzierski", "ycros", tr("Mac fixes")},
278          {"Michael Marley", "mamarley", tr("Many fixes and improvements; Ubuntu PPAs")},
279          {"Michał Sochoń", "", tr("SQL improvements")},
280          {"Miguel Anxo Bouzada", "", tr("Galician translation"), "", QLocale::Galician},
281          {"Miguel Revilla", "", tr("Spanish translation"), "", QLocale::Spanish},
282          {"Nicolas Cornu", "", tr("Wayland fixes")},
283          {"Nuno Pinheiro", "", tr("Tons of Oxygen icons including the Quassel logo")},
284          {"Patrick Lauer", "bonsaikitten", tr("Gentoo maintainer")},
285          {"Paul Klumpp", "Haudrauf", tr("Initial design and main window layout")},
286          {"Pavel Volkovitskiy", "int", tr("Early beta tester and bughunter")},
287          {"Pedro Araujo", "", tr("Brazilian translation"), "", QLocale::Portuguese},
288          {"Per Nielsen", "", tr("Danish translation"), "", QLocale::Danish},
289          {"Pete Beardmore", "elbeardmorez", tr("Linewrap for input line")},
290          {"Petr Bena", "", tr("Performance improvements and cleanups")},
291          {"", "phuzion", tr("Various fixes")},
292          {"Pierre-Hugues Husson", "", tr("/print command")},
293          {"Pierre Schweitzer", "", tr("Performance improvements")},
294          {"Rafael Belmonte", "EagleScreen", tr("Spanish translation"), "", QLocale::Spanish},
295          {"Rafael Kitover", "", tr("CMake fixes")},
296          {"Raju Devidas Vindane", "", tr("Hindi and Marathi translations"), "", QLocale::Hindi},
297          {"Ramanathan Sivagurunathan", "", tr("Bugfixes")},
298          {"Raul Salinas-Monteagudo", "", tr("Fixes")},
299          {"Regis Perrin", "ZRegis", tr("French translation"), "", QLocale::French},
300          {"Rolf Eike Beer", "DerDakon", tr("Build system improvements")},
301          {"Rolf Michael Bislin", "romibi", tr("Windows build support, automated OSX builds in Travis, various improvements")},
302          {"Roscoe van Wyk", "", tr("Bugfixes")},
303          {"Rüdiger Sonderfeld", "ruediger", tr("Emacs keybindings")},
304          {"Ryan Bales", "selabnayr", tr("Improvements")},
305          {"Sai Nane", "esainane", tr("Various fixes")},
306          {"", "salnx", tr("Highlight configuration improvements")},
307          {"Scott Kitterman", "ScottK", tr("Debian/Kubuntu packager, (packaging/build system) bughunter")},
308          {"Sebastian Meyer", "", tr("Bugfixes, German translation"), "", QLocale::German},
309          {"Sebastien Fricker", "", tr("Audio backend improvements")},
310          {"Sergiu Bivol", "", tr("Romanian translation"), "", QLocale::Romanian},
311          {"", "sfionov", tr("Russian translation"), "", QLocale::Russian},
312          {"Shengjing Zhu", "", tr("Chinese translation"), "", QLocale::Chinese},
313          {"Simon Philips", "", tr("Dutch translation"), "", QLocale::Dutch},
314          {"Sjors Gielen", "dazjorz", tr("Bugfixes")},
315          {"Stefanos Sofroniou", "", tr("Greek translation"), "", QLocale::Greek},
316          {"Stella Rouzi", "differentreality", tr("Greek translation"), "", QLocale::Greek},
317          {"Steve Groesz", "wolfpackmars2", tr("Documentation improvements")},
318          {"Sungjin Kang", "", tr("Korean translation"), "", QLocale::Korean},
319          {"Sven Anderson", "", tr("Database performance improvements")},
320          {"Svetlana Tkachenko", "gry", tr("Alias improvements")},
321          {"Tae-Hoon Kwon", "", tr("Korean translation"), "", QLocale::Korean},
322          {"Terje Andersen", "tan", tr("Norwegian translation, documentation")},
323          {"Theo Chatzimichos", "tampakrap", tr("Greek translation"), "", QLocale::Greek},
324          {"Theofilos Intzoglou", "", tr("Greek translation"), "", QLocale::Greek},
325          {"Thomas Hogh", "Datafreak", tr("Former Windows builder")},
326          {"Thomas Müller", "", tr("Fixes, Debian packaging")},
327          {"Tim Schumacher", "xAFFE", tr("Fixes and feedback")},
328          {"Tinjo Kohen", "", tr("Esperanto translation"), "", QLocale::Esperanto},
329          {"Tobias Frei", "ToBeFree", tr("German translation"), "", QLocale::German},
330          {"Tomáš Chvátal", "scarabeus", tr("Czech translation"), "", QLocale::Czech},
331          {"Veeti Paananen", "", tr("Certificate handling improvements")},
332          {"Viktor Suprun", "", tr("Russian translation"), "", QLocale::Russian},
333          {"Vít Pelčák", "", tr("Czech translation"), "", QLocale::Czech},
334          {"Vitor Luis", "PeGaSuS-Coder", tr("Improvements")},
335          {"Volkan Gezer", "", tr("Turkish translation"), "", QLocale::Turkish},
336          {"Weng Xuetian", "wengxt", tr("Build system fix")},
337          {"Willem Jan Palenstijn", "", tr("Fixes")},
338          {"Wolfgang Müller", "wylfen", tr("Logger fixes")},
339          {"Yaohan Chen", "hagabaka", tr("Network detection improvements")},
340          {"Yuri Chornoivan", "", tr("Ukrainian translation"), "", QLocale::Ukrainian},
341          {"Zé", "", tr("Portuguese translation"), "", QLocale::Portuguese},
342          {"", "zeugma", tr("Turkish translation"), "", QLocale::Turkish}});
343 }