Search in sources :

Example 16 with Feed

use of de.danoeh.antennapod.core.feed.Feed in project AntennaPod by AntennaPod.

the class MainActivity method onContextItemSelected.

@Override
public boolean onContextItemSelected(MenuItem item) {
    final int position = mPosition;
    // reset
    mPosition = -1;
    if (position < 0) {
        return false;
    }
    Feed feed = navDrawerData.feeds.get(position - navAdapter.getSubscriptionOffset());
    switch(item.getItemId()) {
        case R.id.mark_all_seen_item:
            DBWriter.markFeedSeen(feed.getId());
            return true;
        case R.id.mark_all_read_item:
            DBWriter.markFeedRead(feed.getId());
            return true;
        case R.id.rename_item:
            new RenameFeedDialog(this, feed).show();
            return true;
        case R.id.remove_item:
            final FeedRemover remover = new FeedRemover(this, feed) {

                @Override
                protected void onPostExecute(Void result) {
                    super.onPostExecute(result);
                    if (getSelectedNavListIndex() == position) {
                        loadFragment(EpisodesFragment.TAG, null);
                    }
                }
            };
            ConfirmationDialog conDialog = new ConfirmationDialog(this, R.string.remove_feed_label, R.string.feed_delete_confirmation_msg) {

                @Override
                public void onConfirmButtonPressed(DialogInterface dialog) {
                    dialog.dismiss();
                    long mediaId = PlaybackPreferences.getCurrentlyPlayingFeedMediaId();
                    if (mediaId > 0 && FeedItemUtil.indexOfItemWithMediaId(feed.getItems(), mediaId) >= 0) {
                        Log.d(TAG, "Currently playing episode is about to be deleted, skipping");
                        remover.skipOnCompletion = true;
                        int playerStatus = PlaybackPreferences.getCurrentPlayerStatus();
                        if (playerStatus == PlaybackPreferences.PLAYER_STATUS_PLAYING) {
                            sendBroadcast(new Intent(PlaybackService.ACTION_PAUSE_PLAY_CURRENT_EPISODE));
                        }
                    }
                    remover.executeAsync();
                }
            };
            conDialog.createNewDialog().show();
            return true;
        default:
            return super.onContextItemSelected(item);
    }
}
Also used : FeedRemover(de.danoeh.antennapod.core.asynctask.FeedRemover) DialogInterface(android.content.DialogInterface) RenameFeedDialog(de.danoeh.antennapod.dialog.RenameFeedDialog) Intent(android.content.Intent) Feed(de.danoeh.antennapod.core.feed.Feed) ConfirmationDialog(de.danoeh.antennapod.core.dialog.ConfirmationDialog)

Example 17 with Feed

use of de.danoeh.antennapod.core.feed.Feed in project AntennaPod by AntennaPod.

the class MainActivity method onCreateContextMenu.

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    if (v.getId() != R.id.nav_list) {
        return;
    }
    AdapterView.AdapterContextMenuInfo adapterInfo = (AdapterView.AdapterContextMenuInfo) menuInfo;
    int position = adapterInfo.position;
    if (position < navAdapter.getSubscriptionOffset()) {
        return;
    }
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.nav_feed_context, menu);
    Feed feed = navDrawerData.feeds.get(position - navAdapter.getSubscriptionOffset());
    menu.setHeaderTitle(feed.getTitle());
// episodes are not loaded, so we cannot check if the podcast has new or unplayed ones!
}
Also used : MenuInflater(android.view.MenuInflater) AdapterView(android.widget.AdapterView) Feed(de.danoeh.antennapod.core.feed.Feed)

Example 18 with Feed

use of de.danoeh.antennapod.core.feed.Feed in project AntennaPod by AntennaPod.

the class MainActivity method loadFeedFragmentByPosition.

private void loadFeedFragmentByPosition(int relPos, Bundle args) {
    if (relPos < 0) {
        return;
    }
    Feed feed = itemAccess.getItem(relPos);
    loadFeedFragmentById(feed.getId(), args);
}
Also used : Feed(de.danoeh.antennapod.core.feed.Feed)

Example 19 with Feed

use of de.danoeh.antennapod.core.feed.Feed 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) {
    setContentView(R.layout.listview_activity);
    this.feed = feed;
    this.selectedDownloadUrl = feed.getDownload_url();
    EventDistributor.getInstance().register(listener);
    ListView listView = (ListView) findViewById(R.id.listview);
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View header = inflater.inflate(R.layout.onlinefeedview_header, listView, false);
    listView.addHeaderView(header);
    listView.setAdapter(new FeedItemlistDescriptionAdapter(this, 0, feed.getItems()));
    ImageView cover = (ImageView) header.findViewById(R.id.imgvCover);
    TextView title = (TextView) header.findViewById(R.id.txtvTitle);
    TextView author = (TextView) header.findViewById(R.id.txtvAuthor);
    TextView description = (TextView) header.findViewById(R.id.txtvDescription);
    Spinner spAlternateUrls = (Spinner) header.findViewById(R.id.spinnerAlternateUrls);
    subscribeButton = (Button) header.findViewById(R.id.butSubscribe);
    if (feed.getImage() != null && StringUtils.isNotBlank(feed.getImage().getDownload_url())) {
        Glide.with(this).load(feed.getImage().getDownload_url()).placeholder(R.color.light_gray).error(R.color.light_gray).diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY).fitCenter().dontAnimate().into(cover);
    }
    title.setText(feed.getTitle());
    author.setText(feed.getAuthor());
    description.setText(feed.getDescription());
    subscribeButton.setOnClickListener(v -> {
        if (feed != null && feedInFeedlist(feed)) {
            Intent intent = new Intent(OnlineFeedViewActivity.this, MainActivity.class);
            intent.putExtra(MainActivity.EXTRA_FEED_ID, getFeedId(feed));
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
        } else {
            Feed f = new Feed(selectedDownloadUrl, null, feed.getTitle());
            f.setPreferences(feed.getPreferences());
            this.feed = f;
            try {
                DownloadRequester.getInstance().downloadFeed(this, f);
            } catch (DownloadRequestException e) {
                Log.e(TAG, Log.getStackTraceString(e));
                DownloadRequestErrorDialogCreator.newRequestErrorDialog(this, e.getMessage());
            }
            setSubscribeButtonState(feed);
        }
    });
    if (alternateFeedUrls.isEmpty()) {
        spAlternateUrls.setVisibility(View.GONE);
    } else {
        spAlternateUrls.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<>(this, android.R.layout.simple_spinner_item, alternateUrlsTitleList);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spAlternateUrls.setAdapter(adapter);
        spAlternateUrls.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) {
            }
        });
    }
    setSubscribeButtonState(feed);
}
Also used : Spinner(android.widget.Spinner) ArrayList(java.util.ArrayList) Intent(android.content.Intent) DownloadRequestException(de.danoeh.antennapod.core.storage.DownloadRequestException) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) ListView(android.widget.ListView) FeedItemlistDescriptionAdapter(de.danoeh.antennapod.adapter.FeedItemlistDescriptionAdapter) LayoutInflater(android.view.LayoutInflater) TextView(android.widget.TextView) AdapterView(android.widget.AdapterView) ImageView(android.widget.ImageView) ArrayAdapter(android.widget.ArrayAdapter) Feed(de.danoeh.antennapod.core.feed.Feed)

Example 20 with Feed

use of de.danoeh.antennapod.core.feed.Feed in project AntennaPod by AntennaPod.

the class UITestUtils method addHostedFeedData.

/**
     * Adds feeds, images and episodes to the webserver for testing purposes.
     */
public void addHostedFeedData() throws IOException {
    if (feedDataHosted)
        throw new IllegalStateException("addHostedFeedData was called twice on the same instance");
    for (int i = 0; i < NUM_FEEDS; i++) {
        File bitmapFile = newBitmapFile("image" + i);
        FeedImage image = new FeedImage(0, "image " + i, null, hostFile(bitmapFile), false);
        Feed feed = new Feed(0, null, "Title " + i, "http://example.com/" + i, "Description of feed " + i, "http://example.com/pay/feed" + i, "author " + i, "en", Feed.TYPE_RSS2, "feed" + i, image, null, "http://example.com/feed/src/" + i, false);
        image.setOwner(feed);
        // create items
        List<FeedItem> items = new ArrayList<FeedItem>();
        for (int j = 0; j < NUM_ITEMS_PER_FEED; j++) {
            FeedItem item = new FeedItem(j, "Feed " + (i + 1) + ": Item " + (j + 1), "item" + j, "http://example.com/feed" + i + "/item/" + j, new Date(), FeedItem.UNPLAYED, feed);
            items.add(item);
            File mediaFile = newMediaFile("feed-" + i + "-episode-" + j + ".mp3");
            item.setMedia(new FeedMedia(j, item, 0, 0, mediaFile.length(), "audio/mp3", null, hostFile(mediaFile), false, null, 0, 0));
        }
        feed.setItems(items);
        feed.setDownload_url(hostFeed(feed));
        hostedFeeds.add(feed);
    }
    feedDataHosted = true;
}
Also used : FeedImage(de.danoeh.antennapod.core.feed.FeedImage) FeedItem(de.danoeh.antennapod.core.feed.FeedItem) FeedMedia(de.danoeh.antennapod.core.feed.FeedMedia) ArrayList(java.util.ArrayList) File(java.io.File) Date(java.util.Date) Feed(de.danoeh.antennapod.core.feed.Feed)

Aggregations

Feed (de.danoeh.antennapod.core.feed.Feed)95 FeedItem (de.danoeh.antennapod.core.feed.FeedItem)55 PodDBAdapter (de.danoeh.antennapod.core.storage.PodDBAdapter)32 ArrayList (java.util.ArrayList)30 Date (java.util.Date)30 FeedMedia (de.danoeh.antennapod.core.feed.FeedMedia)21 File (java.io.File)20 Cursor (android.database.Cursor)16 FeedImage (de.danoeh.antennapod.core.feed.FeedImage)14 Context (android.content.Context)13 FlakyTest (android.test.FlakyTest)9 DialogInterface (android.content.DialogInterface)8 Intent (android.content.Intent)8 LayoutInflater (android.view.LayoutInflater)7 AdapterView (android.widget.AdapterView)7 ConfirmationDialog (de.danoeh.antennapod.core.dialog.ConfirmationDialog)6 FeedPreferences (de.danoeh.antennapod.core.feed.FeedPreferences)6 DownloadRequestException (de.danoeh.antennapod.core.storage.DownloadRequestException)6 Log (android.util.Log)4 View (android.view.View)4