diff options
Diffstat (limited to 'app/src/main/java')
7 files changed, 106 insertions, 11 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/BugReportActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/BugReportActivity.java index d2618eb08..bff11fa5e 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/BugReportActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/BugReportActivity.java @@ -3,10 +3,21 @@ package de.danoeh.antennapod.activity; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; +import android.os.Build; import android.os.Bundle; +import android.util.Log; import com.google.android.material.snackbar.Snackbar; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.FileProvider; + + import android.widget.TextView; + + import de.danoeh.antennapod.error.CrashReportWriter; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.preferences.UserPreferences; @@ -17,11 +28,13 @@ import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.charset.Charset; +import java.util.List; /** * Displays the 'crash report' screen */ public class BugReportActivity extends AppCompatActivity { + private static final String TAG = "BugReportActivity"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -30,17 +43,20 @@ public class BugReportActivity extends AppCompatActivity { getSupportActionBar().setDisplayShowHomeEnabled(true); setContentView(R.layout.bug_report); - String crashDetailsText = CrashReportWriter.getSystemInfo() + "\n\n"; - TextView crashDetailsTextView = findViewById(R.id.crash_report_logs); - + String stacktrace = "No crash report recorded"; try { File crashFile = CrashReportWriter.getFile(); - crashDetailsText += IOUtils.toString(new FileInputStream(crashFile), Charset.forName("UTF-8")); + if (crashFile.exists()) { + stacktrace = IOUtils.toString(new FileInputStream(crashFile), Charset.forName("UTF-8")); + } else { + Log.d(TAG, stacktrace); + } } catch (IOException e) { e.printStackTrace(); - crashDetailsText += "No crash report recorded"; } - crashDetailsTextView.setText(crashDetailsText); + + TextView crashDetailsTextView = findViewById(R.id.crash_report_logs); + crashDetailsTextView.setText(CrashReportWriter.getSystemInfo() + "\n\n" + stacktrace); findViewById(R.id.btn_open_bug_tracker).setOnClickListener(v -> IntentUtils.openInBrowser( BugReportActivity.this, "https://github.com/AntennaPod/AntennaPod/issues")); @@ -58,12 +74,35 @@ public class BugReportActivity extends AppCompatActivity { filename.createNewFile(); String cmd = "logcat -d -f " + filename.getAbsolutePath(); Runtime.getRuntime().exec(cmd); - Snackbar.make(findViewById(android.R.id.content), - filename.getAbsolutePath(), Snackbar.LENGTH_SHORT).show(); + //share file + try { + Intent i = new Intent(Intent.ACTION_SEND); + i.setType("text/*"); + String authString = getString(de.danoeh.antennapod.core.R.string.provider_authority); + Uri fileUri = FileProvider.getUriForFile(this, authString, filename); + i.putExtra(Intent.EXTRA_STREAM, fileUri); + i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) { + PackageManager pm = getPackageManager(); + List<ResolveInfo> resInfos = pm.queryIntentActivities(i, PackageManager.MATCH_DEFAULT_ONLY); + for (ResolveInfo resolveInfo : resInfos) { + String packageName = resolveInfo.activityInfo.packageName; + grantUriPermission(packageName, fileUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); + } + } + String chooserTitle = getString(de.danoeh.antennapod.core.R.string.share_file_label); + startActivity(Intent.createChooser(i, chooserTitle)); + } catch (Exception e) { + e.printStackTrace(); + int strResId = R.string.log_file_share_exception; + Snackbar.make(findViewById(android.R.id.content), strResId, Snackbar.LENGTH_LONG) + .show(); + } } catch (IOException e) { e.printStackTrace(); Snackbar.make(findViewById(android.R.id.content), e.getMessage(), Snackbar.LENGTH_LONG).show(); } }); } + } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java index 4f6010b75..6e526911b 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java @@ -19,6 +19,7 @@ import de.danoeh.antennapod.fragment.preferences.GpodderPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.ImportExportPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.MainPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.NetworkPreferencesFragment; +import de.danoeh.antennapod.fragment.preferences.NotificationPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.PlaybackPreferencesFragment; import de.danoeh.antennapod.fragment.preferences.StoragePreferencesFragment; import de.danoeh.antennapod.fragment.preferences.UserInterfacePreferencesFragment; @@ -70,6 +71,8 @@ public class PreferenceActivity extends AppCompatActivity implements SearchPrefe prefFragment = new GpodderPreferencesFragment(); } else if (screen == R.xml.preferences_playback) { prefFragment = new PlaybackPreferencesFragment(); + } else if (screen == R.xml.preferences_notifications) { + prefFragment = new NotificationPreferencesFragment(); } return prefFragment; } @@ -90,6 +93,8 @@ public class PreferenceActivity extends AppCompatActivity implements SearchPrefe return R.string.user_interface_label; case R.xml.preferences_gpodder: return R.string.gpodnet_main_label; + case R.xml.preferences_notifications: + return R.string.notification_pref_fragment; default: return R.string.settings_label; } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadStatisticsListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadStatisticsListAdapter.java index 721b720d1..3c4003125 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadStatisticsListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadStatisticsListAdapter.java @@ -4,6 +4,7 @@ import android.content.Context; import android.text.format.Formatter; import java.util.List; +import java.util.Locale; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.storage.StatisticsItem; @@ -40,7 +41,10 @@ public class DownloadStatisticsListAdapter extends StatisticsListAdapter { @Override void onBindFeedViewHolder(StatisticsHolder holder, StatisticsItem item) { - holder.value.setText(Formatter.formatShortFileSize(context, item.totalDownloadSize)); + holder.value.setText(Formatter.formatShortFileSize(context, item.totalDownloadSize) + + " • " + + String.format(Locale.getDefault(), "%d%s", + item.episodesDownloadCount, context.getString(R.string.episodes_suffix))); } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java index 4a1c12e0a..0c75b7eea 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -89,6 +89,18 @@ public class AllEpisodesFragment extends EpisodesListFragment { filterDialog.openDialog(); } + @Override + protected boolean shouldUpdatedItemRemainInList(FeedItem item) { + SharedPreferences prefs = getActivity().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); + FeedItemFilter feedItemFilter = new FeedItemFilter(prefs.getString(PREF_FILTER, "")); + + if (feedItemFilter.isShowDownloaded() && (!item.hasMedia() || !item.getMedia().isDownloaded())) { + return false; + } + + return true; + } + @NonNull @Override protected List<FeedItem> loadData() { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java index 546e12e65..bec73894c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/GpodderPreferencesFragment.java @@ -30,7 +30,6 @@ public class GpodderPreferencesFragment extends PreferenceFragmentCompat { private static final String PREF_GPODNET_FORCE_FULL_SYNC = "pref_gpodnet_force_full_sync"; private static final String PREF_GPODNET_LOGOUT = "pref_gpodnet_logout"; private static final String PREF_GPODNET_HOSTNAME = "pref_gpodnet_hostname"; - private static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications"; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -112,7 +111,6 @@ public class GpodderPreferencesFragment extends PreferenceFragmentCompat { findPreference(PREF_GPODNET_SYNC).setEnabled(loggedIn); findPreference(PREF_GPODNET_FORCE_FULL_SYNC).setEnabled(loggedIn); findPreference(PREF_GPODNET_LOGOUT).setEnabled(loggedIn); - findPreference(PREF_GPODNET_NOTIFICATIONS).setEnabled(loggedIn); if (loggedIn) { String format = getActivity().getString(R.string.pref_gpodnet_login_status); String summary = String.format(format, GpodnetPreferences.getUsername(), 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 2d640458e..99fd12021 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 @@ -26,6 +26,7 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { private static final String PREF_CATEGORY_PROJECT = "project"; private static final String STATISTICS = "statistics"; private static final String PREF_ABOUT = "prefAbout"; + private static final String PREF_NOTIFICATION = "notifications"; @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -68,6 +69,10 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_storage); return true; }); + findPreference(PREF_NOTIFICATION).setOnPreferenceClickListener(preference -> { + ((PreferenceActivity) getActivity()).openScreen(R.xml.preferences_notifications); + return true; + }); findPreference(PREF_ABOUT).setOnPreferenceClickListener( preference -> { @@ -121,5 +126,7 @@ public class MainPreferencesFragment extends PreferenceFragmentCompat { .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_autodownload)); config.index(R.xml.preferences_gpodder) .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_gpodder)); + config.index(R.xml.preferences_notifications) + .addBreadcrumb(PreferenceActivity.getTitleOfPage(R.xml.preferences_notifications)); } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NotificationPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NotificationPreferencesFragment.java new file mode 100644 index 000000000..94e151f7a --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NotificationPreferencesFragment.java @@ -0,0 +1,30 @@ +package de.danoeh.antennapod.fragment.preferences; + +import android.os.Bundle; +import androidx.preference.PreferenceFragmentCompat; +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.activity.PreferenceActivity; +import de.danoeh.antennapod.core.preferences.GpodnetPreferences; + +public class NotificationPreferencesFragment extends PreferenceFragmentCompat { + + private static final String TAG = "NotificationPrefFragment"; + private static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications"; + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + addPreferencesFromResource(R.xml.preferences_notifications); + setUpScreen(); + } + + @Override + public void onStart() { + super.onStart(); + ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.notification_pref_fragment); + } + + private void setUpScreen() { + final boolean loggedIn = GpodnetPreferences.loggedIn(); + findPreference(PREF_GPODNET_NOTIFICATIONS).setEnabled(loggedIn); + } +} |