Merge pull request #3597 from ByteHamster/rework-about-screen

Rework about screen
This commit is contained in:
H. Lehmann 2019-11-09 10:15:18 +01:00 committed by GitHub
commit 60a070b56c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 974 additions and 1008 deletions

View File

@ -1,194 +1,174 @@
DEVELOPERS
==========
Alan Orth
Alexander Terczka
Alexei Bendebury
Ali
alifeflow
alimemonzx
amhokies
Anders Bo Rasmussen
Anderson Mesquita
Andrew Gaul
Andrey Krutov
Anthony Lieuallen
axq
bhlee
Borjan Tchakaloff
brad
Brad Pitcher
Burt Wiley Snyder
danieloeh
mfietz
TomHennen
ByteHamster
Cameron Banga
Christian Ludwig
Christopher Szucko
Cj Malone
Colin Willson
Cédric Cabessa
damoasda
Danial Klimkin
Daniel Oeh
David Carver
David Reiss
Dean Brettle
dethstar
Dirk Mueller
Domingos Lopes
drabux
egsavage
EirikV
Eoin Mcloughlin
eraymond
Ercan Erden
falko
Falko Lehmann
Hannes Achleitner
hannesa2
Hanno Zulla
heckler01
Holger Jeromin
Humberto Fraga
InsidE
James Falcon
Jan Niehusmann
Jan-Peter von Hunnius
Jatin Kumar
Jens Klingenberg
Jens Müller
Joe Stein
Johan Liesén
Kaligule
Katrin Leinweber
Kevin Dalley
Koen Glotzbach
kroegerama
Kurian Vithayathil
LatinSuD
Lee Yeong Khang
lightonflux
ligi
Luis Cruz
Marc Lasson
Martin Fietz
Martin Olsson
mat tso
mateoeh
Matias de Andrea
Matthew Gaffen
Matthias Schütz
Matthieu De Beule
Maurice Gilden
Meir Schwarz
Michael Kaiser
Michael Scarito
Mike Chelen
minusf
MolarAmbiguity
Mostafa Ahangarha
Mounir Lamouri
mr-intj
Nathan Mascitelli
Nis Wechselberg
Oliver Crow
orelogo
pachecosf
Paul Ortyl
Petar Kukolj
orionlee
domingos86
andersonvom
patheticpat
spacecowboy
brad
Cj-Malone
gaul
qkolj
Raghul
Raghul Jagannathan
recalculated
rezanejati
Ross Harrison
Sam Lee
Sam Whited
saqura
Selivanov Pavel
Serge
Seth Golub
pachecosf
ahangarha
rharriso
xgouchet
damoasda
sevenmaster
Shantana Hardy
Shinichiro Fujiwara
Simon Danner
Simon Rutishauser
Simon Schubert
Soso Tughushi
Spencer Visick
Stefan Mitrik
Stephen Kitt
Terence Eden
Tim Butram
Tobias Preuss
Tom Hennen
Tom Tom
tommy watson
tuxayo
twiceyuan
Udi Finkelstein
VarunBarad
volhol
Volker Hollich
Wagubi Brian
WangYun
William Seemann
TheRealFalcon
keunes
shortspider
hannesa2
jas14
udif
dirkmueller
jatinkumarg
peschmae0
orelogo
ydinath
TRANSLATORS
===========
CedricCabessa
mchelen
johnjohndoe
dethstar
drabux
saqura
bibz
hzulla
deandreamatias
MeirAtIMDDE
egsavage
ligi
dreiss
liesen
nereocystis
rezanejati
twiceyuan
HaBaLeS
volhol
CameronBanga
HolgerJeromin
xisberto
jmue
katrinleinweber
LatinSuD
24hours
SosoTughushi
fabolhak
archibishop
alifeflow
toggles
matdb
kingargyle
dsmith47
hannesaa2
jhunnius
ShadowIce
raghulj
raghulrm
stevomit
skitt
mr-intj
tuxayo
alimemonzx
alanorth
alexte
andrey-krutov
arantius
bws9000
chrissicool
cszucko
CWftw
danielm5
ariedov
brettle
eirikv
eerden
jannic
Foso
Kaligule
kvithayathil
luiscruz
mlasson
M-arcel
mo
mdeveloper20
mschuetz
MolarAmbiguity
mounirlamouri
ortylp
PtilopsisLeucotis
SamWhited
selivan
sonnayasomnambula
sethoscope
shantanahardy
mamehacker
danners
corecode
vimsick
edent
atrus6
waylife
wseemann
amhokies
axq
fossterer
lightonflux
minusf
Arabic: abdelrahman.fahem93, abdunnasir, abuzar3.khalid, desha, iDemo, mohamedagamy, msahouli, nabilMaghura
Asturian (Spain): enolp
Asturian (ast_ES): enolp
Azerbaijani: danieloeh, kotfenix
Basque: gaztainalde, pospolos, zakurranputza
Bulgarian: solusitor
Catalan: dvd1985, exort12, javiercoll, lambdani, marcmetallextrem, xc70
Catalan (Spain): 00c0c0, javiercoll
Catalan (ca_ES): 00c0c0, javiercoll
Chinese: dillonbecker, RainSlide, xukeek, yangyang
Chinese (China): bebeauties38, domingos86, dudeG, ErlichLiu, Felix2yu, gaohongyuan, Guaidaodl, Huck0, iconteral, JayYoung, jhxie, kavdx, kyleehee, linxiangyu, molisiye, owen8877, RainSlide, Sak94664, spice2wolf, stellaxuyi, tupunco, wi24rd, wongsyrone, xukeek, yangyang, yiqiok, YogaGuru
Chinese (Taiwan): gugod, nigelinux, pggdt, ymhuang0808
Czech (Czech Republic): elich, Hanzmeister, mcepl, petnek, svetlemodry
Chinese (zh_CN): bebeauties38, cyril3, domingos86, dudeG, ErlichLiu, Felix2yu, gaohongyuan, Guaidaodl, Huck0, iconteral, JayYoung, jhxie, kavdx, kyleehee, linxiangyu, molisiye, owen8877, RainSlide, Sak94664, spice2wolf, stellaxuyi, tupunco, wi24rd, wongsyrone, xukeek, yangyang, yiqiok, YogaGuru
Chinese (zh_TW): gugod, nigelinux, pggdt, Solomon, ymhuang0808
Czech (cs_CZ): anotheranonymoususer, elich, Hanzmeister, mcepl, petnek, svetlemodry
Danish: CasperHN, jhertel
Dutch: e2jk, glotzbach, rwv, Vistaus
English: mfietz, sterylmreep
Estonian: Eraser
Finnish: danieloeh, elguitar, Sahtor
French: cactux, ChaoticMind, clombion, e2jk, lacouture, LouFex, Matth78, mfietz, Poussinou, PRIMOKORN, repat, Sioul, sterylmreep, TacoTheDank, Tilwa, vcariven, whenrow
French: cactux, ChaoticMind, clombion, e2jk, edewaele, lacouture, LouFex, Matth78, mfietz, Poussinou, repat, Sioul, sterylmreep, TacoTheDank, Tilwa, vcariven, whenrow
Galician: antiparvos, pikamoku, Raichely
German: 112358, altegedanken, barilla, benedikt.g, bitsunited, Buggi, ceving, ChaoticMind, Chaquotay, dab0015, dadosch, DerSilly, die_otto, DJaeger, elkangaroo, enz, fidel, finsterwalder, Foso, GNi33, hightower5, HolgerJeromin, kalei, lohmann, LostInWeb, mfietz, moasda, nilso, repat, SAPlayer, schafia, Schroedingberg, sevenmaster, sucaml, Teaspoon, theonlytruth, weltenwort, Wyrrrd, ypid
Greek: antonist, danieloeh, hua2016s, MSavoritias, pavlosv
Hebrew (Israel): amir.dafnyman, E1i9, mongoose4004, pinkasey, rellieberman, Yaron, הלוי11
Hindi (India): ankitiitb1069, Isaasu, nmabhinandan, purple.coder, siddhusengar
Hungarian: glatz.balazs, hurrikan, lna91, marthynw, naren93, tszauer, ttyborg42
German: 112358, altegedanken, barilla, benedikt.g, bitsunited, Buggi, ByteHamster, ceving, ChaoticMind, Chaquotay, dab0015, dadosch, DerSilly, die_otto, DJaeger, elkangaroo, enz, fidel, finsterwalder, Foso, GNi33, hightower5, HolgerJeromin, kalei, lohmann, LostInWeb, mfietz, moasda, nilso, repat, SAPlayer, schafia, Schroedingberg, sevenmaster, sucaml, Teaspoon, theonlytruth, weltenwort, Wyrrrd, ypid
Modern Greek (1453-): antonist, danieloeh, hua2016s, jack.ath92, MSavoritias, pavlosv
Hebrew (he_IL): amir.dafnyman, E1i9, mongoose4004, pinkasey, rellieberman, Yaron, הלוי11
Hindi (hi_IN): ankitiitb1069, Isaasu, nmabhinandan, purple.coder, siddhusengar
Hungarian: glatz.balazs, hurrikan, lna91, marthynw, meskobalazs, naren93, tszauer, ttyborg42
Icelandic: marthjod
Indonesian: jff, levirs565, luke137, rezafaiza, silvanael16
Italian: aalex70, allin, apanontin, Bonnee, giuseppep, Guybrush88, marco_pag, neonsoftware, sevenmaster, theloca95
Italian (Italy): aalex70, allin, apanontin, Bonnee, buongiorgio, giuseppep, Guybrush88, m.chinni, neonsoftware, niccord, nixxo, sevenmaster, theloca95
Italian (it_IT): aalex70, allin, apanontin, Bonnee, buongiorgio, giuseppep, Guybrush88, ilmanzo, m.chinni, neonsoftware, niccord, nixxo, sevenmaster, theloca95
Japanese: Naofumi, RACER1, sh3llc4t, TranslatorG
Kannada (India): thejeshgn
Kannada (kn_IN): chiraag.nataraj, thejeshgn
Korean: changwoo, libliboom, seungrye, skcha
Korean (South Korea): changwoo, seungrye
Korean (ko_KR): changwoo, seungrye
Lithuanian: naglis
Macedonian: krisfremen
Malayalam: rashivkp, rubenroy
Malayalam: joice, rashivkp, rubenroy
Norwegian: timbast
Norwegian Bokmål: corkie, danieloeh, heraldo
Norwegian Bokmål (Norway): corkie, heraldo, kongk, timbast
Norwegian Bokmål (nb_NO): corkie, heraldo, kongk, timbast
Persian: ahangarha, F7D, sinamoghaddas
Polish: Iwangelion, maniexx, mateossh, mfloryan
Polish (Poland): d6210809, hiro2020, Iwangelion, lomapur, mandlus, maniexx, Mephistofeles, shark103, tyle
Polish (pl_PL): d6210809, hiro2020, Iwangelion, kRkk, lomapur, mandlus, maniexx, Mephistofeles, shark103, tyle
Portuguese: andersonvom, domingos86, emansije, smarquespt
Portuguese (Brazil): alexupits, alysonborges, andersonvom, arua, caioau, carlo_valente, castrors, deandreamatias, edman, Firmino, jackmiras, Junin, lipefire, lluccia, lucasmotacr, mbaltar, rogervezaro, RubeensVinicius, SamWilliam, silvanael16
Romanian (Romania): corneliu.e, fuzzmz, ralienpp
Russian (Russia): astra1, btimofeev, Duke_Raven, gammja, GaynullinDima, MegMasters98, mercutiy, null, overmind88, PtilopsisLeucotis, s.chebotar, shams4real, skvheadless, un_logic, Vladryyu, whereisthetea, zhenya97
Slovenian (Slovenia): panter23
Spanish: AleksSyntek, andersonvom, coperfix, deandreamatias, domingos86, dvd1985, Fitoschido, frandavid100, hard_ware, javiercoll, Juanmuto, lambdani, LatinSuD, leogrignafini, palopezv, TacoTheDank, tres.14159, wakutiteo
Spanish (Spain): andersonvom, dvd1985, e2jk, frandavid100, hard_ware, palopezv, Raichely, TacoTheDank
Swahili: kmtra
Swahili (Kenya): BonfaceKilz
Swedish (Sweden): albin.brantin, Bio, bpnilsson, ChaoticMind, jony08, nilso, SharpMelon, TiloWiklund, TwoD
Portuguese (pt_BR): alexupits, alysonborges, andersonvom, arua, caioau, carlo_valente, castrors, deandreamatias, edman, Firmino, jackmiras, Junin, lipefire, lluccia, lucasmotacr, mbaltar, rogervezaro, RubeensVinicius, SamWilliam, silvanael16
Romanian (ro_RO): corneliu.e, fuzzmz, ralienpp
Russian (ru_RU): astra1, btimofeev, Duke_Raven, gammja, GaynullinDima, MegMasters98, mercutiy, null, overmind88, PtilopsisLeucotis, s.chebotar, shams4real, skvheadless, un_logic, Vladryyu, whereisthetea, zhenya97
Slovenian (sl_SI): panter23
Spanish: AleksSyntek, andersonvom, Atreyu94, coperfix, deandreamatias, domingos86, dvd1985, Fitoschido, frandavid100, hard_ware, javiercoll, Juanmuto, lambdani, LatinSuD, leogrignafini, palopezv, TacoTheDank, tres.14159, wakutiteo
Spanish (es_ES): andersonvom, dvd1985, e2jk, frandavid100, hard_ware, palopezv, Raichely, TacoTheDank
Swahili (macrolanguage): kmtra
Swahili (macrolanguage) (sw_KE): BonfaceKilz
Swedish (sv_SE): albin.brantin, Bio, bpnilsson, ChaoticMind, jony08, nilso, SharpMelon, TiloWiklund, TwoD
Telugu: Isaasu, veeven
Turkish: basarancaner, brsata, Erdy, golcuk, overbite, Slsdem
Ukrainian (Ukraine): older, paul_sm, sergiyr, zhenya97
Ukrainian (uk_UA): older, paul_sm, sergiyr, zhenya97
Vietnamese: abnvolk, nguyenvui, ppanhh, vietnamesel10n
Vietnamese (Vietnam): bizover
Vietnamese (vi_VN): bizover

View File

@ -24,6 +24,12 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
generatedDensities = []
def commit = "Unknown commit"
try {
commit = "git rev-parse --short HEAD".execute().text.trim()
} catch (Exception ignore) { }
buildConfigField "String", "COMMIT_HASH", ('"' + commit + '"')
javaCompileOptions {
annotationProcessorOptions {
arguments = [ eventBusIndex : 'de.danoeh.antennapod.ApEventBusIndex' ]
@ -181,18 +187,7 @@ if (project.hasProperty("antennaPodServiceAccountEmail")) {
}
}
task filterAbout(type: Copy) {
from "src/main/templates/about.html"
into "src/main/assets"
filter(ReplaceTokens, tokens: [
versionname: android.defaultConfig.versionName,
commit : "git rev-parse --short HEAD".execute().text,
year : new Date().format('yyyy')])
outputs.upToDateWhen { false }
}
task copyTextFiles(type: Copy) {
from "../CONTRIBUTORS"
task copyLicense(type: Copy) {
from "../LICENSE"
into "src/main/assets/"
rename { String fileName ->
@ -201,5 +196,5 @@ task copyTextFiles(type: Copy) {
outputs.upToDateWhen { false }
}
preBuild.dependsOn filterAbout, copyTextFiles
preBuild.dependsOn copyLicense

View File

@ -127,8 +127,3 @@
-dontwarn java.lang.management.ManagementFactory
-dontwarn java.lang.management.ThreadInfo
-dontwarn java.lang.management.ThreadMXBean
# About screen teaser in html view
-keep class de.danoeh.antennapod**.R$drawable {
public int teaser;
}

View File

@ -140,14 +140,6 @@
<activity android:name=".activity.StorageErrorActivity">
</activity>
<activity
android:name=".activity.AboutActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/about_pref">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.danoeh.antennapod.activity.PreferenceActivity"/>
</activity>
<activity
android:name=".activity.ImportExportActivity"
android:label="@string/import_export">

View File

@ -0,0 +1,119 @@
danieloeh;968613;Original creator of AntennaPod (retired)
mfietz;6860662;Maintainer
TomHennen;5216560;Maintainer (retired)
ByteHamster;5811634;Maintainer
orionlee;250644;Contributor
domingos86;9538859;Contributor
andersonvom;69922;Contributor
patheticpat;16046;Contributor
spacecowboy;223655;Contributor
brad;1614;Contributor
Cj-Malone;10121513;Contributor
gaul;848247;Contributor
qkolj;6667105;Contributor
pachecosf;46357909;Contributor
ahangarha;11241315;Contributor
rharriso;570910;Contributor
xgouchet;818706;Contributor
damoasda;46045854;Contributor
sevenmaster;12869538;Contributor
TheRealFalcon;153674;Contributor
keunes;11229646;Contributor
shortspider;5712543;Contributor
hannesa2;3314607;Contributor
jas14;569991;Contributor
udif;809640;Contributor
dirkmueller;1029152;Contributor
jatinkumarg;20503830;Contributor
peschmae0;4450993;Contributor
orelogo;15976578;Contributor
ydinath;4193331;Contributor
CedricCabessa;365097;Contributor
mchelen;30691;Contributor
johnjohndoe;144518;Contributor
dethstar;1239177;Contributor
drabux;10663142;Contributor
saqura;1935380;Contributor
bibz;5141956;Contributor
hzulla;1705654;Contributor
deandreamatias;21011641;Contributor
MeirAtIMDDE;4421079;Contributor
egsavage;126165;Contributor
ligi;111600;Contributor
dreiss;4121;Contributor
liesen;26872;Contributor
nereocystis;2257107;Contributor
rezanejati;16049370;Contributor
twiceyuan;2619800;Contributor
HaBaLeS;730902;Contributor
volhol;11587858;Contributor
CameronBanga;611354;Contributor
HolgerJeromin;2410353;Contributor
xisberto;1914956;Contributor
jmue;898577;Contributor
katrinleinweber;9948149;Contributor
LatinSuD;451487;Contributor
24hours;650407;Contributor
SosoTughushi;19908097;Contributor
fabolhak;20029691;Contributor
archibishop;36948493;Contributor
alifeflow;24603829;Contributor
toggles;14695;Contributor
matdb;48329535;Contributor
kingargyle;177042;Contributor
dsmith47;14109426;Contributor
hannesaa2;18496079;Contributor
jhunnius;9149031;Contributor
ShadowIce;59123;Contributor
raghulj;57007;Contributor
raghulrm;5362986;Contributor
stevomit;205959;Contributor
skitt;2128935;Contributor
mr-intj;6268767;Contributor
tuxayo;2678215;Contributor
alimemonzx;44647595;Contributor
alanorth;191754;Contributor
alexte;7724992;Contributor
andrey-krutov;1488973;Contributor
arantius;84729;Contributor
bws9000;262625;Contributor
chrissicool;232590;Contributor
cszucko;1810383;Contributor
CWftw;1498303;Contributor
danielm5;66779;Contributor
ariedov;958646;Contributor
brettle;118192;Contributor
eirikv;4076243;Contributor
eerden;277513;Contributor
jannic;232606;Contributor
Foso;5015532;Contributor
Kaligule;3586246;Contributor
kvithayathil;1056073;Contributor
luiscruz;1080714;Contributor
mlasson;5814258;Contributor
M-arcel;56698158;Contributor
mo;7117;Contributor
mdeveloper20;2319126;Contributor
mschuetz;108637;Contributor
MolarAmbiguity;10541979;Contributor
mounirlamouri;573590;Contributor
ortylp;470439;Contributor
PtilopsisLeucotis;54054883;Contributor
SamWhited;512573;Contributor
selivan;1208989;Contributor
sonnayasomnambula;7716779;Contributor
sethoscope;534043;Contributor
shantanahardy;26757164;Contributor
mamehacker;16738348;Contributor
danners;116551;Contributor
corecode;177979;Contributor
vimsick;20211590;Contributor
edent;837136;Contributor
atrus6;357881;Contributor
waylife;3348620;Contributor
wseemann;2296196;Contributor
amhokies;3124968;Contributor
axq;5077221;Contributor
fossterer;4236021;Contributor
lightonflux;1377943;Contributor
minusf;3632883;Contributor
1 danieloeh 968613 Original creator of AntennaPod (retired)
2 mfietz 6860662 Maintainer
3 TomHennen 5216560 Maintainer (retired)
4 ByteHamster 5811634 Maintainer
5 orionlee 250644 Contributor
6 domingos86 9538859 Contributor
7 andersonvom 69922 Contributor
8 patheticpat 16046 Contributor
9 spacecowboy 223655 Contributor
10 brad 1614 Contributor
11 Cj-Malone 10121513 Contributor
12 gaul 848247 Contributor
13 qkolj 6667105 Contributor
14 pachecosf 46357909 Contributor
15 ahangarha 11241315 Contributor
16 rharriso 570910 Contributor
17 xgouchet 818706 Contributor
18 damoasda 46045854 Contributor
19 sevenmaster 12869538 Contributor
20 TheRealFalcon 153674 Contributor
21 keunes 11229646 Contributor
22 shortspider 5712543 Contributor
23 hannesa2 3314607 Contributor
24 jas14 569991 Contributor
25 udif 809640 Contributor
26 dirkmueller 1029152 Contributor
27 jatinkumarg 20503830 Contributor
28 peschmae0 4450993 Contributor
29 orelogo 15976578 Contributor
30 ydinath 4193331 Contributor
31 CedricCabessa 365097 Contributor
32 mchelen 30691 Contributor
33 johnjohndoe 144518 Contributor
34 dethstar 1239177 Contributor
35 drabux 10663142 Contributor
36 saqura 1935380 Contributor
37 bibz 5141956 Contributor
38 hzulla 1705654 Contributor
39 deandreamatias 21011641 Contributor
40 MeirAtIMDDE 4421079 Contributor
41 egsavage 126165 Contributor
42 ligi 111600 Contributor
43 dreiss 4121 Contributor
44 liesen 26872 Contributor
45 nereocystis 2257107 Contributor
46 rezanejati 16049370 Contributor
47 twiceyuan 2619800 Contributor
48 HaBaLeS 730902 Contributor
49 volhol 11587858 Contributor
50 CameronBanga 611354 Contributor
51 HolgerJeromin 2410353 Contributor
52 xisberto 1914956 Contributor
53 jmue 898577 Contributor
54 katrinleinweber 9948149 Contributor
55 LatinSuD 451487 Contributor
56 24hours 650407 Contributor
57 SosoTughushi 19908097 Contributor
58 fabolhak 20029691 Contributor
59 archibishop 36948493 Contributor
60 alifeflow 24603829 Contributor
61 toggles 14695 Contributor
62 matdb 48329535 Contributor
63 kingargyle 177042 Contributor
64 dsmith47 14109426 Contributor
65 hannesaa2 18496079 Contributor
66 jhunnius 9149031 Contributor
67 ShadowIce 59123 Contributor
68 raghulj 57007 Contributor
69 raghulrm 5362986 Contributor
70 stevomit 205959 Contributor
71 skitt 2128935 Contributor
72 mr-intj 6268767 Contributor
73 tuxayo 2678215 Contributor
74 alimemonzx 44647595 Contributor
75 alanorth 191754 Contributor
76 alexte 7724992 Contributor
77 andrey-krutov 1488973 Contributor
78 arantius 84729 Contributor
79 bws9000 262625 Contributor
80 chrissicool 232590 Contributor
81 cszucko 1810383 Contributor
82 CWftw 1498303 Contributor
83 danielm5 66779 Contributor
84 ariedov 958646 Contributor
85 brettle 118192 Contributor
86 eirikv 4076243 Contributor
87 eerden 277513 Contributor
88 jannic 232606 Contributor
89 Foso 5015532 Contributor
90 Kaligule 3586246 Contributor
91 kvithayathil 1056073 Contributor
92 luiscruz 1080714 Contributor
93 mlasson 5814258 Contributor
94 M-arcel 56698158 Contributor
95 mo 7117 Contributor
96 mdeveloper20 2319126 Contributor
97 mschuetz 108637 Contributor
98 MolarAmbiguity 10541979 Contributor
99 mounirlamouri 573590 Contributor
100 ortylp 470439 Contributor
101 PtilopsisLeucotis 54054883 Contributor
102 SamWhited 512573 Contributor
103 selivan 1208989 Contributor
104 sonnayasomnambula 7716779 Contributor
105 sethoscope 534043 Contributor
106 shantanahardy 26757164 Contributor
107 mamehacker 16738348 Contributor
108 danners 116551 Contributor
109 corecode 177979 Contributor
110 vimsick 20211590 Contributor
111 edent 837136 Contributor
112 atrus6 357881 Contributor
113 waylife 3348620 Contributor
114 wseemann 2296196 Contributor
115 amhokies 3124968 Contributor
116 axq 5077221 Contributor
117 fossterer 4236021 Contributor
118 lightonflux 1377943 Contributor
119 minusf 3632883 Contributor

View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8"?>
<libraries>
<library
name="AntennaPod"
author="The AntennaPod team"
website="https://github.com/AntennaPod/AntennaPod/"
license="MIT"
licenseText="LICENSE.txt" />
<library
name="AntennaPod-AudioPlayer"
author="The AntennaPod team"
website="https://github.com/AntennaPod/AntennaPod-AudioPlayer/"
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
name="Apache Commons"
author="The Apache Software Foundation"
website="http://commons.apache.org/"
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
name="EventBus"
author="greenrobot"
website="https://github.com/greenrobot/EventBus"
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
name="ExoPlayer"
author="Google"
website="https://github.com/google/ExoPlayer"
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
name="Floating Action Button Speed Dial"
author="Roberto Leinardi"
website="https://github.com/leinardi/FloatingActionButtonSpeedDial"
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
name="Glide"
author="bumptech"
website="https://github.com/bumptech/glide/"
license="Simplified BSD"
licenseText="LICENSE_GLIDE.txt" />
<library
name="Iconify"
author="Joan Zapata"
website="https://github.com/JoanZapata/android-iconify"
license="Apache 2.0"
licenseText="LICENSE_ANDROID_ICONIFY.txt" />
<library
name="jsoup"
author="Jonathan Hedley"
website="http://jsoup.org/"
license="MIT"
licenseText="LICENSE_JSOUP.txt" />
<library
name="Material Design Icons"
author="Google"
website="https://github.com/google/material-design-icons"
license="Attribution-ShareAlike 4.0 International"
licenseText="LICENSE_MATERIAL_DESIGN_ICONS.txt" />
<library
name="Material Design Icons"
author="Templarian"
website="https://github.com/Templarian/MaterialDesign"
license="SIL Open Font, Version 1.1"
licenseText="LICENSE_SIL.txt" />
<library
name="OkHttp"
author="Square"
website="https://github.com/square/okhttp"
license="Apache 2.0"
licenseText="LICENSE_OKHTTP.txt" />
<library
name="Okio"
author="Square"
website="https://github.com/square/okio"
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
name="Presto Client"
author="aocate"
website="http://www.aocate.com/presto/"
license="Apache 2.0"
licenseText="LICENSE_PRESTO.txt" />
<library
name="RecyclerView-FlexibleDivider"
author="yqritc"
website="https://github.com/yqritc/RecyclerView-FlexibleDivider"
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
name="RxAndroid"
author="ReactiveX"
website="https://github.com/ReactiveX/RxAndroid"
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
name="StackBlur"
author="Enrique López Mañas"
website="https://github.com/kikoso/android-stackblur"
license="Apache 2.0"
licenseText="LICENSE_APACHE-2.0.txt" />
<library
name="Triangle Label View"
author="Shota Saito"
website="https://github.com/shts/TriangleLabelView"
license="Apache 2.0"
licenseText="LICENSE_TRIANGLE_LABEL_VIEW.txt" />
</libraries>

View File

@ -0,0 +1,55 @@
Arabic;abdelrahman.fahem93, abdunnasir, abuzar3.khalid, desha, iDemo, mohamedagamy, msahouli, nabilMaghura
Asturian (ast_ES);enolp
Azerbaijani;danieloeh, kotfenix
Basque;gaztainalde, pospolos, zakurranputza
Bulgarian;solusitor
Catalan;dvd1985, exort12, javiercoll, lambdani, marcmetallextrem, xc70
Catalan (ca_ES);00c0c0, javiercoll
Chinese;dillonbecker, RainSlide, xukeek, yangyang
Chinese (zh_CN);bebeauties38, cyril3, domingos86, dudeG, ErlichLiu, Felix2yu, gaohongyuan, Guaidaodl, Huck0, iconteral, JayYoung, jhxie, kavdx, kyleehee, linxiangyu, molisiye, owen8877, RainSlide, Sak94664, spice2wolf, stellaxuyi, tupunco, wi24rd, wongsyrone, xukeek, yangyang, yiqiok, YogaGuru
Chinese (zh_TW);gugod, nigelinux, pggdt, Solomon, ymhuang0808
Czech (cs_CZ);anotheranonymoususer, elich, Hanzmeister, mcepl, petnek, svetlemodry
Danish;CasperHN, jhertel
Dutch;e2jk, glotzbach, rwv, Vistaus
English;mfietz, sterylmreep
Estonian;Eraser
Finnish;danieloeh, elguitar, Sahtor
French;cactux, ChaoticMind, clombion, e2jk, edewaele, lacouture, LouFex, Matth78, mfietz, Poussinou, repat, Sioul, sterylmreep, TacoTheDank, Tilwa, vcariven, whenrow
Galician;antiparvos, pikamoku, Raichely
German;112358, altegedanken, barilla, benedikt.g, bitsunited, Buggi, ByteHamster, ceving, ChaoticMind, Chaquotay, dab0015, dadosch, DerSilly, die_otto, DJaeger, elkangaroo, enz, fidel, finsterwalder, Foso, GNi33, hightower5, HolgerJeromin, kalei, lohmann, LostInWeb, mfietz, moasda, nilso, repat, SAPlayer, schafia, Schroedingberg, sevenmaster, sucaml, Teaspoon, theonlytruth, weltenwort, Wyrrrd, ypid
Modern Greek (1453-);antonist, danieloeh, hua2016s, jack.ath92, MSavoritias, pavlosv
Hebrew (he_IL);amir.dafnyman, E1i9, mongoose4004, pinkasey, rellieberman, Yaron, הלוי11
Hindi (hi_IN);ankitiitb1069, Isaasu, nmabhinandan, purple.coder, siddhusengar
Hungarian;glatz.balazs, hurrikan, lna91, marthynw, meskobalazs, naren93, tszauer, ttyborg42
Icelandic;marthjod
Indonesian;jff, levirs565, luke137, rezafaiza, silvanael16
Italian;aalex70, allin, apanontin, Bonnee, giuseppep, Guybrush88, marco_pag, neonsoftware, sevenmaster, theloca95
Italian (it_IT);aalex70, allin, apanontin, Bonnee, buongiorgio, giuseppep, Guybrush88, ilmanzo, m.chinni, neonsoftware, niccord, nixxo, sevenmaster, theloca95
Japanese;Naofumi, RACER1, sh3llc4t, TranslatorG
Kannada (kn_IN);chiraag.nataraj, thejeshgn
Korean;changwoo, libliboom, seungrye, skcha
Korean (ko_KR);changwoo, seungrye
Lithuanian;naglis
Macedonian;krisfremen
Malayalam;joice, rashivkp, rubenroy
Norwegian;timbast
Norwegian Bokmål;corkie, danieloeh, heraldo
Norwegian Bokmål (nb_NO);corkie, heraldo, kongk, timbast
Persian;ahangarha, F7D, sinamoghaddas
Polish;Iwangelion, maniexx, mateossh, mfloryan
Polish (pl_PL);d6210809, hiro2020, Iwangelion, kRkk, lomapur, mandlus, maniexx, Mephistofeles, shark103, tyle
Portuguese;andersonvom, domingos86, emansije, smarquespt
Portuguese (pt_BR);alexupits, alysonborges, andersonvom, arua, caioau, carlo_valente, castrors, deandreamatias, edman, Firmino, jackmiras, Junin, lipefire, lluccia, lucasmotacr, mbaltar, rogervezaro, RubeensVinicius, SamWilliam, silvanael16
Romanian (ro_RO);corneliu.e, fuzzmz, ralienpp
Russian (ru_RU);astra1, btimofeev, Duke_Raven, gammja, GaynullinDima, MegMasters98, mercutiy, null, overmind88, PtilopsisLeucotis, s.chebotar, shams4real, skvheadless, un_logic, Vladryyu, whereisthetea, zhenya97
Slovenian (sl_SI);panter23
Spanish;AleksSyntek, andersonvom, Atreyu94, coperfix, deandreamatias, domingos86, dvd1985, Fitoschido, frandavid100, hard_ware, javiercoll, Juanmuto, lambdani, LatinSuD, leogrignafini, palopezv, TacoTheDank, tres.14159, wakutiteo
Spanish (es_ES);andersonvom, dvd1985, e2jk, frandavid100, hard_ware, palopezv, Raichely, TacoTheDank
Swahili (macrolanguage);kmtra
Swahili (macrolanguage) (sw_KE);BonfaceKilz
Swedish (sv_SE);albin.brantin, Bio, bpnilsson, ChaoticMind, jony08, nilso, SharpMelon, TiloWiklund, TwoD
Telugu;Isaasu, veeven
Turkish;basarancaner, brsata, Erdy, golcuk, overbite, Slsdem
Ukrainian (uk_UA);older, paul_sm, sergiyr, zhenya97
Vietnamese;abnvolk, nguyenvui, ppanhh, vietnamesel10n
Vietnamese (vi_VN);bizover
1 Arabic abdelrahman.fahem93, abdunnasir, abuzar3.khalid, desha, iDemo, mohamedagamy, msahouli, nabilMaghura
2 Asturian (ast_ES) enolp
3 Azerbaijani danieloeh, kotfenix
4 Basque gaztainalde, pospolos, zakurranputza
5 Bulgarian solusitor
6 Catalan dvd1985, exort12, javiercoll, lambdani, marcmetallextrem, xc70
7 Catalan (ca_ES) 00c0c0, javiercoll
8 Chinese dillonbecker, RainSlide, xukeek, yangyang
9 Chinese (zh_CN) bebeauties38, cyril3, domingos86, dudeG, ErlichLiu, Felix2yu, gaohongyuan, Guaidaodl, Huck0, iconteral, JayYoung, jhxie, kavdx, kyleehee, linxiangyu, molisiye, owen8877, RainSlide, Sak94664, spice2wolf, stellaxuyi, tupunco, wi24rd, wongsyrone, xukeek, yangyang, yiqiok, YogaGuru
10 Chinese (zh_TW) gugod, nigelinux, pggdt, Solomon, ymhuang0808
11 Czech (cs_CZ) anotheranonymoususer, elich, Hanzmeister, mcepl, petnek, svetlemodry
12 Danish CasperHN, jhertel
13 Dutch e2jk, glotzbach, rwv, Vistaus
14 English mfietz, sterylmreep
15 Estonian Eraser
16 Finnish danieloeh, elguitar, Sahtor
17 French cactux, ChaoticMind, clombion, e2jk, edewaele, lacouture, LouFex, Matth78, mfietz, Poussinou, repat, Sioul, sterylmreep, TacoTheDank, Tilwa, vcariven, whenrow
18 Galician antiparvos, pikamoku, Raichely
19 German 112358, altegedanken, barilla, benedikt.g, bitsunited, Buggi, ByteHamster, ceving, ChaoticMind, Chaquotay, dab0015, dadosch, DerSilly, die_otto, DJaeger, elkangaroo, enz, fidel, finsterwalder, Foso, GNi33, hightower5, HolgerJeromin, kalei, lohmann, LostInWeb, mfietz, moasda, nilso, repat, SAPlayer, schafia, Schroedingberg, sevenmaster, sucaml, Teaspoon, theonlytruth, weltenwort, Wyrrrd, ypid
20 Modern Greek (1453-) antonist, danieloeh, hua2016s, jack.ath92, MSavoritias, pavlosv
21 Hebrew (he_IL) amir.dafnyman, E1i9, mongoose4004, pinkasey, rellieberman, Yaron, הלוי11
22 Hindi (hi_IN) ankitiitb1069, Isaasu, nmabhinandan, purple.coder, siddhusengar
23 Hungarian glatz.balazs, hurrikan, lna91, marthynw, meskobalazs, naren93, tszauer, ttyborg42
24 Icelandic marthjod
25 Indonesian jff, levirs565, luke137, rezafaiza, silvanael16
26 Italian aalex70, allin, apanontin, Bonnee, giuseppep, Guybrush88, marco_pag, neonsoftware, sevenmaster, theloca95
27 Italian (it_IT) aalex70, allin, apanontin, Bonnee, buongiorgio, giuseppep, Guybrush88, ilmanzo, m.chinni, neonsoftware, niccord, nixxo, sevenmaster, theloca95
28 Japanese Naofumi, RACER1, sh3llc4t, TranslatorG
29 Kannada (kn_IN) chiraag.nataraj, thejeshgn
30 Korean changwoo, libliboom, seungrye, skcha
31 Korean (ko_KR) changwoo, seungrye
32 Lithuanian naglis
33 Macedonian krisfremen
34 Malayalam joice, rashivkp, rubenroy
35 Norwegian timbast
36 Norwegian Bokmål corkie, danieloeh, heraldo
37 Norwegian Bokmål (nb_NO) corkie, heraldo, kongk, timbast
38 Persian ahangarha, F7D, sinamoghaddas
39 Polish Iwangelion, maniexx, mateossh, mfloryan
40 Polish (pl_PL) d6210809, hiro2020, Iwangelion, kRkk, lomapur, mandlus, maniexx, Mephistofeles, shark103, tyle
41 Portuguese andersonvom, domingos86, emansije, smarquespt
42 Portuguese (pt_BR) alexupits, alysonborges, andersonvom, arua, caioau, carlo_valente, castrors, deandreamatias, edman, Firmino, jackmiras, Junin, lipefire, lluccia, lucasmotacr, mbaltar, rogervezaro, RubeensVinicius, SamWilliam, silvanael16
43 Romanian (ro_RO) corneliu.e, fuzzmz, ralienpp
44 Russian (ru_RU) astra1, btimofeev, Duke_Raven, gammja, GaynullinDima, MegMasters98, mercutiy, null, overmind88, PtilopsisLeucotis, s.chebotar, shams4real, skvheadless, un_logic, Vladryyu, whereisthetea, zhenya97
45 Slovenian (sl_SI) panter23
46 Spanish AleksSyntek, andersonvom, Atreyu94, coperfix, deandreamatias, domingos86, dvd1985, Fitoschido, frandavid100, hard_ware, javiercoll, Juanmuto, lambdani, LatinSuD, leogrignafini, palopezv, TacoTheDank, tres.14159, wakutiteo
47 Spanish (es_ES) andersonvom, dvd1985, e2jk, frandavid100, hard_ware, palopezv, Raichely, TacoTheDank
48 Swahili (macrolanguage) kmtra
49 Swahili (macrolanguage) (sw_KE) BonfaceKilz
50 Swedish (sv_SE) albin.brantin, Bio, bpnilsson, ChaoticMind, jony08, nilso, SharpMelon, TiloWiklund, TwoD
51 Telugu Isaasu, veeven
52 Turkish basarancaner, brsata, Erdy, golcuk, overbite, Slsdem
53 Ukrainian (uk_UA) older, paul_sm, sergiyr, zhenya97
54 Vietnamese abnvolk, nguyenvui, ppanhh, vietnamesel10n
55 Vietnamese (vi_VN) bizover

View File

@ -1,158 +0,0 @@
package de.danoeh.antennapod.activity;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
import de.danoeh.antennapod.core.util.IntentUtils;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
/**
* Displays the 'about' screen
*/
public class AboutActivity extends AppCompatActivity {
private static final String TAG = AboutActivity.class.getSimpleName();
private WebView webView;
private LinearLayout webViewContainer;
private Disposable disposable;
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(UserPreferences.getTheme());
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayShowHomeEnabled(true);
setContentView(R.layout.about);
webViewContainer = findViewById(R.id.webViewContainer);
webView = findViewById(R.id.webViewAbout);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
webView.setBackgroundColor(Color.TRANSPARENT);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http")) {
IntentUtils.openInBrowser(AboutActivity.this, url);
return true;
} else {
url = url.replace("file:///android_asset/", "");
loadAsset(url);
return true;
}
}
});
loadAsset("about.html");
}
private void loadAsset(String filename) {
disposable = Single.create(subscriber -> {
InputStream input = null;
try {
TypedArray res = AboutActivity.this.getTheme().obtainStyledAttributes(
new int[] { R.attr.about_screen_font_color, R.attr.about_screen_background,
R.attr.about_screen_card_background, R.attr.about_screen_card_border});
String fontColor = String.format("#%06X", 0xFFFFFF & res.getColor(0, 0));
String backgroundColor = String.format("#%06X", 0xFFFFFF & res.getColor(1, 0));
String cardBackground = String.format("#%06X", 0xFFFFFF & res.getColor(2, 0));
String cardBorder = String.format("#%06X", 0xFFFFFF & res.getColor(3, 0));
res.recycle();
input = getAssets().open(filename);
String webViewData = IOUtils.toString(input, Charset.defaultCharset());
if (!webViewData.startsWith("<!DOCTYPE html>")) {
webViewData = webViewData.replace("%", "&#37;");
webViewData =
"<!DOCTYPE html>" +
"<html>" +
"<head>" +
" <meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">" +
" <style type=\"text/css\">" +
" @font-face {" +
" font-family: 'Roboto-Light';" +
" src: url('file:///android_asset/Roboto-Light.ttf');" +
" }" +
" * {" +
" color: @fontcolor@;" +
" font-family: roboto-Light;" +
" font-size: 8pt;" +
" }" +
" </style>" +
"</head><body><p>" + webViewData + "</p></body></html>";
webViewData = webViewData.replace("\n", "<br/>");
}
webViewData = webViewData.replace("@fontcolor@", fontColor);
webViewData = webViewData.replace("@background@", backgroundColor);
webViewData = webViewData.replace("@card_background@", cardBackground);
webViewData = webViewData.replace("@card_border@", cardBorder);
subscriber.onSuccess(webViewData);
} catch (IOException e) {
Log.e(TAG, Log.getStackTraceString(e));
subscriber.onError(e);
} finally {
IOUtils.closeQuietly(input);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
webViewData ->
webView.loadDataWithBaseURL("file:///android_asset/", webViewData.toString(), "text/html", "utf-8", "file:///android_asset/" + filename.toString()),
error -> Log.e(TAG, Log.getStackTraceString(error))
);
}
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
} else {
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (disposable != null) {
disposable.dispose();
}
if (webViewContainer != null && webView != null) {
webViewContainer.removeAllViews();
webView.destroy();
}
}
}

View File

@ -0,0 +1,59 @@
package de.danoeh.antennapod.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import de.danoeh.antennapod.R;
import java.util.List;
/**
* Displays a list of items that have a subtitle and an icon.
*/
public class SimpleIconListAdapter<T extends SimpleIconListAdapter.ListItem> extends ArrayAdapter<T> {
private final Context context;
private final List<T> listItems;
public SimpleIconListAdapter(Context context, List<T> listItems) {
super(context, R.layout.simple_icon_list_item, listItems);
this.context = context;
this.listItems = listItems;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = View.inflate(context, R.layout.simple_icon_list_item, null);
}
ListItem item = listItems.get(position);
((TextView) view.findViewById(R.id.title)).setText(item.title);
((TextView) view.findViewById(R.id.subtitle)).setText(item.subtitle);
Glide.with(context)
.load(item.imageUrl)
.apply(new RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.NONE)
.fitCenter()
.dontAnimate())
.into(((ImageView) view.findViewById(R.id.icon)));
return view;
}
public static class ListItem {
public final String title;
public final String subtitle;
public final String imageUrl;
public ListItem(String title, String subtitle, String imageUrl) {
this.title = title;
this.subtitle = subtitle;
this.imageUrl = imageUrl;
}
}
}

View File

@ -0,0 +1,65 @@
package de.danoeh.antennapod.fragment.preferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.ListFragment;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.adapter.SimpleIconListAdapter;
import io.reactivex.Single;
import io.reactivex.SingleOnSubscribe;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class AboutDevelopersFragment extends ListFragment {
private Disposable developersLoader;
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getListView().setDivider(null);
getListView().setSelector(android.R.color.transparent);
developersLoader = Single.create((SingleOnSubscribe<ArrayList<SimpleIconListAdapter.ListItem>>) emitter -> {
ArrayList<SimpleIconListAdapter.ListItem> developers = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("developers.csv")));
String line;
while ((line = reader.readLine()) != null) {
String[] info = line.split(";");
developers.add(new SimpleIconListAdapter.ListItem(info[0], info[2],
"https://avatars2.githubusercontent.com/u/" + info[1] + "?s=60&v=4"));
}
emitter.onSuccess(developers);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
developers -> setListAdapter(new SimpleIconListAdapter<>(getContext(), developers)),
error -> Toast.makeText(getContext(), "Error while loading developers", Toast.LENGTH_LONG).show()
);
}
@Override
public void onStop() {
super.onStop();
if (developersLoader != null) {
developersLoader.dispose();
}
}
@Override
public void onStart() {
super.onStart();
((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.developers);
}
}

View File

@ -0,0 +1,56 @@
package de.danoeh.antennapod.fragment.preferences;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.os.Bundle;
import androidx.preference.PreferenceFragmentCompat;
import com.google.android.material.snackbar.Snackbar;
import de.danoeh.antennapod.BuildConfig;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.core.util.IntentUtils;
public class AboutFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences_about);
findPreference("about_version").setSummary(String.format(
"%s (%s)", BuildConfig.VERSION_NAME, BuildConfig.COMMIT_HASH));
findPreference("about_version").setOnPreferenceClickListener((preference) -> {
ClipboardManager clipboard = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText(getString(R.string.bug_report_title),
findPreference("about_version").getSummary());
clipboard.setPrimaryClip(clip);
Snackbar.make(getView(), R.string.copied_to_clipboard, Snackbar.LENGTH_SHORT).show();
return true;
});
findPreference("about_developers").setOnPreferenceClickListener((preference) -> {
getFragmentManager().beginTransaction().replace(R.id.content, new AboutDevelopersFragment())
.addToBackStack(getString(R.string.developers)).commit();
return true;
});
findPreference("about_translators").setOnPreferenceClickListener((preference) -> {
getFragmentManager().beginTransaction().replace(R.id.content, new AboutTranslatorsFragment())
.addToBackStack(getString(R.string.translators)).commit();
return true;
});
findPreference("about_privacy_policy").setOnPreferenceClickListener((preference) -> {
IntentUtils.openInBrowser(getContext(), "https://antennapod.org/privacy.html");
return true;
});
findPreference("about_licenses").setOnPreferenceClickListener((preference) -> {
getFragmentManager().beginTransaction().replace(R.id.content, new AboutLicensesFragment())
.addToBackStack(getString(R.string.translators)).commit();
return true;
});
}
@Override
public void onStart() {
super.onStart();
((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.about_pref);
}
}

View File

@ -0,0 +1,126 @@
package de.danoeh.antennapod.fragment.preferences;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.ListFragment;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.adapter.SimpleIconListAdapter;
import de.danoeh.antennapod.core.util.IntentUtils;
import io.reactivex.Single;
import io.reactivex.SingleOnSubscribe;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class AboutLicensesFragment extends ListFragment {
private Disposable licensesLoader;
private final ArrayList<LicenseItem> licenses = new ArrayList<>();
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getListView().setDivider(null);
licensesLoader = Single.create((SingleOnSubscribe<ArrayList<LicenseItem>>) emitter -> {
licenses.clear();
InputStream stream = getContext().getAssets().open("licenses.xml");
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
NodeList libraryList = docBuilder.parse(stream).getElementsByTagName("library");
for (int i = 0; i < libraryList.getLength(); i++) {
NamedNodeMap lib = libraryList.item(i).getAttributes();
licenses.add(new LicenseItem(
lib.getNamedItem("name").getTextContent(),
String.format("By %s, %s license",
lib.getNamedItem("author").getTextContent(),
lib.getNamedItem("license").getTextContent()),
null,
lib.getNamedItem("website").getTextContent(),
lib.getNamedItem("licenseText").getTextContent()));
}
emitter.onSuccess(licenses);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
developers -> setListAdapter(new SimpleIconListAdapter<LicenseItem>(getContext(), developers)),
error -> Toast.makeText(getContext(), "Error while loading licenses", Toast.LENGTH_LONG).show()
);
}
private static class LicenseItem extends SimpleIconListAdapter.ListItem {
final String licenseUrl;
final String licenseTextFile;
LicenseItem(String title, String subtitle, String imageUrl, String licenseUrl, String licenseTextFile) {
super(title, subtitle, imageUrl);
this.licenseUrl = licenseUrl;
this.licenseTextFile = licenseTextFile;
}
}
@Override
public void onListItemClick(@NonNull ListView l, @NonNull View v, int position, long id) {
super.onListItemClick(l, v, position, id);
LicenseItem item = licenses.get(position);
CharSequence[] items = {"View website", "View license"};
new AlertDialog.Builder(getContext())
.setTitle(item.title)
.setItems(items, (dialog, which) -> {
if (which == 0) {
IntentUtils.openInBrowser(getContext(), item.licenseUrl);
} else if (which == 1) {
showLicenseText(item.licenseTextFile);
}
}).show();
}
private void showLicenseText(String licenseTextFile) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open(licenseTextFile)));
StringBuilder licenseText = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
licenseText.append(line).append("\n");
}
new AlertDialog.Builder(getContext())
.setMessage(licenseText)
.show();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onStop() {
super.onStop();
if (licensesLoader != null) {
licensesLoader.dispose();
}
}
@Override
public void onStart() {
super.onStart();
((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.licenses);
}
}

View File

@ -0,0 +1,64 @@
package de.danoeh.antennapod.fragment.preferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.ListFragment;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.adapter.SimpleIconListAdapter;
import io.reactivex.Single;
import io.reactivex.SingleOnSubscribe;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class AboutTranslatorsFragment extends ListFragment {
private Disposable translatorsLoader;
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getListView().setDivider(null);
getListView().setSelector(android.R.color.transparent);
translatorsLoader = Single.create((SingleOnSubscribe<ArrayList<SimpleIconListAdapter.ListItem>>) emitter -> {
ArrayList<SimpleIconListAdapter.ListItem> translators = new ArrayList<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("translators.csv")));
String line;
while ((line = reader.readLine()) != null) {
String[] info = line.split(";");
translators.add(new SimpleIconListAdapter.ListItem(info[0], info[1], null));
}
emitter.onSuccess(translators);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
translators -> setListAdapter(new SimpleIconListAdapter<>(getContext(), translators)),
error -> Toast.makeText(getContext(), "Error while loading translators", Toast.LENGTH_LONG).show()
);
}
@Override
public void onStop() {
super.onStop();
if (translatorsLoader != null) {
translatorsLoader.dispose();
}
}
@Override
public void onStart() {
super.onStart();
((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.translators);
}
}

View File

@ -7,7 +7,6 @@ import androidx.preference.PreferenceFragmentCompat;
import com.bytehamster.lib.preferencesearch.SearchConfiguration;
import com.bytehamster.lib.preferencesearch.SearchPreference;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.AboutActivity;
import de.danoeh.antennapod.activity.BugReportActivity;
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.core.util.IntentUtils;
@ -63,7 +62,8 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat {
findPreference(PREF_ABOUT).setOnPreferenceClickListener(
preference -> {
startActivity(new Intent(getActivity(), AboutActivity.class));
getFragmentManager().beginTransaction().replace(R.id.content, new AboutFragment())
.addToBackStack(getString(R.string.about_pref)).commit();
return true;
}
);

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:adjustViewBounds="true"
android:layout_height="wrap_content" app:srcCompat="@drawable/teaser" />

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/icon"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="16dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="16dp">
<TextView
tools:text="Title"
android:textColor="?android:attr/textColorPrimary"
android:textSize="16sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/title"/>
<TextView
tools:text="Subtitle"
android:textColor="?android:attr/textColorSecondary"
android:textSize="14sp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/subtitle"/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:layout="@layout/about_teaser"/>
<Preference
android:key="about_version"
android:title="@string/antennapod_version"
android:icon="?attr/ic_unfav"
android:summary="1.7.2 (asd8qs)"/>
<Preference
android:key="about_developers"
android:icon="?attr/ic_settings"
android:summary="@string/developers_summary"
android:title="@string/developers"/>
<Preference
android:key="about_translators"
android:icon="?attr/ic_chat"
android:summary="@string/translators_summary"
android:title="@string/translators"/>
<Preference
android:key="about_privacy_policy"
android:icon="?attr/ic_questionmark"
android:summary="https://antennapod.org/privacy.html"
android:title="@string/privacy_policy"/>
<Preference
android:key="about_licenses"
android:icon="?attr/action_about"
android:summary="@string/licenses_summary"
android:title="@string/licenses"/>
</PreferenceScreen>

View File

@ -1,183 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<style type="text/css">
@font-face {
font-family: 'Roboto-Light';
src: url('file:///android_asset/Roboto-Light.ttf');
}
html, body {
background: @background@;
margin: 0;
padding: 0;
}
* {
color: @fontcolor@;
font-family: roboto-Light;
font-size: 12pt;
}
img#logo {
display: block;
margin-left: auto;
margin-right: auto;
max-height: 200px;
max-height: 50vh;
max-width: 100%;
height: auto;
width: auto;
}
div#logobackground{
width: 100%;
background: #42a5f5;
}
.card {
background: @card_background@;
margin: 10px;
padding: 10px;
border: 1px solid @card_border@;
border-top-width: 0;
border-bottom-width: 2px;
}
h1 {
font-size: 15pt;
margin-left: 20px;
}
h2 {
font-size: 13pt;
margin-top: 0px;
}
a {
font-size: 14px;
color: #00A8DF;
text-decoration: none;
}
</style>
<title>About AntennaPod</title>
</head>
<body>
<div id="logobackground">
<img id="logo" src="file:///android_res/drawable/teaser.png" alt="Logo"/>
</div>
<h1>AntennaPod</h1>
<div class="card">
<table>
<tr><td>Version:</td><td><b>@versionname@</b></td></tr>
<tr><td>Commit:</td><td><b>@commit@</b></td></tr>
</table>
</div>
<div class="card">
Created by Daniel Oeh<br />
Copyright &copy; 2012-@year@<br />
AntennaPod Contributors <a href="CONTRIBUTORS.txt">(View)</a><br />
Licensed under the MIT License <a href="LICENSE.txt">(View)</a><br />
Privacy Policy <a href="https://antennapod.org/privacy.html">(View)</a>
</div>
<h1>Used libraries</h1>
<div class="card">
<h2>Apache Commons <a href="http://commons.apache.org/">(Link)</a></h2>
by The Apache Software Foundation, licensed under the Apache 2.0 license <a href="LICENSE_APACHE-2.0.txt">(View)</a>
</div>
<div class="card">
<h2>EventBus <a href="https://github.com/greenrobot/EventBus">(Link)</a></h2>
by greenrobot, licensed under the Apache 2.0 license <a href="LICENSE_APACHE-2.0.txt">(View)</a>
</div>
<div class="card">
<h2>ExoPlayer <a href="https://github.com/google/ExoPlayer">(Link)</a></h2>
by Google, licensed under the Apache 2.0 license <a href="LICENSE_APACHE-2.0.txt">(View)</a>
</div>
<div class="card">
<h2>Floating Action Button Speed Dial <a href="https://github.com/leinardi/FloatingActionButtonSpeedDial">(Link)</a></h2>
by Roberto Leinardi, licensed under the Apache 2.0 license <a href="LICENSE_APACHE-2.0.txt">(View)</a>
</div>
<div class="card">
<h2>Glide <a href="https://github.com/bumptech/glide/">(Link)</a></h2>
licensed under the Simplified BSD license <a href="LICENSE_GLIDE.txt">(View)</a>
</div>
<div class="card">
<h2>Iconify <a href="https://github.com/JoanZapata/android-iconify">(Link)</a></h2>
by Joan Zapata, licensed under the Apache 2.0 license <a href="LICENSE_ANDROID_ICONIFY.txt">(View)</a>
</div>
<div class="card">
<h2>jsoup <a href="http://jsoup.org/">(Link)</a></h2>
licensed under the MIT license <a href="LICENSE_JSOUP.txt">(View)</a>
</div>
<div class="card">
<h2>Material Design Icons <a href="https://github.com/google/material-design-icons">(Link)</a></h2>
by Google, licensed under an Attribution-ShareAlike 4.0 International license <a href="LICENSE_MATERIAL_DESIGN_ICONS.txt">(View)</a>
</div>
<div class="card">
<h2>Material Design Icons <a href="https://github.com/Templarian/MaterialDesign">(Link)</a></h2>
by Templarian, licensed under the SIL Open Font License, Version 1.1 <a href="LICENSE_SIL.txt">(View)</a>
</div>
<div class="card">
<h2>Material Dialogs <a href="https://github.com/afollestad/material-dialogs">(Link)</a></h2>
by Aidan Michael Follestad, licensed under the MIT License <a href="LICENSE_MATERIAL_DIALOGS.txt">(View)</a>
</div>
<div class="card">
<h2>OkHttp <a href="https://github.com/square/okhttp">(Link)</a></h2>
by Square, licensed under the Apache 2.0 license <a href="LICENSE_OKHTTP.txt">(View)</a>
</div>
<div class="card">
<h2>Okio <a href="https://github.com/square/okio">(Link)</a></h2>
by Square, licensed under the Apache 2.0 license <a href="LICENSE_APACHE-2.0.txt">(View)</a>
</div>
<div class="card">
<h2>Presto Client <a href="http://www.aocate.com/presto/">(Link)</a></h2>
licensed under the Apache 2.0 license <a href="LICENSE_PRESTO.txt">(View)</a>
</div>
<div class="card">
<h2>RecyclerView-FlexibleDivider <a href="https://github.com/yqritc/RecyclerView-FlexibleDivider">(Link)</a></h2>
licensed under the Apache 2.0 license <a href="LICENSE_APACHE-2.0.txt">(View)</a>
</div>
<div class="card">
<h2>RxAndroid <a href="https://github.com/ReactiveX/RxAndroid">(Link)</a></h2>
licensed under the Apache 2.0 license <a href="LICENSE_APACHE-2.0.txt">(View)</a>
</div>
<div class="card">
<h2>StackBlur <a href="https://github.com/kikoso/android-stackblur">(Link)</a></h2>
by Enrique L&oacute;pez Ma&ntilde;as, licensed under the Apache 2.0 license <a href="LICENSE_APACHE-2.0.txt">(View)</a>
</div>
<div class="card">
<h2>Triangle Label View <a href="https://github.com/shts/TriangleLabelView">(Link)</a></h2>
by Shota Saito, licensed under the Apache 2.0 license <a href="LICENSE_TRIANGLE_LABEL_VIEW.txt">(View)</a>
</div>
<div class="card">
<h2>AntennaPod-AudioPlayer <a href="https://github.com/AntennaPod/AntennaPod-AudioPlayer/">(Link)</a></h2>
by the AntennaPod team, licensed under the Apache 2.0 license <a href="LICENSE_APACHE-2.0.txt">(View)</a>
</div>
</body>
</html>

View File

@ -1,471 +0,0 @@
#!/usr/bin/env python3
import requests
import subprocess
import configparser
import os
config = configparser.ConfigParser()
config.read(os.path.expanduser("~") + '/.transifexrc')
if 'https://www.transifex.com' in config:
TRANSIFEX_USER = config['https://www.transifex.com']['username']
TRANSIFEX_PW = config['https://www.transifex.com']['password']
else:
TRANSIFEX_USER = ""
TRANSIFEX_PW = ""
print('DEVELOPERS\n==========\n')
p = subprocess.Popen("git log --format='%aN' --no-merges "
+"| grep -v '@' " # No email adresses
+"| grep -v 'no.reply' " # no.reply
+"| sed -e 's/^\(Daniel\|daniel oeh\|danieloeh\)$/Daniel Oeh/I'" # Duplicate name
+"| sed -e 's/^keunes$/Koen Glotzbach/'" # Duplicate name
+"| sed -e 's/^H. Lehmann$/ByteHamster/'" # Duplicate name
+"| sed -e 's/^domingos86$/Domingos Lopes/'" # Duplicate name
+"| sed -e 's/^orionlee$/Sam Lee/'" # Duplicate name
+"| sort -fu", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
output = line.decode()
print(output, end='')
language_codes = {
"af_NA": "Afrikaans (Namibia)",
"af_ZA": "Afrikaans (South Africa)",
"af": "Afrikaans",
"ak_GH": "Akan (Ghana)",
"ak": "Akan",
"ast_ES": "Asturian (Spain)",
"sq_AL": "Albanian (Albania)",
"sq": "Albanian",
"am_ET": "Amharic (Ethiopia)",
"am": "Amharic",
"ar_DZ": "Arabic (Algeria)",
"ar_BH": "Arabic (Bahrain)",
"ar_EG": "Arabic (Egypt)",
"ar_IQ": "Arabic (Iraq)",
"ar_JO": "Arabic (Jordan)",
"ar_KW": "Arabic (Kuwait)",
"ar_LB": "Arabic (Lebanon)",
"ar_LY": "Arabic (Libya)",
"ar_MA": "Arabic (Morocco)",
"ar_OM": "Arabic (Oman)",
"ar_QA": "Arabic (Qatar)",
"ar_SA": "Arabic (Saudi Arabia)",
"ar_SD": "Arabic (Sudan)",
"ar_SY": "Arabic (Syria)",
"ar_TN": "Arabic (Tunisia)",
"ar_AE": "Arabic (United Arab Emirates)",
"ar_YE": "Arabic (Yemen)",
"ar": "Arabic",
"hy_AM": "Armenian (Armenia)",
"hy": "Armenian",
"as_IN": "Assamese (India)",
"as": "Assamese",
"asa_TZ": "Asu (Tanzania)",
"asa": "Asu",
"az_Cyrl": "Azerbaijani (Cyrillic)",
"az_Cyrl_AZ": "Azerbaijani (Cyrillic, Azerbaijan)",
"az_Latn": "Azerbaijani (Latin)",
"az_Latn_AZ": "Azerbaijani (Latin, Azerbaijan)",
"az": "Azerbaijani",
"bm_ML": "Bambara (Mali)",
"bm": "Bambara",
"eu_ES": "Basque (Spain)",
"eu": "Basque",
"be_BY": "Belarusian (Belarus)",
"be": "Belarusian",
"bem_ZM": "Bemba (Zambia)",
"bem": "Bemba",
"bez_TZ": "Bena (Tanzania)",
"bez": "Bena",
"bn_BD": "Bengali (Bangladesh)",
"bn_IN": "Bengali (India)",
"bn": "Bengali",
"bs_BA": "Bosnian (Bosnia and Herzegovina)",
"bs": "Bosnian",
"bg_BG": "Bulgarian (Bulgaria)",
"bg": "Bulgarian",
"my_MM": "Burmese (Myanmar [Burma])",
"my": "Burmese",
"ca_ES": "Catalan (Spain)",
"ca": "Catalan",
"tzm_Latn": "Central Morocco Tamazight (Latin)",
"tzm_Latn_MA": "Central Morocco Tamazight (Latin, Morocco)",
"tzm": "Central Morocco Tamazight",
"chr_US": "Cherokee (United States)",
"chr": "Cherokee",
"cgg_UG": "Chiga (Uganda)",
"cgg": "Chiga",
"zh": "Chinese (Simplified)",
"zh_CN": "Chinese (China)",
"zh_HK": "Chinese (Hong Kong SAR China)",
"zh_MO": "Chinese (Macau SAR China)",
"zh_MO_SG": "Chinese (Singapore)",
"zh_TW": "Chinese (Taiwan)",
"zh": "Chinese",
"kw_GB": "Cornish (United Kingdom)",
"kw": "Cornish",
"hr_HR": "Croatian (Croatia)",
"hr": "Croatian",
"cs_CZ": "Czech (Czech Republic)",
"cs": "Czech",
"da_DK": "Danish (Denmark)",
"da": "Danish",
"nl_BE": "Dutch (Belgium)",
"nl_NL": "Dutch (Netherlands)",
"nl": "Dutch",
"ebu_KE": "Embu (Kenya)",
"ebu": "Embu",
"en_AS": "English (American Samoa)",
"en_AU": "English (Australia)",
"en_BE": "English (Belgium)",
"en_BZ": "English (Belize)",
"en_BW": "English (Botswana)",
"en_CA": "English (Canada)",
"en_GU": "English (Guam)",
"en_HK": "English (Hong Kong SAR China)",
"en_IN": "English (India)",
"en_IE": "English (Ireland)",
"en_JM": "English (Jamaica)",
"en_MT": "English (Malta)",
"en_MH": "English (Marshall Islands)",
"en_MU": "English (Mauritius)",
"en_NA": "English (Namibia)",
"en_NZ": "English (New Zealand)",
"en_MP": "English (Northern Mariana Islands)",
"en_PK": "English (Pakistan)",
"en_PH": "English (Philippines)",
"en_SG": "English (Singapore)",
"en_ZA": "English (South Africa)",
"en_TT": "English (Trinidad and Tobago)",
"en_UM": "English (U.S. Minor Outlying Islands)",
"en_VI": "English (U.S. Virgin Islands)",
"en_GB": "English (United Kingdom)",
"en_US": "English (United States)",
"en_ZW": "English (Zimbabwe)",
"en": "English",
"eo": "Esperanto",
"et_EE": "Estonian (Estonia)",
"et": "Estonian",
"ee_GH": "Ewe (Ghana)",
"ee_TG": "Ewe (Togo)",
"ee": "Ewe",
"fo_FO": "Faroese (Faroe Islands)",
"fo": "Faroese",
"fil_PH": "Filipino (Philippines)",
"fil": "Filipino",
"fi_FI": "Finnish (Finland)",
"fi": "Finnish",
"fr_BE": "French (Belgium)",
"fr_BJ": "French (Benin)",
"fr_BF": "French (Burkina Faso)",
"fr_BI": "French (Burundi)",
"fr_CM": "French (Cameroon)",
"fr_CA": "French (Canada)",
"fr_CF": "French (Central African Republic)",
"fr_TD": "French (Chad)",
"fr_KM": "French (Comoros)",
"fr_CG": "French (Congo - Brazzaville)",
"fr_CD": "French (Congo - Kinshasa)",
"fr_CI": "French (Côte dIvoire)",
"fr_DJ": "French (Djibouti)",
"fr_GQ": "French (Equatorial Guinea)",
"fr_FR": "French (France)",
"fr_GA": "French (Gabon)",
"fr_GP": "French (Guadeloupe)",
"fr_GN": "French (Guinea)",
"fr_LU": "French (Luxembourg)",
"fr_MG": "French (Madagascar)",
"fr_ML": "French (Mali)",
"fr_MQ": "French (Martinique)",
"fr_MC": "French (Monaco)",
"fr_NE": "French (Niger)",
"fr_RW": "French (Rwanda)",
"fr_RE": "French (Réunion)",
"fr_BL": "French (Saint Barthélemy)",
"fr_MF": "French (Saint Martin)",
"fr_SN": "French (Senegal)",
"fr_CH": "French (Switzerland)",
"fr_TG": "French (Togo)",
"fr": "French",
"ff_SN": "Fulah (Senegal)",
"ff": "Fulah",
"gl_ES": "Galician (Spain)",
"gl": "Galician",
"lg_UG": "Ganda (Uganda)",
"lg": "Ganda",
"ka_GE": "Georgian (Georgia)",
"ka": "Georgian",
"de_AT": "German (Austria)",
"de_BE": "German (Belgium)",
"de_DE": "German (Germany)",
"de_LI": "German (Liechtenstein)",
"de_LU": "German (Luxembourg)",
"de_CH": "German (Switzerland)",
"de": "German",
"el_CY": "Greek (Cyprus)",
"el_GR": "Greek (Greece)",
"el": "Greek",
"gu_IN": "Gujarati (India)",
"gu": "Gujarati",
"guz_KE": "Gusii (Kenya)",
"guz": "Gusii",
"ha_Latn": "Hausa (Latin)",
"ha_Latn_GH": "Hausa (Latin, Ghana)",
"ha_Latn_NE": "Hausa (Latin, Niger)",
"ha_Latn_NG": "Hausa (Latin, Nigeria)",
"ha": "Hausa",
"haw_US": "Hawaiian (United States)",
"haw": "Hawaiian",
"he_IL": "Hebrew (Israel)",
"he": "Hebrew",
"hi_IN": "Hindi (India)",
"hi": "Hindi",
"hu_HU": "Hungarian (Hungary)",
"hu": "Hungarian",
"is_IS": "Icelandic (Iceland)",
"is": "Icelandic",
"ig_NG": "Igbo (Nigeria)",
"ig": "Igbo",
"id_ID": "Indonesian (Indonesia)",
"id": "Indonesian",
"ga_IE": "Irish (Ireland)",
"ga": "Irish",
"it_IT": "Italian (Italy)",
"it_CH": "Italian (Switzerland)",
"it": "Italian",
"ja_JP": "Japanese (Japan)",
"ja": "Japanese",
"kea_CV": "Kabuverdianu (Cape Verde)",
"kea": "Kabuverdianu",
"kab_DZ": "Kabyle (Algeria)",
"kab": "Kabyle",
"kl_GL": "Kalaallisut (Greenland)",
"kl": "Kalaallisut",
"kln_KE": "Kalenjin (Kenya)",
"kln": "Kalenjin",
"kam_KE": "Kamba (Kenya)",
"kam": "Kamba",
"kn_IN": "Kannada (India)",
"kn": "Kannada",
"kk_Cyrl": "Kazakh (Cyrillic)",
"kk_Cyrl_KZ": "Kazakh (Cyrillic, Kazakhstan)",
"kk": "Kazakh",
"km_KH": "Khmer (Cambodia)",
"km": "Khmer",
"ki_KE": "Kikuyu (Kenya)",
"ki": "Kikuyu",
"rw_RW": "Kinyarwanda (Rwanda)",
"rw": "Kinyarwanda",
"kok_IN": "Konkani (India)",
"kok": "Konkani",
"ko_KR": "Korean (South Korea)",
"ko": "Korean",
"khq_ML": "Koyra Chiini (Mali)",
"khq": "Koyra Chiini",
"ses_ML": "Koyraboro Senni (Mali)",
"ses": "Koyraboro Senni",
"lag_TZ": "Langi (Tanzania)",
"lag": "Langi",
"lv_LV": "Latvian (Latvia)",
"lv": "Latvian",
"lt_LT": "Lithuanian (Lithuania)",
"lt": "Lithuanian",
"luo_KE": "Luo (Kenya)",
"luo": "Luo",
"luy_KE": "Luyia (Kenya)",
"luy": "Luyia",
"mk_MK": "Macedonian (Macedonia)",
"mk": "Macedonian",
"jmc_TZ": "Machame (Tanzania)",
"jmc": "Machame",
"kde_TZ": "Makonde (Tanzania)",
"kde": "Makonde",
"mg_MG": "Malagasy (Madagascar)",
"mg": "Malagasy",
"ms_BN": "Malay (Brunei)",
"ms_MY": "Malay (Malaysia)",
"ms": "Malay",
"ml_IN": "Malayalam (India)",
"ml": "Malayalam",
"mt_MT": "Maltese (Malta)",
"mt": "Maltese",
"gv_GB": "Manx (United Kingdom)",
"gv": "Manx",
"mr_IN": "Marathi (India)",
"mr": "Marathi",
"mas_KE": "Masai (Kenya)",
"mas_TZ": "Masai (Tanzania)",
"mas": "Masai",
"mer_KE": "Meru (Kenya)",
"mer": "Meru",
"mfe_MU": "Morisyen (Mauritius)",
"mfe": "Morisyen",
"naq_NA": "Nama (Namibia)",
"naq": "Nama",
"ne_IN": "Nepali (India)",
"ne_NP": "Nepali (Nepal)",
"ne": "Nepali",
"nd_ZW": "North Ndebele (Zimbabwe)",
"nd": "North Ndebele",
"no": "Norwegian",
"nb_NO": "Norwegian Bokmål (Norway)",
"nb": "Norwegian Bokmål",
"nn_NO": "Norwegian Nynorsk (Norway)",
"nn": "Norwegian Nynorsk",
"nyn_UG": "Nyankole (Uganda)",
"nyn": "Nyankole",
"or_IN": "Oriya (India)",
"or": "Oriya",
"om_ET": "Oromo (Ethiopia)",
"m_KE": "Oromo (Kenya)",
"om": "Oromo",
"ps_AF": "Pashto (Afghanistan)",
"ps": "Pashto",
"fa_AF": "Persian (Afghanistan)",
"fa_IR": "Persian (Iran)",
"fa": "Persian",
"pl_PL": "Polish (Poland)",
"pl": "Polish",
"pt_BR": "Portuguese (Brazil)",
"pt_GW": "Portuguese (Guinea-Bissau)",
"pt_MZ": "Portuguese (Mozambique)",
"pt_PT": "Portuguese (Portugal)",
"pt": "Portuguese",
"pa_Arab": "Punjabi (Arabic)",
"pa_Arab_PK": "Punjabi (Arabic, Pakistan)",
"pa_Guru": "Punjabi (Gurmukhi)",
"pa_Guru_IN": "Punjabi (Gurmukhi, India)",
"pa": "Punjabi",
"ro_MD": "Romanian (Moldova)",
"ro_RO": "Romanian (Romania)",
"ro": "Romanian",
"rm_CH": "Romansh (Switzerland)",
"rm": "Romansh",
"rof_TZ": "Rombo (Tanzania)",
"rof": "Rombo",
"ru_MD": "Russian (Moldova)",
"ru_RU": "Russian (Russia)",
"ru_UA": "Russian (Ukraine)",
"ru": "Russian",
"rwk_TZ": "Rwa (Tanzania)",
"rwk": "Rwa",
"saq_KE": "Samburu (Kenya)",
"saq": "Samburu",
"sg_CF": "Sango (Central African Republic)",
"sg": "Sango",
"seh_MZ": "Sena (Mozambique)",
"seh": "Sena",
"sr_Cyrl": "Serbian (Cyrillic)",
"sr_Cyrl_BA": "Serbian (Cyrillic, Bosnia and Herzegovina)",
"sr_Cyrl_ME": "Serbian (Cyrillic, Montenegro)",
"sr_Cyrl_RS": "Serbian (Cyrillic, Serbia)",
"sr_Latn": "Serbian (Latin)",
"sr_Latn_BA": "Serbian (Latin, Bosnia and Herzegovina)",
"sr_Latn_ME": "Serbian (Latin, Montenegro)",
"sr_Latn_RS": "Serbian (Latin, Serbia)",
"sr": "Serbian",
"sn_ZW": "Shona (Zimbabwe)",
"sn": "Shona",
"ii_CN": "Sichuan Yi (China)",
"ii": "Sichuan Yi",
"si_LK": "Sinhala (Sri Lanka)",
"si": "Sinhala",
"sk_SK": "Slovak (Slovakia)",
"sk": "Slovak",
"sl_SI": "Slovenian (Slovenia)",
"sl": "Slovenian",
"xog_UG": "Soga (Uganda)",
"xog": "Soga",
"so_DJ": "Somali (Djibouti)",
"so_ET": "Somali (Ethiopia)",
"so_KE": "Somali (Kenya)",
"so_SO": "Somali (Somalia)",
"so": "Somali",
"es_AR": "Spanish (Argentina)",
"es_BO": "Spanish (Bolivia)",
"es_CL": "Spanish (Chile)",
"es_CO": "Spanish (Colombia)",
"es_CR": "Spanish (Costa Rica)",
"es_DO": "Spanish (Dominican Republic)",
"es_EC": "Spanish (Ecuador)",
"es_SV": "Spanish (El Salvador)",
"es_GQ": "Spanish (Equatorial Guinea)",
"es_GT": "Spanish (Guatemala)",
"es_HN": "Spanish (Honduras)",
"es_419": "Spanish (Latin America)",
"es_MX": "Spanish (Mexico)",
"es_NI": "Spanish (Nicaragua)",
"es_PA": "Spanish (Panama)",
"es_PY": "Spanish (Paraguay)",
"es_PE": "Spanish (Peru)",
"es_PR": "Spanish (Puerto Rico)",
"es_ES": "Spanish (Spain)",
"es_US": "Spanish (United States)",
"es_UY": "Spanish (Uruguay)",
"es_VE": "Spanish (Venezuela)",
"es": "Spanish",
"sw_KE": "Swahili (Kenya)",
"sw_TZ": "Swahili (Tanzania)",
"sw": "Swahili",
"sv_FI": "Swedish (Finland)",
"sv_SE": "Swedish (Sweden)",
"sv": "Swedish",
"gsw_CH": "Swiss German (Switzerland)",
"gsw": "Swiss German",
"shi_Latn": "Tachelhit (Latin)",
"shi_Latn_MA": "Tachelhit (Latin, Morocco)",
"shi_Tfng": "Tachelhit (Tifinagh)",
"shi_Tfng_MA": "Tachelhit (Tifinagh, Morocco)",
"shi": "Tachelhit",
"dav_KE": "Taita (Kenya)",
"dav": "Taita",
"ta_IN": "Tamil (India)",
"ta_LK": "Tamil (Sri Lanka)",
"ta": "Tamil",
"te_IN": "Telugu (India)",
"te": "Telugu",
"teo_KE": "Teso (Kenya)",
"teo_UG": "Teso (Uganda)",
"teo": "Teso",
"th_TH": "Thai (Thailand)",
"th": "Thai",
"bo_CN": "Tibetan (China)",
"bo_IN": "Tibetan (India)",
"bo": "Tibetan",
"ti_ER": "Tigrinya (Eritrea)",
"ti_ET": "Tigrinya (Ethiopia)",
"ti": "Tigrinya",
"to_TO": "Tonga (Tonga)",
"to": "Tonga",
"tr_TR": "Turkish (Turkey)",
"tr": "Turkish",
"uk_UA": "Ukrainian (Ukraine)",
"uk": "Ukrainian",
"ur_IN": "Urdu (India)",
"ur_PK": "Urdu (Pakistan)",
"ur": "Urdu",
"uz_Arab": "Uzbek (Arabic)",
"uz_Arab_AF": "Uzbek (Arabic, Afghanistan)",
"uz_Cyrl": "Uzbek (Cyrillic)",
"uz_Cyrl_UZ": "Uzbek (Cyrillic, Uzbekistan)",
"uz_Latn": "Uzbek (Latin)",
"uz_Latn_UZ": "Uzbek (Latin, Uzbekistan)",
"uz": "Uzbek",
"vi_VN": "Vietnamese (Vietnam)",
"vi": "Vietnamese",
"vun_TZ": "Vunjo (Tanzania)",
"vun": "Vunjo",
"cy_GB": "Welsh (United Kingdom)",
"cy": "Welsh",
"yo_NG": "Yoruba (Nigeria)",
"yo": "Yoruba",
"zu_ZA": "Zulu (South Africa)",
"zu": "Zulu"
}
print('\n\nTRANSLATORS\n===========\n')
r = requests.get('http://www.transifex.com/api/2/project/antennapod/languages/', auth=(TRANSIFEX_USER, TRANSIFEX_PW))
for lang in r.json():
lang_contributers = lang['coordinators'] + lang['reviewers'] + lang['translators']
lang_contributers = sorted(lang_contributers, key=str.lower)
print(language_codes[lang['language_code']], ": ", ', '.join(lang_contributers), sep="")

View File

@ -331,7 +331,6 @@
<!-- Preferences -->
<string name="storage_pref">Storage</string>
<string name="project_pref">Project</string>
<string name="about_pref">About</string>
<string name="queue_label">Queue</string>
<string name="integrations_label">Integrations</string>
<string name="automation">Automation</string>
@ -503,6 +502,17 @@
<string name="pref_delete_removes_from_queue_title">Delete removes from Queue</string>
<string name="pref_delete_removes_from_queue_sum">Automatically remove an episode from the queue when it is deleted.</string>
<!-- About screen -->
<string name="about_pref">About</string>
<string name="antennapod_version">AntennaPod version</string>
<string name="developers">Developers</string>
<string name="developers_summary">Everyone can help to make AntennaPod better</string>
<string name="translators">Translators</string>
<string name="translators_summary">Translations are created by users of AntennaPod using Transifex</string>
<string name="privacy_policy">Privacy policy</string>
<string name="licenses">Licenses</string>
<string name="licenses_summary">AntennaPod uses other great software</string>
<!-- Search -->
<string name="search_hint">Search for episodes</string>
<string name="found_in_shownotes_label">Found in show notes</string>

30
createDevelopersList.py Normal file
View File

@ -0,0 +1,30 @@
#!/usr/bin/env python3
import requests
MAINTAINERS = ['mfietz', 'ByteHamster']
FORMER_MAINTAINERS = ['TomHennen']
csvFile = open("app/src/main/assets/developers.csv", "w")
contributorsFile = open("CONTRIBUTORS", "a")
page = 1
hasMore = True
while hasMore:
json = requests.get('https://api.github.com/repos/AntennaPod/AntennaPod/contributors'
+ '?q=contributions&order=desc&per_page=100&page=' + str(page)).json()
for contributor in json:
role = 'Contributor'
if contributor['login'] == 'danieloeh':
role = 'Original creator of AntennaPod (retired)'
elif contributor['login'] in MAINTAINERS:
role = 'Maintainer'
elif contributor['login'] in FORMER_MAINTAINERS:
role = 'Maintainer (retired)'
line = contributor['login'].replace(";", "") + ';' + str(contributor['id']) + ';' + role
csvFile.write(line + '\n')
print(line)
contributorsFile.write(contributor['login'] + '\n')
page = page + 1
hasMore = len(json) > 0
csvFile.close()
contributorsFile.close()

39
createTranslatorsList.py Normal file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env python3
import pycountry
import requests
import configparser
import os
config = configparser.ConfigParser()
config.read(os.path.expanduser("~") + '/.transifexrc')
if 'https://www.transifex.com' in config:
TRANSIFEX_USER = config['https://www.transifex.com']['username']
TRANSIFEX_PW = config['https://www.transifex.com']['password']
else:
TRANSIFEX_USER = ""
TRANSIFEX_PW = ""
csvFile = open("app/src/main/assets/translators.csv", "w")
contributorsFile = open("CONTRIBUTORS", "a")
r = requests.get('http://www.transifex.com/api/2/project/antennapod/languages/',
auth=(TRANSIFEX_USER, TRANSIFEX_PW))
for lang in r.json():
langContributers = lang['coordinators'] + lang['reviewers'] + lang['translators']
langContributers = sorted(langContributers, key=str.lower)
langCode = lang['language_code']
try:
langName = pycountry.languages.lookup(langCode).name
except:
try:
langName = pycountry.languages.lookup(
langCode.split('_')[0]).name + ' (' + langCode + ')'
except:
langName = lang['language_code']
print('\033[91mLanguage code not found:' + langCode + '\033[0m')
joinedTranslators = ', '.join(langContributers).replace(';', '');
contributorsFile.write(langName + ": " + joinedTranslators + '\n')
csvFile.write(langName + ';' + joinedTranslators + '\n')
print(langName + ';' + joinedTranslators)
csvFile.close()
contributorsFile.close()

View File

@ -9,9 +9,10 @@ set -e
DEST=$2
VERSION_NAME=$1
# need to get rid of this so that it gets regenerated
# probably a way to solve this in Gradle too...
rm -f app/src/main/assets/about.html
rm CONTRIBUTORS
./createDevelopersList.py
./createTranslatorsList.py
./gradlew clean assemblePlayDebug assemblePlayRelease
cp app/build/outputs/apk/app-play-debug.apk $DEST/AntennaPod_${VERSION_NAME}_debug.apk
cp app/build/outputs/apk/app-play-release.apk $DEST/AntennaPod_${VERSION_NAME}_release.apk