mirror of
https://github.com/AntennaPod/AntennaPod.git
synced 2025-12-01 12:31:45 +00:00
180 lines
4.9 KiB
Java
180 lines
4.9 KiB
Java
package de.podfetcher.fragment;
|
|
|
|
import de.podfetcher.R;
|
|
import de.podfetcher.feed.*;
|
|
import de.podfetcher.activity.*;
|
|
import de.podfetcher.adapter.FeedlistAdapter;
|
|
import de.podfetcher.asynctask.FeedRemover;
|
|
import de.podfetcher.storage.DownloadRequester;
|
|
import de.podfetcher.service.DownloadService;
|
|
import de.podfetcher.util.FeedMenuHandler;
|
|
import android.os.Bundle;
|
|
import android.app.Activity;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.view.LayoutInflater;
|
|
import android.content.Intent;
|
|
import android.content.IntentFilter;
|
|
import android.content.BroadcastReceiver;
|
|
import android.content.Context;
|
|
import android.widget.AdapterView;
|
|
import android.widget.AdapterView.OnItemLongClickListener;
|
|
import android.widget.ListView;
|
|
import com.actionbarsherlock.app.SherlockListFragment;
|
|
import com.actionbarsherlock.app.SherlockFragmentActivity;
|
|
import com.actionbarsherlock.view.ActionMode;
|
|
import com.actionbarsherlock.view.Menu;
|
|
import com.actionbarsherlock.view.MenuInflater;
|
|
import com.actionbarsherlock.view.MenuItem;
|
|
import android.util.Log;
|
|
|
|
public class FeedlistFragment extends SherlockListFragment {
|
|
private static final String TAG = "FeedlistFragment";
|
|
public static final String EXTRA_SELECTED_FEED = "extra.de.podfetcher.activity.selected_feed";
|
|
|
|
private FeedManager manager;
|
|
private FeedlistAdapter fla;
|
|
private SherlockFragmentActivity pActivity;
|
|
|
|
private Feed selectedFeed;
|
|
private ActionMode mActionMode;
|
|
|
|
@Override
|
|
public void onAttach(Activity activity) {
|
|
super.onAttach(activity);
|
|
pActivity = (SherlockFragmentActivity) activity;
|
|
}
|
|
|
|
@Override
|
|
public void onDetach() {
|
|
super.onDetach();
|
|
pActivity = null;
|
|
}
|
|
|
|
@Override
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
Log.d(TAG, "Creating");
|
|
manager = FeedManager.getInstance();
|
|
fla = new FeedlistAdapter(pActivity, 0, manager.getFeeds());
|
|
setListAdapter(fla);
|
|
|
|
}
|
|
|
|
@Override
|
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
|
Bundle savedInstanceState) {
|
|
super.onCreateView(inflater, container, savedInstanceState);
|
|
return inflater.inflate(R.layout.feedlist, container, false);
|
|
|
|
}
|
|
|
|
@Override
|
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
|
super.onViewCreated(view, savedInstanceState);
|
|
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
|
|
|
|
@Override
|
|
public boolean onItemLongClick(AdapterView<?> parent, View view,
|
|
int position, long id) {
|
|
Feed selection = fla.getItem(position);
|
|
Log.d(TAG, "Selected Feed with title " + selection.getTitle());
|
|
if (selection != null) {
|
|
if (mActionMode != null) {
|
|
mActionMode.finish();
|
|
}
|
|
selectedFeed = selection;
|
|
mActionMode = getSherlockActivity().startActionMode(
|
|
mActionModeCallback);
|
|
|
|
}
|
|
return true;
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void onResume() {
|
|
super.onResume();
|
|
IntentFilter filter = new IntentFilter();
|
|
filter.addAction(DownloadService.ACTION_DOWNLOAD_HANDLED);
|
|
filter.addAction(DownloadService.ACTION_FEED_SYNC_COMPLETED);
|
|
filter.addAction(DownloadRequester.ACTION_DOWNLOAD_QUEUED);
|
|
|
|
pActivity.registerReceiver(contentUpdate, filter);
|
|
fla.notifyDataSetChanged();
|
|
}
|
|
|
|
@Override
|
|
public void onPause() {
|
|
super.onPause();
|
|
pActivity.unregisterReceiver(contentUpdate);
|
|
if (mActionMode != null) {
|
|
mActionMode.finish();
|
|
}
|
|
}
|
|
|
|
private BroadcastReceiver contentUpdate = new BroadcastReceiver() {
|
|
@Override
|
|
public void onReceive(Context context, Intent intent) {
|
|
Log.d(TAG, "Received contentUpdate Intent.");
|
|
fla.notifyDataSetChanged();
|
|
}
|
|
};
|
|
|
|
@Override
|
|
public void onListItemClick(ListView l, View v, int position, long id) {
|
|
Feed selection = fla.getItem(position);
|
|
Intent showFeed = new Intent(pActivity, FeedItemlistActivity.class);
|
|
showFeed.putExtra(EXTRA_SELECTED_FEED, selection.getId());
|
|
|
|
pActivity.startActivity(showFeed);
|
|
}
|
|
|
|
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
|
|
|
|
@Override
|
|
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
|
FeedMenuHandler.onCreateOptionsMenu(mode.getMenuInflater(), menu);
|
|
mode.setTitle(selectedFeed.getTitle());
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
|
if (FeedMenuHandler.onOptionsItemClicked(getSherlockActivity(),
|
|
item, selectedFeed)) {
|
|
fla.notifyDataSetChanged();
|
|
} else {
|
|
switch (item.getItemId()) {
|
|
case R.id.remove_item:
|
|
FeedRemover remover = new FeedRemover(getSherlockActivity()) {
|
|
@Override
|
|
protected void onPostExecute(Void result) {
|
|
super.onPostExecute(result);
|
|
fla.notifyDataSetChanged();
|
|
}
|
|
};
|
|
remover.execute(selectedFeed);
|
|
break;
|
|
}
|
|
}
|
|
mode.finish();
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void onDestroyActionMode(ActionMode mode) {
|
|
mActionMode = null;
|
|
selectedFeed = null;
|
|
|
|
}
|
|
};
|
|
}
|