summaryrefslogtreecommitdiff
path: root/src/org
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-09-19 16:01:31 +0400
committerAndrew Dolgov <[email protected]>2012-09-19 16:01:31 +0400
commitedbf27ffb810475543c52fae74d627514defcacb (patch)
treebf0f6eaba647869c92e3f9a06b3b9b52288892b8 /src/org
parent4faeb17461b7a11e3bf184ca5a431488f73967d7 (diff)
implement several loading progressbars
Diffstat (limited to 'src/org')
-rw-r--r--src/org/fox/ttrss/ApiRequest.java32
-rw-r--r--src/org/fox/ttrss/ArticleFragment.java13
-rw-r--r--src/org/fox/ttrss/ArticlePager.java10
-rw-r--r--src/org/fox/ttrss/FeedCategoriesFragment.java24
-rw-r--r--src/org/fox/ttrss/FeedsFragment.java18
-rw-r--r--src/org/fox/ttrss/HeadlinesFragment.java10
-rw-r--r--src/org/fox/ttrss/OnlineActivity.java6
7 files changed, 81 insertions, 32 deletions
diff --git a/src/org/fox/ttrss/ApiRequest.java b/src/org/fox/ttrss/ApiRequest.java
index e84d834a..32da7bc8 100644
--- a/src/org/fox/ttrss/ApiRequest.java
+++ b/src/org/fox/ttrss/ApiRequest.java
@@ -2,11 +2,13 @@ package org.fox.ttrss;
import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.nio.CharBuffer;
import java.security.cert.CertificateException;
import java.util.HashMap;
@@ -15,6 +17,8 @@ import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
+import org.apache.http.util.CharArrayBuffer;
+
import java.security.cert.X509Certificate;
import android.content.Context;
@@ -164,27 +168,31 @@ public class ApiRequest extends AsyncTask<HashMap<String,String>, Integer, JsonE
OutputStream out = conn.getOutputStream();
out.write(postData);
out.close();
-
+
m_responseCode = conn.getResponseCode();
m_responseMessage = conn.getResponseMessage();
-
+
switch (m_responseCode) {
case HttpURLConnection.HTTP_OK:
- BufferedReader buffer = new BufferedReader(
- new InputStreamReader(conn.getInputStream()), 8192);
-
- String s = "";
- String response = "";
-
- while ((s = buffer.readLine()) != null) {
- response += s;
+ StringBuffer response = new StringBuffer();
+ InputStreamReader in = new InputStreamReader(conn.getInputStream(), "UTF-8");
+ char[] buf = new char[256];
+ int read = 0;
+ int total = 0;
+
+ int contentLength = conn.getHeaderFieldInt("Api-Content-Length", -1);
+
+ while ((read = in.read(buf)) >= 0) {
+ response.append(buf, 0, read);
+ total += read;
+ publishProgress(Integer.valueOf(total), Integer.valueOf(contentLength));
}
-
+
if (m_transportDebugging) Log.d(TAG, "<<< " + response);
JsonParser parser = new JsonParser();
- JsonElement result = parser.parse(response);
+ JsonElement result = parser.parse(response.toString());
JsonObject resultObj = result.getAsJsonObject();
m_apiStatusCode = resultObj.get("status").getAsInt();
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java
index 54eef0e1..2f293ab8 100644
--- a/src/org/fox/ttrss/ArticleFragment.java
+++ b/src/org/fox/ttrss/ArticleFragment.java
@@ -32,9 +32,11 @@ import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebView;
+import android.webkit.WebViewClient;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
@@ -98,6 +100,8 @@ public class ArticleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ m_activity.setProgressBarVisibility(true);
+
if (savedInstanceState != null) {
m_article = savedInstanceState.getParcelable("article");
}
@@ -125,6 +129,15 @@ public class ArticleFragment extends Fragment {
WebView web = (WebView)view.findViewById(R.id.content);
if (web != null) {
+ web.setWebChromeClient(new WebChromeClient() {
+ @Override
+ public void onProgressChanged(WebView view, int progress) {
+ m_activity.setProgress(progress * 10000);
+ if (progress == 100) {
+ m_activity.setProgressBarVisibility(false);
+ }
+ }
+ });
String content;
String cssOverride = "";
diff --git a/src/org/fox/ttrss/ArticlePager.java b/src/org/fox/ttrss/ArticlePager.java
index 1f25a546..35779843 100644
--- a/src/org/fox/ttrss/ArticlePager.java
+++ b/src/org/fox/ttrss/ArticlePager.java
@@ -126,13 +126,23 @@ public class ArticlePager extends Fragment {
@SuppressWarnings({ "unchecked", "serial" })
private void refresh(boolean append) {
m_activity.setLoadingStatus(R.string.blank, true);
+
+ m_activity.setProgressBarVisibility(true);
if (!m_feed.equals(GlobalState.getInstance().m_activeFeed)) {
append = false;
}
HeadlinesRequest req = new HeadlinesRequest(getActivity().getApplicationContext(), m_activity) {
+ @Override
+ protected void onProgressUpdate(Integer... progress) {
+ m_activity.setProgress(progress[0] / progress[1] * 10000);
+ }
+
+ @Override
protected void onPostExecute(JsonElement result) {
+ m_activity.setProgressBarVisibility(false);
+
super.onPostExecute(result);
if (result != null) {
diff --git a/src/org/fox/ttrss/FeedCategoriesFragment.java b/src/org/fox/ttrss/FeedCategoriesFragment.java
index 92e4f1c7..64561cf9 100644
--- a/src/org/fox/ttrss/FeedCategoriesFragment.java
+++ b/src/org/fox/ttrss/FeedCategoriesFragment.java
@@ -25,6 +25,7 @@ import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
@@ -127,7 +128,7 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
- getActivity().getMenuInflater().inflate(R.menu.category_menu, menu);
+ m_activity.getMenuInflater().inflate(R.menu.category_menu, menu);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
FeedCategory cat = m_adapter.getItem(info.position);
@@ -198,8 +199,7 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe
}
}
- if (getActivity() != null)
- getActivity().setProgressBarIndeterminateVisibility(showProgress);
+ m_activity.setProgressBarIndeterminateVisibility(showProgress);
}
@SuppressWarnings("unchecked")
@@ -210,13 +210,8 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe
final boolean unreadOnly = m_activity.getUnreadOnly();
if (sessionId != null) {
-
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- setLoadingStatus(R.string.blank, true);
- }
- });
+ setLoadingStatus(R.string.blank, true);
+ m_activity.setProgressBarVisibility(true);
@SuppressWarnings("serial")
HashMap<String,String> map = new HashMap<String,String>() {
@@ -231,7 +226,6 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe
};
req.execute(map);
-
}
}
@@ -241,7 +235,15 @@ public class FeedCategoriesFragment extends Fragment implements OnItemClickListe
super(context);
}
+ @Override
+ protected void onProgressUpdate(Integer... progress) {
+ m_activity.setProgress(Math.round((((float)progress[0] / (float)progress[1]) * 10000)));
+ }
+
+ @Override
protected void onPostExecute(JsonElement result) {
+ m_activity.setProgressBarVisibility(false);
+
if (result != null) {
try {
JsonArray content = result.getAsJsonArray();
diff --git a/src/org/fox/ttrss/FeedsFragment.java b/src/org/fox/ttrss/FeedsFragment.java
index d1012b48..1a82534f 100644
--- a/src/org/fox/ttrss/FeedsFragment.java
+++ b/src/org/fox/ttrss/FeedsFragment.java
@@ -254,6 +254,8 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
public void refresh(boolean background) {
//FeedCategory cat = m_onlineServices.getActiveCategory();
+ m_activity.setProgressBarVisibility(true);
+
final int catId = (m_activeCategory != null) ? m_activeCategory.id : -4;
final String sessionId = m_activity.getSessionId();
@@ -262,13 +264,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
FeedsRequest req = new FeedsRequest(getActivity().getApplicationContext(), catId);
if (sessionId != null) {
-
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- setLoadingStatus(R.string.blank, true);
- }
- });
+ setLoadingStatus(R.string.blank, true);
HashMap<String,String> map = new HashMap<String,String>() {
{
@@ -354,7 +350,15 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
m_catId = catId;
}
+ @Override
+ protected void onProgressUpdate(Integer... progress) {
+ m_activity.setProgress(Math.round((((float)progress[0] / (float)progress[1]) * 10000)));
+ }
+
+ @Override
protected void onPostExecute(JsonElement result) {
+ m_activity.setProgressBarVisibility(false);
+
if (result != null) {
try {
JsonArray content = result.getAsJsonArray();
diff --git a/src/org/fox/ttrss/HeadlinesFragment.java b/src/org/fox/ttrss/HeadlinesFragment.java
index 9a1c720c..0621c64f 100644
--- a/src/org/fox/ttrss/HeadlinesFragment.java
+++ b/src/org/fox/ttrss/HeadlinesFragment.java
@@ -349,6 +349,8 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
if (m_activity != null) {
m_refreshInProgress = true;
+ m_activity.setProgressBarVisibility(true);
+
if (!m_feed.equals(GlobalState.getInstance().m_activeFeed)) {
append = false;
}
@@ -359,7 +361,15 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener,
final boolean isCat = m_feed.is_cat;
HeadlinesRequest req = new HeadlinesRequest(getActivity().getApplicationContext(), m_activity) {
+ @Override
+ protected void onProgressUpdate(Integer... progress) {
+ m_activity.setProgress(Math.round((((float)progress[0] / (float)progress[1]) * 10000)));
+ }
+
+ @Override
protected void onPostExecute(JsonElement result) {
+ m_activity.setProgressBarVisibility(false);
+
super.onPostExecute(result);
if (result != null) {
diff --git a/src/org/fox/ttrss/OnlineActivity.java b/src/org/fox/ttrss/OnlineActivity.java
index 314a202f..103b4c10 100644
--- a/src/org/fox/ttrss/OnlineActivity.java
+++ b/src/org/fox/ttrss/OnlineActivity.java
@@ -132,8 +132,10 @@ public class OnlineActivity extends CommonActivity {
super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
-
+ requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
+ requestWindowFeature(Window.FEATURE_PROGRESS);
+
+ setProgressBarVisibility(false);
setProgressBarIndeterminateVisibility(false);
// SharedPreferences localPrefs = getSharedPreferences("localprefs", Context.MODE_PRIVATE);