diff options
206 files changed, 1168 insertions, 1625 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java b/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java index 3ca7906cb..a880c330b 100644 --- a/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java +++ b/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java @@ -11,6 +11,8 @@ import de.danoeh.antennapod.core.gpoddernet.GpodnetServiceException; import de.danoeh.antennapod.core.gpoddernet.model.GpodnetDevice; import de.danoeh.antennapod.core.gpoddernet.model.GpodnetTag; +import static java.util.Collections.singletonList; + /** * Test class for GpodnetService */ @@ -38,14 +40,14 @@ public class GPodnetServiceTest extends AndroidTestCase { public void testUploadSubscription() throws GpodnetServiceException { authenticate(); - ArrayList<String> l = new ArrayList<String>(); + ArrayList<String> l = new ArrayList<>(); l.add("http://bitsundso.de/feed"); service.uploadSubscriptions(USER, "radio", l); } public void testUploadSubscription2() throws GpodnetServiceException { authenticate(); - ArrayList<String> l = new ArrayList<String>(); + ArrayList<String> l = new ArrayList<>(); l.add("http://bitsundso.de/feed"); l.add("http://gamesundso.de/feed"); service.uploadSubscriptions(USER, "radio", l); @@ -55,7 +57,7 @@ public class GPodnetServiceTest extends AndroidTestCase { authenticate(); String[] URLS = {"http://bitsundso.de/feed", "http://gamesundso.de/feed", "http://cre.fm/feed/mp3/", "http://freakshow.fm/feed/m4a/"}; List<String> subscriptions = Arrays.asList(URLS[0], URLS[1]); - List<String> removed = Arrays.asList(URLS[0]); + List<String> removed = singletonList(URLS[0]); List<String> added = Arrays.asList(URLS[2], URLS[3]); service.uploadSubscriptions(USER, "radio", subscriptions); service.uploadChanges(USER, "radio", added, removed); diff --git a/app/src/androidTest/java/de/test/antennapod/handler/FeedHandlerTest.java b/app/src/androidTest/java/de/test/antennapod/handler/FeedHandlerTest.java index ee454ce8a..39abe4b7a 100644 --- a/app/src/androidTest/java/de/test/antennapod/handler/FeedHandlerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/handler/FeedHandlerTest.java @@ -32,8 +32,8 @@ import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator; public class FeedHandlerTest extends InstrumentationTestCase { private static final String FEEDS_DIR = "testfeeds"; - File file = null; - OutputStream outputStream = null; + private File file = null; + private OutputStream outputStream = null; protected void setUp() throws Exception { super.setUp(); @@ -165,7 +165,7 @@ public class FeedHandlerTest extends InstrumentationTestCase { Feed feed = new Feed(0, null, "title", "http://example.com", "This is the description", "http://example.com/payment", "Daniel", "en", null, "http://example.com/feed", image, file.getAbsolutePath(), "http://example.com/feed", true); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < numItems; i++) { FeedItem item = new FeedItem(0, "item-" + i, "http://example.com/item-" + i, diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java b/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java index 5e5eb1e8b..5cd4e9906 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java @@ -27,12 +27,12 @@ import static de.test.antennapod.storage.DBTestUtils.saveFeedlist; public class DBCleanupTests extends InstrumentationTestCase { private static final String TAG = "DBTasksTest"; - protected static final int EPISODE_CACHE_SIZE = 5; + static final int EPISODE_CACHE_SIZE = 5; private final int cleanupAlgorithm; - protected Context context; + Context context; - protected File destFolder; + private File destFolder; public DBCleanupTests() { this.cleanupAlgorithm = UserPreferences.EPISODE_CLEANUP_DEFAULT; @@ -104,9 +104,9 @@ public class DBCleanupTests extends InstrumentationTestCase { } } - protected void populateItems(final int numItems, Feed feed, List<FeedItem> items, - List<File> files, int itemState, boolean addToQueue, - boolean addToFavorites) throws IOException { + void populateItems(final int numItems, Feed feed, List<FeedItem> items, + List<File> files, int itemState, boolean addToQueue, + boolean addToFavorites) throws IOException { for (int i = 0; i < numItems; i++) { Date itemDate = new Date(numItems - i); Date playbackCompletionDate = null; @@ -145,9 +145,9 @@ public class DBCleanupTests extends InstrumentationTestCase { final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2; Feed feed = new Feed("url", null, "title"); - List<FeedItem> items = new ArrayList<FeedItem>(); + List<FeedItem> items = new ArrayList<>(); feed.setItems(items); - List<File> files = new ArrayList<File>(); + List<File> files = new ArrayList<>(); populateItems(NUM_ITEMS, feed, items, files, FeedItem.UNPLAYED, false, false); DBTasks.performAutoCleanup(context); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java index 785d32e93..93a9408b7 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java @@ -18,6 +18,8 @@ import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.PodDBAdapter; +import static java.util.Collections.singletonList; + /** * Test class for DBTasks */ @@ -100,7 +102,7 @@ public class DBTasksTest extends InstrumentationTestCase { assertTrue(feed.getId() != 0); final long feedID = feed.getId(); feed.setId(0); - List<Long> itemIDs = new ArrayList<Long>(); + List<Long> itemIDs = new ArrayList<>(); for (FeedItem item : feed.getItems()) { assertTrue(item.getId() != 0); itemIDs.add(item.getId()); @@ -125,7 +127,7 @@ public class DBTasksTest extends InstrumentationTestCase { public void testUpdateFeedMediaUrlResetState() { final Feed feed = new Feed("url", null, "title"); FeedItem item = new FeedItem(0, "item", "id", "link", new Date(), FeedItem.PLAYED, feed); - feed.setItems(Arrays.asList(item)); + feed.setItems(singletonList(item)); PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); @@ -138,7 +140,7 @@ public class DBTasksTest extends InstrumentationTestCase { FeedMedia media = new FeedMedia(item, "url", 1024, "mime/type"); item.setMedia(media); - feed.setItems(Arrays.asList(item)); + feed.setItems(singletonList(item)); final Feed newFeed = DBTasks.updateFeed(context, feed)[0]; assertTrue(feed != newFeed); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java index d02efa521..c9c715a86 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java @@ -19,7 +19,7 @@ import de.danoeh.antennapod.core.util.flattr.FlattrStatus; /** * Utility methods for DB* tests. */ -public class DBTestUtils { +class DBTestUtils { /** * Use this method when tests don't involve chapters. diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java index 40083e507..b1cc807ea 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java @@ -138,7 +138,7 @@ public class DBWriterTest extends InstrumentationTestCase { image.setOwner(feed); feed.setImage(image); - List<File> itemFiles = new ArrayList<File>(); + List<File> itemFiles = new ArrayList<>(); // create items with downloaded media files for (int i = 0; i < 10; i++) { FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed, true); @@ -151,7 +151,7 @@ public class DBWriterTest extends InstrumentationTestCase { FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", true, null, 0, 0); item.setMedia(media); - item.setChapters(new ArrayList<Chapter>()); + item.setChapters(new ArrayList<>()); item.getChapters().add(new SimpleChapter(0, "item " + i, item, "example.com")); } @@ -207,7 +207,7 @@ public class DBWriterTest extends InstrumentationTestCase { feed.setImage(null); - List<File> itemFiles = new ArrayList<File>(); + List<File> itemFiles = new ArrayList<>(); // create items with downloaded media files for (int i = 0; i < 10; i++) { FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed); @@ -418,7 +418,7 @@ public class DBWriterTest extends InstrumentationTestCase { image.setOwner(feed); feed.setImage(image); - List<File> itemFiles = new ArrayList<File>(); + List<File> itemFiles = new ArrayList<>(); // create items with downloaded media files for (int i = 0; i < 10; i++) { FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed); @@ -444,7 +444,7 @@ public class DBWriterTest extends InstrumentationTestCase { } - List<FeedItem> queue = new ArrayList<FeedItem>(); + List<FeedItem> queue = new ArrayList<>(); queue.addAll(feed.getItems()); adapter.open(); adapter.setQueue(queue); @@ -482,7 +482,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", null, "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -490,7 +490,7 @@ public class DBWriterTest extends InstrumentationTestCase { image.setOwner(feed); feed.setImage(image); - List<File> itemFiles = new ArrayList<File>(); + List<File> itemFiles = new ArrayList<>(); // create items with downloaded media files for (int i = 0; i < 10; i++) { FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed); @@ -539,7 +539,7 @@ public class DBWriterTest extends InstrumentationTestCase { private FeedMedia playbackHistorySetup(Date playbackCompletionDate) { final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", null, "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); FeedMedia media = new FeedMedia(0, item, 10, 0, 1, "mime", null, "url", false, playbackCompletionDate, 0, 0); feed.getItems().add(item); @@ -598,7 +598,7 @@ public class DBWriterTest extends InstrumentationTestCase { for (FeedItem item : feed.getItems()) { assertTrue(item.getId() != 0); } - List<Future<?>> futures = new ArrayList<Future<?>>(); + List<Future<?>> futures = new ArrayList<>(); for (FeedItem item : feed.getItems()) { futures.add(DBWriter.addQueueItem(context, item)); } @@ -791,7 +791,7 @@ public class DBWriterTest extends InstrumentationTestCase { public void testMarkFeedRead() throws InterruptedException, ExecutionException, TimeoutException { final int NUM_ITEMS = 10; Feed feed = new Feed("url", null, "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.UNPLAYED, feed); feed.getItems().add(item); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java index aec0265a6..6156da926 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java @@ -96,7 +96,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv public void testClickNavDrawer() throws Exception { uiTestUtils.addLocalFeedData(false); - UserPreferences.setHiddenDrawerItems(new ArrayList<String>()); + UserPreferences.setHiddenDrawerItems(new ArrayList<>()); // queue openNavDrawer(); @@ -159,7 +159,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv } public void testDrawerPreferencesHideSomeElements() { - UserPreferences.setHiddenDrawerItems(new ArrayList<String>()); + UserPreferences.setHiddenDrawerItems(new ArrayList<>()); openNavDrawer(); solo.clickLongOnText(solo.getString(R.string.queue_label)); solo.waitForDialogToOpen(); @@ -190,7 +190,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv } public void testDrawerPreferencesHideAllElements() { - UserPreferences.setHiddenDrawerItems(new ArrayList<String>()); + UserPreferences.setHiddenDrawerItems(new ArrayList<>()); String[] titles = getInstrumentation().getTargetContext().getResources().getStringArray(R.array.nav_drawer_titles); openNavDrawer(); @@ -209,7 +209,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv } public void testDrawerPreferencesHideCurrentElement() { - UserPreferences.setHiddenDrawerItems(new ArrayList<String>()); + UserPreferences.setHiddenDrawerItems(new ArrayList<>()); openNavDrawer(); String downloads = solo.getString(R.string.downloads_label); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java index bfbeedd83..293ed2848 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java @@ -33,8 +33,8 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter; public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActivity> { private static final String TAG = PlaybackTest.class.getSimpleName(); - public static final int EPISODES_DRAWER_LIST_INDEX = 1; - public static final int QUEUE_DRAWER_LIST_INDEX = 0; + private static final int EPISODES_DRAWER_LIST_INDEX = 1; + private static final int QUEUE_DRAWER_LIST_INDEX = 0; private Solo solo; private UITestUtils uiTestUtils; diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java index 661c2200b..74d59abd7 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java @@ -30,8 +30,8 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter; public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity> { private static final String TAG = PlaybackTest.class.getSimpleName(); - public static final int EPISODES_DRAWER_LIST_INDEX = 1; - public static final int QUEUE_DRAWER_LIST_INDEX = 0; + private static final int EPISODES_DRAWER_LIST_INDEX = 1; + private static final int QUEUE_DRAWER_LIST_INDEX = 0; private Solo solo; private UITestUtils uiTestUtils; diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java index e18c9ca16..fb74378c7 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java @@ -96,10 +96,10 @@ public class PreferencesTest extends ActivityInstrumentationTestCase2<Preference solo.clickOnText(solo.getString(R.string.pref_compact_notification_buttons_title)); solo.waitForDialogToOpen(1000); // First uncheck every checkbox - for (int i=0; i<buttons.length; i++) { - assertTrue(solo.searchText(buttons[i])); - if (solo.isTextChecked(buttons[i])) { - solo.clickOnText(buttons[i]); + for (String button : buttons) { + assertTrue(solo.searchText(button)); + if (solo.isTextChecked(button)) { + solo.clickOnText(button); } } // Now try to check all checkboxes @@ -110,8 +110,8 @@ public class PreferencesTest extends ActivityInstrumentationTestCase2<Preference assertTrue(!solo.isTextChecked(buttons[2])); solo.clickOnText(solo.getString(R.string.confirm_label)); solo.waitForDialogToClose(1000); - assertTrue(solo.waitForCondition(() -> UserPreferences.showRewindOnCompactNotification(), Timeout.getLargeTimeout())); - assertTrue(solo.waitForCondition(() -> UserPreferences.showFastForwardOnCompactNotification(), Timeout.getLargeTimeout())); + assertTrue(solo.waitForCondition(UserPreferences::showRewindOnCompactNotification, Timeout.getLargeTimeout())); + assertTrue(solo.waitForCondition(UserPreferences::showFastForwardOnCompactNotification, Timeout.getLargeTimeout())); assertTrue(solo.waitForCondition(() -> !UserPreferences.showSkipOnCompactNotification(), Timeout.getLargeTimeout())); } @@ -134,7 +134,7 @@ public class PreferencesTest extends ActivityInstrumentationTestCase2<Preference public void testHeadPhonesReconnect() { if(UserPreferences.isPauseOnHeadsetDisconnect() == false) { solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title)); - assertTrue(solo.waitForCondition(() -> UserPreferences.isPauseOnHeadsetDisconnect(), Timeout.getLargeTimeout())); + assertTrue(solo.waitForCondition(UserPreferences::isPauseOnHeadsetDisconnect, Timeout.getLargeTimeout())); } final boolean unpauseOnHeadsetReconnect = UserPreferences.isUnpauseOnHeadsetReconnect(); solo.clickOnText(solo.getString(R.string.pref_unpauseOnHeadsetReconnect_title)); @@ -146,7 +146,7 @@ public class PreferencesTest extends ActivityInstrumentationTestCase2<Preference public void testBluetoothReconnect() { if(UserPreferences.isPauseOnHeadsetDisconnect() == false) { solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title)); - assertTrue(solo.waitForCondition(() -> UserPreferences.isPauseOnHeadsetDisconnect(), Timeout.getLargeTimeout())); + assertTrue(solo.waitForCondition(UserPreferences::isPauseOnHeadsetDisconnect, Timeout.getLargeTimeout())); } final boolean unpauseOnBluetoothReconnect = UserPreferences.isUnpauseOnBluetoothReconnect(); solo.clickOnText(solo.getString(R.string.pref_unpauseOnBluetoothReconnect_title)); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java index eeb001ea1..3af22af9d 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -1,9 +1,7 @@ package de.test.antennapod.ui; -import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; -import android.os.Build; import android.util.Log; import junit.framework.Assert; @@ -20,7 +18,6 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; -import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.core.event.QueueEvent; import de.danoeh.antennapod.core.feed.EventDistributor; @@ -39,25 +36,25 @@ import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator; * Utility methods for UI tests. * Starts a web server that hosts feeds, episodes and images. */ -public class UITestUtils { +class UITestUtils { private static final String TAG = UITestUtils.class.getSimpleName(); private static final String DATA_FOLDER = "test/UITestUtils"; - public static final int NUM_FEEDS = 5; - public static final int NUM_ITEMS_PER_FEED = 10; + private static final int NUM_FEEDS = 5; + private static final int NUM_ITEMS_PER_FEED = 10; - public static final String TEST_FILE_NAME = "3sec.mp3"; + private static final String TEST_FILE_NAME = "3sec.mp3"; - private Context context; - private HTTPBin server = new HTTPBin(); + private final Context context; + private final HTTPBin server = new HTTPBin(); private File destDir; private File hostedFeedDir; private File hostedMediaDir; - public List<Feed> hostedFeeds = new ArrayList<Feed>(); + public final List<Feed> hostedFeeds = new ArrayList<>(); public UITestUtils(Context context) { this.context = context; @@ -147,7 +144,7 @@ public class UITestUtils { image.setOwner(feed); // create items - List<FeedItem> items = new ArrayList<FeedItem>(); + List<FeedItem> items = new ArrayList<>(); for (int j = 0; j < NUM_ITEMS_PER_FEED; j++) { FeedItem item = new FeedItem(j, "Feed " + (i+1) + ": Item " + (j+1), "item" + j, "http://example.com/feed" + i + "/item/" + j, new Date(), FeedItem.UNPLAYED, feed); diff --git a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java index 2f2c3fe5b..cde93fd7e 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java +++ b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java @@ -45,11 +45,11 @@ public class HTTPBin extends NanoHTTPD { private static final String MIME_HTML = "text/html"; private static final String MIME_PLAIN = "text/plain"; - private List<File> servedFiles; + private final List<File> servedFiles; public HTTPBin() { super(PORT); - this.servedFiles = new ArrayList<File>(); + this.servedFiles = new ArrayList<>(); } /** diff --git a/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java b/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java index 28ff6694e..61ff65809 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java +++ b/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java @@ -88,15 +88,15 @@ public abstract class NanoHTTPD { * This is required as the Keep-Alive HTTP connections would otherwise * block the socket reading thread forever (or as long the browser is open). */ - public static final int SOCKET_READ_TIMEOUT = 5000; + private static final int SOCKET_READ_TIMEOUT = 5000; /** * Common mime type for dynamic content: plain text */ - public static final String MIME_PLAINTEXT = "text/plain"; + private static final String MIME_PLAINTEXT = "text/plain"; /** * Common mime type for dynamic content: html */ - public static final String MIME_HTML = "text/html"; + private static final String MIME_HTML = "text/html"; /** * Pseudo-Parameter to use to store the actual query string in the parameters map for later re-processing. */ @@ -104,7 +104,7 @@ public abstract class NanoHTTPD { private final String hostname; private final int myPort; private ServerSocket myServerSocket; - private Set<Socket> openConnections = new HashSet<Socket>(); + private final Set<Socket> openConnections = new HashSet<>(); private Thread myThread; /** * Pluggable strategy for asynchronously executing requests. @@ -118,14 +118,14 @@ public abstract class NanoHTTPD { /** * Constructs an HTTP server on given port. */ - public NanoHTTPD(int port) { + NanoHTTPD(int port) { this(null, port); } /** * Constructs an HTTP server on given hostname and port. */ - public NanoHTTPD(String hostname, int port) { + private NanoHTTPD(String hostname, int port) { this.hostname = hostname; this.myPort = port; setTempFileManagerFactory(new DefaultTempFileManagerFactory()); @@ -168,44 +168,38 @@ public abstract class NanoHTTPD { myServerSocket = new ServerSocket(); myServerSocket.bind((hostname != null) ? new InetSocketAddress(hostname, myPort) : new InetSocketAddress(myPort)); - myThread = new Thread(new Runnable() { - @Override - public void run() { - do { - try { - final Socket finalAccept = myServerSocket.accept(); - registerConnection(finalAccept); - finalAccept.setSoTimeout(SOCKET_READ_TIMEOUT); - final InputStream inputStream = finalAccept.getInputStream(); - asyncRunner.exec(new Runnable() { - @Override - public void run() { - OutputStream outputStream = null; - try { - outputStream = finalAccept.getOutputStream(); - TempFileManager tempFileManager = tempFileManagerFactory.create(); - HTTPSession session = new HTTPSession(tempFileManager, inputStream, outputStream, finalAccept.getInetAddress()); - while (!finalAccept.isClosed()) { - session.execute(); - } - } catch (Exception e) { - // When the socket is closed by the client, we throw our own SocketException - // to break the "keep alive" loop above. - if (!(e instanceof SocketException && "NanoHttpd Shutdown".equals(e.getMessage()))) { - e.printStackTrace(); - } - } finally { - safeClose(outputStream); - safeClose(inputStream); - safeClose(finalAccept); - unRegisterConnection(finalAccept); - } + myThread = new Thread(() -> { + do { + try { + final Socket finalAccept = myServerSocket.accept(); + registerConnection(finalAccept); + finalAccept.setSoTimeout(SOCKET_READ_TIMEOUT); + final InputStream inputStream = finalAccept.getInputStream(); + asyncRunner.exec(() -> { + OutputStream outputStream = null; + try { + outputStream = finalAccept.getOutputStream(); + TempFileManager tempFileManager = tempFileManagerFactory.create(); + HTTPSession session = new HTTPSession(tempFileManager, inputStream, outputStream, finalAccept.getInetAddress()); + while (!finalAccept.isClosed()) { + session.execute(); } - }); - } catch (IOException e) { - } - } while (!myServerSocket.isClosed()); - } + } catch (Exception e) { + // When the socket is closed by the client, we throw our own SocketException + // to break the "keep alive" loop above. + if (!(e instanceof SocketException && "NanoHttpd Shutdown".equals(e.getMessage()))) { + e.printStackTrace(); + } + } finally { + safeClose(outputStream); + safeClose(inputStream); + safeClose(finalAccept); + unRegisterConnection(finalAccept); + } + }); + } catch (IOException e) { + } + } while (!myServerSocket.isClosed()); }); myThread.setDaemon(true); myThread.setName("NanoHttpd Main Listener"); @@ -232,7 +226,7 @@ public abstract class NanoHTTPD { * * @param socket the {@link Socket} for the connection. */ - public synchronized void registerConnection(Socket socket) { + private synchronized void registerConnection(Socket socket) { openConnections.add(socket); } @@ -242,14 +236,14 @@ public abstract class NanoHTTPD { * @param socket * the {@link Socket} for the connection. */ - public synchronized void unRegisterConnection(Socket socket) { + private synchronized void unRegisterConnection(Socket socket) { openConnections.remove(socket); } /** * Forcibly closes all connections that are open. */ - public synchronized void closeAllConnections() { + private synchronized void closeAllConnections() { for (Socket socket : openConnections) { safeClose(socket); } @@ -259,7 +253,7 @@ public abstract class NanoHTTPD { return myServerSocket == null ? -1 : myServerSocket.getLocalPort(); } - public final boolean wasStarted() { + private boolean wasStarted() { return myServerSocket != null && myThread != null; } @@ -294,7 +288,7 @@ public abstract class NanoHTTPD { * @param session The HTTP session * @return HTTP response, see class Response for details */ - public Response serve(IHTTPSession session) { + Response serve(IHTTPSession session) { Map<String, String> files = new ArrayMap<>(); Method method = session.getMethod(); if (Method.PUT.equals(method) || Method.POST.equals(method)) { @@ -318,7 +312,7 @@ public abstract class NanoHTTPD { * @param str the percent encoded <code>String</code> * @return expanded form of the input, for example "foo%20bar" becomes "foo bar" */ - protected String decodePercent(String str) { + private String decodePercent(String str) { String decoded = null; try { decoded = URLDecoder.decode(str, "UTF8"); @@ -347,8 +341,8 @@ public abstract class NanoHTTPD { * @param queryString a query string pulled from the URL. * @return a map of <code>String</code> (parameter name) to <code>List<String></code> (a list of the values supplied). */ - protected Map<String, List<String>> decodeParameters(String queryString) { - Map<String, List<String>> parms = new ArrayMap<String, List<String>>(); + private Map<String, List<String>> decodeParameters(String queryString) { + Map<String, List<String>> parms = new ArrayMap<>(); if (queryString != null) { StringTokenizer st = new StringTokenizer(queryString, "&"); while (st.hasMoreTokens()) { @@ -356,7 +350,7 @@ public abstract class NanoHTTPD { int sep = e.indexOf('='); String propertyName = (sep >= 0) ? decodePercent(e.substring(0, sep)).trim() : decodePercent(e).trim(); if (!parms.containsKey(propertyName)) { - parms.put(propertyName, new ArrayList<String>()); + parms.put(propertyName, new ArrayList<>()); } String propertyValue = (sep >= 0) ? decodePercent(e.substring(sep + 1)) : null; if (propertyValue != null) { @@ -378,7 +372,7 @@ public abstract class NanoHTTPD { * * @param asyncRunner new strategy for handling threads. */ - public void setAsyncRunner(AsyncRunner asyncRunner) { + private void setAsyncRunner(AsyncRunner asyncRunner) { this.asyncRunner = asyncRunner; } @@ -393,7 +387,7 @@ public abstract class NanoHTTPD { * * @param tempFileManagerFactory new strategy for handling temp files. */ - public void setTempFileManagerFactory(TempFileManagerFactory tempFileManagerFactory) { + private void setTempFileManagerFactory(TempFileManagerFactory tempFileManagerFactory) { this.tempFileManagerFactory = tempFileManagerFactory; } @@ -448,9 +442,9 @@ public abstract class NanoHTTPD { * themselves up when no longer needed.</p> */ public interface TempFile { - OutputStream open() throws Exception; + OutputStream open(); - void delete() throws Exception; + void delete(); String getName(); } @@ -490,7 +484,7 @@ public abstract class NanoHTTPD { public DefaultTempFileManager() { tmpdir = System.getProperty("java.io.tmpdir"); - tempFiles = new ArrayList<TempFile>(); + tempFiles = new ArrayList<>(); } @Override @@ -528,12 +522,12 @@ public abstract class NanoHTTPD { } @Override - public OutputStream open() throws Exception { + public OutputStream open() { return fstream; } @Override - public void delete() throws Exception { + public void delete() { safeClose(fstream); file.delete(); } @@ -563,7 +557,7 @@ public abstract class NanoHTTPD { /** * Headers for the HTTP response. Use addHeader() to add lines. */ - private Map<String, String> header = new ArrayMap<String, String>(); + private final Map<String, String> header = new ArrayMap<>(); /** * The request method that spawned this response. */ @@ -616,7 +610,7 @@ public abstract class NanoHTTPD { /** * Sends given response to the socket. */ - protected void send(OutputStream outputStream) { + void send(OutputStream outputStream) { String mime = mimeType; SimpleDateFormat gmtFrmt = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss 'GMT'", Locale.US); gmtFrmt.setTimeZone(TimeZone.getTimeZone("GMT")); @@ -661,13 +655,13 @@ public abstract class NanoHTTPD { } } - protected void sendContentLengthHeaderIfNotAlreadyPresent(PrintWriter pw, Map<String, String> header, int size) { + void sendContentLengthHeaderIfNotAlreadyPresent(PrintWriter pw, Map<String, String> header, int size) { if (!headerAlreadySent(header, "content-length")) { pw.print("Content-Length: "+ size +"\r\n"); } } - protected void sendConnectionHeaderIfNotAlreadyPresent(PrintWriter pw, Map<String, String> header) { + void sendConnectionHeaderIfNotAlreadyPresent(PrintWriter pw, Map<String, String> header) { if (!headerAlreadySent(header, "connection")) { pw.print("Connection: keep-alive\r\n"); } @@ -694,7 +688,7 @@ public abstract class NanoHTTPD { outputStream.write(buff, 0, read); outputStream.write(CRLF); } - outputStream.write(String.format("0\r\n\r\n").getBytes()); + outputStream.write("0\r\n\r\n".getBytes()); } private void sendAsFixedLength(OutputStream outputStream, int pending) throws IOException { @@ -844,7 +838,7 @@ public abstract class NanoHTTPD { public static final int BUFSIZE = 8192; private final TempFileManager tempFileManager; private final OutputStream outputStream; - private PushbackInputStream inputStream; + private final PushbackInputStream inputStream; private int splitbyte; private int rlen; private String uri; @@ -865,7 +859,7 @@ public abstract class NanoHTTPD { this.inputStream = new PushbackInputStream(inputStream, BUFSIZE); this.outputStream = outputStream; String remoteIp = inetAddress.isLoopbackAddress() || inetAddress.isAnyLocalAddress() ? "127.0.0.1" : inetAddress.getHostAddress().toString(); - headers = new ArrayMap<String, String>(); + headers = new ArrayMap<>(); headers.put("remote-addr", remoteIp); headers.put("http-client-ip", remoteIp); @@ -909,16 +903,16 @@ public abstract class NanoHTTPD { inputStream.unread(buf, splitbyte, rlen - splitbyte); } - parms = new ArrayMap<String, String>(); + parms = new ArrayMap<>(); if(null == headers) { - headers = new ArrayMap<String, String>(); + headers = new ArrayMap<>(); } // Create a BufferedReader for parsing the header. BufferedReader hin = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(buf, 0, rlen))); // Decode the header into parms and header java properties - Map<String, String> pre = new ArrayMap<String, String>(); + Map<String, String> pre = new ArrayMap<>(); decodeHeader(hin, pre, parms, headers); method = Method.lookup(pre.get("method")); @@ -1116,7 +1110,7 @@ public abstract class NanoHTTPD { throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Content type is multipart/form-data but next chunk does not start with boundary. Usage: GET /example/file.html"); } boundarycount++; - Map<String, String> item = new ArrayMap<String, String>(); + Map<String, String> item = new ArrayMap<>(); mpline = in.readLine(); while (mpline != null && mpline.trim().length() > 0) { int p = mpline.indexOf(':'); @@ -1131,7 +1125,7 @@ public abstract class NanoHTTPD { throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Content type is multipart/form-data but no content-disposition info found. Usage: GET /example/file.html"); } StringTokenizer st = new StringTokenizer(contentDisposition, ";"); - Map<String, String> disposition = new ArrayMap<String, String>(); + Map<String, String> disposition = new ArrayMap<>(); while (st.hasMoreTokens()) { String token = st.nextToken().trim(); int p = token.indexOf('='); @@ -1144,17 +1138,19 @@ public abstract class NanoHTTPD { String value = ""; if (item.get("content-type") == null) { + StringBuilder tmp = new StringBuilder(); while (mpline != null && !mpline.contains(boundary)) { mpline = in.readLine(); if (mpline != null) { int d = mpline.indexOf(boundary); if (d == -1) { - value += mpline; + tmp.append(mpline); } else { - value += mpline.substring(0, d - 2); + tmp.append(mpline.substring(0, d - 2)); } } } + value = tmp.toString(); } else { if (boundarycount > bpositions.length) { throw new ResponseException(Response.Status.INTERNAL_ERROR, "Error processing request"); @@ -1196,7 +1192,7 @@ public abstract class NanoHTTPD { private int[] getBoundaryPositions(ByteBuffer b, byte[] boundary) { int matchcount = 0; int matchbyte = -1; - List<Integer> matchbytes = new ArrayList<Integer>(); + List<Integer> matchbytes = new ArrayList<>(); for (int i = 0; i < b.limit(); i++) { if (b.get(i) == boundary[matchcount]) { if (matchcount == 0) @@ -1326,7 +1322,9 @@ public abstract class NanoHTTPD { } public static class Cookie { - private String n, v, e; + private final String n; + private final String v; + private final String e; public Cookie(String name, String value, String expires) { n = name; @@ -1366,8 +1364,8 @@ public abstract class NanoHTTPD { * @author LordFokas */ public class CookieHandler implements Iterable<String> { - private ArrayMap<String, String> cookies = new ArrayMap<String, String>(); - private ArrayList<Cookie> queue = new ArrayList<Cookie>(); + private final ArrayMap<String, String> cookies = new ArrayMap<>(); + private final ArrayList<Cookie> queue = new ArrayList<>(); public CookieHandler(Map<String, String> httpHeaders) { String raw = httpHeaders.get("cookie"); diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java index bd3df0f9d..afe15f1b2 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java +++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java @@ -19,7 +19,7 @@ public class AtomGenerator implements FeedGenerator{ private static final String NS_ATOM = "http://www.w3.org/2005/Atom"; - public static final long FEATURE_USE_RFC3339LOCAL = 1; + private static final long FEATURE_USE_RFC3339LOCAL = 1; @Override public void writeFeed(Feed feed, OutputStream outputStream, String encoding, long flags) throws IOException { diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/FeedGenerator.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/FeedGenerator.java index 142e3cb57..b63159384 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/FeedGenerator.java +++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/FeedGenerator.java @@ -24,5 +24,5 @@ public interface FeedGenerator { * @param encoding The encoding to use. Must not be null. * @param flags Optional argument for enabling implementation-dependent features. */ - public void writeFeed(Feed feed, OutputStream outputStream, String encoding, long flags) throws IOException; + void writeFeed(Feed feed, OutputStream outputStream, String encoding, long flags) throws IOException; } diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java index e7cbb1b42..7f6f0fb0f 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java +++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java @@ -7,7 +7,7 @@ import java.io.IOException; /** * Utility methods for FeedGenerator */ -public class GeneratorUtil { +class GeneratorUtil { public static void addPaymentLink(XmlSerializer xml, String paymentLink, boolean withNamespace) throws IOException { String ns = (withNamespace) ? "http://www.w3.org/2005/Atom" : null; diff --git a/app/src/free/java/de/danoeh/antennapod/config/CastCallbackImpl.java b/app/src/free/java/de/danoeh/antennapod/config/CastCallbackImpl.java index 5e714f02c..fb23dfa1a 100644 --- a/app/src/free/java/de/danoeh/antennapod/config/CastCallbackImpl.java +++ b/app/src/free/java/de/danoeh/antennapod/config/CastCallbackImpl.java @@ -2,6 +2,6 @@ package de.danoeh.antennapod.config; import de.danoeh.antennapod.core.CastCallbacks; -public class CastCallbackImpl implements CastCallbacks { +class CastCallbackImpl implements CastCallbacks { } diff --git a/app/src/free/java/de/danoeh/antennapod/preferences/PreferenceControllerFlavorHelper.java b/app/src/free/java/de/danoeh/antennapod/preferences/PreferenceControllerFlavorHelper.java index de604c7c4..4e2c40885 100644 --- a/app/src/free/java/de/danoeh/antennapod/preferences/PreferenceControllerFlavorHelper.java +++ b/app/src/free/java/de/danoeh/antennapod/preferences/PreferenceControllerFlavorHelper.java @@ -5,7 +5,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; /** * Implements functions from PreferenceController that are flavor dependent. */ -public class PreferenceControllerFlavorHelper { +class PreferenceControllerFlavorHelper { static void setupFlavoredUI(PreferenceController.PreferenceUI ui) { ui.findPreference(UserPreferences.PREF_CAST_ENABLED).setEnabled(false); diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java index 1b42b274c..041053a25 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java @@ -75,53 +75,50 @@ public class AboutActivity extends AppCompatActivity { } private void loadAsset(String filename) { - subscription = Observable.create(new Observable.OnSubscribe<String>() { - @Override - public void call(Subscriber<? super String> subscriber) { - InputStream input = null; - try { - TypedArray res = AboutActivity.this.getTheme().obtainStyledAttributes( - new int[] { android.R.attr.textColorPrimary }); - int colorResource = res.getColor(0, 0); - String colorString = String.format("#%06X", 0xFFFFFF & colorResource); - res.recycle(); - input = getAssets().open(filename); - String webViewData = IOUtils.toString(input, Charset.defaultCharset()); - if(!webViewData.startsWith("<!DOCTYPE html>")) { - //webViewData = webViewData.replace("\n\n", "</p><p>"); - webViewData = webViewData.replace("%", "%"); - webViewData = - "<!DOCTYPE html>" + - "<html>" + - "<head>" + - " <meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">" + - " <style type=\"text/css\">" + - " @font-face {" + - " font-family: 'Roboto-Light';" + - " src: url('file:///android_asset/Roboto-Light.ttf');" + - " }" + - " * {" + - " color: %s;" + - " font-family: roboto-Light;" + - " font-size: 8pt;" + - " }" + - " </style>" + - "</head><body><p>" + webViewData + "</p></body></html>"; - webViewData = webViewData.replace("\n", "<br/>"); - depth++; - } else { - depth = 0; - } - webViewData = String.format(webViewData, colorString); - subscriber.onNext(webViewData); - } catch (IOException e) { - subscriber.onError(e); - } finally { - IOUtils.closeQuietly(input); - } - subscriber.onCompleted(); - } - }) + subscription = Observable.create((Observable.OnSubscribe<String>) subscriber -> { + InputStream input = null; + try { + TypedArray res = AboutActivity.this.getTheme().obtainStyledAttributes( + new int[] { android.R.attr.textColorPrimary }); + int colorResource = res.getColor(0, 0); + String colorString = String.format("#%06X", 0xFFFFFF & colorResource); + res.recycle(); + input = getAssets().open(filename); + String webViewData = IOUtils.toString(input, Charset.defaultCharset()); + if(!webViewData.startsWith("<!DOCTYPE html>")) { + //webViewData = webViewData.replace("\n\n", "</p><p>"); + webViewData = webViewData.replace("%", "%"); + webViewData = + "<!DOCTYPE html>" + + "<html>" + + "<head>" + + " <meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">" + + " <style type=\"text/css\">" + + " @font-face {" + + " font-family: 'Roboto-Light';" + + " src: url('file:///android_asset/Roboto-Light.ttf');" + + " }" + + " * {" + + " color: %s;" + + " font-family: roboto-Light;" + + " font-size: 8pt;" + + " }" + + " </style>" + + "</head><body><p>" + webViewData + "</p></body></html>"; + webViewData = webViewData.replace("\n", "<br/>"); + depth++; + } else { + depth = 0; + } + webViewData = String.format(webViewData, colorString); + subscriber.onNext(webViewData); + } catch (IOException e) { + subscriber.onError(e); + } finally { + IOUtils.closeQuietly(input); + } + subscriber.onCompleted(); + }) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java index ca214de9e..123f66661 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java @@ -6,6 +6,7 @@ import android.text.TextUtils; import android.util.Log; import android.view.View; +import java.text.DecimalFormat; import java.util.concurrent.atomic.AtomicBoolean; import de.danoeh.antennapod.core.feed.MediaType; @@ -18,15 +19,18 @@ import de.danoeh.antennapod.dialog.VariableSpeedDialog; * Activity for playing audio files. */ public class AudioplayerActivity extends MediaplayerInfoActivity { - public static final String TAG = "AudioPlayerActivity"; + private static final String TAG = "AudioPlayerActivity"; - private AtomicBoolean isSetup = new AtomicBoolean(false); + private final AtomicBoolean isSetup = new AtomicBoolean(false); @Override protected void onResume() { super.onResume(); if (TextUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW)) { Intent intent = getIntent(); + if (intent.getData() == null) { + return; + } Log.d(TAG, "Received VIEW intent: " + intent.getData().getPath()); ExternalMedia media = new ExternalMedia(intent.getData().getPath(), MediaType.AUDIO); @@ -40,7 +44,8 @@ public class AudioplayerActivity extends MediaplayerInfoActivity { startService(launchIntent); } else if (PlaybackService.isCasting()) { Intent intent = PlaybackService.getPlayerActivityIntent(this); - if (!intent.getComponent().getClassName().equals(AudioplayerActivity.class.getName())) { + if (intent.getComponent() != null && + !intent.getComponent().getClassName().equals(AudioplayerActivity.class.getName())) { saveCurrentFragment(); finish(); startActivity(intent); @@ -95,7 +100,7 @@ public class AudioplayerActivity extends MediaplayerInfoActivity { UserPreferences.setPlaybackSpeed(String.valueOf(speed)); } } - String speedStr = String.format("%.2fx", speed); + String speedStr = new DecimalFormat("0.00x").format(speed); butPlaybackSpeed.setText(speedStr); } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/CastplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/CastplayerActivity.java index a7e9b1e70..871e9c279 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/CastplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/CastplayerActivity.java @@ -13,9 +13,9 @@ import de.danoeh.antennapod.core.service.playback.PlaybackService; * Activity for controlling the remote playback on a Cast device. */ public class CastplayerActivity extends MediaplayerInfoActivity { - public static final String TAG = "CastPlayerActivity"; + private static final String TAG = "CastPlayerActivity"; - private AtomicBoolean isSetup = new AtomicBoolean(false); + private final AtomicBoolean isSetup = new AtomicBoolean(false); @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java index 41b2debdc..e726afaec 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java @@ -3,15 +3,14 @@ package de.danoeh.antennapod.activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.ActionBarActivity; -import android.util.Log; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import org.apache.commons.lang3.Validate; -import de.danoeh.antennapod.BuildConfig; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.DownloadRequest; @@ -23,8 +22,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequester; * Other arguments are optional. * The activity's result will be the same DownloadRequest with the entered username and password. */ -public class DownloadAuthenticationActivity extends ActionBarActivity { - private static final String TAG = "DownloadAuthenticationActivity"; +public class DownloadAuthenticationActivity extends AppCompatActivity { /** * The download request object that contains information about the resource that requires a username and a password @@ -36,47 +34,39 @@ public class DownloadAuthenticationActivity extends ActionBarActivity { */ public static final String ARG_SEND_TO_DOWNLOAD_REQUESTER_BOOL = "send_to_downloadrequester"; - public static final String RESULT_REQUEST = "request"; + private static final String RESULT_REQUEST = "request"; private EditText etxtUsername; private EditText etxtPassword; - private Button butConfirm; - private Button butCancel; - private TextView txtvDescription; - - private DownloadRequest request; - private boolean sendToDownloadRequester; @Override protected void onCreate(Bundle savedInstanceState) { setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); - getSupportActionBar().hide(); - setContentView(R.layout.download_authentication_activity); + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.hide(); + } + setContentView(R.layout.download_authentication_activity); + TextView txtvDescription = (TextView) findViewById(R.id.txtvDescription); etxtUsername = (EditText) findViewById(R.id.etxtUsername); etxtPassword = (EditText) findViewById(R.id.etxtPassword); - butConfirm = (Button) findViewById(R.id.butConfirm); - butCancel = (Button) findViewById(R.id.butCancel); - txtvDescription = (TextView) findViewById(R.id.txtvDescription); + Button butConfirm = (Button) findViewById(R.id.butConfirm); + Button butCancel = (Button) findViewById(R.id.butCancel); Validate.isTrue(getIntent().hasExtra(ARG_DOWNLOAD_REQUEST), "Download request missing"); + DownloadRequest request = getIntent().getParcelableExtra(ARG_DOWNLOAD_REQUEST); + boolean sendToDownloadRequester = getIntent().getBooleanExtra(ARG_SEND_TO_DOWNLOAD_REQUESTER_BOOL, false); - request = getIntent().getParcelableExtra(ARG_DOWNLOAD_REQUEST); - sendToDownloadRequester = getIntent().getBooleanExtra(ARG_SEND_TO_DOWNLOAD_REQUESTER_BOOL, false); + String newDescription = txtvDescription.getText() + ":\n\n" + request.getTitle(); + txtvDescription.setText(newDescription); if (savedInstanceState != null) { etxtUsername.setText(savedInstanceState.getString("username")); etxtPassword.setText(savedInstanceState.getString("password")); } - txtvDescription.setText(txtvDescription.getText() + ":\n\n" + request.getTitle()); - - butCancel.setOnClickListener(v -> { - setResult(Activity.RESULT_CANCELED); - finish(); - }); - butConfirm.setOnClickListener(v -> { String username = etxtUsername.getText().toString(); String password = etxtPassword.getText().toString(); @@ -87,11 +77,16 @@ public class DownloadAuthenticationActivity extends ActionBarActivity { setResult(Activity.RESULT_OK, result); if (sendToDownloadRequester) { - if (BuildConfig.DEBUG) Log.d(TAG, "Sending request to DownloadRequester"); DownloadRequester.getInstance().download(DownloadAuthenticationActivity.this, request); } finish(); }); + + butCancel.setOnClickListener(v -> { + setResult(Activity.RESULT_CANCELED); + finish(); + }); + } @Override diff --git a/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java index cc9db5e6e..8dea41b7c 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java @@ -100,7 +100,7 @@ public class FeedInfoActivity extends AppCompatActivity { private boolean authInfoChanged = false; - private TextWatcher authTextWatcher = new TextWatcher() { + private final TextWatcher authTextWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @@ -117,7 +117,7 @@ public class FeedInfoActivity extends AppCompatActivity { private boolean filterTextChanged = false; - private TextWatcher filterTextWatcher = new TextWatcher() { + private final TextWatcher filterTextWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 9949c01a0..f56dca173 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -82,7 +82,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi public static final String PREF_NAME = "MainActivityPrefs"; public static final String PREF_IS_FIRST_LAUNCH = "prefMainActivityIsFirstLaunch"; - public static final String PREF_LAST_FRAGMENT_TAG = "prefMainActivityLastFragmentTag"; + private static final String PREF_LAST_FRAGMENT_TAG = "prefMainActivityLastFragmentTag"; public static final String EXTRA_NAV_TYPE = "nav_type"; public static final String EXTRA_NAV_INDEX = "nav_index"; @@ -90,8 +90,8 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi public static final String EXTRA_FRAGMENT_ARGS = "fragment_args"; public static final String EXTRA_FEED_ID = "fragment_feed_id"; - public static final String SAVE_BACKSTACK_COUNT = "backstackCount"; - public static final String SAVE_TITLE = "title"; + private static final String SAVE_BACKSTACK_COUNT = "backstackCount"; + private static final String SAVE_TITLE = "title"; public static final String[] NAV_DRAWER_TAGS = { QueueFragment.TAG, @@ -235,7 +235,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi } } - public void showDrawerPreferencesDialog() { + private void showDrawerPreferencesDialog() { final List<String> hiddenDrawerItems = UserPreferences.getHiddenDrawerItems(); String[] navLabels = new String[NAV_DRAWER_TAGS.length]; final boolean[] checked = new boolean[NAV_DRAWER_TAGS.length]; @@ -269,7 +269,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi return (navDrawerData != null) ? navDrawerData.feeds : null; } - public void loadFragment(int index, Bundle args) { + private void loadFragment(int index, Bundle args) { Log.d(TAG, "loadFragment(index: " + index + ", args: " + args + ")"); if (index < navAdapter.getSubscriptionOffset()) { String tag = navAdapter.getTags().get(index); @@ -398,7 +398,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi } } - private AdapterView.OnItemClickListener navListClickListener = new AdapterView.OnItemClickListener() { + private final AdapterView.OnItemClickListener navListClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { int viewType = parent.getAdapter().getItemViewType(position); @@ -409,7 +409,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi } }; - private AdapterView.OnItemLongClickListener newListLongClickListener = new AdapterView.OnItemLongClickListener() { + private final AdapterView.OnItemLongClickListener newListLongClickListener = new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { if(position < navAdapter.getTags().size()) { @@ -630,7 +630,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi private DBReader.NavDrawerData navDrawerData; private int selectedNavListIndex = 0; - private NavListAdapter.ItemAccess itemAccess = new NavListAdapter.ItemAccess() { + private final NavListAdapter.ItemAccess itemAccess = new NavListAdapter.ItemAccess() { @Override public int getCount() { if (navDrawerData != null) { @@ -743,14 +743,12 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi View parentLayout = findViewById(R.id.drawer_layout); Snackbar snackbar = Snackbar.make(parentLayout, event.message, Snackbar.LENGTH_SHORT); if(event.action != null) { - snackbar.setAction(getString(R.string.undo), v -> { - event.action.run(); - }); + snackbar.setAction(getString(R.string.undo), v -> event.action.run()); } snackbar.show(); } - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java index b0cbd355b..232ff4311 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -67,19 +67,19 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements private static final String PREFS = "MediaPlayerActivityPreferences"; private static final String PREF_SHOW_TIME_LEFT = "showTimeLeft"; - protected PlaybackController controller; + PlaybackController controller; - protected TextView txtvPosition; - protected TextView txtvLength; - protected SeekBar sbPosition; - protected ImageButton butRev; - protected TextView txtvRev; - protected ImageButton butPlay; - protected ImageButton butFF; - protected TextView txtvFF; - protected ImageButton butSkip; + private TextView txtvPosition; + private TextView txtvLength; + SeekBar sbPosition; + private ImageButton butRev; + private TextView txtvRev; + private ImageButton butPlay; + private ImageButton butFF; + private TextView txtvFF; + private ImageButton butSkip; - protected boolean showTimeLeft = false; + private boolean showTimeLeft = false; private boolean isFavorite = false; @@ -184,31 +184,31 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements }; } - protected static TextView getTxtvFFFromActivity(MediaplayerActivity activity) { + private static TextView getTxtvFFFromActivity(MediaplayerActivity activity) { return activity.txtvFF; } - protected static TextView getTxtvRevFromActivity(MediaplayerActivity activity) { + private static TextView getTxtvRevFromActivity(MediaplayerActivity activity) { return activity.txtvRev; } - protected void onSetSpeedAbilityChanged() { + private void onSetSpeedAbilityChanged() { Log.d(TAG, "onSetSpeedAbilityChanged()"); updatePlaybackSpeedButton(); } - protected void onPlaybackSpeedChange() { + private void onPlaybackSpeedChange() { updatePlaybackSpeedButtonText(); } - protected void onServiceQueried() { + private void onServiceQueried() { supportInvalidateOptionsMenu(); } - protected void chooseTheme() { + void chooseTheme() { setTheme(UserPreferences.getTheme()); } - protected void setScreenOn(boolean enable) { + void setScreenOn(boolean enable) { } @Override @@ -249,7 +249,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements */ protected abstract void onBufferEnd(); - protected void onBufferUpdate(float progress) { + private void onBufferUpdate(float progress) { if (sbPosition != null) { sbPosition.setSecondaryProgress((int) progress * sbPosition.getMax()); } @@ -258,7 +258,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements /** * Current screen orientation. */ - protected int orientation; + private int orientation; @Override protected void onStart() { @@ -619,7 +619,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements protected abstract void clearStatusMsg(); - protected void onPositionObserverUpdate() { + void onPositionObserverUpdate() { if (controller == null || txtvPosition == null || txtvLength == null) { return; } @@ -655,7 +655,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements * to the PlaybackService to ensure that the activity has the right * FeedMedia object. */ - protected boolean loadMediaInfo() { + boolean loadMediaInfo() { Log.d(TAG, "loadMediaInfo()"); if(controller == null || controller.getMedia() == null) { return false; @@ -669,18 +669,18 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements return true; } - protected void updatePlaybackSpeedButton() { + void updatePlaybackSpeedButton() { // Only meaningful on AudioplayerActivity, where it is overridden. } - protected void updatePlaybackSpeedButtonText() { + void updatePlaybackSpeedButtonText() { // Only meaningful on AudioplayerActivity, where it is overridden. } /** * Abstract directions to skip forward or back (rewind) and encapsulates behavior to get or set preference (including update of UI on the skip buttons). */ - static public enum SkipDirection { + public enum SkipDirection { SKIP_FORWARD( UserPreferences::getFastForwardSecs, MediaplayerActivity::getTxtvFFFromActivity, @@ -763,7 +763,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements builder.create().show(); } - protected void setupGUI() { + void setupGUI() { setContentView(getContentViewResourceId()); sbPosition = (SeekBar) findViewById(R.id.sbPosition); txtvPosition = (TextView) findViewById(R.id.txtvPosition); @@ -837,7 +837,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements } } - protected void onRewind() { + void onRewind() { if (controller == null) { return; } @@ -845,14 +845,14 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements controller.seekTo(curr - UserPreferences.getRewindSecs() * 1000); } - protected void onPlayPause() { + void onPlayPause() { if(controller == null) { return; } controller.playPause(); } - protected void onFastForward() { + void onFastForward() { if (controller == null) { return; } @@ -862,7 +862,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements protected abstract int getContentViewResourceId(); - void handleError(int errorCode) { + private void handleError(int errorCode) { final AlertDialog.Builder errorDialog = new AlertDialog.Builder(this); errorDialog.setTitle(R.string.error_label); errorDialog.setMessage(MediaPlayerError.getErrorString(this, errorCode)); @@ -875,7 +875,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements errorDialog.create().show(); } - float prog; + private float prog; @Override public void onProgressChanged (SeekBar seekBar,int progress, boolean fromUser) { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java index d85c2fe8f..f3ed1cb62 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java @@ -72,16 +72,17 @@ import rx.schedulers.Schedulers; */ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implements NavDrawerActivity { + private static final String TAG = "MediaplayerInfoActivity"; + private static final int POS_COVER = 0; private static final int POS_DESCR = 1; private static final int POS_CHAPTERS = 2; private static final int NUM_CONTENT_FRAGMENTS = 3; - final static String TAG = "MediaplayerInfoActivity"; private static final String PREFS = "AudioPlayerActivityPreferences"; private static final String PREF_KEY_SELECTED_FRAGMENT_POSITION = "selectedFragmentPosition"; - public static final String[] NAV_DRAWER_TAGS = { + private static final String[] NAV_DRAWER_TAGS = { QueueFragment.TAG, EpisodesFragment.TAG, SubscriptionFragment.TAG, @@ -91,8 +92,8 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem NavListAdapter.SUBSCRIPTION_LIST_TAG }; - protected Button butPlaybackSpeed; - protected ImageButton butCastDisconnect; + Button butPlaybackSpeed; + ImageButton butCastDisconnect; private DrawerLayout drawerLayout; private NavListAdapter navAdapter; private ListView navList; @@ -151,7 +152,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem setTheme(UserPreferences.getNoTitleTheme()); } - protected void saveCurrentFragment() { + void saveCurrentFragment() { if(pager == null) { return; } @@ -159,7 +160,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem SharedPreferences prefs = getSharedPreferences(PREFS, MODE_PRIVATE); prefs.edit() .putInt(PREF_KEY_SELECTED_FRAGMENT_POSITION, pager.getCurrentItem()) - .commit(); + .apply(); } @Override @@ -241,7 +242,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close); drawerToggle.setDrawerIndicatorEnabled(false); - drawerLayout.setDrawerListener(drawerToggle); + drawerLayout.addDrawerListener(drawerToggle); navAdapter = new NavListAdapter(itemAccess, this); navList.setAdapter(navAdapter); @@ -305,7 +306,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem return true; } - public void notifyMediaPositionChanged() { + private void notifyMediaPositionChanged() { if(pagerAdapter == null) { return; } @@ -395,12 +396,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem new RenameFeedDialog(this, feed).show(); return true; case R.id.remove_item: - final FeedRemover remover = new FeedRemover(this, feed) { - @Override - protected void onPostExecute(Void result) { - super.onPostExecute(result); - } - }; + final FeedRemover remover = new FeedRemover(this, feed); ConfirmationDialog conDialog = new ConfirmationDialog(this, R.string.remove_feed_label, getString(R.string.feed_delete_confirmation_msg, feed.getTitle())) { @@ -412,7 +408,8 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem Playable playable = controller.getMedia(); if (playable != null && playable instanceof FeedMedia) { FeedMedia media = (FeedMedia) playable; - if (media.getItem().getFeed().getId() == feed.getId()) { + if (media.getItem() != null && media.getItem().getFeed() != null && + media.getItem().getFeed().getId() == feed.getId()) { Log.d(TAG, "Currently playing episode is about to be deleted, skipping"); remover.skipOnCompletion = true; if(controller.getStatus() == PlayerStatus.PLAYING) { @@ -446,7 +443,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem } } - public void showDrawerPreferencesDialog() { + private void showDrawerPreferencesDialog() { final List<String> hiddenDrawerItems = UserPreferences.getHiddenDrawerItems(); String[] navLabels = new String[NAV_DRAWER_TAGS.length]; final boolean[] checked = new boolean[NAV_DRAWER_TAGS.length]; @@ -491,14 +488,12 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem View parentLayout = findViewById(R.id.drawer_layout); Snackbar snackbar = Snackbar.make(parentLayout, event.message, Snackbar.LENGTH_SHORT); if (event.action != null) { - snackbar.setAction(getString(R.string.undo), v -> { - event.action.run(); - }); + snackbar.setAction(getString(R.string.undo), v -> event.action.run()); } snackbar.show(); } - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index f6bf11e66..f859f5466 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -5,8 +5,9 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; -import android.os.Looper; +import android.support.annotation.UiThread; import android.support.v4.app.NavUtils; +import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; @@ -55,7 +56,6 @@ import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.syndication.handler.FeedHandler; -import de.danoeh.antennapod.core.syndication.handler.FeedHandlerResult; import de.danoeh.antennapod.core.syndication.handler.UnsupportedFeedtypeException; import de.danoeh.antennapod.core.util.DownloadError; import de.danoeh.antennapod.core.util.FileNameGenerator; @@ -66,7 +66,6 @@ import de.danoeh.antennapod.core.util.syndication.HtmlToPlainText; import de.danoeh.antennapod.dialog.AuthenticationDialog; import de.greenrobot.event.EventBus; import rx.Observable; -import rx.Subscriber; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; @@ -84,7 +83,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { public static final String ARG_FEEDURL = "arg.feedurl"; // Optional argument: specify a title for the actionbar. public static final String ARG_TITLE = "title"; - public static final int RESULT_ERROR = 2; + private static final int RESULT_ERROR = 2; private static final String TAG = "OnlineFeedViewActivity"; private static final int EVENTS = EventDistributor.FEED_LIST_UPDATE; private volatile List<Feed> feeds; @@ -101,7 +100,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { private Subscription download; private Subscription parser; private Subscription updater; - private EventDistributor.EventListener listener = new EventDistributor.EventListener() { + private final EventDistributor.EventListener listener = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { if ((arg & EventDistributor.FEED_LIST_UPDATE) != 0) { @@ -112,9 +111,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { feeds -> { OnlineFeedViewActivity.this.feeds = feeds; setSubscribeButtonState(feed); - }, error -> { - Log.e(TAG, Log.getStackTraceString(error)); - } + }, error -> Log.e(TAG, Log.getStackTraceString(error)) ); } else if ((arg & EVENTS) != 0) { setSubscribeButtonState(feed); @@ -131,10 +128,13 @@ public class OnlineFeedViewActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { setTheme(UserPreferences.getTheme()); super.onCreate(savedInstanceState); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(true); + } - if (getIntent() != null && getIntent().hasExtra(ARG_TITLE)) { - getSupportActionBar().setTitle(getIntent().getStringExtra(ARG_TITLE)); + if (actionBar != null && getIntent() != null && getIntent().hasExtra(ARG_TITLE)) { + actionBar.setTitle(getIntent().getStringExtra(ARG_TITLE)); } StorageUtils.checkStorageAvailability(this); @@ -146,7 +146,9 @@ public class OnlineFeedViewActivity extends AppCompatActivity { || TextUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW)) { feedUrl = (TextUtils.equals(getIntent().getAction(), Intent.ACTION_SEND)) ? getIntent().getStringExtra(Intent.EXTRA_TEXT) : getIntent().getDataString(); - getSupportActionBar().setTitle(R.string.add_feed_label); + if (actionBar != null) { + actionBar.setTitle(R.string.add_feed_label); + } } else { throw new IllegalArgumentException("Activity must be started with feedurl argument!"); } @@ -265,16 +267,11 @@ public class OnlineFeedViewActivity extends AppCompatActivity { feed.getDownload_url(), "OnlineFeed", 0, Feed.FEEDFILETYPE_FEED, username, password, true, null); - download = Observable.create(new Observable.OnSubscribe<DownloadStatus>() { - @Override - public void call(Subscriber<? super DownloadStatus> subscriber) { - feeds = DBReader.getFeedList(); - downloader = new HttpDownloader(request); - downloader.call(); - Log.d(TAG, "Download was completed"); - subscriber.onNext(downloader.getResult()); - subscriber.onCompleted(); - } + download = Observable.fromCallable(() -> { + feeds = DBReader.getFeedList(); + downloader = new HttpDownloader(request); + downloader.call(); + return downloader.getResult(); }) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) @@ -286,6 +283,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { if (status == null) { Log.wtf(TAG, "DownloadStatus returned by Downloader was null"); finish(); + return; } if (status.isCancelled()) { return; @@ -300,7 +298,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { } } else { String errorMsg = status.getReason().getErrorString(OnlineFeedViewActivity.this); - if (errorMsg != null && status.getReasonDetailed() != null) { + if (status.getReasonDetailed() != null) { errorMsg += " (" + status.getReasonDetailed() + ")"; } showErrorDialog(errorMsg); @@ -313,35 +311,33 @@ public class OnlineFeedViewActivity extends AppCompatActivity { } Log.d(TAG, "Parsing feed"); - parser = Observable.create(new Observable.OnSubscribe<FeedHandlerResult>() { - @Override - public void call(Subscriber<? super FeedHandlerResult> subscriber) { - FeedHandler handler = new FeedHandler(); - try { - FeedHandlerResult result = handler.parseFeed(feed); - subscriber.onNext(result); - } catch (UnsupportedFeedtypeException e) { - Log.d(TAG, "Unsupported feed type detected"); - if (TextUtils.equals("html", e.getRootElement().toLowerCase())) { - showFeedDiscoveryDialog(new File(feed.getFile_url()), feed.getDownload_url()); - } else { - subscriber.onError(e); - } - } catch (Exception e) { - Log.e(TAG, Log.getStackTraceString(e)); - subscriber.onError(e); - } finally { - boolean rc = new File(feed.getFile_url()).delete(); - Log.d(TAG, "Deleted feed source file. Result: " + rc); - subscriber.onCompleted(); + parser = Observable.fromCallable(() -> { + FeedHandler handler = new FeedHandler(); + try { + return handler.parseFeed(feed); + } catch (UnsupportedFeedtypeException e) { + Log.d(TAG, "Unsupported feed type detected"); + if (TextUtils.equals("html", e.getRootElement().toLowerCase())) { + showFeedDiscoveryDialog(new File(feed.getFile_url()), feed.getDownload_url()); + return null; + } else { + throw e; } + } catch (Exception e) { + Log.e(TAG, Log.getStackTraceString(e)); + throw e; + } finally { + boolean rc = new File(feed.getFile_url()).delete(); + Log.d(TAG, "Deleted feed source file. Result: " + rc); } }) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(result -> { - beforeShowFeedInformation(result.feed); - showFeedInformation(result.feed, result.alternateFeedUrls); + if(result != null) { + beforeShowFeedInformation(result.feed); + showFeedInformation(result.feed, result.alternateFeedUrls); + } }, error -> { String errorMsg = DownloadError.ERROR_PARSER_EXCEPTION.getErrorString( OnlineFeedViewActivity.this) + " (" + error.getMessage() + ")"; @@ -383,8 +379,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { this.selectedDownloadUrl = feed.getDownload_url(); EventDistributor.getInstance().register(listener); ListView listView = (ListView) findViewById(R.id.listview); - LayoutInflater inflater = (LayoutInflater) - getSystemService(Context.LAYOUT_INFLATER_SERVICE); + LayoutInflater inflater = LayoutInflater.from(this); View header = inflater.inflate(R.layout.onlinefeedview_header, listView, false); listView.addHeaderView(header); @@ -414,7 +409,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { description.setText(feed.getDescription()); subscribeButton.setOnClickListener(v -> { - if(feed != null && feedInFeedlist(feed)) { + if(feedInFeedlist(feed)) { Intent intent = new Intent(OnlineFeedViewActivity.this, MainActivity.class); // feed.getId() is always 0, we have to retrieve the id from the feed list from // the database @@ -508,8 +503,8 @@ public class OnlineFeedViewActivity extends AppCompatActivity { return 0; } + @UiThread private void showErrorDialog(String errorMsg) { - assert(Looper.myLooper() == Looper.getMainLooper()); // run on UI thread if (!isFinishing() && !isPaused) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.error_label); @@ -586,7 +581,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity { private class FeedViewAuthenticationDialog extends AuthenticationDialog { - private String feedUrl; + private final String feedUrl; FeedViewAuthenticationDialog(Context context, int titleRes, String feedUrl) { super(context, titleRes, true, false, null, null); diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java index 355e0f372..cd375a65a 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java @@ -97,7 +97,7 @@ public class OpmlFeedChooserActivity extends AppCompatActivity { } private List<String> getTitleList() { - List<String> result = new ArrayList<String>(); + List<String> result = new ArrayList<>(); if (OpmlImportHolder.getReadElements() != null) { for (OpmlElement element : OpmlImportHolder.getReadElements()) { result.add(element.getText()); diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java index 07b0b3cdb..c04ae051e 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java @@ -68,7 +68,7 @@ public class OpmlImportBaseActivity extends AppCompatActivity { } } - protected void importUri(@Nullable Uri uri) { + void importUri(@Nullable Uri uri) { if(uri == null) { new MaterialDialog.Builder(this) .content(R.string.opml_import_error_no_file) @@ -114,7 +114,7 @@ public class OpmlImportBaseActivity extends AppCompatActivity { } /** Starts the import process. */ - protected void startImport() { + private void startImport() { try { Reader mReader = new InputStreamReader(getContentResolver().openInputStream(uri), LangUtils.UTF_8); importWorker = new OpmlImportWorker(this, mReader) { @@ -144,7 +144,7 @@ public class OpmlImportBaseActivity extends AppCompatActivity { } } - protected boolean finishWhenCanceled() { + boolean finishWhenCanceled() { return false; } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java index d104a9e93..a2a49f54e 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java @@ -164,7 +164,7 @@ public class StorageErrorActivity extends AppCompatActivity { startActivity(new Intent(this, MainActivity.class)); } - private BroadcastReceiver mediaUpdate = new BroadcastReceiver() { + private final BroadcastReceiver mediaUpdate = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java index fb5c4d273..54758acf4 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -7,6 +7,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.WindowCompat; +import android.support.v7.app.ActionBar; import android.util.Log; import android.util.Pair; import android.view.MotionEvent; @@ -45,7 +46,7 @@ public class VideoplayerActivity extends MediaplayerActivity { private VideoControlsHider videoControlsHider = new VideoControlsHider(this); - private AtomicBoolean isSetup = new AtomicBoolean(false); + private final AtomicBoolean isSetup = new AtomicBoolean(false); private LinearLayout controls; private LinearLayout videoOverlay; @@ -173,7 +174,7 @@ public class VideoplayerActivity extends MediaplayerActivity { progressIndicator.setVisibility(View.INVISIBLE); } - View.OnTouchListener onVideoviewTouched = (v, event) -> { + private final View.OnTouchListener onVideoviewTouched = (v, event) -> { if (event.getAction() == MotionEvent.ACTION_DOWN) { videoControlsHider.stop(); toggleVideoControlsVisibility(); @@ -187,7 +188,7 @@ public class VideoplayerActivity extends MediaplayerActivity { }; @SuppressLint("NewApi") - void setupVideoControlsToggler() { + private void setupVideoControlsToggler() { videoControlsHider.stop(); videoControlsHider.start(); } @@ -355,18 +356,21 @@ public class VideoplayerActivity extends MediaplayerActivity { private WeakReference<VideoplayerActivity> activity; - public VideoControlsHider(VideoplayerActivity activity) { + VideoControlsHider(VideoplayerActivity activity) { this.activity = new WeakReference<>(activity); } private final Runnable hideVideoControls = () -> { - VideoplayerActivity vpa = activity.get(); + VideoplayerActivity vpa = activity != null ? activity.get() : null; if(vpa == null) { return; } if (vpa.videoControlsShowing) { Log.d(TAG, "Hiding video controls"); - vpa.getSupportActionBar().hide(); + ActionBar actionBar = vpa.getSupportActionBar(); + if (actionBar != null) { + actionBar.hide(); + } vpa.hideVideoControls(); vpa.videoControlsShowing = false; } @@ -376,7 +380,7 @@ public class VideoplayerActivity extends MediaplayerActivity { this.postDelayed(hideVideoControls, DELAY); } - public void stop() { + void stop() { this.removeCallbacks(hideVideoControls); } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java index 31d0fb1a3..8f447ac90 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java @@ -61,7 +61,7 @@ public class GpodnetAuthenticationActivity extends AppCompatActivity { private volatile String password; private volatile GpodnetDevice selectedDevice; - View[] views; + private View[] views; @Override protected void onCreate(Bundle savedInstanceState) { diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonCallback.java b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonCallback.java index c18564351..e6b42efcb 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonCallback.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonCallback.java @@ -3,7 +3,7 @@ package de.danoeh.antennapod.adapter; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.util.LongList; -public interface ActionButtonCallback { +interface ActionButtonCallback { /** Is called when the action button of a list item has been pressed. */ void onActionButtonPressed(FeedItem item, LongList queueIds); } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java index f0210f983..a915692d1 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java @@ -16,7 +16,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequester; * Utility methods for the action button that is displayed on the right hand side * of a listitem. */ -public class ActionButtonUtils { +class ActionButtonUtils { private final int[] labels; private final TypedArray drawables; diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java index 6611cd35a..715318db1 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java @@ -100,7 +100,6 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR holder.txtvDuration = (TextView) view.findViewById(R.id.txtvDuration); holder.item = null; holder.mainActivityRef = mainActivityRef; - holder.position = -1; // so we can grab this later view.setTag(holder); @@ -112,11 +111,10 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR final FeedItem item = itemAccess.getItem(position); if (item == null) return; holder.itemView.setOnLongClickListener(v -> { - this.position = position; + this.position = holder.getAdapterPosition(); return false; }); holder.item = item; - holder.position = position; holder.placeholder.setVisibility(View.VISIBLE); holder.placeholder.setText(item.getFeed().getTitle()); holder.title.setText(item.getTitle()); @@ -227,7 +225,7 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR return pos; } - private View.OnClickListener secondaryActionListener = new View.OnClickListener() { + private final View.OnClickListener secondaryActionListener = new View.OnClickListener() { @Override public void onClick(View v) { FeedItem item = (FeedItem) v.getTag(); @@ -252,7 +250,6 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR ImageButton butSecondary; FeedItem item; WeakReference<MainActivity> mainActivityRef; - int position; public Holder(View itemView) { super(itemView); @@ -265,7 +262,7 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR MainActivity mainActivity = mainActivityRef.get(); if (mainActivity != null) { long[] ids = itemAccess.getItemsIds().toArray(); - mainActivity.loadChildFragment(ItemFragment.newInstance(ids, position)); + mainActivity.loadChildFragment(ItemFragment.newInstance(ids, getAdapterPosition())); } } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java index 679aca989..7c0be47b6 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java @@ -31,9 +31,9 @@ public class DownloadLogAdapter extends BaseAdapter { private static final String TAG = "DownloadLogAdapter"; - private Context context; + private final Context context; - private ItemAccess itemAccess; + private final ItemAccess itemAccess; public DownloadLogAdapter(Context context, ItemAccess itemAccess) { super(); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java index 807a32d8a..c62c30c90 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java @@ -110,7 +110,7 @@ public class DownloadedEpisodesListAdapter extends BaseAdapter { return convertView; } - private View.OnClickListener secondaryActionListener = new View.OnClickListener() { + private final View.OnClickListener secondaryActionListener = new View.OnClickListener() { @Override public void onClick(View v) { FeedItem item = (FeedItem) v.getTag(); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java index e1efdaa7b..5bc67a95a 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java @@ -19,11 +19,11 @@ import de.danoeh.antennapod.core.util.ThemeUtils; public class DownloadlistAdapter extends BaseAdapter { - public static final int SELECTION_NONE = -1; + private static final int SELECTION_NONE = -1; private int selectedItemIndex; - private ItemAccess itemAccess; - private Context context; + private final ItemAccess itemAccess; + private final Context context; public DownloadlistAdapter(Context context, ItemAccess itemAccess) { @@ -105,7 +105,7 @@ public class DownloadlistAdapter extends BaseAdapter { return convertView; } - private View.OnClickListener butSecondaryListener = new View.OnClickListener() { + private final View.OnClickListener butSecondaryListener = new View.OnClickListener() { @Override public void onClick(View v) { Downloader downloader = (Downloader) v.getTag(); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java index 71d162645..e29781be1 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java @@ -32,13 +32,13 @@ import de.danoeh.antennapod.core.util.ThemeUtils; */ public class FeedItemlistAdapter extends BaseAdapter { - private ActionButtonCallback callback; + private final ActionButtonCallback callback; private final ItemAccess itemAccess; private final Context context; - private boolean showFeedtitle; - private int selectedItemIndex; + private final boolean showFeedtitle; + private final int selectedItemIndex; /** true if played items should be made partially transparent */ - private boolean makePlayedItemsTransparent; + private final boolean makePlayedItemsTransparent; private final ActionButtonUtils actionButtonUtils; private static final int SELECTION_NONE = -1; diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java index 465497b55..2daa5e70f 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java @@ -48,10 +48,10 @@ import de.danoeh.antennapod.fragment.SubscriptionFragment; public class NavListAdapter extends BaseAdapter implements SharedPreferences.OnSharedPreferenceChangeListener { - public static final int VIEW_TYPE_COUNT = 3; + private static final int VIEW_TYPE_COUNT = 3; public static final int VIEW_TYPE_NAV = 0; public static final int VIEW_TYPE_SECTION_DIVIDER = 1; - public static final int VIEW_TYPE_SUBSCRIPTION = 2; + private static final int VIEW_TYPE_SUBSCRIPTION = 2; /** * a tag used as a placeholder to indicate if the subscription list should be displayed or not @@ -62,8 +62,8 @@ public class NavListAdapter extends BaseAdapter private static List<String> tags; private static String[] titles; - private ItemAccess itemAccess; - private WeakReference<Activity> activity; + private final ItemAccess itemAccess; + private final WeakReference<Activity> activity; private boolean showSubscriptionList = true; public NavListAdapter(ItemAccess itemAccess, Activity context) { @@ -86,9 +86,7 @@ public class NavListAdapter extends BaseAdapter private void loadItems() { List<String> newTags = new ArrayList<>(Arrays.asList(MainActivity.NAV_DRAWER_TAGS)); List<String> hiddenFragments = UserPreferences.getHiddenDrawerItems(); - for(String hidden : hiddenFragments) { - newTags.remove(hidden); - } + newTags.removeAll(hiddenFragments); if (newTags.contains(SUBSCRIPTION_LIST_TAG)) { // we never want SUBSCRIPTION_LIST_TAG to be in 'tags' diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java index 8eebc919a..01dd4c2de 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java @@ -50,7 +50,7 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap private static final String TAG = QueueRecyclerAdapter.class.getSimpleName(); - private WeakReference<MainActivity> mainActivity; + private final WeakReference<MainActivity> mainActivity; private final ItemAccess itemAccess; private final ActionButtonCallback actionButtonCallback; private final ActionButtonUtils actionButtonUtils; @@ -304,7 +304,7 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap } - private View.OnClickListener secondaryActionListener = new View.OnClickListener() { + private final View.OnClickListener secondaryActionListener = new View.OnClickListener() { @Override public void onClick(View v) { FeedItem item = (FeedItem) v.getTag(); diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java index c060083a6..50255c11f 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java @@ -23,8 +23,8 @@ import de.danoeh.antennapod.core.util.Converter; * Adapter for the statistics list */ public class StatisticsListAdapter extends BaseAdapter { - private Context context; - List<DBReader.StatisticsItem> feedTime = new ArrayList<>(); + private final Context context; + private List<DBReader.StatisticsItem> feedTime = new ArrayList<>(); private boolean countAll = true; public StatisticsListAdapter(Context context) { diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java index 6d19bfa6c..bb76ab501 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java @@ -50,7 +50,6 @@ public class SubscriptionsAdapter extends BaseAdapter implements AdapterView.OnI } private int getAdjustedPosition(int origPosition) { - assert(origPosition != getAddTilePosition()); return origPosition < getAddTilePosition() ? origPosition : origPosition - 1; } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java index 64912ba9b..e493a2ecc 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java @@ -124,7 +124,7 @@ public class ItunesAdapter extends ArrayAdapter<ItunesAdapter.Podcast> { * @param json object holding the podcast information * @throws JSONException */ - public static Podcast fromSearch(JSONObject json) throws JSONException { + public static Podcast fromSearch(JSONObject json) { String title = json.optString("collectionName", ""); String imageUrl = json.optString("artworkUrl100", null); String feedUrl = json.optString("feedUrl", null); diff --git a/app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java b/app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java index 192df8ca5..b6cf5cb84 100644 --- a/app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java +++ b/app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java @@ -23,15 +23,15 @@ public class ExportWorker { private static final String TAG = "ExportWorker"; private static final String DEFAULT_OUTPUT_NAME = "antennapod-feeds"; - private ExportWriter exportWriter; - private File output; + private final ExportWriter exportWriter; + private final File output; public ExportWorker(ExportWriter exportWriter) { this(exportWriter, new File(UserPreferences.getDataFolder(EXPORT_DIR), DEFAULT_OUTPUT_NAME + "." + exportWriter.fileExtension())); } - public ExportWorker(ExportWriter exportWriter, @NonNull File output) { + private ExportWorker(ExportWriter exportWriter, @NonNull File output) { this.exportWriter = exportWriter; this.output = output; } diff --git a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java index fcd5cff00..ea5128102 100644 --- a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java +++ b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java @@ -1,6 +1,5 @@ package de.danoeh.antennapod.asynctask; -import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; @@ -16,9 +15,9 @@ import de.danoeh.antennapod.core.storage.DownloadRequester; /** Queues items for download in the background. */ public class OpmlFeedQueuer extends AsyncTask<Void, Void, Void> { - private Context context; + private final Context context; private ProgressDialog progDialog; - private int[] selection; + private final int[] selection; public OpmlFeedQueuer(Context context, int[] selection) { super(); diff --git a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlImportWorker.java b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlImportWorker.java index 88bd35b7c..13b95907f 100644 --- a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlImportWorker.java +++ b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlImportWorker.java @@ -1,6 +1,5 @@ package de.danoeh.antennapod.asynctask; -import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; @@ -21,12 +20,12 @@ public class OpmlImportWorker extends AsyncTask<Void, Void, ArrayList<OpmlElement>> { private static final String TAG = "OpmlImportWorker"; - private Context context; + private final Context context; private Exception exception; private ProgressDialog progDialog; - private Reader mReader; + private final Reader mReader; public OpmlImportWorker(Context context, Reader reader) { super(); diff --git a/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java b/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java index f26f2ea76..d2498955c 100644 --- a/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java +++ b/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java @@ -6,7 +6,7 @@ import de.danoeh.antennapod.core.ClientConfig; /** * Configures the ClientConfig class of the core package. */ -public class ClientConfigurator { +class ClientConfigurator { static { ClientConfig.USER_AGENT = "AntennaPod/" + BuildConfig.VERSION_NAME; diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java index 3d577553c..10ce12771 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java @@ -34,12 +34,12 @@ public class EpisodesApplyActionFragment extends Fragment { public static final String TAG = "EpisodeActionFragment"; - public static final int ACTION_QUEUE = 1; - public static final int ACTION_MARK_PLAYED = 2; - public static final int ACTION_MARK_UNPLAYED = 4; - public static final int ACTION_DOWNLOAD = 8; + private static final int ACTION_QUEUE = 1; + private static final int ACTION_MARK_PLAYED = 2; + private static final int ACTION_MARK_UNPLAYED = 4; + private static final int ACTION_DOWNLOAD = 8; public static final int ACTION_REMOVE = 16; - public static final int ACTION_ALL = ACTION_QUEUE | ACTION_MARK_PLAYED | ACTION_MARK_UNPLAYED + private static final int ACTION_ALL = ACTION_QUEUE | ACTION_MARK_PLAYED | ACTION_MARK_UNPLAYED | ACTION_DOWNLOAD | ACTION_REMOVE; private ListView mListView; diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java index 0bd75b5b0..b9276982a 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java @@ -43,7 +43,7 @@ public class ProxyDialog { private static final String TAG = "ProxyDialog"; - private Context context; + private final Context context; private MaterialDialog dialog; @@ -243,47 +243,44 @@ public class ProxyDialog { txtvMessage.setTextColor(textColorPrimary); txtvMessage.setText("{fa-circle-o-notch spin} " + checking); txtvMessage.setVisibility(View.VISIBLE); - subscription = Observable.create(new Observable.OnSubscribe<Response>() { - @Override - public void call(Subscriber<? super Response> subscriber) { - String type = (String) spType.getSelectedItem(); - String host = etHost.getText().toString(); - String port = etPort.getText().toString(); - String username = etUsername.getText().toString(); - String password = etPassword.getText().toString(); - int portValue = 8080; - if(!TextUtils.isEmpty(port)) { - portValue = Integer.valueOf(port); - } - SocketAddress address = InetSocketAddress.createUnresolved(host, portValue); - Proxy.Type proxyType = Proxy.Type.valueOf(type.toUpperCase()); - Proxy proxy = new Proxy(proxyType, address); - OkHttpClient.Builder builder = AntennapodHttpClient.newBuilder() - .connectTimeout(10, TimeUnit.SECONDS) - .proxy(proxy); - builder.interceptors().clear(); - OkHttpClient client = builder.build(); - if(!TextUtils.isEmpty(username)) { - String credentials = Credentials.basic(username, password); - client.interceptors().add(chain -> { - Request request = chain.request().newBuilder() - .header("Proxy-Authorization", credentials).build(); - return chain.proceed(request); - }); - } - Request request = new Request.Builder() - .url("http://www.google.com") - .head() - .build(); - try { - Response response = client.newCall(request).execute(); - subscriber.onNext(response); - } catch(IOException e) { - subscriber.onError(e); - } - subscriber.onCompleted(); - } - }) + subscription = Observable.create((Observable.OnSubscribe<Response>) subscriber -> { + String type = (String) spType.getSelectedItem(); + String host = etHost.getText().toString(); + String port = etPort.getText().toString(); + String username = etUsername.getText().toString(); + String password = etPassword.getText().toString(); + int portValue = 8080; + if(!TextUtils.isEmpty(port)) { + portValue = Integer.valueOf(port); + } + SocketAddress address = InetSocketAddress.createUnresolved(host, portValue); + Proxy.Type proxyType = Proxy.Type.valueOf(type.toUpperCase()); + Proxy proxy = new Proxy(proxyType, address); + OkHttpClient.Builder builder = AntennapodHttpClient.newBuilder() + .connectTimeout(10, TimeUnit.SECONDS) + .proxy(proxy); + builder.interceptors().clear(); + OkHttpClient client = builder.build(); + if(!TextUtils.isEmpty(username)) { + String credentials = Credentials.basic(username, password); + client.interceptors().add(chain -> { + Request request = chain.request().newBuilder() + .header("Proxy-Authorization", credentials).build(); + return chain.proceed(request); + }); + } + Request request = new Request.Builder() + .url("http://www.google.com") + .head() + .build(); + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response); + } catch(IOException e) { + subscriber.onError(e); + } + subscriber.onCompleted(); + }) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java index 64fc1fda4..72000170e 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java @@ -54,7 +54,7 @@ public class RatingDialog { } } - public static void rateNow() { + private static void rateNow() { Context context = mContext.get(); if(context == null) { return; @@ -67,11 +67,11 @@ public class RatingDialog { saveRated(); } - public static boolean rated() { + private static boolean rated() { return mPreferences.getBoolean(KEY_RATED, false); } - public static void saveRated() { + private static void saveRated() { mPreferences .edit() .putBoolean(KEY_RATED, true) diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java index 5bb3f09c3..be7850495 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java @@ -24,7 +24,7 @@ public abstract class SleepTimerDialog { private static final String TAG = SleepTimerDialog.class.getSimpleName(); - private Context context; + private final Context context; private MaterialDialog dialog; private EditText etxtTime; 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 f14ebbdaf..c050221e1 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java @@ -25,7 +25,7 @@ public class AddFeedFragment extends Fragment { /** * Preset value for url text field. */ - public static final String ARG_FEED_URL = "feedurl"; + private static final String ARG_FEED_URL = "feedurl"; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java index bbfd1688d..f3846c8a4 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java @@ -69,24 +69,24 @@ public class AllEpisodesFragment extends Fragment { private static final String PREF_SCROLL_POSITION = "scroll_position"; private static final String PREF_SCROLL_OFFSET = "scroll_offset"; - protected RecyclerView recyclerView; - protected AllEpisodesRecycleAdapter listAdapter; + RecyclerView recyclerView; + AllEpisodesRecycleAdapter listAdapter; private ProgressBar progLoading; - protected List<FeedItem> episodes; + List<FeedItem> episodes; private List<Downloader> downloaderList; private boolean itemsLoaded = false; private boolean viewsCreated = false; private boolean isUpdatingFeeds; - protected boolean isMenuInvalidationAllowed = false; + boolean isMenuInvalidationAllowed = false; - protected Subscription subscription; + Subscription subscription; private LinearLayoutManager layoutManager; - protected boolean showOnlyNewEpisodes() { return false; } - protected String getPrefName() { return DEFAULT_PREF_NAME; } + boolean showOnlyNewEpisodes() { return false; } + String getPrefName() { return DEFAULT_PREF_NAME; } @Override public void onCreate(Bundle savedInstanceState) { @@ -165,7 +165,7 @@ public class AllEpisodesFragment extends Fragment { } } - protected void resetViewState() { + void resetViewState() { viewsCreated = false; listAdapter = null; } @@ -284,13 +284,7 @@ public class AllEpisodesFragment extends Fragment { return super.onContextItemSelected(item); } - try { - return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem); - } catch (DownloadRequestException e) { - e.printStackTrace(); - Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show(); - return true; - } + return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem); } @Override @@ -299,10 +293,10 @@ public class AllEpisodesFragment extends Fragment { R.layout.all_episodes_fragment); } - protected View onCreateViewHelper(LayoutInflater inflater, - ViewGroup container, - Bundle savedInstanceState, - int fragmentResource) { + View onCreateViewHelper(LayoutInflater inflater, + ViewGroup container, + Bundle savedInstanceState, + int fragmentResource) { super.onCreateView(inflater, container, savedInstanceState); View root = inflater.inflate(fragmentResource, container, false); @@ -346,7 +340,7 @@ public class AllEpisodesFragment extends Fragment { updateShowOnlyEpisodesListViewState(); } - protected AllEpisodesRecycleAdapter.ItemAccess itemAccess = new AllEpisodesRecycleAdapter.ItemAccess() { + private final AllEpisodesRecycleAdapter.ItemAccess itemAccess = new AllEpisodesRecycleAdapter.ItemAccess() { @Override public int getCount() { @@ -444,7 +438,7 @@ public class AllEpisodesFragment extends Fragment { } } - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { if ((arg & EVENTS) != 0) { @@ -459,7 +453,7 @@ public class AllEpisodesFragment extends Fragment { private void updateShowOnlyEpisodesListViewState() { } - protected void loadItems() { + void loadItems() { if(subscription != null) { subscription.unsubscribe(); } @@ -483,7 +477,7 @@ public class AllEpisodesFragment extends Fragment { }, error -> Log.e(TAG, Log.getStackTraceString(error))); } - protected List<FeedItem> loadData() { + List<FeedItem> loadData() { return DBReader.getRecentlyPublishedEpisodes(RECENT_EPISODES_LIMIT); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java index 1ba7ed557..f37ecd5e7 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java @@ -168,7 +168,7 @@ public class CompletedDownloadsFragment extends ListFragment { } } - private DownloadedEpisodesListAdapter.ItemAccess itemAccess = new DownloadedEpisodesListAdapter.ItemAccess() { + private final DownloadedEpisodesListAdapter.ItemAccess itemAccess = new DownloadedEpisodesListAdapter.ItemAccess() { @Override public int getCount() { return (items != null) ? items.size() : 0; @@ -189,7 +189,7 @@ public class CompletedDownloadsFragment extends ListFragment { } }; - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { if ((arg & EVENTS) != 0) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java index 0a710196a..9a4c9e030 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -82,7 +82,7 @@ public class DownloadLogFragment extends ListFragment { getActivity().supportInvalidateOptionsMenu(); } - private DownloadLogAdapter.ItemAccess itemAccess = new DownloadLogAdapter.ItemAccess() { + private final DownloadLogAdapter.ItemAccess itemAccess = new DownloadLogAdapter.ItemAccess() { @Override public int getCount() { @@ -99,7 +99,7 @@ public class DownloadLogFragment extends ListFragment { } }; - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java index 5d29f4bde..9c4d00e31 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java @@ -25,7 +25,7 @@ public class DownloadsFragment extends Fragment { public static final String ARG_SELECTED_TAB = "selected_tab"; public static final int POS_RUNNING = 0; - public static final int POS_COMPLETED = 1; + private static final int POS_COMPLETED = 1; public static final int POS_LOG = 2; private static final String PREF_LAST_TAB_POSITION = "tab_position"; @@ -80,7 +80,7 @@ public class DownloadsFragment extends Fragment { public static class DownloadsPagerAdapter extends FragmentPagerAdapter { - Resources resources; + final Resources resources; public DownloadsPagerAdapter(FragmentManager fm, Resources resources) { super(fm); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java index e2fbd91f3..8928d2bf3 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java @@ -21,10 +21,10 @@ public class EpisodesFragment extends Fragment { public static final String TAG = "EpisodesFragment"; private static final String PREF_LAST_TAB_POSITION = "tab_position"; - public static final int POS_NEW_EPISODES = 0; - public static final int POS_ALL_EPISODES = 1; - public static final int POS_FAV_EPISODES = 2; - public static final int TOTAL_COUNT = 3; + private static final int POS_NEW_EPISODES = 0; + private static final int POS_ALL_EPISODES = 1; + private static final int POS_FAV_EPISODES = 2; + private static final int TOTAL_COUNT = 3; private TabLayout tabLayout; @@ -79,7 +79,7 @@ public class EpisodesFragment extends Fragment { public static class EpisodesPagerAdapter extends FragmentPagerAdapter { private final Resources resources; - private AllEpisodesFragment[] fragments = { + private final AllEpisodesFragment[] fragments = { new NewEpisodesFragment(), new AllEpisodesFragment(), new FavoriteEpisodesFragment() diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java index 5bb8e0a2d..a9bf39632 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java @@ -208,7 +208,7 @@ public class ExternalPlayerFragment extends Fragment { return controller; } - public void onPositionObserverUpdate() { + private void onPositionObserverUpdate() { mProgressBar.setProgress((int) ((double) controller.getPosition() / controller.getDuration() * 100)); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java index 234c8377d..76d19d61c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java @@ -26,7 +26,7 @@ import de.danoeh.antennapod.core.storage.DBWriter; public class FavoriteEpisodesFragment extends AllEpisodesFragment { - public static final String TAG = "FavoriteEpisodesFrag"; + private static final String TAG = "FavoriteEpisodesFrag"; private static final String PREF_NAME = "PrefFavoriteEpisodesFragment"; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java index 7c1ec5ec1..6ee9ce467 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java @@ -49,7 +49,7 @@ public class FyydSearchFragment extends Fragment { private Button butRetry; private TextView txtvEmpty; - private FyydClient client = new FyydClient(AntennapodHttpClient.getHttpClient()); + private final FyydClient client = new FyydClient(AntennapodHttpClient.getHttpClient()); /** * List of podcasts retreived from the search @@ -169,7 +169,7 @@ public class FyydSearchFragment extends Fragment { progressBar.setVisibility(View.VISIBLE); } - void processSearchResult(FyydResponse response) { + private void processSearchResult(FyydResponse response) { adapter.clear(); if (!response.getData().isEmpty()) { adapter.clear(); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java index f6bdfddda..935fd7898 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java @@ -10,7 +10,6 @@ import android.content.SharedPreferences; import android.content.res.TypedArray; import android.graphics.Color; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; @@ -201,7 +200,7 @@ public class ItemDescriptionFragment extends Fragment implements MediaplayerInfo } - private View.OnLongClickListener webViewLongClickListener = new View.OnLongClickListener() { + private final View.OnLongClickListener webViewLongClickListener = new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java index da7fc5299..4ae6b97ee 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java @@ -334,13 +334,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { openPodcast(); return true; default: - try { - return FeedItemMenuHandler.onMenuItemClicked(getActivity(), menuItem.getItemId(), item); - } catch (DownloadRequestException e) { - e.printStackTrace(); - Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show(); - return true; - } + return FeedItemMenuHandler.onMenuItemClicked(getActivity(), menuItem.getItemId(), item); } } @@ -449,7 +443,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { } } - private View.OnLongClickListener webViewLongClickListener = new View.OnLongClickListener() { + private final View.OnLongClickListener webViewLongClickListener = new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { @@ -551,7 +545,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture { } - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { if ((arg & EVENTS) != 0) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java index d819e68d2..890f31f57 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java @@ -7,7 +7,6 @@ import android.content.Intent; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.LightingColorFilter; -import android.os.Build; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v4.view.MenuItemCompat; @@ -22,7 +21,6 @@ import android.view.View; import android.widget.AdapterView; import android.widget.ImageButton; import android.widget.ImageView; -import android.widget.ListAdapter; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; @@ -89,9 +87,9 @@ public class ItemlistFragment extends ListFragment { | EventDistributor.PLAYER_STATUS_UPDATE; public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.danoeh.antennapod.activity.selected_feeditem"; - public static final String ARGUMENT_FEED_ID = "argument.de.danoeh.antennapod.feed_id"; + private static final String ARGUMENT_FEED_ID = "argument.de.danoeh.antennapod.feed_id"; - protected FeedItemlistAdapter adapter; + private FeedItemlistAdapter adapter; private ContextMenu contextMenu; private AdapterView.AdapterContextMenuInfo lastMenuInfo = null; @@ -342,12 +340,7 @@ public class ItemlistFragment extends ListFragment { return super.onContextItemSelected(item); } - try { - return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem); - } catch (DownloadRequestException e) { - // context menu doesn't contain download functionality - return true; - } + return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem); } @Override @@ -407,7 +400,7 @@ public class ItemlistFragment extends ListFragment { } } - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { @@ -573,7 +566,7 @@ public class ItemlistFragment extends ListFragment { } } - private FeedItemlistAdapter.ItemAccess itemAccess = new FeedItemlistAdapter.ItemAccess() { + private final FeedItemlistAdapter.ItemAccess itemAccess = new FeedItemlistAdapter.ItemAccess() { @Override public FeedItem getItem(int position) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java index 43dedad25..08610c1f3 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java @@ -75,7 +75,7 @@ public class ItunesSearchFragment extends Fragment { * Replace adapter data with provided search results from SearchTask. * @param result List of Podcast objects containing search results */ - void updateData(List<Podcast> result) { + private void updateData(List<Podcast> result) { this.searchResults = result; adapter.clear(); if (result != null && result.size() > 0) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java index 441f0096c..fb6280021 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java @@ -199,7 +199,7 @@ public class PlaybackHistoryFragment extends ListFragment { } } - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { @@ -224,7 +224,7 @@ public class PlaybackHistoryFragment extends ListFragment { getActivity().supportInvalidateOptionsMenu(); } - private FeedItemlistAdapter.ItemAccess itemAccess = new FeedItemlistAdapter.ItemAccess() { + private final FeedItemlistAdapter.ItemAccess itemAccess = new FeedItemlistAdapter.ItemAccess() { @Override public int getItemDownloadProgressPercent(FeedItem item) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java index fccb86076..bf22e71f5 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -363,13 +363,7 @@ public class QueueFragment extends Fragment { DBWriter.moveQueueItemToBottom(selectedItem.getId(), true); return true; default: - try { - return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem); - } catch (DownloadRequestException e) { - e.printStackTrace(); - Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show(); - return true; - } + return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem); } } @@ -519,7 +513,7 @@ public class QueueFragment extends Fragment { infoBar.setText(info); } - private QueueRecyclerAdapter.ItemAccess itemAccess = new QueueRecyclerAdapter.ItemAccess() { + private final QueueRecyclerAdapter.ItemAccess itemAccess = new QueueRecyclerAdapter.ItemAccess() { @Override public int getCount() { return queue != null ? queue.size() : 0; @@ -579,7 +573,7 @@ public class QueueFragment extends Fragment { } }; - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { if ((arg & EVENTS) != 0) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java index ba526edb3..66c59b7f7 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java @@ -75,7 +75,7 @@ public class RunningDownloadsFragment extends ListFragment { } - private DownloadlistAdapter.ItemAccess itemAccess = new DownloadlistAdapter.ItemAccess() { + private final DownloadlistAdapter.ItemAccess itemAccess = new DownloadlistAdapter.ItemAccess() { @Override public int getCount() { return (downloaderList != null) ? downloaderList.size() : 0; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java index 9626e6c2e..c834b7ea7 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java @@ -210,7 +210,7 @@ public class SubscriptionFragment extends Fragment { loadSubscriptions(); } - private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { + private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() { @Override public void update(EventDistributor eventDistributor, Integer arg) { if ((EVENTS & arg) != 0) { @@ -220,7 +220,7 @@ public class SubscriptionFragment extends Fragment { } }; - private SubscriptionsAdapter.ItemAccess itemAccess = new SubscriptionsAdapter.ItemAccess() { + private final SubscriptionsAdapter.ItemAccess itemAccess = new SubscriptionsAdapter.ItemAccess() { @Override public int getCount() { if (navDrawerData != null) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java index aff5069c6..b48027668 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java @@ -20,7 +20,7 @@ import de.danoeh.antennapod.R; */ public class GpodnetMainFragment extends Fragment { - public static final String TAG = "GpodnetMainFragment"; + private static final String TAG = "GpodnetMainFragment"; private static final String PREF_LAST_TAB_POSITION = "tab_position"; private TabLayout tabLayout; @@ -71,7 +71,7 @@ public class GpodnetMainFragment extends Fragment { private static final int POS_TAGS = 1; private static final int POS_SUGGESTIONS = 2; - Resources resources; + final Resources resources; public GpodnetPagerAdapter(FragmentManager fm, Resources resources) { super(fm); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java index a54c90862..055358c64 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java @@ -91,7 +91,7 @@ public abstract class PodcastListFragment extends Fragment { return root; } - protected void onPodcastSelected(GpodnetPodcast selection) { + private void onPodcastSelected(GpodnetPodcast selection) { Log.d(TAG, "Selected podcast: " + selection.toString()); Intent intent = new Intent(getActivity(), OnlineFeedViewActivity.class); intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, selection.getUrl()); @@ -101,7 +101,7 @@ public abstract class PodcastListFragment extends Fragment { protected abstract List<GpodnetPodcast> loadPodcastData(GpodnetService service) throws GpodnetServiceException; - protected final void loadData() { + final void loadData() { AsyncTask<Void, Void, List<GpodnetPodcast>> loaderTask = new AsyncTask<Void, Void, List<GpodnetPodcast>>() { volatile Exception exception = null; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java index 613e06805..10bd636dd 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java @@ -73,7 +73,7 @@ public class SearchListFragment extends PodcastListFragment { return service.searchPodcasts(query, 0); } - public void changeQuery(String query) { + private void changeQuery(String query) { Validate.notNull(query); this.query = query; diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java index 57b7c359c..f6f73e017 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java @@ -17,7 +17,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.playback.PlaybackService; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; -import de.danoeh.antennapod.core.storage.DownloadRequestException; import de.danoeh.antennapod.core.util.IntentUtils; import de.danoeh.antennapod.core.util.LongList; import de.danoeh.antennapod.core.util.ShareUtils; @@ -155,7 +154,7 @@ public class FeedItemMenuHandler { } public static boolean onMenuItemClicked(Context context, int menuItemId, - FeedItem selectedItem) throws DownloadRequestException { + FeedItem selectedItem) { switch (menuItemId) { case R.id.skip_episode_item: context.sendBroadcast(new Intent(PlaybackService.ACTION_SKIP_CURRENT_EPISODE)); diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java index 5da6f1fb0..b5e0f1e99 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -46,7 +46,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Collections; -import java.util.Comparator; import java.util.GregorianCalendar; import java.util.List; import java.util.concurrent.TimeUnit; diff --git a/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java b/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java index a373c5353..c9bd973cb 100644 --- a/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java +++ b/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java @@ -22,8 +22,8 @@ public class SPAReceiver extends BroadcastReceiver{ private static final String TAG = "SPAReceiver"; public static final String ACTION_SP_APPS_QUERY_FEEDS = "de.danoeh.antennapdsp.intent.SP_APPS_QUERY_FEEDS"; - public static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE = "de.danoeh.antennapdsp.intent.SP_APPS_QUERY_FEEDS_RESPONSE"; - public static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE_FEEDS_EXTRA = "feeds"; + private static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE = "de.danoeh.antennapdsp.intent.SP_APPS_QUERY_FEEDS_RESPONSE"; + private static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE_FEEDS_EXTRA = "feeds"; @Override public void onReceive(Context context, Intent intent) { diff --git a/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java b/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java index b5bfb1ae4..d5141bd37 100644 --- a/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java +++ b/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java @@ -38,7 +38,7 @@ public class PlayerWidgetService extends Service { /** * Controls write access to playbackservice reference */ - private Object psLock; + private final Object psLock = new Object(); /** * True while service is updating the widget @@ -53,7 +53,6 @@ public class PlayerWidgetService extends Service { super.onCreate(); Log.d(TAG, "Service created"); isUpdating = false; - psLock = new Object(); } @Override @@ -194,7 +193,7 @@ public class PlayerWidgetService extends Service { } } - private ServiceConnection mConnection = new ServiceConnection() { + private final ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { Log.d(TAG, "Connection to service established"); synchronized (psLock) { @@ -224,7 +223,7 @@ public class PlayerWidgetService extends Service { class ViewUpdater extends Thread { private static final String THREAD_NAME = "ViewUpdater"; - private PlayerWidgetService service; + private final PlayerWidgetService service; public ViewUpdater(PlayerWidgetService service) { super(); diff --git a/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java b/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java index 27b6ee2bc..7ce33e11f 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java +++ b/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java @@ -1,13 +1,13 @@ package de.danoeh.antennapod.view; import android.content.Context; +import android.support.v7.widget.AppCompatImageView; import android.util.AttributeSet; -import android.widget.ImageView; /** * From http://stackoverflow.com/a/19449488/6839 */ -public class SquareImageView extends ImageView { +public class SquareImageView extends AppCompatImageView { public SquareImageView(Context context) { super(context); @@ -26,6 +26,7 @@ public class SquareImageView extends ImageView { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int width = getMeasuredWidth(); + //noinspection SuspiciousNameCombination setMeasuredDimension(width, width); } diff --git a/app/src/main/res/layout-v14/authentication_dialog.xml b/app/src/main/res/layout-v14/authentication_dialog.xml deleted file mode 100644 index 00e74c9e1..000000000 --- a/app/src/main/res/layout-v14/authentication_dialog.xml +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical" > - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" > - - <EditText - android:id="@+id/etxtUsername" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_weight="1" - android:layout_margin="16dp" - android:hint="@string/username_label" - android:focusable="true" - android:focusableInTouchMode="true" - android:cursorVisible="true"/> - - <EditText - android:id="@+id/etxtPassword" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_weight="1" - android:layout_margin="16dp" - android:inputType="textPassword" - android:hint="@string/password_label" - android:focusable="true" - android:focusableInTouchMode="true" - android:cursorVisible="true"/> - - <CheckBox - android:id="@+id/chkSaveUsernamePassword" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:text="@string/save_username_password_label"/> - </LinearLayout> - - <RelativeLayout - android:id="@+id/footer" - android:layout_width="fill_parent" - android:layout_height="48dp" > - - <View - android:layout_width="match_parent" - android:layout_height="1dip" - android:layout_alignParentTop="true" - android:background="?android:attr/dividerVertical" /> - - <View - android:id="@+id/horizontal_divider" - android:layout_width="1dip" - android:layout_height="fill_parent" - android:layout_alignParentTop="true" - android:layout_centerHorizontal="true" - android:layout_marginBottom="4dp" - android:layout_marginTop="4dp" - android:background="?android:attr/dividerVertical" /> - - <Button - android:id="@+id/butCancel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentLeft="true" - android:layout_alignParentTop="true" - android:layout_toLeftOf="@id/horizontal_divider" - android:background="?android:attr/selectableItemBackground" - android:text="@string/cancel_label" /> - - <Button - android:id="@+id/butConfirm" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentRight="true" - android:layout_alignParentTop="true" - android:layout_toRightOf="@id/horizontal_divider" - android:background="?android:attr/selectableItemBackground" - android:text="@string/confirm_label" /> - </RelativeLayout> - -</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout-v14/directory_chooser.xml b/app/src/main/res/layout-v14/directory_chooser.xml deleted file mode 100644 index 14e2f6a38..000000000 --- a/app/src/main/res/layout-v14/directory_chooser.xml +++ /dev/null @@ -1,114 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:background="@android:color/darker_gray"> - - <RelativeLayout - android:id="@+id/footer" - android:layout_width="fill_parent" - android:layout_height="48dp" - android:layout_alignParentBottom="true" > - - <View - android:layout_width="match_parent" - android:layout_height="1dip" - android:layout_alignParentTop="true" - android:background="?android:attr/dividerVertical" /> - - <View - android:id="@+id/horizontal_divider" - android:layout_width="1dip" - android:layout_height="fill_parent" - android:layout_alignParentTop="true" - android:layout_centerHorizontal="true" - android:layout_marginBottom="4dp" - android:layout_marginTop="4dp" - android:background="?android:attr/dividerVertical" /> - - <Button - android:id="@+id/butCancel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentLeft="true" - android:layout_alignParentTop="true" - android:layout_toLeftOf="@id/horizontal_divider" - android:background="?android:attr/selectableItemBackground" - android:text="@string/cancel_label" /> - - <Button - android:id="@+id/butConfirm" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentRight="true" - android:layout_alignParentTop="true" - android:layout_toRightOf="@id/horizontal_divider" - android:background="?android:attr/selectableItemBackground" - android:text="@string/confirm_label" /> - </RelativeLayout> - - <RelativeLayout - android:id="@+id/directory_info" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentTop="true" > - - <ImageButton - android:id="@+id/butNavUp" - android:contentDescription="@string/navigate_upwards_label" - android:layout_width="60dp" - android:layout_height="60dp" - android:layout_alignParentLeft="true" - android:layout_alignParentTop="true" - android:background="?attr/selectableItemBackground" - android:src="?attr/navigation_up" - tools:src="@drawable/navigation_up" - tools:background="@android:color/holo_green_dark" /> - - <TextView - android:id="@+id/txtvSelectedFolderLabel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentTop="true" - android:layout_marginLeft="8dp" - android:layout_marginRight="8dp" - android:layout_marginTop="8dp" - android:layout_toRightOf="@id/butNavUp" - android:text="@string/selected_folder_label" - android:textStyle="bold" - tools:background="@android:color/holo_green_dark"> - </TextView> - - <TextView - android:id="@+id/txtvSelectedFolder" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_alignParentRight="true" - android:layout_below="@id/txtvSelectedFolderLabel" - android:layout_margin="8dp" - android:layout_toRightOf="@id/butNavUp" - android:ellipsize="start" - android:scrollHorizontally="true" - android:singleLine="true" - tools:text="/path/to/selected/folder" - tools:background="@android:color/holo_green_dark"/> - - <View - android:id="@+id/divider" - android:layout_width="match_parent" - android:layout_height="1dp" - android:layout_below="@id/butNavUp" - android:background="@color/holo_blue_light" /> - </RelativeLayout> - - <ListView - android:id="@+id/directory_list" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_above="@id/footer" - android:layout_below="@id/directory_info" /> - -</RelativeLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout-v14/download_authentication_activity.xml b/app/src/main/res/layout-v14/download_authentication_activity.xml deleted file mode 100644 index f6925dc3a..000000000 --- a/app/src/main/res/layout-v14/download_authentication_activity.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <TextView - android:id="@+id/txtvTitle" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/authentication_notification_title" - android:layout_alignParentTop="true" - android:textSize="@dimen/text_size_large" - android:layout_margin="16dp" - android:textColor="@color/holo_blue_light" - android:textStyle="italic"/> - - <TextView - android:id="@+id/txtvDescription" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/authentication_notification_msg" - android:layout_below="@id/txtvTitle" - android:textSize="@dimen/text_size_medium" - android:textColor="?android:attr/textColorSecondary" - android:layout_margin="16dp"/> - - <EditText - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:id="@+id/etxtUsername" - android:hint="@string/username_label" - android:layout_below="@id/txtvDescription" - android:focusable="true" - android:focusableInTouchMode="true" - android:cursorVisible="true"/> - - <EditText - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_margin="16dp" - android:id="@+id/etxtPassword" - android:hint="@string/password_label" - android:inputType="textPassword" - android:layout_below="@id/etxtUsername" - android:focusable="true" - android:focusableInTouchMode="true" - android:cursorVisible="true"/> - - <RelativeLayout - android:id="@+id/footer" - android:layout_width="fill_parent" - android:layout_height="48dp" - android:focusableInTouchMode="true" - android:layout_alignParentBottom="true"> - - <View - android:layout_width="match_parent" - android:layout_height="1dip" - android:layout_alignParentTop="true" - android:background="?android:attr/dividerVertical"/> - - <View - android:id="@+id/horizontal_divider" - android:layout_width="1dip" - android:layout_height="fill_parent" - android:layout_alignParentTop="true" - android:layout_centerHorizontal="true" - android:layout_marginBottom="4dp" - android:layout_marginTop="4dp" - android:background="?android:attr/dividerVertical"/> - - <Button - android:id="@+id/butCancel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentLeft="true" - android:layout_alignParentTop="true" - android:layout_toLeftOf="@id/horizontal_divider" - android:background="?android:attr/selectableItemBackground" - android:text="@string/cancel_label"/> - - <Button - android:id="@+id/butConfirm" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentRight="true" - android:layout_alignParentTop="true" - android:layout_toRightOf="@id/horizontal_divider" - android:background="?android:attr/selectableItemBackground" - android:text="@string/confirm_label"/> - </RelativeLayout> - - -</RelativeLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout-v14/opml_selection.xml b/app/src/main/res/layout-v14/opml_selection.xml deleted file mode 100644 index 3133debd1..000000000 --- a/app/src/main/res/layout-v14/opml_selection.xml +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" > - - <RelativeLayout - android:id="@+id/footer" - android:layout_width="fill_parent" - android:layout_height="48dp" - android:layout_alignParentBottom="true" > - - <View - android:layout_width="match_parent" - android:layout_height="1dip" - android:layout_alignParentTop="true" - android:background="?android:attr/dividerVertical" /> - - <View - android:id="@+id/horizontal_divider" - android:layout_width="1dip" - android:layout_height="fill_parent" - android:layout_alignParentTop="true" - android:layout_centerHorizontal="true" - android:layout_marginBottom="4dp" - android:layout_marginTop="4dp" - android:background="?android:attr/dividerVertical" /> - - <Button - android:id="@+id/butCancel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentLeft="true" - android:layout_alignParentTop="true" - android:layout_toLeftOf="@id/horizontal_divider" - android:background="?android:attr/selectableItemBackground" - android:text="@string/cancel_label" /> - - <Button - android:id="@+id/butConfirm" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentRight="true" - android:layout_alignParentTop="true" - android:layout_toRightOf="@id/horizontal_divider" - android:background="?android:attr/selectableItemBackground" - android:text="@string/confirm_label" /> - </RelativeLayout> - - <ListView - android:id="@+id/feedlist" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_above="@id/footer" - android:layout_alignParentTop="true" - tools:listitem="@android:layout/simple_list_item_multiple_choice" > - </ListView> - -</RelativeLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout-v14/time_dialog.xml b/app/src/main/res/layout-v14/time_dialog.xml deleted file mode 100644 index ba4249268..000000000 --- a/app/src/main/res/layout-v14/time_dialog.xml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical" - android:gravity="center"> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="horizontal" > - - <EditText - android:id="@+id/etxtTime" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" - android:layout_margin="8dp" - android:ems="2" - android:hint="@string/enter_time_here_label" - android:inputType="number" - android:maxLength="2" > - - <requestFocus /> - </EditText> - - <Spinner - android:id="@+id/spTimeUnit" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="8dp" - android:layout_marginTop="8dp" /> - </LinearLayout> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="vertical"> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:text="@string/timer_about_to_expire_label" - android:textSize="16sp" /> - - <CheckBox - android:id="@+id/cbShakeToReset" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/shake_to_reset_label" /> - - <CheckBox - android:id="@+id/cbVibrate" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/timer_vibration_label" /> - - <CheckBox - android:id="@+id/chAutoEnable" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/auto_enable_label" /> - - </LinearLayout> - -</LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/authentication_dialog.xml b/app/src/main/res/layout/authentication_dialog.xml index e18ab42eb..00e74c9e1 100644 --- a/app/src/main/res/layout/authentication_dialog.xml +++ b/app/src/main/res/layout/authentication_dialog.xml @@ -1,14 +1,13 @@ <?xml version="1.0" encoding="utf-8"?> - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical"> + android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> + android:orientation="vertical" > <EditText android:id="@+id/etxtUsername" @@ -39,30 +38,50 @@ android:layout_height="wrap_content" android:layout_margin="16dp" android:text="@string/save_username_password_label"/> + </LinearLayout> + <RelativeLayout + android:id="@+id/footer" + android:layout_width="fill_parent" + android:layout_height="48dp" > - </LinearLayout> + <View + android:layout_width="match_parent" + android:layout_height="1dip" + android:layout_alignParentTop="true" + android:background="?android:attr/dividerVertical" /> - <LinearLayout - style="@android:style/ButtonBar" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> + <View + android:id="@+id/horizontal_divider" + android:layout_width="1dip" + android:layout_height="fill_parent" + android:layout_alignParentTop="true" + android:layout_centerHorizontal="true" + android:layout_marginBottom="4dp" + android:layout_marginTop="4dp" + android:background="?android:attr/dividerVertical" /> <Button - android:id="@+id/butConfirm" - android:layout_width="0dp" + android:id="@+id/butCancel" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginRight="8dp" - android:text="@string/confirm_label" - android:layout_weight="1"/> + android:layout_alignParentBottom="true" + android:layout_alignParentLeft="true" + android:layout_alignParentTop="true" + android:layout_toLeftOf="@id/horizontal_divider" + android:background="?android:attr/selectableItemBackground" + android:text="@string/cancel_label" /> <Button - android:id="@+id/butCancel" - android:text="@string/cancel_label" - android:layout_width="0dp" + android:id="@+id/butConfirm" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1"/> - </LinearLayout> + android:layout_alignParentBottom="true" + android:layout_alignParentRight="true" + android:layout_alignParentTop="true" + android:layout_toRightOf="@id/horizontal_divider" + android:background="?android:attr/selectableItemBackground" + android:text="@string/confirm_label" /> + </RelativeLayout> </LinearLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/directory_chooser.xml b/app/src/main/res/layout/directory_chooser.xml index 635a73cf4..14e2f6a38 100644 --- a/app/src/main/res/layout/directory_chooser.xml +++ b/app/src/main/res/layout/directory_chooser.xml @@ -2,30 +2,53 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" > + android:layout_height="match_parent" + tools:background="@android:color/darker_gray"> - <LinearLayout + <RelativeLayout android:id="@+id/footer" - style="@android:style/ButtonBar" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:orientation="horizontal" > + android:layout_width="fill_parent" + android:layout_height="48dp" + android:layout_alignParentBottom="true" > - <Button - android:id="@+id/butConfirm" - android:layout_width="0px" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="@string/confirm_label" /> + <View + android:layout_width="match_parent" + android:layout_height="1dip" + android:layout_alignParentTop="true" + android:background="?android:attr/dividerVertical" /> + + <View + android:id="@+id/horizontal_divider" + android:layout_width="1dip" + android:layout_height="fill_parent" + android:layout_alignParentTop="true" + android:layout_centerHorizontal="true" + android:layout_marginBottom="4dp" + android:layout_marginTop="4dp" + android:background="?android:attr/dividerVertical" /> <Button android:id="@+id/butCancel" - android:layout_width="0px" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" + android:layout_alignParentBottom="true" + android:layout_alignParentLeft="true" + android:layout_alignParentTop="true" + android:layout_toLeftOf="@id/horizontal_divider" + android:background="?android:attr/selectableItemBackground" android:text="@string/cancel_label" /> - </LinearLayout> + + <Button + android:id="@+id/butConfirm" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_alignParentRight="true" + android:layout_alignParentTop="true" + android:layout_toRightOf="@id/horizontal_divider" + android:background="?android:attr/selectableItemBackground" + android:text="@string/confirm_label" /> + </RelativeLayout> <RelativeLayout android:id="@+id/directory_info" @@ -56,7 +79,7 @@ android:layout_toRightOf="@id/butNavUp" android:text="@string/selected_folder_label" android:textStyle="bold" - tools:background="@android:color/holo_blue_bright"> + tools:background="@android:color/holo_green_dark"> </TextView> <TextView @@ -71,7 +94,7 @@ android:scrollHorizontally="true" android:singleLine="true" tools:text="/path/to/selected/folder" - tools:background="@android:color/holo_blue_bright"/> + tools:background="@android:color/holo_green_dark"/> <View android:id="@+id/divider" diff --git a/app/src/main/res/layout/download_authentication_activity.xml b/app/src/main/res/layout/download_authentication_activity.xml index 27604973a..f6925dc3a 100644 --- a/app/src/main/res/layout/download_authentication_activity.xml +++ b/app/src/main/res/layout/download_authentication_activity.xml @@ -48,28 +48,51 @@ android:focusableInTouchMode="true" android:cursorVisible="true"/> - <LinearLayout + <RelativeLayout android:id="@+id/footer" - style="@android:style/ButtonBar" android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:orientation="horizontal"> + android:layout_height="48dp" + android:focusableInTouchMode="true" + android:layout_alignParentBottom="true"> - <Button - android:id="@+id/butConfirm" - android:layout_width="0px" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="@string/confirm_label"/> + <View + android:layout_width="match_parent" + android:layout_height="1dip" + android:layout_alignParentTop="true" + android:background="?android:attr/dividerVertical"/> + + <View + android:id="@+id/horizontal_divider" + android:layout_width="1dip" + android:layout_height="fill_parent" + android:layout_alignParentTop="true" + android:layout_centerHorizontal="true" + android:layout_marginBottom="4dp" + android:layout_marginTop="4dp" + android:background="?android:attr/dividerVertical"/> <Button android:id="@+id/butCancel" - android:layout_width="0px" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" + android:layout_alignParentBottom="true" + android:layout_alignParentLeft="true" + android:layout_alignParentTop="true" + android:layout_toLeftOf="@id/horizontal_divider" + android:background="?android:attr/selectableItemBackground" android:text="@string/cancel_label"/> - </LinearLayout> + + <Button + android:id="@+id/butConfirm" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_alignParentRight="true" + android:layout_alignParentTop="true" + android:layout_toRightOf="@id/horizontal_divider" + android:background="?android:attr/selectableItemBackground" + android:text="@string/confirm_label"/> + </RelativeLayout> </RelativeLayout>
\ No newline at end of file diff --git a/app/src/main/res/layout/ellipsize_start_listitem.xml b/app/src/main/res/layout/ellipsize_start_listitem.xml index f737b60d3..4a70ff982 100644 --- a/app/src/main/res/layout/ellipsize_start_listitem.xml +++ b/app/src/main/res/layout/ellipsize_start_listitem.xml @@ -13,7 +13,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="@dimen/text_size_small" - android:lines="1" android:singleLine="true" android:layout_margin="16dp" android:ellipsize="start" diff --git a/app/src/main/res/layout/feedinfo.xml b/app/src/main/res/layout/feedinfo.xml index 69b835ee1..549c8ce22 100644 --- a/app/src/main/res/layout/feedinfo.xml +++ b/app/src/main/res/layout/feedinfo.xml @@ -249,10 +249,7 @@ app:layout_row="1" app:layout_column="0" android:text="@string/password_label" - android:textColor="?android:attr/textColorPrimary" - android:focusable="true" - android:focusableInTouchMode="true" - android:cursorVisible="true"/> + android:textColor="?android:attr/textColorPrimary" /> <EditText android:id="@+id/etxtPassword" @@ -261,7 +258,10 @@ app:layout_row="1" app:layout_column="1" android:hint="@string/password_label" - android:inputType="textPassword"/> + android:inputType="textPassword" + android:focusable="true" + android:focusableInTouchMode="true" + android:cursorVisible="true"/> </android.support.v7.widget.GridLayout> diff --git a/app/src/main/res/layout/nav_list.xml b/app/src/main/res/layout/nav_list.xml index 7e72bb39b..db4d44675 100644 --- a/app/src/main/res/layout/nav_list.xml +++ b/app/src/main/res/layout/nav_list.xml @@ -31,7 +31,7 @@ android:scaleType="centerCrop" android:src="?attr/ic_settings" tools:background="@android:color/holo_orange_dark" - tools:src="@android:drawable/sym_def_app_icon"></ImageView> + tools:src="@android:drawable/sym_def_app_icon" /> <TextView android:layout_width="wrap_content" @@ -69,5 +69,5 @@ android:paddingTop="@dimen/list_vertical_padding" android:scrollbarStyle="outsideOverlay" tools:background="@android:color/holo_purple" - tools:listitem="@layout/nav_listitem"></ListView> + tools:listitem="@layout/nav_listitem" /> </RelativeLayout> diff --git a/app/src/main/res/layout/opml_import.xml b/app/src/main/res/layout/opml_import.xml index 2a67e7ee1..ac75cb8b3 100644 --- a/app/src/main/res/layout/opml_import.xml +++ b/app/src/main/res/layout/opml_import.xml @@ -6,7 +6,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" + android:layout_height="wrap_content" android:orientation="vertical" android:paddingTop="8dp" android:paddingLeft="16dp" diff --git a/app/src/main/res/layout/opml_selection.xml b/app/src/main/res/layout/opml_selection.xml index d08ebd0bd..3133debd1 100644 --- a/app/src/main/res/layout/opml_selection.xml +++ b/app/src/main/res/layout/opml_selection.xml @@ -4,28 +4,50 @@ android:layout_width="match_parent" android:layout_height="match_parent" > - <LinearLayout + <RelativeLayout android:id="@+id/footer" - style="@android:style/ButtonBar" android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:orientation="horizontal" > + android:layout_height="48dp" + android:layout_alignParentBottom="true" > - <Button - android:id="@+id/butConfirm" - android:layout_width="0px" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="@string/confirm_label" /> + <View + android:layout_width="match_parent" + android:layout_height="1dip" + android:layout_alignParentTop="true" + android:background="?android:attr/dividerVertical" /> + + <View + android:id="@+id/horizontal_divider" + android:layout_width="1dip" + android:layout_height="fill_parent" + android:layout_alignParentTop="true" + android:layout_centerHorizontal="true" + android:layout_marginBottom="4dp" + android:layout_marginTop="4dp" + android:background="?android:attr/dividerVertical" /> <Button android:id="@+id/butCancel" - android:layout_width="0px" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_weight="1" + android:layout_alignParentBottom="true" + android:layout_alignParentLeft="true" + android:layout_alignParentTop="true" + android:layout_toLeftOf="@id/horizontal_divider" + android:background="?android:attr/selectableItemBackground" android:text="@string/cancel_label" /> - </LinearLayout> + + <Button + android:id="@+id/butConfirm" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_alignParentRight="true" + android:layout_alignParentTop="true" + android:layout_toRightOf="@id/horizontal_divider" + android:background="?android:attr/selectableItemBackground" + android:text="@string/confirm_label" /> + </RelativeLayout> <ListView android:id="@+id/feedlist" diff --git a/app/src/main/res/layout/time_dialog.xml b/app/src/main/res/layout/time_dialog.xml index 0290ce708..ba4249268 100644 --- a/app/src/main/res/layout/time_dialog.xml +++ b/app/src/main/res/layout/time_dialog.xml @@ -8,7 +8,7 @@ <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="horizontal"> + android:orientation="horizontal" > <EditText android:id="@+id/etxtTime" @@ -18,9 +18,11 @@ android:layout_margin="8dp" android:ems="2" android:hint="@string/enter_time_here_label" - android:inputType="number" - android:maxLength="2" /> + android:maxLength="2" > + + <requestFocus /> + </EditText> <Spinner android:id="@+id/spTimeUnit" @@ -28,7 +30,6 @@ android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" /> - </LinearLayout> <LinearLayout diff --git a/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java b/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java index 7b07d3f84..4cde95d6f 100644 --- a/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java +++ b/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java @@ -20,6 +20,7 @@ import android.support.v4.view.accessibility.AccessibilityEventCompat; import android.support.v7.app.MediaRouteControllerDialog; import android.support.v7.graphics.Palette; import android.support.v7.media.MediaRouter; +import android.support.v7.widget.AppCompatImageView; import android.text.TextUtils; import android.util.Log; import android.util.TypedValue; @@ -68,7 +69,7 @@ public class CustomMRControllerDialog extends MediaRouteControllerDialog { this(context, 0); } - public CustomMRControllerDialog(Context context, int theme) { + private CustomMRControllerDialog(Context context, int theme) { super(context, theme); mediaRouter = MediaRouter.getInstance(getContext()); token = mediaRouter.getMediaSessionToken(); @@ -203,7 +204,7 @@ public class CustomMRControllerDialog extends MediaRouteControllerDialog { * http://stackoverflow.com/questions/18077325/scale-image-to-fill-imageview-width-and-keep-aspect-ratio */ if (landscape) { - artView = new ImageView(getContext()) { + artView = new AppCompatImageView(getContext()) { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int desiredWidth = widthMeasureSpec; @@ -234,7 +235,7 @@ public class CustomMRControllerDialog extends MediaRouteControllerDialog { MarginLayoutParamsCompat.setMarginStart(artParams, getContext().getResources().getDimensionPixelSize(R.dimen.media_router_controller_playback_control_horizontal_spacing)); } else { - artView = new ImageView(getContext()) { + artView = new AppCompatImageView(getContext()) { @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int desiredHeight = heightMeasureSpec; diff --git a/build.gradle b/build.gradle index 2039de4fa..632c8e7bd 100644 --- a/build.gradle +++ b/build.gradle @@ -28,9 +28,9 @@ project.ext.preDexLibs = !project.hasProperty("disablePreDex") subprojects { project.plugins.whenPluginAdded { plugin -> - if ("com.android.build.gradle.AppPlugin".equals(plugin.class.name)) { + if ("com.android.build.gradle.AppPlugin" == plugin.class.name) { project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs - } else if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) { + } else if ("com.android.build.gradle.LibraryPlugin" == plugin.class.name) { project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs } } diff --git a/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedImageMother.java b/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedImageMother.java index f240c870e..0fb4992ba 100644 --- a/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedImageMother.java +++ b/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedImageMother.java @@ -1,6 +1,6 @@ package de.danoeh.antennapod.core.feed; -public class FeedImageMother { +class FeedImageMother { public static FeedImage anyFeedImage() { return new FeedImage(0, "image", null, "http://example.com/picture", false); diff --git a/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedMother.java b/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedMother.java index 1cea6b9c9..fecc8e377 100644 --- a/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedMother.java +++ b/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedMother.java @@ -2,7 +2,7 @@ package de.danoeh.antennapod.core.feed; import static de.danoeh.antennapod.core.feed.FeedImageMother.anyFeedImage; -public class FeedMother { +class FeedMother { public static Feed anyFeed() { FeedImage image = anyFeedImage(); diff --git a/core/src/free/java/de/danoeh/antennapod/core/feed/FeedMediaFlavorHelper.java b/core/src/free/java/de/danoeh/antennapod/core/feed/FeedMediaFlavorHelper.java index 8818f6b46..9833e2cc9 100644 --- a/core/src/free/java/de/danoeh/antennapod/core/feed/FeedMediaFlavorHelper.java +++ b/core/src/free/java/de/danoeh/antennapod/core/feed/FeedMediaFlavorHelper.java @@ -3,7 +3,7 @@ package de.danoeh.antennapod.core.feed; /** * Implements methods for FeedMedia that are flavor dependent. */ -public class FeedMediaFlavorHelper { +class FeedMediaFlavorHelper { private FeedMediaFlavorHelper(){} static boolean instanceOfRemoteMedia(Object o) { return false; diff --git a/core/src/free/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java b/core/src/free/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java index 4e6482fda..37109ddca 100644 --- a/core/src/free/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java +++ b/core/src/free/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java @@ -8,9 +8,9 @@ import android.support.v4.media.session.PlaybackStateCompat; /** * Class intended to work along PlaybackService and provide support for different flavors. */ -public class PlaybackServiceFlavorHelper { +class PlaybackServiceFlavorHelper { - private PlaybackService.FlavorHelperCallback callback; + private final PlaybackService.FlavorHelperCallback callback; PlaybackServiceFlavorHelper(Context context, PlaybackService.FlavorHelperCallback callback) { this.callback = callback; diff --git a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java index 8362c4a4e..96e3a77be 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java @@ -23,9 +23,9 @@ import de.danoeh.antennapod.core.storage.DBWriter; /* * This class's job is do perform maintenance tasks whenever the app has been updated */ -public class UpdateManager { +class UpdateManager { - public static final String TAG = UpdateManager.class.getSimpleName(); + private static final String TAG = UpdateManager.class.getSimpleName(); private static final String PREF_NAME = "app_version"; private static final String KEY_VERSION_CODE = "version_code"; @@ -55,11 +55,11 @@ public class UpdateManager { } } - public static int getStoredVersionCode() { + private static int getStoredVersionCode() { return prefs.getInt(KEY_VERSION_CODE, -1); } - public static void setCurrentVersionCode() { + private static void setCurrentVersionCode() { prefs.edit().putInt(KEY_VERSION_CODE, currentVersionCode).apply(); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java index 0f402f44a..1b4aafeaa 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java @@ -8,7 +8,7 @@ import android.support.v4.content.AsyncTaskLoader; * This class will provide a useful default implementation that would otherwise always be necessary when interacting * with the DB*-classes with an AsyncTaskLoader. */ -public abstract class DBTaskLoader<D> extends AsyncTaskLoader<D> { +abstract class DBTaskLoader<D> extends AsyncTaskLoader<D> { public DBTaskLoader(Context context) { super(context); diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java index 1a0772f16..1e0c07b01 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java +++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java @@ -1,6 +1,5 @@ package de.danoeh.antennapod.core.asynctask; -import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; @@ -15,9 +14,9 @@ import de.danoeh.antennapod.core.storage.DBWriter; /** Removes a feed in the background. */ public class FeedRemover extends AsyncTask<Void, Void, Void> { - Context context; - ProgressDialog dialog; - Feed feed; + private final Context context; + private ProgressDialog dialog; + private final Feed feed; public boolean skipOnCompletion = false; public FeedRemover(Context context, Feed feed) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java index 19501ea94..5bd65f4e9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java +++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java @@ -1,6 +1,5 @@ package de.danoeh.antennapod.core.asynctask; -import android.annotation.TargetApi; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -39,7 +38,7 @@ import de.danoeh.antennapod.core.util.flattr.FlattrUtils; * to flattr something, a notification will be displayed. */ public class FlattrClickWorker extends AsyncTask<Void, Integer, FlattrClickWorker.ExitCode> { - protected static final String TAG = "FlattrClickWorker"; + private static final String TAG = "FlattrClickWorker"; private static final int NOTIFICATION_ID = 4; diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java index 4c084eaaf..420a60469 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java +++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java @@ -18,8 +18,8 @@ import de.danoeh.antennapod.core.util.flattr.FlattrUtils; */ public class FlattrStatusFetcher extends Thread { - protected static final String TAG = "FlattrStatusFetcher"; - protected Context context; + private static final String TAG = "FlattrStatusFetcher"; + private final Context context; public FlattrStatusFetcher(Context context) { super(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java index 5333b2273..985cabbf8 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java +++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java @@ -1,7 +1,6 @@ package de.danoeh.antennapod.core.asynctask; -import android.annotation.SuppressLint; import android.app.ProgressDialog; import android.content.Context; import android.net.Uri; @@ -23,12 +22,12 @@ import de.danoeh.antennapod.core.util.flattr.FlattrUtils; public class FlattrTokenFetcher extends AsyncTask<Void, Void, AccessToken> { private static final String TAG = "FlattrTokenFetcher"; - Context context; - AndroidAuthenticator auth; - AccessToken token; - Uri uri; - ProgressDialog dialog; - FlattrException exception; + private final Context context; + private final AndroidAuthenticator auth; + private AccessToken token; + private final Uri uri; + private ProgressDialog dialog; + private FlattrException exception; public FlattrTokenFetcher(Context context, AndroidAuthenticator auth, Uri uri) { super(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java b/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java index b14803751..c626a8189 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java +++ b/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java @@ -15,9 +15,9 @@ public abstract class ConfirmationDialog { private static final String TAG = ConfirmationDialog.class.getSimpleName(); - protected Context context; - private int titleId; - private String message; + private final Context context; + private final int titleId; + private final String message; private int positiveText; private int negativeText; @@ -32,7 +32,7 @@ public abstract class ConfirmationDialog { this.message = message; } - public void onCancelButtonPressed(DialogInterface dialog) { + private void onCancelButtonPressed(DialogInterface dialog) { Log.d(TAG, "Dialog was cancelled"); dialog.dismiss(); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/FavoritesEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/FavoritesEvent.java index d09f6802f..578007561 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/event/FavoritesEvent.java +++ b/core/src/main/java/de/danoeh/antennapod/core/event/FavoritesEvent.java @@ -11,8 +11,8 @@ public class FavoritesEvent { ADDED, REMOVED } - public final Action action; - public final FeedItem item; + private final Action action; + private final FeedItem item; private FavoritesEvent(Action action, FeedItem item) { this.action = action; diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/FeedItemEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/FeedItemEvent.java index 7ff241456..9db262857 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/event/FeedItemEvent.java +++ b/core/src/main/java/de/danoeh/antennapod/core/event/FeedItemEvent.java @@ -17,7 +17,8 @@ public class FeedItemEvent { UPDATE, DELETE_MEDIA } - @NonNull public final Action action; + @NonNull + private final Action action; @NonNull public final List<FeedItem> items; private FeedItemEvent(Action action, List<FeedItem> items) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java index 864d0a405..4a591c996 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java +++ b/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java @@ -8,8 +8,8 @@ public class FeedMediaEvent { UPDATE } - public final Action action; - public final FeedMedia media; + private final Action action; + private final FeedMedia media; private FeedMediaEvent(Action action, FeedMedia media) { this.action = action; diff --git a/core/src/main/java/de/danoeh/antennapod/core/export/opml/OpmlSymbols.java b/core/src/main/java/de/danoeh/antennapod/core/export/opml/OpmlSymbols.java index 40b0e23b8..86091720d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/export/opml/OpmlSymbols.java +++ b/core/src/main/java/de/danoeh/antennapod/core/export/opml/OpmlSymbols.java @@ -3,7 +3,7 @@ package de.danoeh.antennapod.core.export.opml; import de.danoeh.antennapod.core.export.CommonSymbols; /** Contains symbols for reading and writing OPML documents. */ -public final class OpmlSymbols extends CommonSymbols { +final class OpmlSymbols extends CommonSymbols { public static final String OPML = "opml"; static final String OUTLINE = "outline"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Chapter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Chapter.java index f221ed32e..f3dfdfdb6 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/Chapter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Chapter.java @@ -7,19 +7,19 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter; public abstract class Chapter extends FeedComponent { /** Defines starting point in milliseconds. */ - protected long start; - protected String title; - protected String link; + long start; + String title; + String link; - public Chapter() { + Chapter() { } - public Chapter(long start) { + Chapter(long start) { super(); this.start = start; } - public Chapter(long start, String title, FeedItem item, String link) { + Chapter(long start, String title, FeedItem item, String link) { super(); this.start = start; this.title = title; diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java b/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java index 514a79fad..b769eaf55 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java @@ -27,8 +27,8 @@ public class EventDistributor extends Observable { public static final int DOWNLOAD_HANDLED = 64; public static final int PLAYER_STATUS_UPDATE = 128; - private Handler handler; - private AbstractQueue<Integer> events; + private final Handler handler; + private final AbstractQueue<Integer> events; private static EventDistributor instance; @@ -52,7 +52,7 @@ public class EventDistributor extends Observable { deleteObserver(el); } - public void addEvent(Integer i) { + private void addEvent(Integer i) { events.offer(i); handler.post(EventDistributor.this::processEventQueue); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java index 90b5e50b7..a3f91b1c9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java @@ -7,9 +7,9 @@ package de.danoeh.antennapod.core.feed; */ public abstract class FeedComponent { - protected long id; + long id; - public FeedComponent() { + FeedComponent() { super(); } @@ -26,7 +26,7 @@ public abstract class FeedComponent { * FeedComponent. This method should only update attributes which where read from * the feed. */ - public void updateFromOther(FeedComponent other) { + void updateFromOther(FeedComponent other) { } /** @@ -36,7 +36,7 @@ public abstract class FeedComponent { * * @return true if attribute values are different, false otherwise */ - public boolean compareWithOther(FeedComponent other) { + boolean compareWithOther(FeedComponent other) { return false; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java index d04d236e4..b790faadf 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java @@ -9,7 +9,7 @@ public class FeedEvent { FILTER_CHANGED } - public final Action action; + private final Action action; public final long feedId; public FeedEvent(Action action, long feedId) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFile.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFile.java index ca9af058b..cc4dd230f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFile.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFile.java @@ -9,9 +9,9 @@ import java.io.File; */ public abstract class FeedFile extends FeedComponent { - protected String file_url; + String file_url; protected String download_url; - protected boolean downloaded; + boolean downloaded; /** * Creates a new FeedFile object. @@ -40,7 +40,7 @@ public abstract class FeedFile extends FeedComponent { * FeedFile. This method should only update attributes which where read from * the feed. */ - public void updateFromOther(FeedFile other) { + void updateFromOther(FeedFile other) { super.updateFromOther(other); this.download_url = other.download_url; } @@ -52,7 +52,7 @@ public abstract class FeedFile extends FeedComponent { * * @return true if attribute values are different, false otherwise */ - public boolean compareWithOther(FeedFile other) { + boolean compareWithOther(FeedFile other) { if (super.compareWithOther(other)) { return true; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFilter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFilter.java index 35abb8de6..28161ac9b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFilter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFilter.java @@ -9,8 +9,8 @@ public class FeedFilter { private static final String TAG = "FeedFilter"; - private String includeFilter; - private String excludeFilter; + private final String includeFilter; + private final String excludeFilter; public FeedFilter() { this("", ""); diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java index f0c508830..45bd2ad31 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java @@ -11,8 +11,8 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter; public class FeedImage extends FeedFile implements ImageResource { public static final int FEEDFILETYPE_FEEDIMAGE = 1; - protected String title; - protected FeedComponent owner; + private String title; + private FeedComponent owner; public FeedImage(FeedComponent owner, String download_url, String title) { super(null, download_url, false); diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java index 66c4b10d0..7b387b1d3 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java @@ -59,7 +59,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr public static final int PLAYED = 1; private String paymentLink; - private FlattrStatus flattrStatus; + private final FlattrStatus flattrStatus; /** * Is true if the database contains any chapters that belong to this item. This attribute is only @@ -87,7 +87,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr /** * Any tags assigned to this item */ - private Set<String> tags = new HashSet<>(); + private final Set<String> tags = new HashSet<>(); public FeedItem() { this.state = UNPLAYED; @@ -159,7 +159,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr int indexAutoDownload = cursor.getColumnIndex(PodDBAdapter.KEY_AUTO_DOWNLOAD); long id = cursor.getInt(indexId); - assert(id > 0); String title = cursor.getString(indexTitle); String link = cursor.getString(indexLink); Date pubDate = new Date(cursor.getLong(indexPubDate)); diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java index 5eea4f3da..2d551e1b2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java @@ -34,7 +34,7 @@ public class FeedMedia extends FeedFile implements Playable { public static final int PLAYABLE_TYPE_FEEDMEDIA = 1; public static final String PREF_MEDIA_ID = "FeedMedia.PrefMediaId"; - public static final String PREF_FEED_ID = "FeedMedia.PrefFeedId"; + private static final String PREF_FEED_ID = "FeedMedia.PrefFeedId"; /** * Indicates we've checked on the size of the item via the network @@ -88,10 +88,10 @@ public class FeedMedia extends FeedFile implements Playable { this.lastPlayedTime = lastPlayedTime; } - public FeedMedia(long id, FeedItem item, int duration, int position, - long size, String mime_type, String file_url, String download_url, - boolean downloaded, Date playbackCompletionDate, int played_duration, - Boolean hasEmbeddedPicture, long lastPlayedTime) { + private FeedMedia(long id, FeedItem item, int duration, int position, + long size, String mime_type, String file_url, String download_url, + boolean downloaded, Date playbackCompletionDate, int played_duration, + Boolean hasEmbeddedPicture, long lastPlayedTime) { this(id, item, duration, position, size, mime_type, file_url, download_url, downloaded, playbackCompletionDate, played_duration, lastPlayedTime); this.hasEmbeddedPicture = hasEmbeddedPicture; diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java index 66fc4024b..3285ad7cb 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java @@ -33,7 +33,7 @@ public class FeedPreferences { this(feedID, autoDownload, true, auto_delete_action, username, password, new FeedFilter()); } - public FeedPreferences(long feedID, boolean autoDownload, boolean keepUpdated, AutoDeleteAction auto_delete_action, String username, String password, @NonNull FeedFilter filter) { + private FeedPreferences(long feedID, boolean autoDownload, boolean keepUpdated, AutoDeleteAction auto_delete_action, String username, String password, @NonNull FeedFilter filter) { this.feedID = feedID; this.autoDownload = autoDownload; this.keepUpdated = keepUpdated; diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/SearchResult.java b/core/src/main/java/de/danoeh/antennapod/core/feed/SearchResult.java index 9aa8d3170..ea8eb7871 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/SearchResult.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/SearchResult.java @@ -1,11 +1,11 @@ package de.danoeh.antennapod.core.feed; public class SearchResult { - private FeedComponent component; + private final FeedComponent component; /** Additional information (e.g. where it was found) */ private String subtitle; /** Higher value means more importance */ - private int value; + private final int value; public SearchResult(FeedComponent component, int value, String subtitle) { super(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java index 8ca9faa0d..3e4f06a12 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java @@ -27,7 +27,7 @@ import okhttp3.Response; /** * @see com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader */ -public class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> { +class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> { private static final String TAG = ApOkHttpUrlLoader.class.getSimpleName(); @@ -37,7 +37,7 @@ public class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> { public static class Factory implements ModelLoaderFactory<String, InputStream> { private static volatile OkHttpClient internalClient; - private OkHttpClient client; + private final OkHttpClient client; private static OkHttpClient getInternalClient() { if (internalClient == null) { @@ -80,7 +80,7 @@ public class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> { private final OkHttpClient client; - public ApOkHttpUrlLoader(OkHttpClient client) { + private ApOkHttpUrlLoader(OkHttpClient client) { this.client = client; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceBadStatusCodeException.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceBadStatusCodeException.java index 16f01f0f4..84c085ed2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceBadStatusCodeException.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceBadStatusCodeException.java @@ -1,7 +1,7 @@ package de.danoeh.antennapod.core.gpoddernet; -public class GpodnetServiceBadStatusCodeException extends GpodnetServiceException { - int statusCode; +class GpodnetServiceBadStatusCodeException extends GpodnetServiceException { + private final int statusCode; public GpodnetServiceBadStatusCodeException(String message, int statusCode) { super(message); diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceException.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceException.java index ce704f7e3..78ddfc945 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceException.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceException.java @@ -2,10 +2,10 @@ package de.danoeh.antennapod.core.gpoddernet; public class GpodnetServiceException extends Exception { - public GpodnetServiceException() { + GpodnetServiceException() { } - public GpodnetServiceException(String message) { + GpodnetServiceException(String message) { super(message); } @@ -13,7 +13,7 @@ public class GpodnetServiceException extends Exception { super(cause); } - public GpodnetServiceException(String message, Throwable cause) { + GpodnetServiceException(String message, Throwable cause) { super(message, cause); } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetDevice.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetDevice.java index 79eb33cb5..faf4264e5 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetDevice.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetDevice.java @@ -4,10 +4,10 @@ import android.support.annotation.NonNull; public class GpodnetDevice { - private String id; - private String caption; - private DeviceType type; - private int subscriptions; + private final String id; + private final String caption; + private final DeviceType type; + private final int subscriptions; public GpodnetDevice(@NonNull String id, String caption, diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java index 9627ecae6..b76988fd8 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java @@ -131,7 +131,7 @@ public class GpodnetEpisodeAction { return this.action; } - public String getActionString() { + private String getActionString() { return this.action.name().toLowerCase(); } @@ -199,16 +199,14 @@ public class GpodnetEpisodeAction { } public String writeToString() { - StringBuilder result = new StringBuilder(); - result.append(this.podcast).append("\t"); - result.append(this.episode).append("\t"); - result.append(this.deviceId).append("\t"); - result.append(this.action).append("\t"); - result.append(this.timestamp.getTime()).append("\t"); - result.append(String.valueOf(this.started)).append("\t"); - result.append(String.valueOf(this.position)).append("\t"); - result.append(String.valueOf(this.total)); - return result.toString(); + return this.podcast + "\t" + + this.episode + "\t" + + this.deviceId + "\t" + + this.action + "\t" + + this.timestamp.getTime() + "\t" + + String.valueOf(this.started) + "\t" + + String.valueOf(this.position) + "\t" + + String.valueOf(this.total); } /** diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java index 03c33c9a1..b6efab016 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java @@ -21,9 +21,9 @@ public class GpodnetEpisodeActionPostResponse { * URLs that should be updated. The key of the map is the original URL, the value of the map * is the sanitized URL. */ - public final Map<String, String> updatedUrls; + private final Map<String, String> updatedUrls; - public GpodnetEpisodeActionPostResponse(long timestamp, Map<String, String> updatedUrls) { + private GpodnetEpisodeActionPostResponse(long timestamp, Map<String, String> updatedUrls) { this.timestamp = timestamp; this.updatedUrls = updatedUrls; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java index 191c0fa39..680dc1042 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java @@ -3,13 +3,13 @@ package de.danoeh.antennapod.core.gpoddernet.model; import android.support.annotation.NonNull; public class GpodnetPodcast { - private String url; - private String title; - private String description; - private int subscribers; - private String logoUrl; - private String website; - private String mygpoLink; + private final String url; + private final String title; + private final String description; + private final int subscribers; + private final String logoUrl; + private final String website; + private final String mygpoLink; public GpodnetPodcast(@NonNull String url, @NonNull String title, diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetSubscriptionChange.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetSubscriptionChange.java index 6cc9b79a3..0f1961bef 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetSubscriptionChange.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetSubscriptionChange.java @@ -5,9 +5,9 @@ import android.support.annotation.NonNull; import java.util.List; public class GpodnetSubscriptionChange { - private List<String> added; - private List<String> removed; - private long timestamp; + private final List<String> added; + private final List<String> removed; + private final long timestamp; public GpodnetSubscriptionChange(@NonNull List<String> added, @NonNull List<String> removed, diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetTag.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetTag.java index 42a31afc5..40543592e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetTag.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetTag.java @@ -16,7 +16,7 @@ public class GpodnetTag implements Parcelable { this.usage = usage; } - protected GpodnetTag(Parcel in) { + private GpodnetTag(Parcel in) { title = in.readString(); tag = in.readString(); usage = in.readInt(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java index 9bd1881e4..9f9c3bd74 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java +++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java @@ -22,9 +22,9 @@ public class GpodnetUploadChangesResponse { * URLs that should be updated. The key of the map is the original URL, the value of the map * is the sanitized URL. */ - public final Map<String, String> updatedUrls; + private final Map<String, String> updatedUrls; - public GpodnetUploadChangesResponse(long timestamp, Map<String, String> updatedUrls) { + private GpodnetUploadChangesResponse(long timestamp, Map<String, String> updatedUrls) { this.timestamp = timestamp; this.updatedUrls = updatedUrls; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java index f14c9e36c..b51b8d996 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java @@ -7,6 +7,7 @@ import android.util.Log; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -26,26 +27,26 @@ public class GpodnetPreferences { private static final String TAG = "GpodnetPreferences"; private static final String PREF_NAME = "gpodder.net"; - public static final String PREF_GPODNET_USERNAME = "de.danoeh.antennapod.preferences.gpoddernet.username"; - public static final String PREF_GPODNET_PASSWORD = "de.danoeh.antennapod.preferences.gpoddernet.password"; - public static final String PREF_GPODNET_DEVICEID = "de.danoeh.antennapod.preferences.gpoddernet.deviceID"; - public static final String PREF_GPODNET_HOSTNAME = "prefGpodnetHostname"; + private static final String PREF_GPODNET_USERNAME = "de.danoeh.antennapod.preferences.gpoddernet.username"; + private static final String PREF_GPODNET_PASSWORD = "de.danoeh.antennapod.preferences.gpoddernet.password"; + private static final String PREF_GPODNET_DEVICEID = "de.danoeh.antennapod.preferences.gpoddernet.deviceID"; + private static final String PREF_GPODNET_HOSTNAME = "prefGpodnetHostname"; - public static final String PREF_LAST_SUBSCRIPTION_SYNC_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_timestamp"; - public static final String PREF_LAST_EPISODE_ACTIONS_SYNC_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_episode_actions_sync_timestamp"; - public static final String PREF_SYNC_ADDED = "de.danoeh.antennapod.preferences.gpoddernet.sync_added"; - public static final String PREF_SYNC_REMOVED = "de.danoeh.antennapod.preferences.gpoddernet.sync_removed"; - public static final String PREF_SYNC_EPISODE_ACTIONS = "de.danoeh.antennapod.preferences.gpoddernet.sync_queued_episode_actions"; + private static final String PREF_LAST_SUBSCRIPTION_SYNC_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_timestamp"; + private static final String PREF_LAST_EPISODE_ACTIONS_SYNC_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_episode_actions_sync_timestamp"; + private static final String PREF_SYNC_ADDED = "de.danoeh.antennapod.preferences.gpoddernet.sync_added"; + private static final String PREF_SYNC_REMOVED = "de.danoeh.antennapod.preferences.gpoddernet.sync_removed"; + private static final String PREF_SYNC_EPISODE_ACTIONS = "de.danoeh.antennapod.preferences.gpoddernet.sync_queued_episode_actions"; public static final String PREF_LAST_SYNC_ATTEMPT_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_attempt_timestamp"; - public static final String PREF_LAST_SYNC_ATTEMPT_RESULT = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_attempt_result"; + private static final String PREF_LAST_SYNC_ATTEMPT_RESULT = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_attempt_result"; private static String username; private static String password; private static String deviceID; private static String hostname; - private static ReentrantLock feedListLock = new ReentrantLock(); + private static final ReentrantLock feedListLock = new ReentrantLock(); private static Set<String> addedFeeds; private static Set<String> removedFeeds; @@ -316,9 +317,7 @@ public class GpodnetPreferences { private static Set<String> readListFromString(String s) { Set<String> result = new HashSet<>(); - for (String item : s.split(" ")) { - result.add(item); - } + Collections.addAll(result, s.split(" ")); return result; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index 65298ff8d..743ee135d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -7,6 +7,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.os.SystemClock; import android.preference.PreferenceManager; +import android.support.annotation.IntRange; import android.support.annotation.NonNull; import android.support.v4.app.NotificationCompat; import android.text.TextUtils; @@ -41,79 +42,79 @@ import de.danoeh.antennapod.core.util.Converter; */ public class UserPreferences { - public static final String IMPORT_DIR = "import/"; + private static final String IMPORT_DIR = "import/"; private static final String TAG = "UserPreferences"; // User Interface public static final String PREF_THEME = "prefTheme"; public static final String PREF_HIDDEN_DRAWER_ITEMS = "prefHiddenDrawerItems"; - public static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder"; - public static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator"; - public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify"; - public static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify"; + private static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder"; + private static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator"; + private static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify"; + private static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify"; public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons"; public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground"; - public static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport"; + private static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport"; // Queue - public static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront"; + private static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront"; // Playback public static final String PREF_PAUSE_ON_HEADSET_DISCONNECT = "prefPauseOnHeadsetDisconnect"; public static final String PREF_UNPAUSE_ON_HEADSET_RECONNECT = "prefUnpauseOnHeadsetReconnect"; - public static final String PREF_UNPAUSE_ON_BLUETOOTH_RECONNECT = "prefUnpauseOnBluetoothReconnect"; - public static final String PREF_HARDWARE_FOWARD_BUTTON_SKIPS = "prefHardwareForwardButtonSkips"; - public static final String PREF_HARDWARE_PREVIOUS_BUTTON_RESTARTS = "prefHardwarePreviousButtonRestarts"; + private static final String PREF_UNPAUSE_ON_BLUETOOTH_RECONNECT = "prefUnpauseOnBluetoothReconnect"; + private static final String PREF_HARDWARE_FOWARD_BUTTON_SKIPS = "prefHardwareForwardButtonSkips"; + private static final String PREF_HARDWARE_PREVIOUS_BUTTON_RESTARTS = "prefHardwarePreviousButtonRestarts"; public static final String PREF_FOLLOW_QUEUE = "prefFollowQueue"; - public static final String PREF_SKIP_KEEPS_EPISODE = "prefSkipKeepsEpisode"; - public static final String PREF_FAVORITE_KEEPS_EPISODE = "prefFavoriteKeepsEpisode"; - public static final String PREF_AUTO_DELETE = "prefAutoDelete"; + private static final String PREF_SKIP_KEEPS_EPISODE = "prefSkipKeepsEpisode"; + private static final String PREF_FAVORITE_KEEPS_EPISODE = "prefFavoriteKeepsEpisode"; + private static final String PREF_AUTO_DELETE = "prefAutoDelete"; public static final String PREF_SMART_MARK_AS_PLAYED_SECS = "prefSmartMarkAsPlayedSecs"; - public static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray"; - public static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss"; - public static final String PREF_RESUME_AFTER_CALL = "prefResumeAfterCall"; + private static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray"; + private static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss"; + private static final String PREF_RESUME_AFTER_CALL = "prefResumeAfterCall"; // Network - public static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded"; + private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded"; public static final String PREF_UPDATE_INTERVAL = "prefAutoUpdateIntervall"; - public static final String PREF_MOBILE_UPDATE = "prefMobileUpdate"; + private static final String PREF_MOBILE_UPDATE = "prefMobileUpdate"; public static final String PREF_EPISODE_CLEANUP = "prefEpisodeCleanup"; public static final String PREF_PARALLEL_DOWNLOADS = "prefParallelDownloads"; public static final String PREF_EPISODE_CACHE_SIZE = "prefEpisodeCacheSize"; public static final String PREF_ENABLE_AUTODL = "prefEnableAutoDl"; public static final String PREF_ENABLE_AUTODL_ON_BATTERY = "prefEnableAutoDownloadOnBattery"; public static final String PREF_ENABLE_AUTODL_WIFI_FILTER = "prefEnableAutoDownloadWifiFilter"; - public static final String PREF_ENABLE_AUTODL_ON_MOBILE = "prefEnableAutoDownloadOnMobile"; - public static final String PREF_AUTODL_SELECTED_NETWORKS = "prefAutodownloadSelectedNetworks"; - public static final String PREF_PROXY_TYPE = "prefProxyType"; - public static final String PREF_PROXY_HOST = "prefProxyHost"; - public static final String PREF_PROXY_PORT = "prefProxyPort"; - public static final String PREF_PROXY_USER = "prefProxyUser"; - public static final String PREF_PROXY_PASSWORD = "prefProxyPassword"; + private static final String PREF_ENABLE_AUTODL_ON_MOBILE = "prefEnableAutoDownloadOnMobile"; + private static final String PREF_AUTODL_SELECTED_NETWORKS = "prefAutodownloadSelectedNetworks"; + private static final String PREF_PROXY_TYPE = "prefProxyType"; + private static final String PREF_PROXY_HOST = "prefProxyHost"; + private static final String PREF_PROXY_PORT = "prefProxyPort"; + private static final String PREF_PROXY_USER = "prefProxyUser"; + private static final String PREF_PROXY_PASSWORD = "prefProxyPassword"; // Services - public static final String PREF_AUTO_FLATTR = "pref_auto_flattr"; - public static final String PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD = "prefAutoFlattrPlayedDurationThreshold"; - public static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications"; + private static final String PREF_AUTO_FLATTR = "pref_auto_flattr"; + private static final String PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD = "prefAutoFlattrPlayedDurationThreshold"; + private static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications"; // Other - public static final String PREF_DATA_FOLDER = "prefDataFolder"; + private static final String PREF_DATA_FOLDER = "prefDataFolder"; public static final String PREF_IMAGE_CACHE_SIZE = "prefImageCacheSize"; // Mediaplayer - public static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed"; + private static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed"; private static final String PREF_FAST_FORWARD_SECS = "prefFastForwardSecs"; private static final String PREF_REWIND_SECS = "prefRewindSecs"; - public static final String PREF_QUEUE_LOCKED = "prefQueueLocked"; - public static final String IMAGE_CACHE_DEFAULT_VALUE = "100"; - public static final int IMAGE_CACHE_SIZE_MINIMUM = 20; - public static final String PREF_LEFT_VOLUME = "prefLeftVolume"; - public static final String PREF_RIGHT_VOLUME = "prefRightVolume"; + private static final String PREF_QUEUE_LOCKED = "prefQueueLocked"; + private static final String IMAGE_CACHE_DEFAULT_VALUE = "100"; + private static final int IMAGE_CACHE_SIZE_MINIMUM = 20; + private static final String PREF_LEFT_VOLUME = "prefLeftVolume"; + private static final String PREF_RIGHT_VOLUME = "prefRightVolume"; // Experimental public static final String PREF_SONIC = "prefSonic"; - public static final String PREF_STEREO_TO_MONO = "PrefStereoToMono"; + private static final String PREF_STEREO_TO_MONO = "PrefStereoToMono"; public static final String PREF_NORMALIZER = "prefNormalizer"; public static final String PREF_CAST_ENABLED = "prefCast"; //Used for enabling Chromecast support public static final int EPISODE_CLEANUP_QUEUE = -1; @@ -182,8 +183,8 @@ public class UserPreferences { String.valueOf(NOTIFICATION_BUTTON_SKIP)), ","); List<Integer> notificationButtons = new ArrayList<>(); - for (int i=0; i<buttons.length; i++) { - notificationButtons.add(Integer.parseInt(buttons[i])); + for (String button : buttons) { + notificationButtons.add(Integer.parseInt(button)); } return notificationButtons; } @@ -513,9 +514,8 @@ public class UserPreferences { .apply(); } - public static void setVolume(int leftVolume, int rightVolume) { - assert(0 <= leftVolume && leftVolume <= 100); - assert(0 <= rightVolume && rightVolume <= 100); + public static void setVolume(@IntRange(from = 0, to = 100) int leftVolume, + @IntRange(from = 0, to = 100) int rightVolume) { prefs.edit() .putInt(PREF_LEFT_VOLUME, leftVolume) .putInt(PREF_RIGHT_VOLUME, rightVolume) @@ -786,7 +786,7 @@ public class UserPreferences { /** * Sets the interval in which the feeds are refreshed automatically */ - public static void restartUpdateIntervalAlarm(long triggerAtMillis, long intervalMillis) { + private static void restartUpdateIntervalAlarm(long triggerAtMillis, long intervalMillis) { Log.d(TAG, "Restarting update alarm."); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(context, FeedUpdateReceiver.class); @@ -805,7 +805,7 @@ public class UserPreferences { /** * Sets time of day the feeds are refreshed automatically */ - public static void restartUpdateTimeOfDayAlarm(int hoursOfDay, int minute) { + private static void restartUpdateTimeOfDayAlarm(int hoursOfDay, int minute) { Log.d(TAG, "Restarting update alarm."); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); PendingIntent updateIntent = PendingIntent.getBroadcast(context, 0, diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java index 6b3ece4ab..a723097a2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java @@ -47,11 +47,11 @@ public class GpodnetSyncService extends Service { private static final long WAIT_INTERVAL = 5000L; - public static final String ARG_ACTION = "action"; + private static final String ARG_ACTION = "action"; - public static final String ACTION_SYNC = "de.danoeh.antennapod.intent.action.sync"; - public static final String ACTION_SYNC_SUBSCRIPTIONS = "de.danoeh.antennapod.intent.action.sync_subscriptions"; - public static final String ACTION_SYNC_ACTIONS = "de.danoeh.antennapod.intent.action.sync_ACTIONS"; + private static final String ACTION_SYNC = "de.danoeh.antennapod.intent.action.sync"; + private static final String ACTION_SYNC_SUBSCRIPTIONS = "de.danoeh.antennapod.intent.action.sync_subscriptions"; + private static final String ACTION_SYNC_ACTIONS = "de.danoeh.antennapod.intent.action.sync_ACTIONS"; private GpodnetService service; @@ -222,14 +222,12 @@ public class GpodnetSyncService extends Service { } catch (GpodnetServiceException e) { e.printStackTrace(); updateErrorNotification(e); - } catch (DownloadRequestException e) { - e.printStackTrace(); } } private synchronized void processEpisodeActions(List<GpodnetEpisodeAction> localActions, - List<GpodnetEpisodeAction> remoteActions) throws DownloadRequestException { + List<GpodnetEpisodeAction> remoteActions) { if(remoteActions.size() == 0) { return; } @@ -333,7 +331,7 @@ public class GpodnetSyncService extends Service { nm.notify(id, notification); } - private WaiterThread syncWaiterThread = new WaiterThread(WAIT_INTERVAL) { + private final WaiterThread syncWaiterThread = new WaiterThread(WAIT_INTERVAL) { @Override public void onWaitCompleted() { sync(); @@ -341,7 +339,7 @@ public class GpodnetSyncService extends Service { }; private abstract class WaiterThread { - private long waitInterval; + private final long waitInterval; private Thread thread; private WaiterThread(long waitInterval) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java index eb28050f0..57d099dfc 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java @@ -42,10 +42,10 @@ import okhttp3.internal.http.StatusLine; public class AntennapodHttpClient { private static final String TAG = "AntennapodHttpClient"; - public static final int CONNECTION_TIMEOUT = 30000; - public static final int READ_TIMEOUT = 30000; + private static final int CONNECTION_TIMEOUT = 30000; + private static final int READ_TIMEOUT = 30000; - public static final int MAX_CONNECTIONS = 8; + private static final int MAX_CONNECTIONS = 8; private static volatile OkHttpClient httpClient = null; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java index de91916a9..9a64bebf7 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java @@ -17,15 +17,15 @@ public class DownloadRequest implements Parcelable { private String username; private String password; private String lastModified; - private boolean deleteOnFailure; + private final boolean deleteOnFailure; private final long feedfileId; private final int feedfileType; private final Bundle arguments; - protected int progressPercent; - protected long soFar; - protected long size; - protected int statusMsg; + private int progressPercent; + private long soFar; + private long size; + private int statusMsg; public DownloadRequest(@NonNull String destination, @NonNull String source, @@ -53,7 +53,7 @@ public class DownloadRequest implements Parcelable { this(destination, source, title, feedfileId, feedfileType, null, null, true, null); } - public DownloadRequest(Builder builder) { + private DownloadRequest(Builder builder) { this.destination = builder.destination; this.source = builder.source; this.title = builder.title; @@ -254,15 +254,15 @@ public class DownloadRequest implements Parcelable { } public static class Builder { - private String destination; - private String source; - private String title; + private final String destination; + private final String source; + private final String title; private String username; private String password; private String lastModified; private boolean deleteOnFailure = false; - private long feedfileId; - private int feedfileType; + private final long feedfileId; + private final int feedfileType; private Bundle arguments; public Builder(@NonNull String destination, @NonNull FeedFile item) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java index 5ee137563..d66af22ef 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java @@ -152,7 +152,7 @@ public class DownloadService extends Service { private static final int SCHED_EX_POOL_SIZE = 1; private ScheduledThreadPoolExecutor schedExecutor; - private Handler postHandler = new Handler(); + private final Handler postHandler = new Handler(); private final IBinder mBinder = new LocalBinder(); @@ -162,7 +162,7 @@ public class DownloadService extends Service { } } - private Thread downloadCompletionThread = new Thread() { + private final Thread downloadCompletionThread = new Thread() { private static final String TAG = "downloadCompletionThd"; @Override @@ -384,7 +384,7 @@ public class DownloadService extends Service { return null; } - private BroadcastReceiver cancelDownloadReceiver = new BroadcastReceiver() { + private final BroadcastReceiver cancelDownloadReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -534,14 +534,14 @@ public class DownloadService extends Service { * Calls query downloads on the services main thread. This method should be used instead of queryDownloads if it is * used from a thread other than the main thread. */ - void queryDownloadsAsync() { + private void queryDownloadsAsync() { handler.post(DownloadService.this::queryDownloads); } /** * Check if there's something else to download, otherwise stop */ - void queryDownloads() { + private void queryDownloads() { Log.d(TAG, numberOfDownloads.get() + " downloads left"); if (numberOfDownloads.get() <= 0 && DownloadRequester.getInstance().hasNoDownloads()) { @@ -604,9 +604,9 @@ public class DownloadService extends Service { private class FeedSyncThread extends Thread { private static final String TAG = "FeedSyncThread"; - private BlockingQueue<DownloadRequest> completedRequests = new LinkedBlockingDeque<>(); - private CompletionService<Pair<DownloadRequest, FeedHandlerResult>> parserService = new ExecutorCompletionService<>(Executors.newSingleThreadExecutor()); - private ExecutorService dbService = Executors.newSingleThreadExecutor(); + private final BlockingQueue<DownloadRequest> completedRequests = new LinkedBlockingDeque<>(); + private final CompletionService<Pair<DownloadRequest, FeedHandlerResult>> parserService = new ExecutorCompletionService<>(Executors.newSingleThreadExecutor()); + private final ExecutorService dbService = Executors.newSingleThreadExecutor(); private Future<?> dbUpdateFuture; private volatile boolean isActive = true; private volatile boolean isCollectingRequests = false; @@ -766,7 +766,7 @@ public class DownloadService extends Service { private class FeedParserTask implements Callable<Pair<DownloadRequest, FeedHandlerResult>> { - private DownloadRequest request; + private final DownloadRequest request; private FeedParserTask(DownloadRequest request) { this.request = request; @@ -952,8 +952,8 @@ public class DownloadService extends Service { */ private static class FailedDownloadHandler implements Runnable { - private DownloadRequest request; - private DownloadStatus status; + private final DownloadRequest request; + private final DownloadStatus status; FailedDownloadHandler(DownloadStatus status, DownloadRequest request) { this.request = request; @@ -975,7 +975,7 @@ public class DownloadService extends Service { */ private class MediaHandlerThread implements Runnable { - private DownloadRequest request; + private final DownloadRequest request; private DownloadStatus status; MediaHandlerThread(@NonNull DownloadStatus status, @@ -1091,7 +1091,7 @@ public class DownloadService extends Service { private long lastPost = 0; - final Runnable postDownloaderTask = new Runnable() { + private final Runnable postDownloaderTask = new Runnable() { @Override public void run() { List<Downloader> list = Collections.unmodifiableList(downloads); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java index ed2b00dfe..5debc6d05 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java @@ -19,37 +19,37 @@ public class DownloadStatus { // ----------------------------------- ATTRIBUTES STORED IN DB /** Unique id for storing the object in database. */ - protected long id; + private long id; /** * A human-readable string which is shown to the user so that he can * identify the download. Should be the title of the item/feed/media or the * URL if the download has no other title. */ - protected String title; - protected DownloadError reason; + private final String title; + private DownloadError reason; /** * A message which can be presented to the user to give more information. * Should be null if Download was successful. */ - protected String reasonDetailed; - protected boolean successful; - protected Date completionDate; - protected long feedfileId; + private String reasonDetailed; + private boolean successful; + private Date completionDate; + private final long feedfileId; /** * Is used to determine the type of the feedfile even if the feedfile does * not exist anymore. The value should be FEEDFILETYPE_FEED, * FEEDFILETYPE_FEEDIMAGE or FEEDFILETYPE_FEEDMEDIA */ - protected int feedfileType; + private final int feedfileType; // ------------------------------------ NOT STORED IN DB - protected boolean done; - protected boolean cancelled; + private boolean done; + private boolean cancelled; /** Constructor for restoring Download status entries from DB. */ - public DownloadStatus(long id, String title, long feedfileId, - int feedfileType, boolean successful, DownloadError reason, - Date completionDate, String reasonDetailed) { + private DownloadStatus(long id, String title, long feedfileId, + int feedfileType, boolean successful, DownloadError reason, + Date completionDate, String reasonDetailed) { this.id = id; this.title = title; this.done = true; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java index d8042d202..445210d3a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java @@ -14,14 +14,14 @@ import de.danoeh.antennapod.core.R; public abstract class Downloader implements Callable<Downloader> { private static final String TAG = "Downloader"; - protected volatile boolean finished; + private volatile boolean finished; - protected volatile boolean cancelled; + volatile boolean cancelled; - protected DownloadRequest request; - protected DownloadStatus result; + final DownloadRequest request; + final DownloadStatus result; - public Downloader(DownloadRequest request) { + Downloader(DownloadRequest request) { super(); this.request = request; this.request.setStatusMsg(R.string.download_pending); @@ -33,7 +33,7 @@ public abstract class Downloader implements Callable<Downloader> { public final Downloader call() { WifiManager wifiManager = (WifiManager) - ClientConfig.applicationCallbacks.getApplicationInstance().getSystemService(Context.WIFI_SERVICE); + ClientConfig.applicationCallbacks.getApplicationInstance().getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiManager.WifiLock wifiLock = null; if (wifiManager != null) { wifiLock = wifiManager.createWifiLock(TAG); diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java index 77d664b74..181a6f619 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java @@ -316,7 +316,7 @@ public class HttpDownloader extends Downloader { private static class BasicAuthorizationInterceptor implements Interceptor { - private DownloadRequest downloadRequest; + private final DownloadRequest downloadRequest; public BasicAuthorizationInterceptor(DownloadRequest downloadRequest) { this.downloadRequest = downloadRequest; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java index 11cd21db5..5f205c515 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java @@ -32,7 +32,7 @@ import de.danoeh.antennapod.core.util.playback.VideoPlayer; * Manages the MediaPlayer object of the PlaybackService. */ public class LocalPSMP extends PlaybackServiceMediaPlayer { - public static final String TAG = "LclPlaybackSvcMPlayer"; + private static final String TAG = "LclPlaybackSvcMPlayer"; private final AudioManager audioManager; @@ -42,7 +42,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { private volatile boolean stream; private volatile MediaType mediaType; - private volatile AtomicBoolean startWhenPrepared; + private final AtomicBoolean startWhenPrepared; private volatile boolean pausedBecauseOfTransientAudiofocusLoss; private volatile Pair<Integer, Integer> videoSize; @@ -710,52 +710,49 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { @Override public void onAudioFocusChange(final int focusChange) { - executor.submit(new Runnable() { - @Override - public void run() { - playerLock.lock(); - - // If there is an incoming call, playback should be paused permanently - TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - final int callState = (tm != null) ? tm.getCallState() : 0; - Log.i(TAG, "Call state:" + callState); - - if (focusChange == AudioManager.AUDIOFOCUS_LOSS || - (!UserPreferences.shouldResumeAfterCall() && callState != TelephonyManager.CALL_STATE_IDLE)) { - Log.d(TAG, "Lost audio focus"); - pause(true, false); - callback.shouldStop(); - } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { - Log.d(TAG, "Gained audio focus"); - if (pausedBecauseOfTransientAudiofocusLoss) { // we paused => play now - resume(); - } else { // we ducked => raise audio level back - setVolumeSync(UserPreferences.getLeftVolume(), - UserPreferences.getRightVolume()); - } - } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) { - if (playerStatus == PlayerStatus.PLAYING) { - if (!UserPreferences.shouldPauseForFocusLoss()) { - Log.d(TAG, "Lost audio focus temporarily. Ducking..."); - final float DUCK_FACTOR = 0.25f; - setVolumeSync(DUCK_FACTOR * UserPreferences.getLeftVolume(), - DUCK_FACTOR * UserPreferences.getRightVolume()); - pausedBecauseOfTransientAudiofocusLoss = false; - } else { - Log.d(TAG, "Lost audio focus temporarily. Could duck, but won't, pausing..."); - pause(false, false); - pausedBecauseOfTransientAudiofocusLoss = true; - } - } - } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) { - if (playerStatus == PlayerStatus.PLAYING) { - Log.d(TAG, "Lost audio focus temporarily. Pausing..."); + executor.submit(() -> { + playerLock.lock(); + + // If there is an incoming call, playback should be paused permanently + TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + final int callState = (tm != null) ? tm.getCallState() : 0; + Log.i(TAG, "Call state:" + callState); + + if (focusChange == AudioManager.AUDIOFOCUS_LOSS || + (!UserPreferences.shouldResumeAfterCall() && callState != TelephonyManager.CALL_STATE_IDLE)) { + Log.d(TAG, "Lost audio focus"); + pause(true, false); + callback.shouldStop(); + } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { + Log.d(TAG, "Gained audio focus"); + if (pausedBecauseOfTransientAudiofocusLoss) { // we paused => play now + resume(); + } else { // we ducked => raise audio level back + setVolumeSync(UserPreferences.getLeftVolume(), + UserPreferences.getRightVolume()); + } + } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) { + if (playerStatus == PlayerStatus.PLAYING) { + if (!UserPreferences.shouldPauseForFocusLoss()) { + Log.d(TAG, "Lost audio focus temporarily. Ducking..."); + final float DUCK_FACTOR = 0.25f; + setVolumeSync(DUCK_FACTOR * UserPreferences.getLeftVolume(), + DUCK_FACTOR * UserPreferences.getRightVolume()); + pausedBecauseOfTransientAudiofocusLoss = false; + } else { + Log.d(TAG, "Lost audio focus temporarily. Could duck, but won't, pausing..."); pause(false, false); pausedBecauseOfTransientAudiofocusLoss = true; } } - playerLock.unlock(); + } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) { + if (playerStatus == PlayerStatus.PLAYING) { + Log.d(TAG, "Lost audio focus temporarily. Pausing..."); + pause(false, false); + pausedBecauseOfTransientAudiofocusLoss = true; + } } + playerLock.unlock(); }); } }; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index c600501c0..417716810 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -88,7 +88,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { /** * True if cast session should disconnect. */ - public static final String EXTRA_CAST_DISCONNECT = "extra.de.danoeh.antennapod.core.service.castDisconnect"; + private static final String EXTRA_CAST_DISCONNECT = "extra.de.danoeh.antennapod.core.service.castDisconnect"; /** * True if media should be streamed. */ @@ -198,7 +198,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { /** * Is true if the service was running, but paused due to headphone disconnect */ - public static boolean transientPause = false; + private static boolean transientPause = false; /** * Is true if a Cast Device is connected to the service. */ @@ -910,7 +910,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { taskManager.setSleepTimer(waitingTime, shakeToReset, vibrate); sendNotificationBroadcast(NOTIFICATION_TYPE_SLEEPTIMER_UPDATE, 0); EventBus.getDefault().post(new MessageEvent(getString(R.string.sleep_timer_enabled_label), - () -> disableSleepTimer())); + this::disableSleepTimer)); } public void disableSleepTimer() { @@ -1630,7 +1630,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { } - public void seekDelta(final int d) { + private void seekDelta(final int d) { mediaPlayer.seekDelta(d); } @@ -1784,7 +1784,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { } }; - private SharedPreferences.OnSharedPreferenceChangeListener prefListener = + private final SharedPreferences.OnSharedPreferenceChangeListener prefListener = (sharedPreferences, key) -> { if (UserPreferences.PREF_LOCKSCREEN_BACKGROUND.equals(key)) { updateMediaSessionMetadata(getPlayable()); @@ -1806,7 +1806,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { void unregisterReceiver(BroadcastReceiver receiver); } - private FlavorHelperCallback flavorHelperCallback = new FlavorHelperCallback() { + private final FlavorHelperCallback flavorHelperCallback = new FlavorHelperCallback() { @Override public PlaybackServiceMediaPlayer.PSMPCallback getMediaPlayerCallback() { return PlaybackService.this.mediaPlayerCallback; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java index 393019fd1..a2481b801 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java @@ -24,14 +24,14 @@ import de.danoeh.antennapod.core.util.playback.Playable; * and remote (cast devices) playback. */ public abstract class PlaybackServiceMediaPlayer { - public static final String TAG = "PlaybackSvcMediaPlayer"; + private static final String TAG = "PlaybackSvcMediaPlayer"; /** * Return value of some PSMP methods if the method call failed. */ static final int INVALID_TIME = -1; - volatile PlayerStatus oldPlayerStatus; + private volatile PlayerStatus oldPlayerStatus; volatile PlayerStatus playerStatus; /** @@ -39,8 +39,8 @@ public abstract class PlaybackServiceMediaPlayer { */ private WifiManager.WifiLock wifiLock; - protected final PSMPCallback callback; - protected final Context context; + final PSMPCallback callback; + final Context context; PlaybackServiceMediaPlayer(@NonNull Context context, @NonNull PSMPCallback callback){ @@ -279,7 +279,7 @@ public abstract class PlaybackServiceMediaPlayer { final synchronized void acquireWifiLockIfNecessary() { if (shouldLockWifi()) { if (wifiLock == null) { - wifiLock = ((WifiManager) context.getSystemService(Context.WIFI_SERVICE)) + wifiLock = ((WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE)) .createWifiLock(WifiManager.WIFI_MODE_FULL, TAG); wifiLock.setReferenceCounted(false); } @@ -365,7 +365,7 @@ public abstract class PlaybackServiceMediaPlayer { * Holds information about a PSMP object. */ public static class PSMPInfo { - public PlayerStatus oldPlayerStatus; + public final PlayerStatus oldPlayerStatus; public PlayerStatus playerStatus; public Playable playable; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java index 0c7d5e718..3d97e862a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java @@ -295,7 +295,7 @@ public class PlaybackServiceTaskManager { /** * Sleeps for a given time and then pauses playback. */ - protected class SleepTimer implements Runnable { + class SleepTimer implements Runnable { private static final String TAG = "SleepTimer"; private static final long UPDATE_INTERVAL = 1000L; private static final long NOTIFICATION_THRESHOLD = 10000; diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java index fcd96826b..c0b1b3bc0 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java @@ -7,14 +7,14 @@ import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.util.Log; -public class ShakeListener implements SensorEventListener +class ShakeListener implements SensorEventListener { private static final String TAG = ShakeListener.class.getSimpleName(); private Sensor mAccelerometer; private SensorManager mSensorMgr; - private PlaybackServiceTaskManager.SleepTimer mSleepTimer; - private Context mContext; + private final PlaybackServiceTaskManager.SleepTimer mSleepTimer; + private final Context mContext; public ShakeListener(Context context, PlaybackServiceTaskManager.SleepTimer sleepTimer) { mContext = context; @@ -22,7 +22,7 @@ public class ShakeListener implements SensorEventListener resume(); } - public void resume() { + private void resume() { // only a precaution, the user should actually not be able to activate shake to reset // when the accelerometer is not available mSensorMgr = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java index 743accb08..fa87cc216 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java @@ -44,7 +44,7 @@ public final class DBReader { /** * Maximum size of the list returned by {@link #getDownloadLog()}. */ - public static final int DOWNLOAD_LOG_SIZE = 200; + private static final int DOWNLOAD_LOG_SIZE = 200; private DBReader() { @@ -120,7 +120,7 @@ public final class DBReader { loadFeedDataOfFeedItemList(items); } - public static void loadTagsOfFeedItemList(List<FeedItem> items) { + private static void loadTagsOfFeedItemList(List<FeedItem> items) { LongList favoriteIds = getFavoriteIDList(); LongList queueIds = getQueueIDList(); @@ -141,7 +141,7 @@ public final class DBReader { * * @param items The FeedItems whose Feed-objects should be loaded. */ - public static void loadFeedDataOfFeedItemList(List<FeedItem> items) { + private static void loadFeedDataOfFeedItemList(List<FeedItem> items) { List<Feed> feeds = getFeedList(); Map<Long, Feed> feedIndex = new ArrayMap<>(feeds.size()); @@ -412,7 +412,7 @@ public final class DBReader { } } - public static LongList getFavoriteIDList() { + private static LongList getFavoriteIDList() { Log.d(TAG, "getFavoriteIDList() called"); PodDBAdapter adapter = PodDBAdapter.getInstance(); @@ -663,7 +663,7 @@ public final class DBReader { } } - static FeedItem getFeedItem(final String podcastUrl, final String episodeUrl, PodDBAdapter adapter) { + private static FeedItem getFeedItem(final String podcastUrl, final String episodeUrl, PodDBAdapter adapter) { Log.d(TAG, "Loading feeditem with podcast url " + podcastUrl + " and episode url " + episodeUrl); Cursor cursor = null; try { @@ -797,7 +797,7 @@ public final class DBReader { } } - static void loadChaptersOfFeedItem(PodDBAdapter adapter, FeedItem item) { + private static void loadChaptersOfFeedItem(PodDBAdapter adapter, FeedItem item) { Cursor cursor = null; try { cursor = adapter.getSimpleChaptersOfFeedItemCursor(item); @@ -1023,14 +1023,14 @@ public final class DBReader { /** * Simply sums up time of podcasts that are marked as played */ - public long totalTimeCountAll; + public final long totalTimeCountAll; /** * Respects speed, listening twice, ... */ - public long totalTime; + public final long totalTime; - public List<StatisticsItem> feedTime; + public final List<StatisticsItem> feedTime; public StatisticsData(long totalTime, long totalTimeCountAll, List<StatisticsItem> feedTime) { this.totalTime = totalTime; @@ -1040,26 +1040,26 @@ public final class DBReader { } public static class StatisticsItem { - public Feed feed; - public long time; + public final Feed feed; + public final long time; /** * Respects speed, listening twice, ... */ - public long timePlayed; + public final long timePlayed; /** * Simply sums up time of podcasts that are marked as played */ - public long timePlayedCountAll; - public long episodes; + public final long timePlayedCountAll; + public final long episodes; /** * Episodes that are actually played */ - public long episodesStarted; + public final long episodesStarted; /** * All episodes that are marked as played (or have position != 0) */ - public long episodesStartedIncludingMarked; + public final long episodesStartedIncludingMarked; public StatisticsItem(Feed feed, long time, long timePlayed, long timePlayedCountAll, long episodes, long episodesStarted, long episodesStartedIncludingMarked) { @@ -1195,12 +1195,12 @@ public final class DBReader { } public static class NavDrawerData { - public List<Feed> feeds; - public int queueSize; - public int numNewItems; - public int numDownloadedItems; - public LongIntMap feedCounters; - public int reclaimableSpace; + public final List<Feed> feeds; + public final int queueSize; + public final int numNewItems; + public final int numDownloadedItems; + public final LongIntMap feedCounters; + public final int reclaimableSpace; public NavDrawerData(List<Feed> feeds, int queueSize, diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java index 90ef217ff..573954412 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java @@ -47,13 +47,13 @@ import static android.content.Context.MODE_PRIVATE; public final class DBTasks { private static final String TAG = "DBTasks"; - public static final String PREF_NAME = "dbtasks"; + private static final String PREF_NAME = "dbtasks"; private static final String PREF_LAST_REFRESH = "last_refresh"; /** * Executor service used by the autodownloadUndownloadedEpisodes method. */ - private static ExecutorService autodownloadExec; + private static final ExecutorService autodownloadExec; static { autodownloadExec = Executors.newSingleThreadExecutor(r -> { @@ -149,7 +149,7 @@ public final class DBTasks { } } - private static AtomicBoolean isRefreshing = new AtomicBoolean(false); + private static final AtomicBoolean isRefreshing = new AtomicBoolean(false); /** * Refreshes a given list of Feeds in a separate Thread. This method might ignore subsequent calls if it is still @@ -292,7 +292,7 @@ public final class DBTasks { * @param context Used for requesting the download. * @param feed The Feed object. */ - public static void refreshFeed(Context context, Feed feed) + private static void refreshFeed(Context context, Feed feed) throws DownloadRequestException { Log.d(TAG, "refreshFeed(feed.id: " + feed.getId() +")"); refreshFeed(context, feed, false, false); @@ -803,7 +803,7 @@ public final class DBTasks { */ abstract static class QueryTask<T> implements Callable<T> { private T result; - private Context context; + private final Context context; public QueryTask(Context context) { this.context = context; @@ -820,7 +820,7 @@ public final class DBTasks { public abstract void execute(PodDBAdapter adapter); - protected void setResult(T result) { + void setResult(T result) { this.result = result; } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java index 8d507fb9a..75510d2f6 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java @@ -382,8 +382,8 @@ public class DBWriter { // add item to either front ot back of queue boolean addToFront = UserPreferences.enqueueAtFront(); if (addToFront) { - queue.add(0 + i, item); - events.add(QueueEvent.added(item, 0 + i)); + queue.add(i, item); + events.add(QueueEvent.added(item, i)); } else { queue.add(item); events.add(QueueEvent.added(item, queue.size() - 1)); @@ -838,9 +838,9 @@ public class DBWriter { * * @param startFlattrClickWorker true if FlattrClickWorker should be started after the FlattrStatus has been saved */ - public static Future<?> setFeedItemFlattrStatus(final Context context, - final FeedItem item, - final boolean startFlattrClickWorker) { + private static Future<?> setFeedItemFlattrStatus(final Context context, + final FeedItem item, + final boolean startFlattrClickWorker) { return dbExec.submit(() -> { PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java index 933be07ff..a8fd79fda 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java @@ -33,8 +33,8 @@ public class DownloadRequester { private static final String TAG = "DownloadRequester"; public static final String IMAGE_DOWNLOADPATH = "images/"; - public static final String FEED_DOWNLOADPATH = "cache/"; - public static final String MEDIA_DOWNLOADPATH = "media/"; + private static final String FEED_DOWNLOADPATH = "cache/"; + private static final String MEDIA_DOWNLOADPATH = "media/"; /** * Denotes the page of the feed that is contained in the DownloadRequest sent by the DownloadRequester. @@ -48,7 +48,7 @@ public class DownloadRequester { private static DownloadRequester downloader; - private Map<String, DownloadRequest> downloads; + private final Map<String, DownloadRequest> downloads; private DownloadRequester() { downloads = new ConcurrentHashMap<>(); @@ -305,13 +305,13 @@ public class DownloadRequester { return downloads.size(); } - public synchronized String getFeedfilePath(Context context) + private synchronized String getFeedfilePath(Context context) throws DownloadRequestException { return getExternalFilesDirOrThrowException(context, FEED_DOWNLOADPATH) .toString() + "/"; } - public synchronized String getFeedfileName(Feed feed) { + private synchronized String getFeedfileName(Feed feed) { String filename = feed.getDownload_url(); if (feed.getTitle() != null && !feed.getTitle().isEmpty()) { filename = feed.getTitle(); @@ -319,7 +319,7 @@ public class DownloadRequester { return "feed-" + FileNameGenerator.generateFileName(filename); } - public synchronized String getMediafilePath(Context context, FeedMedia media) + private synchronized String getMediafilePath(Context context, FeedMedia media) throws DownloadRequestException { File externalStorage = getExternalFilesDirOrThrowException( context, diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java index 97cbdca33..aae5b352e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java @@ -15,7 +15,7 @@ public abstract class EpisodeCleanupAlgorithm { * or getPerformCleanupParameter. * @return The number of episodes that were deleted. */ - public abstract int performCleanup(Context context, int numToRemove); + protected abstract int performCleanup(Context context, int numToRemove); public int performCleanup(Context context) { return performCleanup(context, getDefaultCleanupParameter()); @@ -26,7 +26,7 @@ public abstract class EpisodeCleanupAlgorithm { * space to free to satisfy the episode cache conditions. If the conditions are already satisfied, this * method should not have any effects. */ - public abstract int getDefaultCleanupParameter(); + protected abstract int getDefaultCleanupParameter(); /** * Cleans up just enough episodes to make room for the requested number @@ -48,7 +48,7 @@ public abstract class EpisodeCleanupAlgorithm { * @param amountOfRoomNeeded the number of episodes we want to download * @return the number of episodes to delete in order to make room */ - protected int getNumEpisodesToCleanup(final int amountOfRoomNeeded) { + int getNumEpisodesToCleanup(final int amountOfRoomNeeded) { if (amountOfRoomNeeded >= 0 && UserPreferences.getEpisodeCacheSize() != UserPreferences .getEpisodeCacheSizeUnlimited()) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedItemStatistics.java b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedItemStatistics.java index 09949b87e..d84279f6e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedItemStatistics.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedItemStatistics.java @@ -8,11 +8,11 @@ import java.util.Date; * Contains information about a feed's items. */ public class FeedItemStatistics { - private long feedID; - private int numberOfItems; - private int numberOfNewItems; - private int numberOfInProgressItems; - private Date lastUpdate; + private final long feedID; + private final int numberOfItems; + private final int numberOfNewItems; + private final int numberOfInProgressItems; + private final Date lastUpdate; private static final Date UNKNOWN_DATE = new Date(0); @@ -26,7 +26,7 @@ public class FeedItemStatistics { * @param lastUpdate pubDate of the latest episode. A lastUpdate value of 0 will be interpreted as DATE_UNKOWN if * numberOfItems is 0. */ - public FeedItemStatistics(long feedID, int numberOfItems, int numberOfNewItems, int numberOfInProgressItems, Date lastUpdate) { + private FeedItemStatistics(long feedID, int numberOfItems, int numberOfNewItems, int numberOfInProgressItems, Date lastUpdate) { this.feedID = feedID; this.numberOfItems = numberOfItems; this.numberOfNewItems = numberOfNewItems; diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java index 31499c33e..7d6ba0e32 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java @@ -10,7 +10,6 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import android.media.MediaMetadataRetriever; -import android.os.Build; import android.text.TextUtils; import android.util.Log; @@ -74,7 +73,7 @@ public class PodDBAdapter { public static final String KEY_MIME_TYPE = "mime_type"; public static final String KEY_IMAGE = "image"; public static final String KEY_FEED = "feed"; - public static final String KEY_MEDIA = "media"; + private static final String KEY_MEDIA = "media"; public static final String KEY_DOWNLOADED = "downloaded"; public static final String KEY_LASTUPDATE = "last_update"; public static final String KEY_FEEDFILE = "feedfile"; @@ -126,7 +125,7 @@ public class PodDBAdapter { private static final String TABLE_PRIMARY_KEY = KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT ,"; - public static final String CREATE_TABLE_FEEDS = "CREATE TABLE " + private static final String CREATE_TABLE_FEEDS = "CREATE TABLE " + TABLE_NAME_FEEDS + " (" + TABLE_PRIMARY_KEY + KEY_TITLE + " TEXT," + KEY_CUSTOM_TITLE + " TEXT," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT," + KEY_DOWNLOADED + " INTEGER," + KEY_LINK + " TEXT," @@ -146,7 +145,7 @@ public class PodDBAdapter { + KEY_LAST_UPDATE_FAILED + " INTEGER DEFAULT 0," + KEY_AUTO_DELETE_ACTION + " INTEGER DEFAULT 0)"; - public static final String CREATE_TABLE_FEED_ITEMS = "CREATE TABLE " + private static final String CREATE_TABLE_FEED_ITEMS = "CREATE TABLE " + TABLE_NAME_FEED_ITEMS + " (" + TABLE_PRIMARY_KEY + KEY_TITLE + " TEXT," + KEY_CONTENT_ENCODED + " TEXT," + KEY_PUBDATE + " INTEGER," + KEY_READ + " INTEGER," + KEY_LINK + " TEXT," @@ -157,12 +156,12 @@ public class PodDBAdapter { + KEY_IMAGE + " INTEGER," + KEY_AUTO_DOWNLOAD + " INTEGER)"; - public static final String CREATE_TABLE_FEED_IMAGES = "CREATE TABLE " + private static final String CREATE_TABLE_FEED_IMAGES = "CREATE TABLE " + TABLE_NAME_FEED_IMAGES + " (" + TABLE_PRIMARY_KEY + KEY_TITLE + " TEXT," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT," + KEY_DOWNLOADED + " INTEGER)"; - public static final String CREATE_TABLE_FEED_MEDIA = "CREATE TABLE " + private static final String CREATE_TABLE_FEED_MEDIA = "CREATE TABLE " + TABLE_NAME_FEED_MEDIA + " (" + TABLE_PRIMARY_KEY + KEY_DURATION + " INTEGER," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT," + KEY_DOWNLOADED + " INTEGER," + KEY_POSITION @@ -173,53 +172,53 @@ public class PodDBAdapter { + KEY_HAS_EMBEDDED_PICTURE + " INTEGER," + KEY_LAST_PLAYED_TIME + " INTEGER)"; - public static final String CREATE_TABLE_DOWNLOAD_LOG = "CREATE TABLE " + private static final String CREATE_TABLE_DOWNLOAD_LOG = "CREATE TABLE " + TABLE_NAME_DOWNLOAD_LOG + " (" + TABLE_PRIMARY_KEY + KEY_FEEDFILE + " INTEGER," + KEY_FEEDFILETYPE + " INTEGER," + KEY_REASON + " INTEGER," + KEY_SUCCESSFUL + " INTEGER," + KEY_COMPLETION_DATE + " INTEGER," + KEY_REASON_DETAILED + " TEXT," + KEY_DOWNLOADSTATUS_TITLE + " TEXT)"; - public static final String CREATE_TABLE_QUEUE = "CREATE TABLE " + private static final String CREATE_TABLE_QUEUE = "CREATE TABLE " + TABLE_NAME_QUEUE + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_FEEDITEM + " INTEGER," + KEY_FEED + " INTEGER)"; - public static final String CREATE_TABLE_SIMPLECHAPTERS = "CREATE TABLE " + private static final String CREATE_TABLE_SIMPLECHAPTERS = "CREATE TABLE " + TABLE_NAME_SIMPLECHAPTERS + " (" + TABLE_PRIMARY_KEY + KEY_TITLE + " TEXT," + KEY_START + " INTEGER," + KEY_FEEDITEM + " INTEGER," + KEY_LINK + " TEXT," + KEY_CHAPTER_TYPE + " INTEGER)"; // SQL Statements for creating indexes - public static final String CREATE_INDEX_FEEDITEMS_FEED = "CREATE INDEX " + private static final String CREATE_INDEX_FEEDITEMS_FEED = "CREATE INDEX " + TABLE_NAME_FEED_ITEMS + "_" + KEY_FEED + " ON " + TABLE_NAME_FEED_ITEMS + " (" + KEY_FEED + ")"; - public static final String CREATE_INDEX_FEEDITEMS_IMAGE = "CREATE INDEX " + private static final String CREATE_INDEX_FEEDITEMS_IMAGE = "CREATE INDEX " + TABLE_NAME_FEED_ITEMS + "_" + KEY_IMAGE + " ON " + TABLE_NAME_FEED_ITEMS + " (" + KEY_IMAGE + ")"; - public static final String CREATE_INDEX_FEEDITEMS_PUBDATE = "CREATE INDEX IF NOT EXISTS " + private static final String CREATE_INDEX_FEEDITEMS_PUBDATE = "CREATE INDEX IF NOT EXISTS " + TABLE_NAME_FEED_ITEMS + "_" + KEY_PUBDATE + " ON " + TABLE_NAME_FEED_ITEMS + " (" + KEY_PUBDATE + ")"; - public static final String CREATE_INDEX_FEEDITEMS_READ = "CREATE INDEX IF NOT EXISTS " + private static final String CREATE_INDEX_FEEDITEMS_READ = "CREATE INDEX IF NOT EXISTS " + TABLE_NAME_FEED_ITEMS + "_" + KEY_READ + " ON " + TABLE_NAME_FEED_ITEMS + " (" + KEY_READ + ")"; - public static final String CREATE_INDEX_QUEUE_FEEDITEM = "CREATE INDEX " + private static final String CREATE_INDEX_QUEUE_FEEDITEM = "CREATE INDEX " + TABLE_NAME_QUEUE + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_QUEUE + " (" + KEY_FEEDITEM + ")"; - public static final String CREATE_INDEX_FEEDMEDIA_FEEDITEM = "CREATE INDEX " + private static final String CREATE_INDEX_FEEDMEDIA_FEEDITEM = "CREATE INDEX " + TABLE_NAME_FEED_MEDIA + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_FEED_MEDIA + " (" + KEY_FEEDITEM + ")"; - public static final String CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM = "CREATE INDEX " + private static final String CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM = "CREATE INDEX " + TABLE_NAME_SIMPLECHAPTERS + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_SIMPLECHAPTERS + " (" + KEY_FEEDITEM + ")"; - public static final String CREATE_TABLE_FAVORITES = "CREATE TABLE " + private static final String CREATE_TABLE_FAVORITES = "CREATE TABLE " + TABLE_NAME_FAVORITES + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_FEEDITEM + " INTEGER," + KEY_FEED + " INTEGER)"; @@ -310,8 +309,8 @@ public class PodDBAdapter { private static PodDBHelper dbHelper; private static volatile SQLiteDatabase db; - private static Lock dbLock = new ReentrantLock(); - private static AtomicInteger counter = new AtomicInteger(0); + private static final Lock dbLock = new ReentrantLock(); + private static final AtomicInteger counter = new AtomicInteger(0); public static void init(Context context) { PodDBAdapter.context = context.getApplicationContext(); @@ -392,7 +391,7 @@ public class PodDBAdapter { * * @return the id of the entry */ - public long setFeed(Feed feed) { + private long setFeed(Feed feed) { ContentValues values = new ContentValues(); values.put(KEY_TITLE, feed.getFeedTitle()); values.put(KEY_LINK, feed.getLink()); @@ -839,7 +838,7 @@ public class PodDBAdapter { } } - public void setChapters(FeedItem item) { + private void setChapters(FeedItem item) { ContentValues values = new ContentValues(); for (Chapter chapter : item.getChapters()) { values.put(KEY_TITLE, chapter.getTitle()); @@ -947,7 +946,7 @@ public class PodDBAdapter { db.execSQL(deleteClause); } - public boolean isItemInFavorites(FeedItem item) { + private boolean isItemInFavorites(FeedItem item) { String query = String.format("SELECT %s from %s WHERE %s=%d", KEY_ID, TABLE_NAME_FAVORITES, KEY_FEEDITEM, item.getId()); Cursor c = db.rawQuery(query, null); @@ -991,7 +990,7 @@ public class PodDBAdapter { db.delete(TABLE_NAME_QUEUE, null, null); } - public void removeFeedMedia(FeedMedia media) { + private void removeFeedMedia(FeedMedia media) { // delete download log entries for feed media db.delete(TABLE_NAME_DOWNLOAD_LOG, KEY_FEEDFILE + "=? AND " + KEY_FEEDFILETYPE + "=?", new String[]{String.valueOf(media.getId()), String.valueOf(FeedMedia.FEEDFILETYPE_FEEDMEDIA)}); @@ -1000,12 +999,12 @@ public class PodDBAdapter { new String[]{String.valueOf(media.getId())}); } - public void removeChaptersOfItem(FeedItem item) { + private void removeChaptersOfItem(FeedItem item) { db.delete(TABLE_NAME_SIMPLECHAPTERS, KEY_FEEDITEM + "=?", new String[]{String.valueOf(item.getId())}); } - public void removeFeedImage(FeedImage image) { + private void removeFeedImage(FeedImage image) { db.delete(TABLE_NAME_FEED_IMAGES, KEY_ID + "=?", new String[]{String.valueOf(image.getId())}); } @@ -1013,7 +1012,7 @@ public class PodDBAdapter { /** * Remove a FeedItem and its FeedMedia entry. */ - public void removeFeedItem(FeedItem item) { + private void removeFeedItem(FeedItem item) { if (item.getMedia() != null) { removeFeedMedia(item.getMedia()); } @@ -1089,7 +1088,7 @@ public class PodDBAdapter { return getAllItemsOfFeedCursor(feed.getId()); } - public final Cursor getAllItemsOfFeedCursor(final long feedId) { + private Cursor getAllItemsOfFeedCursor(final long feedId) { return db.query(TABLE_NAME_FEED_ITEMS, FEEDITEM_SEL_FI_SMALL, KEY_FEED + "=?", new String[]{String.valueOf(feedId)}, null, null, null); @@ -1332,11 +1331,7 @@ public class PodDBAdapter { if (size == 1) { return "(?)"; } - StringBuilder builder = - new StringBuilder("(") - .append(TextUtils.join(",", Collections.nCopies(size, "?"))) - .append(")"); - return builder.toString(); + return "(" + TextUtils.join(",", Collections.nCopies(size, "?")) + ")"; } public final Cursor getFeedCursor(final long id) { @@ -1668,7 +1663,7 @@ public class PodDBAdapter { private static final int VERSION = 1060200; - private Context context; + private final Context context; /** * Constructor. diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/FeedHandlerResult.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/FeedHandlerResult.java index f67721a6e..77300d864 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/FeedHandlerResult.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/FeedHandlerResult.java @@ -9,8 +9,8 @@ import de.danoeh.antennapod.core.feed.Feed; */ public class FeedHandlerResult { - public Feed feed; - public Map<String, String> alternateFeedUrls; + public final Feed feed; + public final Map<String, String> alternateFeedUrls; public FeedHandlerResult(Feed feed, Map<String, String> alternateFeedUrls) { this.feed = feed; diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java index 66513a12e..530cbd0e9 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java @@ -20,29 +20,29 @@ public class HandlerState { /** * Feed that the Handler is currently processing. */ - protected Feed feed; + Feed feed; /** * Contains links to related feeds, e.g. feeds with enclosures in other formats. The key of the map is the * URL of the feed, the value is the title */ - protected Map<String, String> alternateUrls; - protected ArrayList<FeedItem> items; - protected FeedItem currentItem; - protected Stack<SyndElement> tagstack; + final Map<String, String> alternateUrls; + private final ArrayList<FeedItem> items; + private FeedItem currentItem; + final Stack<SyndElement> tagstack; /** * Namespaces that have been defined so far. */ - protected Map<String, Namespace> namespaces; - protected Stack<Namespace> defaultNamespaces; + final Map<String, Namespace> namespaces; + final Stack<Namespace> defaultNamespaces; /** * Buffer for saving characters. */ - protected StringBuffer contentBuf; + StringBuffer contentBuf; /** * Temporarily saved objects. */ - protected Map<String, Object> tempObjects; + private final Map<String, Object> tempObjects; public HandlerState(Feed feed) { this.feed = feed; diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java index ae91c0743..17b2708aa 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java @@ -18,10 +18,10 @@ import de.danoeh.antennapod.core.syndication.namespace.SyndElement; import de.danoeh.antennapod.core.syndication.namespace.atom.NSAtom; /** Superclass for all SAX Handlers which process Syndication formats */ -public class SyndHandler extends DefaultHandler { +class SyndHandler extends DefaultHandler { private static final String TAG = "SyndHandler"; private static final String DEFAULT_PREFIX = ""; - protected HandlerState state; + final HandlerState state; public SyndHandler(Feed feed, TypeGetter.Type type) { state = new HandlerState(feed); diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java index 3da9251d9..606f93faf 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java @@ -4,7 +4,7 @@ import de.danoeh.antennapod.core.syndication.handler.TypeGetter.Type; public class UnsupportedFeedtypeException extends Exception { private static final long serialVersionUID = 9105878964928170669L; - private TypeGetter.Type type; + private final TypeGetter.Type type; private String rootElement; public UnsupportedFeedtypeException(Type type) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java index 7d60566b2..670e99fce 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java @@ -21,8 +21,8 @@ public class NSITunes extends Namespace { private static final String AUTHOR = "author"; public static final String DURATION = "duration"; - public static final String SUBTITLE = "subtitle"; - public static final String SUMMARY = "summary"; + private static final String SUBTITLE = "subtitle"; + private static final String SUMMARY = "summary"; @Override diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSSimpleChapters.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSSimpleChapters.java index 703817a35..45266569a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSSimpleChapters.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSSimpleChapters.java @@ -17,11 +17,11 @@ public class NSSimpleChapters extends Namespace { public static final String NSTAG = "psc|sc"; public static final String NSURI = "http://podlove.org/simple-chapters"; - public static final String CHAPTERS = "chapters"; - public static final String CHAPTER = "chapter"; - public static final String START = "start"; - public static final String TITLE = "title"; - public static final String HREF = "href"; + private static final String CHAPTERS = "chapters"; + private static final String CHAPTER = "chapter"; + private static final String START = "start"; + private static final String TITLE = "title"; + private static final String HREF = "href"; @Override public SyndElement handleElementStart(String localName, HandlerState state, diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/SyndElement.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/SyndElement.java index 8adcd2086..ba1b8ba5c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/SyndElement.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/SyndElement.java @@ -2,8 +2,8 @@ package de.danoeh.antennapod.core.syndication.namespace; /** Defines a XML Element that is pushed on the tagstack */ public class SyndElement { - protected String name; - protected Namespace namespace; + private final String name; + private final Namespace namespace; public SyndElement(String name, Namespace namespace) { this.name = name; diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java index d4a3edd09..ea1b724d4 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java @@ -8,10 +8,10 @@ import de.danoeh.antennapod.core.syndication.namespace.SyndElement; /** Represents Atom Element which contains text (content, title, summary). */ public class AtomText extends SyndElement { public static final String TYPE_TEXT = "text"; - public static final String TYPE_HTML = "html"; - public static final String TYPE_XHTML = "xhtml"; + private static final String TYPE_HTML = "html"; + private static final String TYPE_XHTML = "xhtml"; - private String type; + private final String type; private String content; public AtomText(String name, Namespace namespace, String type) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java index cfb20d578..1fe388d9d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java @@ -64,8 +64,8 @@ public class NSAtom extends Namespace { private static final String isText = TITLE + "|" + CONTENT + "|" + SUBTITLE + "|" + SUMMARY; - public static final String isFeed = FEED + "|" + NSRSS20.CHANNEL; - public static final String isFeedItem = ENTRY + "|" + NSRSS20.ITEM; + private static final String isFeed = FEED + "|" + NSRSS20.CHANNEL; + private static final String isFeedItem = ENTRY + "|" + NSRSS20.ITEM; @Override public SyndElement handleElementStart(String localName, HandlerState state, diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java index 70a180913..b513fbe99 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java @@ -71,8 +71,8 @@ public final class Converter { int m = rest / MINUTES_MIL; rest -= m * MINUTES_MIL; int s = rest / SECONDS_MIL; - - return String.format("%02d:%02d:%02d", h, m, s); + + return String.format(Locale.getDefault(), "%02d:%02d:%02d", h, m, s); } /** Converts milliseconds to a string containing hours and minutes */ @@ -81,7 +81,7 @@ public final class Converter { int rest = duration - h * HOURS_MIL; int m = rest / MINUTES_MIL; - return String.format("%02d:%02d", h, m); + return String.format(Locale.getDefault(), "%02d:%02d", h, m); } /** Converts long duration string (HH:MM:SS) to milliseconds. */ diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java b/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java index f432424f8..69dc38895 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java @@ -92,7 +92,7 @@ public class DuckType { * false otherwise. */ @SuppressWarnings("rawtypes") - public boolean quacksLikeA(Class iface) { + private boolean quacksLikeA(Class iface) { for (Method method : iface.getMethods()) { if (findMethodBySignature(method) == null) { return false; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java b/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java index 89edd7dbe..fb1b0dc8f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java @@ -5,7 +5,7 @@ import java.util.List; import de.danoeh.antennapod.core.feed.FeedItem; -public class EpisodeFilter { +class EpisodeFilter { private EpisodeFilter() { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java index cc5b0f18f..29d095cd2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java @@ -5,7 +5,7 @@ import java.util.Comparator; import de.danoeh.antennapod.core.feed.Feed; /** Compares the title of two feeds for sorting. */ -public class FeedtitleComparator implements Comparator<Feed> { +class FeedtitleComparator implements Comparator<Feed> { @Override public int compare(Feed lhs, Feed rhs) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/IntList.java b/core/src/main/java/de/danoeh/antennapod/core/util/IntList.java index f48b9169b..1da5417c1 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/IntList.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/IntList.java @@ -8,7 +8,7 @@ import java.util.Arrays; public final class IntList { private int[] values; - protected int size; + private int size; /** * Constructs an empty instance with a default initial capacity. @@ -22,7 +22,7 @@ public final class IntList { * * @param initialCapacity {@code >= 0;} initial capacity of the list */ - public IntList(int initialCapacity) { + private IntList(int initialCapacity) { if(initialCapacity < 0) { throw new IllegalArgumentException("initial capacity must be 0 or higher"); } @@ -200,7 +200,7 @@ public final class IntList { * @param value value to find * @return index of value or -1 */ - public int indexOf(int value) { + private int indexOf(int value) { for (int i = 0; i < size; i++) { if (values[i] == value) { return i; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java index 287ec4d0c..7ec7f84c4 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java @@ -7,7 +7,7 @@ import java.nio.charset.Charset; public class LangUtils { public static final Charset UTF_8 = Charset.forName("UTF-8"); - private static ArrayMap<String, String> languages; + private static final ArrayMap<String, String> languages; static { languages = new ArrayMap<>(); languages.put("af", "Afrikaans"); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/LongIntMap.java b/core/src/main/java/de/danoeh/antennapod/core/util/LongIntMap.java index c5ac44bf5..78ed002ac 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/LongIntMap.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/LongIntMap.java @@ -88,7 +88,7 @@ public class LongIntMap { /** * Removes the mapping at the given index. */ - public void removeAt(int index) { + private void removeAt(int index) { System.arraycopy(keys, index + 1, keys, index, size - (index + 1)); System.arraycopy(values, index + 1, values, index, size - (index + 1)); size--; @@ -130,7 +130,7 @@ public class LongIntMap { * smallest key and <code>keyAt(size()-1)</code> will return the largest * key.</p> */ - public long keyAt(int index) { + private long keyAt(int index) { if (index >= size) { throw new IndexOutOfBoundsException("n >= size()"); } else if(index < 0) { @@ -150,7 +150,7 @@ public class LongIntMap { * smallest key and <code>valueAt(size()-1)</code> will return the value * associated with the largest key.</p> */ - public int valueAt(int index) { + private int valueAt(int index) { if (index >= size) { throw new IndexOutOfBoundsException("n >= size()"); } else if(index < 0) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java index e6ff3a981..cbda583fa 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java @@ -54,7 +54,7 @@ public class NetworkUtils { Log.d(TAG, "Auto-dl filter is disabled"); return true; } else { - WifiManager wm = (WifiManager) context + WifiManager wm = (WifiManager) context.getApplicationContext() .getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wm.getConnectionInfo(); List<String> selectedNetworks = Arrays @@ -93,7 +93,7 @@ public class NetworkUtils { return UserPreferences.isAllowMobileUpdate() || !NetworkUtils.isNetworkMetered(); } - public static boolean isNetworkMetered() { + private static boolean isNetworkMetered() { ConnectivityManager connManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); return ConnectivityManagerCompat.isActiveNetworkMetered(connManager); @@ -103,7 +103,7 @@ public class NetworkUtils { * Returns the SSID of the wifi connection, or <code>null</code> if there is no wifi. */ public static String getWifiSsid() { - WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); if (wifiInfo != null) { return wifiInfo.getSSID(); @@ -112,63 +112,60 @@ public class NetworkUtils { } public static Observable<Long> getFeedMediaSizeObservable(FeedMedia media) { - return Observable.create(new Observable.OnSubscribe<Long>() { - @Override - public void call(Subscriber<? super Long> subscriber) { - if (!NetworkUtils.isDownloadAllowed()) { + return Observable.create((Observable.OnSubscribe<Long>) subscriber -> { + if (!NetworkUtils.isDownloadAllowed()) { + subscriber.onNext(0L); + subscriber.onCompleted(); + return; + } + long size = Integer.MIN_VALUE; + if (media.isDownloaded()) { + File mediaFile = new File(media.getLocalMediaUrl()); + if (mediaFile.exists()) { + size = mediaFile.length(); + } + } else if (!media.checkedOnSizeButUnknown()) { + // only query the network if we haven't already checked + + String url = media.getDownload_url(); + if(TextUtils.isEmpty(url)) { subscriber.onNext(0L); subscriber.onCompleted(); return; } - long size = Integer.MIN_VALUE; - if (media.isDownloaded()) { - File mediaFile = new File(media.getLocalMediaUrl()); - if (mediaFile.exists()) { - size = mediaFile.length(); - } - } else if (!media.checkedOnSizeButUnknown()) { - // only query the network if we haven't already checked - - String url = media.getDownload_url(); - if(TextUtils.isEmpty(url)) { - subscriber.onNext(0L); - subscriber.onCompleted(); - return; - } - OkHttpClient client = AntennapodHttpClient.getHttpClient(); - Request.Builder httpReq = new Request.Builder() - .url(url) - .header("Accept-Encoding", "identity") - .head(); - try { - Response response = client.newCall(httpReq.build()).execute(); - if (response.isSuccessful()) { - String contentLength = response.header("Content-Length"); - try { - size = Integer.parseInt(contentLength); - } catch (NumberFormatException e) { - Log.e(TAG, Log.getStackTraceString(e)); - } + OkHttpClient client = AntennapodHttpClient.getHttpClient(); + Request.Builder httpReq = new Request.Builder() + .url(url) + .header("Accept-Encoding", "identity") + .head(); + try { + Response response = client.newCall(httpReq.build()).execute(); + if (response.isSuccessful()) { + String contentLength = response.header("Content-Length"); + try { + size = Integer.parseInt(contentLength); + } catch (NumberFormatException e) { + Log.e(TAG, Log.getStackTraceString(e)); } - } catch (IOException e) { - subscriber.onNext(0L); - subscriber.onCompleted(); - Log.e(TAG, Log.getStackTraceString(e)); - return; // better luck next time } + } catch (IOException e) { + subscriber.onNext(0L); + subscriber.onCompleted(); + Log.e(TAG, Log.getStackTraceString(e)); + return; // better luck next time } - Log.d(TAG, "new size: " + size); - if (size <= 0) { - // they didn't tell us the size, but we don't want to keep querying on it - media.setCheckedOnSizeButUnknown(); - } else { - media.setSize(size); - } - subscriber.onNext(size); - subscriber.onCompleted(); - DBWriter.setFeedMedia(media); } + Log.d(TAG, "new size: " + size); + if (size <= 0) { + // they didn't tell us the size, but we don't want to keep querying on it + media.setCheckedOnSizeButUnknown(); + } else { + media.setSize(size); + } + subscriber.onNext(size); + subscriber.onCompleted(); + DBWriter.setFeedMedia(media); }) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java b/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java index 287fe1100..ecb641dad 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java @@ -5,7 +5,7 @@ import de.danoeh.antennapod.core.feed.FeedMedia; public class MediaFileNotFoundException extends Exception { private static final long serialVersionUID = 1L; - private FeedMedia media; + private final FeedMedia media; public MediaFileNotFoundException(String msg, FeedMedia media) { super(msg); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java index c6150b0fd..45cb56988 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java @@ -10,8 +10,8 @@ import de.danoeh.antennapod.core.BuildConfig; /** Ensures that only one instance of the FlattrService class exists at a time */ -public class FlattrServiceCreator { - public static final String TAG = "FlattrServiceCreator"; +class FlattrServiceCreator { + private static final String TAG = "FlattrServiceCreator"; private static volatile FlattrService flattrService; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java index d82171d1a..40a9fc7d5 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java @@ -3,9 +3,9 @@ package de.danoeh.antennapod.core.util.flattr; import java.util.Calendar; public class FlattrStatus { - public static final int STATUS_UNFLATTERED = 0; + private static final int STATUS_UNFLATTERED = 0; public static final int STATUS_QUEUE = 1; - public static final int STATUS_FLATTRED = 2; + private static final int STATUS_FLATTRED = 2; private int status = STATUS_UNFLATTERED; private Calendar lastFlattred; @@ -38,7 +38,7 @@ public class FlattrStatus { status = STATUS_QUEUE; } - public void fromLong(long status) { + private void fromLong(long status) { if (status == STATUS_UNFLATTERED || status == STATUS_QUEUE) this.status = (int) status; else { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java index 515028ab6..d5bb88771 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java @@ -1,7 +1,7 @@ package de.danoeh.antennapod.core.util.flattr; public interface FlattrThing { - public String getTitle(); - public String getPaymentLink(); - public FlattrStatus getFlattrStatus(); + String getTitle(); + String getPaymentLink(); + FlattrStatus getFlattrStatus(); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java index 6ddfb0366..313d1c2f2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java @@ -99,7 +99,7 @@ public class FlattrUtils { cachedToken = token; } - public static void deleteToken() { + private static void deleteToken() { Log.d(TAG, "Deleting flattr token"); storeToken(null); } @@ -116,7 +116,7 @@ public class FlattrUtils { public static List<Flattr> retrieveFlattredThings() throws FlattrException { - ArrayList<Flattr> myFlattrs = new ArrayList<Flattr>(); + ArrayList<Flattr> myFlattrs = new ArrayList<>(); if (hasToken()) { FlattrService fs = FlattrServiceCreator.getService(retrieveToken()); @@ -172,17 +172,11 @@ public class FlattrUtils { // ------------------------------------------------ DIALOGS - public static void showRevokeDialog(final Context context) { + private static void showRevokeDialog(final Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.access_revoked_title); builder.setMessage(R.string.access_revoked_info); - builder.setNeutralButton(android.R.string.ok, new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); - } - }); + builder.setNeutralButton(android.R.string.ok, (dialog, which) -> dialog.cancel()); builder.create().show(); } @@ -197,27 +191,15 @@ public class FlattrUtils { builder.setTitle(R.string.no_flattr_token_title); builder.setMessage(R.string.no_flattr_token_msg); builder.setPositiveButton(R.string.authenticate_now_label, - new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, int which) { - context.startActivity( - ClientConfig.flattrCallbacks.getFlattrAuthenticationActivityIntent(context)); - } - - } + (dialog, which) -> context.startActivity( + ClientConfig.flattrCallbacks.getFlattrAuthenticationActivityIntent(context)) ); builder.setNegativeButton(R.string.visit_website_label, - new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, int which) { - Uri uri = Uri.parse(url); - context.startActivity(new Intent(Intent.ACTION_VIEW, - uri)); - } - + (dialog, which) -> { + Uri uri = Uri.parse(url); + context.startActivity(new Intent(Intent.ACTION_VIEW, + uri)); } ); builder.create().show(); @@ -231,13 +213,7 @@ public class FlattrUtils { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.error_label); builder.setMessage(msg); - builder.setNeutralButton(android.R.string.ok, new OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, int which) { - dialog.cancel(); - } - }); + builder.setNeutralButton(android.R.string.ok, (dialog, which) -> dialog.cancel()); builder.create().show(); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java index 2c178496e..43cd5f170 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java @@ -24,7 +24,7 @@ public class SimpleFlattrThing implements FlattrThing { return this.status; } - private String title; - private String url; - private FlattrStatus status; + private final String title; + private final String url; + private final FlattrStatus status; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/ID3Reader.java b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/ID3Reader.java index 241082213..077d8724d 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/ID3Reader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/ID3Reader.java @@ -19,10 +19,10 @@ public class ID3Reader { private static final int ID3_LENGTH = 3; private static final int FRAME_ID_LENGTH = 4; - protected static final int ACTION_SKIP = 1; - protected static final int ACTION_DONT_SKIP = 2; + private static final int ACTION_SKIP = 1; + static final int ACTION_DONT_SKIP = 2; - protected int readerPosition; + private int readerPosition; private static final byte ENCODING_UTF16_WITH_BOM = 1; private static final byte ENCODING_UTF16_WITHOUT_BOM = 2; @@ -30,7 +30,7 @@ public class ID3Reader { private TagHeader tagHeader; - public ID3Reader() { + ID3Reader() { } public final void readInputStream(InputStream input) throws IOException, @@ -92,7 +92,7 @@ public class ID3Reader { * Read a certain number of bytes from the given input stream. This method * changes the readerPosition-attribute. */ - protected char[] readBytes(InputStream input, int number) + char[] readBytes(InputStream input, int number) throws IOException, ID3ReaderException { char[] header = new char[number]; for (int i = 0; i < number; i++) { @@ -111,7 +111,7 @@ public class ID3Reader { * Skip a certain number of bytes on the given input stream. This method * changes the readerPosition-attribute. */ - protected void skipBytes(InputStream input, int number) throws IOException { + void skipBytes(InputStream input, int number) throws IOException { if (number <= 0) { number = 1; } @@ -170,7 +170,7 @@ public class ID3Reader { return out; } - protected int readString(StringBuffer buffer, InputStream input, int max) throws IOException, + int readString(StringBuffer buffer, InputStream input, int max) throws IOException, ID3ReaderException { if (max > 0) { char[] encoding = readBytes(input, 1); @@ -191,8 +191,8 @@ public class ID3Reader { } } - protected int readISOString(StringBuffer buffer, InputStream input, int max) - throws IOException, ID3ReaderException { + int readISOString(StringBuffer buffer, InputStream input, int max) + throws IOException { int bytesRead = 0; char c; @@ -205,7 +205,7 @@ public class ID3Reader { } private int readUnicodeString(StringBuffer strBuffer, InputStream input, int max, Charset charset) - throws IOException, ID3ReaderException { + throws IOException { byte[] buffer = new byte[max]; int c, cZero = -1; int i = 0; @@ -231,20 +231,20 @@ public class ID3Reader { return i; } - public int onStartTagHeader(TagHeader header) { + int onStartTagHeader(TagHeader header) { return ACTION_SKIP; } - public int onStartFrameHeader(FrameHeader header, InputStream input) + int onStartFrameHeader(FrameHeader header, InputStream input) throws IOException, ID3ReaderException { return ACTION_SKIP; } - public void onEndTag() { + void onEndTag() { } - public void onNoTagHeaderFound() { + void onNoTagHeaderFound() { } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/FrameHeader.java b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/FrameHeader.java index 89eab1398..2f3f378ab 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/FrameHeader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/FrameHeader.java @@ -2,7 +2,7 @@ package de.danoeh.antennapod.core.util.id3reader.model; public class FrameHeader extends Header { - protected char flags; + private final char flags; public FrameHeader(String id, int size, char flags) { super(id, size); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/Header.java b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/Header.java index 346e2893f..29185748f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/Header.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/Header.java @@ -2,10 +2,10 @@ package de.danoeh.antennapod.core.util.id3reader.model; public abstract class Header { - protected String id; - protected int size; + final String id; + final int size; - public Header(String id, int size) { + Header(String id, int size) { super(); this.id = id; this.size = size; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/TagHeader.java b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/TagHeader.java index 0a6b8357f..b652a139c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/TagHeader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/TagHeader.java @@ -2,8 +2,8 @@ package de.danoeh.antennapod.core.util.id3reader.model; public class TagHeader extends Header { - protected char version; - protected byte flags; + private final char version; + private final byte flags; public TagHeader(String id, int size, char version, byte flags) { super(id, size); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java index c4acdb65e..645bae5f3 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java @@ -23,7 +23,7 @@ public class ExternalMedia implements Playable { public static final String PREF_MEDIA_TYPE = "ExternalMedia.PrefMediaType"; public static final String PREF_LAST_PLAYED_TIME = "ExternalMedia.PrefLastPlayedTime"; - private String source; + private final String source; private String episodeTitle; private String feedTitle; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java index d67153a4e..aba395ec1 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java @@ -45,7 +45,7 @@ public interface IPlayer { void setScreenOnWhilePlaying(boolean screenOn); void setDataSource(String path) throws IllegalStateException, IOException, - IllegalArgumentException, SecurityException; + IllegalArgumentException, SecurityException; void setDisplay(SurfaceHolder sh); @@ -67,7 +67,7 @@ public interface IPlayer { void stop(); - public void setVideoScalingMode(int mode); + void setVideoScalingMode(int mode); - public void setWakeMode(Context context, int mode); + void setWakeMode(Context context, int mode); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java index 9d3854f41..a160b4f0a 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java @@ -87,13 +87,7 @@ public abstract class PlaybackController { Thread t = new Thread(r); t.setPriority(Thread.MIN_PRIORITY); return t; - }, new RejectedExecutionHandler() { - @Override - public void rejectedExecution(Runnable r, - ThreadPoolExecutor executor) { - Log.w(TAG, "Rejected execution of runnable in schedExecutor"); - } - } + }, (r, executor) -> Log.w(TAG, "Rejected execution of runnable in schedExecutor") ); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java index efdf46a97..34cfe6d05 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java @@ -14,6 +14,7 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; +import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -42,22 +43,22 @@ public class Timeline { private final int pageMargin; public Timeline(Context context, ShownotesProvider shownotesProvider) { - if (shownotesProvider == null) throw new IllegalArgumentException("shownotesProvider = null"); + if (shownotesProvider == null) { + throw new IllegalArgumentException("shownotesProvider = null"); + } this.shownotesProvider = shownotesProvider; noShownotesLabel = context.getString(R.string.no_shownotes_label); - TypedArray res = context.getTheme().obtainStyledAttributes( - new int[]{ android.R.attr.textColorPrimary}); + TypedArray res = context.getTheme().obtainStyledAttributes(new int[]{android.R.attr.textColorPrimary}); @ColorInt int col = res.getColor(0, 0); colorPrimaryString = "rgba(" + Color.red(col) + "," + Color.green(col) + "," + - Color.blue(col) + "," + (Color.alpha(col)/256.0) + ")"; + Color.blue(col) + "," + (Color.alpha(col) / 255.0) + ")"; res.recycle(); - res = context.getTheme().obtainStyledAttributes( - new int[]{android.R.attr.textColorSecondary}); + res = context.getTheme().obtainStyledAttributes(new int[]{android.R.attr.textColorSecondary}); col = res.getColor(0, 0); colorSecondaryString = "rgba(" + Color.red(col) + "," + Color.green(col) + "," + - Color.blue(col) + "," + (Color.alpha(col)/256.0) + ")"; + Color.blue(col) + "," + (Color.alpha(col) / 255.0) + ")"; res.recycle(); pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, @@ -93,9 +94,9 @@ public class Timeline { return null; } - if(TextUtils.isEmpty(shownotes)) { + if (TextUtils.isEmpty(shownotes)) { Log.d(TAG, "shownotesProvider contained no shownotes. Returning 'no shownotes' message"); - shownotes ="<html>" + + shownotes = "<html>" + "<head>" + "<style type='text/css'>" + "html, body { margin: 0; padding: 0; width: 100%; height: 100%; } " + @@ -113,15 +114,15 @@ public class Timeline { } // replace ASCII line breaks with HTML ones if shownotes don't contain HTML line breaks already - if(!LINE_BREAK_REGEX.matcher(shownotes).find() && !shownotes.contains("<p>")) { + if (!LINE_BREAK_REGEX.matcher(shownotes).find() && !shownotes.contains("<p>")) { shownotes = shownotes.replace("\n", "<br />"); } Document document = Jsoup.parse(shownotes); // apply style - String styleStr = String.format(WEBVIEW_STYLE, colorPrimaryString, "100%", pageMargin, - pageMargin, pageMargin, pageMargin); + String styleStr = String.format(Locale.getDefault(), WEBVIEW_STYLE, colorPrimaryString, "100%", + pageMargin, pageMargin, pageMargin, pageMargin); document.head().appendElement("style").attr("type", "text/css").text(styleStr); // apply timecode links @@ -139,7 +140,7 @@ public class Timeline { String rep; if (playable == null || playable.getDuration() > time) { - rep = String.format(TIMECODE_LINK, time, group); + rep = String.format(Locale.getDefault(), TIMECODE_LINK, time, group); } else { rep = group; } @@ -150,7 +151,7 @@ public class Timeline { element.html(buffer.toString()); } } - + return document.toString(); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java index 13cb9f002..c5ad9cfd6 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java @@ -41,7 +41,7 @@ public class FeedDiscoverer { * @return A map which contains the feed URLs as keys and titles as values (the feed URL is also used as a title if * a title cannot be found). */ - public Map<String, String> findLinks(String in, String baseUrl) throws IOException { + public Map<String, String> findLinks(String in, String baseUrl) { return findLinks(Jsoup.parse(in), baseUrl); } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/HtmlToPlainText.java b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/HtmlToPlainText.java index c497bfb4f..cc6a8ec90 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/HtmlToPlainText.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/HtmlToPlainText.java @@ -42,7 +42,7 @@ public class HtmlToPlainText { // the formatting rules, implemented in a breadth-first DOM traverse private static class FormattingVisitor implements NodeVisitor { - private StringBuilder accum = new StringBuilder(); // holds the accumulated text + private final StringBuilder accum = new StringBuilder(); // holds the accumulated text // hit when the node is first seen public void head(Node node, int depth) { diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/OggInputStream.java b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/OggInputStream.java index 4799d3881..cdf171299 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/OggInputStream.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/OggInputStream.java @@ -6,8 +6,8 @@ import java.io.IOException; import java.io.InputStream; import java.util.Arrays; -public class OggInputStream extends InputStream { - private InputStream input; +class OggInputStream extends InputStream { + private final InputStream input; /** True if OggInputStream is currently inside an Ogg page. */ private boolean isInPage; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentHeader.java b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentHeader.java index 5f9dd0faf..ff7508390 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentHeader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentHeader.java @@ -1,7 +1,7 @@ package de.danoeh.antennapod.core.util.vorbiscommentreader; -public class VorbisCommentHeader { - private String vendorString; - private long userCommentLength; +class VorbisCommentHeader { + private final String vendorString; + private final long userCommentLength; public VorbisCommentHeader(String vendorString, long userCommentLength) { super(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentReader.java b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentReader.java index 49ea18721..55498afcb 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentReader.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentReader.java @@ -19,29 +19,29 @@ public abstract class VorbisCommentReader { private static final int PACKET_TYPE_COMMENT = 3; /** Called when Reader finds identification header. */ - public abstract void onVorbisCommentFound(); + protected abstract void onVorbisCommentFound(); - public abstract void onVorbisCommentHeaderFound(VorbisCommentHeader header); + protected abstract void onVorbisCommentHeaderFound(VorbisCommentHeader header); /** * Is called every time the Reader finds a content vector. The handler * should return true if it wants to handle the content vector. */ - public abstract boolean onContentVectorKey(String content); + protected abstract boolean onContentVectorKey(String content); /** * Is called if onContentVectorKey returned true for the key. * * @throws VorbisCommentReaderException */ - public abstract void onContentVectorValue(String key, String value) + protected abstract void onContentVectorValue(String key, String value) throws VorbisCommentReaderException; - public abstract void onNoVorbisCommentFound(); + protected abstract void onNoVorbisCommentFound(); - public abstract void onEndOfComment(); + protected abstract void onEndOfComment(); - public abstract void onError(VorbisCommentReaderException exception); + protected abstract void onError(VorbisCommentReaderException exception); public void readInputStream(InputStream input) throws VorbisCommentReaderException { diff --git a/core/src/main/res/drawable-hdpi-v11/ic_stat_antenna_default.png b/core/src/main/res/drawable-hdpi-v11/ic_stat_antenna_default.png Binary files differdeleted file mode 100644 index af99f4b3b..000000000 --- a/core/src/main/res/drawable-hdpi-v11/ic_stat_antenna_default.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi-v11/ic_stat_authentication.png b/core/src/main/res/drawable-hdpi-v11/ic_stat_authentication.png Binary files differdeleted file mode 100755 index 398dffa4b..000000000 --- a/core/src/main/res/drawable-hdpi-v11/ic_stat_authentication.png +++ /dev/null diff --git a/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png Binary files differindex fb15f7ee1..af99f4b3b 100644 --- a/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png +++ b/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png diff --git a/core/src/main/res/drawable-hdpi/ic_stat_authentication.png b/core/src/main/res/drawable-hdpi/ic_stat_authentication.png Binary files differindex f40820ef7..398dffa4b 100755..100644 --- a/core/src/main/res/drawable-hdpi/ic_stat_authentication.png +++ b/core/src/main/res/drawable-hdpi/ic_stat_authentication.png diff --git a/core/src/main/res/drawable-ldpi-v11/ic_stat_antenna_default.png b/core/src/main/res/drawable-ldpi-v11/ic_stat_antenna_default.png Binary files differdeleted file mode 100644 index ddf545c0b..000000000 --- a/core/src/main/res/drawable-ldpi-v11/ic_stat_antenna_default.png +++ /dev/null diff --git a/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png Binary files differindex 501dfa848..ddf545c0b 100644 --- a/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png +++ b/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png diff --git a/core/src/main/res/drawable-mdpi-v11/ic_stat_antenna_default.png b/core/src/main/res/drawable-mdpi-v11/ic_stat_antenna_default.png Binary files differdeleted file mode 100644 index 41fd20655..000000000 --- a/core/src/main/res/drawable-mdpi-v11/ic_stat_antenna_default.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi-v11/ic_stat_authentication.png b/core/src/main/res/drawable-mdpi-v11/ic_stat_authentication.png Binary files differdeleted file mode 100755 index 550b56b33..000000000 --- a/core/src/main/res/drawable-mdpi-v11/ic_stat_authentication.png +++ /dev/null diff --git a/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png Binary files differindex 152239888..41fd20655 100644 --- a/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png +++ b/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png diff --git a/core/src/main/res/drawable-mdpi/ic_stat_authentication.png b/core/src/main/res/drawable-mdpi/ic_stat_authentication.png Binary files differindex 7fab11a83..550b56b33 100755..100644 --- a/core/src/main/res/drawable-mdpi/ic_stat_authentication.png +++ b/core/src/main/res/drawable-mdpi/ic_stat_authentication.png diff --git a/core/src/main/res/drawable-xhdpi-v11/ic_stat_antenna_default.png b/core/src/main/res/drawable-xhdpi-v11/ic_stat_antenna_default.png Binary files differdeleted file mode 100644 index 30431ed6a..000000000 --- a/core/src/main/res/drawable-xhdpi-v11/ic_stat_antenna_default.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi-v11/ic_stat_authentication.png b/core/src/main/res/drawable-xhdpi-v11/ic_stat_authentication.png Binary files differdeleted file mode 100755 index e83cbc333..000000000 --- a/core/src/main/res/drawable-xhdpi-v11/ic_stat_authentication.png +++ /dev/null diff --git a/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png Binary files differindex 3d8a046a8..30431ed6a 100644 --- a/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png +++ b/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png diff --git a/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png b/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png Binary files differindex 200b60c96..e83cbc333 100755..100644 --- a/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png +++ b/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png diff --git a/core/src/main/res/values-v11/colors.xml b/core/src/main/res/values-v11/colors.xml deleted file mode 100644 index 520efaa06..000000000 --- a/core/src/main/res/values-v11/colors.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <color name="selection_background_color_dark">#286E8A</color> - <color name="selection_background_color_light">#81CFEA</color> -</resources>
\ No newline at end of file diff --git a/core/src/main/res/values-v14/dimens.xml b/core/src/main/res/values-v14/dimens.xml deleted file mode 100644 index 090a476a8..000000000 --- a/core/src/main/res/values-v14/dimens.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <dimen name="widget_margin">0dp</dimen> - -</resources>
\ No newline at end of file diff --git a/core/src/main/res/values-v14/styles.xml b/core/src/main/res/values-v14/styles.xml deleted file mode 100644 index 6a39d6175..000000000 --- a/core/src/main/res/values-v14/styles.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <style name="AntennaPod.TextView.UnreadIndicator" parent="@android:style/TextAppearance.Small"> - <item name="android:textSize">@dimen/text_size_micro</item> - <item name="android:textColor">@color/new_indicator_green</item> - <item name="android:text">@string/new_label</item> - <item name="android:textAllCaps">true</item> - </style> -</resources>
\ No newline at end of file diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml index a570a3fcb..981d16d03 100644 --- a/core/src/main/res/values/colors.xml +++ b/core/src/main/res/values/colors.xml @@ -21,9 +21,8 @@ <color name="new_indicator_green">#669900</color> <color name="image_readability_tint">#80000000</color> - <!-- Use Gingerbread-orange --> - <color name="selection_background_color_dark">#FEBB20</color> - <color name="selection_background_color_light">#FEBB20</color> + <color name="selection_background_color_dark">#286E8A</color> + <color name="selection_background_color_light">#81CFEA</color> <!-- Theme colors --> <color name="primary_light">#FFFFFF</color> diff --git a/core/src/main/res/values/dimens.xml b/core/src/main/res/values/dimens.xml index a9a3aa8d9..46da1d68e 100644 --- a/core/src/main/res/values/dimens.xml +++ b/core/src/main/res/values/dimens.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <dimen name="widget_margin">8dp</dimen> + <dimen name="widget_margin">0dp</dimen> <dimen name="thumbnail_length">70dp</dimen> <dimen name="external_player_height">56dp</dimen> <dimen name="enc_icons_size">20dp</dimen> diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml index a88d8c3a8..b9a9fb293 100644 --- a/core/src/main/res/values/styles.xml +++ b/core/src/main/res/values/styles.xml @@ -299,6 +299,7 @@ <item name="android:textSize">@dimen/text_size_micro</item> <item name="android:textColor">@color/new_indicator_green</item> <item name="android:text">@string/new_label</item> + <item name="android:textAllCaps">true</item> </style> <style name="Widget.AntennaPod.Button" parent="Widget.AppCompat.Button"> |