Search in sources :

Example 21 with Feed

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

the class UITestUtils method addLocalFeedData.

/**
     * Adds feeds, images and episodes to the local database. This method will also call addHostedFeedData if it has not
     * been called yet.
     *
     * Adds one item of each feed to the queue and to the playback history.
     *
     * This method should NOT be called if the testing class wants to download the hosted feed data.
     *
     * @param downloadEpisodes true if episodes should also be marked as downloaded.
     */
public void addLocalFeedData(boolean downloadEpisodes) throws Exception {
    if (localFeedDataAdded) {
        Log.w(TAG, "addLocalFeedData was called twice on the same instance");
        // might be a flaky test, this is actually not that severe
        return;
    }
    if (!feedDataHosted) {
        addHostedFeedData();
    }
    List<FeedItem> queue = new ArrayList<>();
    for (Feed feed : hostedFeeds) {
        feed.setDownloaded(true);
        if (feed.getImage() != null) {
            FeedImage image = feed.getImage();
            int fileId = Integer.parseInt(StringUtils.substringAfter(image.getDownload_url(), "files/"));
            image.setFile_url(server.accessFile(fileId).getAbsolutePath());
            image.setDownloaded(true);
        }
        if (downloadEpisodes) {
            for (FeedItem item : feed.getItems()) {
                if (item.hasMedia()) {
                    FeedMedia media = item.getMedia();
                    int fileId = Integer.parseInt(StringUtils.substringAfter(media.getDownload_url(), "files/"));
                    media.setFile_url(server.accessFile(fileId).getAbsolutePath());
                    media.setDownloaded(true);
                }
            }
        }
        queue.add(feed.getItems().get(0));
        feed.getItems().get(1).getMedia().setPlaybackCompletionDate(new Date());
    }
    localFeedDataAdded = true;
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    adapter.setCompleteFeed(hostedFeeds.toArray(new Feed[hostedFeeds.size()]));
    adapter.setQueue(queue);
    adapter.close();
    EventDistributor.getInstance().sendFeedUpdateBroadcast();
    EventBus.getDefault().post(QueueEvent.setQueue(queue));
}
Also used : PodDBAdapter(de.danoeh.antennapod.core.storage.PodDBAdapter) 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) Date(java.util.Date) Feed(de.danoeh.antennapod.core.feed.Feed)

Example 22 with Feed

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

the class UITestUtilsTest method addLocalFeedDataCheck.

private void addLocalFeedDataCheck(boolean downloadEpisodes) throws Exception {
    uiTestUtils.addLocalFeedData(downloadEpisodes);
    assertNotNull(uiTestUtils.hostedFeeds);
    assertFalse(uiTestUtils.hostedFeeds.isEmpty());
    for (Feed feed : uiTestUtils.hostedFeeds) {
        assertTrue(feed.getId() != 0);
        if (feed.getImage() != null) {
            assertTrue(feed.getImage().getId() != 0);
        }
        for (FeedItem item : feed.getItems()) {
            assertTrue(item.getId() != 0);
            if (item.hasMedia()) {
                assertTrue(item.getMedia().getId() != 0);
                if (downloadEpisodes) {
                    assertTrue(item.getMedia().isDownloaded());
                    assertNotNull(item.getMedia().getFile_url());
                    File file = new File(item.getMedia().getFile_url());
                    assertTrue(file.exists());
                }
            }
        }
    }
}
Also used : FeedItem(de.danoeh.antennapod.core.feed.FeedItem) File(java.io.File) Feed(de.danoeh.antennapod.core.feed.Feed)

Example 23 with Feed

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

the class UITestUtilsTest method testAddHostedFeeds.

public void testAddHostedFeeds() throws Exception {
    uiTestUtils.addHostedFeedData();
    final List<Feed> feeds = uiTestUtils.hostedFeeds;
    assertNotNull(feeds);
    assertFalse(feeds.isEmpty());
    for (Feed feed : feeds) {
        testUrlReachable(feed.getDownload_url());
        if (feed.getImage() != null) {
            testUrlReachable(feed.getImage().getDownload_url());
        }
        for (FeedItem item : feed.getItems()) {
            if (item.hasMedia()) {
                testUrlReachable(item.getMedia().getDownload_url());
            }
        }
    }
}
Also used : FeedItem(de.danoeh.antennapod.core.feed.FeedItem) Feed(de.danoeh.antennapod.core.feed.Feed)

Example 24 with Feed

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

the class SubscriptionsAdapter method getView.

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    Holder holder;
    if (convertView == null) {
        holder = new Holder();
        LayoutInflater layoutInflater = (LayoutInflater) mainActivityRef.get().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.subscription_item, parent, false);
        holder.feedTitle = (TextView) convertView.findViewById(R.id.txtvTitle);
        holder.imageView = (ImageView) convertView.findViewById(R.id.imgvCover);
        holder.count = (TriangleLabelView) convertView.findViewById(R.id.triangleCountView);
        convertView.setTag(holder);
    } else {
        holder = (Holder) convertView.getTag();
    }
    if (position == getAddTilePosition()) {
        holder.feedTitle.setText("{md-add 500%}\n\n" + mainActivityRef.get().getString(R.string.add_feed_label));
        holder.feedTitle.setVisibility(View.VISIBLE);
        // prevent any accidental re-use of old values (not sure how that would happen...)
        holder.count.setPrimaryText("");
        // make it go away, we don't need it for add feed
        holder.count.setVisibility(View.INVISIBLE);
        // when this holder is reused, we could else end up with a cover image
        Glide.clear(holder.imageView);
        return convertView;
    }
    final Feed feed = (Feed) getItem(position);
    if (feed == null)
        return null;
    holder.feedTitle.setText(feed.getTitle());
    holder.feedTitle.setVisibility(View.VISIBLE);
    int count = itemAccess.getFeedCounter(feed.getId());
    if (count > 0) {
        holder.count.setPrimaryText(String.valueOf(itemAccess.getFeedCounter(feed.getId())));
        holder.count.setVisibility(View.VISIBLE);
    } else {
        holder.count.setVisibility(View.GONE);
    }
    Glide.with(mainActivityRef.get()).load(feed.getImageLocation()).error(R.color.light_gray).diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY).fitCenter().dontAnimate().into(new CoverTarget(null, holder.feedTitle, holder.imageView, mainActivityRef.get()));
    return convertView;
}
Also used : LayoutInflater(android.view.LayoutInflater) Feed(de.danoeh.antennapod.core.feed.Feed)

Example 25 with Feed

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

the class OpmlFeedQueuer method doInBackground.

@Override
protected Void doInBackground(Void... params) {
    DownloadRequester requester = DownloadRequester.getInstance();
    for (int selected : selection) {
        OpmlElement element = OpmlImportHolder.getReadElements().get(selected);
        Feed feed = new Feed(element.getXmlUrl(), null, element.getText());
        try {
            requester.downloadFeed(context.getApplicationContext(), feed);
        } catch (DownloadRequestException e) {
            e.printStackTrace();
        }
    }
    return null;
}
Also used : DownloadRequester(de.danoeh.antennapod.core.storage.DownloadRequester) DownloadRequestException(de.danoeh.antennapod.core.storage.DownloadRequestException) SuppressLint(android.annotation.SuppressLint) OpmlElement(de.danoeh.antennapod.core.export.opml.OpmlElement) 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