diff options
author | ByteHamster <info@bytehamster.com> | 2019-11-08 23:29:00 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2019-11-09 09:52:20 +0100 |
commit | dfe463393b47e090d13891ea66c9d920b399c4d4 (patch) | |
tree | 39c65656e9c2478b1c2efabf21a50a4177f29672 /app/src | |
parent | 43be061a644440a7210ea92f3268a0bc604047d3 (diff) | |
download | AntennaPod-dfe463393b47e090d13891ea66c9d920b399c4d4.zip |
Added developers list
Diffstat (limited to 'app/src')
8 files changed, 365 insertions, 1 deletions
diff --git a/app/src/main/assets/developers.csv b/app/src/main/assets/developers.csv new file mode 100644 index 000000000..6db9b7a12 --- /dev/null +++ b/app/src/main/assets/developers.csv @@ -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 diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/SimpleIconListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/SimpleIconListAdapter.java new file mode 100644 index 000000000..1b84aaf0f --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/adapter/SimpleIconListAdapter.java @@ -0,0 +1,61 @@ +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.ArrayList; + +/** + * Displays a list of items that have a subtitle and an icon. + */ +public class SimpleIconListAdapter extends ArrayAdapter<SimpleIconListAdapter.ListItem> { + private final Context context; + private final ArrayList<ListItem> developers; + + public SimpleIconListAdapter(Context context, ArrayList<ListItem> developers) { + super(context, R.layout.simple_icon_list_item, developers); + this.context = context; + this.developers = developers; + } + + @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 = developers.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() + .placeholder(R.color.light_gray) + .error(R.color.light_gray) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .fitCenter() + .dontAnimate()) + .into(((ImageView) view.findViewById(R.id.icon))); + return view; + } + + public static class ListItem { + final String title; + final String subtitle; + final String imageUrl; + + public ListItem(String title, String subtitle, String imageUrl) { + this.title = title; + this.subtitle = subtitle; + this.imageUrl = imageUrl; + } + } +} diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutDevelopersFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutDevelopersFragment.java new file mode 100644 index 000000000..57d8735b2 --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutDevelopersFragment.java @@ -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.txt"))); + 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); + } +} diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutFragment.java new file mode 100644 index 000000000..9237d0ff0 --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutFragment.java @@ -0,0 +1,37 @@ +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.R; +import de.danoeh.antennapod.activity.PreferenceActivity; + +public class AboutFragment extends PreferenceFragmentCompat { + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + addPreferencesFromResource(R.xml.preferences_about); + + findPreference("about_version").setOnPreferenceClickListener((preference) -> { + ClipboardManager clipboard = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText(getString(R.string.bug_report_title), "todo"); + 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.about_pref)).commit(); + return true; + }); + } + + @Override + public void onStart() { + super.onStart(); + ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.about_pref); + } +} diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java index 00e69f1db..30d792286 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java @@ -63,7 +63,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; } ); diff --git a/app/src/main/res/layout/about_teaser.xml b/app/src/main/res/layout/about_teaser.xml new file mode 100644 index 000000000..a9e50f6da --- /dev/null +++ b/app/src/main/res/layout/about_teaser.xml @@ -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" />
\ No newline at end of file diff --git a/app/src/main/res/layout/simple_icon_list_item.xml b/app/src/main/res/layout/simple_icon_list_item.xml new file mode 100644 index 000000000..7ed129204 --- /dev/null +++ b/app/src/main/res/layout/simple_icon_list_item.xml @@ -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> diff --git a/app/src/main/res/xml/preferences_about.xml b/app/src/main/res/xml/preferences_about.xml new file mode 100644 index 000000000..2c067f133 --- /dev/null +++ b/app/src/main/res/xml/preferences_about.xml @@ -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/action_about" + 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> |