From ced80be1aea975b59db5a0e6dd14acb054e7910e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 16 Sep 2012 13:25:28 +0400 Subject: initial --- src/org/fox/ttrss/CommonActivity.java | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/org/fox/ttrss/CommonActivity.java') diff --git a/src/org/fox/ttrss/CommonActivity.java b/src/org/fox/ttrss/CommonActivity.java index d88775b3..9f67e49d 100644 --- a/src/org/fox/ttrss/CommonActivity.java +++ b/src/org/fox/ttrss/CommonActivity.java @@ -9,6 +9,7 @@ import android.util.DisplayMetrics; import android.util.FloatMath; import android.util.Log; import android.view.Display; +import android.widget.TextView; import android.widget.Toast; public class CommonActivity extends FragmentActivity { @@ -31,6 +32,16 @@ public class CommonActivity extends FragmentActivity { m_smallScreenMode = smallScreen; } + protected void setLoadingStatus(int status, boolean showProgress) { + TextView tv = (TextView) findViewById(R.id.loading_message); + + if (tv != null) { + tv.setText(status); + } + + setProgressBarIndeterminateVisibility(showProgress); + } + public void toast(int msgId) { Toast toast = Toast.makeText(CommonActivity.this, msgId, Toast.LENGTH_SHORT); toast.show(); -- cgit v1.2.3-54-g00ecf From 219531f1384f18ac04c6a61a940329580d02863e Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 17 Sep 2012 13:27:27 +0400 Subject: implement background loading in ArticlePager various loading and state related fixes --- src/org/fox/ttrss/ArticlePager.java | 73 +++++++- src/org/fox/ttrss/CommonActivity.java | 2 +- src/org/fox/ttrss/FeedsActivity.java | 81 +++++---- src/org/fox/ttrss/HeadlinesActivity.java | 4 + src/org/fox/ttrss/HeadlinesFragment.java | 26 ++- src/org/fox/ttrss/OnlineActivity.java | 2 +- src/org/fox/ttrss/util/ApiRequest.java | 257 --------------------------- src/org/fox/ttrss/util/HeadlinesRequest.java | 85 +++++++++ 8 files changed, 221 insertions(+), 309 deletions(-) delete mode 100644 src/org/fox/ttrss/util/ApiRequest.java create mode 100644 src/org/fox/ttrss/util/HeadlinesRequest.java (limited to 'src/org/fox/ttrss/CommonActivity.java') diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java index f9f7b1bd..a7ecaaa5 100644 --- a/src/org/fox/ttrss/ArticlePager.java +++ b/src/org/fox/ttrss/ArticlePager.java @@ -1,7 +1,13 @@ package org.fox.ttrss; +import java.util.HashMap; + import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; +import org.fox.ttrss.types.Feed; +import org.fox.ttrss.util.HeadlinesRequest; + +import com.google.gson.JsonElement; import android.app.Activity; import android.os.Bundle; @@ -9,6 +15,7 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -20,6 +27,8 @@ public class ArticlePager extends Fragment { private HeadlinesEventListener m_onlineServices; private Article m_article; private ArticleList m_articles; + private OnlineActivity m_activity; + private String m_searchQuery = ""; private class PagerAdapter extends FragmentStatePagerAdapter { @@ -54,6 +63,10 @@ public class ArticlePager extends Fragment { m_article = article; } + + public void setSearchQuery(String searchQuery) { + m_searchQuery = searchQuery; + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -98,9 +111,8 @@ public class ArticlePager extends Fragment { //Log.d(TAG, "Page #" + position + "/" + m_adapter.getCount()); if (position == m_adapter.getCount() - 5) { - // FIXME load more articles somehow - //m_hf.refresh(true); - m_adapter.notifyDataSetChanged(); + Log.d(TAG, "loading more articles..."); + loadMoreArticles(); } } } @@ -109,6 +121,58 @@ public class ArticlePager extends Fragment { return view; } + @SuppressWarnings({ "unchecked", "serial" }) + private void loadMoreArticles() { + m_activity.setLoadingStatus(R.string.blank, true); + + HeadlinesRequest req = new HeadlinesRequest(getActivity().getApplicationContext(), m_activity) { + protected void onPostExecute(JsonElement result) { + super.onPostExecute(result); + m_adapter.notifyDataSetChanged(); + } + }; + + final Feed feed = TinyApplication.getInstance().m_activeFeed; + + final String sessionId = m_activity.getSessionId(); + final boolean showUnread = m_activity.getUnreadArticlesOnly(); + int skip = 0; + + for (Article a : m_articles) { + if (a.unread) ++skip; + } + + if (skip == 0) skip = m_articles.size(); + + final int fskip = skip; + + req.setOffset(skip); + + HashMap map = new HashMap() { + { + put("op", "getHeadlines"); + put("sid", sessionId); + put("feed_id", String.valueOf(feed.id)); + put("show_content", "true"); + put("include_attachments", "true"); + put("limit", String.valueOf(HeadlinesFragment.HEADLINES_REQUEST_SIZE)); + put("offset", String.valueOf(0)); + put("view_mode", showUnread ? "adaptive" : "all_articles"); + put("skip", String.valueOf(fskip)); + + if (feed.is_cat) put("is_cat", "true"); + + if (m_searchQuery != null && m_searchQuery.length() != 0) { + put("search", m_searchQuery); + put("search_mode", ""); + put("match_on", "both"); + } + } + }; + + req.execute(map); + } + @Override public void onSaveInstanceState(Bundle out) { super.onSaveInstanceState(out); @@ -122,6 +186,7 @@ public class ArticlePager extends Fragment { super.onAttach(activity); m_onlineServices = (HeadlinesEventListener)activity; + m_activity = (OnlineActivity)activity; m_articles = TinyApplication.getInstance().m_loadedArticles; } @@ -130,7 +195,7 @@ public class ArticlePager extends Fragment { public void onResume() { super.onResume(); - ((OnlineActivity)getActivity()).initMenu(); + m_activity.initMenu(); } public Article getSelectedArticle() { diff --git a/src/org/fox/ttrss/CommonActivity.java b/src/org/fox/ttrss/CommonActivity.java index 9f67e49d..d9359b24 100644 --- a/src/org/fox/ttrss/CommonActivity.java +++ b/src/org/fox/ttrss/CommonActivity.java @@ -32,7 +32,7 @@ public class CommonActivity extends FragmentActivity { m_smallScreenMode = smallScreen; } - protected void setLoadingStatus(int status, boolean showProgress) { + public void setLoadingStatus(int status, boolean showProgress) { TextView tv = (TextView) findViewById(R.id.loading_message); if (tv != null) { diff --git a/src/org/fox/ttrss/FeedsActivity.java b/src/org/fox/ttrss/FeedsActivity.java index 291ff59e..72ca5bff 100644 --- a/src/org/fox/ttrss/FeedsActivity.java +++ b/src/org/fox/ttrss/FeedsActivity.java @@ -45,50 +45,55 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe Intent intent = getIntent(); - if (intent.getParcelableExtra("feed") != null || intent.getParcelableExtra("category") != null || - intent.getParcelableExtra("article") != null) { - - Feed feed = (Feed) intent.getParcelableExtra("feed"); - FeedCategory cat = (FeedCategory) intent.getParcelableExtra("category"); - Article article = (Article) intent.getParcelableExtra("article"); - - FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - - if (feed != null) { - HeadlinesFragment hf = new HeadlinesFragment(feed); - ft.replace(R.id.feeds_fragment, hf, FRAG_HEADLINES); - - setTitle(feed.title); - } + if (savedInstanceState == null) { - if (cat != null) { - FeedsFragment ff = new FeedsFragment(cat); - ft.replace(R.id.feeds_fragment, ff, FRAG_FEEDS); - - setTitle(cat.title); - } + if (intent.getParcelableExtra("feed") != null || intent.getParcelableExtra("category") != null || + intent.getParcelableExtra("article") != null) { - if (article != null) { - Article original = TinyApplication.getInstance().m_loadedArticles.findById(article.id); + Feed feed = (Feed) intent.getParcelableExtra("feed"); + FeedCategory cat = (FeedCategory) intent.getParcelableExtra("category"); + Article article = (Article) intent.getParcelableExtra("article"); + + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + + if (feed != null) { + HeadlinesFragment hf = new HeadlinesFragment(feed); + ft.replace(R.id.feeds_fragment, hf, FRAG_HEADLINES); + + setTitle(feed.title); + } - ArticlePager ap = new ArticlePager(original != null ? original : article); - ft.replace(R.id.feeds_fragment, ap, FRAG_ARTICLE); + if (cat != null) { + FeedsFragment ff = new FeedsFragment(cat); + ft.replace(R.id.feeds_fragment, ff, FRAG_FEEDS); + + setTitle(cat.title); + } - setTitle(intent.getStringExtra("feedTitle")); - } - - ft.commit(); + if (article != null) { + Article original = TinyApplication.getInstance().m_loadedArticles.findById(article.id); + + ArticlePager ap = new ArticlePager(original != null ? original : article); + ft.replace(R.id.feeds_fragment, ap, FRAG_ARTICLE); + + ap.setSearchQuery(intent.getStringExtra("searchQuery")); + + setTitle(intent.getStringExtra("feedTitle")); + } + + ft.commit(); - } else if (savedInstanceState == null) { - FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + } else { + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); - if (m_prefs.getBoolean("enable_cats", false)) { - ft.replace(R.id.feeds_fragment, new FeedCategoriesFragment(), FRAG_CATS); - } else { - ft.replace(R.id.feeds_fragment, new FeedsFragment(), FRAG_FEEDS); + if (m_prefs.getBoolean("enable_cats", false)) { + ft.replace(R.id.feeds_fragment, new FeedCategoriesFragment(), FRAG_CATS); + } else { + ft.replace(R.id.feeds_fragment, new FeedsFragment(), FRAG_FEEDS); + } + + ft.commit(); } - - ft.commit(); } } @@ -257,6 +262,7 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe intent.putExtra("feedTitle", hf.getFeed().title); intent.putExtra("article", article); + intent.putExtra("searchQuery", hf.getSearchQuery()); startActivityForResult(intent, 0); @@ -268,6 +274,7 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe intent.putExtra("feed", hf.getFeed()); intent.putExtra("article", article); + intent.putExtra("searchQuery", hf.getSearchQuery()); startActivityForResult(intent, 0); } diff --git a/src/org/fox/ttrss/HeadlinesActivity.java b/src/org/fox/ttrss/HeadlinesActivity.java index 0cd18cc5..2d7a6a3a 100644 --- a/src/org/fox/ttrss/HeadlinesActivity.java +++ b/src/org/fox/ttrss/HeadlinesActivity.java @@ -50,10 +50,14 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL if (i.getExtras() != null) { Feed feed = i.getParcelableExtra("feed"); Article article = i.getParcelableExtra("article"); + String searchQuery = i.getStringExtra("searchQuery"); HeadlinesFragment hf = new HeadlinesFragment(feed, article); ArticlePager af = new ArticlePager(hf.getArticleById(article.id)); + hf.setSearchQuery(searchQuery); + af.setSearchQuery(searchQuery); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.headlines_fragment, hf, FRAG_HEADLINES); diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java index 986581fb..031321eb 100644 --- a/src/org/fox/ttrss/HeadlinesFragment.java +++ b/src/org/fox/ttrss/HeadlinesFragment.java @@ -15,6 +15,7 @@ import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; import org.fox.ttrss.types.Attachment; import org.fox.ttrss.types.Feed; +import org.fox.ttrss.util.HeadlinesRequest; import org.jsoup.Jsoup; import android.app.Activity; @@ -67,10 +68,9 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, private Feed m_feed; private Article m_activeArticle; - private boolean m_refreshInProgress = false; - private boolean m_canLoadMore = false; private boolean m_combinedMode = true; private String m_searchQuery = ""; + private boolean m_refreshInProgress = false; private SharedPreferences m_prefs; @@ -268,7 +268,6 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, //m_articles = savedInstanceState.getParcelable("articles"); m_activeArticle = savedInstanceState.getParcelable("activeArticle"); m_selectedArticles = savedInstanceState.getParcelable("selectedArticles"); - m_canLoadMore = savedInstanceState.getBoolean("canLoadMore"); m_combinedMode = savedInstanceState.getBoolean("combinedMode"); m_searchQuery = (String) savedInstanceState.getCharSequence("searchQuery"); } @@ -355,7 +354,13 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, public void refresh(boolean append) { m_refreshInProgress = true; - HeadlinesRequest req = new HeadlinesRequest(getActivity().getApplicationContext()); + HeadlinesRequest req = new HeadlinesRequest(getActivity().getApplicationContext(), m_activity) { + protected void onPostExecute(JsonElement result) { + super.onPostExecute(result); + m_refreshInProgress = false; + m_adapter.notifyDataSetChanged(); + } + }; final String sessionId = m_activity.getSessionId(); final boolean showUnread = m_listener.getUnreadArticlesOnly(); @@ -394,7 +399,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, if (isCat) put("is_cat", "true"); - if (m_searchQuery.length() != 0) { + if (m_searchQuery != null && m_searchQuery.length() != 0) { put("search", m_searchQuery); put("search_mode", ""); put("match_on", "both"); @@ -413,7 +418,6 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, //out.putParcelable("articles", m_articles); out.putParcelable("activeArticle", m_activeArticle); out.putParcelable("selectedArticles", m_selectedArticles); - out.putBoolean("canLoadMore", m_canLoadMore); out.putBoolean("combinedMode", m_combinedMode); out.putCharSequence("searchQuery", m_searchQuery); } @@ -431,7 +435,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, getActivity().setProgressBarIndeterminateVisibility(showProgress); } - private class HeadlinesRequest extends ApiRequest { + /* private class HeadlinesRequest extends ApiRequest { int m_offset = 0; public HeadlinesRequest(Context context) { @@ -494,7 +498,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, public void setOffset(int skip) { m_offset = skip; } - } + } */ private class ArticleListAdapter extends ArrayAdapter
{ private ArrayList
items; @@ -842,7 +846,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { - if (!m_refreshInProgress && m_canLoadMore && firstVisibleItem + visibleItemCount == m_articles.size()) { + if (!m_refreshInProgress && m_articles.findById(-1) != null && firstVisibleItem + visibleItemCount == m_articles.size()) { refresh(true); } } @@ -864,6 +868,10 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, } } + public String getSearchQuery() { + return m_searchQuery; + } + public void setSearchQuery(String query) { if (!m_searchQuery.equals(query)) { m_searchQuery = query; diff --git a/src/org/fox/ttrss/OnlineActivity.java b/src/org/fox/ttrss/OnlineActivity.java index d47e11dc..b91a398a 100644 --- a/src/org/fox/ttrss/OnlineActivity.java +++ b/src/org/fox/ttrss/OnlineActivity.java @@ -131,7 +131,7 @@ public class OnlineActivity extends CommonActivity { setContentView(R.layout.online); } - protected void login() { + public void login() { if (m_prefs.getString("ttrss_url", "").trim().length() == 0) { setLoadingStatus(R.string.login_need_configure, false); diff --git a/src/org/fox/ttrss/util/ApiRequest.java b/src/org/fox/ttrss/util/ApiRequest.java deleted file mode 100644 index 56901393..00000000 --- a/src/org/fox/ttrss/util/ApiRequest.java +++ /dev/null @@ -1,257 +0,0 @@ -package org.fox.ttrss.util; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.HashMap; - -import org.apache.http.HttpHost; -import org.apache.http.HttpResponse; -import org.apache.http.auth.AuthScope; -import org.apache.http.auth.UsernamePasswordCredentials; -import org.apache.http.client.CredentialsProvider; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.client.protocol.ClientContext; -import org.apache.http.conn.scheme.Scheme; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.BasicCredentialsProvider; -import org.apache.http.protocol.BasicHttpContext; -import org.apache.http.protocol.HttpContext; -import org.fox.ttrss.R; -import org.fox.ttrss.R.string; - -import android.content.Context; -import android.content.SharedPreferences; -import android.net.http.AndroidHttpClient; -import android.os.AsyncTask; -import android.preference.PreferenceManager; -import android.util.Log; - -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - -public class ApiRequest extends AsyncTask, Integer, JsonElement> { - private final String TAG = this.getClass().getSimpleName(); - - public enum ApiError { NO_ERROR, HTTP_UNAUTHORIZED, HTTP_FORBIDDEN, HTTP_NOT_FOUND, - HTTP_SERVER_ERROR, HTTP_OTHER_ERROR, SSL_REJECTED, PARSE_ERROR, IO_ERROR, OTHER_ERROR, API_DISABLED, API_UNKNOWN, LOGIN_FAILED, INVALID_URL, INCORRECT_USAGE }; - - public static final int API_STATUS_OK = 0; - public static final int API_STATUS_ERR = 1; - - private String m_api; - private boolean m_trustAny = false; - private boolean m_transportDebugging = false; - protected int m_httpStatusCode = 0; - protected int m_apiStatusCode = 0; - protected Context m_context; - private SharedPreferences m_prefs; - - protected ApiError m_lastError; - - public ApiRequest(Context context) { - m_context = context; - - m_prefs = PreferenceManager.getDefaultSharedPreferences(m_context); - - m_api = m_prefs.getString("ttrss_url", null).trim(); - m_trustAny = m_prefs.getBoolean("ssl_trust_any", false); - m_transportDebugging = m_prefs.getBoolean("transport_debugging", false); - m_lastError = ApiError.NO_ERROR; - - } - - protected int getErrorMessage() { - switch (m_lastError) { - case NO_ERROR: - return R.string.error_unknown; - case HTTP_UNAUTHORIZED: - return R.string.error_http_unauthorized; - case HTTP_FORBIDDEN: - return R.string.error_http_forbidden; - case HTTP_NOT_FOUND: - return R.string.error_http_not_found; - case HTTP_SERVER_ERROR: - return R.string.error_http_server_error; - case HTTP_OTHER_ERROR: - return R.string.error_http_other_error; - case SSL_REJECTED: - return R.string.error_ssl_rejected; - case PARSE_ERROR: - return R.string.error_parse_error; - case IO_ERROR: - return R.string.error_io_error; - case OTHER_ERROR: - return R.string.error_other_error; - case API_DISABLED: - return R.string.error_api_disabled; - case API_UNKNOWN: - return R.string.error_api_unknown; - case LOGIN_FAILED: - return R.string.error_login_failed; - case INVALID_URL: - return R.string.error_invalid_api_url; - case INCORRECT_USAGE: - return R.string.error_api_incorrect_usage; - default: - Log.d(TAG, "getErrorMessage: unknown error code=" + m_lastError); - return R.string.error_unknown; - } - } - - @Override - protected JsonElement doInBackground(HashMap... params) { - - Gson gson = new Gson(); - - String requestStr = gson.toJson(new HashMap(params[0])); - - if (m_transportDebugging) Log.d(TAG, ">>> (" + requestStr + ") " + m_api); - - AndroidHttpClient client = AndroidHttpClient.newInstance("Tiny Tiny RSS"); - - if (m_trustAny) { - client.getConnectionManager().getSchemeRegistry().register(new Scheme("https", new EasySSLSocketFactory(), 443)); - } - - try { - - HttpPost httpPost; - - try { - httpPost = new HttpPost(m_api + "/api/"); - } catch (IllegalArgumentException e) { - m_lastError = ApiError.INVALID_URL; - e.printStackTrace(); - client.close(); - return null; - } catch (Exception e) { - m_lastError = ApiError.OTHER_ERROR; - e.printStackTrace(); - client.close(); - return null; - } - - HttpContext context = null; - - String httpLogin = m_prefs.getString("http_login", "").trim(); - String httpPassword = m_prefs.getString("http_password", "").trim(); - - if (httpLogin.length() > 0) { - if (m_transportDebugging) Log.d(TAG, "Using HTTP Basic authentication."); - - URL targetUrl; - try { - targetUrl = new URL(m_api); - } catch (MalformedURLException e) { - m_lastError = ApiError.INVALID_URL; - e.printStackTrace(); - client.close(); - return null; - } - - HttpHost targetHost = new HttpHost(targetUrl.getHost(), targetUrl.getPort(), targetUrl.getProtocol()); - CredentialsProvider cp = new BasicCredentialsProvider(); - context = new BasicHttpContext(); - - cp.setCredentials( - new AuthScope(targetHost.getHostName(), targetHost.getPort()), - new UsernamePasswordCredentials(httpLogin, httpPassword)); - - context.setAttribute(ClientContext.CREDS_PROVIDER, cp); - } - - httpPost.setEntity(new StringEntity(requestStr, "utf-8")); - HttpResponse execute = client.execute(httpPost, context); - - m_httpStatusCode = execute.getStatusLine().getStatusCode(); - - switch (m_httpStatusCode) { - case 200: - InputStream content = execute.getEntity().getContent(); - - BufferedReader buffer = new BufferedReader( - new InputStreamReader(content), 8192); - - String s = ""; - String response = ""; - - while ((s = buffer.readLine()) != null) { - response += s; - } - - if (m_transportDebugging) Log.d(TAG, "<<< " + response); - - JsonParser parser = new JsonParser(); - - JsonElement result = parser.parse(response); - JsonObject resultObj = result.getAsJsonObject(); - - m_apiStatusCode = resultObj.get("status").getAsInt(); - - client.close(); - - switch (m_apiStatusCode) { - case API_STATUS_OK: - return result.getAsJsonObject().get("content"); - case API_STATUS_ERR: - JsonObject contentObj = resultObj.get("content").getAsJsonObject(); - String error = contentObj.get("error").getAsString(); - - if (error.equals("LOGIN_ERROR")) { - m_lastError = ApiError.LOGIN_FAILED; - } else if (error.equals("API_DISABLED")) { - m_lastError = ApiError.API_DISABLED; - } else if (error.equals("NOT_LOGGED_IN")) { - m_lastError = ApiError.LOGIN_FAILED; - } else if (error.equals("INCORRECT_USAGE")) { - m_lastError = ApiError.INCORRECT_USAGE; - } else { - Log.d(TAG, "Unknown API error: " + error); - m_lastError = ApiError.API_UNKNOWN; - } - } - - return null; - case 401: - m_lastError = ApiError.HTTP_UNAUTHORIZED; - break; - case 403: - m_lastError = ApiError.HTTP_FORBIDDEN; - break; - case 404: - m_lastError = ApiError.HTTP_NOT_FOUND; - break; - case 500: - m_lastError = ApiError.HTTP_SERVER_ERROR; - break; - default: - m_lastError = ApiError.HTTP_OTHER_ERROR; - break; - } - - client.close(); - return null; - } catch (javax.net.ssl.SSLPeerUnverifiedException e) { - m_lastError = ApiError.SSL_REJECTED; - e.printStackTrace(); - } catch (IOException e) { - m_lastError = ApiError.IO_ERROR; - e.printStackTrace(); - } catch (com.google.gson.JsonSyntaxException e) { - m_lastError = ApiError.PARSE_ERROR; - e.printStackTrace(); - } catch (Exception e) { - m_lastError = ApiError.OTHER_ERROR; - e.printStackTrace(); - } - - client.close(); - return null; - } -} diff --git a/src/org/fox/ttrss/util/HeadlinesRequest.java b/src/org/fox/ttrss/util/HeadlinesRequest.java new file mode 100644 index 00000000..49b8ec7c --- /dev/null +++ b/src/org/fox/ttrss/util/HeadlinesRequest.java @@ -0,0 +1,85 @@ +package org.fox.ttrss.util; + +import java.lang.reflect.Type; +import java.util.List; + +import org.fox.ttrss.ApiRequest; +import org.fox.ttrss.OnlineActivity; +import org.fox.ttrss.R; +import org.fox.ttrss.TinyApplication; +import org.fox.ttrss.ApiRequest.ApiError; +import org.fox.ttrss.types.Article; +import org.fox.ttrss.types.ArticleList; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.reflect.TypeToken; + +import android.content.Context; +import android.widget.Adapter; +import android.widget.ArrayAdapter; + +public class HeadlinesRequest extends ApiRequest { + public static final int HEADLINES_REQUEST_SIZE = 30; + public static final int HEADLINES_BUFFER_MAX = 500; + + private int m_offset = 0; + private OnlineActivity m_activity; + private ArticleList m_articles = TinyApplication.getInstance().m_loadedArticles; + + public HeadlinesRequest(Context context, OnlineActivity activity) { + super(context); + + m_activity = activity; + } + + protected void onPostExecute(JsonElement result) { + if (result != null) { + try { + JsonArray content = result.getAsJsonArray(); + if (content != null) { + Type listType = new TypeToken>() {}.getType(); + final List
articles = new Gson().fromJson(content, listType); + + while (m_articles.size() > HEADLINES_BUFFER_MAX) + m_articles.remove(0); + + if (m_offset == 0) + m_articles.clear(); + else + if (m_articles.get(m_articles.size()-1).id == -1) + m_articles.remove(m_articles.size()-1); // remove previous placeholder + + for (Article f : articles) + m_articles.add(f); + + if (articles.size() == HEADLINES_REQUEST_SIZE) { + Article placeholder = new Article(-1); + m_articles.add(placeholder); + } + + if (m_articles.size() == 0) + m_activity.setLoadingStatus(R.string.no_headlines_to_display, false); + else + m_activity.setLoadingStatus(R.string.blank, false); + + return; + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + if (m_lastError == ApiError.LOGIN_FAILED) { + m_activity.login(); + } else { + m_activity.setLoadingStatus(getErrorMessage(), false); + } + } + + public void setOffset(int skip) { + m_offset = skip; + } +} -- cgit v1.2.3-54-g00ecf From 797dbe20804d02e4907c7f1cd3d59a7b918851be Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 19 Sep 2012 13:37:12 +0400 Subject: various lint-related stuff --- res/layout-sw600dp/feeds.xml | 1 + res/layout-sw600dp/headlines.xml | 1 + src/org/fox/ttrss/ApiRequest.java | 1 + src/org/fox/ttrss/ArticleFragment.java | 6 ++---- src/org/fox/ttrss/ArticlePager.java | 1 - src/org/fox/ttrss/CommonActivity.java | 5 ++++- src/org/fox/ttrss/FeedCategoriesFragment.java | 1 - src/org/fox/ttrss/FeedsActivity.java | 19 ++++++++++++------- src/org/fox/ttrss/FeedsFragment.java | 1 + src/org/fox/ttrss/GlobalState.java | 2 -- src/org/fox/ttrss/HeadlinesActivity.java | 2 ++ src/org/fox/ttrss/HeadlinesFragment.java | 7 +------ src/org/fox/ttrss/OnlineActivity.java | 16 ++++++++++++---- src/org/fox/ttrss/PreferencesActivity.java | 4 +--- src/org/fox/ttrss/offline/OfflineActivity.java | 11 +++++++---- src/org/fox/ttrss/offline/OfflineArticleFragment.java | 8 ++++---- src/org/fox/ttrss/offline/OfflineDownloadService.java | 5 +++-- .../ttrss/offline/OfflineFeedCategoriesFragment.java | 2 -- src/org/fox/ttrss/offline/OfflineFeedsActivity.java | 3 ++- src/org/fox/ttrss/offline/OfflineFeedsFragment.java | 1 - .../fox/ttrss/offline/OfflineHeadlinesActivity.java | 7 +++---- .../fox/ttrss/offline/OfflineHeadlinesFragment.java | 1 + src/org/fox/ttrss/offline/OfflineUploadService.java | 1 + src/org/fox/ttrss/util/HeadlinesRequest.java | 9 +++------ src/org/fox/ttrss/util/ImageCacheService.java | 2 ++ 25 files changed, 64 insertions(+), 53 deletions(-) (limited to 'src/org/fox/ttrss/CommonActivity.java') diff --git a/res/layout-sw600dp/feeds.xml b/res/layout-sw600dp/feeds.xml index 1bc48b2b..3e75a37c 100644 --- a/res/layout-sw600dp/feeds.xml +++ b/res/layout-sw600dp/feeds.xml @@ -25,6 +25,7 @@ android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" + android:baselineAligned="false" android:orientation="horizontal" > , Integer, JsonE } } + @SuppressWarnings("deprecation") private static void disableConnectionReuseIfNecessary() { // HTTP connection reuse which was buggy pre-froyo if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) { diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java index d001fc8f..54eef0e1 100644 --- a/src/org/fox/ttrss/ArticleFragment.java +++ b/src/org/fox/ttrss/ArticleFragment.java @@ -39,10 +39,8 @@ import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.TextView; -import android.widget.AdapterView.AdapterContextMenuInfo; public class ArticleFragment extends Fragment { - @SuppressWarnings("unused") private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; @@ -65,8 +63,8 @@ public class ArticleFragment extends Fragment { @Override public boolean onContextItemSelected(MenuItem item) { - AdapterContextMenuInfo info = (AdapterContextMenuInfo) item - .getMenuInfo(); + /* AdapterContextMenuInfo info = (AdapterContextMenuInfo) item + .getMenuInfo(); */ switch (item.getItemId()) { case R.id.article_link_share: diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java index bae9d1f3..1f25a546 100644 --- a/src/org/fox/ttrss/ArticlePager.java +++ b/src/org/fox/ttrss/ArticlePager.java @@ -2,7 +2,6 @@ package org.fox.ttrss; import java.util.HashMap; -import org.fox.ttrss.ApiRequest.ApiError; import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; import org.fox.ttrss.types.Feed; diff --git a/src/org/fox/ttrss/CommonActivity.java b/src/org/fox/ttrss/CommonActivity.java index d9359b24..35e8718c 100644 --- a/src/org/fox/ttrss/CommonActivity.java +++ b/src/org/fox/ttrss/CommonActivity.java @@ -2,6 +2,7 @@ package org.fox.ttrss; import org.fox.ttrss.util.DatabaseHelper; +import android.annotation.SuppressLint; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.v4.app.FragmentActivity; @@ -118,6 +119,7 @@ public class CommonActivity extends FragmentActivity { return m_compatMode; } + @SuppressWarnings("deprecation") public boolean isPortrait() { Display display = getWindowManager().getDefaultDisplay(); @@ -127,9 +129,10 @@ public class CommonActivity extends FragmentActivity { return width < height; } + @SuppressLint("NewApi") + @SuppressWarnings("deprecation") public void copyToClipboard(String str) { if (android.os.Build.VERSION.SDK_INT < 11) { - @SuppressWarnings("deprecation") android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE); clipboard.setText(str); } else { diff --git a/src/org/fox/ttrss/FeedCategoriesFragment.java b/src/org/fox/ttrss/FeedCategoriesFragment.java index 46c476df..92e4f1c7 100644 --- a/src/org/fox/ttrss/FeedCategoriesFragment.java +++ b/src/org/fox/ttrss/FeedCategoriesFragment.java @@ -39,7 +39,6 @@ import com.google.gson.JsonElement; import com.google.gson.reflect.TypeToken; public class FeedCategoriesFragment extends Fragment implements OnItemClickListener, OnSharedPreferenceChangeListener { - @SuppressWarnings("unused") private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; private FeedCategoryListAdapter m_adapter; diff --git a/src/org/fox/ttrss/FeedsActivity.java b/src/org/fox/ttrss/FeedsActivity.java index 9e47b1c7..ef75616e 100644 --- a/src/org/fox/ttrss/FeedsActivity.java +++ b/src/org/fox/ttrss/FeedsActivity.java @@ -1,6 +1,6 @@ package org.fox.ttrss; -import java.util.HashMap; +import java.util.Date; import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; @@ -8,6 +8,7 @@ import org.fox.ttrss.types.Feed; import org.fox.ttrss.types.FeedCategory; import org.fox.ttrss.util.AppRater; +import android.annotation.SuppressLint; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; @@ -15,18 +16,16 @@ import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.util.Log; -import android.view.Menu; -import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.view.Window; -import android.widget.ShareActionProvider; public class FeedsActivity extends OnlineActivity implements HeadlinesEventListener { private final String TAG = this.getClass().getSimpleName(); protected SharedPreferences m_prefs; + protected long m_lastRefresh = 0; + @SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { m_prefs = PreferenceManager @@ -160,7 +159,14 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe HeadlinesFragment hf = new HeadlinesFragment(feed); ft.replace(R.id.headlines_fragment, hf, FRAG_HEADLINES); - ft.commit(); + ft.commit(); + + Date date = new Date(); + + if (date.getTime() - m_lastRefresh > 10000) { + m_lastRefresh = date.getTime(); + refresh(false); + } } } @@ -282,7 +288,6 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe onArticleSelected(article, true); } - @SuppressWarnings("unchecked") public void catchupFeed(final Feed feed) { super.catchupFeed(feed); refresh(); diff --git a/src/org/fox/ttrss/FeedsFragment.java b/src/org/fox/ttrss/FeedsFragment.java index 7b307f84..d1012b48 100644 --- a/src/org/fox/ttrss/FeedsFragment.java +++ b/src/org/fox/ttrss/FeedsFragment.java @@ -575,6 +575,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh } } + @SuppressWarnings("deprecation") private void disableConnectionReuseIfNecessary() { // HTTP connection reuse which was buggy pre-froyo if (Integer.parseInt(Build.VERSION.SDK) < Build.VERSION_CODES.FROYO) { diff --git a/src/org/fox/ttrss/GlobalState.java b/src/org/fox/ttrss/GlobalState.java index 6cd168e4..324364f3 100644 --- a/src/org/fox/ttrss/GlobalState.java +++ b/src/org/fox/ttrss/GlobalState.java @@ -4,9 +4,7 @@ import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; import org.fox.ttrss.types.Feed; -import android.app.Activity; import android.app.Application; -import android.os.Bundle; public class GlobalState extends Application { private static GlobalState m_singleton; diff --git a/src/org/fox/ttrss/HeadlinesActivity.java b/src/org/fox/ttrss/HeadlinesActivity.java index 64dce016..5a89434d 100644 --- a/src/org/fox/ttrss/HeadlinesActivity.java +++ b/src/org/fox/ttrss/HeadlinesActivity.java @@ -4,6 +4,7 @@ import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; import org.fox.ttrss.types.Feed; +import android.annotation.SuppressLint; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; @@ -19,6 +20,7 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL protected SharedPreferences m_prefs; + @SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { m_prefs = PreferenceManager diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java index 09dba7cc..9a1c720c 100644 --- a/src/org/fox/ttrss/HeadlinesFragment.java +++ b/src/org/fox/ttrss/HeadlinesFragment.java @@ -1,6 +1,5 @@ package org.fox.ttrss; -import java.lang.reflect.Type; import java.net.MalformedURLException; import java.net.URL; import java.text.DateFormat; @@ -8,10 +7,8 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.TimeZone; -import org.fox.ttrss.ApiRequest.ApiError; import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; import org.fox.ttrss.types.Attachment; @@ -54,10 +51,7 @@ import android.widget.ListView; import android.widget.Spinner; import android.widget.TextView; -import com.google.gson.Gson; -import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import com.google.gson.reflect.TypeToken; public class HeadlinesFragment extends Fragment implements OnItemClickListener, OnScrollListener { public static enum ArticlesSelection { ALL, NONE, UNREAD }; @@ -83,6 +77,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener, private ImageGetter m_dummyGetter = new ImageGetter() { + @SuppressWarnings("deprecation") @Override public Drawable getDrawable(String source) { return new BitmapDrawable(); diff --git a/src/org/fox/ttrss/OnlineActivity.java b/src/org/fox/ttrss/OnlineActivity.java index 6d43af48..2810948b 100644 --- a/src/org/fox/ttrss/OnlineActivity.java +++ b/src/org/fox/ttrss/OnlineActivity.java @@ -12,6 +12,7 @@ import org.fox.ttrss.types.ArticleList; import org.fox.ttrss.types.Feed; import org.fox.ttrss.types.Label; +import android.annotation.TargetApi; import android.app.AlertDialog; import android.app.Dialog; import android.content.BroadcastReceiver; @@ -74,6 +75,7 @@ public class OnlineActivity extends CommonActivity { }; + @TargetApi(11) private class HeadlinesActionModeCallback implements ActionMode.Callback { @Override @@ -1157,7 +1159,7 @@ public class OnlineActivity extends CommonActivity { } } - protected void refresh() { + protected void refresh(boolean includeHeadlines) { FeedCategoriesFragment cf = (FeedCategoriesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_CATS); if (cf != null) { @@ -1170,13 +1172,19 @@ public class OnlineActivity extends CommonActivity { ff.refresh(false); } - HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); + if (includeHeadlines) { + HeadlinesFragment hf = (HeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); - if (hf != null) { - hf.refresh(false); + if (hf != null) { + hf.refresh(false); + } } } + protected void refresh() { + refresh(true); + } + private class LoginRequest extends ApiRequest { public LoginRequest(Context context) { super(context); diff --git a/src/org/fox/ttrss/PreferencesActivity.java b/src/org/fox/ttrss/PreferencesActivity.java index 2278ad0f..0568d813 100644 --- a/src/org/fox/ttrss/PreferencesActivity.java +++ b/src/org/fox/ttrss/PreferencesActivity.java @@ -1,16 +1,14 @@ package org.fox.ttrss; import android.content.SharedPreferences; -import android.content.res.Configuration; import android.os.Bundle; import android.preference.Preference; -import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceActivity; -import android.preference.PreferenceCategory; import android.preference.PreferenceManager; public class PreferencesActivity extends PreferenceActivity { + @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/src/org/fox/ttrss/offline/OfflineActivity.java b/src/org/fox/ttrss/offline/OfflineActivity.java index 6cf597d4..93ebe932 100644 --- a/src/org/fox/ttrss/offline/OfflineActivity.java +++ b/src/org/fox/ttrss/offline/OfflineActivity.java @@ -4,6 +4,7 @@ import org.fox.ttrss.CommonActivity; import org.fox.ttrss.PreferencesActivity; import org.fox.ttrss.R; +import android.annotation.SuppressLint; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; @@ -36,6 +37,7 @@ public class OfflineActivity extends CommonActivity { private ActionMode m_headlinesActionMode; private HeadlinesActionModeCallback m_headlinesActionModeCallback; + @SuppressLint("NewApi") private class HeadlinesActionModeCallback implements ActionMode.Callback { @Override @@ -161,11 +163,11 @@ public class OfflineActivity extends CommonActivity { final OfflineHeadlinesFragment ohf = (OfflineHeadlinesFragment) getSupportFragmentManager() .findFragmentByTag(FRAG_HEADLINES); - final OfflineFeedsFragment off = (OfflineFeedsFragment) getSupportFragmentManager() - .findFragmentByTag(FRAG_FEEDS); + /* final OfflineFeedsFragment off = (OfflineFeedsFragment) getSupportFragmentManager() + .findFragmentByTag(FRAG_FEEDS); */ - final OfflineFeedCategoriesFragment ocf = (OfflineFeedCategoriesFragment) getSupportFragmentManager() - .findFragmentByTag(FRAG_CATS); + /* final OfflineFeedCategoriesFragment ocf = (OfflineFeedCategoriesFragment) getSupportFragmentManager() + .findFragmentByTag(FRAG_CATS); */ final OfflineArticlePager oap = (OfflineArticlePager) getSupportFragmentManager() .findFragmentByTag(FRAG_ARTICLE); @@ -403,6 +405,7 @@ public class OfflineActivity extends CommonActivity { return m_unreadOnly; } + @SuppressLint("NewApi") protected void initMenu() { if (m_menu != null) { m_menu.setGroupVisible(R.id.menu_group_headlines, false); diff --git a/src/org/fox/ttrss/offline/OfflineArticleFragment.java b/src/org/fox/ttrss/offline/OfflineArticleFragment.java index e05f7581..3035d629 100644 --- a/src/org/fox/ttrss/offline/OfflineArticleFragment.java +++ b/src/org/fox/ttrss/offline/OfflineArticleFragment.java @@ -10,6 +10,7 @@ import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.SharedPreferences; import android.database.Cursor; @@ -30,11 +31,9 @@ import android.view.ViewGroup; import android.webkit.WebSettings; import android.webkit.WebSettings.LayoutAlgorithm; import android.webkit.WebView; -import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.TextView; public class OfflineArticleFragment extends Fragment { - @SuppressWarnings("unused") private final String TAG = this.getClass().getSimpleName(); private SharedPreferences m_prefs; @@ -55,8 +54,8 @@ public class OfflineArticleFragment extends Fragment { @Override public boolean onContextItemSelected(MenuItem item) { - AdapterContextMenuInfo info = (AdapterContextMenuInfo) item - .getMenuInfo(); + /* AdapterContextMenuInfo info = (AdapterContextMenuInfo) item + .getMenuInfo(); */ switch (item.getItemId()) { case R.id.article_link_share: @@ -89,6 +88,7 @@ public class OfflineArticleFragment extends Fragment { } + @SuppressLint("NewApi") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { diff --git a/src/org/fox/ttrss/offline/OfflineDownloadService.java b/src/org/fox/ttrss/offline/OfflineDownloadService.java index c7100ee0..eb9a802e 100644 --- a/src/org/fox/ttrss/offline/OfflineDownloadService.java +++ b/src/org/fox/ttrss/offline/OfflineDownloadService.java @@ -87,6 +87,7 @@ public class OfflineDownloadService extends Service { initDatabase(); } + @SuppressWarnings("deprecation") private void updateNotification(String msg) { Notification notification = new Notification(R.drawable.icon, getString(R.string.notify_downloading_title), System.currentTimeMillis()); @@ -158,9 +159,9 @@ public class OfflineDownloadService extends Service { m_readableDb = dh.getReadableDatabase(); } - private synchronized SQLiteDatabase getReadableDb() { + /* private synchronized SQLiteDatabase getReadableDb() { return m_readableDb; - } + } */ private synchronized SQLiteDatabase getWritableDb() { return m_writableDb; diff --git a/src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java b/src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java index 0d48dc12..d46e5587 100644 --- a/src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java +++ b/src/org/fox/ttrss/offline/OfflineFeedCategoriesFragment.java @@ -1,8 +1,6 @@ package org.fox.ttrss.offline; import org.fox.ttrss.R; -import org.fox.ttrss.types.Feed; -import org.fox.ttrss.types.FeedCategory; import android.app.Activity; import android.content.Context; diff --git a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java index e4207a4f..4122f456 100644 --- a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java +++ b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java @@ -1,8 +1,8 @@ package org.fox.ttrss.offline; -import org.fox.ttrss.HeadlinesFragment; import org.fox.ttrss.R; +import android.annotation.SuppressLint; import android.content.Intent; import android.database.sqlite.SQLiteStatement; import android.os.Bundle; @@ -17,6 +17,7 @@ import android.view.View; public class OfflineFeedsActivity extends OfflineActivity implements OfflineHeadlinesEventListener { private final String TAG = this.getClass().getSimpleName(); + @SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { m_prefs = PreferenceManager diff --git a/src/org/fox/ttrss/offline/OfflineFeedsFragment.java b/src/org/fox/ttrss/offline/OfflineFeedsFragment.java index d70c247d..87af187c 100644 --- a/src/org/fox/ttrss/offline/OfflineFeedsFragment.java +++ b/src/org/fox/ttrss/offline/OfflineFeedsFragment.java @@ -3,7 +3,6 @@ package org.fox.ttrss.offline; import java.io.File; import org.fox.ttrss.R; -import org.fox.ttrss.types.Feed; import android.app.Activity; import android.content.Context; diff --git a/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java b/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java index 932a59e5..d9053f27 100644 --- a/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java +++ b/src/org/fox/ttrss/offline/OfflineHeadlinesActivity.java @@ -1,9 +1,9 @@ package org.fox.ttrss.offline; import org.fox.ttrss.GlobalState; -import org.fox.ttrss.HeadlinesFragment; import org.fox.ttrss.R; +import android.annotation.SuppressLint; import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; @@ -16,10 +16,12 @@ import android.support.v4.app.FragmentTransaction; import android.view.View; public class OfflineHeadlinesActivity extends OfflineActivity implements OfflineHeadlinesEventListener { + @SuppressWarnings("unused") private final String TAG = this.getClass().getSimpleName(); protected SharedPreferences m_prefs; + @SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { m_prefs = PreferenceManager @@ -98,12 +100,9 @@ public class OfflineHeadlinesActivity extends OfflineActivity implements Offline stmt.close(); if (open) { - OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); - OfflineArticlePager af = (OfflineArticlePager) getSupportFragmentManager().findFragmentByTag(FRAG_ARTICLE); af.setArticleId(articleId); - } else { OfflineHeadlinesFragment hf = (OfflineHeadlinesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES); diff --git a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java index 776df09c..b7817ac6 100644 --- a/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java +++ b/src/org/fox/ttrss/offline/OfflineHeadlinesFragment.java @@ -62,6 +62,7 @@ public class OfflineHeadlinesFragment extends Fragment implements OnItemClickLis private ImageGetter m_dummyGetter = new ImageGetter() { + @SuppressWarnings("deprecation") @Override public Drawable getDrawable(String source) { return new BitmapDrawable(); diff --git a/src/org/fox/ttrss/offline/OfflineUploadService.java b/src/org/fox/ttrss/offline/OfflineUploadService.java index dd4c829f..bacb1ede 100644 --- a/src/org/fox/ttrss/offline/OfflineUploadService.java +++ b/src/org/fox/ttrss/offline/OfflineUploadService.java @@ -48,6 +48,7 @@ public class OfflineUploadService extends IntentService { m_nmgr.cancel(NOTIFY_UPLOADING); } + @SuppressWarnings("deprecation") private void updateNotification(String msg) { Notification notification = new Notification(R.drawable.icon, getString(R.string.notify_uploading_title), System.currentTimeMillis()); diff --git a/src/org/fox/ttrss/util/HeadlinesRequest.java b/src/org/fox/ttrss/util/HeadlinesRequest.java index 5615ffdf..768abc7c 100644 --- a/src/org/fox/ttrss/util/HeadlinesRequest.java +++ b/src/org/fox/ttrss/util/HeadlinesRequest.java @@ -4,22 +4,19 @@ import java.lang.reflect.Type; import java.util.List; import org.fox.ttrss.ApiRequest; +import org.fox.ttrss.GlobalState; import org.fox.ttrss.OnlineActivity; import org.fox.ttrss.R; -import org.fox.ttrss.GlobalState; -import org.fox.ttrss.ApiRequest.ApiError; import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; +import android.content.Context; + import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.reflect.TypeToken; -import android.content.Context; -import android.widget.Adapter; -import android.widget.ArrayAdapter; - public class HeadlinesRequest extends ApiRequest { public static final int HEADLINES_REQUEST_SIZE = 30; public static final int HEADLINES_BUFFER_MAX = 500; diff --git a/src/org/fox/ttrss/util/ImageCacheService.java b/src/org/fox/ttrss/util/ImageCacheService.java index 30bc6022..b699c569 100644 --- a/src/org/fox/ttrss/util/ImageCacheService.java +++ b/src/org/fox/ttrss/util/ImageCacheService.java @@ -25,6 +25,7 @@ import android.os.Environment; public class ImageCacheService extends IntentService { + @SuppressWarnings("unused") private final String TAG = this.getClass().getSimpleName(); public static final int NOTIFY_DOWNLOADING = 1; @@ -123,6 +124,7 @@ public class ImageCacheService extends IntentService { } } + @SuppressWarnings("deprecation") private void updateNotification(String msg) { Notification notification = new Notification(R.drawable.icon, getString(R.string.notify_downloading_title), System.currentTimeMillis()); -- cgit v1.2.3-54-g00ecf From 41630980df293095c538a2929a1c0ec3ad1d44bf Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Wed, 19 Sep 2012 13:44:35 +0400 Subject: remove smalltablet code as unnecessary, store showunreadfeeds in globalstate --- src/org/fox/ttrss/CommonActivity.java | 41 +++++++++------------- src/org/fox/ttrss/FeedsActivity.java | 2 +- src/org/fox/ttrss/GlobalState.java | 2 ++ src/org/fox/ttrss/OnlineActivity.java | 14 -------- src/org/fox/ttrss/offline/OfflineActivity.java | 13 ++----- .../fox/ttrss/offline/OfflineFeedsActivity.java | 2 +- 6 files changed, 23 insertions(+), 51 deletions(-) (limited to 'src/org/fox/ttrss/CommonActivity.java') diff --git a/src/org/fox/ttrss/CommonActivity.java b/src/org/fox/ttrss/CommonActivity.java index 35e8718c..4b34ed62 100644 --- a/src/org/fox/ttrss/CommonActivity.java +++ b/src/org/fox/ttrss/CommonActivity.java @@ -26,13 +26,28 @@ public class CommonActivity extends FragmentActivity { private boolean m_smallScreenMode = true; private boolean m_compatMode = false; - private boolean m_smallTablet = false; protected void setSmallScreen(boolean smallScreen) { Log.d(TAG, "m_smallScreenMode=" + smallScreen); m_smallScreenMode = smallScreen; } + public boolean getUnreadArticlesOnly() { + return GlobalState.getInstance().m_unreadArticlesOnly; + } + + public boolean getUnreadOnly() { + return GlobalState.getInstance().m_unreadOnly; + } + + public void setUnreadOnly(boolean unread) { + GlobalState.getInstance().m_unreadOnly = unread; + } + + public void setUnreadArticlesOnly(boolean unread) { + GlobalState.getInstance().m_unreadArticlesOnly = unread; + } + public void setLoadingStatus(int status, boolean showProgress) { TextView tv = (TextView) findViewById(R.id.loading_message); @@ -53,23 +68,6 @@ public class CommonActivity extends FragmentActivity { toast.show(); } - protected void detectSmallTablet() { - - DisplayMetrics displayMetrics = new DisplayMetrics(); - getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); - - float inHeight = displayMetrics.heightPixels / displayMetrics.ydpi; - float inWidth = displayMetrics.widthPixels / displayMetrics.xdpi; - - float inDiag = FloatMath.sqrt(inHeight * inHeight + inWidth * inWidth); - - if (inDiag < 9) { - m_smallTablet = true; - } - - Log.d(TAG, "m_smallTabletMode=" + m_smallTablet + " " + inDiag); - } - private void initDatabase() { DatabaseHelper dh = new DatabaseHelper(getApplicationContext()); @@ -91,7 +89,6 @@ public class CommonActivity extends FragmentActivity { m_readableDb.close(); m_writableDb.close(); - } @Override @@ -102,8 +99,6 @@ public class CommonActivity extends FragmentActivity { Log.d(TAG, "m_compatMode=" + m_compatMode); - detectSmallTablet(); - super.onCreate(savedInstanceState); } @@ -111,10 +106,6 @@ public class CommonActivity extends FragmentActivity { return m_smallScreenMode; } - public boolean isSmallTablet() { - return m_smallTablet; - } - public boolean isCompatMode() { return m_compatMode; } diff --git a/src/org/fox/ttrss/FeedsActivity.java b/src/org/fox/ttrss/FeedsActivity.java index ef75616e..5d088c7a 100644 --- a/src/org/fox/ttrss/FeedsActivity.java +++ b/src/org/fox/ttrss/FeedsActivity.java @@ -207,7 +207,7 @@ public class FeedsActivity extends OnlineActivity implements HeadlinesEventListe public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.show_feeds: - m_unreadOnly = !m_unreadOnly; + setUnreadOnly(!getUnreadOnly()); initMenu(); refresh(); return true; diff --git a/src/org/fox/ttrss/GlobalState.java b/src/org/fox/ttrss/GlobalState.java index 324364f3..6a174763 100644 --- a/src/org/fox/ttrss/GlobalState.java +++ b/src/org/fox/ttrss/GlobalState.java @@ -13,6 +13,8 @@ public class GlobalState extends Application { public Feed m_activeFeed; public Article m_activeArticle; public int m_selectedArticleId; + public boolean m_unreadOnly = true; + public boolean m_unreadArticlesOnly = true; public static GlobalState getInstance(){ return m_singleton; diff --git a/src/org/fox/ttrss/OnlineActivity.java b/src/org/fox/ttrss/OnlineActivity.java index 2810948b..7dc44188 100644 --- a/src/org/fox/ttrss/OnlineActivity.java +++ b/src/org/fox/ttrss/OnlineActivity.java @@ -50,8 +50,6 @@ public class OnlineActivity extends CommonActivity { protected int m_apiLevel = 0; protected Menu m_menu; - protected boolean m_unreadOnly = true; - protected boolean m_unreadArticlesOnly = true; protected int m_offlineModeStatus = 0; private ActionMode m_headlinesActionMode; @@ -156,8 +154,6 @@ public class OnlineActivity extends CommonActivity { if (savedInstanceState != null) { m_sessionId = savedInstanceState.getString("sessionId"); m_apiLevel = savedInstanceState.getInt("apiLevel"); - m_unreadOnly = savedInstanceState.getBoolean("unreadOnly"); - m_unreadArticlesOnly = savedInstanceState.getBoolean("unreadArticlesOnly"); m_offlineModeStatus = savedInstanceState.getInt("offlineModeStatus"); } @@ -814,22 +810,12 @@ public class OnlineActivity extends CommonActivity { } } - public boolean getUnreadArticlesOnly() { - return m_unreadArticlesOnly; - } - - public boolean getUnreadOnly() { - return m_unreadOnly; - } - @Override public void onSaveInstanceState(Bundle out) { super.onSaveInstanceState(out); out.putString("sessionId", m_sessionId); out.putInt("apiLevel", m_apiLevel); - out.putBoolean("unreadOnly", m_unreadOnly); - out.putBoolean("unreadArticlesOnly", m_unreadArticlesOnly); out.putInt("offlineModeStatus", m_offlineModeStatus); } diff --git a/src/org/fox/ttrss/offline/OfflineActivity.java b/src/org/fox/ttrss/offline/OfflineActivity.java index 93ebe932..319428f5 100644 --- a/src/org/fox/ttrss/offline/OfflineActivity.java +++ b/src/org/fox/ttrss/offline/OfflineActivity.java @@ -32,7 +32,6 @@ public class OfflineActivity extends CommonActivity { protected SharedPreferences m_prefs; protected Menu m_menu; - protected boolean m_unreadOnly = true; private ActionMode m_headlinesActionMode; private HeadlinesActionModeCallback m_headlinesActionModeCallback; @@ -100,9 +99,9 @@ public class OfflineActivity extends CommonActivity { } } - if (savedInstanceState != null) { - m_unreadOnly = savedInstanceState.getBoolean("unreadOnly"); - } + /* if (savedInstanceState != null) { + + } */ if (!isCompatMode()) { m_headlinesActionModeCallback = new HeadlinesActionModeCallback(); @@ -113,8 +112,6 @@ public class OfflineActivity extends CommonActivity { @Override public void onSaveInstanceState(Bundle out) { super.onSaveInstanceState(out); - - out.putBoolean("unreadOnly", m_unreadOnly); } protected void selectArticles(int feedId, boolean isCat, int mode) { @@ -401,10 +398,6 @@ public class OfflineActivity extends CommonActivity { return true; } - public boolean getUnreadOnly() { - return m_unreadOnly; - } - @SuppressLint("NewApi") protected void initMenu() { if (m_menu != null) { diff --git a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java index 4122f456..35bf05b7 100644 --- a/src/org/fox/ttrss/offline/OfflineFeedsActivity.java +++ b/src/org/fox/ttrss/offline/OfflineFeedsActivity.java @@ -90,7 +90,7 @@ public class OfflineFeedsActivity extends OfflineActivity implements OfflineHead public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.show_feeds: - m_unreadOnly = !m_unreadOnly; + setUnreadOnly(!getUnreadOnly()); initMenu(); refresh(); return true; -- cgit v1.2.3-54-g00ecf