Added "swipe to refresh" in new episodes list

This commit is contained in:
daniel oeh 2014-05-17 14:39:16 +02:00
parent 0d1803413c
commit 2186055c2d
5 changed files with 59 additions and 26 deletions

View File

@ -6,23 +6,30 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.mobeta.android.dslv.DragSortListView
android:id="@android:id/list"
android:scrollbarStyle="outsideOverlay"
<android.support.v4.widget.SwipeRefreshLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
dslv:collapsed_height="2dp"
dslv:drag_enabled="false"
dslv:drag_scroll_start="0.33"
dslv:float_alpha="0.6"
dslv:max_drag_scroll_speed="0.5"
dslv:remove_enabled="true"
dslv:remove_mode="flingRemove"
dslv:slide_shuffle_speed="0.3"
dslv:sort_enabled="false"
dslv:track_drag_sort="false"
dslv:float_background_color="?attr/dragview_float_background"
dslv:use_default_controller="true"/>
android:id="@+id/swipeRefreshLayout">
<com.mobeta.android.dslv.DragSortListView
android:id="@android:id/list"
android:scrollbarStyle="outsideOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
dslv:collapsed_height="2dp"
dslv:drag_enabled="false"
dslv:drag_scroll_start="0.33"
dslv:float_alpha="0.6"
dslv:max_drag_scroll_speed="0.5"
dslv:remove_enabled="true"
dslv:remove_mode="flingRemove"
dslv:slide_shuffle_speed="0.3"
dslv:sort_enabled="false"
dslv:track_drag_sort="false"
dslv:float_background_color="?attr/dragview_float_background"
dslv:use_default_controller="true"/>
</android.support.v4.widget.SwipeRefreshLayout>
<TextView
android:id="@id/android:empty"

View File

@ -26,6 +26,7 @@
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="4dp"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/imgvImage"
android:layout_alignParentRight="true"

View File

@ -3,13 +3,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/refresh_item"
android:title="@string/refresh_label"
android:menuCategory="container"
custom:showAsAction="ifRoom|collapseActionView"
android:icon="?attr/navigation_refresh"/>
<item
android:id="@+id/mark_all_read_item"
android:title="@string/mark_all_read_label"
@ -17,6 +10,13 @@
custom:showAsAction="ifRoom|collapseActionView"
android:icon="?attr/navigation_accept"/>
<item
android:id="@+id/refresh_item"
android:title="@string/refresh_label"
android:menuCategory="container"
custom:showAsAction="ifRoom|collapseActionView"
android:icon="?attr/navigation_refresh"/>
<item
android:id="@+id/episode_filter_item"
android:title="@string/episode_filter_label"

View File

@ -28,6 +28,9 @@
<color name="status_playing">#E0EE5F52</color>
<color name="overlay_dark">#262C31</color>
<color name="overlay_light">#DDDDDD</color>
<color name="swipe_refresh_secondary_color_light">#EDEDED</color>
<color name="swipe_refresh_secondary_color_dark">#060708</color>
<!-- Use Gingerbread-orange -->
<color name="selection_background_color_dark">#FEBB20</color>

View File

@ -7,6 +7,7 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
import android.view.*;
@ -25,6 +26,7 @@ import de.danoeh.antennapod.feed.EventDistributor;
import de.danoeh.antennapod.feed.Feed;
import de.danoeh.antennapod.feed.FeedItem;
import de.danoeh.antennapod.feed.FeedMedia;
import de.danoeh.antennapod.preferences.UserPreferences;
import de.danoeh.antennapod.service.download.DownloadService;
import de.danoeh.antennapod.service.download.Downloader;
import de.danoeh.antennapod.storage.DBReader;
@ -53,6 +55,7 @@ public class NewEpisodesFragment extends Fragment {
private DragSortListView listView;
private SwipeRefreshLayout swipeRefreshLayout;
private NewEpisodesListAdapter listAdapter;
private TextView txtvEmpty;
private ProgressBar progLoading;
@ -198,6 +201,8 @@ public class NewEpisodesFragment extends Fragment {
((MainActivity) getActivity()).getSupportActionBar().setTitle(R.string.all_episodes_label);
View root = inflater.inflate(R.layout.new_episodes_fragment, container, false);
swipeRefreshLayout = (SwipeRefreshLayout) root.findViewById(R.id.swipeRefreshLayout);
listView = (DragSortListView) root.findViewById(android.R.id.list);
txtvEmpty = (TextView) root.findViewById(android.R.id.empty);
progLoading = (ProgressBar) root.findViewById(R.id.progLoading);
@ -214,6 +219,18 @@ public class NewEpisodesFragment extends Fragment {
}
});
final int secondColor = (UserPreferences.getTheme() == R.style.Theme_AntennaPod_Dark) ? R.color.swipe_refresh_secondary_color_dark : R.color.swipe_refresh_secondary_color_light;
swipeRefreshLayout.setColorScheme(R.color.bright_blue, secondColor, R.color.bright_blue, secondColor);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
List<Feed> feeds = ((MainActivity) getActivity()).getFeeds();
if (feeds != null) {
DBTasks.refreshAllFeeds(getActivity(), feeds);
}
}
});
if (!itemsLoaded) {
progLoading.setVisibility(View.VISIBLE);
txtvEmpty.setVisibility(View.GONE);
@ -310,16 +327,21 @@ public class NewEpisodesFragment extends Fragment {
};
private void updateProgressBarVisibility() {
if (!viewsCreated) {
return;
}
if (DownloadService.isRunning
&& DownloadRequester.getInstance().isDownloadingFeeds()) {
((ActionBarActivity) getActivity())
.setSupportProgressBarIndeterminateVisibility(true);
swipeRefreshLayout.setRefreshing(true);
} else {
swipeRefreshLayout.setRefreshing(false);
// if case other fragments have set this to true, this fragment should remove the progress indicator
((ActionBarActivity) getActivity())
.setSupportProgressBarIndeterminateVisibility(false);
}
getActivity().supportInvalidateOptionsMenu();
}
private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {