summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2019-11-08 23:29:00 +0100
committerByteHamster <info@bytehamster.com>2019-11-09 09:52:20 +0100
commitdfe463393b47e090d13891ea66c9d920b399c4d4 (patch)
tree39c65656e9c2478b1c2efabf21a50a4177f29672 /app/src
parent43be061a644440a7210ea92f3268a0bc604047d3 (diff)
downloadAntennaPod-dfe463393b47e090d13891ea66c9d920b399c4d4.zip
Added developers list
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/assets/developers.csv119
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/SimpleIconListAdapter.java61
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutDevelopersFragment.java65
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/AboutFragment.java37
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/MainPreferencesFragment.java3
-rw-r--r--app/src/main/res/layout/about_teaser.xml7
-rw-r--r--app/src/main/res/layout/simple_icon_list_item.xml41
-rw-r--r--app/src/main/res/xml/preferences_about.xml33
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>