Search in sources :

Example 76 with Feed

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

the class NavigationDrawerTest method testClickNavDrawer.

@Test
public void testClickNavDrawer() throws Exception {
    uiTestUtils.addLocalFeedData(false);
    UserPreferences.setHiddenDrawerItems(new ArrayList<>());
    activityRule.launchActivity(new Intent());
    // queue
    openNavDrawer();
    onDrawerItem(withText(R.string.queue_label)).perform(click());
    onView(isRoot()).perform(waitForView(allOf(isDescendantOfA(withId(R.id.toolbar)), withText(R.string.queue_label)), 1000));
    // episodes
    openNavDrawer();
    onDrawerItem(withText(R.string.episodes_label)).perform(click());
    onView(isRoot()).perform(waitForView(allOf(isDescendantOfA(withId(R.id.toolbar)), withText(R.string.episodes_label), isDisplayed()), 1000));
    // Subscriptions
    openNavDrawer();
    onDrawerItem(withText(R.string.subscriptions_label)).perform(click());
    onView(isRoot()).perform(waitForView(allOf(isDescendantOfA(withId(R.id.toolbar)), withText(R.string.subscriptions_label), isDisplayed()), 1000));
    // downloads
    openNavDrawer();
    onDrawerItem(withText(R.string.downloads_label)).perform(click());
    onView(isRoot()).perform(waitForView(allOf(isDescendantOfA(withId(R.id.toolbar)), withText(R.string.downloads_label), isDisplayed()), 1000));
    // playback history
    openNavDrawer();
    onDrawerItem(withText(R.string.playback_history_label)).perform(click());
    onView(isRoot()).perform(waitForView(allOf(isDescendantOfA(withId(R.id.toolbar)), withText(R.string.playback_history_label), isDisplayed()), 1000));
    // add podcast
    openNavDrawer();
    onView(withId(R.id.nav_list)).perform(swipeUp());
    onDrawerItem(withText(R.string.add_feed_label)).perform(click());
    onView(isRoot()).perform(waitForView(allOf(isDescendantOfA(withId(R.id.toolbar)), withText(R.string.add_feed_label), isDisplayed()), 1000));
    // podcasts
    for (int i = 0; i < uiTestUtils.hostedFeeds.size(); i++) {
        Feed f = uiTestUtils.hostedFeeds.get(i);
        openNavDrawer();
        onDrawerItem(withText(f.getTitle())).perform(click());
        onView(isRoot()).perform(waitForView(allOf(isDescendantOfA(withId(R.id.appBar)), withText(f.getTitle()), isDisplayed()), 1000));
    }
}
Also used : Intent(android.content.Intent) Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 77 with Feed

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

the class DBReader method extractFeedFromCursorRow.

private static Feed extractFeedFromCursorRow(Cursor cursor) {
    Feed feed = FeedCursorMapper.convert(cursor);
    FeedPreferences preferences = FeedPreferencesCursorMapper.convert(cursor);
    feed.setPreferences(preferences);
    return feed;
}
Also used : FeedPreferences(de.danoeh.antennapod.model.feed.FeedPreferences) Feed(de.danoeh.antennapod.model.feed.Feed)

Example 78 with Feed

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

the class DBReader method getStatistics.

/**
 * Searches the DB for statistics.
 *
 * @return The list of statistics objects
 */
@NonNull
public static List<StatisticsItem> getStatistics() {
    PodDBAdapter adapter = PodDBAdapter.getInstance();
    adapter.open();
    List<StatisticsItem> feedTime = new ArrayList<>();
    List<Feed> feeds = getFeedList();
    for (Feed feed : feeds) {
        long feedPlayedTimeCountAll = 0;
        long feedPlayedTime = 0;
        long feedTotalTime = 0;
        long episodes = 0;
        long episodesStarted = 0;
        long episodesStartedIncludingMarked = 0;
        long totalDownloadSize = 0;
        long episodesDownloadCount = 0;
        List<FeedItem> items = getFeed(feed.getId()).getItems();
        for (FeedItem item : items) {
            FeedMedia media = item.getMedia();
            if (media == null) {
                continue;
            }
            feedPlayedTime += media.getPlayedDuration() / 1000;
            if (item.isPlayed()) {
                feedPlayedTimeCountAll += media.getDuration() / 1000;
            } else {
                feedPlayedTimeCountAll += media.getPosition() / 1000;
            }
            if (media.getPlaybackCompletionDate() != null || media.getPlayedDuration() > 0) {
                episodesStarted++;
            }
            if (item.isPlayed() || media.getPosition() != 0) {
                episodesStartedIncludingMarked++;
            }
            feedTotalTime += media.getDuration() / 1000;
            if (media.isDownloaded()) {
                totalDownloadSize += new File(media.getFile_url()).length();
                episodesDownloadCount++;
            }
            episodes++;
        }
        feedTime.add(new StatisticsItem(feed, feedTotalTime, feedPlayedTime, feedPlayedTimeCountAll, episodes, episodesStarted, episodesStartedIncludingMarked, totalDownloadSize, episodesDownloadCount));
    }
    adapter.close();
    return feedTime;
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) FeedMedia(de.danoeh.antennapod.model.feed.FeedMedia) ArrayList(java.util.ArrayList) File(java.io.File) Feed(de.danoeh.antennapod.model.feed.Feed) NonNull(androidx.annotation.NonNull)

Example 79 with Feed

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

the class DBReader method loadFeedDataOfFeedItemList.

/**
 * Takes a list of FeedItems and loads their corresponding Feed-objects from the database.
 * The feedID-attribute of a FeedItem must be set to the ID of its feed or the method will
 * not find the correct feed of an item.
 *
 * @param items The FeedItems whose Feed-objects should be loaded.
 */
private static void loadFeedDataOfFeedItemList(List<FeedItem> items) {
    List<Feed> feeds = getFeedList();
    Map<Long, Feed> feedIndex = new ArrayMap<>(feeds.size());
    for (Feed feed : feeds) {
        feedIndex.put(feed.getId(), feed);
    }
    for (FeedItem item : items) {
        Feed feed = feedIndex.get(item.getFeedId());
        if (feed == null) {
            Log.w(TAG, "No match found for item with ID " + item.getId() + ". Feed ID was " + item.getFeedId());
            feed = new Feed("", "", "Error: Item without feed");
        }
        item.setFeed(feed);
    }
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) ArrayMap(androidx.collection.ArrayMap) Feed(de.danoeh.antennapod.model.feed.Feed)

Example 80 with Feed

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

the class DBReader method getFeedList.

@NonNull
private static List<Feed> getFeedList(PodDBAdapter adapter) {
    try (Cursor cursor = adapter.getAllFeedsCursor()) {
        List<Feed> feeds = new ArrayList<>(cursor.getCount());
        while (cursor.moveToNext()) {
            Feed feed = extractFeedFromCursorRow(cursor);
            feeds.add(feed);
        }
        return feeds;
    }
}
Also used : ArrayList(java.util.ArrayList) Cursor(android.database.Cursor) Feed(de.danoeh.antennapod.model.feed.Feed) NonNull(androidx.annotation.NonNull)

Aggregations

Feed (de.danoeh.antennapod.model.feed.Feed)125 FeedItem (de.danoeh.antennapod.model.feed.FeedItem)75 Test (org.junit.Test)61 ArrayList (java.util.ArrayList)43 Date (java.util.Date)37 File (java.io.File)31 FeedMedia (de.danoeh.antennapod.model.feed.FeedMedia)27 Cursor (android.database.Cursor)15 FeedPreferences (de.danoeh.antennapod.model.feed.FeedPreferences)12 NonNull (androidx.annotation.NonNull)10 Nullable (androidx.annotation.Nullable)8 View (android.view.View)7 DownloadStatus (de.danoeh.antennapod.core.service.download.DownloadStatus)7 Log (android.util.Log)6 R (de.danoeh.antennapod.R)6 DownloadRequest (de.danoeh.antennapod.core.service.download.DownloadRequest)6 List (java.util.List)6 ViewGroup (android.view.ViewGroup)5 AlertDialog (androidx.appcompat.app.AlertDialog)5 RequestOptions (com.bumptech.glide.request.RequestOptions)5