Quassel IRC  Pre-Release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
aboutdata.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005-2015 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 <QImage>
24 
25 #include "quassel.h"
26 
27 
28 AboutPerson::AboutPerson(const QString &name, const QString &nick, const QString &task, const QString &emailAddress, QLocale::Language translatedLanguage)
29  : _name(name)
30  , _nick(nick)
31  , _task(task)
32  , _emailAddress(emailAddress)
33  , _language(translatedLanguage)
34 {
35 
36 }
37 
38 
39 QString AboutPerson::name() const
40 {
41  return _name;
42 }
43 
44 
45 QString AboutPerson::nick() const
46 {
47  return _nick;
48 }
49 
50 
51 QString AboutPerson::task() const
52 {
53  return _task;
54 }
55 
56 
58 {
59  return _emailAddress;
60 }
61 
62 
63 QLocale::Language AboutPerson::translatedLanguage() const
64 {
65  return _language;
66 }
67 
68 
69 QString AboutPerson::prettyName() const
70 {
71  if (!name().isEmpty() && !nick().isEmpty())
72  return name() + " (" + nick() + ')';
73 
74  if (name().isEmpty() && !nick().isEmpty())
75  return nick();
76 
77  return name();
78 }
79 
80 
81 /**************************************************************************************************/
82 
83 
84 AboutData::AboutData(QObject *parent)
85  : QObject(parent)
86 {
87 
88 }
89 
90 
91 QList<AboutPerson> AboutData::authors() const
92 {
93  return _authors;
94 }
95 
96 
97 QList< AboutPerson > AboutData::credits() const
98 {
99  return _credits;
100 }
101 
102 
104 {
105  _authors.append(author);
106  return *this;
107 }
108 
109 
110 AboutData &AboutData::addAuthors(std::initializer_list<AboutPerson> authors)
111 {
112  _authors.append(authors);
113  return *this;
114 }
115 
116 
118 {
119  _credits.append(credit);
120  return *this;
121 }
122 
123 
124 AboutData &AboutData::addCredits(std::initializer_list<AboutPerson> credits)
125 {
126  _credits.append(credits);
127  return *this;
128 }
129 
130 #ifdef HAVE_KF5
131 
132 KAboutData AboutData::kAboutData() const
133 {
134  KAboutData aboutData(
135  Quassel::buildInfo().applicationName,
136  tr("Quassel IRC"),
137  Quassel::buildInfo().plainVersionString
138  );
139  aboutData.addLicense(KAboutLicense::GPL_V2);
140  aboutData.addLicense(KAboutLicense::GPL_V3);
141  aboutData.setShortDescription(tr("A modern, distributed IRC client"));
142  aboutData.setProgramLogo(QVariant::fromValue(QImage(":/pics/quassel-logo.png")));
143  aboutData.setBugAddress("http://bugs.quassel-irc.org/projects/quassel-irc/issues/new");
144  aboutData.setOrganizationDomain(Quassel::buildInfo().organizationDomain.toUtf8());
145 
146  for (const auto &person : authors()) {
147  aboutData.addAuthor(person.prettyName(), person.task(), person.emailAddress());
148  }
149 
150  for (const auto &person : credits()) {
151  aboutData.addCredit(person.prettyName(), person.task(), person.emailAddress());
152  }
153 
154  return aboutData;
155 }
156 
157 #endif
158 
159 
160 /**************************************************************************************************/
161 
162 /*
163  * NOTE: The list of contributors was retrieved from the Git history, but sometimes things fall
164  * through the cracks... especially for translations, we don't have an easy way to track
165  * contributors' names.
166  * If you find wrong data for yourself, want your nickname and/or mail addresses added or
167  * removed, or feel left out or unfairly credited, please don't hesitate to let us know! We
168  * do want to credit everyone who has contributed to Quassel development.
169  */
170 
172 {
173  aboutData->addAuthors({
174  { "Manuel Nickschas", "Sputnick", tr("Project Founder, Lead Developer"), "sputnick@quassel-irc.org" },
175  { "Marcus Eggenberger", "EgS", tr("Project Motivator, Lead Developer"), "egs@quassel-irc.org" },
176  { "Alexander von Renteln", "phon", tr("Former Lead Developer"), "phon@quassel-irc.org" },
177  { "Daniel Albers", "al", tr("Master of Translation, many fixes and enhancements") },
178  { "Sebastian Goth", "seezer", tr("Many features, fixes and improvements") },
179  { "Bas Pape", "Tucos", tr("Many fixes and improvements, bug and patch triaging, community support") },
180  });
181 
182  aboutData->addCredits({
183  { "Adam Harwood", "2kah", tr("Chatview improvements") },
184  { "Adam Tulinius", "adamt", tr("Early beta tester and bughunter, Danish translation"), "", QLocale::Danish },
185  { "Adolfo Jayme Barrientos", "", tr("Spanish translation"), "", QLocale::Spanish },
186  { "Alexander Stein", "", tr("Tray icon fix") },
187  { "Alf Gaida", "agaida", tr("Language improvements") },
188  { "Allan Jude", "", tr("Documentation improvements") },
189  { "Arthur Titeica", "roentgen", tr("Romanian translation"), "", QLocale::Romanian },
190  { "Atte Virtanen", "", tr("Finnish translation"), "", QLocale::Finnish },
191  { "Aurélien Gâteau", "agateau", tr("Message indicator support") },
192  { "Awad Mackie", "firesock", tr("Chatview improvements") },
193  { "Benjamin Zeller", "zbenjamin", tr("Windows build system fixes") },
194  { "Bruno Brigras", "", tr("Crash fixes") },
195  { "Bruno Patri", "", tr("French translation"), "", QLocale::French },
196  { "Celeste Paul", "seele", tr("Usability review") },
197  { "Chris Fuenty", "stitch", tr("SASL support") },
198  { "Chris Holland", "Shade / Zren", tr("Various improvements") },
199  { "Chris Le Sueur", "Fish-Face", tr("Various fixes and improvements") },
200  { "Chris Moeller", "kode54", tr("Various fixes and improvements") },
201  { "", "Condex", tr("Galician translation"), "", QLocale::Galician },
202  { "", "cordata", tr("Esperanto translation"), "", QLocale::Esperanto },
203  { "Daniel E. Moctezuma", "", tr("Japanese translation"), "", QLocale::Japanese },
204  { "Daniel Meltzer", "hydrogen", tr("Various fixes and improvements") },
205  { "Daniel Pielmeier", "billie", tr("Gentoo maintainer") },
206  { "Daniel Steinmetz", "son", tr("Early beta tester and bughunter (on Vista™!)") },
207  { "David Planella", "", tr("Translation system fixes") },
208  { "David Sansome", "", tr("OSX Notification Center support") },
209  { "David Roden", "Bombe", tr("Fixes") },
210  { "Deniz Türkoglu", "", tr("Mac fixes") },
211  { "Dennis Schridde", "devurandom", tr("D-Bus notifications") },
212  { "", "derpella", tr("Polish translation"), "", QLocale::Polish },
213  { "Diego Pettenò", "Flameeyes", tr("Build system improvements") },
214  { "Dirk Rettschlag", "MarcLandis", tr("Formatting support and other input line improvements, many other fixes") },
215  { "", "Dorian", tr("French translation"), "", QLocale::French },
216  { "Drew Patridge", "LinuxDolt", tr("BluesTheme stylesheet") },
217  { "Edward Hades", "", tr("Russian translation"), "", QLocale::Russian },
218  { "Fabiano Francesconi", "elbryan", tr("Italian translation"), "", QLocale::Italian },
219  { "Felix Geyer", "debfx", tr("Certificate handling improvements") },
220  { "Florent Castelli", "", tr("Sanitize topic handling") },
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  { "H. İbrahim Güngör", "igungor", tr("Turkish translation"), "", QLocale::Turkish },
225  { "Harald Fernengel", "harryF", tr("Initial Qt5 support") },
226  { "Harald Sitter", "apachelogger", tr("{Ku|U}buntu packager, motivator, promoter") },
227  { "Hendrik Leppkes", "nevcairiel", tr("Various features") },
228  { "Henning Rohlfs", "honk", tr("Various fixes") },
229  { "J-P Nurmi", "", tr("Various fixes") },
230  { "Jaak Ristioja", "", tr("Bugfixes") },
231  { "Jason Lynch", "", tr("Bugfixes") },
232  { "Jens Arnold", "amiconn", tr("Postgres migration fixes") },
233  { "Jerome Leclanche", "Adys", tr("Context menu fixes") },
234  { "Jesper Thomschütz", "", tr("Various fixes") },
235  { "Jiri Grönroos", "", tr("Finnish translation"), "", QLocale::Finnish },
236  { "Johannes Huber", "johu", tr("Many fixes and improvements, bug triaging") },
237  { "John Hand", "nox", tr("Original \"All-Seeing Eye\" logo") },
238  { "Jonas Heese", "Dante", tr("Project founder, various improvements") },
239  { "Joshua T Corbin", "tvakah", tr("Various fixes") },
240  { "Jovan Jojkić", "", tr("Serbian translation"), "", QLocale::Serbian },
241  { "Jure Repinc", "JLP", tr("Slovenian translation"), "", QLocale::Slovenian },
242  { "Jussi Schultink", "jussi01", tr("Tireless tester, {Ku|U}buntu tester and lobbyist, liters of delicious Finnish alcohol") },
243  { "K. Ernest Lee", "iFire", tr("Qt5 porting help, Travis CI setup") },
244  { "Kevin Funk", "KRF", tr("German translation"), "", QLocale::German },
245  { "Kimmo Huoman", "kipe", tr("Buffer merge improvements") },
246  { "", "Larso", tr("Finnish translation"), "", QLocale::Finnish },
247  { "Lasse Liehu", "", tr("Finnish translation"), "", QLocale::Finnish },
248  { "Leo Franchi", "", tr("OSX improvements") },
249  { "Liudas Alisauskas", "", tr("Lithuanian translation"), "", QLocale::Lithuanian },
250  { "Luke Faraone", "", tr("Documentation fixes") },
251  { "Maia Kozheva", "", tr("Russian translation"), "", QLocale::Russian },
252  { "Marco Genise", "kaffeedoktor", tr("Ideas, hacking, initial motivation") },
253  { "Marco Paolone", "Quizzlo", tr("Italian translation"), "", QLocale::Italian },
254  { "Martin Mayer", "m4yer", tr("German translation"), "", QLocale::German },
255  { "Martin Sandsmark", "sandsmark", tr("Core and other fixes, QuasselDroid") },
256  { "Matthias Coy", "pennywise", tr("German translation"), "", QLocale::German },
257  { "Mattia Basaglia", "", tr("Fixes") },
258  { "Michael Groh", "brot", tr("German translation, fixes"), "", QLocale::German },
259  { "Michael Kedzierski", "ycros", tr("Mac fixes") },
260  { "Michael Marley", "mamarley", tr("Many fixes and improvements; Ubuntu live packages") },
261  { "Miguel Revilla", "", tr("Spanish translation"), "", QLocale::Spanish },
262  { "Nuno Pinheiro", "", tr("Tons of Oxygen icons including the Quassel logo") },
263  { "Patrick Lauer", "bonsaikitten", tr("Gentoo maintainer") },
264  { "Patrick von Reth", "TheOneRing", tr("MinGW support, SNORE backend, Windows packaging") },
265  { "Paul Klumpp", "Haudrauf", tr("Initial design and main window layout") },
266  { "Pavel Volkovitskiy", "int", tr("Early beta tester and bughunter") },
267  { "Per Nielsen", "", tr("Danish translation"), "", QLocale::Danish },
268  { "Pete Beardmore", "elbeardmorez", tr("Linewrap for input line") },
269  { "Pierre-Hugues Husson", "", tr("/print command") },
270  { "Ramanathan Sivagurunathan", "", tr("Bugfixes") },
271  { "Regis Perrin", "ZRegis", tr("French translation"), "", QLocale::French },
272  { "Rolf Eike Beer", "", tr("Build system fixes") },
273  { "Roscoe van Wyk", "", tr("Bugfixes") },
274  { "Rüdiger Sonderfeld", "ruediger", tr("Emacs keybindings") },
275  { "", "salnx", tr("Highlight configuration improvements") },
276  { "Scott Kitterman", "ScottK", tr("Kubuntu packager, (packaging/build system) bughunter") },
277  { "Sebastian Meyer", "", tr("Bugfixes") },
278  { "Sebastien Fricker", "", tr("Audio backend improvements") },
279  { "", "sfionov", tr("Russian translation"), "", QLocale::Russian },
280  { "Simon Philips", "", tr("Dutch translation"), "", QLocale::Dutch },
281  { "Sjors Gielen", "dazjorz", tr("Bugfixes") },
282  { "Stefanos Sofroniou", "", tr("Greek translation"), "", QLocale::Greek },
283  { "Stella Rouzi", "differentreality", tr("Greek translation"), "", QLocale::Greek },
284  { "Rafael Belmonte", "EagleScreen", tr("Spanish translation"), "", QLocale::Spanish },
285  { "Sergiu Bivol", "", tr("Romanian translation"), "", QLocale::Romanian },
286  { "Tae-Hoon Kwon", "", tr("Korean translation"), "", QLocale::Korean },
287  { "Terje Andersen", "tan", tr("Norwegian translation, documentation") },
288  { "Theo Chatzimichos", "tampakrap", tr("Greek translation"), "", QLocale::Greek },
289  { "Theofilos Intzoglou", "", tr("Greek translation"), "", QLocale::Greek },
290  { "Thomas Hogh", "Datafreak", tr("Former Windows builder") },
291  { "Thomas Müller", "", tr("Fixes, Debian packaging") },
292  { "Tim Schumacher", "xAFFE", tr("Fixes and feedback") },
293  { "", "ToBeFree", tr("German translation"), "", QLocale::German },
294  { "Tomáš Chvátal", "scarabeus", tr("Czech translation"), "", QLocale::Czech },
295  { "Vit Pelcak", "", tr("Czech translation"), "", QLocale::Czech },
296  { "Volkan Gezer", "", tr("Turkish translation"), "", QLocale::Turkish },
297  { "Yaohan Chen", "hagabaka", tr("Network detection improvements") },
298  { "Yuri Chornoivan", "", tr("Ukrainian translation"), "", QLocale::Ukrainian },
299  { "Zé", "", tr("Portuguese translation"), "", QLocale::Portuguese },
300  { "", "zeugma", tr("Turkish translation"), "", QLocale::Turkish }
301  });
302 }