diff options
Diffstat (limited to 'src/org/fox/ttrss/share/SubscribeActivity.java')
| -rw-r--r-- | src/org/fox/ttrss/share/SubscribeActivity.java | 321 |
1 files changed, 0 insertions, 321 deletions
diff --git a/src/org/fox/ttrss/share/SubscribeActivity.java b/src/org/fox/ttrss/share/SubscribeActivity.java deleted file mode 100644 index bd7e964f..00000000 --- a/src/org/fox/ttrss/share/SubscribeActivity.java +++ /dev/null @@ -1,321 +0,0 @@ -package org.fox.ttrss.share; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; - -import org.fox.ttrss.ApiRequest; -import org.fox.ttrss.R; -import org.fox.ttrss.types.FeedCategory; -import org.fox.ttrss.types.FeedCategoryList; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.util.Log; -import android.view.View; -import android.view.Window; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.EditText; -import android.widget.Spinner; - -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.reflect.TypeToken; - -public class SubscribeActivity extends CommonShareActivity { - private final String TAG = this.getClass().getSimpleName(); - - private Button m_postButton; - private Button m_catButton; - private CatListAdapter m_adapter; - private FeedCategoryList m_cats = new FeedCategoryList(); - - private static final int REQ_CATS = 1; - private static final int REQ_POST = 2; - - class CatTitleComparator implements Comparator<FeedCategory> { - - @Override - public int compare(FeedCategory a, FeedCategory b) { - if (a.id >= 0 && b.id >= 0) - return a.title.compareTo(b.title); - else - return a.id - b.id; - } - - } - - public void sortCats() { - Comparator<FeedCategory> cmp = new CatTitleComparator(); - - Collections.sort(m_cats, cmp); - try { - m_adapter.notifyDataSetChanged(); - } catch (NullPointerException e) { - // adapter missing - } - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - requestWindowFeature(Window.FEATURE_LEFT_ICON); - - String urlValue = getIntent().getDataString(); - - if (urlValue == null) - urlValue = getIntent().getStringExtra(Intent.EXTRA_TEXT); - - if (savedInstanceState != null) { - urlValue = savedInstanceState.getString("url"); - - ArrayList<FeedCategory> list = savedInstanceState.getParcelableArrayList("cats"); - - for (FeedCategory c : list) - m_cats.add(c); - } - - setContentView(R.layout.subscribe); - - getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.icon); - - setSmallScreen(false); - - Spinner catList = (Spinner) findViewById(R.id.category_spinner); - - if (m_cats.size() == 0) m_cats.add(new FeedCategory(0, "Uncategorized", 0)); - - m_adapter = new CatListAdapter(this, android.R.layout.simple_spinner_dropdown_item, m_cats); - catList.setAdapter(m_adapter); - - EditText feedUrl = (EditText) findViewById(R.id.feed_url); - feedUrl.setText(urlValue); - - m_postButton = (Button) findViewById(R.id.subscribe_button); - - m_postButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - login(REQ_POST); - } - }); - - m_catButton = (Button) findViewById(R.id.cats_button); - - m_catButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - login(REQ_CATS); - } - }); - - login(REQ_CATS); - } - - @Override - public void onSaveInstanceState(Bundle out) { - super.onSaveInstanceState(out); - - EditText url = (EditText) findViewById(R.id.url); - - if (url != null) { - out.putString("url", url.getText().toString()); - } - - out.putParcelableArrayList("cats", m_cats); - - } - - private void subscribeToFeed() { - m_postButton.setEnabled(false); - - ApiRequest req = new ApiRequest(getApplicationContext()) { - protected void onPostExecute(JsonElement result) { - setProgressBarIndeterminateVisibility(false); - - if (m_lastError != ApiError.NO_ERROR) { - toast(getErrorMessage()); - } else { - try { - int rc = -1; - - try { - rc = result.getAsJsonObject().get("status").getAsJsonObject().get("code").getAsInt(); - } catch (Exception e) { - e.printStackTrace(); - } - - switch (rc) { - case -1: - toast(R.string.error_api_unknown); - //finish(); - break; - case 0: - toast(R.string.error_feed_already_exists_); - //finish(); - break; - case 1: - toast(R.string.subscribed_to_feed); - finish(); - break; - case 2: - toast(R.string.error_invalid_url); - break; - case 3: - toast(R.string.error_url_is_an_html_page_no_feeds_found); - break; - case 4: - toast(R.string.error_url_contains_multiple_feeds); - break; - case 5: - toast(R.string.error_could_not_download_url); - break; - } - - } catch (Exception e) { - toast(R.string.error_while_subscribing); - e.printStackTrace(); - } - } - - m_postButton.setEnabled(true); - } - }; - - Spinner catSpinner = (Spinner) findViewById(R.id.category_spinner); - - final FeedCategory cat = (FeedCategory) m_adapter.getCategory(catSpinner.getSelectedItemPosition()); - final EditText feedUrl = (EditText) findViewById(R.id.feed_url); - - if (feedUrl != null ) { - HashMap<String, String> map = new HashMap<String, String>() { - { - put("sid", m_sessionId); - put("op", "subscribeToFeed"); - put("feed_url", feedUrl.getText().toString()); - - if (cat != null) { - put("category_id", String.valueOf(cat.id)); - } - } - }; - - setProgressBarIndeterminateVisibility(true); - - req.execute(map); - } - } - - @Override - public void onLoggingIn(int requestId) { - switch (requestId) { - case REQ_CATS: - m_catButton.setEnabled(false); - break; - case REQ_POST: - m_postButton.setEnabled(false); - break; - } - } - - private void updateCats() { - ApiRequest req = new ApiRequest(getApplicationContext()) { - protected void onPostExecute(JsonElement result) { - setProgressBarIndeterminateVisibility(false); - - if (m_lastError != ApiError.NO_ERROR) { - toast(getErrorMessage()); - } else { - JsonArray content = result.getAsJsonArray(); - - if (content != null) { - Type listType = new TypeToken<List<FeedCategory>>() {}.getType(); - final List<FeedCategory> cats = new Gson().fromJson(content, listType); - - m_cats.clear(); - - for (FeedCategory c : cats) { - if (c.id > 0) - m_cats.add(c); - } - - sortCats(); - - m_cats.add(0, new FeedCategory(0, "Uncategorized", 0)); - - m_adapter.notifyDataSetChanged(); - - toast(R.string.category_list_updated); - } - } - - m_catButton.setEnabled(true); - } - }; - - HashMap<String, String> map = new HashMap<String, String>() { - { - put("sid", m_sessionId); - put("op", "getCategories"); - } - }; - - setProgressBarIndeterminateVisibility(true); - - req.execute(map); - } - - @Override - protected void onLoggedIn(int requestId) { - switch (requestId) { - case REQ_CATS: - updateCats(); - break; - case REQ_POST: - m_postButton.setEnabled(true); - if (m_apiLevel < 5) { - toast(R.string.api_too_low); - } else { - subscribeToFeed(); - } - break; - } - } - - private class CatListAdapter extends ArrayAdapter<String> { - private List<FeedCategory> m_items; - - public CatListAdapter(Context context, int resource, - List<FeedCategory> items) { - super(context, resource); - - m_items = items; - } - - @Override - public String getItem(int item) { - return m_items.get(item).title; - } - - public FeedCategory getCategory(int item) { - try { - return m_items.get(item); - } catch (ArrayIndexOutOfBoundsException e) { - return null; - } - } - - @Override - public int getCount() { - return m_items.size(); - } - } - -} |