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