diff --git a/docs-android/app/app.iml b/docs-android/app/app.iml
index 70b4cf6c..2fa09bbf 100644
--- a/docs-android/app/app.iml
+++ b/docs-android/app/app.iml
@@ -12,10 +12,7 @@
-
-
- generateDebugAndroidTestSources
generateDebugSources
@@ -28,7 +25,7 @@
-
+
@@ -50,6 +47,13 @@
+
+
+
+
+
+
+
@@ -57,6 +61,13 @@
+
+
+
+
+
+
+
@@ -66,6 +77,7 @@
+
@@ -76,12 +88,11 @@
-
+
-
@@ -93,18 +104,20 @@
-
+
+
+
+
+
+
-
-
-
+
+
-
-
-
+
\ No newline at end of file
diff --git a/docs-android/app/build.gradle b/docs-android/app/build.gradle
index b1fdb5e6..b886eea0 100644
--- a/docs-android/app/build.gradle
+++ b/docs-android/app/build.gradle
@@ -3,7 +3,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.0.0-alpha3'
+ classpath 'com.android.tools.build:gradle:2.0.0-alpha5'
}
}
apply plugin: 'com.android.application'
@@ -15,7 +15,6 @@ repositories {
android {
compileSdkVersion 23
buildToolsVersion '23.0.2'
- useLibrary 'org.apache.http.legacy'
defaultConfig {
minSdkVersion 14
@@ -57,4 +56,7 @@ dependencies {
compile 'it.sephiroth.android.library.imagezoom:imagezoom:1.0.5'
compile 'de.greenrobot:eventbus:2.4.1'
compile 'com.shamanland:fab:0.0.6'
+ compile 'com.squareup.picasso:picasso:2.5.2'
+ compile 'com.squareup.okhttp3:okhttp:3.0.1'
+ compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.0.2'
}
diff --git a/docs-android/app/libs/android-query.0.26.8.jar b/docs-android/app/libs/android-query.0.26.8.jar
deleted file mode 100644
index 7fc26f17..00000000
Binary files a/docs-android/app/libs/android-query.0.26.8.jar and /dev/null differ
diff --git a/docs-android/app/src/main/java/com/sismics/docs/MainApplication.java b/docs-android/app/src/main/java/com/sismics/docs/MainApplication.java
index 6d636c78..0f01b31c 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/MainApplication.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/MainApplication.java
@@ -2,7 +2,6 @@ package com.sismics.docs;
import android.app.Application;
-import com.androidquery.callback.BitmapAjaxCallback;
import com.sismics.docs.model.application.ApplicationContext;
import com.sismics.docs.util.PreferenceUtil;
@@ -24,10 +23,4 @@ public class MainApplication extends Application {
super.onCreate();
}
-
- @Override
- public void onLowMemory() {
- super.onLowMemory();
- BitmapAjaxCallback.clearCache();
- }
}
diff --git a/docs-android/app/src/main/java/com/sismics/docs/activity/DocumentViewActivity.java b/docs-android/app/src/main/java/com/sismics/docs/activity/DocumentViewActivity.java
index bde896aa..d3b9f07d 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/activity/DocumentViewActivity.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/activity/DocumentViewActivity.java
@@ -731,7 +731,7 @@ public class DocumentViewActivity extends AppCompatActivity {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
JSONArray comments = response.optJSONArray("comments");
- commentListAdapter = new CommentListAdapter(comments);
+ commentListAdapter = new CommentListAdapter(DocumentViewActivity.this, comments);
listView.setAdapter(commentListAdapter);
listView.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
diff --git a/docs-android/app/src/main/java/com/sismics/docs/activity/LoginActivity.java b/docs-android/app/src/main/java/com/sismics/docs/activity/LoginActivity.java
index e7c83d53..9495e863 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/activity/LoginActivity.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/activity/LoginActivity.java
@@ -10,8 +10,8 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
+import android.widget.TextView;
-import com.androidquery.AQuery;
import com.sismics.docs.R;
import com.sismics.docs.listener.CallbackListener;
import com.sismics.docs.listener.JsonHttpResponseHandler;
@@ -43,19 +43,17 @@ public class LoginActivity extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_activity);
-
- AQuery aq = new AQuery(this);
- aq.id(R.id.loginExplain)
- .text(Html.fromHtml(getString(R.string.login_explain)))
- .getTextView()
- .setMovementMethod(LinkMovementMethod.getInstance());
-
- final EditText txtServer = aq.id(R.id.txtServer).getEditText();
- final EditText txtUsername = aq.id(R.id.txtUsername).getEditText();
- final EditText txtPassword = aq.id(R.id.txtPassword).getEditText();
- final Button btnConnect = aq.id(R.id.btnConnect).getButton();
- loginForm = aq.id(R.id.loginForm).getView();
- progressBar = aq.id(R.id.progressBar).getView();
+
+ TextView loginExplainTextView = (TextView) findViewById(R.id.loginExplain);
+ loginExplainTextView.setText(Html.fromHtml(getString(R.string.login_explain)));
+ loginExplainTextView.setMovementMethod(LinkMovementMethod.getInstance());
+
+ final EditText txtServer = (EditText) findViewById(R.id.txtServer);
+ final EditText txtUsername = (EditText) findViewById(R.id.txtUsername);
+ final EditText txtPassword = (EditText) findViewById(R.id.txtPassword);
+ final Button btnConnect = (Button) findViewById(R.id.btnConnect);
+ loginForm = findViewById(R.id.loginForm);
+ progressBar = findViewById(R.id.progressBar);
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
diff --git a/docs-android/app/src/main/java/com/sismics/docs/activity/MainActivity.java b/docs-android/app/src/main/java/com/sismics/docs/activity/MainActivity.java
index 768d384a..80748991 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/activity/MainActivity.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/activity/MainActivity.java
@@ -18,7 +18,6 @@ import android.widget.ListView;
import android.widget.SearchView;
import android.widget.TextView;
-import com.androidquery.util.AQUtility;
import com.sismics.docs.R;
import com.sismics.docs.adapter.TagListAdapter;
import com.sismics.docs.event.AdvancedSearchEvent;
@@ -274,10 +273,6 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onDestroy() {
EventBus.getDefault().unregister(this);
- if(isTaskRoot()) {
- int cacheSizeMb = PreferenceUtil.getIntegerPreference(this, PreferenceUtil.PREF_CACHE_SIZE, 10);
- AQUtility.cleanCacheAsync(this, cacheSizeMb * 1000000, cacheSizeMb * 1000000);
- }
super.onDestroy();
}
}
\ No newline at end of file
diff --git a/docs-android/app/src/main/java/com/sismics/docs/adapter/CommentListAdapter.java b/docs-android/app/src/main/java/com/sismics/docs/adapter/CommentListAdapter.java
index 3a11585c..8c725572 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/adapter/CommentListAdapter.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/adapter/CommentListAdapter.java
@@ -1,7 +1,6 @@
package com.sismics.docs.adapter;
import android.content.Context;
-import android.graphics.Bitmap;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
@@ -10,9 +9,8 @@ import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
-import com.androidquery.AQuery;
-import com.androidquery.callback.BitmapAjaxCallback;
import com.sismics.docs.R;
+import com.sismics.docs.util.OkHttpUtil;
import org.json.JSONArray;
import org.json.JSONObject;
@@ -27,22 +25,23 @@ import java.util.List;
* @author bgamard.
*/
public class CommentListAdapter extends BaseAdapter {
- /**
- * AQuery.
- */
- private AQuery aq;
-
/**
* Tags.
*/
private List commentList = new ArrayList<>();
+ /**
+ * Context.
+ */
+ private Context context;
+
/**
* Comment list adapter.
*
* @param commentsArray Comments
*/
- public CommentListAdapter(JSONArray commentsArray) {
+ public CommentListAdapter(Context context, JSONArray commentsArray) {
+ this.context = context;
for (int i = 0; i < commentsArray.length(); i++) {
commentList.add(commentsArray.optJSONObject(i));
}
@@ -70,12 +69,6 @@ public class CommentListAdapter extends BaseAdapter {
view = vi.inflate(R.layout.comment_list_item, parent, false);
}
- if (aq == null) {
- aq = new AQuery(view);
- } else {
- aq.recycle(view);
- }
-
// Fill the view
JSONObject comment = getItem(position);
TextView creatorTextView = (TextView) view.findViewById(R.id.creatorTextView);
@@ -88,14 +81,9 @@ public class CommentListAdapter extends BaseAdapter {
// Gravatar image
String gravatarUrl = "http://www.gravatar.com/avatar/" + comment.optString("creator_gravatar") + "?s=128d=identicon";
- if (aq.shouldDelay(position, view, parent, gravatarUrl)) {
- aq.id(gravatarImageView).image((Bitmap) null);
- } else {
- aq.id(gravatarImageView).image(new BitmapAjaxCallback()
- .url(gravatarUrl)
- .animation(AQuery.FADE_IN_NETWORK)
- );
- }
+ OkHttpUtil.picasso(context, null)
+ .load(gravatarUrl)
+ .into(gravatarImageView);
return view;
}
diff --git a/docs-android/app/src/main/java/com/sismics/docs/adapter/FilePagerAdapter.java b/docs-android/app/src/main/java/com/sismics/docs/adapter/FilePagerAdapter.java
index e952ee35..e2bd5067 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/adapter/FilePagerAdapter.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/adapter/FilePagerAdapter.java
@@ -7,10 +7,11 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
-import com.androidquery.AQuery;
-import com.androidquery.callback.BitmapAjaxCallback;
import com.sismics.docs.R;
+import com.sismics.docs.util.OkHttpUtil;
import com.sismics.docs.util.PreferenceUtil;
+import com.squareup.picasso.Callback;
+import com.squareup.picasso.MemoryPolicy;
import org.json.JSONArray;
import org.json.JSONObject;
@@ -30,11 +31,6 @@ public class FilePagerAdapter extends PagerAdapter {
*/
private List files;
- /**
- * AQuery.
- */
- private AQuery aq;
-
/**
* Context.
*/
@@ -58,7 +54,6 @@ public class FilePagerAdapter extends PagerAdapter {
}
this.context = context;
this.authToken = PreferenceUtil.getAuthToken(context);
- aq = new AQuery(context);
}
@Override
@@ -66,15 +61,20 @@ public class FilePagerAdapter extends PagerAdapter {
View view = LayoutInflater.from(container.getContext()).inflate(R.layout.file_viewpager_item, container, false);
ImageViewTouch fileImageView = (ImageViewTouch) view.findViewById(R.id.fileImageView);
- ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.fileProgressBar);
+ final ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.fileProgressBar);
JSONObject file = files.get(position);
String fileUrl = PreferenceUtil.getServerUrl(context) + "/api/file/" + file.optString("id") + "/data?size=web";
- aq.id(fileImageView)
- .image(new BitmapAjaxCallback()
- .url(fileUrl)
- .progress(progressBar)
- .animation(AQuery.FADE_IN_NETWORK)
- .cookie("auth_token", authToken));
+
+ // Load image
+ OkHttpUtil.picasso(context, authToken)
+ .load(fileUrl)
+ .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
+ .into(fileImageView, new Callback.EmptyCallback() {
+ @Override
+ public void onSuccess() {
+ progressBar.setVisibility(View.GONE);
+ }
+ });
fileImageView.setDisplayType(ImageViewTouchBase.DisplayType.FIT_TO_SCREEN);
diff --git a/docs-android/app/src/main/java/com/sismics/docs/fragment/SettingsFragment.java b/docs-android/app/src/main/java/com/sismics/docs/fragment/SettingsFragment.java
index f3c67fa1..2daecefe 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/fragment/SettingsFragment.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/fragment/SettingsFragment.java
@@ -9,10 +9,10 @@ import android.preference.PreferenceManager;
import android.provider.SearchRecentSuggestions;
import android.widget.Toast;
-import com.androidquery.util.AQUtility;
import com.sismics.docs.R;
import com.sismics.docs.provider.RecentSuggestionsProvider;
import com.sismics.docs.util.ApplicationUtil;
+import com.sismics.docs.util.OkHttpUtil;
import com.sismics.docs.util.PreferenceUtil;
/**
@@ -52,7 +52,7 @@ public class SettingsFragment extends PreferenceFragment implements SharedPrefer
clearCachePref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- AQUtility.cleanCacheAsync(getActivity());
+ OkHttpUtil.clearCache(getActivity());
Toast.makeText(getActivity(), R.string.pref_clear_cache_success, Toast.LENGTH_LONG).show();
return true;
}
diff --git a/docs-android/app/src/main/java/com/sismics/docs/resource/BaseResource.java b/docs-android/app/src/main/java/com/sismics/docs/resource/BaseResource.java
index 29e46528..ac3b3fde 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/resource/BaseResource.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/resource/BaseResource.java
@@ -3,14 +3,11 @@ package com.sismics.docs.resource;
import android.content.Context;
import android.os.Build;
-import com.androidquery.callback.AbstractAjaxCallback;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.PersistentCookieStore;
import com.sismics.docs.util.ApplicationUtil;
import com.sismics.docs.util.PreferenceUtil;
-import org.apache.http.conn.ssl.SSLSocketFactory;
-
import java.io.IOException;
import java.net.Socket;
import java.security.KeyManagementException;
@@ -26,6 +23,8 @@ import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
+import cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory;
+
/**
* Base class for API access.
*
@@ -55,15 +54,10 @@ public class BaseResource {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);
- // AQuery support only the old Apache HTTP library
+ // Async HTTP Client uses another HTTP libary
MySSLSocketFactory sf = new MySSLSocketFactory(trustStore);
sf.setHostnameVerifier(MySSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
- AbstractAjaxCallback.setSSF(sf);
-
- // Async HTTP Client uses another HTTP libary
- MySSLSocketFactory2 sf2 = new MySSLSocketFactory2(trustStore);
- sf2.setHostnameVerifier(MySSLSocketFactory2.ALLOW_ALL_HOSTNAME_VERIFIER);
- client.setSSLSocketFactory(sf2);
+ client.setSSLSocketFactory(sf);
} catch (Exception e) {
// NOP
}
@@ -89,52 +83,15 @@ public class BaseResource {
}
}
- /**
- * Socket factory to allow self-signed certificates for AQuery.
- *
- * @author bgamard
- */
- public static class MySSLSocketFactory extends SSLSocketFactory {
- SSLContext sslContext = SSLContext.getInstance("TLS");
-
- public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
- super(truststore);
-
- TrustManager tm = new X509TrustManager() {
- public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
- }
-
- public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
- }
-
- public X509Certificate[] getAcceptedIssuers() {
- return null;
- }
- };
-
- sslContext.init(null, new TrustManager[] { tm }, null);
- }
-
- @Override
- public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException {
- return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
- }
-
- @Override
- public Socket createSocket() throws IOException {
- return sslContext.getSocketFactory().createSocket();
- }
- }
-
/**
* Socket factory to allow self-signed certificates for Async HTTP Client.
*
* @author bgamard
*/
- public static class MySSLSocketFactory2 extends cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory {
- SSLContext sslContext = SSLContext.getInstance("TLS");
+ public static class MySSLSocketFactory extends cz.msebera.android.httpclient.conn.ssl.SSLSocketFactory {
+ SSLContext sslContext = SSLContext.getInstance(SSLSocketFactory.TLS);
- public MySSLSocketFactory2(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
+ public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
super(truststore);
TrustManager tm = new X509TrustManager() {
diff --git a/docs-android/app/src/main/java/com/sismics/docs/resource/FileResource.java b/docs-android/app/src/main/java/com/sismics/docs/resource/FileResource.java
index 2c802b99..2e594817 100644
--- a/docs-android/app/src/main/java/com/sismics/docs/resource/FileResource.java
+++ b/docs-android/app/src/main/java/com/sismics/docs/resource/FileResource.java
@@ -58,8 +58,8 @@ public class FileResource extends BaseResource {
SyncHttpClient client = new SyncHttpClient();
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null, null);
- MySSLSocketFactory2 sf = new MySSLSocketFactory2(trustStore);
- sf.setHostnameVerifier(MySSLSocketFactory2.ALLOW_ALL_HOSTNAME_VERIFIER);
+ MySSLSocketFactory sf = new MySSLSocketFactory(trustStore);
+ sf.setHostnameVerifier(MySSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
client.setSSLSocketFactory(sf);
client.setCookieStore(new PersistentCookieStore(context));
client.setUserAgent(USER_AGENT);
diff --git a/docs-android/app/src/main/java/com/sismics/docs/util/OkHttpUtil.java b/docs-android/app/src/main/java/com/sismics/docs/util/OkHttpUtil.java
new file mode 100644
index 00000000..be3cdc39
--- /dev/null
+++ b/docs-android/app/src/main/java/com/sismics/docs/util/OkHttpUtil.java
@@ -0,0 +1,123 @@
+package com.sismics.docs.util;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.jakewharton.picasso.OkHttp3Downloader;
+import com.squareup.picasso.Picasso;
+
+import java.io.IOException;
+import java.security.cert.CertificateException;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import okhttp3.Cache;
+import okhttp3.Interceptor;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import okhttp3.Response;
+
+/**
+ * Utilities for OkHttp.
+ *
+ * @author bgamard.
+ */
+public class OkHttpUtil {
+ /**
+ * Build a Picasso object with base config.
+ *
+ * @param context Context
+ * @param authToken Auth token
+ * @return Picasso object
+ */
+ public static Picasso picasso(Context context, final String authToken) {
+ OkHttpClient okHttpClient = buildOkHttpClient()
+ .addInterceptor(new Interceptor() {
+ @Override
+ public Response intercept(Interceptor.Chain chain) throws IOException {
+ final Request original = chain.request();
+ final Request.Builder requestBuilder = original.newBuilder()
+ .header("Cookie", "auth_token=" + authToken)
+ .header("Cache-Control", "max-age=" + (3600 * 24 * 365))
+ .method(original.method(), original.body());
+ return chain.proceed(requestBuilder.build());
+ }
+ })
+ .cache(new Cache(context.getCacheDir(),
+ PreferenceUtil.getIntegerPreference(context, PreferenceUtil.PREF_CACHE_SIZE, 0) * 1000000))
+ .build();
+
+ Picasso picasso = new Picasso.Builder(context)
+ .downloader(new OkHttp3Downloader(okHttpClient))
+ .build();
+ picasso.setIndicatorsEnabled(false);
+ return picasso;
+ }
+
+ /**
+ * Clear the cache.
+ *
+ * @param context Context
+ */
+ public static void clearCache(Context context) {
+ Cache cache = new Cache(context.getCacheDir(),
+ PreferenceUtil.getIntegerPreference(context, PreferenceUtil.PREF_CACHE_SIZE, Integer.MAX_VALUE));
+ try {
+ cache.evictAll();
+ } catch (IOException e) {
+ Log.e("OKHttpUtil", "Error clearing cache", e);
+ }
+ }
+
+ /**
+ * Build a OkHttpClient accepting all SSL certificates.
+ *
+ * @return OkHttpClient.Builder
+ */
+ private static OkHttpClient.Builder buildOkHttpClient() {
+ try {
+ // Create a trust manager that does not validate certificate chains
+ final TrustManager[] trustAllCerts = new TrustManager[] {
+ new X509TrustManager() {
+ @Override
+ public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
+ }
+
+ @Override
+ public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {
+ }
+
+ @Override
+ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+ }
+ };
+
+ // Install the all-trusting trust manager
+ final SSLContext sslContext = SSLContext.getInstance("TLS");
+ sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
+
+ // Create an ssl socket factory with our all-trusting manager
+ final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+
+ OkHttpClient.Builder builder = new OkHttpClient.Builder();
+ builder.sslSocketFactory(sslSocketFactory);
+ builder.hostnameVerifier(new HostnameVerifier() {
+ @Override
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+ });
+
+ return builder;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/docs-android/app/src/main/res/layout/file_viewpager_item.xml b/docs-android/app/src/main/res/layout/file_viewpager_item.xml
index 05d1c45f..20da6861 100644
--- a/docs-android/app/src/main/res/layout/file_viewpager_item.xml
+++ b/docs-android/app/src/main/res/layout/file_viewpager_item.xml
@@ -9,7 +9,7 @@
android:layout_width="200dp"
android:layout_height="15dip"
android:id="@+id/fileProgressBar"
- android:indeterminate="false"
+ android:indeterminate="true"
android:layout_centerInParent="true"/>