Search in sources :

Example 61 with Feed

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

the class OpmlImportActivity method onCreate.

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    setTheme(UserPreferences.getTheme());
    super.onCreate(savedInstanceState);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    viewBinding = OpmlSelectionBinding.inflate(getLayoutInflater());
    setContentView(viewBinding.getRoot());
    viewBinding.feedlist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    viewBinding.feedlist.setOnItemClickListener((parent, view, position, id) -> {
        SparseBooleanArray checked = viewBinding.feedlist.getCheckedItemPositions();
        int checkedCount = 0;
        for (int i = 0; i < checked.size(); i++) {
            if (checked.valueAt(i)) {
                checkedCount++;
            }
        }
        if (checkedCount == listAdapter.getCount()) {
            selectAll.setVisible(false);
            deselectAll.setVisible(true);
        } else {
            deselectAll.setVisible(false);
            selectAll.setVisible(true);
        }
    });
    viewBinding.butCancel.setOnClickListener(v -> {
        setResult(RESULT_CANCELED);
        finish();
    });
    viewBinding.butConfirm.setOnClickListener(v -> {
        viewBinding.progressBar.setVisibility(View.VISIBLE);
        Completable.fromAction(() -> {
            SparseBooleanArray checked = viewBinding.feedlist.getCheckedItemPositions();
            for (int i = 0; i < checked.size(); i++) {
                if (!checked.valueAt(i)) {
                    continue;
                }
                OpmlElement element = readElements.get(checked.keyAt(i));
                Feed feed = new Feed(element.getXmlUrl(), null, element.getText());
                DownloadService.download(this, false, DownloadRequestCreator.create(feed).build());
            }
        }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(() -> {
            viewBinding.progressBar.setVisibility(View.GONE);
            Intent intent = new Intent(OpmlImportActivity.this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
            finish();
        }, e -> {
            viewBinding.progressBar.setVisibility(View.GONE);
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        });
    });
    Uri uri = getIntent().getData();
    if (uri != null && uri.toString().startsWith("/")) {
        uri = Uri.parse("file://" + uri.toString());
    } else {
        String extraText = getIntent().getStringExtra(Intent.EXTRA_TEXT);
        if (extraText != null) {
            uri = Uri.parse(extraText);
        }
    }
    importUri(uri);
}
Also used : SparseBooleanArray(android.util.SparseBooleanArray) Intent(android.content.Intent) Uri(android.net.Uri) OpmlElement(de.danoeh.antennapod.core.export.opml.OpmlElement) Feed(de.danoeh.antennapod.model.feed.Feed)

Example 62 with Feed

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

the class MainActivityTest method testAddFeed.

@Test
public void testAddFeed() throws Exception {
    // connect to podcast feed
    uiTestUtils.addHostedFeedData();
    final Feed feed = uiTestUtils.hostedFeeds.get(0);
    openNavDrawer();
    onView(withText(R.string.add_feed_label)).perform(click());
    onView(withId(R.id.addViaUrlButton)).perform(scrollTo(), click());
    onView(withId(R.id.urlEditText)).perform(replaceText(feed.getDownload_url()));
    onView(withText(R.string.confirm_label)).perform(scrollTo(), click());
    // subscribe podcast
    Espresso.closeSoftKeyboard();
    waitForViewGlobally(withText(R.string.subscribe_label), 15000);
    onView(withText(R.string.subscribe_label)).perform(click());
    // wait for podcast feed item list
    waitForViewGlobally(withId(R.id.butShowSettings), 15000);
}
Also used : Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 63 with Feed

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

the class TextOnlyFeedsTest method testMarkAsPlayedList.

@Test
public void testMarkAsPlayedList() throws Exception {
    uiTestUtils.addLocalFeedData(false);
    final Feed feed = uiTestUtils.hostedFeeds.get(0);
    openNavDrawer();
    onView(withId(R.id.nav_list)).perform(swipeUp());
    onDrawerItem(withText(feed.getTitle())).perform(click());
    onView(withText(feed.getItemAtIndex(0).getTitle())).perform(click());
    onView(isRoot()).perform(waitForView(withText(R.string.mark_read_no_media_label), 3000));
    onView(withText(R.string.mark_read_no_media_label)).perform(click());
    onView(isRoot()).perform(waitForView(allOf(withText(R.string.mark_read_no_media_label), not(isDisplayed())), 3000));
}
Also used : Feed(de.danoeh.antennapod.model.feed.Feed) Test(org.junit.Test)

Example 64 with Feed

use of de.danoeh.antennapod.model.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);
        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.model.feed.FeedItem) File(java.io.File) Feed(de.danoeh.antennapod.model.feed.Feed)

Example 65 with Feed

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

the class UITestUtilsTest method testAddHostedFeeds.

@Test
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());
        for (FeedItem item : feed.getItems()) {
            if (item.hasMedia()) {
                testUrlReachable(item.getMedia().getDownload_url());
            }
        }
    }
}
Also used : FeedItem(de.danoeh.antennapod.model.feed.FeedItem) Feed(de.danoeh.antennapod.model.feed.Feed) MediumTest(androidx.test.filters.MediumTest) Test(org.junit.Test)

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