Search in sources :

Example 1 with FeedItemlistDescriptionAdapter

use of de.danoeh.antennapod.adapter.FeedItemlistDescriptionAdapter in project AntennaPod by AntennaPod.

the class OnlineFeedViewActivity method showFeedInformation.

/**
 * Called when feed parsed successfully.
 * This method is executed on the GUI thread.
 */
private void showFeedInformation(final Feed feed, Map<String, String> alternateFeedUrls) {
    viewBinding.progressBar.setVisibility(View.GONE);
    viewBinding.feedDisplayContainer.setVisibility(View.VISIBLE);
    if (isFeedFoundBySearch) {
        int resId = R.string.no_feed_url_podcast_found_by_search;
        Snackbar.make(findViewById(android.R.id.content), resId, Snackbar.LENGTH_LONG).show();
    }
    this.feed = feed;
    this.selectedDownloadUrl = feed.getDownload_url();
    viewBinding.backgroundImage.setColorFilter(new LightingColorFilter(0xff828282, 0x000000));
    View header = View.inflate(this, R.layout.onlinefeedview_header, null);
    viewBinding.listView.addHeaderView(header);
    viewBinding.listView.setSelector(android.R.color.transparent);
    viewBinding.listView.setAdapter(new FeedItemlistDescriptionAdapter(this, 0, feed.getItems()));
    TextView description = header.findViewById(R.id.txtvDescription);
    if (StringUtils.isNotBlank(feed.getImageUrl())) {
        Glide.with(this).load(feed.getImageUrl()).apply(new RequestOptions().placeholder(R.color.light_gray).error(R.color.light_gray).diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY).fitCenter().dontAnimate()).into(viewBinding.coverImage);
        Glide.with(this).load(feed.getImageUrl()).apply(new RequestOptions().placeholder(R.color.image_readability_tint).error(R.color.image_readability_tint).diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY).transform(new FastBlurTransformation()).dontAnimate()).into(viewBinding.backgroundImage);
    }
    viewBinding.titleLabel.setText(feed.getTitle());
    viewBinding.authorLabel.setText(feed.getAuthor());
    description.setText(HtmlToPlainText.getPlainText(feed.getDescription()));
    viewBinding.subscribeButton.setOnClickListener(v -> {
        if (feedInFeedlist(feed)) {
            openFeed();
        } else {
            Feed f = new Feed(selectedDownloadUrl, null, feed.getTitle());
            f.setPreferences(feed.getPreferences());
            this.feed = f;
            DownloadService.download(this, false, DownloadRequestCreator.create(f).build());
            didPressSubscribe = true;
            handleUpdatedFeedStatus(feed);
        }
    });
    viewBinding.stopPreviewButton.setOnClickListener(v -> {
        PlaybackPreferences.writeNoMediaPlaying();
        IntentUtils.sendLocalBroadcast(this, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE);
    });
    if (UserPreferences.isEnableAutodownload()) {
        SharedPreferences preferences = getSharedPreferences(PREFS, MODE_PRIVATE);
        viewBinding.autoDownloadCheckBox.setChecked(preferences.getBoolean(PREF_LAST_AUTO_DOWNLOAD, true));
    }
    final int MAX_LINES_COLLAPSED = 10;
    description.setMaxLines(MAX_LINES_COLLAPSED);
    description.setOnClickListener(v -> {
        if (description.getMaxLines() > MAX_LINES_COLLAPSED) {
            description.setMaxLines(MAX_LINES_COLLAPSED);
        } else {
            description.setMaxLines(2000);
        }
    });
    if (alternateFeedUrls.isEmpty()) {
        viewBinding.alternateUrlsSpinner.setVisibility(View.GONE);
    } else {
        viewBinding.alternateUrlsSpinner.setVisibility(View.VISIBLE);
        final List<String> alternateUrlsList = new ArrayList<>();
        final List<String> alternateUrlsTitleList = new ArrayList<>();
        alternateUrlsList.add(feed.getDownload_url());
        alternateUrlsTitleList.add(feed.getTitle());
        alternateUrlsList.addAll(alternateFeedUrls.keySet());
        for (String url : alternateFeedUrls.keySet()) {
            alternateUrlsTitleList.add(alternateFeedUrls.get(url));
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.alternate_urls_item, alternateUrlsTitleList) {

            @Override
            public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
                // reusing the old view causes a visual bug on Android <= 10
                return super.getDropDownView(position, null, parent);
            }
        };
        adapter.setDropDownViewResource(R.layout.alternate_urls_dropdown_item);
        viewBinding.alternateUrlsSpinner.setAdapter(adapter);
        viewBinding.alternateUrlsSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                selectedDownloadUrl = alternateUrlsList.get(position);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }
    handleUpdatedFeedStatus(feed);
}
Also used : RequestOptions(com.bumptech.glide.request.RequestOptions) SharedPreferences(android.content.SharedPreferences) ViewGroup(android.view.ViewGroup) ArrayList(java.util.ArrayList) SpannableString(android.text.SpannableString) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) FastBlurTransformation(de.danoeh.antennapod.core.glide.FastBlurTransformation) FeedItemlistDescriptionAdapter(de.danoeh.antennapod.adapter.FeedItemlistDescriptionAdapter) NonNull(androidx.annotation.NonNull) LightingColorFilter(android.graphics.LightingColorFilter) TextView(android.widget.TextView) AdapterView(android.widget.AdapterView) ArrayAdapter(android.widget.ArrayAdapter) Nullable(androidx.annotation.Nullable) Feed(de.danoeh.antennapod.model.feed.Feed)

Aggregations

SharedPreferences (android.content.SharedPreferences)1 LightingColorFilter (android.graphics.LightingColorFilter)1 SpannableString (android.text.SpannableString)1 View (android.view.View)1 ViewGroup (android.view.ViewGroup)1 AdapterView (android.widget.AdapterView)1 ArrayAdapter (android.widget.ArrayAdapter)1 TextView (android.widget.TextView)1 NonNull (androidx.annotation.NonNull)1 Nullable (androidx.annotation.Nullable)1 RequestOptions (com.bumptech.glide.request.RequestOptions)1 FeedItemlistDescriptionAdapter (de.danoeh.antennapod.adapter.FeedItemlistDescriptionAdapter)1 FastBlurTransformation (de.danoeh.antennapod.core.glide.FastBlurTransformation)1 Feed (de.danoeh.antennapod.model.feed.Feed)1 ArrayList (java.util.ArrayList)1