diff options
-rw-r--r-- | app/build.gradle | 72 | ||||
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java | 30 | ||||
-rw-r--r-- | app/src/main/res/layout/cover_fragment.xml | 2 | ||||
-rw-r--r-- | app/src/main/res/layout/external_player_fragment.xml | 152 | ||||
-rw-r--r-- | app/src/main/res/layout/feeditemlist_header.xml | 1 | ||||
-rw-r--r-- | app/src/main/res/layout/main.xml | 2 | ||||
-rw-r--r-- | build.gradle | 10 | ||||
-rw-r--r-- | circle.yml | 7 | ||||
-rw-r--r-- | core/build.gradle | 43 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java | 6 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java | 8 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java | 5 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java | 32 | ||||
-rw-r--r-- | core/src/main/res/values/colors.xml | 1 | ||||
-rw-r--r-- | core/src/main/res/values/styles.xml | 404 |
15 files changed, 411 insertions, 364 deletions
diff --git a/app/build.gradle b/app/build.gradle index ad388bd02..388487092 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,7 +1,6 @@ import org.apache.tools.ant.filters.ReplaceTokens apply plugin: "com.android.application" -apply plugin: "me.tatarka.retrolambda" apply plugin: 'com.github.triplet.play' apply plugin: 'com.getkeepsafe.dexcount' @@ -113,10 +112,13 @@ android { additionalParameters "--no-version-vectors" } + flavorDimensions "market" productFlavors { free { + dimension "market" } play { + dimension "market" } } @@ -126,58 +128,58 @@ android { } configurations { - freeDebugCompile - freeReleaseCompile - playDebugCompile - playReleaseCompile + freeDebugImplementation + freeReleaseImplementation + playDebugImplementation + playReleaseImplementation } dependencies { - freeDebugCompile project(path: ":core", configuration: "freeDebug") - freeReleaseCompile project(path: ":core", configuration: "freeRelease") + freeImplementation project(":core") // free build hack: skip some dependencies if (!doFreeBuild()) { - playDebugCompile project(path: ":core", configuration: "playDebug") - playReleaseCompile project(path: ":core", configuration: "playRelease") + playImplementation project(":core") } else { System.out.println("app: free build hack, skipping some dependencies") } - compile "com.android.support:support-v4:$supportVersion" - compile "com.android.support:appcompat-v7:$supportVersion" - compile "com.android.support:design:$supportVersion" - compile "com.android.support:gridlayout-v7:$supportVersion" - compile "com.android.support:percent:$supportVersion" - compile "com.android.support:recyclerview-v7:$supportVersion" - compile "org.apache.commons:commons-lang3:$commonslangVersion" - compile("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") { + implementation "com.android.support:support-v4:$supportVersion" + implementation "com.android.support:appcompat-v7:$supportVersion" + implementation "com.android.support:design:$supportVersion" + implementation "com.android.support:gridlayout-v7:$supportVersion" + implementation "com.android.support:percent:$supportVersion" + implementation "com.android.support:recyclerview-v7:$supportVersion" + implementation "org.apache.commons:commons-lang3:$commonslangVersion" + implementation("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") { exclude group: "org.json", module: "json" } - compile "commons-io:commons-io:$commonsioVersion" - compile "org.jsoup:jsoup:$jsoupVersion" - compile "com.github.bumptech.glide:glide:$glideVersion" - compile "com.squareup.okhttp3:okhttp:$okhttpVersion" - compile "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion" - compile "com.squareup.okio:okio:$okioVersion" - compile "de.greenrobot:eventbus:$eventbusVersion" - compile "io.reactivex:rxandroid:$rxAndroidVersion" - compile "io.reactivex:rxjava:$rxJavaVersion" + implementation "commons-io:commons-io:$commonsioVersion" + implementation "org.jsoup:jsoup:$jsoupVersion" + implementation "com.github.bumptech.glide:glide:$glideVersion" + implementation "com.squareup.okhttp3:okhttp:$okhttpVersion" + implementation "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion" + implementation "com.squareup.okio:okio:$okioVersion" + implementation "de.greenrobot:eventbus:$eventbusVersion" + implementation "io.reactivex:rxandroid:$rxAndroidVersion" + implementation "io.reactivex:rxjava:$rxJavaVersion" // And ProGuard rules for RxJava! - compile "com.artemzin.rxjava:proguard-rules:$rxJavaRulesVersion" - compile "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion" - compile "com.joanzapata.iconify:android-iconify-material:$iconifyVersion" - compile("com.afollestad.material-dialogs:commons:$materialDialogsVersion") { + implementation "com.artemzin.rxjava:proguard-rules:$rxJavaRulesVersion" + implementation "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion" + implementation "com.joanzapata.iconify:android-iconify-material:$iconifyVersion" + implementation("com.afollestad.material-dialogs:commons:$materialDialogsVersion") { transitive = true } - compile "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion" - compile("com.githang:viewpagerindicator:2.5@aar") { + implementation "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion" + implementation("com.githang:viewpagerindicator:2.5@aar") { 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 { 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 bf22e71f5..fba445d3a 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java @@ -109,7 +109,6 @@ public class QueueFragment extends Fragment { @Override public void onResume() { super.onResume(); - recyclerView.setAdapter(recyclerAdapter); loadItems(true); EventDistributor.getInstance().register(contentUpdate); EventBus.getDefault().registerSticky(this); @@ -389,17 +388,29 @@ public class QueueFragment extends Fragment { itemTouchHelper = new ItemTouchHelper( new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.RIGHT) { + // Position tracking whilst dragging + int dragFrom = -1; + int dragTo = -1; + @Override 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 to = target.getAdapterPosition(); - Log.d(TAG, "move(" + from + ", " + to + ")"); + Log.d(TAG, "move(" + from + ", " + to + ") in memory"); if(from >= queue.size() || to >= queue.size()) { return false; } queue.add(to, queue.remove(from)); recyclerAdapter.notifyItemMoved(from, to); - DBWriter.moveQueueItem(from, to, true); return true; } @@ -453,12 +464,25 @@ public class QueueFragment extends Fragment { RecyclerView.ViewHolder 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) { QueueRecyclerAdapter.ItemTouchHelperViewHolder itemViewHolder = (QueueRecyclerAdapter.ItemTouchHelperViewHolder) viewHolder; 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); diff --git a/app/src/main/res/layout/cover_fragment.xml b/app/src/main/res/layout/cover_fragment.xml index 05b927da4..b1e93a195 100644 --- a/app/src/main/res/layout/cover_fragment.xml +++ b/app/src/main/res/layout/cover_fragment.xml @@ -38,6 +38,7 @@ android:maxLines="2" android:ellipsize="end" android:text="Podcast" + android:textIsSelectable="true" android:textColor="?android:attr/textColorSecondary" /> </LinearLayout> @@ -61,6 +62,7 @@ android:maxLines="2" android:ellipsize="end" android:text="Episode" + android:textIsSelectable="true" android:textColor="?android:attr/textColorPrimary" /> </LinearLayout> diff --git a/app/src/main/res/layout/external_player_fragment.xml b/app/src/main/res/layout/external_player_fragment.xml index c0eb9211f..0efee08db 100644 --- a/app/src/main/res/layout/external_player_fragment.xml +++ b/app/src/main/res/layout/external_player_fragment.xml @@ -1,90 +1,84 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragmentLayout" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:visibility="gone"> + android:layout_height="@dimen/external_player_height" + android:visibility="gone" + android:background="?attr/selectableItemBackground"> - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="@dimen/external_player_height"> - - <ImageView - android:id="@+id/imgvCover" - android:contentDescription="@string/cover_label" - android:layout_width="@dimen/external_player_height" - android:layout_height="@dimen/external_player_height" - android:adjustViewBounds="true" - android:cropToPadding="true" - android:scaleType="centerCrop" - tools:src="@drawable/ic_drag_vertical_white_48dp" - tools:background="@android:color/holo_green_dark" - android:transitionName="coverTransition" - android:layout_alignParentTop="true" - android:layout_alignParentLeft="true" - android:layout_alignParentStart="true"/> + <ImageView + android:id="@+id/imgvCover" + android:contentDescription="@string/cover_label" + android:layout_width="@dimen/external_player_height" + android:layout_height="@dimen/external_player_height" + android:adjustViewBounds="true" + android:cropToPadding="true" + android:scaleType="centerCrop" + tools:src="@drawable/ic_drag_vertical_white_48dp" + tools:background="@android:color/holo_green_dark" + android:transitionName="coverTransition" + android:layout_alignParentTop="true" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true"/> - <ProgressBar - android:id="@+id/episodeProgress" - android:layout_width="match_parent" - android:layout_height="4dp" - android:layout_toRightOf="@id/imgvCover" - android:layout_toEndOf="@id/imgvCover" - android:layout_alignParentTop="true" - style="?attr/progressBarTheme" - android:indeterminate="false" - tools:progress="100"/> - - <ImageButton - android:id="@+id/butPlay" - android:layout_width="52dp" - android:layout_height="52dp" - android:layout_alignParentRight="true" - android:layout_alignParentEnd="true" - android:layout_below="@id/episodeProgress" - android:layout_centerVertical="true" - android:contentDescription="@string/pause_label" - android:background="?attr/selectableItemBackground" - tools:src="@drawable/ic_play_arrow_white_36dp"/> + <ProgressBar + android:id="@+id/episodeProgress" + android:layout_width="match_parent" + android:layout_height="4dp" + android:layout_toRightOf="@id/imgvCover" + android:layout_toEndOf="@id/imgvCover" + android:layout_alignParentTop="true" + style="?attr/progressBarTheme" + android:indeterminate="false" + tools:progress="100"/> - <TextView - android:id="@+id/txtvTitle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_marginBottom="26dp" - android:layout_toRightOf="@id/imgvCover" - android:layout_toEndOf="@id/imgvCover" - android:layout_marginLeft="16dp" - android:layout_marginStart="16dp" - android:layout_toLeftOf="@id/butPlay" - android:layout_toStartOf="@id/butPlay" - style="@style/Base.TextAppearance.AppCompat.Body1" - android:ellipsize="end" - android:maxLines="1" - tools:text="Episode title that is too long and will cause the text to wrap"/> + <ImageButton + android:id="@+id/butPlay" + android:layout_width="52dp" + android:layout_height="52dp" + android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" + android:layout_below="@id/episodeProgress" + android:layout_centerVertical="true" + android:contentDescription="@string/pause_label" + android:background="?attr/selectableItemBackground" + tools:src="@drawable/ic_play_arrow_white_36dp"/> - <TextView - android:id="@+id/txtvAuthor" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_below="@id/episodeProgress" - android:layout_marginTop="26dp" - android:layout_toRightOf="@id/imgvCover" - android:layout_toEndOf="@id/imgvCover" - android:layout_marginLeft="16dp" - android:layout_marginStart="16dp" - android:layout_toLeftOf="@id/butPlay" - android:layout_toStartOf="@id/butPlay" - style="@style/TextAppearance.AppCompat.Body1" - android:textColor="?android:attr/textColorSecondary" - android:ellipsize="end" - android:maxLines="1" - tools:text="Episode author that is too long and will cause the text to wrap"/> + <TextView + android:id="@+id/txtvTitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_marginBottom="26dp" + android:layout_toRightOf="@id/imgvCover" + android:layout_toEndOf="@id/imgvCover" + android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" + android:layout_toLeftOf="@id/butPlay" + android:layout_toStartOf="@id/butPlay" + style="@style/Base.TextAppearance.AppCompat.Body1" + android:ellipsize="end" + android:maxLines="1" + tools:text="Episode title that is too long and will cause the text to wrap"/> - </RelativeLayout> + <TextView + android:id="@+id/txtvAuthor" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/episodeProgress" + android:layout_marginTop="26dp" + android:layout_toRightOf="@id/imgvCover" + android:layout_toEndOf="@id/imgvCover" + android:layout_marginLeft="16dp" + android:layout_marginStart="16dp" + android:layout_toLeftOf="@id/butPlay" + android:layout_toStartOf="@id/butPlay" + style="@style/TextAppearance.AppCompat.Body1" + android:textColor="?android:attr/textColorSecondary" + android:ellipsize="end" + android:maxLines="1" + tools:text="Episode author that is too long and will cause the text to wrap"/> -</LinearLayout> +</RelativeLayout> diff --git a/app/src/main/res/layout/feeditemlist_header.xml b/app/src/main/res/layout/feeditemlist_header.xml index 361b583c9..c6ba80e2a 100644 --- a/app/src/main/res/layout/feeditemlist_header.xml +++ b/app/src/main/res/layout/feeditemlist_header.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:background="@color/feed_image_bg" tools:context="de.danoeh.antennapod.activity.MainActivity" tools:background="@android:color/darker_gray"> diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index c05132b42..6cabcdff2 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -6,7 +6,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + <RelativeLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent"> diff --git a/build.gradle b/build.gradle index 632c8e7bd..e15625f13 100644 --- a/build.gradle +++ b/build.gradle @@ -4,12 +4,11 @@ buildscript { repositories { jcenter() mavenCentral() + google() } dependencies { - classpath "com.android.tools.build:gradle:2.3.3" - classpath "me.tatarka:gradle-retrolambda:3.7.0" - classpath "me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2" - classpath "com.github.triplet.gradle:play-publisher:1.1.4" + classpath "com.android.tools.build:gradle:3.0.1" + classpath "com.github.triplet.gradle:play-publisher:1.2.0" // Exclude the version that the android plugin depends on. configurations.classpath.exclude group: "com.android.tools.external.lombok" } @@ -18,6 +17,7 @@ buildscript { allprojects { repositories { jcenter() + google() } } @@ -38,7 +38,7 @@ subprojects { project.ext { compileSdkVersion = 25 - buildToolsVersion = "25.0.3" + buildToolsVersion = "27.0.3" minSdkVersion = 14 targetSdkVersion = 25 diff --git a/circle.yml b/circle.yml index 01055725a..5a5a129ea 100644 --- a/circle.yml +++ b/circle.yml @@ -3,7 +3,8 @@ general: - app/build/outputs/apk machine: 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: version: oraclejdk8 dependencies: @@ -12,11 +13,11 @@ dependencies: - ~/android 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 "build-tools-25.0.3" + - echo y | android update sdk --no-ui --all --filter "build-tools-27.0.3" override: - echo override dependencies test: override: - ./gradlew assembleDebug -PdisablePreDex: - timeout: 1800 + timeout: 1800
\ No newline at end of file diff --git a/core/build.gradle b/core/build.gradle index 3ef2898b8..9967e99ff 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,5 +1,4 @@ apply plugin: "com.android.library" -apply plugin: "me.tatarka.retrolambda" android { compileSdkVersion rootProject.ext.compileSdkVersion @@ -30,11 +29,13 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } - publishNonDefault true + flavorDimensions "market" productFlavors { free { + dimension "market" } play { + dimension "market" } } @@ -46,32 +47,32 @@ repositories { } dependencies { - compile "com.android.support:support-v4:$supportVersion" - compile "com.android.support:appcompat-v7:$supportVersion" - compile "org.apache.commons:commons-lang3:$commonslangVersion" - compile ("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") { + implementation "com.android.support:support-v4:$supportVersion" + implementation "com.android.support:appcompat-v7:$supportVersion" + implementation "org.apache.commons:commons-lang3:$commonslangVersion" + implementation ("org.shredzone.flattr4j:flattr4j-core:$flattr4jVersion") { exclude group: "org.json", module: "json" } - compile "commons-io:commons-io:$commonsioVersion" - compile "com.jayway.android.robotium:robotium-solo:$robotiumSoloVersion" - compile "org.jsoup:jsoup:$jsoupVersion" - compile "com.github.bumptech.glide:glide:$glideVersion" - compile "com.github.bumptech.glide:okhttp3-integration:$glideOkhttpIntegrationVersion@aar" - compile "com.squareup.okhttp3:okhttp:$okhttpVersion" - compile "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion" - compile "com.squareup.okio:okio:$okioVersion" - compile "de.greenrobot:eventbus:$eventbusVersion" - compile "io.reactivex:rxandroid:$rxAndroidVersion" + implementation "commons-io:commons-io:$commonsioVersion" + implementation "com.jayway.android.robotium:robotium-solo:$robotiumSoloVersion" + implementation "org.jsoup:jsoup:$jsoupVersion" + implementation "com.github.bumptech.glide:glide:$glideVersion" + implementation "com.github.bumptech.glide:okhttp3-integration:$glideOkhttpIntegrationVersion@aar" + implementation "com.squareup.okhttp3:okhttp:$okhttpVersion" + implementation "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion" + implementation "com.squareup.okio:okio:$okioVersion" + implementation "de.greenrobot:eventbus:$eventbusVersion" + implementation "io.reactivex:rxandroid:$rxAndroidVersion" - compile "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion" + implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion" // Add casting features // free build hack: skip some dependencies if (!doFreeBuild()) { - playCompile "com.google.android.libraries.cast.companionlibrary:ccl:$castCompanionLibVer" - compile "com.android.support:mediarouter-v7:$supportVersion" - playCompile "com.google.android.gms:play-services-cast:$playServicesVersion" - compile "com.google.android.support:wearable:$wearableSupportVersion" + playApi "com.google.android.libraries.cast.companionlibrary:ccl:$castCompanionLibVer" + api "com.android.support:mediarouter-v7:$supportVersion" + playApi "com.google.android.gms:play-services-cast:$playServicesVersion" + api "com.google.android.support:wearable:$wearableSupportVersion" } else { System.out.println("core: free build hack, skipping some dependencies") } diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java index 746dd43c4..78df74ee7 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java @@ -305,8 +305,10 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource { if (super.compareWithOther(other)) { return true; } - if(other.image != null && !TextUtils.equals(image.download_url, other.image.download_url)) { - return true; + if (other.image != null) { + if (image == null || !TextUtils.equals(image.download_url, other.image.download_url)) { + return true; + } } if (!TextUtils.equals(feedTitle, other.feedTitle)) { return true; 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 d66af22ef..a62c9d8bf 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 @@ -339,12 +339,9 @@ public class DownloadService extends Service { } private void setupNotificationBuilders() { - Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.stat_notify_sync); - notificationCompatBuilder = new NotificationCompat.Builder(this) .setOngoing(true) .setContentIntent(ClientConfig.downloadServiceCallbacks.getNotificationContentIntent(this)) - .setLargeIcon(icon) .setSmallIcon(R.drawable.stat_notify_sync); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { notificationCompatBuilder.setVisibility(Notification.VISIBILITY_PUBLIC); @@ -511,10 +508,6 @@ public class DownloadService extends Service { successfulDownloads, failedDownloads) ) .setSmallIcon(R.drawable.stat_notify_sync_error) - .setLargeIcon( - BitmapFactory.decodeResource(getResources(), - R.drawable.stat_notify_sync_error) - ) .setContentIntent( ClientConfig.downloadServiceCallbacks.getReportNotificationContentIntent(this) ) @@ -565,7 +558,6 @@ public class DownloadService extends Service { .setStyle(new NotificationCompat.BigTextStyle().bigText(getText(R.string.authentication_notification_msg) + ": " + resourceTitle)) .setSmallIcon(R.drawable.ic_stat_authentication) - .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_stat_authentication)) .setAutoCancel(true) .setContentIntent(ClientConfig.downloadServiceCallbacks.getAuthentificationNotificationContentIntent(DownloadService.this, downloadRequest)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 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 5f205c515..af735aefd 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 @@ -11,6 +11,7 @@ import android.view.SurfaceHolder; import org.antennapod.audio.MediaPlayer; +import java.io.File; import java.io.IOException; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Future; @@ -165,8 +166,10 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer { callback.onMediaChanged(false); if (stream) { mediaPlayer.setDataSource(media.getStreamUrl()); - } else { + } else if (new File(media.getLocalMediaUrl()).canRead()) { mediaPlayer.setDataSource(media.getLocalMediaUrl()); + } else { + throw new IOException("Unable to read local file " + media.getLocalMediaUrl()); } setPlayerStatus(PlayerStatus.INITIALIZED, media); 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 3fd46951d..5ff3f70df 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 @@ -3,7 +3,9 @@ package de.danoeh.antennapod.core.storage; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; +import android.database.DatabaseErrorHandler; import android.database.DatabaseUtils; +import android.database.DefaultDatabaseErrorHandler; import android.database.MergeCursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; @@ -13,13 +15,12 @@ import android.media.MediaMetadataRetriever; import android.text.TextUtils; import android.util.Log; +import java.io.File; +import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.List; 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.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.flattr.FlattrStatus; import de.greenrobot.event.EventBus; +import org.apache.commons.io.FileUtils; // TODO Remove media column from feeditem table @@ -1644,6 +1646,28 @@ public class PodDBAdapter { } /** + * 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. */ private static class PodDBHelper extends SQLiteOpenHelper { @@ -1661,7 +1685,7 @@ public class PodDBAdapter { */ public PodDBHelper(final Context context, final String name, final CursorFactory factory) { - super(context, name, factory, VERSION); + super(context, name, factory, VERSION, new PodDbErrorHandler()); this.context = context; } diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml index 981d16d03..969500928 100644 --- a/core/src/main/res/values/colors.xml +++ b/core/src/main/res/values/colors.xml @@ -20,6 +20,7 @@ <color name="swipe_refresh_secondary_color_dark">#060708</color> <color name="new_indicator_green">#669900</color> <color name="image_readability_tint">#80000000</color> + <color name="feed_image_bg">#50000000</color> <color name="selection_background_color_dark">#286E8A</color> <color name="selection_background_color_light">#81CFEA</color> diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml index b9a9fb293..13d956bab 100644 --- a/core/src/main/res/values/styles.xml +++ b/core/src/main/res/values/styles.xml @@ -11,57 +11,57 @@ <item name="progressBarTheme">@style/ProgressBarLight</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item> - <item name="attr/action_bar_icon_color">@color/grey600</item> - <item name="attr/action_about">@drawable/ic_info_grey600_24dp</item> - <item name="attr/action_search">@drawable/ic_search_grey600_24dp</item> - <item name="attr/action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item> - <item name="attr/av_download">@drawable/ic_file_download_grey600_24dp</item> - <item name="attr/av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item> - <item name="attr/av_pause">@drawable/ic_pause_grey600_24dp</item> - <item name="attr/av_play">@drawable/ic_play_arrow_grey600_24dp</item> - <item name="attr/av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item> - <item name="attr/content_discard">@drawable/ic_delete_grey600_24dp</item> - <item name="attr/content_new">@drawable/ic_add_grey600_24dp</item> - <item name="attr/feed">@drawable/ic_feed_grey600_24dp</item> - <item name="attr/location_web_site">@drawable/ic_web_grey600_24dp</item> - <item name="attr/navigation_accept">@drawable/ic_done_grey600_24dp</item> - <item name="attr/navigation_cancel">@drawable/ic_cancel_grey600_24dp</item> - <item name="attr/navigation_expand">@drawable/ic_expand_more_grey600_36dp</item> - <item name="attr/navigation_refresh">@drawable/ic_refresh_grey600_24dp</item> - <item name="attr/navigation_up">@drawable/navigation_up</item> - <item name="attr/social_share">@drawable/ic_share_grey600_24dp</item> - <item name="attr/stat_playlist">@drawable/ic_list_grey600_24dp</item> - <item name="attr/type_audio">@drawable/ic_hearing_grey600_18dp</item> - <item name="attr/type_video">@drawable/ic_remove_red_eye_grey600_18dp</item> - <item name="attr/non_transparent_background">@color/white</item> - <item name="attr/overlay_background">@color/overlay_light</item> - <item name="attr/overlay_drawable">@drawable/overlay_drawable</item> - <item name="attr/dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item> - <item name="attr/dragview_float_background">@color/white</item> - <item name="attr/nav_drawer_background">@color/white</item> - <item name="attr/ic_new">@drawable/ic_new_releases_grey600_24dp</item> - <item name="attr/ic_history">@drawable/ic_history_grey600_24dp</item> - <item name="attr/ic_folder">@drawable/ic_folder_grey600_24dp</item> - <item name="attr/av_play_big">@drawable/ic_play_arrow_grey600_36dp</item> - <item name="attr/av_pause_big">@drawable/ic_pause_grey600_36dp</item> - <item name="attr/av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item> - <item name="attr/av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item> - <item name="attr/av_skip_big">@drawable/ic_skip_grey600_36dp</item> - <item name="attr/ic_fav">@drawable/ic_star_border_grey600_24dp</item> - <item name="attr/ic_unfav">@drawable/ic_star_grey600_24dp</item> - <item name="attr/ic_settings">@drawable/ic_settings_grey600_24dp</item> - <item name="attr/ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item> - <item name="attr/ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item> - <item name="attr/ic_filter">@drawable/ic_filter_grey600_24dp</item> - <item name="attr/ic_sleep">@drawable/ic_sleep_grey600_24dp</item> - <item name="attr/ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item> - <item name="attr/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 name="attr/ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item> - <item name="attr/ic_sort">@drawable/ic_sort_grey600_24dp</item> - <item name="attr/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 name="attr/ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> + <item type="attr" name="action_bar_icon_color">@color/grey600</item> + <item type="attr" name="action_about">@drawable/ic_info_grey600_24dp</item> + <item type="attr" name="action_search">@drawable/ic_search_grey600_24dp</item> + <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item> + <item type="attr" name="av_download">@drawable/ic_file_download_grey600_24dp</item> + <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item> + <item type="attr" name="av_pause">@drawable/ic_pause_grey600_24dp</item> + <item type="attr" name="av_play">@drawable/ic_play_arrow_grey600_24dp</item> + <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item> + <item type="attr" name="content_discard">@drawable/ic_delete_grey600_24dp</item> + <item type="attr" name="content_new">@drawable/ic_add_grey600_24dp</item> + <item type="attr" name="feed">@drawable/ic_feed_grey600_24dp</item> + <item type="attr" name="location_web_site">@drawable/ic_web_grey600_24dp</item> + <item type="attr" name="navigation_accept">@drawable/ic_done_grey600_24dp</item> + <item type="attr" name="navigation_cancel">@drawable/ic_cancel_grey600_24dp</item> + <item type="attr" name="navigation_expand">@drawable/ic_expand_more_grey600_36dp</item> + <item type="attr" name="navigation_refresh">@drawable/ic_refresh_grey600_24dp</item> + <item type="attr" name="navigation_up">@drawable/navigation_up</item> + <item type="attr" name="social_share">@drawable/ic_share_grey600_24dp</item> + <item type="attr" name="stat_playlist">@drawable/ic_list_grey600_24dp</item> + <item type="attr" name="type_audio">@drawable/ic_hearing_grey600_18dp</item> + <item type="attr" name="type_video">@drawable/ic_remove_red_eye_grey600_18dp</item> + <item type="attr" name="non_transparent_background">@color/white</item> + <item type="attr" name="overlay_background">@color/overlay_light</item> + <item type="attr" name="overlay_drawable">@drawable/overlay_drawable</item> + <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item> + <item type="attr" name="dragview_float_background">@color/white</item> + <item type="attr" name="nav_drawer_background">@color/white</item> + <item type="attr" name="ic_new">@drawable/ic_new_releases_grey600_24dp</item> + <item type="attr" name="ic_history">@drawable/ic_history_grey600_24dp</item> + <item type="attr" name="ic_folder">@drawable/ic_folder_grey600_24dp</item> + <item type="attr" name="av_play_big">@drawable/ic_play_arrow_grey600_36dp</item> + <item type="attr" name="av_pause_big">@drawable/ic_pause_grey600_36dp</item> + <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item> + <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item> + <item type="attr" name="av_skip_big">@drawable/ic_skip_grey600_36dp</item> + <item type="attr" name="ic_fav">@drawable/ic_star_border_grey600_24dp</item> + <item type="attr" name="ic_unfav">@drawable/ic_star_grey600_24dp</item> + <item type="attr" name="ic_settings">@drawable/ic_settings_grey600_24dp</item> + <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item> + <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item> + <item type="attr" name="ic_filter">@drawable/ic_filter_grey600_24dp</item> + <item type="attr" name="ic_sleep">@drawable/ic_sleep_grey600_24dp</item> + <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item> + <item type="attr" name="ic_check_box">@drawable/ic_check_box_grey600_24dp</item> + <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item> + <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item> + <item type="attr" name="ic_sort">@drawable/ic_sort_grey600_24dp</item> + <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item> + <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item> + <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> </style> <style name="Theme.AntennaPod.Dark" parent="Theme.Base.AntennaPod.Dark"> @@ -74,57 +74,57 @@ <item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="progressBarTheme">@style/ProgressBarDark</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item> - <item name="attr/action_bar_icon_color">@color/white</item> - <item name="attr/action_about">@drawable/ic_info_white_24dp</item>g - <item name="attr/action_search">@drawable/ic_search_white_24dp</item> - <item name="attr/action_stream">@drawable/ic_settings_input_antenna_white_24dp</item> - <item name="attr/av_download">@drawable/ic_file_download_white_24dp</item> - <item name="attr/av_fast_forward">@drawable/ic_fast_forward_white_24dp</item> - <item name="attr/av_pause">@drawable/ic_pause_white_24dp</item> - <item name="attr/av_play">@drawable/ic_play_arrow_white_24dp</item> - <item name="attr/av_rewind">@drawable/ic_fast_rewind_white_24dp</item> - <item name="attr/content_discard">@drawable/ic_delete_white_24dp</item> - <item name="attr/content_new">@drawable/ic_add_white_24dp</item> - <item name="attr/feed">@drawable/ic_feed_white_24dp</item> - <item name="attr/location_web_site">@drawable/ic_web_white_24dp</item> - <item name="attr/navigation_accept">@drawable/ic_done_white_24dp</item> - <item name="attr/navigation_cancel">@drawable/ic_cancel_white_24dp</item> - <item name="attr/navigation_expand">@drawable/ic_expand_more_white_36dp</item> - <item name="attr/navigation_refresh">@drawable/ic_refresh_white_24dp</item> - <item name="attr/navigation_up">@drawable/navigation_up_dark</item> - <item name="attr/social_share">@drawable/ic_share_white_24dp</item> - <item name="attr/stat_playlist">@drawable/ic_list_white_24dp</item> - <item name="attr/type_audio">@drawable/ic_hearing_white_18dp</item> - <item name="attr/type_video">@drawable/ic_remove_red_eye_white_18dp</item> - <item name="attr/non_transparent_background">@color/black</item> - <item name="attr/overlay_background">@color/overlay_dark</item> - <item name="attr/overlay_drawable">@drawable/overlay_drawable_dark</item> - <item name="attr/dragview_background">@drawable/ic_drag_vertical_white_48dp</item> - <item name="attr/dragview_float_background">@color/black</item> - <item name="attr/nav_drawer_background">#3B3B3B</item> - <item name="attr/ic_new">@drawable/ic_new_releases_white_24dp</item> - <item name="attr/ic_history">@drawable/ic_history_white_24dp</item> - <item name="attr/ic_folder">@drawable/ic_folder_white_24dp</item> - <item name="attr/av_play_big">@drawable/ic_play_arrow_white_36dp</item> - <item name="attr/av_pause_big">@drawable/ic_pause_white_36dp</item> - <item name="attr/av_ff_big">@drawable/ic_fast_forward_white_36dp</item> - <item name="attr/av_rew_big">@drawable/ic_fast_rewind_white_36dp</item> - <item name="attr/av_skip_big">@drawable/ic_skip_white_36dp</item> - <item name="attr/ic_fav">@drawable/ic_star_border_white_24dp</item> - <item name="attr/ic_unfav">@drawable/ic_star_white_24dp</item> - <item name="attr/ic_settings">@drawable/ic_settings_white_24dp</item> - <item name="attr/ic_lock_open">@drawable/ic_lock_open_white_24dp</item> - <item name="attr/ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item> - <item name="attr/ic_filter">@drawable/ic_filter_white_24dp</item> - <item name="attr/ic_sleep">@drawable/ic_sleep_white_24dp</item> - <item name="attr/ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item> - <item name="attr/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 name="attr/ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item> - <item name="attr/ic_sort">@drawable/ic_sort_white_24dp</item> - <item name="attr/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 name="attr/ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> + <item type="attr" name="action_bar_icon_color">@color/white</item> + <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item>g + <item type="attr" name="action_search">@drawable/ic_search_white_24dp</item> + <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item> + <item type="attr" name="av_download">@drawable/ic_file_download_white_24dp</item> + <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_white_24dp</item> + <item type="attr" name="av_pause">@drawable/ic_pause_white_24dp</item> + <item type="attr" name="av_play">@drawable/ic_play_arrow_white_24dp</item> + <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_white_24dp</item> + <item type="attr" name="content_discard">@drawable/ic_delete_white_24dp</item> + <item type="attr" name="content_new">@drawable/ic_add_white_24dp</item> + <item type="attr" name="feed">@drawable/ic_feed_white_24dp</item> + <item type="attr" name="location_web_site">@drawable/ic_web_white_24dp</item> + <item type="attr" name="navigation_accept">@drawable/ic_done_white_24dp</item> + <item type="attr" name="navigation_cancel">@drawable/ic_cancel_white_24dp</item> + <item type="attr" name="navigation_expand">@drawable/ic_expand_more_white_36dp</item> + <item type="attr" name="navigation_refresh">@drawable/ic_refresh_white_24dp</item> + <item type="attr" name="navigation_up">@drawable/navigation_up_dark</item> + <item type="attr" name="social_share">@drawable/ic_share_white_24dp</item> + <item type="attr" name="stat_playlist">@drawable/ic_list_white_24dp</item> + <item type="attr" name="type_audio">@drawable/ic_hearing_white_18dp</item> + <item type="attr" name="type_video">@drawable/ic_remove_red_eye_white_18dp</item> + <item type="attr" name="non_transparent_background">@color/black</item> + <item type="attr" name="overlay_background">@color/overlay_dark</item> + <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark</item> + <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item> + <item type="attr" name="dragview_float_background">@color/black</item> + <item type="attr" name="nav_drawer_background">#3B3B3B</item> + <item type="attr" name="ic_new">@drawable/ic_new_releases_white_24dp</item> + <item type="attr" name="ic_history">@drawable/ic_history_white_24dp</item> + <item type="attr" name="ic_folder">@drawable/ic_folder_white_24dp</item> + <item type="attr" name="av_play_big">@drawable/ic_play_arrow_white_36dp</item> + <item type="attr" name="av_pause_big">@drawable/ic_pause_white_36dp</item> + <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_white_36dp</item> + <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_white_36dp</item> + <item type="attr" name="av_skip_big">@drawable/ic_skip_white_36dp</item> + <item type="attr" name="ic_fav">@drawable/ic_star_border_white_24dp</item> + <item type="attr" name="ic_unfav">@drawable/ic_star_white_24dp</item> + <item type="attr" name="ic_settings">@drawable/ic_settings_white_24dp</item> + <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_white_24dp</item> + <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item> + <item type="attr" name="ic_filter">@drawable/ic_filter_white_24dp</item> + <item type="attr" name="ic_sleep">@drawable/ic_sleep_white_24dp</item> + <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item> + <item type="attr" name="ic_check_box">@drawable/ic_check_box_white_24dp</item> + <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item> + <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item> + <item type="attr" name="ic_sort">@drawable/ic_sort_white_24dp</item> + <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item> + <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item> + <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> </style> <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="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Light</item> - <item name="attr/action_about">@drawable/ic_info_grey600_24dp</item> - <item name="attr/action_search">@drawable/ic_search_grey600_24dp</item> - <item name="attr/action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item> - <item name="attr/av_download">@drawable/ic_file_download_grey600_24dp</item> - <item name="attr/av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item> - <item name="attr/av_pause">@drawable/ic_pause_grey600_24dp</item> - <item name="attr/av_play">@drawable/ic_play_arrow_grey600_24dp</item> - <item name="attr/av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item> - <item name="attr/content_discard">@drawable/ic_delete_grey600_24dp</item> - <item name="attr/content_new">@drawable/ic_add_grey600_24dp</item> - <item name="attr/feed">@drawable/ic_feed_grey600_24dp</item> - <item name="attr/location_web_site">@drawable/ic_web_grey600_24dp</item> - <item name="attr/navigation_accept">@drawable/ic_done_grey600_24dp</item> - <item name="attr/navigation_cancel">@drawable/ic_cancel_grey600_24dp</item> - <item name="attr/navigation_expand">@drawable/ic_expand_more_grey600_36dp</item> - <item name="attr/navigation_refresh">@drawable/ic_refresh_grey600_24dp</item> - <item name="attr/navigation_up">@drawable/navigation_up</item> - <item name="attr/social_share">@drawable/ic_share_grey600_24dp</item> - <item name="attr/stat_playlist">@drawable/ic_list_grey600_24dp</item> - <item name="attr/type_audio">@drawable/ic_hearing_grey600_18dp</item> - <item name="attr/type_video">@drawable/ic_remove_red_eye_grey600_18dp</item> - <item name="attr/non_transparent_background">@color/white</item> - <item name="attr/overlay_background">@color/overlay_light</item> - <item name="attr/overlay_drawable">@drawable/overlay_drawable</item> - <item name="attr/dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item> - <item name="attr/dragview_float_background">@color/white</item> - <item name="attr/nav_drawer_background">@color/white</item> - <item name="attr/ic_new">@drawable/ic_new_releases_grey600_24dp</item> - <item name="attr/ic_history">@drawable/ic_history_grey600_24dp</item> - <item name="attr/ic_folder">@drawable/ic_folder_grey600_24dp</item> - <item name="attr/av_play_big">@drawable/ic_play_arrow_grey600_36dp</item> - <item name="attr/av_pause_big">@drawable/ic_pause_grey600_36dp</item> - <item name="attr/av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item> - <item name="attr/av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item> - <item name="attr/av_skip_big">@drawable/ic_skip_grey600_36dp</item> - <item name="attr/ic_fav">@drawable/ic_star_border_grey600_24dp</item> - <item name="attr/ic_unfav">@drawable/ic_star_grey600_24dp</item> - <item name="attr/ic_settings">@drawable/ic_settings_grey600_24dp</item> - <item name="attr/ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item> - <item name="attr/ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item> - <item name="attr/ic_filter">@drawable/ic_filter_grey600_24dp</item> - <item name="attr/ic_sleep">@drawable/ic_sleep_grey600_24dp</item> - <item name="attr/ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item> - <item name="attr/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 name="attr/ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item> - <item name="attr/ic_sort">@drawable/ic_sort_grey600_24dp</item> - <item name="attr/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 name="attr/ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> + <item type="attr" name="action_about">@drawable/ic_info_grey600_24dp</item> + <item type="attr" name="action_search">@drawable/ic_search_grey600_24dp</item> + <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_grey600_24dp</item> + <item type="attr" name="av_download">@drawable/ic_file_download_grey600_24dp</item> + <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_grey600_24dp</item> + <item type="attr" name="av_pause">@drawable/ic_pause_grey600_24dp</item> + <item type="attr" name="av_play">@drawable/ic_play_arrow_grey600_24dp</item> + <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_grey600_24dp</item> + <item type="attr" name="content_discard">@drawable/ic_delete_grey600_24dp</item> + <item type="attr" name="content_new">@drawable/ic_add_grey600_24dp</item> + <item type="attr" name="feed">@drawable/ic_feed_grey600_24dp</item> + <item type="attr" name="location_web_site">@drawable/ic_web_grey600_24dp</item> + <item type="attr" name="navigation_accept">@drawable/ic_done_grey600_24dp</item> + <item type="attr" name="navigation_cancel">@drawable/ic_cancel_grey600_24dp</item> + <item type="attr" name="navigation_expand">@drawable/ic_expand_more_grey600_36dp</item> + <item type="attr" name="navigation_refresh">@drawable/ic_refresh_grey600_24dp</item> + <item type="attr" name="navigation_up">@drawable/navigation_up</item> + <item type="attr" name="social_share">@drawable/ic_share_grey600_24dp</item> + <item type="attr" name="stat_playlist">@drawable/ic_list_grey600_24dp</item> + <item type="attr" name="type_audio">@drawable/ic_hearing_grey600_18dp</item> + <item type="attr" name="type_video">@drawable/ic_remove_red_eye_grey600_18dp</item> + <item type="attr" name="non_transparent_background">@color/white</item> + <item type="attr" name="overlay_background">@color/overlay_light</item> + <item type="attr" name="overlay_drawable">@drawable/overlay_drawable</item> + <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_grey600_48dp</item> + <item type="attr" name="dragview_float_background">@color/white</item> + <item type="attr" name="nav_drawer_background">@color/white</item> + <item type="attr" name="ic_new">@drawable/ic_new_releases_grey600_24dp</item> + <item type="attr" name="ic_history">@drawable/ic_history_grey600_24dp</item> + <item type="attr" name="ic_folder">@drawable/ic_folder_grey600_24dp</item> + <item type="attr" name="av_play_big">@drawable/ic_play_arrow_grey600_36dp</item> + <item type="attr" name="av_pause_big">@drawable/ic_pause_grey600_36dp</item> + <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_grey600_36dp</item> + <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_grey600_36dp</item> + <item type="attr" name="av_skip_big">@drawable/ic_skip_grey600_36dp</item> + <item type="attr" name="ic_fav">@drawable/ic_star_border_grey600_24dp</item> + <item type="attr" name="ic_unfav">@drawable/ic_star_grey600_24dp</item> + <item type="attr" name="ic_settings">@drawable/ic_settings_grey600_24dp</item> + <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_grey600_24dp</item> + <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_grey600_24dp</item> + <item type="attr" name="ic_filter">@drawable/ic_filter_grey600_24dp</item> + <item type="attr" name="ic_sleep">@drawable/ic_sleep_grey600_24dp</item> + <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_grey600_24dp</item> + <item type="attr" name="ic_check_box">@drawable/ic_check_box_grey600_24dp</item> + <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_grey600_24dp</item> + <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_grey600_24dp</item> + <item type="attr" name="ic_sort">@drawable/ic_sort_grey600_24dp</item> + <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_grey600_36dp</item> + <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_grey600_24dp</item> + <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_grey600_36dp</item> </style> <style name="Theme.AntennaPod.Dark.NoTitle" parent="Theme.Base.AntennaPod.Dark.NoTitle"> @@ -203,56 +203,56 @@ <item name="colorControlNormal">@color/white</item> <item name="buttonStyle">@style/Widget.AntennaPod.Button</item> <item name="alertDialogTheme">@style/AntennaPod.Dialog.Dark</item> - <item name="attr/action_about">@drawable/ic_info_white_24dp</item> - <item name="attr/action_search">@drawable/ic_search_white_24dp</item> - <item name="attr/action_stream">@drawable/ic_settings_input_antenna_white_24dp</item> - <item name="attr/av_download">@drawable/ic_file_download_white_24dp</item> - <item name="attr/av_fast_forward">@drawable/ic_fast_forward_white_24dp</item> - <item name="attr/av_pause">@drawable/ic_pause_white_24dp</item> - <item name="attr/av_play">@drawable/ic_play_arrow_white_24dp</item> - <item name="attr/av_rewind">@drawable/ic_fast_rewind_white_24dp</item> - <item name="attr/content_discard">@drawable/ic_delete_white_24dp</item> - <item name="attr/content_new">@drawable/ic_add_white_24dp</item> - <item name="attr/feed">@drawable/ic_feed_white_24dp</item> - <item name="attr/location_web_site">@drawable/ic_web_white_24dp</item> - <item name="attr/navigation_accept">@drawable/ic_done_white_24dp</item> - <item name="attr/navigation_cancel">@drawable/ic_cancel_white_24dp</item> - <item name="attr/navigation_expand">@drawable/ic_expand_more_white_36dp</item> - <item name="attr/navigation_refresh">@drawable/ic_refresh_white_24dp</item> - <item name="attr/navigation_up">@drawable/navigation_up_dark</item> - <item name="attr/social_share">@drawable/ic_share_white_24dp</item> - <item name="attr/stat_playlist">@drawable/ic_list_white_24dp</item> - <item name="attr/type_audio">@drawable/ic_hearing_white_18dp</item> - <item name="attr/type_video">@drawable/ic_remove_red_eye_white_18dp</item> - <item name="attr/non_transparent_background">@color/black</item> - <item name="attr/overlay_background">@color/overlay_dark</item> - <item name="attr/overlay_drawable">@drawable/overlay_drawable_dark</item> - <item name="attr/dragview_background">@drawable/ic_drag_vertical_white_48dp</item> - <item name="attr/dragview_float_background">@color/black</item> - <item name="attr/nav_drawer_background">#3B3B3B</item> - <item name="attr/ic_new">@drawable/ic_new_releases_white_24dp</item> - <item name="attr/ic_history">@drawable/ic_history_white_24dp</item> - <item name="attr/ic_folder">@drawable/ic_folder_white_24dp</item> - <item name="attr/av_play_big">@drawable/ic_play_arrow_white_36dp</item> - <item name="attr/av_pause_big">@drawable/ic_pause_white_36dp</item> - <item name="attr/av_ff_big">@drawable/ic_fast_forward_white_36dp</item> - <item name="attr/av_rew_big">@drawable/ic_fast_rewind_white_36dp</item> - <item name="attr/av_skip_big">@drawable/ic_skip_white_36dp</item> - <item name="attr/ic_fav">@drawable/ic_star_border_white_24dp</item> - <item name="attr/ic_unfav">@drawable/ic_star_white_24dp</item> - <item name="attr/ic_settings">@drawable/ic_settings_white_24dp</item> - <item name="attr/ic_lock_open">@drawable/ic_lock_open_white_24dp</item> - <item name="attr/ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item> - <item name="attr/ic_filter">@drawable/ic_filter_white_24dp</item> - <item name="attr/ic_sleep">@drawable/ic_sleep_white_24dp</item> - <item name="attr/ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item> - <item name="attr/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 name="attr/ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item> - <item name="attr/ic_sort">@drawable/ic_sort_white_24dp</item> - <item name="attr/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 name="attr/ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> + <item type="attr" name="action_about">@drawable/ic_info_white_24dp</item> + <item type="attr" name="action_search">@drawable/ic_search_white_24dp</item> + <item type="attr" name="action_stream">@drawable/ic_settings_input_antenna_white_24dp</item> + <item type="attr" name="av_download">@drawable/ic_file_download_white_24dp</item> + <item type="attr" name="av_fast_forward">@drawable/ic_fast_forward_white_24dp</item> + <item type="attr" name="av_pause">@drawable/ic_pause_white_24dp</item> + <item type="attr" name="av_play">@drawable/ic_play_arrow_white_24dp</item> + <item type="attr" name="av_rewind">@drawable/ic_fast_rewind_white_24dp</item> + <item type="attr" name="content_discard">@drawable/ic_delete_white_24dp</item> + <item type="attr" name="content_new">@drawable/ic_add_white_24dp</item> + <item type="attr" name="feed">@drawable/ic_feed_white_24dp</item> + <item type="attr" name="location_web_site">@drawable/ic_web_white_24dp</item> + <item type="attr" name="navigation_accept">@drawable/ic_done_white_24dp</item> + <item type="attr" name="navigation_cancel">@drawable/ic_cancel_white_24dp</item> + <item type="attr" name="navigation_expand">@drawable/ic_expand_more_white_36dp</item> + <item type="attr" name="navigation_refresh">@drawable/ic_refresh_white_24dp</item> + <item type="attr" name="navigation_up">@drawable/navigation_up_dark</item> + <item type="attr" name="social_share">@drawable/ic_share_white_24dp</item> + <item type="attr" name="stat_playlist">@drawable/ic_list_white_24dp</item> + <item type="attr" name="type_audio">@drawable/ic_hearing_white_18dp</item> + <item type="attr" name="type_video">@drawable/ic_remove_red_eye_white_18dp</item> + <item type="attr" name="non_transparent_background">@color/black</item> + <item type="attr" name="overlay_background">@color/overlay_dark</item> + <item type="attr" name="overlay_drawable">@drawable/overlay_drawable_dark</item> + <item type="attr" name="dragview_background">@drawable/ic_drag_vertical_white_48dp</item> + <item type="attr" name="dragview_float_background">@color/black</item> + <item type="attr" name="nav_drawer_background">#3B3B3B</item> + <item type="attr" name="ic_new">@drawable/ic_new_releases_white_24dp</item> + <item type="attr" name="ic_history">@drawable/ic_history_white_24dp</item> + <item type="attr" name="ic_folder">@drawable/ic_folder_white_24dp</item> + <item type="attr" name="av_play_big">@drawable/ic_play_arrow_white_36dp</item> + <item type="attr" name="av_pause_big">@drawable/ic_pause_white_36dp</item> + <item type="attr" name="av_ff_big">@drawable/ic_fast_forward_white_36dp</item> + <item type="attr" name="av_rew_big">@drawable/ic_fast_rewind_white_36dp</item> + <item type="attr" name="av_skip_big">@drawable/ic_skip_white_36dp</item> + <item type="attr" name="ic_fav">@drawable/ic_star_border_white_24dp</item> + <item type="attr" name="ic_unfav">@drawable/ic_star_white_24dp</item> + <item type="attr" name="ic_settings">@drawable/ic_settings_white_24dp</item> + <item type="attr" name="ic_lock_open">@drawable/ic_lock_open_white_24dp</item> + <item type="attr" name="ic_lock_closed">@drawable/ic_lock_closed_white_24dp</item> + <item type="attr" name="ic_filter">@drawable/ic_filter_white_24dp</item> + <item type="attr" name="ic_sleep">@drawable/ic_sleep_white_24dp</item> + <item type="attr" name="ic_sleep_off">@drawable/ic_sleep_off_white_24dp</item> + <item type="attr" name="ic_check_box">@drawable/ic_check_box_white_24dp</item> + <item type="attr" name="ic_check_box_outline">@drawable/ic_check_box_outline_blank_white_24dp</item> + <item type="attr" name="ic_indeterminate_check_box">@drawable/ic_indeterminate_check_box_white_24dp</item> + <item type="attr" name="ic_sort">@drawable/ic_sort_white_24dp</item> + <item type="attr" name="ic_sd_storage">@drawable/ic_sd_storage_white_36dp</item> + <item type="attr" name="ic_create_new_folder">@drawable/ic_create_new_folder_white_24dp</item> + <item type="attr" name="ic_cast_disconnect">@drawable/ic_cast_disconnect_white_36dp</item> </style> <style name="Theme.AntennaPod.Dark.Splash" parent="Theme.AppCompat.NoActionBar"> |