Skip to content

Commit

Permalink
Merge branch 'develop' into threaded-refreshing
Browse files Browse the repository at this point in the history
  • Loading branch information
ByteHamster committed Apr 27, 2024
2 parents bad3393 + dbbb21b commit b19f244
Show file tree
Hide file tree
Showing 10 changed files with 90 additions and 26 deletions.
9 changes: 7 additions & 2 deletions .github/workflows/checks.yml
Expand Up @@ -102,7 +102,7 @@ jobs:
emulator-test:
name: "Emulator Test"
needs: static-analysis
runs-on: macOS-latest
runs-on: ubuntu-latest
timeout-minutes: 45
env:
api-level: 30
Expand All @@ -124,6 +124,11 @@ jobs:
run: echo "org.gradle.parallel=true" >> local.properties
- name: Build with Gradle
run: ./gradlew assemblePlayDebugAndroidTest
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Android Emulator test
uses: reactivecircus/android-emulator-runner@v2
with:
Expand All @@ -133,7 +138,7 @@ jobs:
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: zsh .github/workflows/runEmulatorTests.sh
script: bash .github/workflows/runEmulatorTests.sh
- uses: actions/upload-artifact@v4
if: failure()
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/runEmulatorTests.sh
@@ -1,4 +1,4 @@
#!/bin/zsh
#!/bin/bash

set -o pipefail

Expand Down
Expand Up @@ -14,6 +14,7 @@
import androidx.work.PeriodicWorkRequest;
import androidx.work.WorkManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import de.danoeh.antennapod.event.FeedUpdateRunningEvent;
import de.danoeh.antennapod.net.common.NetworkUtils;
import de.danoeh.antennapod.event.MessageEvent;
import de.danoeh.antennapod.model.feed.Feed;
Expand Down Expand Up @@ -90,6 +91,7 @@ public void runOnceOrAsk(@NonNull Context context, @Nullable Feed feed) {
runOnce(context, feed);
} else if (!NetworkUtils.networkAvailable()) {
EventBus.getDefault().post(new MessageEvent(context.getString(R.string.download_error_no_connection)));
EventBus.getDefault().postSticky(new FeedUpdateRunningEvent(false));
} else if (NetworkUtils.isFeedRefreshAllowed()) {
runOnce(context, feed);
} else {
Expand All @@ -106,7 +108,9 @@ private void confirmMobileRefresh(final Context context, @Nullable Feed feed) {
UserPreferences.setAllowMobileFeedRefresh(true);
runOnce(context, feed);
})
.setNegativeButton(R.string.no, null);
.setNegativeButton(R.string.no, (dialog, which) -> {
EventBus.getDefault().postSticky(new FeedUpdateRunningEvent(false));
});
if (NetworkUtils.isNetworkRestricted() && NetworkUtils.isVpnOverWifi()) {
builder.setMessage(R.string.confirm_mobile_feed_refresh_dialog_message_vpn);
} else {
Expand Down
9 changes: 9 additions & 0 deletions ui/common/src/main/res/drawable/ic_contributors.xml
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="?attr/action_icon_color"
android:pathData="M38,532q-18,-36 -28,-73T0,384q0,-112 76,-188t188,-76q63,0 120,26.5t96,73.5q39,-47 96,-73.5T696,120q112,0 188,76t76,188q0,38 -10,75t-28,73q-11,-19 -26,-34t-35,-24q9,-23 14,-45t5,-45q0,-78 -53,-131t-131,-53q-81,0 -124.5,44.5T480,344q-48,-56 -91.5,-100T264,200q-78,0 -131,53T80,384q0,23 5,45t14,45q-20,9 -35,24t-26,34ZM0,880v-63q0,-44 44.5,-70.5T160,720q13,0 25,0.5t23,2.5q-14,20 -21,43t-7,49v65L0,880ZM240,880v-65q0,-65 66.5,-105T480,670q108,0 174,40t66,105v65L240,880ZM780,880v-65q0,-26 -6.5,-49T754,723q11,-2 22.5,-2.5t23.5,-0.5q72,0 116,26.5t44,70.5v63L780,880ZM480,750q-57,0 -102,15t-53,35h311q-9,-20 -53.5,-35T480,750ZM160,680q-33,0 -56.5,-23.5T80,600q0,-34 23.5,-57t56.5,-23q34,0 57,23t23,57q0,33 -23,56.5T160,680ZM800,680q-33,0 -56.5,-23.5T720,600q0,-34 23.5,-57t56.5,-23q34,0 57,23t23,57q0,33 -23,56.5T800,680ZM480,640q-50,0 -85,-35t-35,-85q0,-51 35,-85.5t85,-34.5q51,0 85.5,34.5T600,520q0,50 -34.5,85T480,640ZM480,480q-17,0 -28.5,11.5T440,520q0,17 11.5,28.5T480,560q17,0 28.5,-11.5T520,520q0,-17 -11.5,-28.5T480,480ZM480,520ZM481,800Z"/>
</vector>
9 changes: 9 additions & 0 deletions ui/common/src/main/res/drawable/ic_policy.xml
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="?attr/action_icon_color"
android:pathData="M480,880q-139,-35 -229.5,-159.5T160,444v-244l320,-120 320,120v244q0,85 -29,163.5T688,746L560,618q-18,11 -38.5,16.5T480,640q-66,0 -113,-47t-47,-113q0,-66 47,-113t113,-47q66,0 113,47t47,113q0,22 -5.5,42.5T618,562l60,60q20,-41 31,-86t11,-92v-189l-240,-90 -240,90v189q0,121 68,220t172,132q26,-8 49.5,-20.5T576,746l56,56q-33,27 -71.5,47T480,880ZM480,560q33,0 56.5,-23.5T560,480q0,-33 -23.5,-56.5T480,400q-33,0 -56.5,23.5T400,480q0,33 23.5,56.5T480,560ZM488,483Z"/>
</vector>
12 changes: 6 additions & 6 deletions ui/preferences/src/main/assets/special_thanks.csv
@@ -1,6 +1,6 @@
ByteHamster;Project lead;https://avatars2.githubusercontent.com/u/5811634?s=60&v=4
Keunes;Project lead;https://avatars2.githubusercontent.com/u/11229646?s=60&v=4
Femmdi;Translations coordinator;https://avatars2.githubusercontent.com/u/47671383?s=60&v=4
Ryan Gorley (Freehive);2023 brand design;https://avatars2.githubusercontent.com/u/12849958?s=60&v=4
221 Pixels;2020 brand design;https://avatars2.githubusercontent.com/u/58243143?s=60&v=4
Anxhelo Lushka;2020 website design;https://avatars2.githubusercontent.com/u/25004151?s=60&v=4
ByteHamster;Project lead;https://avatars2.githubusercontent.com/u/5811634?s=60&v=4;ByteHamster
Keunes;Project lead;https://avatars2.githubusercontent.com/u/11229646?s=60&v=4;Keunes
Femmdi;Translations coordinator;https://avatars2.githubusercontent.com/u/47671383?s=60&v=4;Femmdi
Ryan Gorley (Freehive);2023 brand design;https://avatars2.githubusercontent.com/u/12849958?s=60&v=4;Freehive
221 Pixels;2020 brand design;https://avatars2.githubusercontent.com/u/58243143?s=60&v=4;221pxls
Anxhelo Lushka;2020 website design;https://avatars2.githubusercontent.com/u/25004151?s=60&v=4;AnXh3L0
Expand Up @@ -2,10 +2,13 @@

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.fragment.app.ListFragment;

import de.danoeh.antennapod.ui.common.IntentUtils;
import io.reactivex.Single;
import io.reactivex.SingleOnSubscribe;
import io.reactivex.android.schedulers.AndroidSchedulers;
Expand All @@ -18,15 +21,15 @@

public class DevelopersFragment extends ListFragment {
private Disposable developersLoader;
private ArrayList<SimpleIconListAdapter.ListItem> developers = new ArrayList<>();

@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<>();
developers.clear();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("developers.csv"), "UTF-8"));
String line;
Expand All @@ -43,7 +46,12 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
developers -> setListAdapter(new SimpleIconListAdapter<>(getContext(), developers)),
error -> Toast.makeText(getContext(), error.getMessage(), Toast.LENGTH_LONG).show()
);
}

@Override
public void onListItemClick(@NonNull ListView l, @NonNull View v, int position, long id) {
super.onListItemClick(l, v, position, id);
IntentUtils.openInBrowser(getContext(), "https://github.com/" + developers.get(position).title);
}

@Override
Expand Down
Expand Up @@ -6,9 +6,13 @@
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.load.resource.bitmap.FitCenter;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;

import de.danoeh.antennapod.ui.preferences.R;

import java.util.List;
Expand All @@ -35,13 +39,19 @@ public View getView(int position, View view, ViewGroup parent) {
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)));

if (item.imageUrl == null) {
view.findViewById(R.id.icon).setVisibility(View.GONE);
} else {
Glide.with(context)
.load(item.imageUrl)
.apply(new RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.NONE)
.transform(new FitCenter(), new RoundedCorners((int)
(4 * context.getResources().getDisplayMetrics().density)))
.dontAnimate())
.into(((ImageView) view.findViewById(R.id.icon)));
}
return view;
}

Expand Down
Expand Up @@ -2,10 +2,13 @@

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.fragment.app.ListFragment;

import de.danoeh.antennapod.ui.common.IntentUtils;
import io.reactivex.Single;
import io.reactivex.SingleOnSubscribe;
import io.reactivex.android.schedulers.AndroidSchedulers;
Expand All @@ -19,30 +22,46 @@
public class SpecialThanksFragment extends ListFragment {
private Disposable translatorsLoader;

private ArrayList<SpecialMemberItem> specialMembers = new ArrayList<>();

@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<>();
translatorsLoader = Single.create((SingleOnSubscribe<ArrayList<SpecialMemberItem>>) emitter -> {
specialMembers.clear();
BufferedReader reader = new BufferedReader(new InputStreamReader(
getContext().getAssets().open("special_thanks.csv"), "UTF-8"));
String line;
while ((line = reader.readLine()) != null) {
String[] info = line.split(";");
translators.add(new SimpleIconListAdapter.ListItem(info[0], info[1], info[2]));
specialMembers.add(new SpecialMemberItem(info[0], info[1], info[2], info[3]));
}
emitter.onSuccess(translators);
emitter.onSuccess(specialMembers);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
translators -> setListAdapter(new SimpleIconListAdapter<>(getContext(), translators)),
error -> Toast.makeText(getContext(), error.getMessage(), Toast.LENGTH_LONG).show()
);
}

private static class SpecialMemberItem extends SimpleIconListAdapter.ListItem {
final String githubUsername;

SpecialMemberItem(String title, String subtitle, String imageUrl, String gitHubUsername) {
super(title, subtitle, imageUrl);
this.githubUsername = gitHubUsername;
}
}

@Override
public void onListItemClick(@NonNull ListView l, @NonNull View v, int position, long id) {
super.onListItemClick(l, v, position, id);

IntentUtils.openInBrowser(getContext(), "https://github.com/" + specialMembers.get(position).githubUsername);
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions ui/preferences/src/main/res/xml/preferences_about.xml
Expand Up @@ -11,12 +11,12 @@
android:summary="1.7.2 (asd8qs)"/>
<Preference
android:key="about_contributors"
android:icon="@drawable/ic_settings"
android:icon="@drawable/ic_contributors"
android:summary="@string/contributors_summary"
android:title="@string/contributors"/>
<Preference
android:key="about_privacy_policy"
android:icon="@drawable/ic_questionmark"
android:icon="@drawable/ic_policy"
android:summary="www.antennapod.org/privacy"
android:title="@string/privacy_policy"/>
<Preference
Expand Down

0 comments on commit b19f244

Please sign in to comment.