diff --git a/app/src/basic/res/menu/main_activity_screens.xml b/app/src/basic/res/menu/main_activity_screens.xml
index b4a139661..aa90a0cd5 100644
--- a/app/src/basic/res/menu/main_activity_screens.xml
+++ b/app/src/basic/res/menu/main_activity_screens.xml
@@ -7,7 +7,7 @@
app:showAsAction="ifRoom|withText"
android:id="@+id/whats_new" />
diff --git a/app/src/full/res/menu/main_activity_screens.xml b/app/src/full/res/menu/main_activity_screens.xml
index a172646df..c7c174d7e 100644
--- a/app/src/full/res/menu/main_activity_screens.xml
+++ b/app/src/full/res/menu/main_activity_screens.xml
@@ -17,7 +17,7 @@
app:showAsAction="ifRoom|withText"
android:id="@+id/nearby" />
diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java
index b7558cce6..5a4af4d7b 100644
--- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java
+++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java
@@ -343,14 +343,21 @@ public class FDroidApp extends Application {
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if (level >= TRIM_MEMORY_BACKGROUND) {
- ImageLoader.getInstance().clearMemoryCache();
+ clearImageLoaderMemoryCache();
}
}
@Override
public void onLowMemory() {
super.onLowMemory();
- ImageLoader.getInstance().clearMemoryCache();
+ clearImageLoaderMemoryCache();
+ }
+
+ private void clearImageLoaderMemoryCache() {
+ ImageLoader imageLoader = ImageLoader.getInstance();
+ if (imageLoader.isInited()) {
+ imageLoader.clearMemoryCache();
+ }
}
@Override
diff --git a/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java b/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java
index 231484639..243613425 100644
--- a/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java
+++ b/app/src/main/java/org/fdroid/fdroid/net/HttpDownloader.java
@@ -147,9 +147,9 @@ public class HttpDownloader extends Downloader {
} else {
String calcedETag = String.format("\"%x-%x\"",
tmpConn.getLastModified() / 1000, contentLength);
- if (calcedETag.equals(headETag)) {
+ if (cacheTag.equals(calcedETag)) {
Utils.debugLog(TAG, urlString + " cached based on calced ETag, not downloading: " +
- headETag);
+ calcedETag);
return;
}
}
diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java
index 1a8bf2a56..fecfe188b 100644
--- a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java
+++ b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesViewBinder.java
@@ -1,5 +1,10 @@
package org.fdroid.fdroid.views.updates;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
@@ -8,8 +13,8 @@ import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
+import android.widget.ProgressBar;
import android.widget.TextView;
-
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.UpdateService;
import org.fdroid.fdroid.Utils;
@@ -20,8 +25,11 @@ public class UpdatesViewBinder {
private final RecyclerView list;
private final TextView emptyState;
private final ImageView emptyImage;
+ private final ProgressBar emptyUpdatingProgress;
+ private final AppCompatActivity activity;
public UpdatesViewBinder(final AppCompatActivity activity, FrameLayout parent) {
+ this.activity = activity;
View view = activity.getLayoutInflater().inflate(R.layout.main_tab_updates, parent, true);
adapter = new UpdatesAdapter(activity);
@@ -37,6 +45,7 @@ public class UpdatesViewBinder {
emptyState = (TextView) view.findViewById(R.id.empty_state);
emptyImage = (ImageView) view.findViewById(R.id.image);
+ emptyUpdatingProgress = view.findViewById(R.id.empty_updating_progress);
final SwipeRefreshLayout swipeToRefresh = (SwipeRefreshLayout) view.findViewById(R.id.swipe_to_refresh);
Utils.applySwipeLayoutColors(swipeToRefresh);
@@ -61,12 +70,16 @@ public class UpdatesViewBinder {
private void updateEmptyState() {
if (adapter.getItemCount() == 0) {
list.setVisibility(View.GONE);
- emptyState.setVisibility(View.VISIBLE);
emptyImage.setVisibility(View.VISIBLE);
+ setUpEmptyUpdatingProgress(UpdateService.isUpdating());
+ LocalBroadcastManager.getInstance(activity).registerReceiver(updateServiceStatusReceiver,
+ new IntentFilter(UpdateService.LOCAL_ACTION_STATUS));
} else {
list.setVisibility(View.VISIBLE);
emptyState.setVisibility(View.GONE);
emptyImage.setVisibility(View.GONE);
+ LocalBroadcastManager.getInstance(activity).unregisterReceiver(updateServiceStatusReceiver);
+ emptyUpdatingProgress.setVisibility(View.GONE);
}
}
@@ -87,4 +100,23 @@ public class UpdatesViewBinder {
updateEmptyState();
}
};
+
+ private final BroadcastReceiver updateServiceStatusReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ // Anything other than a STATUS_INFO broadcast signifies that it was complete
+ boolean isUpdating = intent.getIntExtra(UpdateService.EXTRA_STATUS_CODE, 0) == UpdateService.STATUS_INFO;
+ setUpEmptyUpdatingProgress(isUpdating);
+ }
+ };
+
+ private void setUpEmptyUpdatingProgress(boolean isUpdating) {
+ if (isUpdating) {
+ emptyState.setVisibility(View.GONE);
+ emptyUpdatingProgress.setVisibility(View.VISIBLE);
+ } else {
+ emptyState.setVisibility(View.VISIBLE);
+ emptyUpdatingProgress.setVisibility(View.GONE);
+ }
+ }
}
diff --git a/app/src/main/res/layout/main_tab_updates.xml b/app/src/main/res/layout/main_tab_updates.xml
index e201a42c1..95a187d68 100644
--- a/app/src/main/res/layout/main_tab_updates.xml
+++ b/app/src/main/res/layout/main_tab_updates.xml
@@ -36,6 +36,15 @@
android:visibility="gone"
android:text="@string/empty_can_update_app_list" />
+
+
Suche löschen
Neueste
Kategorien
- Aktualisierungen
+ Aufgaben
Direkt
Version %1$s (Empfohlen)
Neu