diff options
8 files changed, 53 insertions, 51 deletions
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 818b3a625..7f1d3075f 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -43,6 +43,8 @@ import java.io.File; 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; @@ -748,6 +750,12 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc List<WifiConfiguration> networks = wifiservice.getConfiguredNetworks(); if (networks != null) { + Collections.sort(networks, new Comparator<WifiConfiguration>() { + @Override + public int compare(WifiConfiguration x, WifiConfiguration y) { + return x.SSID.compareTo(y.SSID); + } + }); selectedNetworks = new CheckBoxPreference[networks.size()]; List<String> prefValues = Arrays.asList(UserPreferences .getAutodownloadSelectedNetworks()); diff --git a/app/src/main/res/layout/nav_list.xml b/app/src/main/res/layout/nav_list.xml index 9fcf9d9fc..7e72bb39b 100644 --- a/app/src/main/res/layout/nav_list.xml +++ b/app/src/main/res/layout/nav_list.xml @@ -1,7 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> - -<RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" +<?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:id="@+id/nav_layout" android:layout_width="@dimen/drawer_width" @@ -23,8 +21,6 @@ android:id="@+id/imgvCover" android:layout_width="@dimen/thumbnail_length_navlist" android:layout_height="@dimen/thumbnail_length_navlist" - android:layout_alignParentLeft="true" - android:layout_centerVertical="true" android:layout_marginBottom="4dp" android:layout_marginLeft="@dimen/listitem_icon_leftpadding" android:layout_marginTop="4dp" @@ -34,8 +30,8 @@ android:padding="8dp" android:scaleType="centerCrop" android:src="?attr/ic_settings" - tools:src="@android:drawable/sym_def_app_icon" - tools:background="@android:color/holo_orange_dark" /> + tools:background="@android:color/holo_orange_dark" + tools:src="@android:drawable/sym_def_app_icon"></ImageView> <TextView android:layout_width="wrap_content" @@ -47,16 +43,15 @@ android:text="@string/settings_label" android:textColor="?android:attr/textColorPrimary" android:textSize="@dimen/text_size_navdrawer" - tools:background="@android:color/holo_green_light"/> - + tools:background="@android:color/holo_green_light" /> </LinearLayout> <View android:id="@+id/divider" android:layout_width="@dimen/drawer_width" android:layout_height="1dp" - android:layout_centerVertical="true" android:layout_above="@id/nav_settings" + android:layout_centerVertical="true" android:background="?android:attr/listDivider" tools:background="@android:color/holo_red_dark" /> @@ -64,7 +59,6 @@ android:id="@+id/nav_list" android:layout_width="@dimen/drawer_width" android:layout_height="wrap_content" - android:layout_weight="1" android:layout_above="@id/divider" android:layout_alignParentTop="true" android:choiceMode="singleChoice" @@ -74,7 +68,6 @@ android:paddingBottom="@dimen/list_vertical_padding" android:paddingTop="@dimen/list_vertical_padding" android:scrollbarStyle="outsideOverlay" - tools:listitem="@layout/nav_listitem" - tools:background="@android:color/holo_purple" /> - + tools:background="@android:color/holo_purple" + tools:listitem="@layout/nav_listitem"></ListView> </RelativeLayout> diff --git a/app/src/main/res/layout/subscription_item.xml b/app/src/main/res/layout/subscription_item.xml index 19b9943e4..8f0539dfa 100644 --- a/app/src/main/res/layout/subscription_item.xml +++ b/app/src/main/res/layout/subscription_item.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version='1.0' encoding='utf-8'?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> @@ -10,31 +10,28 @@ android:id="@+id/imgvCover" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" android:scaleType="centerCrop" - tools:src="@drawable/ic_launcher" /> + tools:src="@drawable/ic_launcher"> + </de.danoeh.antennapod.view.SquareImageView> <com.joanzapata.iconify.widget.IconTextView android:id="@+id/txtvTitle" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/light_gray" android:ellipsize="end" android:gravity="center" - android:background="@color/light_gray" tools:text="@string/app_name" /> <jp.shts.android.library.TriangleLabelView android:id="@+id/triangleCountView" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_alignParentRight="true" - android:layout_alignParentTop="true" + android:layout_gravity="right|top" app:backgroundColor="@color/antennapod_blue" app:corner="rightTop" app:primaryText="Test" app:primaryTextColor="@color/white" - app:primaryTextSize="12sp" - android:layout_gravity="right|top"/> - + app:primaryTextSize="12sp"> + </jp.shts.android.library.TriangleLabelView> </FrameLayout> 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 3277c2469..9ac459394 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 @@ -842,11 +842,14 @@ public class DownloadService extends Service { successful = false; reason = DownloadError.ERROR_PARSER_EXCEPTION; reasonDetailed = e.getMessage(); + } finally { + File feedFile = new File(request.getDestination()); + if(feedFile.exists()) { + boolean deleted = feedFile.delete(); + Log.d(TAG, "Deletion of file '" + feedFile.getAbsolutePath() + "' " + (deleted ? "successful" : "FAILED")); + } } - // cleanup(); - - if (successful) { // we create a 'successful' download log if the feed's last refresh failed List<DownloadStatus> log = DBReader.getFeedDownloadLog(feed); 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 39d79e521..0f7d7265e 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 @@ -1433,7 +1433,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { * Pauses playback if PREF_PAUSE_ON_HEADSET_DISCONNECT was set to true. */ private void pauseIfPauseOnDisconnect() { - if (UserPreferences.isPauseOnHeadsetDisconnect()) { + if (UserPreferences.isPauseOnHeadsetDisconnect() && !isCasting()) { if (mediaPlayer.getPlayerStatus() == PlayerStatus.PLAYING) { transientPause = true; } diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java index 9d136273c..48e574069 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java @@ -4,7 +4,9 @@ import android.content.Context; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; @@ -51,15 +53,17 @@ public class FeedSearcher { task.run(); } try { + Set<Long> set = new HashSet<>(); + for (int i = 0; i < tasks.size(); i++) { FutureTask<List<FeedItem>> task = tasks.get(i); List<FeedItem> items = task.get(); for (FeedItem item : items) { - if (result.isEmpty() || !isDuplicate(result, item)) { + if (!set.contains(item.getId())) { // to prevent duplicate results result.add(new SearchResult(item, values[i], subtitles[i])); + set.add(item.getId()); } } - } } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); @@ -67,20 +71,4 @@ public class FeedSearcher { Collections.sort(result, new SearchResultValueComparator()); return result; } - - /** - * Determines if the feed item is already in the search result list. - * - * @param result list of search results - * @param item feed item to validate - * @return true if the feed item is already in the results - */ - private static boolean isDuplicate(List<SearchResult> result, FeedItem item) { - for (SearchResult resultItem : result) { - if (resultItem.getComponent().getId() == item.getId()) { - return true; - } - } - return false; - } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java index b16e0949d..d23901a45 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/comparator/SearchResultValueComparator.java @@ -1,14 +1,27 @@ package de.danoeh.antennapod.core.util.comparator; +import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.SearchResult; import java.util.Comparator; public class SearchResultValueComparator implements Comparator<SearchResult> { + /** + * Compare items based, first, on where they were found (ie. title, chapters, or show notes). + * If they were found in the same section, then compare based on the title, in lexicographic + * order. This is still not ideal since, for example, "#12 Example A" would be considered + * before "#8 Example B" due to the fact that "8" has a larger unicode value than "1" + */ @Override public int compare(SearchResult lhs, SearchResult rhs) { - return rhs.getValue() - lhs.getValue(); + int value = rhs.getValue() - lhs.getValue(); + if (value == 0 && lhs.getComponent() instanceof FeedItem && rhs.getComponent() instanceof FeedItem) { + String lhsTitle = ((FeedItem) lhs.getComponent()).getTitle(); + String rhsTitle = ((FeedItem) rhs.getComponent()).getTitle(); + return lhsTitle.compareTo(rhsTitle); + } + return value; } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index daa995e8e..708d4146c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Dec 03 12:40:10 CET 2016 +#Sun Apr 09 19:45:51 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip |