package com.thankcreate.care.rss;
import org.mcsoxford.rss.RSSFeed;
import org.mcsoxford.rss.RSSReader;
import org.mcsoxford.rss.RSSReaderException;
import com.markupartist.android.widget.ActionBar;
import com.thankcreate.care.App;
import com.thankcreate.care.AppConstants;
import com.thankcreate.care.BaseActivity;
import com.thankcreate.care.R;
import com.thankcreate.care.R.layout;
import com.thankcreate.care.R.menu;
import com.thankcreate.care.tool.misc.PreferenceHelper;
import com.thankcreate.care.tool.misc.StringTool;
import com.thankcreate.care.tool.ui.ToastHelper;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.DialogInterface.OnKeyListener;
import android.content.SharedPreferences.Editor;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class RssSetActivity extends BaseActivity {
private ActionBar actionBar;
private RelativeLayout layoutConfirm;
private EditText textInput;
private TextView textSiteName;
private TextView textDescription;
private ProgressDialog mSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rss_set);
initActionBar();
initControl();
initInformation();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_rss_set, menu);
return false;
}
private void initActionBar()
{
actionBar = (ActionBar) findViewById(R.id.actionbar);
actionBar.setTitle("RSS订阅");
actionBar.SetTitleLogo(R.drawable.tab_account);
addActionBarBackButton(actionBar);
}
private void initControl()
{
layoutConfirm = (RelativeLayout) findViewById(R.id.rss_confirm);
layoutConfirm.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
confirmClicked();
}
});
textInput = (EditText) findViewById(R.id.rss_input);
textSiteName = (TextView) findViewById(R.id.rss_title);
textDescription = (TextView) findViewById(R.id.rss_description);
mSpinner = new ProgressDialog(RssSetActivity.this);
mSpinner.requestWindowFeature(Window.FEATURE_NO_TITLE);
mSpinner.setMessage("Loading...");
mSpinner.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
mSpinner.dismiss();
return false;
}
});
}
private void initInformation()
{
SharedPreferences pref = App.getAppContext().getSharedPreferences(
AppConstants.PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
String url = pref.getString("RSS_FollowerPath", "");
String title = pref.getString("RSS_FollowerSiteTitle", "");
String description= pref.getString("RSS_FollowerDescription", "");
textInput.setText(url);
textInput.setSelection(0);
textInput.clearFocus();
textSiteName.setText(title);
textDescription.setText(description);
}
private void confirmClicked()
{
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(textInput.getWindowToken(), 0);
String url = textInput.getText().toString();
if(StringTool.isNullOrEmpty(url))
{
ToastHelper.show("据说要智商超过250才能看到大王您写的字么?", true);
return;
}
final String fullURL;
if(!url.startsWith("http"))
{
fullURL = "http://" + url;
}
else {
fullURL = url;
}
mSpinner.show();
new Thread(new Runnable() {
@Override
public void run() {
RSSReader rssReader = new RSSReader();
try {
final RSSFeed rssFeed = rssReader.load(fullURL);
// 即使输入的是一个非rss的地址,有时也会不报异常,所以要判断getItems有没有值
if(rssFeed.getItems() == null || rssFeed.getItems().size() == 0)
{
ToastHelper.show("输入地址无效,或者当前网络连接不可用", true);
actionBar.post(new Runnable() {
@Override
public void run() {
mSpinner.dismiss();
}
});
return;
}
textDescription.post(new Runnable() {
@Override
public void run() {
textDescription.setText(rssFeed.getDescription());
textSiteName.setText(rssFeed.getTitle());
textInput.setText(fullURL);
}
});
SharedPreferences pref = App.getAppContext().getSharedPreferences(
AppConstants.PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
editor.putString("RSS_FollowerPath", fullURL);
editor.putString("RSS_FollowerSiteTitle", rssFeed.getTitle());
editor.putString("RSS_FollowerDescription", rssFeed.getDescription());
editor.commit();
App.mainViewModel.isChanged = true;
} catch (Exception e) {
ToastHelper.show("输入地址无效,或者当前网络连接不可用", true);
}
actionBar.post(new Runnable() {
@Override
public void run() {
mSpinner.dismiss();
}
});
}
}).start();
}
}