From 23aac76f8c81db4a3441f1e45a451ae40c670495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20M=C3=BCller?= Date: Thu, 20 Nov 2014 20:18:21 +0100 Subject: fix blurry play/pause overlay in videoplayer activity --- app/src/main/res/layout/videoplayer_activity.xml | 7 +++---- .../core/util/playback/PlaybackController.java | 4 ++-- .../res/drawable-hdpi/ic_action_pause_over_video.png | Bin 6552 -> 0 bytes .../res/drawable-hdpi/ic_action_play_over_video.png | Bin 7123 -> 0 bytes .../drawable-hdpi/ic_av_pause_circle_outline_80dp.png | Bin 0 -> 3309 bytes .../drawable-hdpi/ic_av_play_circle_outline_80dp.png | Bin 0 -> 3395 bytes .../res/drawable-mdpi/ic_action_pause_over_video.png | Bin 3233 -> 0 bytes .../res/drawable-mdpi/ic_action_play_over_video.png | Bin 3510 -> 0 bytes .../drawable-mdpi/ic_av_pause_circle_outline_80dp.png | Bin 0 -> 1765 bytes .../drawable-mdpi/ic_av_play_circle_outline_80dp.png | Bin 0 -> 1858 bytes .../res/drawable-xhdpi/ic_action_pause_over_video.png | Bin 10241 -> 0 bytes .../res/drawable-xhdpi/ic_action_play_over_video.png | Bin 11175 -> 0 bytes .../drawable-xhdpi/ic_av_pause_circle_outline_80dp.png | Bin 0 -> 5191 bytes .../drawable-xhdpi/ic_av_play_circle_outline_80dp.png | Bin 0 -> 5393 bytes .../res/drawable-xxhdpi/ic_action_pause_over_video.png | Bin 21550 -> 0 bytes .../res/drawable-xxhdpi/ic_action_play_over_video.png | Bin 23322 -> 0 bytes .../drawable-xxhdpi/ic_av_pause_circle_outline_80dp.png | Bin 0 -> 8059 bytes .../drawable-xxhdpi/ic_av_play_circle_outline_80dp.png | Bin 0 -> 8216 bytes gradle/wrapper/gradle-wrapper.properties | 4 ++-- 19 files changed, 7 insertions(+), 8 deletions(-) delete mode 100755 core/src/main/res/drawable-hdpi/ic_action_pause_over_video.png delete mode 100755 core/src/main/res/drawable-hdpi/ic_action_play_over_video.png create mode 100644 core/src/main/res/drawable-hdpi/ic_av_pause_circle_outline_80dp.png create mode 100644 core/src/main/res/drawable-hdpi/ic_av_play_circle_outline_80dp.png delete mode 100755 core/src/main/res/drawable-mdpi/ic_action_pause_over_video.png delete mode 100755 core/src/main/res/drawable-mdpi/ic_action_play_over_video.png create mode 100644 core/src/main/res/drawable-mdpi/ic_av_pause_circle_outline_80dp.png create mode 100644 core/src/main/res/drawable-mdpi/ic_av_play_circle_outline_80dp.png delete mode 100755 core/src/main/res/drawable-xhdpi/ic_action_pause_over_video.png delete mode 100755 core/src/main/res/drawable-xhdpi/ic_action_play_over_video.png create mode 100644 core/src/main/res/drawable-xhdpi/ic_av_pause_circle_outline_80dp.png create mode 100644 core/src/main/res/drawable-xhdpi/ic_av_play_circle_outline_80dp.png delete mode 100755 core/src/main/res/drawable-xxhdpi/ic_action_pause_over_video.png delete mode 100755 core/src/main/res/drawable-xxhdpi/ic_action_play_over_video.png create mode 100644 core/src/main/res/drawable-xxhdpi/ic_av_pause_circle_outline_80dp.png create mode 100644 core/src/main/res/drawable-xxhdpi/ic_av_play_circle_outline_80dp.png diff --git a/app/src/main/res/layout/videoplayer_activity.xml b/app/src/main/res/layout/videoplayer_activity.xml index f1e54f7c3..a0335305f 100644 --- a/app/src/main/res/layout/videoplayer_activity.xml +++ b/app/src/main/res/layout/videoplayer_activity.xml @@ -21,12 +21,11 @@ + android:src="@drawable/ic_av_pause_circle_outline_80dp"/> Date: Thu, 20 Nov 2014 21:41:35 +0100 Subject: fix videoplayer overlay background on lollipop --- .../main/res/drawable-v21/overlay_button_circle_background.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 core/src/main/res/drawable-v21/overlay_button_circle_background.xml diff --git a/core/src/main/res/drawable-v21/overlay_button_circle_background.xml b/core/src/main/res/drawable-v21/overlay_button_circle_background.xml new file mode 100644 index 000000000..240affbfb --- /dev/null +++ b/core/src/main/res/drawable-v21/overlay_button_circle_background.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file -- cgit v1.2.3 From 12cea42f0851c51f26c059e6ce7ac51f57b56c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jens=20M=C3=BCller?= Date: Tue, 25 Nov 2014 22:18:09 +0100 Subject: use a radius of 37.5% of parent width to match pre-lollipop look --- core/src/main/res/drawable-v21/overlay_button_circle_background.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/res/drawable-v21/overlay_button_circle_background.xml b/core/src/main/res/drawable-v21/overlay_button_circle_background.xml index 240affbfb..c121690df 100644 --- a/core/src/main/res/drawable-v21/overlay_button_circle_background.xml +++ b/core/src/main/res/drawable-v21/overlay_button_circle_background.xml @@ -4,7 +4,7 @@ android:shape="rectangle"> \ No newline at end of file -- cgit v1.2.3 From bdda8a7e26821b098123d213c68589f7c751c1a3 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Sat, 29 Nov 2014 18:00:44 +0100 Subject: Upgraded build tools --- build.gradle | 4 ++-- core/build.gradle | 1 - gradle/wrapper/gradle-wrapper.properties | 4 ++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 9c6a1f9d8..07b507186 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:0.14.2' + classpath 'com.android.tools.build:gradle:1.0.0-rc1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -19,5 +19,5 @@ allprojects { } task wrapper(type: Wrapper) { - gradleVersion = '2.1' + gradleVersion = '2.2.1' } \ No newline at end of file diff --git a/core/build.gradle b/core/build.gradle index 3c5c07313..5e1853d45 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -5,7 +5,6 @@ android { buildToolsVersion "21.1.1" defaultConfig { - applicationId "de.danoeh.antennapod.core" minSdkVersion 10 targetSdkVersion 21 versionCode 1 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b6dc96bf1..5909f8dfb 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Oct 12 21:44:21 CEST 2014 +#Fri Nov 28 16:00:13 CET 2014 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip -- cgit v1.2.3 From c49357c4d00f025ef78a84c290512f240d88b586 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Sun, 30 Nov 2014 18:56:57 +0100 Subject: FeedUpdateReceiver was not registered in Manifest fixes #566 --- core/src/main/AndroidManifest.xml | 7 ++- .../core/preferences/UserPreferences.java | 4 +- .../core/receiver/FeedUpdateReceiver.java | 57 ++++++++++------------ 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml index c660cd805..3ec519844 100644 --- a/core/src/main/AndroidManifest.xml +++ b/core/src/main/AndroidManifest.xml @@ -19,10 +19,10 @@ + android:exported="true" /> + android:enabled="true" /> + + + diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index f4d44c4da..f18028e8f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -20,6 +20,7 @@ import java.util.LinkedList; import java.util.List; import java.util.concurrent.TimeUnit; +import de.danoeh.antennapod.core.ApplicationCallbacks; import de.danoeh.antennapod.core.BuildConfig; import de.danoeh.antennapod.core.ClientConfig; import de.danoeh.antennapod.core.R; @@ -582,8 +583,7 @@ public class UserPreferences implements AlarmManager alarmManager = (AlarmManager) instance.context .getSystemService(Context.ALARM_SERVICE); PendingIntent updateIntent = PendingIntent.getBroadcast( - instance.context, 0, new Intent( - FeedUpdateReceiver.ACTION_REFRESH_FEEDS), 0); + instance.context, 0, new Intent(ClientConfig.applicationCallbacks.getApplicationInstance(), FeedUpdateReceiver.class), 0); alarmManager.cancel(updateIntent); if (intervalMillis != 0) { alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, triggerAtMillis, intervalMillis, diff --git a/core/src/main/java/de/danoeh/antennapod/core/receiver/FeedUpdateReceiver.java b/core/src/main/java/de/danoeh/antennapod/core/receiver/FeedUpdateReceiver.java index 6ce30763d..95dc4fb07 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/receiver/FeedUpdateReceiver.java +++ b/core/src/main/java/de/danoeh/antennapod/core/receiver/FeedUpdateReceiver.java @@ -7,40 +7,37 @@ import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; -import org.apache.commons.lang3.StringUtils; - import de.danoeh.antennapod.core.BuildConfig; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.DBTasks; -/** Refreshes all feeds when it receives an intent */ +/** + * Refreshes all feeds when it receives an intent + */ public class FeedUpdateReceiver extends BroadcastReceiver { - private static final String TAG = "FeedUpdateReceiver"; - public static final String ACTION_REFRESH_FEEDS = "de.danoeh.antennapod.feedupdatereceiver.refreshFeeds"; - - @Override - public void onReceive(Context context, Intent intent) { - if (StringUtils.equals(intent.getAction(), ACTION_REFRESH_FEEDS)) { - if (BuildConfig.DEBUG) - Log.d(TAG, "Received intent"); - boolean mobileUpdate = UserPreferences.isAllowMobileUpdate(); - if (mobileUpdate || connectedToWifi(context)) { - DBTasks.refreshExpiredFeeds(context); - } else { - if (BuildConfig.DEBUG) - Log.d(TAG, - "Blocking automatic update: no wifi available / no mobile updates allowed"); - } - } - } - - private boolean connectedToWifi(Context context) { - ConnectivityManager connManager = (ConnectivityManager) context - .getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo mWifi = connManager - .getNetworkInfo(ConnectivityManager.TYPE_WIFI); - - return mWifi.isConnected(); - } + private static final String TAG = "FeedUpdateReceiver"; + + @Override + public void onReceive(Context context, Intent intent) { + if (BuildConfig.DEBUG) + Log.d(TAG, "Received intent"); + boolean mobileUpdate = UserPreferences.isAllowMobileUpdate(); + if (mobileUpdate || connectedToWifi(context)) { + DBTasks.refreshExpiredFeeds(context); + } else { + if (BuildConfig.DEBUG) + Log.d(TAG, + "Blocking automatic update: no wifi available / no mobile updates allowed"); + } + } + + private boolean connectedToWifi(Context context) { + ConnectivityManager connManager = (ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo mWifi = connManager + .getNetworkInfo(ConnectivityManager.TYPE_WIFI); + + return mWifi.isConnected(); + } } -- cgit v1.2.3 From 604d04ae21ab0cbcca24cbbefabdaa443b064c37 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Tue, 2 Dec 2014 12:11:10 +0100 Subject: Use explicit Intent for bindService call bindService no longer accepts implicit Intents. Possibly caused #559, #558, #553 --- .../main/java/com/aocate/media/MediaPlayer.java | 32 ++++++++++++++++++++++ .../com/aocate/media/ServiceBackedMediaPlayer.java | 4 ++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/aocate/media/MediaPlayer.java b/core/src/main/java/com/aocate/media/MediaPlayer.java index c73c5219e..79e63d03d 100644 --- a/core/src/main/java/com/aocate/media/MediaPlayer.java +++ b/core/src/main/java/com/aocate/media/MediaPlayer.java @@ -35,6 +35,8 @@ import java.util.concurrent.locks.ReentrantLock; import de.danoeh.antennapod.core.BuildConfig; public class MediaPlayer { + public static final String TAG = "com.aocate.media.MediaPlayer"; + public interface OnBufferingUpdateListener { public abstract void onBufferingUpdate(MediaPlayer arg0, int percent); } @@ -109,6 +111,36 @@ public class MediaPlayer { return list.size() > 0; } + /** + * Returns an explicit Intent for a service that accepts the given Intent + * or null if no such service was found. + * + * @param context The application's environment. + * @param action The Intent action to check for availability. + * @return The explicit service Intent or null if no service was found. + */ + public static Intent getPrestoServiceIntent(Context context, String action) { + final PackageManager packageManager = context.getPackageManager(); + final Intent actionIntent = new Intent(action); + List list = packageManager.queryIntentServices(actionIntent, + PackageManager.MATCH_DEFAULT_ONLY); + if (list.size() > 0) { + ResolveInfo first = list.get(0); + if (first.serviceInfo != null) { + Intent intent = new Intent(); + intent.setComponent(new ComponentName(first.serviceInfo.packageName, + first.serviceInfo.name)); + Log.i(TAG, "Returning intent:" + intent.toString()); + return intent; + } else { + Log.e(TAG, "Found service that accepts " + action + ", but serviceInfo was null"); + return null; + } + } else { + return null; + } + } + /** * Indicates whether the Presto library is installed * diff --git a/core/src/main/java/com/aocate/media/ServiceBackedMediaPlayer.java b/core/src/main/java/com/aocate/media/ServiceBackedMediaPlayer.java index 702a23b0f..0e27a8014 100644 --- a/core/src/main/java/com/aocate/media/ServiceBackedMediaPlayer.java +++ b/core/src/main/java/com/aocate/media/ServiceBackedMediaPlayer.java @@ -83,7 +83,7 @@ public class ServiceBackedMediaPlayer extends MediaPlayerImpl { super(owningMediaPlayer, context); Log.d(SBMP_TAG, "Instantiating ServiceBackedMediaPlayer 87"); this.playMediaServiceIntent = - new Intent(INTENT_NAME); + MediaPlayer.getPrestoServiceIntent(context, INTENT_NAME); this.mPlayMediaServiceConnection = new ServiceConnection() { public void onServiceConnected(ComponentName name, IBinder service) { IPlayMedia_0_8 tmpPlayMediaInterface = IPlayMedia_0_8.Stub.asInterface((IBinder) service); @@ -135,6 +135,7 @@ public class ServiceBackedMediaPlayer extends MediaPlayerImpl { Log.d(SBMP_TAG, "Connecting PlayMediaService 124"); if (!ConnectPlayMediaService()) { + Log.e(SBMP_TAG, "bindService failed"); ServiceBackedMediaPlayer.this.error(MediaPlayer.MEDIA_ERROR_UNKNOWN, 0); } } @@ -149,6 +150,7 @@ public class ServiceBackedMediaPlayer extends MediaPlayerImpl { Log.d(SBMP_TAG, "Binding service"); return mContext.bindService(playMediaServiceIntent, mPlayMediaServiceConnection, Context.BIND_AUTO_CREATE); } catch (Exception e) { + Log.e(SBMP_TAG, "Could not bind with service", e); return false; } } else { -- cgit v1.2.3 From 1173b6704944222b23097ab7020b0417d5ce094a Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Wed, 3 Dec 2014 16:04:30 +0100 Subject: Fixed IndexOutOfBoundsException in parseTimeString --- .../de/danoeh/antennapod/core/syndication/util/SyndDateUtils.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/util/SyndDateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/util/SyndDateUtils.java index d493286ac..72e0f053b 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/util/SyndDateUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/util/SyndDateUtils.java @@ -134,9 +134,11 @@ public class SyndDateUtils { result += Integer.valueOf(parts[idx]) * 3600000L; idx++; } - result += Integer.valueOf(parts[idx]) * 60000L; - idx++; - result += (Float.valueOf(parts[idx])) * 1000L; + if (parts.length >= 2) { + result += Integer.valueOf(parts[idx]) * 60000L; + idx++; + result += (Float.valueOf(parts[idx])) * 1000L; + } return result; } -- cgit v1.2.3 From 4dd97c6ccaa681b007c5556575eb7fff709caa59 Mon Sep 17 00:00:00 2001 From: Martin Olsson Date: Tue, 2 Dec 2014 23:51:36 +0100 Subject: Parse podcast duration correctly even with trailing whitespace The Skeptoid podcast (available on gpodder.net) currently has a specific episode (titled "Skeptoid #437: Tube Amplifiers") that contains the XML 14:57 which AntennaPod fails to parse (and instead hits a java.lang.NumberFormatException which it prints to stderr every time the refresh button is pressed). The duration for that particular episode is not correctly showed in the UI, although the duration for other Skeptoid episodes show up just fine. --- .../java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java index 70e1126b9..ff9828eba 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java @@ -50,7 +50,7 @@ public class NSITunes extends Namespace { if (localName.equals(AUTHOR)) { state.getFeed().setAuthor(state.getContentBuf().toString()); } else if (localName.equals(DURATION)) { - String[] parts = state.getContentBuf().toString().split(":"); + String[] parts = state.getContentBuf().toString().trim().split(":"); try { int duration = 0; if (parts.length == 2) { -- cgit v1.2.3 From c78297d6b412f03edd15fc9893fe222ccdbeda63 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Sun, 7 Dec 2014 19:28:19 +0100 Subject: Updated dependencies Removed unused dependencies --- app/build.gradle | 3 +- app/src/main/assets/about.html | 9 +- build.gradle | 2 +- core/build.gradle | 3 +- .../antennapod/core/util/UndoBarController.java | 137 --------------------- 5 files changed, 5 insertions(+), 149 deletions(-) delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/UndoBarController.java diff --git a/app/build.gradle b/app/build.gradle index cf1af78fa..14897139b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,13 +7,12 @@ dependencies { compile 'com.android.support:support-v4:21.0.2' compile 'com.android.support:appcompat-v7:21.0.2' compile 'org.apache.commons:commons-lang3:3.3.2' - compile('org.shredzone.flattr4j:flattr4j-core:2.10') { + compile('org.shredzone.flattr4j:flattr4j-core:2.11') { exclude group: 'org.apache.httpcomponents', module: 'httpcore' exclude group: 'org.apache.httpcomponents', module: 'httpclient' exclude group: 'org.json', module: 'json' } compile 'commons-io:commons-io:2.4' - compile 'com.nineoldandroids:library:2.4.0' compile project('dslv:library') compile 'com.jayway.android.robotium:robotium-solo:5.2.1' compile 'org.jsoup:jsoup:1.7.3' diff --git a/app/src/main/assets/about.html b/app/src/main/assets/about.html index e0f36ba79..081799a98 100644 --- a/app/src/main/assets/about.html +++ b/app/src/main/assets/about.html @@ -49,9 +49,6 @@

Used libraries

-

NineOldAndroids (Link)

-by Jake Wharton, licensed under the Apache 2.0 license (View) -

Apache Commons (Link)

by The Apache Software Foundation, licensed under the Apache 2.0 license (View) @@ -65,12 +62,9 @@ licensed under the Apache 2.0 license (View)

Presto Client (Link)

licensed under the Apache 2.0 license (View) -

Better Pickers (Link)

-licensed under the Apache 2.0 license (View) -

jsoup (Link)

licensed under the MIT license (View) - +

Picasso (Link)

licensed under the Apache 2.0 license (View) @@ -83,4 +77,5 @@ licensed under the Apache 2.0 license (View)

Material Design Icons (Link)

by Google, licensed under an Attribution-ShareAlike 4.0 International license (View) + diff --git a/build.gradle b/build.gradle index 07b507186..efa6e1773 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.0.0-rc1' + classpath 'com.android.tools.build:gradle:1.0.0-rc4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/core/build.gradle b/core/build.gradle index 5e1853d45..cfe33c98c 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -34,13 +34,12 @@ dependencies { compile 'com.android.support:appcompat-v7:21.0.2' compile 'com.android.support:support-v4:21.0.2' compile 'org.apache.commons:commons-lang3:3.3.2' - compile ('org.shredzone.flattr4j:flattr4j-core:2.10') { + compile ('org.shredzone.flattr4j:flattr4j-core:2.11') { exclude group: 'org.apache.httpcomponents', module: 'httpcore' exclude group: 'org.apache.httpcomponents', module: 'httpclient' exclude group: 'org.json', module: 'json' } compile 'commons-io:commons-io:2.4' - compile 'com.nineoldandroids:library:2.4.0' compile 'com.jayway.android.robotium:robotium-solo:5.2.1' compile 'org.jsoup:jsoup:1.7.3' compile 'com.squareup.picasso:picasso:2.4.0' diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/UndoBarController.java b/core/src/main/java/de/danoeh/antennapod/core/util/UndoBarController.java deleted file mode 100644 index 5843c5f8f..000000000 --- a/core/src/main/java/de/danoeh/antennapod/core/util/UndoBarController.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright 2012 Roman Nurik - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package de.danoeh.antennapod.core.util; - -import android.os.Bundle; -import android.os.Handler; -import android.os.Parcelable; -import android.text.TextUtils; -import android.view.View; -import android.widget.TextView; -import com.nineoldandroids.animation.Animator; -import com.nineoldandroids.animation.AnimatorListenerAdapter; -import com.nineoldandroids.view.ViewHelper; -import com.nineoldandroids.view.ViewPropertyAnimator; -import de.danoeh.antennapod.core.R; - -import static com.nineoldandroids.view.ViewPropertyAnimator.animate; - -public class UndoBarController { - private View mBarView; - private TextView mMessageView; - private ViewPropertyAnimator mBarAnimator; - private Handler mHideHandler = new Handler(); - - private UndoListener mUndoListener; - - // State objects - private Parcelable mUndoToken; - private CharSequence mUndoMessage; - - public interface UndoListener { - void onUndo(Parcelable token); - } - - public UndoBarController(View undoBarView, UndoListener undoListener) { - mBarView = undoBarView; - mBarAnimator = animate(mBarView); - mUndoListener = undoListener; - - mMessageView = (TextView) mBarView.findViewById(R.id.undobar_message); - mBarView.findViewById(R.id.undobar_button) - .setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - hideUndoBar(false); - mUndoListener.onUndo(mUndoToken); - } - }); - - hideUndoBar(true); - } - - public void showUndoBar(boolean immediate, CharSequence message, Parcelable undoToken) { - mUndoToken = undoToken; - mUndoMessage = message; - mMessageView.setText(mUndoMessage); - - mHideHandler.removeCallbacks(mHideRunnable); - mHideHandler.postDelayed(mHideRunnable, - mBarView.getResources().getInteger(R.integer.undobar_hide_delay)); - - mBarView.setVisibility(View.VISIBLE); - if (immediate) { - ViewHelper.setAlpha(mBarView, 1); - } else { - mBarAnimator.cancel(); - mBarAnimator - .alpha(1) - .setDuration( - mBarView.getResources() - .getInteger(android.R.integer.config_shortAnimTime)) - .setListener(null); - } - } - - public void hideUndoBar(boolean immediate) { - mHideHandler.removeCallbacks(mHideRunnable); - if (immediate) { - mBarView.setVisibility(View.GONE); - ViewHelper.setAlpha(mBarView, 0); - mUndoMessage = null; - mUndoToken = null; - - } else { - mBarAnimator.cancel(); - mBarAnimator - .alpha(0) - .setDuration(mBarView.getResources() - .getInteger(android.R.integer.config_shortAnimTime)) - .setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mBarView.setVisibility(View.GONE); - mUndoMessage = null; - mUndoToken = null; - } - }); - } - } - - public void onSaveInstanceState(Bundle outState) { - outState.putCharSequence("undo_message", mUndoMessage); - outState.putParcelable("undo_token", mUndoToken); - } - - public void onRestoreInstanceState(Bundle savedInstanceState) { - if (savedInstanceState != null) { - mUndoMessage = savedInstanceState.getCharSequence("undo_message"); - mUndoToken = savedInstanceState.getParcelable("undo_token"); - - if (mUndoToken != null || !TextUtils.isEmpty(mUndoMessage)) { - showUndoBar(true, mUndoMessage, mUndoToken); - } - } - } - - private Runnable mHideRunnable = new Runnable() { - @Override - public void run() { - hideUndoBar(false); - } - }; -} -- cgit v1.2.3 From 24538d7ebb50cd18c83f6669743faa2d7be195ec Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Sun, 7 Dec 2014 19:34:18 +0100 Subject: Prepared release of next version --- CHANGELOG.md | 6 ++++++ app/src/main/AndroidManifest.xml | 4 ++-- app/src/main/assets/about.html | 2 +- .../main/java/de/danoeh/antennapod/config/ClientConfigurator.java | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17f5729bf..d5fe5dd74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ Change Log ========== +Version 0.9.9.6 +--------------- +- Fixed problems related to variable speed playback +- Fixed automatic feed update problems +- Several other bugfixes and improvements + Version 0.9.9.5 --------------- * Added support for paged feeds diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 44eee8539..50d1d2874 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ + android:versionCode="43" + android:versionName="0.9.9.6"> diff --git a/app/src/main/assets/about.html b/app/src/main/assets/about.html index 081799a98..172b49aab 100644 --- a/app/src/main/assets/about.html +++ b/app/src/main/assets/about.html @@ -41,7 +41,7 @@