Merge pull request #5200 from TacoTheDank/plugin-updates
Update plugins and Gradle
This commit is contained in:
commit
dbac6cae46
@ -1,7 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
id('com.android.application')
|
id('com.android.application')
|
||||||
id('com.getkeepsafe.dexcount')
|
id('com.getkeepsafe.dexcount')
|
||||||
id('com.github.triplet.play') version '2.7.5' apply false
|
id('com.github.triplet.play') version '3.4.0' apply false
|
||||||
}
|
}
|
||||||
apply from: "../common.gradle"
|
apply from: "../common.gradle"
|
||||||
apply from: "../playFlavor.gradle"
|
apply from: "../playFlavor.gradle"
|
||||||
@ -170,8 +170,8 @@ dependencies {
|
|||||||
if (project.hasProperty("antennaPodPlayPublisherCredentials")) {
|
if (project.hasProperty("antennaPodPlayPublisherCredentials")) {
|
||||||
apply plugin: 'com.github.triplet.play'
|
apply plugin: 'com.github.triplet.play'
|
||||||
play {
|
play {
|
||||||
track = 'alpha'
|
track.set('alpha')
|
||||||
serviceAccountCredentials = file(antennaPodPlayPublisherCredentials)
|
serviceAccountCredentials.set(file(antennaPodPlayPublisherCredentials))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ import static java.util.Collections.singletonList;
|
|||||||
/**
|
/**
|
||||||
* Test class for GpodnetService
|
* Test class for GpodnetService
|
||||||
*/
|
*/
|
||||||
@Ignore
|
@Ignore("Needs valid credentials to run")
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class GPodnetServiceTest {
|
public class GPodnetServiceTest {
|
||||||
|
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
package de.test.antennapod.ui;
|
|
||||||
|
|
||||||
import android.content.Intent;
|
|
||||||
import androidx.test.filters.MediumTest;
|
|
||||||
import androidx.test.rule.ActivityTestRule;
|
|
||||||
|
|
||||||
import de.danoeh.antennapod.R;
|
|
||||||
import de.danoeh.antennapod.activity.VideoplayerActivity;
|
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Rule;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import static androidx.test.espresso.Espresso.onView;
|
|
||||||
import static androidx.test.espresso.assertion.ViewAssertions.matches;
|
|
||||||
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
|
|
||||||
import static androidx.test.espresso.matcher.ViewMatchers.withId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test class for VideoplayerActivity
|
|
||||||
*/
|
|
||||||
@MediumTest
|
|
||||||
@Ignore
|
|
||||||
public class VideoplayerActivityTest {
|
|
||||||
|
|
||||||
@Rule
|
|
||||||
public ActivityTestRule<VideoplayerActivity> activityTestRule = new ActivityTestRule<>(VideoplayerActivity.class, false, false);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test if activity can be started.
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void testStartActivity() throws Exception {
|
|
||||||
activityTestRule.launchActivity(new Intent());
|
|
||||||
onView(withId(R.id.videoPlayerContainer)).check(matches(isDisplayed()));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
package="de.danoeh.antennapod"
|
package="de.danoeh.antennapod"
|
||||||
android:installLocation="auto">
|
android:installLocation="auto">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||||
|
tools:ignore="ScopedStorage" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||||
@ -353,4 +355,11 @@
|
|||||||
android:resource="@xml/actions" />
|
android:resource="@xml/actions" />
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
|
<queries>
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.SEND" />
|
||||||
|
<data android:mimeType="text/*" />
|
||||||
|
</intent>
|
||||||
|
</queries>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@ -119,20 +119,19 @@ public class OpmlFeedChooserActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.select_all_item:
|
if (itemId == R.id.select_all_item) {
|
||||||
selectAll.setVisible(false);
|
selectAll.setVisible(false);
|
||||||
selectAllItems(true);
|
selectAllItems(true);
|
||||||
deselectAll.setVisible(true);
|
deselectAll.setVisible(true);
|
||||||
return true;
|
return true;
|
||||||
case R.id.deselect_all_item:
|
} else if (itemId == R.id.deselect_all_item) {
|
||||||
deselectAll.setVisible(false);
|
deselectAll.setVisible(false);
|
||||||
selectAllItems(false);
|
selectAllItems(false);
|
||||||
selectAll.setVisible(true);
|
selectAll.setVisible(true);
|
||||||
return true;
|
return true;
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void selectAllItems(boolean b) {
|
private void selectAllItems(boolean b) {
|
||||||
|
@ -88,30 +88,28 @@ public class PreferenceActivity extends AppCompatActivity implements SearchPrefe
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int getTitleOfPage(int preferences) {
|
public static int getTitleOfPage(int preferences) {
|
||||||
switch (preferences) {
|
if (preferences == R.xml.preferences_network) {
|
||||||
case R.xml.preferences_network:
|
|
||||||
return R.string.network_pref;
|
return R.string.network_pref;
|
||||||
case R.xml.preferences_autodownload:
|
} else if (preferences == R.xml.preferences_autodownload) {
|
||||||
return R.string.pref_automatic_download_title;
|
return R.string.pref_automatic_download_title;
|
||||||
case R.xml.preferences_playback:
|
} else if (preferences == R.xml.preferences_playback) {
|
||||||
return R.string.playback_pref;
|
return R.string.playback_pref;
|
||||||
case R.xml.preferences_storage:
|
} else if (preferences == R.xml.preferences_storage) {
|
||||||
return R.string.storage_pref;
|
return R.string.storage_pref;
|
||||||
case R.xml.preferences_import_export:
|
} else if (preferences == R.xml.preferences_import_export) {
|
||||||
return R.string.import_export_pref;
|
return R.string.import_export_pref;
|
||||||
case R.xml.preferences_user_interface:
|
} else if (preferences == R.xml.preferences_user_interface) {
|
||||||
return R.string.user_interface_label;
|
return R.string.user_interface_label;
|
||||||
case R.xml.preferences_gpodder:
|
} else if (preferences == R.xml.preferences_gpodder) {
|
||||||
return R.string.gpodnet_main_label;
|
return R.string.gpodnet_main_label;
|
||||||
case R.xml.preferences_notifications:
|
} else if (preferences == R.xml.preferences_notifications) {
|
||||||
return R.string.notification_pref_fragment;
|
return R.string.notification_pref_fragment;
|
||||||
case R.xml.feed_settings:
|
} else if (preferences == R.xml.feed_settings) {
|
||||||
return R.string.feed_settings_label;
|
return R.string.feed_settings_label;
|
||||||
case R.xml.preferences_swipe:
|
} else if (preferences == R.xml.preferences_swipe) {
|
||||||
return R.string.swipeactions_label;
|
return R.string.swipeactions_label;
|
||||||
default:
|
|
||||||
return R.string.settings_label;
|
|
||||||
}
|
}
|
||||||
|
return R.string.settings_label;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PreferenceFragmentCompat openScreen(int screen) {
|
public PreferenceFragmentCompat openScreen(int screen) {
|
||||||
|
@ -507,16 +507,16 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
if (feedItem != null && FeedItemMenuHandler.onMenuItemClicked(this, item.getItemId(), feedItem)) {
|
if (feedItem != null && FeedItemMenuHandler.onMenuItemClicked(this, item.getItemId(), feedItem)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
switch (item.getItemId()) {
|
|
||||||
case R.id.disable_sleeptimer_item: // Fall-through
|
final int itemId = item.getItemId();
|
||||||
case R.id.set_sleeptimer_item:
|
if (itemId == R.id.disable_sleeptimer_item || itemId == R.id.set_sleeptimer_item) {
|
||||||
new SleepTimerDialog().show(getChildFragmentManager(), "SleepTimerDialog");
|
new SleepTimerDialog().show(getChildFragmentManager(), "SleepTimerDialog");
|
||||||
return true;
|
return true;
|
||||||
case R.id.audio_controls:
|
} else if (itemId == R.id.audio_controls) {
|
||||||
PlaybackControlsDialog dialog = PlaybackControlsDialog.newInstance();
|
PlaybackControlsDialog dialog = PlaybackControlsDialog.newInstance();
|
||||||
dialog.show(getChildFragmentManager(), "playback_controls");
|
dialog.show(getChildFragmentManager(), "playback_controls");
|
||||||
return true;
|
return true;
|
||||||
case R.id.open_feed_item:
|
} else if (itemId == R.id.open_feed_item) {
|
||||||
if (feedItem != null) {
|
if (feedItem != null) {
|
||||||
Intent intent = MainActivity.getIntentToOpenFeed(getContext(), feedItem.getFeedId());
|
Intent intent = MainActivity.getIntentToOpenFeed(getContext(), feedItem.getFeedId());
|
||||||
startActivity(intent);
|
startActivity(intent);
|
||||||
|
@ -122,11 +122,11 @@ public abstract class EpisodesListFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||||
if (!super.onOptionsItemSelected(item)) {
|
if (!super.onOptionsItemSelected(item)) {
|
||||||
switch (item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.refresh_item:
|
if (itemId == R.id.refresh_item) {
|
||||||
AutoUpdateManager.runImmediate(requireContext());
|
AutoUpdateManager.runImmediate(requireContext());
|
||||||
return true;
|
return true;
|
||||||
case R.id.mark_all_read_item:
|
} else if (itemId == R.id.mark_all_read_item) {
|
||||||
ConfirmationDialog markAllReadConfirmationDialog = new ConfirmationDialog(getActivity(),
|
ConfirmationDialog markAllReadConfirmationDialog = new ConfirmationDialog(getActivity(),
|
||||||
R.string.mark_all_read_label,
|
R.string.mark_all_read_label,
|
||||||
R.string.mark_all_read_confirmation_msg) {
|
R.string.mark_all_read_confirmation_msg) {
|
||||||
@ -141,7 +141,7 @@ public abstract class EpisodesListFragment extends Fragment {
|
|||||||
};
|
};
|
||||||
markAllReadConfirmationDialog.createNewDialog().show();
|
markAllReadConfirmationDialog.createNewDialog().show();
|
||||||
return true;
|
return true;
|
||||||
case R.id.remove_all_new_flags_item:
|
} else if (itemId == R.id.remove_all_new_flags_item) {
|
||||||
ConfirmationDialog removeAllNewFlagsConfirmationDialog = new ConfirmationDialog(getActivity(),
|
ConfirmationDialog removeAllNewFlagsConfirmationDialog = new ConfirmationDialog(getActivity(),
|
||||||
R.string.remove_all_new_flags_label,
|
R.string.remove_all_new_flags_label,
|
||||||
R.string.remove_all_new_flags_confirmation_msg) {
|
R.string.remove_all_new_flags_confirmation_msg) {
|
||||||
@ -156,9 +156,8 @@ public abstract class EpisodesListFragment extends Fragment {
|
|||||||
};
|
};
|
||||||
removeAllNewFlagsConfirmationDialog.createNewDialog().show();
|
removeAllNewFlagsConfirmationDialog.createNewDialog().show();
|
||||||
return true;
|
return true;
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -332,17 +332,16 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
|
|||||||
if (feedMenuHandled) {
|
if (feedMenuHandled) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
switch (item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.rename_item:
|
if (itemId == R.id.rename_item) {
|
||||||
new RenameFeedDialog(getActivity(), feed).show();
|
new RenameFeedDialog(getActivity(), feed).show();
|
||||||
return true;
|
return true;
|
||||||
case R.id.remove_item:
|
} else if (itemId == R.id.remove_item) {
|
||||||
RemoveFeedDialog.show(getContext(), feed, () ->
|
RemoveFeedDialog.show(getContext(), feed, () ->
|
||||||
((MainActivity) getActivity()).loadFragment(EpisodesFragment.TAG, null));
|
((MainActivity) getActivity()).loadFragment(EpisodesFragment.TAG, null));
|
||||||
return true;
|
return true;
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -143,8 +143,8 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean onFeedContextMenuClicked(Feed feed, MenuItem item) {
|
private boolean onFeedContextMenuClicked(Feed feed, MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.remove_all_new_flags_item:
|
if (itemId == R.id.remove_all_new_flags_item) {
|
||||||
ConfirmationDialog removeAllNewFlagsConfirmationDialog = new ConfirmationDialog(getContext(),
|
ConfirmationDialog removeAllNewFlagsConfirmationDialog = new ConfirmationDialog(getContext(),
|
||||||
R.string.remove_all_new_flags_label,
|
R.string.remove_all_new_flags_label,
|
||||||
R.string.remove_all_new_flags_confirmation_msg) {
|
R.string.remove_all_new_flags_confirmation_msg) {
|
||||||
@ -156,7 +156,7 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS
|
|||||||
};
|
};
|
||||||
removeAllNewFlagsConfirmationDialog.createNewDialog().show();
|
removeAllNewFlagsConfirmationDialog.createNewDialog().show();
|
||||||
return true;
|
return true;
|
||||||
case R.id.mark_all_read_item:
|
} else if (itemId == R.id.mark_all_read_item) {
|
||||||
ConfirmationDialog markAllReadConfirmationDialog = new ConfirmationDialog(getContext(),
|
ConfirmationDialog markAllReadConfirmationDialog = new ConfirmationDialog(getContext(),
|
||||||
R.string.mark_all_read_label,
|
R.string.mark_all_read_label,
|
||||||
R.string.mark_all_read_confirmation_msg) {
|
R.string.mark_all_read_confirmation_msg) {
|
||||||
@ -169,17 +169,16 @@ public class NavDrawerFragment extends Fragment implements SharedPreferences.OnS
|
|||||||
};
|
};
|
||||||
markAllReadConfirmationDialog.createNewDialog().show();
|
markAllReadConfirmationDialog.createNewDialog().show();
|
||||||
return true;
|
return true;
|
||||||
case R.id.rename_item:
|
} else if (itemId == R.id.rename_item) {
|
||||||
new RenameFeedDialog(getActivity(), feed).show();
|
new RenameFeedDialog(getActivity(), feed).show();
|
||||||
return true;
|
return true;
|
||||||
case R.id.remove_item:
|
} else if (itemId == R.id.remove_item) {
|
||||||
RemoveFeedDialog.show(getContext(), feed, () -> {
|
RemoveFeedDialog.show(getContext(), feed, () -> {
|
||||||
((MainActivity) getActivity()).loadFragment(EpisodesFragment.TAG, null);
|
((MainActivity) getActivity()).loadFragment(EpisodesFragment.TAG, null);
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
default:
|
|
||||||
return super.onContextItemSelected(item);
|
|
||||||
}
|
}
|
||||||
|
return super.onContextItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
|
@ -258,14 +258,14 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.queue_lock:
|
if (itemId == R.id.queue_lock) {
|
||||||
toggleQueueLock();
|
toggleQueueLock();
|
||||||
return true;
|
return true;
|
||||||
case R.id.refresh_item:
|
} else if (itemId == R.id.refresh_item) {
|
||||||
AutoUpdateManager.runImmediate(requireContext());
|
AutoUpdateManager.runImmediate(requireContext());
|
||||||
return true;
|
return true;
|
||||||
case R.id.clear_queue:
|
} else if (itemId == R.id.clear_queue) {
|
||||||
// make sure the user really wants to clear the queue
|
// make sure the user really wants to clear the queue
|
||||||
ConfirmationDialog conDialog = new ConfirmationDialog(getActivity(),
|
ConfirmationDialog conDialog = new ConfirmationDialog(getActivity(),
|
||||||
R.string.clear_queue_label,
|
R.string.clear_queue_label,
|
||||||
@ -280,40 +280,40 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi
|
|||||||
};
|
};
|
||||||
conDialog.createNewDialog().show();
|
conDialog.createNewDialog().show();
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_episode_title_asc:
|
} else if (itemId == R.id.queue_sort_episode_title_asc) {
|
||||||
setSortOrder(SortOrder.EPISODE_TITLE_A_Z);
|
setSortOrder(SortOrder.EPISODE_TITLE_A_Z);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_episode_title_desc:
|
} else if (itemId == R.id.queue_sort_episode_title_desc) {
|
||||||
setSortOrder(SortOrder.EPISODE_TITLE_Z_A);
|
setSortOrder(SortOrder.EPISODE_TITLE_Z_A);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_date_asc:
|
} else if (itemId == R.id.queue_sort_date_asc) {
|
||||||
setSortOrder(SortOrder.DATE_OLD_NEW);
|
setSortOrder(SortOrder.DATE_OLD_NEW);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_date_desc:
|
} else if (itemId == R.id.queue_sort_date_desc) {
|
||||||
setSortOrder(SortOrder.DATE_NEW_OLD);
|
setSortOrder(SortOrder.DATE_NEW_OLD);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_duration_asc:
|
} else if (itemId == R.id.queue_sort_duration_asc) {
|
||||||
setSortOrder(SortOrder.DURATION_SHORT_LONG);
|
setSortOrder(SortOrder.DURATION_SHORT_LONG);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_duration_desc:
|
} else if (itemId == R.id.queue_sort_duration_desc) {
|
||||||
setSortOrder(SortOrder.DURATION_LONG_SHORT);
|
setSortOrder(SortOrder.DURATION_LONG_SHORT);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_feed_title_asc:
|
} else if (itemId == R.id.queue_sort_feed_title_asc) {
|
||||||
setSortOrder(SortOrder.FEED_TITLE_A_Z);
|
setSortOrder(SortOrder.FEED_TITLE_A_Z);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_feed_title_desc:
|
} else if (itemId == R.id.queue_sort_feed_title_desc) {
|
||||||
setSortOrder(SortOrder.FEED_TITLE_Z_A);
|
setSortOrder(SortOrder.FEED_TITLE_Z_A);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_random:
|
} else if (itemId == R.id.queue_sort_random) {
|
||||||
setSortOrder(SortOrder.RANDOM);
|
setSortOrder(SortOrder.RANDOM);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_smart_shuffle_asc:
|
} else if (itemId == R.id.queue_sort_smart_shuffle_asc) {
|
||||||
setSortOrder(SortOrder.SMART_SHUFFLE_OLD_NEW);
|
setSortOrder(SortOrder.SMART_SHUFFLE_OLD_NEW);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_sort_smart_shuffle_desc:
|
} else if (itemId == R.id.queue_sort_smart_shuffle_desc) {
|
||||||
setSortOrder(SortOrder.SMART_SHUFFLE_NEW_OLD);
|
setSortOrder(SortOrder.SMART_SHUFFLE_NEW_OLD);
|
||||||
return true;
|
return true;
|
||||||
case R.id.queue_keep_sorted:
|
} else if (itemId == R.id.queue_keep_sorted) {
|
||||||
boolean keepSortedOld = UserPreferences.isQueueKeepSorted();
|
boolean keepSortedOld = UserPreferences.isQueueKeepSorted();
|
||||||
boolean keepSortedNew = !keepSortedOld;
|
boolean keepSortedNew = !keepSortedOld;
|
||||||
UserPreferences.setQueueKeepSorted(keepSortedNew);
|
UserPreferences.setQueueKeepSorted(keepSortedNew);
|
||||||
@ -326,9 +326,8 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi
|
|||||||
}
|
}
|
||||||
refreshToolbarState();
|
refreshToolbarState();
|
||||||
return true;
|
return true;
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toggleQueueLock() {
|
private void toggleQueueLock() {
|
||||||
@ -404,20 +403,19 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.move_to_top_item:
|
if (itemId == R.id.move_to_top_item) {
|
||||||
queue.add(0, queue.remove(position));
|
queue.add(0, queue.remove(position));
|
||||||
recyclerAdapter.notifyItemMoved(position, 0);
|
recyclerAdapter.notifyItemMoved(position, 0);
|
||||||
DBWriter.moveQueueItemToTop(selectedItem.getId(), true);
|
DBWriter.moveQueueItemToTop(selectedItem.getId(), true);
|
||||||
return true;
|
return true;
|
||||||
case R.id.move_to_bottom_item:
|
} else if (itemId == R.id.move_to_bottom_item) {
|
||||||
queue.add(queue.size() - 1, queue.remove(position));
|
queue.add(queue.size() - 1, queue.remove(position));
|
||||||
recyclerAdapter.notifyItemMoved(position, queue.size() - 1);
|
recyclerAdapter.notifyItemMoved(position, queue.size() - 1);
|
||||||
DBWriter.moveQueueItemToBottom(selectedItem.getId(), true);
|
DBWriter.moveQueueItemToBottom(selectedItem.getId(), true);
|
||||||
return true;
|
return true;
|
||||||
default:
|
|
||||||
return FeedItemMenuHandler.onMenuItemClicked(this, item.getItemId(), selectedItem);
|
|
||||||
}
|
}
|
||||||
|
return FeedItemMenuHandler.onMenuItemClicked(this, item.getItemId(), selectedItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -172,31 +172,30 @@ public class SubscriptionFragment extends Fragment implements Toolbar.OnMenuItem
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onMenuItemClick(MenuItem item) {
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.refresh_item:
|
if (itemId == R.id.refresh_item) {
|
||||||
AutoUpdateManager.runImmediate(requireContext());
|
AutoUpdateManager.runImmediate(requireContext());
|
||||||
return true;
|
return true;
|
||||||
case R.id.subscriptions_filter:
|
} else if (itemId == R.id.subscriptions_filter) {
|
||||||
SubscriptionsFilterDialog.showDialog(requireContext());
|
SubscriptionsFilterDialog.showDialog(requireContext());
|
||||||
return true;
|
return true;
|
||||||
case R.id.subscriptions_sort:
|
} else if (itemId == R.id.subscriptions_sort) {
|
||||||
FeedSortDialog.showDialog(requireContext());
|
FeedSortDialog.showDialog(requireContext());
|
||||||
return true;
|
return true;
|
||||||
case R.id.subscription_num_columns_2:
|
} else if (itemId == R.id.subscription_num_columns_2) {
|
||||||
setColumnNumber(2);
|
setColumnNumber(2);
|
||||||
return true;
|
return true;
|
||||||
case R.id.subscription_num_columns_3:
|
} else if (itemId == R.id.subscription_num_columns_3) {
|
||||||
setColumnNumber(3);
|
setColumnNumber(3);
|
||||||
return true;
|
return true;
|
||||||
case R.id.subscription_num_columns_4:
|
} else if (itemId == R.id.subscription_num_columns_4) {
|
||||||
setColumnNumber(4);
|
setColumnNumber(4);
|
||||||
return true;
|
return true;
|
||||||
case R.id.subscription_num_columns_5:
|
} else if (itemId == R.id.subscription_num_columns_5) {
|
||||||
setColumnNumber(5);
|
setColumnNumber(5);
|
||||||
return true;
|
return true;
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setColumnNumber(int columns) {
|
private void setColumnNumber(int columns) {
|
||||||
@ -315,28 +314,27 @@ public class SubscriptionFragment extends Fragment implements Toolbar.OnMenuItem
|
|||||||
|
|
||||||
Feed feed = selectedFeed;
|
Feed feed = selectedFeed;
|
||||||
selectedFeed = null;
|
selectedFeed = null;
|
||||||
switch (item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.remove_all_new_flags_item:
|
if (itemId == R.id.remove_all_new_flags_item) {
|
||||||
displayConfirmationDialog(
|
displayConfirmationDialog(
|
||||||
R.string.remove_all_new_flags_label,
|
R.string.remove_all_new_flags_label,
|
||||||
R.string.remove_all_new_flags_confirmation_msg,
|
R.string.remove_all_new_flags_confirmation_msg,
|
||||||
() -> DBWriter.removeFeedNewFlag(feed.getId()));
|
() -> DBWriter.removeFeedNewFlag(feed.getId()));
|
||||||
return true;
|
return true;
|
||||||
case R.id.mark_all_read_item:
|
} else if (itemId == R.id.mark_all_read_item) {
|
||||||
displayConfirmationDialog(
|
displayConfirmationDialog(
|
||||||
R.string.mark_all_read_label,
|
R.string.mark_all_read_label,
|
||||||
R.string.mark_all_read_confirmation_msg,
|
R.string.mark_all_read_confirmation_msg,
|
||||||
() -> DBWriter.markFeedRead(feed.getId()));
|
() -> DBWriter.markFeedRead(feed.getId()));
|
||||||
return true;
|
return true;
|
||||||
case R.id.rename_item:
|
} else if (itemId == R.id.rename_item) {
|
||||||
new RenameFeedDialog(getActivity(), feed).show();
|
new RenameFeedDialog(getActivity(), feed).show();
|
||||||
return true;
|
return true;
|
||||||
case R.id.remove_item:
|
} else if (itemId == R.id.remove_item) {
|
||||||
RemoveFeedDialog.show(getContext(), feed, null);
|
RemoveFeedDialog.show(getContext(), feed, null);
|
||||||
return true;
|
return true;
|
||||||
default:
|
|
||||||
return super.onContextItemSelected(item);
|
|
||||||
}
|
}
|
||||||
|
return super.onContextItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> void displayConfirmationDialog(@StringRes int title, @StringRes int message, Callable<? extends T> task) {
|
private <T> void displayConfirmationDialog(@StringRes int title, @StringRes int message, Callable<? extends T> task) {
|
||||||
|
@ -142,17 +142,13 @@ public class FeedItemMenuHandler {
|
|||||||
@NonNull FeedItem selectedItem) {
|
@NonNull FeedItem selectedItem) {
|
||||||
|
|
||||||
@NonNull Context context = fragment.requireContext();
|
@NonNull Context context = fragment.requireContext();
|
||||||
switch (menuItemId) {
|
if (menuItemId == R.id.skip_episode_item) {
|
||||||
case R.id.skip_episode_item:
|
|
||||||
IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SKIP_CURRENT_EPISODE);
|
IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SKIP_CURRENT_EPISODE);
|
||||||
break;
|
} else if (menuItemId == R.id.remove_item) {
|
||||||
case R.id.remove_item:
|
|
||||||
DBWriter.deleteFeedMediaOfItem(context, selectedItem.getMedia().getId());
|
DBWriter.deleteFeedMediaOfItem(context, selectedItem.getMedia().getId());
|
||||||
break;
|
} else if (menuItemId == R.id.remove_new_flag_item) {
|
||||||
case R.id.remove_new_flag_item:
|
|
||||||
removeNewFlagWithUndo(fragment, selectedItem);
|
removeNewFlagWithUndo(fragment, selectedItem);
|
||||||
break;
|
} else if (menuItemId == R.id.mark_read_item) {
|
||||||
case R.id.mark_read_item:
|
|
||||||
selectedItem.setPlayed(true);
|
selectedItem.setPlayed(true);
|
||||||
DBWriter.markItemPlayed(selectedItem, FeedItem.PLAYED, true);
|
DBWriter.markItemPlayed(selectedItem, FeedItem.PLAYED, true);
|
||||||
if (GpodnetPreferences.loggedIn()) {
|
if (GpodnetPreferences.loggedIn()) {
|
||||||
@ -168,8 +164,7 @@ public class FeedItemMenuHandler {
|
|||||||
SyncService.enqueueEpisodeAction(context, actionPlay);
|
SyncService.enqueueEpisodeAction(context, actionPlay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
} else if (menuItemId == R.id.mark_unread_item) {
|
||||||
case R.id.mark_unread_item:
|
|
||||||
selectedItem.setPlayed(false);
|
selectedItem.setPlayed(false);
|
||||||
DBWriter.markItemPlayed(selectedItem, FeedItem.UNPLAYED, false);
|
DBWriter.markItemPlayed(selectedItem, FeedItem.UNPLAYED, false);
|
||||||
if (GpodnetPreferences.loggedIn() && selectedItem.getMedia() != null) {
|
if (GpodnetPreferences.loggedIn() && selectedItem.getMedia() != null) {
|
||||||
@ -178,35 +173,27 @@ public class FeedItemMenuHandler {
|
|||||||
.build();
|
.build();
|
||||||
SyncService.enqueueEpisodeAction(context, actionNew);
|
SyncService.enqueueEpisodeAction(context, actionNew);
|
||||||
}
|
}
|
||||||
break;
|
} else if (menuItemId == R.id.add_to_queue_item) {
|
||||||
case R.id.add_to_queue_item:
|
|
||||||
DBWriter.addQueueItem(context, selectedItem);
|
DBWriter.addQueueItem(context, selectedItem);
|
||||||
break;
|
} else if (menuItemId == R.id.remove_from_queue_item) {
|
||||||
case R.id.remove_from_queue_item:
|
|
||||||
DBWriter.removeQueueItem(context, true, selectedItem);
|
DBWriter.removeQueueItem(context, true, selectedItem);
|
||||||
break;
|
} else if (menuItemId == R.id.add_to_favorites_item) {
|
||||||
case R.id.add_to_favorites_item:
|
|
||||||
DBWriter.addFavoriteItem(selectedItem);
|
DBWriter.addFavoriteItem(selectedItem);
|
||||||
break;
|
} else if (menuItemId == R.id.remove_from_favorites_item) {
|
||||||
case R.id.remove_from_favorites_item:
|
|
||||||
DBWriter.removeFavoriteItem(selectedItem);
|
DBWriter.removeFavoriteItem(selectedItem);
|
||||||
break;
|
} else if (menuItemId == R.id.reset_position) {
|
||||||
case R.id.reset_position:
|
|
||||||
selectedItem.getMedia().setPosition(0);
|
selectedItem.getMedia().setPosition(0);
|
||||||
if (PlaybackPreferences.getCurrentlyPlayingFeedMediaId() == selectedItem.getMedia().getId()) {
|
if (PlaybackPreferences.getCurrentlyPlayingFeedMediaId() == selectedItem.getMedia().getId()) {
|
||||||
PlaybackPreferences.writeNoMediaPlaying();
|
PlaybackPreferences.writeNoMediaPlaying();
|
||||||
IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE);
|
IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SHUTDOWN_PLAYBACK_SERVICE);
|
||||||
}
|
}
|
||||||
DBWriter.markItemPlayed(selectedItem, FeedItem.UNPLAYED, true);
|
DBWriter.markItemPlayed(selectedItem, FeedItem.UNPLAYED, true);
|
||||||
break;
|
} else if (menuItemId == R.id.visit_website_item) {
|
||||||
case R.id.visit_website_item:
|
|
||||||
IntentUtils.openInBrowser(context, FeedItemUtil.getLinkWithFallback(selectedItem));
|
IntentUtils.openInBrowser(context, FeedItemUtil.getLinkWithFallback(selectedItem));
|
||||||
break;
|
} else if (menuItemId == R.id.share_item) {
|
||||||
case R.id.share_item:
|
|
||||||
ShareDialog shareDialog = ShareDialog.newInstance(selectedItem);
|
ShareDialog shareDialog = ShareDialog.newInstance(selectedItem);
|
||||||
shareDialog.show((fragment.getActivity().getSupportFragmentManager()), "ShareEpisodeDialog");
|
shareDialog.show((fragment.getActivity().getSupportFragmentManager()), "ShareEpisodeDialog");
|
||||||
break;
|
} else {
|
||||||
default:
|
|
||||||
Log.d(TAG, "Unknown menuItemId: " + menuItemId);
|
Log.d(TAG, "Unknown menuItemId: " + menuItemId);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -60,20 +60,16 @@ public class FeedMenuHandler {
|
|||||||
*/
|
*/
|
||||||
public static boolean onOptionsItemClicked(final Context context, final MenuItem item,
|
public static boolean onOptionsItemClicked(final Context context, final MenuItem item,
|
||||||
final Feed selectedFeed) throws DownloadRequestException {
|
final Feed selectedFeed) throws DownloadRequestException {
|
||||||
switch (item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.refresh_item:
|
if (itemId == R.id.refresh_item) {
|
||||||
DBTasks.forceRefreshFeed(context, selectedFeed, true);
|
DBTasks.forceRefreshFeed(context, selectedFeed, true);
|
||||||
break;
|
} else if (itemId == R.id.refresh_complete_item) {
|
||||||
case R.id.refresh_complete_item:
|
|
||||||
DBTasks.forceRefreshCompleteFeed(context, selectedFeed);
|
DBTasks.forceRefreshCompleteFeed(context, selectedFeed);
|
||||||
break;
|
} else if (itemId == R.id.sort_items) {
|
||||||
case R.id.sort_items:
|
|
||||||
showSortDialog(context, selectedFeed);
|
showSortDialog(context, selectedFeed);
|
||||||
break;
|
} else if (itemId == R.id.filter_items) {
|
||||||
case R.id.filter_items:
|
|
||||||
showFilterDialog(context, selectedFeed);
|
showFilterDialog(context, selectedFeed);
|
||||||
break;
|
} else if (itemId == R.id.mark_all_read_item) {
|
||||||
case R.id.mark_all_read_item:
|
|
||||||
ConfirmationDialog conDialog = new ConfirmationDialog(context,
|
ConfirmationDialog conDialog = new ConfirmationDialog(context,
|
||||||
R.string.mark_all_read_label,
|
R.string.mark_all_read_label,
|
||||||
R.string.mark_all_read_feed_confirmation_msg) {
|
R.string.mark_all_read_feed_confirmation_msg) {
|
||||||
@ -86,17 +82,13 @@ public class FeedMenuHandler {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
conDialog.createNewDialog().show();
|
conDialog.createNewDialog().show();
|
||||||
break;
|
} else if (itemId == R.id.visit_website_item) {
|
||||||
case R.id.visit_website_item:
|
|
||||||
IntentUtils.openInBrowser(context, selectedFeed.getLink());
|
IntentUtils.openInBrowser(context, selectedFeed.getLink());
|
||||||
break;
|
} else if (itemId == R.id.share_link_item) {
|
||||||
case R.id.share_link_item:
|
|
||||||
ShareUtils.shareFeedlink(context, selectedFeed);
|
ShareUtils.shareFeedlink(context, selectedFeed);
|
||||||
break;
|
} else if (itemId == R.id.share_download_url_item) {
|
||||||
case R.id.share_download_url_item:
|
|
||||||
ShareUtils.shareFeedDownloadLink(context, selectedFeed);
|
ShareUtils.shareFeedDownloadLink(context, selectedFeed);
|
||||||
break;
|
} else {
|
||||||
default:
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -123,33 +123,28 @@ public class ShownotesWebView extends WebView implements View.OnLongClickListene
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (item.getItemId()) {
|
final int itemId = item.getItemId();
|
||||||
case R.id.open_in_browser_item:
|
if (itemId == R.id.open_in_browser_item) {
|
||||||
IntentUtils.openInBrowser(getContext(), selectedUrl);
|
IntentUtils.openInBrowser(getContext(), selectedUrl);
|
||||||
break;
|
} else if (itemId == R.id.share_url_item) {
|
||||||
case R.id.share_url_item:
|
|
||||||
ShareUtils.shareLink(getContext(), selectedUrl);
|
ShareUtils.shareLink(getContext(), selectedUrl);
|
||||||
break;
|
} else if (itemId == R.id.copy_url_item) {
|
||||||
case R.id.copy_url_item:
|
|
||||||
ClipData clipData = ClipData.newPlainText(selectedUrl, selectedUrl);
|
ClipData clipData = ClipData.newPlainText(selectedUrl, selectedUrl);
|
||||||
android.content.ClipboardManager cm = (android.content.ClipboardManager) getContext()
|
ClipboardManager cm = (ClipboardManager) getContext()
|
||||||
.getSystemService(Context.CLIPBOARD_SERVICE);
|
.getSystemService(Context.CLIPBOARD_SERVICE);
|
||||||
cm.setPrimaryClip(clipData);
|
cm.setPrimaryClip(clipData);
|
||||||
Snackbar s = Snackbar.make(this, R.string.copied_url_msg, Snackbar.LENGTH_LONG);
|
Snackbar s = Snackbar.make(this, R.string.copied_url_msg, Snackbar.LENGTH_LONG);
|
||||||
ViewCompat.setElevation(s.getView(), 100);
|
ViewCompat.setElevation(s.getView(), 100);
|
||||||
s.show();
|
s.show();
|
||||||
break;
|
} else if (itemId == R.id.go_to_position_item) {
|
||||||
case R.id.go_to_position_item:
|
|
||||||
if (Timeline.isTimecodeLink(selectedUrl) && timecodeSelectedListener != null) {
|
if (Timeline.isTimecodeLink(selectedUrl) && timecodeSelectedListener != null) {
|
||||||
timecodeSelectedListener.accept(Timeline.getTimecodeLinkTime(selectedUrl));
|
timecodeSelectedListener.accept(Timeline.getTimecodeLinkTime(selectedUrl));
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "Selected go_to_position_item, but URL was no timecode link: " + selectedUrl);
|
Log.e(TAG, "Selected go_to_position_item, but URL was no timecode link: " + selectedUrl);
|
||||||
}
|
}
|
||||||
break;
|
} else {
|
||||||
default:
|
|
||||||
selectedUrl = null;
|
selectedUrl = null;
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
selectedUrl = null;
|
selectedUrl = null;
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:orientation="horizontal"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
tools:viewBindingIgnore="true">
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/navDrawerFragment"
|
android:id="@+id/navDrawerFragment"
|
||||||
@ -33,11 +34,11 @@
|
|||||||
tools:background="@android:color/holo_red_dark" />
|
tools:background="@android:color/holo_red_dark" />
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:elevation="8dp"
|
|
||||||
android:id="@+id/audioplayerFragment"
|
android:id="@+id/audioplayerFragment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?android:attr/windowBackground"
|
android:background="?android:attr/windowBackground"
|
||||||
|
android:elevation="8dp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_behavior="de.danoeh.antennapod.view.LockableBottomSheetBehavior" />
|
app:layout_behavior="de.danoeh.antennapod.view.LockableBottomSheetBehavior" />
|
||||||
|
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.drawerlayout.widget.DrawerLayout
|
<androidx.drawerlayout.widget.DrawerLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/drawer_layout"
|
android:id="@+id/drawer_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:ignore="InconsistentLayout">
|
tools:ignore="InconsistentLayout"
|
||||||
<!-- InconsistentLayout: Tablet layout does not have a drawer -->
|
tools:viewBindingIgnore="true">
|
||||||
|
|
||||||
|
<!-- InconsistentLayout: Tablet layout does not have a drawer -->
|
||||||
|
<!-- viewBindingIgnore: Configurations for main.xml must
|
||||||
|
agree on the root element's ID -->
|
||||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
android:id="@+id/overview_coordinator_layout"
|
android:id="@+id/overview_coordinator_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -23,11 +26,11 @@
|
|||||||
tools:background="@android:color/holo_red_dark" />
|
tools:background="@android:color/holo_red_dark" />
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:elevation="8dp"
|
|
||||||
android:id="@+id/audioplayerFragment"
|
android:id="@+id/audioplayerFragment"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="?android:attr/windowBackground"
|
android:background="?android:attr/windowBackground"
|
||||||
|
android:elevation="8dp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_behavior="de.danoeh.antennapod.view.LockableBottomSheetBehavior" />
|
app:layout_behavior="de.danoeh.antennapod.view.LockableBottomSheetBehavior" />
|
||||||
|
|
||||||
|
@ -2,12 +2,12 @@ buildscript {
|
|||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven { url "https://plugins.gradle.org/m2/" }
|
gradlePluginPortal()
|
||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.6.3'
|
classpath 'com.android.tools.build:gradle:4.1.3'
|
||||||
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:1.0.2'
|
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:1.0.4'
|
||||||
classpath 'de.timfreiheit.resourceplaceholders:placeholders:0.3'
|
classpath 'de.timfreiheit.resourceplaceholders:placeholders:0.3'
|
||||||
classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.7.0"
|
classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.7.0"
|
||||||
}
|
}
|
||||||
|
@ -52,8 +52,8 @@ android {
|
|||||||
checkGeneratedSources = true
|
checkGeneratedSources = true
|
||||||
}
|
}
|
||||||
|
|
||||||
viewBinding {
|
buildFeatures {
|
||||||
enabled = true
|
viewBinding true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools" package="de.danoeh.antennapod.core">
|
xmlns:tools="http://schemas.android.com/tools" package="de.danoeh.antennapod.core">
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||||
|
tools:ignore="ScopedStorage" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
@ -52,4 +53,16 @@
|
|||||||
android:exported="true"/>
|
android:exported="true"/>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
|
<queries>
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.SEND" />
|
||||||
|
<data android:mimeType="*/*" />
|
||||||
|
</intent>
|
||||||
|
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<data android:scheme="https" />
|
||||||
|
</intent>
|
||||||
|
</queries>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user