Merge remote-tracking branch 'upstream/develop' into layout-improvements

This commit is contained in:
ByteHamster 2018-04-02 21:13:39 +02:00
commit 68a0373d9f
12 changed files with 346 additions and 284 deletions

View File

@ -1,6 +1,13 @@
Change Log Change Log
========== ==========
Version 1.6.4
-------------
* Fixes issues on Android Oreo
* Avoids duplicate chapters
* Beta: Database import & export
Version 1.6.3 Version 1.6.3
------------- -------------

View File

@ -1,7 +1,6 @@
import org.apache.tools.ant.filters.ReplaceTokens import org.apache.tools.ant.filters.ReplaceTokens
apply plugin: "com.android.application" apply plugin: "com.android.application"
apply plugin: "me.tatarka.retrolambda"
apply plugin: 'com.github.triplet.play' apply plugin: 'com.github.triplet.play'
apply plugin: 'com.getkeepsafe.dexcount' apply plugin: 'com.getkeepsafe.dexcount'
@ -113,10 +112,13 @@ android {
additionalParameters "--no-version-vectors" additionalParameters "--no-version-vectors"
} }
flavorDimensions "market"
productFlavors { productFlavors {
free { free {
dimension "market"
} }
play { play {
dimension "market"
} }
} }
@ -126,58 +128,58 @@ android {
} }
configurations { configurations {
freeDebugCompile freeDebugImplementation
freeReleaseCompile freeReleaseImplementation
playDebugCompile playDebugImplementation
playReleaseCompile playReleaseImplementation
} }
dependencies { dependencies {
freeDebugCompile project(path: ":core", configuration: "freeDebug") freeImplementation project(":core")
freeReleaseCompile project(path: ":core", configuration: "freeRelease")
// free build hack: skip some dependencies // free build hack: skip some dependencies
if (!doFreeBuild()) { if (!doFreeBuild()) {
playDebugCompile project(path: ":core", configuration: "playDebug") playImplementation project(":core")
playReleaseCompile project(path: ":core", configuration: "playRelease")
} else { } else {
System.out.println("app: free build hack, skipping some dependencies") System.out.println("app: free build hack, skipping some dependencies")
} }
compile "com.android.support:support-v4:$supportVersion" implementation "com.android.support:support-v4:$supportVersion"
compile "com.android.support:appcompat-v7:$supportVersion" implementation "com.android.support:appcompat-v7:$supportVersion"
compile "com.android.support:design:$supportVersion" implementation "com.android.support:design:$supportVersion"
compile "com.android.support:gridlayout-v7:$supportVersion" implementation "com.android.support:gridlayout-v7:$supportVersion"
compile "com.android.support:percent:$supportVersion" implementation "com.android.support:percent:$supportVersion"
compile "com.android.support:recyclerview-v7:$supportVersion" implementation "com.android.support:recyclerview-v7:$supportVersion"
compile "org.apache.commons:commons-lang3:$commonslangVersion" implementation "org.apache.commons:commons-lang3:$commonslangVersion"
compile("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") { implementation("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") {
exclude group: "org.json", module: "json" exclude group: "org.json", module: "json"
} }
compile "commons-io:commons-io:$commonsioVersion" implementation "commons-io:commons-io:$commonsioVersion"
compile "org.jsoup:jsoup:$jsoupVersion" implementation "org.jsoup:jsoup:$jsoupVersion"
compile "com.github.bumptech.glide:glide:$glideVersion" implementation "com.github.bumptech.glide:glide:$glideVersion"
compile "com.squareup.okhttp3:okhttp:$okhttpVersion" implementation "com.squareup.okhttp3:okhttp:$okhttpVersion"
compile "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion" implementation "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion"
compile "com.squareup.okio:okio:$okioVersion" implementation "com.squareup.okio:okio:$okioVersion"
compile "de.greenrobot:eventbus:$eventbusVersion" implementation "de.greenrobot:eventbus:$eventbusVersion"
compile "io.reactivex:rxandroid:$rxAndroidVersion" implementation "io.reactivex:rxandroid:$rxAndroidVersion"
compile "io.reactivex:rxjava:$rxJavaVersion" implementation "io.reactivex:rxjava:$rxJavaVersion"
// And ProGuard rules for RxJava! // And ProGuard rules for RxJava!
compile "com.artemzin.rxjava:proguard-rules:$rxJavaRulesVersion" implementation "com.artemzin.rxjava:proguard-rules:$rxJavaRulesVersion"
compile "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion" implementation "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion"
compile "com.joanzapata.iconify:android-iconify-material:$iconifyVersion" implementation "com.joanzapata.iconify:android-iconify-material:$iconifyVersion"
compile("com.afollestad.material-dialogs:commons:$materialDialogsVersion") { implementation("com.afollestad.material-dialogs:commons:$materialDialogsVersion") {
transitive = true transitive = true
} }
compile "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion" implementation "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion"
compile("com.githang:viewpagerindicator:2.5@aar") { implementation("com.githang:viewpagerindicator:2.5@aar") {
exclude module: "support-v4" exclude module: "support-v4"
} }
compile "com.github.shts:TriangleLabelView:$triangleLabelViewVersion" implementation "com.github.shts:TriangleLabelView:$triangleLabelViewVersion"
compile "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion" implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion"
compile 'com.github.mfietz:fyydlin:v0.3' implementation 'com.github.mfietz:fyydlin:v0.3'
androidTestImplementation "com.jayway.android.robotium:robotium-solo:$robotiumSoloVersion"
} }
play { play {

View File

@ -388,17 +388,29 @@ public class QueueFragment extends Fragment {
itemTouchHelper = new ItemTouchHelper( itemTouchHelper = new ItemTouchHelper(
new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.RIGHT) { new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.RIGHT) {
// Position tracking whilst dragging
int dragFrom = -1;
int dragTo = -1;
@Override @Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
int fromPosition = viewHolder.getAdapterPosition();
int toPosition = target.getAdapterPosition();
// Update tracked position
if(dragFrom == -1) {
dragFrom = fromPosition;
}
dragTo = toPosition;
int from = viewHolder.getAdapterPosition(); int from = viewHolder.getAdapterPosition();
int to = target.getAdapterPosition(); int to = target.getAdapterPosition();
Log.d(TAG, "move(" + from + ", " + to + ")"); Log.d(TAG, "move(" + from + ", " + to + ") in memory");
if(from >= queue.size() || to >= queue.size()) { if(from >= queue.size() || to >= queue.size()) {
return false; return false;
} }
queue.add(to, queue.remove(from)); queue.add(to, queue.remove(from));
recyclerAdapter.notifyItemMoved(from, to); recyclerAdapter.notifyItemMoved(from, to);
DBWriter.moveQueueItem(from, to, true);
return true; return true;
} }
@ -452,12 +464,25 @@ public class QueueFragment extends Fragment {
RecyclerView.ViewHolder viewHolder) { RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder); super.clearView(recyclerView, viewHolder);
// Check if drag finished
if(dragFrom != -1 && dragTo != -1 && dragFrom != dragTo) {
reallyMoved(dragFrom, dragTo);
}
dragFrom = dragTo = -1;
if (viewHolder instanceof QueueRecyclerAdapter.ItemTouchHelperViewHolder) { if (viewHolder instanceof QueueRecyclerAdapter.ItemTouchHelperViewHolder) {
QueueRecyclerAdapter.ItemTouchHelperViewHolder itemViewHolder = QueueRecyclerAdapter.ItemTouchHelperViewHolder itemViewHolder =
(QueueRecyclerAdapter.ItemTouchHelperViewHolder) viewHolder; (QueueRecyclerAdapter.ItemTouchHelperViewHolder) viewHolder;
itemViewHolder.onItemClear(); itemViewHolder.onItemClear();
} }
} }
private void reallyMoved(int from, int to) {
// Write drag operation to database
Log.d(TAG, "Write to database move(" + dragFrom + ", " + dragTo + ")");
DBWriter.moveQueueItem(dragFrom, dragTo, true);
}
} }
); );
itemTouchHelper.attachToRecyclerView(recyclerView); itemTouchHelper.attachToRecyclerView(recyclerView);

View File

@ -764,6 +764,10 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
} }
} }
private static String blankIfNull(String val) {
return val == null ? "" : val;
}
private void buildAutodownloadSelectedNetworsPreference() { private void buildAutodownloadSelectedNetworsPreference() {
final Activity activity = ui.getActivity(); final Activity activity = ui.getActivity();
@ -778,7 +782,8 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
Log.e(TAG, "Couldn't get list of configure Wi-Fi networks"); Log.e(TAG, "Couldn't get list of configure Wi-Fi networks");
return; return;
} }
Collections.sort(networks, (x, y) -> x.SSID.compareTo(y.SSID)); Collections.sort(networks, (x, y) ->
blankIfNull(x.SSID).compareTo(blankIfNull(y.SSID)));
selectedNetworks = new CheckBoxPreference[networks.size()]; selectedNetworks = new CheckBoxPreference[networks.size()];
List<String> prefValues = Arrays.asList(UserPreferences List<String> prefValues = Arrays.asList(UserPreferences
.getAutodownloadSelectedNetworks()); .getAutodownloadSelectedNetworks());

View File

@ -4,12 +4,11 @@ buildscript {
repositories { repositories {
jcenter() jcenter()
mavenCentral() mavenCentral()
google()
} }
dependencies { dependencies {
classpath "com.android.tools.build:gradle:2.3.3" classpath "com.android.tools.build:gradle:3.0.1"
classpath "me.tatarka:gradle-retrolambda:3.7.0" classpath "com.github.triplet.gradle:play-publisher:1.2.0"
classpath "me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2"
classpath "com.github.triplet.gradle:play-publisher:1.1.4"
// Exclude the version that the android plugin depends on. // Exclude the version that the android plugin depends on.
configurations.classpath.exclude group: "com.android.tools.external.lombok" configurations.classpath.exclude group: "com.android.tools.external.lombok"
} }
@ -18,6 +17,7 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
jcenter() jcenter()
google()
} }
} }
@ -38,7 +38,7 @@ subprojects {
project.ext { project.ext {
compileSdkVersion = 25 compileSdkVersion = 25
buildToolsVersion = "25.0.3" buildToolsVersion = "27.0.3"
minSdkVersion = 14 minSdkVersion = 14
targetSdkVersion = 25 targetSdkVersion = 25

View File

@ -3,7 +3,8 @@ general:
- app/build/outputs/apk - app/build/outputs/apk
machine: machine:
environment: environment:
GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError"' GRADLE_OPTS: '-Dorg.gradle.jvmargs="-Xmx1536m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError"'
_JAVA_OPTIONS: "-Xms256m -Xmx1280m -XX:MaxPermSize=350m"
java: java:
version: oraclejdk8 version: oraclejdk8
dependencies: dependencies:
@ -12,11 +13,11 @@ dependencies:
- ~/android - ~/android
pre: pre:
- echo y | android update sdk --no-ui --all --filter "tool,extra-android-m2repository,extra-android-support,extra-google-google_play_services,extra-google-m2repository,android-25" - echo y | android update sdk --no-ui --all --filter "tool,extra-android-m2repository,extra-android-support,extra-google-google_play_services,extra-google-m2repository,android-25"
- echo y | android update sdk --no-ui --all --filter "build-tools-25.0.3" - echo y | android update sdk --no-ui --all --filter "build-tools-27.0.3"
override: override:
- echo override dependencies - echo override dependencies
test: test:
override: override:
- ./gradlew assembleDebug -PdisablePreDex: - ./gradlew assembleDebug -PdisablePreDex:
timeout: 1800 timeout: 1800

View File

@ -1,5 +1,4 @@
apply plugin: "com.android.library" apply plugin: "com.android.library"
apply plugin: "me.tatarka.retrolambda"
android { android {
compileSdkVersion rootProject.ext.compileSdkVersion compileSdkVersion rootProject.ext.compileSdkVersion
@ -30,11 +29,13 @@ android {
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
publishNonDefault true flavorDimensions "market"
productFlavors { productFlavors {
free { free {
dimension "market"
} }
play { play {
dimension "market"
} }
} }
@ -46,32 +47,32 @@ repositories {
} }
dependencies { dependencies {
compile "com.android.support:support-v4:$supportVersion" implementation "com.android.support:support-v4:$supportVersion"
compile "com.android.support:appcompat-v7:$supportVersion" implementation "com.android.support:appcompat-v7:$supportVersion"
compile "org.apache.commons:commons-lang3:$commonslangVersion" implementation "org.apache.commons:commons-lang3:$commonslangVersion"
compile ("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") { implementation ("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") {
exclude group: "org.json", module: "json" exclude group: "org.json", module: "json"
} }
compile "commons-io:commons-io:$commonsioVersion" implementation "commons-io:commons-io:$commonsioVersion"
compile "com.jayway.android.robotium:robotium-solo:$robotiumSoloVersion" implementation "com.jayway.android.robotium:robotium-solo:$robotiumSoloVersion"
compile "org.jsoup:jsoup:$jsoupVersion" implementation "org.jsoup:jsoup:$jsoupVersion"
compile "com.github.bumptech.glide:glide:$glideVersion" implementation "com.github.bumptech.glide:glide:$glideVersion"
compile "com.github.bumptech.glide:okhttp3-integration:$glideOkhttpIntegrationVersion@aar" implementation "com.github.bumptech.glide:okhttp3-integration:$glideOkhttpIntegrationVersion@aar"
compile "com.squareup.okhttp3:okhttp:$okhttpVersion" implementation "com.squareup.okhttp3:okhttp:$okhttpVersion"
compile "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion" implementation "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion"
compile "com.squareup.okio:okio:$okioVersion" implementation "com.squareup.okio:okio:$okioVersion"
compile "de.greenrobot:eventbus:$eventbusVersion" implementation "de.greenrobot:eventbus:$eventbusVersion"
compile "io.reactivex:rxandroid:$rxAndroidVersion" implementation "io.reactivex:rxandroid:$rxAndroidVersion"
compile "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion" implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion"
// Add casting features // Add casting features
// free build hack: skip some dependencies // free build hack: skip some dependencies
if (!doFreeBuild()) { if (!doFreeBuild()) {
playCompile "com.google.android.libraries.cast.companionlibrary:ccl:$castCompanionLibVer" playApi "com.google.android.libraries.cast.companionlibrary:ccl:$castCompanionLibVer"
compile "com.android.support:mediarouter-v7:$supportVersion" api "com.android.support:mediarouter-v7:$supportVersion"
playCompile "com.google.android.gms:play-services-cast:$playServicesVersion" playApi "com.google.android.gms:play-services-cast:$playServicesVersion"
compile "com.google.android.support:wearable:$wearableSupportVersion" api "com.google.android.support:wearable:$wearableSupportVersion"
} else { } else {
System.out.println("core: free build hack, skipping some dependencies") System.out.println("core: free build hack, skipping some dependencies")
} }

View File

@ -305,8 +305,10 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
if (super.compareWithOther(other)) { if (super.compareWithOther(other)) {
return true; return true;
} }
if(other.image != null && !TextUtils.equals(image.download_url, other.image.download_url)) { if (other.image != null) {
return true; if (image == null || !TextUtils.equals(image.download_url, other.image.download_url)) {
return true;
}
} }
if (!TextUtils.equals(feedTitle, other.feedTitle)) { if (!TextUtils.equals(feedTitle, other.feedTitle)) {
return true; return true;

View File

@ -339,12 +339,9 @@ public class DownloadService extends Service {
} }
private void setupNotificationBuilders() { private void setupNotificationBuilders() {
Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.stat_notify_sync);
notificationCompatBuilder = new NotificationCompat.Builder(this) notificationCompatBuilder = new NotificationCompat.Builder(this)
.setOngoing(true) .setOngoing(true)
.setContentIntent(ClientConfig.downloadServiceCallbacks.getNotificationContentIntent(this)) .setContentIntent(ClientConfig.downloadServiceCallbacks.getNotificationContentIntent(this))
.setLargeIcon(icon)
.setSmallIcon(R.drawable.stat_notify_sync); .setSmallIcon(R.drawable.stat_notify_sync);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
notificationCompatBuilder.setVisibility(Notification.VISIBILITY_PUBLIC); notificationCompatBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
@ -511,10 +508,6 @@ public class DownloadService extends Service {
successfulDownloads, failedDownloads) successfulDownloads, failedDownloads)
) )
.setSmallIcon(R.drawable.stat_notify_sync_error) .setSmallIcon(R.drawable.stat_notify_sync_error)
.setLargeIcon(
BitmapFactory.decodeResource(getResources(),
R.drawable.stat_notify_sync_error)
)
.setContentIntent( .setContentIntent(
ClientConfig.downloadServiceCallbacks.getReportNotificationContentIntent(this) ClientConfig.downloadServiceCallbacks.getReportNotificationContentIntent(this)
) )
@ -565,7 +558,6 @@ public class DownloadService extends Service {
.setStyle(new NotificationCompat.BigTextStyle().bigText(getText(R.string.authentication_notification_msg) .setStyle(new NotificationCompat.BigTextStyle().bigText(getText(R.string.authentication_notification_msg)
+ ": " + resourceTitle)) + ": " + resourceTitle))
.setSmallIcon(R.drawable.ic_stat_authentication) .setSmallIcon(R.drawable.ic_stat_authentication)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_stat_authentication))
.setAutoCancel(true) .setAutoCancel(true)
.setContentIntent(ClientConfig.downloadServiceCallbacks.getAuthentificationNotificationContentIntent(DownloadService.this, downloadRequest)); .setContentIntent(ClientConfig.downloadServiceCallbacks.getAuthentificationNotificationContentIntent(DownloadService.this, downloadRequest));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

View File

@ -11,6 +11,7 @@ import android.view.SurfaceHolder;
import org.antennapod.audio.MediaPlayer; import org.antennapod.audio.MediaPlayer;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Future; import java.util.concurrent.Future;
@ -165,8 +166,10 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
callback.onMediaChanged(false); callback.onMediaChanged(false);
if (stream) { if (stream) {
mediaPlayer.setDataSource(media.getStreamUrl()); mediaPlayer.setDataSource(media.getStreamUrl());
} else { } else if (new File(media.getLocalMediaUrl()).canRead()) {
mediaPlayer.setDataSource(media.getLocalMediaUrl()); mediaPlayer.setDataSource(media.getLocalMediaUrl());
} else {
throw new IOException("Unable to read local file " + media.getLocalMediaUrl());
} }
setPlayerStatus(PlayerStatus.INITIALIZED, media); setPlayerStatus(PlayerStatus.INITIALIZED, media);

View File

@ -3,7 +3,9 @@ package de.danoeh.antennapod.core.storage;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.database.DatabaseErrorHandler;
import android.database.DatabaseUtils; import android.database.DatabaseUtils;
import android.database.DefaultDatabaseErrorHandler;
import android.database.MergeCursor; import android.database.MergeCursor;
import android.database.SQLException; import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
@ -13,13 +15,12 @@ import android.media.MediaMetadataRetriever;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import java.io.File;
import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import de.danoeh.antennapod.core.R; import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.event.ProgressEvent; import de.danoeh.antennapod.core.event.ProgressEvent;
@ -35,6 +36,7 @@ import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.util.LongIntMap; import de.danoeh.antennapod.core.util.LongIntMap;
import de.danoeh.antennapod.core.util.flattr.FlattrStatus; import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
import de.greenrobot.event.EventBus; import de.greenrobot.event.EventBus;
import org.apache.commons.io.FileUtils;
// TODO Remove media column from feeditem table // TODO Remove media column from feeditem table
@ -1643,6 +1645,28 @@ public class PodDBAdapter {
return db.rawQuery(FEED_STATISTICS_QUERY, null); return db.rawQuery(FEED_STATISTICS_QUERY, null);
} }
/**
* Called when a database corruption happens
*/
public static class PodDbErrorHandler implements DatabaseErrorHandler {
@Override
public void onCorruption(SQLiteDatabase db) {
Log.e(TAG, "Database corrupted: " + db.getPath());
File dbPath = new File(db.getPath());
File backupFolder = PodDBAdapter.context.getExternalFilesDir(null);
File backupFile = new File(backupFolder, "CorruptedDatabaseBackup.db");
try {
FileUtils.copyFile(dbPath, backupFile);
Log.d(TAG, "Dumped database to " + backupFile.getPath());
} catch (IOException e) {
Log.d(TAG, Log.getStackTraceString(e));
}
new DefaultDatabaseErrorHandler().onCorruption(db); // This deletes the database
}
}
/** /**
* Helper class for opening the Antennapod database. * Helper class for opening the Antennapod database.
*/ */
@ -1661,7 +1685,7 @@ public class PodDBAdapter {
*/ */
public PodDBHelper(final Context context, final String name, public PodDBHelper(final Context context, final String name,
final CursorFactory factory) { final CursorFactory factory) {
super(context, name, factory, VERSION); super(context, name, factory, VERSION, new PodDbErrorHandler());
this.context = context; this.context = context;
} }

View File

@ -11,57 +11,57 @@
<item name="progressBarTheme">@style/ProgressBarLight</item> <item name="progressBarTheme">@style/ProgressBarLight</item>
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item>
<item name="attr/action_bar_icon_color">@color/grey600</item> <item type="attr" name="action_bar_icon_color">@color/grey600</item>
<item name="attr/action_about">@drawable/ic_info_grey600_24dp</item> <item type="attr" name="action_about">@drawable/ic_info_grey600_24dp</item>
<item name="attr/action_search">@drawable/ic_search_grey600_24dp</item> <item type="attr" name="action_search">@drawable/ic_search_grey600_24dp</item>
<item name="attr/action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item> <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item>
<item name="attr/av_download">@drawable/ic_file_download_grey600_24dp</item> <item type="attr" name="av_download">@drawable/ic_file_download_grey600_24dp</item>
<item name="attr/av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item> <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item>
<item name="attr/av_pause">@drawable/ic_pause_grey600_24dp</item> <item type="attr" name="av_pause">@drawable/ic_pause_grey600_24dp</item>
<item name="attr/av_play">@drawable/ic_play_arrow_grey600_24dp</item> <item type="attr" name="av_play">@drawable/ic_play_arrow_grey600_24dp</item>
<item name="attr/av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item> <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item>
<item name="attr/content_discard">@drawable/ic_delete_grey600_24dp</item> <item type="attr" name="content_discard">@drawable/ic_delete_grey600_24dp</item>
<item name="attr/content_new">@drawable/ic_add_grey600_24dp</item> <item type="attr" name="content_new">@drawable/ic_add_grey600_24dp</item>
<item name="attr/feed">@drawable/ic_feed_grey600_24dp</item> <item type="attr" name="feed">@drawable/ic_feed_grey600_24dp</item>
<item name="attr/location_web_site">@drawable/ic_web_grey600_24dp</item> <item type="attr" name="location_web_site">@drawable/ic_web_grey600_24dp</item>
<item name="attr/navigation_accept">@drawable/ic_done_grey600_24dp</item> <item type="attr" name="navigation_accept">@drawable/ic_done_grey600_24dp</item>
<item name="attr/navigation_cancel">@drawable/ic_cancel_grey600_24dp</item> <item type="attr" name="navigation_cancel">@drawable/ic_cancel_grey600_24dp</item>
<item name="attr/navigation_expand">@drawable/ic_expand_more_grey600_36dp</item> <item type="attr" name="navigation_expand">@drawable/ic_expand_more_grey600_36dp</item>
<item name="attr/navigation_refresh">@drawable/ic_refresh_grey600_24dp</item> <item type="attr" name="navigation_refresh">@drawable/ic_refresh_grey600_24dp</item>
<item name="attr/navigation_up">@drawable/navigation_up</item> <item type="attr" name="navigation_up">@drawable/navigation_up</item>
<item name="attr/social_share">@drawable/ic_share_grey600_24dp</item> <item type="attr" name="social_share">@drawable/ic_share_grey600_24dp</item>
<item name="attr/stat_playlist">@drawable/ic_list_grey600_24dp</item> <item type="attr" name="stat_playlist">@drawable/ic_list_grey600_24dp</item>
<item name="attr/type_audio">@drawable/ic_hearing_grey600_18dp</item> <item type="attr" name="type_audio">@drawable/ic_hearing_grey600_18dp</item>
<item name="attr/type_video">@drawable/ic_remove_red_eye_grey600_18dp</item> <item type="attr" name="type_video">@drawable/ic_remove_red_eye_grey600_18dp</item>
<item name="attr/non_transparent_background">@color/white</item> <item type="attr" name="non_transparent_background">@color/white</item>
<item name="attr/overlay_background">@color/overlay_light</item> <item type="attr" name="overlay_background">@color/overlay_light</item>
<item name="attr/overlay_drawable">@drawable/overlay_drawable</item> <item type="attr" name="overlay_drawable">@drawable/overlay_drawable</item>
<item name="attr/dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item> <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item>
<item name="attr/dragview_float_background">@color/white</item> <item type="attr" name="dragview_float_background">@color/white</item>
<item name="attr/nav_drawer_background">@color/white</item> <item type="attr" name="nav_drawer_background">@color/white</item>
<item name="attr/ic_new">@drawable/ic_new_releases_grey600_24dp</item> <item type="attr" name="ic_new">@drawable/ic_new_releases_grey600_24dp</item>
<item name="attr/ic_history">@drawable/ic_history_grey600_24dp</item> <item type="attr" name="ic_history">@drawable/ic_history_grey600_24dp</item>
<item name="attr/ic_folder">@drawable/ic_folder_grey600_24dp</item> <item type="attr" name="ic_folder">@drawable/ic_folder_grey600_24dp</item>
<item name="attr/av_play_big">@drawable/ic_play_arrow_grey600_36dp</item> <item type="attr" name="av_play_big">@drawable/ic_play_arrow_grey600_36dp</item>
<item name="attr/av_pause_big">@drawable/ic_pause_grey600_36dp</item> <item type="attr" name="av_pause_big">@drawable/ic_pause_grey600_36dp</item>
<item name="attr/av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item> <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item>
<item name="attr/av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item> <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item>
<item name="attr/av_skip_big">@drawable/ic_skip_grey600_36dp</item> <item type="attr" name="av_skip_big">@drawable/ic_skip_grey600_36dp</item>
<item name="attr/ic_fav">@drawable/ic_star_border_grey600_24dp</item> <item type="attr" name="ic_fav">@drawable/ic_star_border_grey600_24dp</item>
<item name="attr/ic_unfav">@drawable/ic_star_grey600_24dp</item> <item type="attr" name="ic_unfav">@drawable/ic_star_grey600_24dp</item>
<item name="attr/ic_settings">@drawable/ic_settings_grey600_24dp</item> <item type="attr" name="ic_settings">@drawable/ic_settings_grey600_24dp</item>
<item name="attr/ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item> <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item>
<item name="attr/ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item> <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item>
<item name="attr/ic_filter">@drawable/ic_filter_grey600_24dp</item> <item type="attr" name="ic_filter">@drawable/ic_filter_grey600_24dp</item>
<item name="attr/ic_sleep">@drawable/ic_sleep_grey600_24dp</item> <item type="attr" name="ic_sleep">@drawable/ic_sleep_grey600_24dp</item>
<item name="attr/ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item> <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item>
<item name="attr/ic_check_box">@drawable/ic_check_box_grey600_24dp</item> <item type="attr" name="ic_check_box">@drawable/ic_check_box_grey600_24dp</item>
<item name="attr/ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item> <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item>
<item name="attr/ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item> <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item>
<item name="attr/ic_sort">@drawable/ic_sort_grey600_24dp</item> <item type="attr" name="ic_sort">@drawable/ic_sort_grey600_24dp</item>
<item name="attr/ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item> <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item>
<item name="attr/ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item>
<item name="attr/ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item>
</style> </style>
<style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark"> <style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark">
@ -74,57 +74,57 @@
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="progressBarTheme">@style/ProgressBarDark</item> <item name="progressBarTheme">@style/ProgressBarDark</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item>
<item name="attr/action_bar_icon_color">@color/white</item> <item type="attr" name="action_bar_icon_color">@color/white</item>
<item name="attr/action_about">@drawable/ic_info_white_24dp</item>g <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item>g
<item name="attr/action_search">@drawable/ic_search_white_24dp</item> <item type="attr" name="action_search">@drawable/ic_search_white_24dp</item>
<item name="attr/action_stream">@drawable/ic_settings_input_antenna_white_24dp</item> <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item>
<item name="attr/av_download">@drawable/ic_file_download_white_24dp</item> <item type="attr" name="av_download">@drawable/ic_file_download_white_24dp</item>
<item name="attr/av_fast_forward">@drawable/ic_fast_forward_white_24dp</item> <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_white_24dp</item>
<item name="attr/av_pause">@drawable/ic_pause_white_24dp</item> <item type="attr" name="av_pause">@drawable/ic_pause_white_24dp</item>
<item name="attr/av_play">@drawable/ic_play_arrow_white_24dp</item> <item type="attr" name="av_play">@drawable/ic_play_arrow_white_24dp</item>
<item name="attr/av_rewind">@drawable/ic_fast_rewind_white_24dp</item> <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_white_24dp</item>
<item name="attr/content_discard">@drawable/ic_delete_white_24dp</item> <item type="attr" name="content_discard">@drawable/ic_delete_white_24dp</item>
<item name="attr/content_new">@drawable/ic_add_white_24dp</item> <item type="attr" name="content_new">@drawable/ic_add_white_24dp</item>
<item name="attr/feed">@drawable/ic_feed_white_24dp</item> <item type="attr" name="feed">@drawable/ic_feed_white_24dp</item>
<item name="attr/location_web_site">@drawable/ic_web_white_24dp</item> <item type="attr" name="location_web_site">@drawable/ic_web_white_24dp</item>
<item name="attr/navigation_accept">@drawable/ic_done_white_24dp</item> <item type="attr" name="navigation_accept">@drawable/ic_done_white_24dp</item>
<item name="attr/navigation_cancel">@drawable/ic_cancel_white_24dp</item> <item type="attr" name="navigation_cancel">@drawable/ic_cancel_white_24dp</item>
<item name="attr/navigation_expand">@drawable/ic_expand_more_white_36dp</item> <item type="attr" name="navigation_expand">@drawable/ic_expand_more_white_36dp</item>
<item name="attr/navigation_refresh">@drawable/ic_refresh_white_24dp</item> <item type="attr" name="navigation_refresh">@drawable/ic_refresh_white_24dp</item>
<item name="attr/navigation_up">@drawable/navigation_up_dark</item> <item type="attr" name="navigation_up">@drawable/navigation_up_dark</item>
<item name="attr/social_share">@drawable/ic_share_white_24dp</item> <item type="attr" name="social_share">@drawable/ic_share_white_24dp</item>
<item name="attr/stat_playlist">@drawable/ic_list_white_24dp</item> <item type="attr" name="stat_playlist">@drawable/ic_list_white_24dp</item>
<item name="attr/type_audio">@drawable/ic_hearing_white_18dp</item> <item type="attr" name="type_audio">@drawable/ic_hearing_white_18dp</item>
<item name="attr/type_video">@drawable/ic_remove_red_eye_white_18dp</item> <item type="attr" name="type_video">@drawable/ic_remove_red_eye_white_18dp</item>
<item name="attr/non_transparent_background">@color/black</item> <item type="attr" name="non_transparent_background">@color/black</item>
<item name="attr/overlay_background">@color/overlay_dark</item> <item type="attr" name="overlay_background">@color/overlay_dark</item>
<item name="attr/overlay_drawable">@drawable/overlay_drawable_dark</item> <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark</item>
<item name="attr/dragview_background">@drawable/ic_drag_vertical_white_48dp</item> <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item>
<item name="attr/dragview_float_background">@color/black</item> <item type="attr" name="dragview_float_background">@color/black</item>
<item name="attr/nav_drawer_background">#3B3B3B</item> <item type="attr" name="nav_drawer_background">#3B3B3B</item>
<item name="attr/ic_new">@drawable/ic_new_releases_white_24dp</item> <item type="attr" name="ic_new">@drawable/ic_new_releases_white_24dp</item>
<item name="attr/ic_history">@drawable/ic_history_white_24dp</item> <item type="attr" name="ic_history">@drawable/ic_history_white_24dp</item>
<item name="attr/ic_folder">@drawable/ic_folder_white_24dp</item> <item type="attr" name="ic_folder">@drawable/ic_folder_white_24dp</item>
<item name="attr/av_play_big">@drawable/ic_play_arrow_white_36dp</item> <item type="attr" name="av_play_big">@drawable/ic_play_arrow_white_36dp</item>
<item name="attr/av_pause_big">@drawable/ic_pause_white_36dp</item> <item type="attr" name="av_pause_big">@drawable/ic_pause_white_36dp</item>
<item name="attr/av_ff_big">@drawable/ic_fast_forward_white_36dp</item> <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_white_36dp</item>
<item name="attr/av_rew_big">@drawable/ic_fast_rewind_white_36dp</item> <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_white_36dp</item>
<item name="attr/av_skip_big">@drawable/ic_skip_white_36dp</item> <item type="attr" name="av_skip_big">@drawable/ic_skip_white_36dp</item>
<item name="attr/ic_fav">@drawable/ic_star_border_white_24dp</item> <item type="attr" name="ic_fav">@drawable/ic_star_border_white_24dp</item>
<item name="attr/ic_unfav">@drawable/ic_star_white_24dp</item> <item type="attr" name="ic_unfav">@drawable/ic_star_white_24dp</item>
<item name="attr/ic_settings">@drawable/ic_settings_white_24dp</item> <item type="attr" name="ic_settings">@drawable/ic_settings_white_24dp</item>
<item name="attr/ic_lock_open">@drawable/ic_lock_open_white_24dp</item> <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_white_24dp</item>
<item name="attr/ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item> <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item>
<item name="attr/ic_filter">@drawable/ic_filter_white_24dp</item> <item type="attr" name="ic_filter">@drawable/ic_filter_white_24dp</item>
<item name="attr/ic_sleep">@drawable/ic_sleep_white_24dp</item> <item type="attr" name="ic_sleep">@drawable/ic_sleep_white_24dp</item>
<item name="attr/ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item> <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item>
<item name="attr/ic_check_box">@drawable/ic_check_box_white_24dp</item> <item type="attr" name="ic_check_box">@drawable/ic_check_box_white_24dp</item>
<item name="attr/ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item> <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item>
<item name="attr/ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item> <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item>
<item name="attr/ic_sort">@drawable/ic_sort_white_24dp</item> <item type="attr" name="ic_sort">@drawable/ic_sort_white_24dp</item>
<item name="attr/ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item> <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item>
<item name="attr/ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item>
<item name="attr/ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item>
</style> </style>
<style name="Theme.AntennaPod.Light.NoTitle" parent="Theme.Base.AntennaPod.Light.NoTitle"> <style name="Theme.AntennaPod.Light.NoTitle" parent="Theme.Base.AntennaPod.Light.NoTitle">
@ -139,56 +139,56 @@
<item name="colorAccent">@color/holo_blue_light</item> <item name="colorAccent">@color/holo_blue_light</item>
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item>
<item name="attr/action_about">@drawable/ic_info_grey600_24dp</item> <item type="attr" name="action_about">@drawable/ic_info_grey600_24dp</item>
<item name="attr/action_search">@drawable/ic_search_grey600_24dp</item> <item type="attr" name="action_search">@drawable/ic_search_grey600_24dp</item>
<item name="attr/action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item> <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item>
<item name="attr/av_download">@drawable/ic_file_download_grey600_24dp</item> <item type="attr" name="av_download">@drawable/ic_file_download_grey600_24dp</item>
<item name="attr/av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item> <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item>
<item name="attr/av_pause">@drawable/ic_pause_grey600_24dp</item> <item type="attr" name="av_pause">@drawable/ic_pause_grey600_24dp</item>
<item name="attr/av_play">@drawable/ic_play_arrow_grey600_24dp</item> <item type="attr" name="av_play">@drawable/ic_play_arrow_grey600_24dp</item>
<item name="attr/av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item> <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item>
<item name="attr/content_discard">@drawable/ic_delete_grey600_24dp</item> <item type="attr" name="content_discard">@drawable/ic_delete_grey600_24dp</item>
<item name="attr/content_new">@drawable/ic_add_grey600_24dp</item> <item type="attr" name="content_new">@drawable/ic_add_grey600_24dp</item>
<item name="attr/feed">@drawable/ic_feed_grey600_24dp</item> <item type="attr" name="feed">@drawable/ic_feed_grey600_24dp</item>
<item name="attr/location_web_site">@drawable/ic_web_grey600_24dp</item> <item type="attr" name="location_web_site">@drawable/ic_web_grey600_24dp</item>
<item name="attr/navigation_accept">@drawable/ic_done_grey600_24dp</item> <item type="attr" name="navigation_accept">@drawable/ic_done_grey600_24dp</item>
<item name="attr/navigation_cancel">@drawable/ic_cancel_grey600_24dp</item> <item type="attr" name="navigation_cancel">@drawable/ic_cancel_grey600_24dp</item>
<item name="attr/navigation_expand">@drawable/ic_expand_more_grey600_36dp</item> <item type="attr" name="navigation_expand">@drawable/ic_expand_more_grey600_36dp</item>
<item name="attr/navigation_refresh">@drawable/ic_refresh_grey600_24dp</item> <item type="attr" name="navigation_refresh">@drawable/ic_refresh_grey600_24dp</item>
<item name="attr/navigation_up">@drawable/navigation_up</item> <item type="attr" name="navigation_up">@drawable/navigation_up</item>
<item name="attr/social_share">@drawable/ic_share_grey600_24dp</item> <item type="attr" name="social_share">@drawable/ic_share_grey600_24dp</item>
<item name="attr/stat_playlist">@drawable/ic_list_grey600_24dp</item> <item type="attr" name="stat_playlist">@drawable/ic_list_grey600_24dp</item>
<item name="attr/type_audio">@drawable/ic_hearing_grey600_18dp</item> <item type="attr" name="type_audio">@drawable/ic_hearing_grey600_18dp</item>
<item name="attr/type_video">@drawable/ic_remove_red_eye_grey600_18dp</item> <item type="attr" name="type_video">@drawable/ic_remove_red_eye_grey600_18dp</item>
<item name="attr/non_transparent_background">@color/white</item> <item type="attr" name="non_transparent_background">@color/white</item>
<item name="attr/overlay_background">@color/overlay_light</item> <item type="attr" name="overlay_background">@color/overlay_light</item>
<item name="attr/overlay_drawable">@drawable/overlay_drawable</item> <item type="attr" name="overlay_drawable">@drawable/overlay_drawable</item>
<item name="attr/dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item> <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item>
<item name="attr/dragview_float_background">@color/white</item> <item type="attr" name="dragview_float_background">@color/white</item>
<item name="attr/nav_drawer_background">@color/white</item> <item type="attr" name="nav_drawer_background">@color/white</item>
<item name="attr/ic_new">@drawable/ic_new_releases_grey600_24dp</item> <item type="attr" name="ic_new">@drawable/ic_new_releases_grey600_24dp</item>
<item name="attr/ic_history">@drawable/ic_history_grey600_24dp</item> <item type="attr" name="ic_history">@drawable/ic_history_grey600_24dp</item>
<item name="attr/ic_folder">@drawable/ic_folder_grey600_24dp</item> <item type="attr" name="ic_folder">@drawable/ic_folder_grey600_24dp</item>
<item name="attr/av_play_big">@drawable/ic_play_arrow_grey600_36dp</item> <item type="attr" name="av_play_big">@drawable/ic_play_arrow_grey600_36dp</item>
<item name="attr/av_pause_big">@drawable/ic_pause_grey600_36dp</item> <item type="attr" name="av_pause_big">@drawable/ic_pause_grey600_36dp</item>
<item name="attr/av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item> <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item>
<item name="attr/av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item> <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item>
<item name="attr/av_skip_big">@drawable/ic_skip_grey600_36dp</item> <item type="attr" name="av_skip_big">@drawable/ic_skip_grey600_36dp</item>
<item name="attr/ic_fav">@drawable/ic_star_border_grey600_24dp</item> <item type="attr" name="ic_fav">@drawable/ic_star_border_grey600_24dp</item>
<item name="attr/ic_unfav">@drawable/ic_star_grey600_24dp</item> <item type="attr" name="ic_unfav">@drawable/ic_star_grey600_24dp</item>
<item name="attr/ic_settings">@drawable/ic_settings_grey600_24dp</item> <item type="attr" name="ic_settings">@drawable/ic_settings_grey600_24dp</item>
<item name="attr/ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item> <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item>
<item name="attr/ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item> <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item>
<item name="attr/ic_filter">@drawable/ic_filter_grey600_24dp</item> <item type="attr" name="ic_filter">@drawable/ic_filter_grey600_24dp</item>
<item name="attr/ic_sleep">@drawable/ic_sleep_grey600_24dp</item> <item type="attr" name="ic_sleep">@drawable/ic_sleep_grey600_24dp</item>
<item name="attr/ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item> <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item>
<item name="attr/ic_check_box">@drawable/ic_check_box_grey600_24dp</item> <item type="attr" name="ic_check_box">@drawable/ic_check_box_grey600_24dp</item>
<item name="attr/ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item> <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item>
<item name="attr/ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item> <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item>
<item name="attr/ic_sort">@drawable/ic_sort_grey600_24dp</item> <item type="attr" name="ic_sort">@drawable/ic_sort_grey600_24dp</item>
<item name="attr/ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item> <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item>
<item name="attr/ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item>
<item name="attr/ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item>
</style> </style>
<style name="Theme.AntennaPod.Dark.NoTitle" parent="Theme.Base.AntennaPod.Dark.NoTitle"> <style name="Theme.AntennaPod.Dark.NoTitle" parent="Theme.Base.AntennaPod.Dark.NoTitle">
@ -203,56 +203,56 @@
<item name="colorControlNormal">@color/white</item> <item name="colorControlNormal">@color/white</item>
<item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item>
<item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item>
<item name="attr/action_about">@drawable/ic_info_white_24dp</item> <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item>
<item name="attr/action_search">@drawable/ic_search_white_24dp</item> <item type="attr" name="action_search">@drawable/ic_search_white_24dp</item>
<item name="attr/action_stream">@drawable/ic_settings_input_antenna_white_24dp</item> <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item>
<item name="attr/av_download">@drawable/ic_file_download_white_24dp</item> <item type="attr" name="av_download">@drawable/ic_file_download_white_24dp</item>
<item name="attr/av_fast_forward">@drawable/ic_fast_forward_white_24dp</item> <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_white_24dp</item>
<item name="attr/av_pause">@drawable/ic_pause_white_24dp</item> <item type="attr" name="av_pause">@drawable/ic_pause_white_24dp</item>
<item name="attr/av_play">@drawable/ic_play_arrow_white_24dp</item> <item type="attr" name="av_play">@drawable/ic_play_arrow_white_24dp</item>
<item name="attr/av_rewind">@drawable/ic_fast_rewind_white_24dp</item> <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_white_24dp</item>
<item name="attr/content_discard">@drawable/ic_delete_white_24dp</item> <item type="attr" name="content_discard">@drawable/ic_delete_white_24dp</item>
<item name="attr/content_new">@drawable/ic_add_white_24dp</item> <item type="attr" name="content_new">@drawable/ic_add_white_24dp</item>
<item name="attr/feed">@drawable/ic_feed_white_24dp</item> <item type="attr" name="feed">@drawable/ic_feed_white_24dp</item>
<item name="attr/location_web_site">@drawable/ic_web_white_24dp</item> <item type="attr" name="location_web_site">@drawable/ic_web_white_24dp</item>
<item name="attr/navigation_accept">@drawable/ic_done_white_24dp</item> <item type="attr" name="navigation_accept">@drawable/ic_done_white_24dp</item>
<item name="attr/navigation_cancel">@drawable/ic_cancel_white_24dp</item> <item type="attr" name="navigation_cancel">@drawable/ic_cancel_white_24dp</item>
<item name="attr/navigation_expand">@drawable/ic_expand_more_white_36dp</item> <item type="attr" name="navigation_expand">@drawable/ic_expand_more_white_36dp</item>
<item name="attr/navigation_refresh">@drawable/ic_refresh_white_24dp</item> <item type="attr" name="navigation_refresh">@drawable/ic_refresh_white_24dp</item>
<item name="attr/navigation_up">@drawable/navigation_up_dark</item> <item type="attr" name="navigation_up">@drawable/navigation_up_dark</item>
<item name="attr/social_share">@drawable/ic_share_white_24dp</item> <item type="attr" name="social_share">@drawable/ic_share_white_24dp</item>
<item name="attr/stat_playlist">@drawable/ic_list_white_24dp</item> <item type="attr" name="stat_playlist">@drawable/ic_list_white_24dp</item>
<item name="attr/type_audio">@drawable/ic_hearing_white_18dp</item> <item type="attr" name="type_audio">@drawable/ic_hearing_white_18dp</item>
<item name="attr/type_video">@drawable/ic_remove_red_eye_white_18dp</item> <item type="attr" name="type_video">@drawable/ic_remove_red_eye_white_18dp</item>
<item name="attr/non_transparent_background">@color/black</item> <item type="attr" name="non_transparent_background">@color/black</item>
<item name="attr/overlay_background">@color/overlay_dark</item> <item type="attr" name="overlay_background">@color/overlay_dark</item>
<item name="attr/overlay_drawable">@drawable/overlay_drawable_dark</item> <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark</item>
<item name="attr/dragview_background">@drawable/ic_drag_vertical_white_48dp</item> <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item>
<item name="attr/dragview_float_background">@color/black</item> <item type="attr" name="dragview_float_background">@color/black</item>
<item name="attr/nav_drawer_background">#3B3B3B</item> <item type="attr" name="nav_drawer_background">#3B3B3B</item>
<item name="attr/ic_new">@drawable/ic_new_releases_white_24dp</item> <item type="attr" name="ic_new">@drawable/ic_new_releases_white_24dp</item>
<item name="attr/ic_history">@drawable/ic_history_white_24dp</item> <item type="attr" name="ic_history">@drawable/ic_history_white_24dp</item>
<item name="attr/ic_folder">@drawable/ic_folder_white_24dp</item> <item type="attr" name="ic_folder">@drawable/ic_folder_white_24dp</item>
<item name="attr/av_play_big">@drawable/ic_play_arrow_white_36dp</item> <item type="attr" name="av_play_big">@drawable/ic_play_arrow_white_36dp</item>
<item name="attr/av_pause_big">@drawable/ic_pause_white_36dp</item> <item type="attr" name="av_pause_big">@drawable/ic_pause_white_36dp</item>
<item name="attr/av_ff_big">@drawable/ic_fast_forward_white_36dp</item> <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_white_36dp</item>
<item name="attr/av_rew_big">@drawable/ic_fast_rewind_white_36dp</item> <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_white_36dp</item>
<item name="attr/av_skip_big">@drawable/ic_skip_white_36dp</item> <item type="attr" name="av_skip_big">@drawable/ic_skip_white_36dp</item>
<item name="attr/ic_fav">@drawable/ic_star_border_white_24dp</item> <item type="attr" name="ic_fav">@drawable/ic_star_border_white_24dp</item>
<item name="attr/ic_unfav">@drawable/ic_star_white_24dp</item> <item type="attr" name="ic_unfav">@drawable/ic_star_white_24dp</item>
<item name="attr/ic_settings">@drawable/ic_settings_white_24dp</item> <item type="attr" name="ic_settings">@drawable/ic_settings_white_24dp</item>
<item name="attr/ic_lock_open">@drawable/ic_lock_open_white_24dp</item> <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_white_24dp</item>
<item name="attr/ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item> <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item>
<item name="attr/ic_filter">@drawable/ic_filter_white_24dp</item> <item type="attr" name="ic_filter">@drawable/ic_filter_white_24dp</item>
<item name="attr/ic_sleep">@drawable/ic_sleep_white_24dp</item> <item type="attr" name="ic_sleep">@drawable/ic_sleep_white_24dp</item>
<item name="attr/ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item> <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item>
<item name="attr/ic_check_box">@drawable/ic_check_box_white_24dp</item> <item type="attr" name="ic_check_box">@drawable/ic_check_box_white_24dp</item>
<item name="attr/ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item> <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item>
<item name="attr/ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item> <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item>
<item name="attr/ic_sort">@drawable/ic_sort_white_24dp</item> <item type="attr" name="ic_sort">@drawable/ic_sort_white_24dp</item>
<item name="attr/ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item> <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item>
<item name="attr/ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item> <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item>
<item name="attr/ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item>
</style> </style>
<style name="Theme.AntennaPod.Dark.Splash" parent="Theme.AppCompat.NoActionBar"> <style name="Theme.AntennaPod.Dark.Splash" parent="Theme.AppCompat.NoActionBar">