package info.guardianproject.securereaderinterface;
import info.guardianproject.securereader.FeedFetcher.FeedFetchedCallback;
import info.guardianproject.securereaderinterface.adapters.FeedListAdapter;
import info.guardianproject.securereaderinterface.adapters.FeedListAdapter.FeedListAdapterListener;
import info.guardianproject.securereaderinterface.uiutil.HttpTextWatcher;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.ResultReceiver;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import info.guardianproject.securereaderinterface.R;
import com.tinymission.rss.Feed;
public class AddFeedFragment extends Fragment implements FeedListAdapterListener, FeedFetchedCallback
{
private ListView mListFeeds;
private EditText mEditManualUrl;
private Button mBtnAddManualUrl;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.add_feed_fragment, container, false);
mListFeeds = (ListView) rootView.findViewById(R.id.listFeeds);
mBtnAddManualUrl = (Button) rootView.findViewById(R.id.btnAddManualUrl);
mBtnAddManualUrl.setEnabled(false);
mBtnAddManualUrl.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
Handler threadHandler = new Handler();
if (!imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS, new ResultReceiver(threadHandler)
{
@Override
protected void onReceiveResult(int resultCode, Bundle resultData)
{
super.onReceiveResult(resultCode, resultData);
doAddFeed();
}
}))
{
doAddFeed(); // Keyboard not open
}
}
});
mEditManualUrl = (EditText) rootView.findViewById(R.id.editManualUrl);
mEditManualUrl.addTextChangedListener(new HttpTextWatcher(rootView.getContext(), mBtnAddManualUrl));
Intent intent = getActivity().getIntent();
String action = intent.getAction();
if (Intent.ACTION_VIEW.equals(action) && intent.getData() != null)
{
mEditManualUrl.setText(intent.getData().toString());
}
return rootView;
}
private void doAddFeed()
{
App.getInstance().socialReader.addFeedByURL(mEditManualUrl.getText().toString(), AddFeedFragment.this);
updateList();
mEditManualUrl.setText("");
}
@Override
public void onResume()
{
super.onResume();
updateList();
}
private void updateList()
{
ArrayList<Feed> feeds = App.getInstance().socialReader.getFeedsList();
mListFeeds.setAdapter(new FeedListAdapter(mListFeeds.getContext(), this, feeds));
}
@Override
public void addFeed(Feed feed)
{
App.getInstance().socialReader.subscribeFeed(feed);
((FeedListAdapter) mListFeeds.getAdapter()).notifyDataSetChanged();
}
@Override
public void removeFeed(Feed feed)
{
App.getInstance().socialReader.unsubscribeFeed(feed);
((FeedListAdapter) mListFeeds.getAdapter()).notifyDataSetChanged();
}
@Override
public void deleteFeed(Feed feed)
{
App.getInstance().socialReader.removeFeed(feed);
updateList();
}
@Override
public void feedFetched(Feed _feed)
{
// We have now downloaded information about manually added feed, so
// update list!
Log.v("AddFeedFragment", "Feed " + _feed.getFeedURL() + " loaded, update list");
App.getInstance().socialReader.subscribeFeed(_feed);
updateList();
}
}