diff options
author | ByteHamster <info@bytehamster.com> | 2020-05-25 11:34:01 +0200 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2020-05-25 11:34:03 +0200 |
commit | 382a54028029fe6297ebab405010d7e5229331d4 (patch) | |
tree | 3848b3fb636b46534e45bd94a91f2fb97e63e598 /app/src/main | |
parent | 3ee3ba3f6e770d03791fa3f0ed68e09778291437 (diff) | |
download | AntennaPod-382a54028029fe6297ebab405010d7e5229331d4.zip |
Basic local feeds support
Co-authored-by: Igor Almeida <igor.contato@gmail.com>
Diffstat (limited to 'app/src/main')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java | 38 | ||||
-rw-r--r-- | app/src/main/res/layout/addfeed.xml | 14 |
2 files changed, 50 insertions, 2 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java index 546684f14..d29a36871 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java @@ -14,16 +14,22 @@ import android.view.ViewGroup; import android.widget.EditText; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; +import androidx.documentfile.provider.DocumentFile; import androidx.fragment.app.Fragment; +import com.google.android.material.snackbar.Snackbar; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.activity.OnlineFeedViewActivity; import de.danoeh.antennapod.activity.OpmlImportActivity; +import de.danoeh.antennapod.core.feed.Feed; +import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.discovery.CombinedSearcher; import de.danoeh.antennapod.discovery.FyydPodcastSearcher; import de.danoeh.antennapod.discovery.ItunesPodcastSearcher; import de.danoeh.antennapod.fragment.gpodnet.GpodnetMainFragment; +import java.util.Collections; + /** * Provides actions for adding new podcast subscriptions. */ @@ -31,6 +37,7 @@ public class AddFeedFragment extends Fragment { public static final String TAG = "AddFeedFragment"; private static final int REQUEST_CODE_CHOOSE_OPML_IMPORT_PATH = 1; + private static final int REQUEST_CODE_ADD_LOCAL_FOLDER = 2; private EditText combinedFeedSearchBox; private MainActivity activity; @@ -57,8 +64,7 @@ public class AddFeedFragment extends Fragment { root.findViewById(R.id.btn_add_via_url).setOnClickListener(v -> showAddViaUrlDialog()); - View butOpmlImport = root.findViewById(R.id.btn_opml_import); - butOpmlImport.setOnClickListener(v -> { + root.findViewById(R.id.btn_opml_import).setOnClickListener(v -> { try { Intent intentGetContentAction = new Intent(Intent.ACTION_GET_CONTENT); intentGetContentAction.addCategory(Intent.CATEGORY_OPENABLE); @@ -68,6 +74,15 @@ public class AddFeedFragment extends Fragment { Log.e(TAG, "No activity found. Should never happen..."); } }); + root.findViewById(R.id.btn_add_local_folder).setOnClickListener(v -> { + try { + Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + startActivityForResult(intent, REQUEST_CODE_ADD_LOCAL_FOLDER); + } catch (ActivityNotFoundException e) { + Log.e(TAG, "No activity found. Should never happen..."); + } + }); root.findViewById(R.id.search_icon).setOnClickListener(view -> performSearch()); return root; } @@ -127,6 +142,25 @@ public class AddFeedFragment extends Fragment { Intent intent = new Intent(getContext(), OpmlImportActivity.class); intent.setData(uri); startActivity(intent); + } else if (requestCode == REQUEST_CODE_ADD_LOCAL_FOLDER) { + try { + getActivity().getContentResolver() + .takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION); + DocumentFile documentFile = DocumentFile.fromTreeUri(getContext(), uri); + if (documentFile == null) { + throw new IllegalArgumentException("Unable to retrieve document tree"); + } + Feed dirFeed = new Feed(Feed.PREFIX_LOCAL_FOLDER + uri.toString(), null, documentFile.getName()); + dirFeed.setDescription(getString(R.string.local_feed_description)); + dirFeed.setItems(Collections.emptyList()); + DBTasks.forceRefreshFeed(getContext(), dirFeed, true); + ((MainActivity) getActivity()) + .showSnackbarAbovePlayer(R.string.add_local_folder_success, Snackbar.LENGTH_SHORT); + } catch (Exception e) { + Log.e(TAG, Log.getStackTraceString(e)); + ((MainActivity) getActivity()) + .showSnackbarAbovePlayer(e.getLocalizedMessage(), Snackbar.LENGTH_LONG); + } } } } diff --git a/app/src/main/res/layout/addfeed.xml b/app/src/main/res/layout/addfeed.xml index 9d14d209a..7430579b4 100644 --- a/app/src/main/res/layout/addfeed.xml +++ b/app/src/main/res/layout/addfeed.xml @@ -101,6 +101,20 @@ android:text="@string/add_podcast_by_url"/> <TextView + android:id="@+id/btn_add_local_folder" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:drawablePadding="8dp" + app:drawableStartCompat="?attr/ic_folder" + app:drawableLeftCompat="?attr/ic_folder" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:background="?android:attr/selectableItemBackground" + android:textColor="?android:attr/textColorPrimary" + android:clickable="true" + android:text="@string/add_local_folder"/> + + <TextView android:id="@+id/btn_search_itunes" android:layout_width="match_parent" android:layout_height="wrap_content" |