Added FeedItem dialog
After Width: | Height: | Size: 225 B |
After Width: | Height: | Size: 217 B |
After Width: | Height: | Size: 197 B |
After Width: | Height: | Size: 201 B |
After Width: | Height: | Size: 267 B |
After Width: | Height: | Size: 262 B |
After Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 264 B |
|
@ -0,0 +1,52 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/header"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:id="@+id/butAction1"
|
||||||
|
android:background="?attr/borderless_button"
|
||||||
|
tools:ignore="ContentDescription"/>
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:id="@+id/butAction2"
|
||||||
|
android:background="?attr/borderless_button"
|
||||||
|
tools:ignore="ContentDescription"/>
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="48dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:id="@+id/butMoreActions"
|
||||||
|
android:background="?attr/borderless_button"
|
||||||
|
android:src="?attr/ic_action_overflow"
|
||||||
|
android:contentDescription="@string/butAction_label"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="3dp"
|
||||||
|
android:background="@color/bright_blue"/>
|
||||||
|
|
||||||
|
<WebView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:id="@+id/webview"/>
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
|
@ -0,0 +1,48 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:custom="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@id/skip_episode_item"
|
||||||
|
android:title="@string/skip_episode_label"
|
||||||
|
custom:showAsAction="collapseActionView">
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/mark_read_item"
|
||||||
|
custom:showAsAction="collapseActionView"
|
||||||
|
android:title="@string/mark_read_label">
|
||||||
|
</item>
|
||||||
|
<item
|
||||||
|
android:id="@+id/mark_unread_item"
|
||||||
|
custom:showAsAction="collapseActionView"
|
||||||
|
android:title="@string/mark_unread_label">
|
||||||
|
</item>
|
||||||
|
<item
|
||||||
|
android:id="@+id/add_to_queue_item"
|
||||||
|
custom:showAsAction="collapseActionView"
|
||||||
|
android:title="@string/add_to_queue_label">
|
||||||
|
</item>
|
||||||
|
<item
|
||||||
|
android:id="@+id/remove_from_queue_item"
|
||||||
|
custom:showAsAction="collapseActionView"
|
||||||
|
android:title="@string/remove_from_queue_label">
|
||||||
|
</item>
|
||||||
|
<item
|
||||||
|
android:id="@+id/share_link_item"
|
||||||
|
custom:showAsAction="collapseActionView"
|
||||||
|
android:title="@string/share_link_label">
|
||||||
|
</item>
|
||||||
|
<item
|
||||||
|
android:id="@+id/visit_website_item"
|
||||||
|
android:icon="?attr/location_web_site"
|
||||||
|
custom:showAsAction="ifRoom|collapseActionView"
|
||||||
|
android:title="@string/visit_website_label">
|
||||||
|
</item>
|
||||||
|
<item
|
||||||
|
android:id="@+id/support_item"
|
||||||
|
custom:showAsAction="collapseActionView"
|
||||||
|
android:title="@string/support_label">
|
||||||
|
</item>
|
||||||
|
|
||||||
|
</menu>
|
|
@ -1,40 +1,41 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<attr name="action_about" format="reference" />
|
<attr name="action_about" format="reference"/>
|
||||||
<attr name="action_search" format="reference" />
|
<attr name="action_search" format="reference"/>
|
||||||
<attr name="action_settings" format="reference" />
|
<attr name="action_settings" format="reference"/>
|
||||||
<attr name="action_stream" format="reference" />
|
<attr name="action_stream" format="reference"/>
|
||||||
<attr name="av_download" format="reference" />
|
<attr name="av_download" format="reference"/>
|
||||||
<attr name="av_fast_forward" format="reference" />
|
<attr name="av_fast_forward" format="reference"/>
|
||||||
<attr name="av_pause" format="reference" />
|
<attr name="av_pause" format="reference"/>
|
||||||
<attr name="av_play" format="reference" />
|
<attr name="av_play" format="reference"/>
|
||||||
<attr name="av_rewind" format="reference" />
|
<attr name="av_rewind" format="reference"/>
|
||||||
<attr name="content_discard" format="reference" />
|
<attr name="content_discard" format="reference"/>
|
||||||
<attr name="content_new" format="reference" />
|
<attr name="content_new" format="reference"/>
|
||||||
<attr name="default_cover" format="reference" />
|
<attr name="default_cover" format="reference"/>
|
||||||
<attr name="device_access_time" format="reference" />
|
<attr name="device_access_time" format="reference"/>
|
||||||
<attr name="location_web_site" format="reference" />
|
<attr name="location_web_site" format="reference"/>
|
||||||
<attr name="navigation_accept" format="reference" />
|
<attr name="navigation_accept" format="reference"/>
|
||||||
<attr name="navigation_cancel" format="reference" />
|
<attr name="navigation_cancel" format="reference"/>
|
||||||
<attr name="navigation_expand" format="reference" />
|
<attr name="navigation_expand" format="reference"/>
|
||||||
<attr name="navigation_collapse" format="reference" />
|
<attr name="navigation_collapse" format="reference"/>
|
||||||
<attr name="navigation_refresh" format="reference" />
|
<attr name="navigation_refresh" format="reference"/>
|
||||||
<attr name="navigation_up" format="reference" />
|
<attr name="navigation_up" format="reference"/>
|
||||||
<attr name="navigation_shownotes" format="reference" />
|
<attr name="navigation_shownotes" format="reference"/>
|
||||||
<attr name="navigation_chapters" format="reference" />
|
<attr name="navigation_chapters" format="reference"/>
|
||||||
<attr name="social_share" format="reference" />
|
<attr name="social_share" format="reference"/>
|
||||||
<attr name="stat_playlist" format="reference" />
|
<attr name="stat_playlist" format="reference"/>
|
||||||
<attr name="type_audio" format="reference" />
|
<attr name="type_audio" format="reference"/>
|
||||||
<attr name="type_video" format="reference" />
|
<attr name="type_video" format="reference"/>
|
||||||
<attr name="borderless_button" format="reference" />
|
<attr name="borderless_button" format="reference"/>
|
||||||
<attr name="spinner_button" format="reference" />
|
<attr name="spinner_button" format="reference"/>
|
||||||
<attr name="overlay_drawable" format="reference" />
|
<attr name="overlay_drawable" format="reference"/>
|
||||||
<attr name="dragview_background" format="reference" />
|
<attr name="dragview_background" format="reference"/>
|
||||||
<attr name="dragview_float_background" format="reference" />
|
<attr name="dragview_float_background" format="reference"/>
|
||||||
|
<attr name="ic_action_overflow" format="reference"/>
|
||||||
<!-- Used in itemdescription -->
|
<!-- Used in itemdescription -->
|
||||||
<attr name="non_transparent_background" format="reference" />
|
<attr name="non_transparent_background" format="reference"/>
|
||||||
<attr name="overlay_background" format="color" />
|
<attr name="overlay_background" format="color"/>
|
||||||
|
|
||||||
<attr name="nav_drawer_background" format="color"/>
|
<attr name="nav_drawer_background" format="color"/>
|
||||||
<attr name="nav_drawer_toggle" format="reference"/>
|
<attr name="nav_drawer_toggle" format="reference"/>
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
<item name="attr/dragview_float_background">@color/white</item>
|
<item name="attr/dragview_float_background">@color/white</item>
|
||||||
<item name="attr/nav_drawer_background">@color/white</item>
|
<item name="attr/nav_drawer_background">@color/white</item>
|
||||||
<item name="attr/nav_drawer_toggle">@drawable/ic_drawer</item>
|
<item name="attr/nav_drawer_toggle">@drawable/ic_drawer</item>
|
||||||
|
<item name="attr/ic_action_overflow">@drawable/ic_action_overflow</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Theme.AntennaPod.Dark" parent="@style/Theme.AppCompat">
|
<style name="Theme.AntennaPod.Dark" parent="@style/Theme.AppCompat">
|
||||||
|
@ -75,6 +76,8 @@
|
||||||
<item name="attr/dragview_float_background">@color/black</item>
|
<item name="attr/dragview_float_background">@color/black</item>
|
||||||
<item name="attr/nav_drawer_background">#3B3B3B</item>
|
<item name="attr/nav_drawer_background">#3B3B3B</item>
|
||||||
<item name="attr/nav_drawer_toggle">@drawable/ic_drawer_dark</item>
|
<item name="attr/nav_drawer_toggle">@drawable/ic_drawer_dark</item>
|
||||||
|
<item name="attr/ic_action_overflow">@drawable/ic_action_overflow_dark</item>
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="UndoBar">
|
<style name="UndoBar">
|
||||||
|
@ -89,6 +92,7 @@
|
||||||
<item name="android:clickable">true</item>
|
<item name="android:clickable">true</item>
|
||||||
<item name="android:divider">@drawable/undobar_divider</item>
|
<item name="android:divider">@drawable/undobar_divider</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="UndoBarMessage">
|
<style name="UndoBarMessage">
|
||||||
<item name="android:layout_width">0dp</item>
|
<item name="android:layout_width">0dp</item>
|
||||||
<item name="android:layout_weight">1</item>
|
<item name="android:layout_weight">1</item>
|
||||||
|
@ -99,6 +103,7 @@
|
||||||
<item name="android:textAppearance">?android:textAppearanceMedium</item>
|
<item name="android:textAppearance">?android:textAppearanceMedium</item>
|
||||||
<item name="android:textColor">#fff</item>
|
<item name="android:textColor">#fff</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="UndoBarButton">
|
<style name="UndoBarButton">
|
||||||
<item name="android:layout_width">wrap_content</item>
|
<item name="android:layout_width">wrap_content</item>
|
||||||
<item name="android:layout_height">match_parent</item>
|
<item name="android:layout_height">match_parent</item>
|
||||||
|
|
|
@ -26,6 +26,10 @@ public class DefaultActionButtonCallback implements ActionButtonCallback {
|
||||||
@Override
|
@Override
|
||||||
public void onActionButtonPressed(final FeedItem item) {
|
public void onActionButtonPressed(final FeedItem item) {
|
||||||
final FeedMedia media = item.getMedia();
|
final FeedMedia media = item.getMedia();
|
||||||
|
if (media == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
boolean isDownloading = DownloadRequester.getInstance().isDownloadingFile(media);
|
boolean isDownloading = DownloadRequester.getInstance().isDownloadingFile(media);
|
||||||
if (!isDownloading && !media.isDownloaded()) {
|
if (!isDownloading && !media.isDownloaded()) {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -0,0 +1,306 @@
|
||||||
|
package de.danoeh.antennapod.dialog;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.ActivityNotFoundException;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.res.TypedArray;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.AsyncTask;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v7.widget.PopupMenu;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.util.TypedValue;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
|
import android.webkit.WebSettings;
|
||||||
|
import android.webkit.WebView;
|
||||||
|
import android.webkit.WebViewClient;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.Toast;
|
||||||
|
import de.danoeh.antennapod.BuildConfig;
|
||||||
|
import de.danoeh.antennapod.R;
|
||||||
|
import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
|
||||||
|
import de.danoeh.antennapod.feed.FeedItem;
|
||||||
|
import de.danoeh.antennapod.feed.FeedMedia;
|
||||||
|
import de.danoeh.antennapod.preferences.UserPreferences;
|
||||||
|
import de.danoeh.antennapod.storage.DBTasks;
|
||||||
|
import de.danoeh.antennapod.storage.DBWriter;
|
||||||
|
import de.danoeh.antennapod.storage.DownloadRequestException;
|
||||||
|
import de.danoeh.antennapod.storage.DownloadRequester;
|
||||||
|
import de.danoeh.antennapod.util.QueueAccess;
|
||||||
|
import de.danoeh.antennapod.util.ShownotesProvider;
|
||||||
|
import de.danoeh.antennapod.util.menuhandler.FeedItemMenuHandler;
|
||||||
|
import org.apache.commons.lang3.StringEscapeUtils;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows information about a specific FeedItem and provides actions like playing, downloading, etc.
|
||||||
|
*/
|
||||||
|
public class FeedItemDialog extends Dialog {
|
||||||
|
private static final String TAG = "FeedItemDialog";
|
||||||
|
|
||||||
|
private FeedItem item;
|
||||||
|
private QueueAccess queue;
|
||||||
|
|
||||||
|
private View header;
|
||||||
|
private WebView webvDescription;
|
||||||
|
private ImageButton butAction1;
|
||||||
|
private ImageButton butAction2;
|
||||||
|
private ImageButton butMore;
|
||||||
|
private PopupMenu popupMenu;
|
||||||
|
|
||||||
|
public FeedItemDialog(Context context, FeedItem item, QueueAccess queue) {
|
||||||
|
super(context);
|
||||||
|
if (item == null) throw new IllegalArgumentException("item = null");
|
||||||
|
if (queue == null) throw new IllegalArgumentException("queue = null");
|
||||||
|
this.item = item;
|
||||||
|
this.queue = queue;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.feeditem_dialog);
|
||||||
|
|
||||||
|
header = findViewById(R.id.header);
|
||||||
|
webvDescription = (WebView) findViewById(R.id.webview);
|
||||||
|
butAction1 = (ImageButton) findViewById(R.id.butAction1);
|
||||||
|
butAction2 = (ImageButton) findViewById(R.id.butAction2);
|
||||||
|
butMore = (ImageButton) findViewById(R.id.butMoreActions);
|
||||||
|
popupMenu = new PopupMenu(getContext(), butMore);
|
||||||
|
|
||||||
|
webvDescription.setWebViewClient(new WebViewClient());
|
||||||
|
setTitle(item.getTitle());
|
||||||
|
|
||||||
|
if (UserPreferences.getTheme() == R.style.Theme_AntennaPod_Dark) {
|
||||||
|
if (Build.VERSION.SDK_INT >= 11
|
||||||
|
&& Build.VERSION.SDK_INT <= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
|
||||||
|
webvDescription.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
|
||||||
|
}
|
||||||
|
webvDescription.setBackgroundColor(getContext().getResources().getColor(
|
||||||
|
R.color.black));
|
||||||
|
}
|
||||||
|
webvDescription.getSettings().setUseWideViewPort(false);
|
||||||
|
webvDescription.getSettings().setLayoutAlgorithm(
|
||||||
|
WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
|
||||||
|
webvDescription.getSettings().setLoadWithOverviewMode(true);
|
||||||
|
webvDescription.setWebViewClient(new WebViewClient() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||||
|
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
||||||
|
try {
|
||||||
|
getContext().startActivity(intent);
|
||||||
|
} catch (ActivityNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
loadDescriptionWebview(item);
|
||||||
|
|
||||||
|
butAction1.setOnClickListener(new View.OnClickListener() {
|
||||||
|
DefaultActionButtonCallback actionButtonCallback = new DefaultActionButtonCallback(getContext());
|
||||||
|
|
||||||
|
@Override
|
||||||
|
|
||||||
|
public void onClick(View v) {
|
||||||
|
FeedMedia media = item.getMedia();
|
||||||
|
if (media == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
actionButtonCallback.onActionButtonPressed(item);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
butAction2.setOnClickListener(new View.OnClickListener()
|
||||||
|
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
FeedMedia media = item.getMedia();
|
||||||
|
if (media == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!media.isDownloaded()) {
|
||||||
|
DBTasks.playMedia(getContext(), media, true, true, true);
|
||||||
|
dismiss();
|
||||||
|
} else {
|
||||||
|
DBWriter.deleteFeedMediaOfItem(getContext(), media.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
butMore.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
popupMenu.getMenu().clear();
|
||||||
|
popupMenu.inflate(R.menu.feeditem_dialog);
|
||||||
|
FeedItemMenuHandler.onPrepareMenu(popupMenuInterface, item, true, queue);
|
||||||
|
popupMenu.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem menuItem) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
return FeedItemMenuHandler.onMenuItemClicked(getContext(), menuItem.getItemId(), item);
|
||||||
|
} catch (DownloadRequestException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
updateMenuAppearance();
|
||||||
|
}
|
||||||
|
|
||||||
|
private final FeedItemMenuHandler.MenuInterface popupMenuInterface = new FeedItemMenuHandler.MenuInterface() {
|
||||||
|
@Override
|
||||||
|
public void setItemVisibility(int id, boolean visible) {
|
||||||
|
MenuItem item = popupMenu.getMenu().findItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
item.setVisible(visible);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public void updateMenuAppearance() {
|
||||||
|
if (item == null || queue == null) {
|
||||||
|
Log.w(TAG, "UpdateMenuAppearance called while item or queue was null");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FeedMedia media = item.getMedia();
|
||||||
|
if (media == null) {
|
||||||
|
header.setVisibility(View.GONE);
|
||||||
|
} else {
|
||||||
|
header.setVisibility(View.VISIBLE);
|
||||||
|
boolean isDownloading = DownloadRequester.getInstance().isDownloadingFile(media);
|
||||||
|
TypedArray drawables = getContext().obtainStyledAttributes(new int[]{R.attr.av_play,
|
||||||
|
R.attr.av_download, R.attr.action_stream, R.attr.content_discard, R.attr.navigation_cancel});
|
||||||
|
|
||||||
|
if (!media.isDownloaded()) {
|
||||||
|
butAction2.setImageDrawable(drawables.getDrawable(2));
|
||||||
|
butAction2.setContentDescription(getContext().getString(R.string.stream_label));
|
||||||
|
} else {
|
||||||
|
butAction2.setImageDrawable(drawables.getDrawable(3));
|
||||||
|
butAction2.setContentDescription(getContext().getString(R.string.remove_episode_lable));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDownloading) {
|
||||||
|
butAction1.setImageDrawable(drawables.getDrawable(4));
|
||||||
|
butAction1.setContentDescription(getContext().getString(R.string.cancel_download_label));
|
||||||
|
} else if (media.isDownloaded()) {
|
||||||
|
butAction1.setImageDrawable(drawables.getDrawable(0));
|
||||||
|
butAction1.setContentDescription(getContext().getString(R.string.play_label));
|
||||||
|
} else {
|
||||||
|
butAction1.setImageDrawable(drawables.getDrawable(1));
|
||||||
|
butAction1.setContentDescription(getContext().getString(R.string.download_label));
|
||||||
|
}
|
||||||
|
|
||||||
|
drawables.recycle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void loadDescriptionWebview(final ShownotesProvider shownotesProvider) {
|
||||||
|
AsyncTask<Void, Void, Void> loadTask = new AsyncTask<Void, Void, Void>() {
|
||||||
|
String data;
|
||||||
|
|
||||||
|
|
||||||
|
private String applyWebviewStyle(String textColor, String data) {
|
||||||
|
final String WEBVIEW_STYLE = "<html><head><style type=\"text/css\"> * { color: %s; font-family: Helvetica; line-height: 1.3em; font-size: 11pt; } a { font-style: normal; text-decoration: none; font-weight: normal; color: #00A8DF; } img { display: block; margin: 10 auto; max-width: %s; height: auto; } body { margin: %dpx %dpx %dpx %dpx; }</style></head><body>%s</body></html>";
|
||||||
|
final int pageMargin = (int) TypedValue.applyDimension(
|
||||||
|
TypedValue.COMPLEX_UNIT_DIP, 8, getContext().getResources()
|
||||||
|
.getDisplayMetrics()
|
||||||
|
);
|
||||||
|
return String.format(WEBVIEW_STYLE, textColor, "100%", pageMargin,
|
||||||
|
pageMargin, pageMargin, pageMargin, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Void result) {
|
||||||
|
super.onPostExecute(result);
|
||||||
|
// /webvDescription.loadData(url, "text/html", "utf-8");
|
||||||
|
if (FeedItemDialog.this.isShowing() && webvDescription != null) {
|
||||||
|
webvDescription.loadDataWithBaseURL(null, data, "text/html",
|
||||||
|
"utf-8", "about:blank");
|
||||||
|
if (BuildConfig.DEBUG)
|
||||||
|
Log.d(TAG, "Webview loaded");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Void doInBackground(Void... params) {
|
||||||
|
if (BuildConfig.DEBUG)
|
||||||
|
Log.d(TAG, "Loading Webview");
|
||||||
|
try {
|
||||||
|
Callable<String> shownotesLoadTask = shownotesProvider.loadShownotes();
|
||||||
|
final String shownotes = shownotesLoadTask.call();
|
||||||
|
|
||||||
|
data = StringEscapeUtils.unescapeHtml4(shownotes);
|
||||||
|
TypedArray res = getContext()
|
||||||
|
.getTheme()
|
||||||
|
.obtainStyledAttributes(
|
||||||
|
new int[]{android.R.attr.textColorPrimary});
|
||||||
|
int colorResource = res.getColor(0, 0);
|
||||||
|
String colorString = String.format("#%06X",
|
||||||
|
0xFFFFFF & colorResource);
|
||||||
|
Log.i(TAG, "text color: " + colorString);
|
||||||
|
res.recycle();
|
||||||
|
data = applyWebviewStyle(colorString, data);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
loadTask.execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItem(FeedItem item) {
|
||||||
|
if (item == null) throw new IllegalArgumentException("item = null");
|
||||||
|
this.item = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setItemFromCollection(Collection<FeedItem> items) {
|
||||||
|
for (FeedItem item : items) {
|
||||||
|
if (item.getId() == this.item.getId()) {
|
||||||
|
setItem(item);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQueue(QueueAccess queue) {
|
||||||
|
if (queue == null) throw new IllegalArgumentException("queue = null");
|
||||||
|
this.queue = queue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FeedItem getItem() {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueueAccess getQueue() {
|
||||||
|
return queue;
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,6 +23,7 @@ import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
|
||||||
import de.danoeh.antennapod.adapter.InternalFeedItemlistAdapter;
|
import de.danoeh.antennapod.adapter.InternalFeedItemlistAdapter;
|
||||||
import de.danoeh.antennapod.asynctask.DownloadObserver;
|
import de.danoeh.antennapod.asynctask.DownloadObserver;
|
||||||
import de.danoeh.antennapod.asynctask.ImageLoader;
|
import de.danoeh.antennapod.asynctask.ImageLoader;
|
||||||
|
import de.danoeh.antennapod.dialog.FeedItemDialog;
|
||||||
import de.danoeh.antennapod.feed.EventDistributor;
|
import de.danoeh.antennapod.feed.EventDistributor;
|
||||||
import de.danoeh.antennapod.feed.Feed;
|
import de.danoeh.antennapod.feed.Feed;
|
||||||
import de.danoeh.antennapod.feed.FeedItem;
|
import de.danoeh.antennapod.feed.FeedItem;
|
||||||
|
@ -65,6 +66,8 @@ public class ItemlistFragment extends ListFragment {
|
||||||
private DownloadObserver downloadObserver;
|
private DownloadObserver downloadObserver;
|
||||||
private List<Downloader> downloaderList;
|
private List<Downloader> downloaderList;
|
||||||
|
|
||||||
|
private FeedItemDialog feedItemDialog;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates new ItemlistFragment which shows the Feeditems of a specific
|
* Creates new ItemlistFragment which shows the Feeditems of a specific
|
||||||
|
@ -122,6 +125,7 @@ public class ItemlistFragment extends ListFragment {
|
||||||
if (downloadObserver != null) {
|
if (downloadObserver != null) {
|
||||||
downloadObserver.onPause();
|
downloadObserver.onPause();
|
||||||
}
|
}
|
||||||
|
feedItemDialog = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -149,12 +153,16 @@ public class ItemlistFragment extends ListFragment {
|
||||||
@Override
|
@Override
|
||||||
public void onListItemClick(ListView l, View v, int position, long id) {
|
public void onListItemClick(ListView l, View v, int position, long id) {
|
||||||
FeedItem selection = adapter.getItem(position - l.getHeaderViewsCount());
|
FeedItem selection = adapter.getItem(position - l.getHeaderViewsCount());
|
||||||
|
/*
|
||||||
Intent showItem = new Intent(getActivity(), ItemviewActivity.class);
|
Intent showItem = new Intent(getActivity(), ItemviewActivity.class);
|
||||||
showItem.putExtra(FeedlistFragment.EXTRA_SELECTED_FEED, selection
|
showItem.putExtra(FeedlistFragment.EXTRA_SELECTED_FEED, selection
|
||||||
.getFeed().getId());
|
.getFeed().getId());
|
||||||
showItem.putExtra(EXTRA_SELECTED_FEEDITEM, selection.getId());
|
showItem.putExtra(EXTRA_SELECTED_FEEDITEM, selection.getId());
|
||||||
|
|
||||||
startActivity(showItem);
|
startActivity(showItem);
|
||||||
|
*/
|
||||||
|
feedItemDialog = new FeedItemDialog(activity.get(), selection, queue);
|
||||||
|
feedItemDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
||||||
|
@ -200,6 +208,13 @@ public class ItemlistFragment extends ListFragment {
|
||||||
setListShown(true);
|
setListShown(true);
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
|
|
||||||
|
if (feedItemDialog != null && feedItemDialog.isShowing()) {
|
||||||
|
feedItemDialog.setItemFromCollection(feed.getItems());
|
||||||
|
feedItemDialog.setQueue(queue);
|
||||||
|
feedItemDialog.updateMenuAppearance();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DownloadObserver.Callback downloadObserverCallback = new DownloadObserver.Callback() {
|
private DownloadObserver.Callback downloadObserverCallback = new DownloadObserver.Callback() {
|
||||||
|
@ -208,6 +223,9 @@ public class ItemlistFragment extends ListFragment {
|
||||||
if (adapter != null) {
|
if (adapter != null) {
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
if (feedItemDialog != null && feedItemDialog.isShowing()) {
|
||||||
|
feedItemDialog.updateMenuAppearance();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -9,6 +9,7 @@ import android.support.v4.app.Fragment;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.AdapterView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import com.mobeta.android.dslv.DragSortListView;
|
import com.mobeta.android.dslv.DragSortListView;
|
||||||
|
@ -17,6 +18,7 @@ import de.danoeh.antennapod.activity.MainActivity;
|
||||||
import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
|
import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
|
||||||
import de.danoeh.antennapod.adapter.NewEpisodesListAdapter;
|
import de.danoeh.antennapod.adapter.NewEpisodesListAdapter;
|
||||||
import de.danoeh.antennapod.asynctask.DownloadObserver;
|
import de.danoeh.antennapod.asynctask.DownloadObserver;
|
||||||
|
import de.danoeh.antennapod.dialog.FeedItemDialog;
|
||||||
import de.danoeh.antennapod.feed.EventDistributor;
|
import de.danoeh.antennapod.feed.EventDistributor;
|
||||||
import de.danoeh.antennapod.feed.FeedItem;
|
import de.danoeh.antennapod.feed.FeedItem;
|
||||||
import de.danoeh.antennapod.feed.FeedMedia;
|
import de.danoeh.antennapod.feed.FeedMedia;
|
||||||
|
@ -56,6 +58,8 @@ public class NewEpisodesFragment extends Fragment {
|
||||||
|
|
||||||
private DownloadObserver downloadObserver = null;
|
private DownloadObserver downloadObserver = null;
|
||||||
|
|
||||||
|
private FeedItemDialog feedItemDialog;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -101,6 +105,7 @@ public class NewEpisodesFragment extends Fragment {
|
||||||
if (downloadObserver != null) {
|
if (downloadObserver != null) {
|
||||||
downloadObserver.onPause();
|
downloadObserver.onPause();
|
||||||
}
|
}
|
||||||
|
feedItemDialog = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -111,6 +116,18 @@ public class NewEpisodesFragment extends Fragment {
|
||||||
txtvEmpty = (TextView) root.findViewById(android.R.id.empty);
|
txtvEmpty = (TextView) root.findViewById(android.R.id.empty);
|
||||||
progLoading = (ProgressBar) root.findViewById(R.id.progLoading);
|
progLoading = (ProgressBar) root.findViewById(R.id.progLoading);
|
||||||
|
|
||||||
|
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
|
FeedItem item = (FeedItem) listAdapter.getItem(position - listView.getHeaderViewsCount());
|
||||||
|
if (item != null) {
|
||||||
|
feedItemDialog = new FeedItemDialog(activity.get(), item, queueAccess);
|
||||||
|
feedItemDialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (!itemsLoaded) {
|
if (!itemsLoaded) {
|
||||||
progLoading.setVisibility(View.VISIBLE);
|
progLoading.setVisibility(View.VISIBLE);
|
||||||
txtvEmpty.setVisibility(View.GONE);
|
txtvEmpty.setVisibility(View.GONE);
|
||||||
|
@ -133,6 +150,12 @@ public class NewEpisodesFragment extends Fragment {
|
||||||
downloadObserver = new DownloadObserver(activity.get(), new Handler(), downloadObserverCallback);
|
downloadObserver = new DownloadObserver(activity.get(), new Handler(), downloadObserverCallback);
|
||||||
downloadObserver.onResume();
|
downloadObserver.onResume();
|
||||||
}
|
}
|
||||||
|
if (feedItemDialog != null && feedItemDialog.isShowing()) {
|
||||||
|
feedItemDialog.setQueue(queueAccess);
|
||||||
|
feedItemDialog.setItemFromCollection(unreadItems);
|
||||||
|
feedItemDialog.setItemFromCollection(recentItems);
|
||||||
|
feedItemDialog.updateMenuAppearance();
|
||||||
|
}
|
||||||
listAdapter.notifyDataSetChanged();
|
listAdapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,6 +165,9 @@ public class NewEpisodesFragment extends Fragment {
|
||||||
if (listAdapter != null) {
|
if (listAdapter != null) {
|
||||||
listAdapter.notifyDataSetChanged();
|
listAdapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
if (feedItemDialog != null && feedItemDialog.isShowing()) {
|
||||||
|
feedItemDialog.updateMenuAppearance();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -7,10 +7,12 @@ import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.support.v4.app.ListFragment;
|
import android.support.v4.app.ListFragment;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.ListView;
|
||||||
import de.danoeh.antennapod.adapter.ActionButtonCallback;
|
import de.danoeh.antennapod.adapter.ActionButtonCallback;
|
||||||
import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
|
import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
|
||||||
import de.danoeh.antennapod.adapter.InternalFeedItemlistAdapter;
|
import de.danoeh.antennapod.adapter.InternalFeedItemlistAdapter;
|
||||||
import de.danoeh.antennapod.asynctask.DownloadObserver;
|
import de.danoeh.antennapod.asynctask.DownloadObserver;
|
||||||
|
import de.danoeh.antennapod.dialog.FeedItemDialog;
|
||||||
import de.danoeh.antennapod.feed.EventDistributor;
|
import de.danoeh.antennapod.feed.EventDistributor;
|
||||||
import de.danoeh.antennapod.feed.FeedItem;
|
import de.danoeh.antennapod.feed.FeedItem;
|
||||||
import de.danoeh.antennapod.feed.FeedMedia;
|
import de.danoeh.antennapod.feed.FeedMedia;
|
||||||
|
@ -36,6 +38,8 @@ public class PlaybackHistoryFragment extends ListFragment {
|
||||||
private DownloadObserver downloadObserver;
|
private DownloadObserver downloadObserver;
|
||||||
private List<Downloader> downloaderList;
|
private List<Downloader> downloaderList;
|
||||||
|
|
||||||
|
private FeedItemDialog feedItemDialog;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -67,6 +71,7 @@ public class PlaybackHistoryFragment extends ListFragment {
|
||||||
if (downloadObserver != null) {
|
if (downloadObserver != null) {
|
||||||
downloadObserver.onPause();
|
downloadObserver.onPause();
|
||||||
}
|
}
|
||||||
|
feedItemDialog = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -91,6 +96,16 @@ public class PlaybackHistoryFragment extends ListFragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onListItemClick(ListView l, View v, int position, long id) {
|
||||||
|
super.onListItemClick(l, v, position, id);
|
||||||
|
FeedItem item = adapter.getItem(position - l.getHeaderViewsCount());
|
||||||
|
if (item != null) {
|
||||||
|
feedItemDialog = new FeedItemDialog(activity.get(), item, queue);
|
||||||
|
feedItemDialog.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -110,6 +125,11 @@ public class PlaybackHistoryFragment extends ListFragment {
|
||||||
}
|
}
|
||||||
setListShown(true);
|
setListShown(true);
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
|
if (feedItemDialog != null && feedItemDialog.isShowing()) {
|
||||||
|
feedItemDialog.setItemFromCollection(playbackHistory);
|
||||||
|
feedItemDialog.setQueue(queue);
|
||||||
|
feedItemDialog.updateMenuAppearance();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private DownloadObserver.Callback downloadObserverCallback = new DownloadObserver.Callback() {
|
private DownloadObserver.Callback downloadObserverCallback = new DownloadObserver.Callback() {
|
||||||
|
@ -118,6 +138,9 @@ public class PlaybackHistoryFragment extends ListFragment {
|
||||||
if (adapter != null) {
|
if (adapter != null) {
|
||||||
adapter.notifyDataSetChanged();
|
adapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
if (feedItemDialog != null && feedItemDialog.isShowing()) {
|
||||||
|
feedItemDialog.updateMenuAppearance();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -11,6 +11,7 @@ import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.AdapterView;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import com.mobeta.android.dslv.DragSortListView;
|
import com.mobeta.android.dslv.DragSortListView;
|
||||||
|
@ -19,12 +20,14 @@ import de.danoeh.antennapod.activity.MainActivity;
|
||||||
import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
|
import de.danoeh.antennapod.adapter.DefaultActionButtonCallback;
|
||||||
import de.danoeh.antennapod.adapter.QueueListAdapter;
|
import de.danoeh.antennapod.adapter.QueueListAdapter;
|
||||||
import de.danoeh.antennapod.asynctask.DownloadObserver;
|
import de.danoeh.antennapod.asynctask.DownloadObserver;
|
||||||
|
import de.danoeh.antennapod.dialog.FeedItemDialog;
|
||||||
import de.danoeh.antennapod.feed.EventDistributor;
|
import de.danoeh.antennapod.feed.EventDistributor;
|
||||||
import de.danoeh.antennapod.feed.FeedItem;
|
import de.danoeh.antennapod.feed.FeedItem;
|
||||||
import de.danoeh.antennapod.feed.FeedMedia;
|
import de.danoeh.antennapod.feed.FeedMedia;
|
||||||
import de.danoeh.antennapod.service.download.Downloader;
|
import de.danoeh.antennapod.service.download.Downloader;
|
||||||
import de.danoeh.antennapod.storage.DBReader;
|
import de.danoeh.antennapod.storage.DBReader;
|
||||||
import de.danoeh.antennapod.storage.DBWriter;
|
import de.danoeh.antennapod.storage.DBWriter;
|
||||||
|
import de.danoeh.antennapod.util.QueueAccess;
|
||||||
import de.danoeh.antennapod.util.UndoBarController;
|
import de.danoeh.antennapod.util.UndoBarController;
|
||||||
import de.danoeh.antennapod.util.gui.FeedItemUndoToken;
|
import de.danoeh.antennapod.util.gui.FeedItemUndoToken;
|
||||||
|
|
||||||
|
@ -56,6 +59,8 @@ public class QueueFragment extends Fragment {
|
||||||
|
|
||||||
private DownloadObserver downloadObserver = null;
|
private DownloadObserver downloadObserver = null;
|
||||||
|
|
||||||
|
private FeedItemDialog feedItemDialog;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Download observer updates won't result in an upate of the list adapter if this is true.
|
* Download observer updates won't result in an upate of the list adapter if this is true.
|
||||||
*/
|
*/
|
||||||
|
@ -108,6 +113,7 @@ public class QueueFragment extends Fragment {
|
||||||
if (downloadObserver != null) {
|
if (downloadObserver != null) {
|
||||||
downloadObserver.onPause();
|
downloadObserver.onPause();
|
||||||
}
|
}
|
||||||
|
feedItemDialog = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -119,6 +125,16 @@ public class QueueFragment extends Fragment {
|
||||||
progLoading = (ProgressBar) root.findViewById(R.id.progLoading);
|
progLoading = (ProgressBar) root.findViewById(R.id.progLoading);
|
||||||
listView.setEmptyView(txtvEmpty);
|
listView.setEmptyView(txtvEmpty);
|
||||||
|
|
||||||
|
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||||
|
FeedItem item = (FeedItem) listAdapter.getItem(position - listView.getHeaderViewsCount());
|
||||||
|
if (item != null) {
|
||||||
|
feedItemDialog = new FeedItemDialog(activity.get(), item, QueueAccess.ItemListAccess(queue));
|
||||||
|
feedItemDialog.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
listView.setRemoveListener(new DragSortListView.RemoveListener() {
|
listView.setRemoveListener(new DragSortListView.RemoveListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -192,6 +208,11 @@ public class QueueFragment extends Fragment {
|
||||||
downloadObserver.onResume();
|
downloadObserver.onResume();
|
||||||
}
|
}
|
||||||
listAdapter.notifyDataSetChanged();
|
listAdapter.notifyDataSetChanged();
|
||||||
|
if (feedItemDialog != null && feedItemDialog.isShowing()) {
|
||||||
|
feedItemDialog.setQueue(QueueAccess.ItemListAccess(queue));
|
||||||
|
feedItemDialog.setItemFromCollection(queue);
|
||||||
|
feedItemDialog.updateMenuAppearance();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private DownloadObserver.Callback downloadObserverCallback = new DownloadObserver.Callback() {
|
private DownloadObserver.Callback downloadObserverCallback = new DownloadObserver.Callback() {
|
||||||
|
@ -200,6 +221,9 @@ public class QueueFragment extends Fragment {
|
||||||
if (listAdapter != null && !blockDownloadObserverUpdate) {
|
if (listAdapter != null && !blockDownloadObserverUpdate) {
|
||||||
listAdapter.notifyDataSetChanged();
|
listAdapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
if (feedItemDialog != null && feedItemDialog.isShowing()) {
|
||||||
|
feedItemDialog.updateMenuAppearance();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|