summaryrefslogtreecommitdiff
path: root/core/src
diff options
context:
space:
mode:
Diffstat (limited to 'core/src')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java33
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java24
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSDublinCore.java37
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/util/SyndDateUtils.java27
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/gui/UndoBarController.java121
-rw-r--r--core/src/main/res/values-zh-rCN/strings.xml53
-rw-r--r--core/src/main/res/values/strings.xml5
9 files changed, 277 insertions, 28 deletions
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 a3b9f6049..7cbb69a7f 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
@@ -60,6 +60,7 @@ public class UserPreferences implements
private static final String PREF_SEEK_DELTA_SECS = "prefSeekDeltaSecs";
private static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify";
private static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify";
+ public static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront";
// TODO: Make this value configurable
private static final float PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD_DEFAULT = 0.8f;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
index 87bbdf455..c5bf89533 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
@@ -7,7 +7,6 @@ import android.content.SharedPreferences;
import android.database.Cursor;
import android.preference.PreferenceManager;
import android.util.Log;
-
import org.shredzone.flattr4j.model.Flattr;
import java.io.File;
@@ -35,6 +34,7 @@ import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.feed.FeedPreferences;
import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.DownloadStatus;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.util.QueueAccess;
@@ -239,6 +239,26 @@ public class DBWriter {
}
/**
+ * Deletes the entire download log.
+ *
+ * @param context A context that is used for opening a database connection.
+ */
+ public static Future<?> clearDownloadLog(final Context context) {
+ return dbExec.submit(new Runnable() {
+ @Override
+ public void run() {
+ PodDBAdapter adapter = new PodDBAdapter(context);
+ adapter.open();
+ adapter.clearDownloadLog();
+ adapter.close();
+ EventDistributor.getInstance()
+ .sendDownloadLogUpdateBroadcast();
+ }
+ });
+ }
+
+
+ /**
* Adds a FeedMedia object to the playback history. A FeedMedia object is in the playback history if
* its playback completion date is set to a non-null value. This method will set the playback completion date to the
* current date regardless of the current value.
@@ -386,7 +406,16 @@ public class DBWriter {
context, itemIds[i]);
if (item != null) {
- queue.add(item);
+ // add item to either front ot back of queue
+ boolean addToFront = PreferenceManager.getDefaultSharedPreferences(context)
+ .getBoolean(UserPreferences.PREF_QUEUE_ADD_TO_FRONT, false);
+
+ if(addToFront){
+ queue.add(0, item);
+ }else{
+ queue.add(item);
+ }
+
queueModified = true;
if (!item.isRead()) {
item.setRead(true);
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 ce41147e1..f72858adc 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
@@ -889,6 +889,10 @@ public class PodDBAdapter {
db.update(TABLE_NAME_FEED_MEDIA, values, null, null);
}
+ public void clearDownloadLog() {
+ db.delete(TABLE_NAME_DOWNLOAD_LOG, null, null);
+ }
+
/**
* Get all Feeds from the Feed Table.
*
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java
index 1dda24944..47503dee4 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java
@@ -1,14 +1,23 @@
package de.danoeh.antennapod.core.syndication.handler;
import android.util.Log;
-import de.danoeh.antennapod.core.BuildConfig;
-import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.syndication.namespace.*;
-import de.danoeh.antennapod.core.syndication.namespace.atom.NSAtom;
+
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
+import de.danoeh.antennapod.core.BuildConfig;
+import de.danoeh.antennapod.core.feed.Feed;
+import de.danoeh.antennapod.core.syndication.namespace.NSContent;
+import de.danoeh.antennapod.core.syndication.namespace.NSDublinCore;
+import de.danoeh.antennapod.core.syndication.namespace.NSITunes;
+import de.danoeh.antennapod.core.syndication.namespace.NSMedia;
+import de.danoeh.antennapod.core.syndication.namespace.NSRSS20;
+import de.danoeh.antennapod.core.syndication.namespace.NSSimpleChapters;
+import de.danoeh.antennapod.core.syndication.namespace.Namespace;
+import de.danoeh.antennapod.core.syndication.namespace.SyndElement;
+import de.danoeh.antennapod.core.syndication.namespace.atom.NSAtom;
+
/** Superclass for all SAX Handlers which process Syndication formats */
public class SyndHandler extends DefaultHandler {
private static final String TAG = "SyndHandler";
@@ -100,7 +109,12 @@ public class SyndHandler extends DefaultHandler {
state.namespaces.put(uri, new NSMedia());
if (BuildConfig.DEBUG)
Log.d(TAG, "Recognized media namespace");
- }
+ } else if (uri.equals(NSDublinCore.NSURI)
+ && prefix.equals(NSDublinCore.NSTAG)) {
+ state.namespaces.put(uri, new NSDublinCore());
+ if (BuildConfig.DEBUG)
+ Log.d(TAG, "Recognized DublinCore namespace");
+ }
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSDublinCore.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSDublinCore.java
new file mode 100644
index 000000000..099593eed
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSDublinCore.java
@@ -0,0 +1,37 @@
+package de.danoeh.antennapod.core.syndication.namespace;
+
+import org.xml.sax.Attributes;
+
+import de.danoeh.antennapod.core.syndication.handler.HandlerState;
+import de.danoeh.antennapod.core.syndication.util.SyndDateUtils;
+
+public class NSDublinCore extends Namespace {
+ private static final String TAG = "NSDublinCore";
+ public static final String NSTAG = "dc";
+ public static final String NSURI = "http://purl.org/dc/elements/1.1/";
+
+ private static final String ITEM = "item";
+ private static final String DATE = "date";
+
+ @Override
+ public SyndElement handleElementStart(String localName, HandlerState state,
+ Attributes attributes) {
+ return new SyndElement(localName, this);
+ }
+
+ @Override
+ public void handleElementEnd(String localName, HandlerState state) {
+ if(state.getTagstack().size() >= 2
+ && state.getContentBuf() != null) {
+ String content = state.getContentBuf().toString();
+ SyndElement topElement = state.getTagstack().peek();
+ String top = topElement.getName();
+ SyndElement secondElement = state.getSecondTag();
+ String second = secondElement.getName();
+ if (top.equals(DATE) && second.equals(ITEM)) {
+ state.getCurrentItem().setPubDate(
+ SyndDateUtils.parseISO8601Date(content));
+ }
+ }
+ }
+}
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 1ac389f08..a9929d7b1 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
@@ -28,6 +28,8 @@ public class SyndDateUtils {
*/
public static final String RFC3339LOCAL = "yyyy-MM-dd'T'HH:mm:ssZ";
+ public static final String ISO8601_SHORT = "yyyy-MM-dd";
+
private static ThreadLocal<SimpleDateFormat> RFC822Formatter = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
@@ -44,6 +46,14 @@ public class SyndDateUtils {
};
+ private static ThreadLocal<SimpleDateFormat> ISO8601ShortFormatter = new ThreadLocal<SimpleDateFormat>() {
+ @Override
+ protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat(ISO8601_SHORT, Locale.US);
+ }
+
+ };
+
public static Date parseRFC822Date(String date) {
Date result = null;
if (date.contains("PDT")) {
@@ -123,6 +133,23 @@ public class SyndDateUtils {
}
+ public static Date parseISO8601Date(String date) {
+ if(date.length() > ISO8601_SHORT.length()) {
+ return parseRFC3339Date(date);
+ }
+ Date result = null;
+ if(date.length() == "YYYYMMDD".length()) {
+ date = date.substring(0, 4) + "-" + date.substring(4, 6) + "-" + date.substring(6,8);
+ }
+ SimpleDateFormat format = ISO8601ShortFormatter.get();
+ try {
+ result = format.parse(date);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
/**
* Takes a string of the form [HH:]MM:SS[.mmm] and converts it to
* milliseconds.
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/UndoBarController.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/UndoBarController.java
new file mode 100644
index 000000000..0e03bc8b4
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/UndoBarController.java
@@ -0,0 +1,121 @@
+package de.danoeh.antennapod.core.util.gui;
+
+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;
+ } 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);
+ }
+ };
+}
diff --git a/core/src/main/res/values-zh-rCN/strings.xml b/core/src/main/res/values-zh-rCN/strings.xml
index 59958ec35..5d956bef4 100644
--- a/core/src/main/res/values-zh-rCN/strings.xml
+++ b/core/src/main/res/values-zh-rCN/strings.xml
@@ -3,11 +3,11 @@
<!--Activitiy and fragment titles-->
<string name="app_name">AntennaPod</string>
<string name="feeds_label">订阅</string>
- <string name="add_feed_label">添加博客</string>
+ <string name="add_feed_label">添加播客</string>
<string name="podcasts_label">播客</string>
- <string name="episodes_label">曲目</string>
- <string name="new_episodes_label">新曲目</string>
- <string name="all_episodes_label">所有曲目</string>
+ <string name="episodes_label">单集</string>
+ <string name="new_episodes_label">新单集</string>
+ <string name="all_episodes_label">所有单集</string>
<string name="new_label">最新</string>
<string name="waiting_list_label">等待列表</string>
<string name="settings_label">设置</string>
@@ -22,7 +22,7 @@
<string name="gpodnet_auth_label">gpodder.net 登录</string>
<!--New episodes fragment-->
<string name="recently_published_episodes_label">最近发布</string>
- <string name="episode_filter_label">仅显示新曲目</string>
+ <string name="episode_filter_label">仅显示新单集</string>
<!--Main activity-->
<string name="drawer_open">打开菜单</string>
<string name="drawer_close">关闭菜单</string>
@@ -47,7 +47,7 @@
<string name="chapters_label">章节</string>
<string name="shownotes_label">笔记</string>
<string name="description_label">描述</string>
- <string name="most_recent_prefix">最近曲目:\u0020</string>
+ <string name="most_recent_prefix">最近单集:\u0020</string>
<string name="episodes_suffix">\u0020 曲</string>
<string name="length_prefix">长度:\u0020</string>
<string name="size_prefix">大小:\u0020</string>
@@ -64,12 +64,12 @@
<string name="browse_gpoddernet_label">浏览 gpodder.net</string>
<!--Actions on feeds-->
<string name="mark_all_read_label">全部标识已读</string>
- <string name="mark_all_read_msg">将所有曲目标记为已读</string>
+ <string name="mark_all_read_msg">将所有单集标记为已读</string>
<string name="show_info_label">查看信息</string>
<string name="remove_feed_label">删除播客</string>
<string name="share_link_label">分享网站链接</string>
<string name="share_source_label">分享订阅链接</string>
- <string name="feed_delete_confirmation_msg">确认要删除这些订阅吗? 该订阅所有已经下载的曲目将一并删除. </string>
+ <string name="feed_delete_confirmation_msg">确认要删除这些订阅吗? 该订阅所有已经下载的单集将一并删除. </string>
<string name="feed_remover_msg">删除订阅</string>
<!--actions on feeditems-->
<string name="download_label">下载</string>
@@ -77,7 +77,7 @@
<string name="pause_label">暂停</string>
<string name="stream_label">流媒体</string>
<string name="remove_label">删除</string>
- <string name="remove_episode_lable">移除曲目</string>
+ <string name="remove_episode_lable">移除单集</string>
<string name="mark_read_label">标记已读</string>
<string name="mark_unread_label">标记未读</string>
<string name="add_to_queue_label">添加到播放列表</string>
@@ -86,7 +86,7 @@
<string name="support_label">Flattr 他</string>
<string name="enqueue_all_new">全部添加到播放列表</string>
<string name="download_all">全部下载</string>
- <string name="skip_episode_label">跳过曲目</string>
+ <string name="skip_episode_label">跳过单集</string>
<!--Download messages and labels-->
<string name="download_successful">成功</string>
<string name="download_failed">失败</string>
@@ -105,7 +105,7 @@
<string name="cancel_all_downloads_label">取消所有下载</string>
<string name="download_cancelled_msg">已取消下载</string>
<string name="download_report_title">下载完成</string>
- <string name="download_error_malformed_url">畸形 URL</string>
+ <string name="download_error_malformed_url">错误的 URL</string>
<string name="download_error_io_error">IO 错误</string>
<string name="download_error_request_error">请求出错</string>
<string name="download_error_db_access">数据库访问错误</string>
@@ -190,10 +190,10 @@
<string name="pref_set_theme_title">主题选择</string>
<string name="pref_set_theme_sum">改变 AntennaPod 外观</string>
<string name="pref_automatic_download_title">自动下载</string>
- <string name="pref_automatic_download_sum">配置自动下载的曲目</string>
+ <string name="pref_automatic_download_sum">配置自动下载的单集</string>
<string name="pref_autodl_wifi_filter_title">打开 Wi-Fi 过滤器</string>
<string name="pref_autodl_wifi_filter_sum">只允许在 Wi-Fi 网络下自动下载</string>
- <string name="pref_episode_cache_title">曲目缓存</string>
+ <string name="pref_episode_cache_title">单集缓存</string>
<string name="pref_theme_title_light">浅色</string>
<string name="pref_theme_title_dark">暗色</string>
<string name="pref_episode_cache_unlimited">无限</string>
@@ -210,9 +210,20 @@
<string name="pref_playback_speed_sum">自定义音频播放速度</string>
<string name="pref_gpodnet_sethostname_title">设置主机名</string>
<string name="pref_gpodnet_sethostname_use_default_host">使用默认主机</string>
+ <string name="pref_expandNotify_title">扩展通知</string>
+ <string name="pref_expandNotify_sum">总是扩展通知以显示播放按钮</string>
+ <string name="pref_persistNotify_title">保持播放控制</string>
+ <string name="pref_persistNotify_sum">在暂停时保持通知和锁屏界面的控制。</string>
+ <string name="pref_expand_notify_unsupport_toast">Android 版本 4.1 之前不支持扩展通知</string>
+ <string name="pref_seek_delta_title">定位时间</string>
+ <string name="pref_seek_delta_sum">当倒退或快速回放时以这些秒为单位</string>
+ <string name="pref_auto_delete_sum">当播放完成后删除单集</string>
+ <string name="pref_auto_delete_title">自动删除</string>
+ <string name="pref_unpauseOnHeadsetReconnect_title">耳机重新连接</string>
+ <string name="pref_unpauseOnHeadsetReconnect_sum">当耳机重新连接时恢复播放</string>
<!--Auto-Flattr dialog-->
<!--Search-->
- <string name="search_hint">搜索订阅或者曲目</string>
+ <string name="search_hint">搜索订阅或者单集</string>
<string name="found_in_shownotes_label">笔记中查找</string>
<string name="found_in_chapters_label">章节中查找</string>
<string name="search_status_no_results">没有找到任何结果</string>
@@ -300,17 +311,17 @@
<string name="media_type_video_label">视频</string>
<string name="navigate_upwards_label">向上导航</string>
<string name="butAction_label">更多动作</string>
- <string name="status_playing_label">曲目正在播放</string>
- <string name="status_downloading_label">曲目正在下载</string>
- <string name="status_downloaded_label">曲目已下载</string>
+ <string name="status_playing_label">单集正在播放</string>
+ <string name="status_downloading_label">单集正在下载</string>
+ <string name="status_downloaded_label">单集已下载</string>
<string name="status_unread_label">新项目</string>
- <string name="in_queue_label">曲目已经在播放列表中</string>
- <string name="new_episodes_count_label">新曲目数</string>
- <string name="in_progress_episodes_count_label">已收听曲目数</string>
+ <string name="in_queue_label">单集已经在播放列表中</string>
+ <string name="new_episodes_count_label">新单集数</string>
+ <string name="in_progress_episodes_count_label">已收听单集数</string>
<string name="drag_handle_content_description">拖动以变更本项目的位置</string>
<!--Feed information screen-->
<string name="authentication_label">验证</string>
- <string name="authentication_descr">给本播客及曲目变更用户名及密码</string>
+ <string name="authentication_descr">给本播客及单集变更用户名及密码</string>
<!--AntennaPodSP-->
<string name="sp_apps_importing_feeds_msg">正在从选定的应用中导入订阅...</string>
</resources>
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index 277d7d3c0..e8c3408b2 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -79,6 +79,8 @@
<!-- Actions on feeds -->
<string name="mark_all_read_label">Mark all as read</string>
<string name="mark_all_read_msg">Marked all episodes as read</string>
+ <string name="mark_all_read_confirmation_msg">Please confirm that you want to mark all episodes as being read.</string>
+ <string name="mark_all_read_feed_confirmation_msg">Please confirm that you want to mark all episodes in this feed as being read.</string>
<string name="show_info_label">Show information</string>
<string name="remove_feed_label">Remove podcast</string>
<string name="share_link_label">Share website link</string>
@@ -165,6 +167,7 @@
<string name="duration">Duration</string>
<string name="ascending">Ascending</string>
<string name="descending">Descending</string>
+ <string name="clear_queue_confirmation_msg">Please confirm that you want to clear the queue of ALL of the episodes in it</string>
<!-- Flattr -->
<string name="flattr_auth_label">Flattr sign-in</string>
@@ -269,6 +272,8 @@
<string name="pref_persistNotify_title">Persistent playback controls</string>
<string name="pref_persistNotify_sum">Keep notification and lockscreen controls when playback is paused.</string>
<string name="pref_expand_notify_unsupport_toast">Android versions before 4.1 do not support expanded notifications.</string>
+ <string name="pref_queueAddToFront_sum">Add new episodes to the front of the queue.</string>
+ <string name="pref_queueAddToFront_title">Enqueue at front.</string>
<!-- Auto-Flattr dialog -->
<string name="auto_flattr_enable">Enable automatic flattring</string>