show banner when Over Data/WiFi Settings disable updating from internet
This commit is contained in:
parent
8773d6205c
commit
908921e978
@ -253,6 +253,37 @@ public class UpdateService extends JobIntentService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a {@link List} of all {@link Repo}s that have either a local
|
||||
* canonical URL or a local mirror URL. These are repos that can be
|
||||
* updated and used without using the Internet.
|
||||
*/
|
||||
public static List<Repo> getLocalRepos(Context context) {
|
||||
return getLocalRepos(RepoProvider.Helper.all(context));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the repos in the {@code repos} {@link List} that have either a
|
||||
* local canonical URL or a local mirror URL. These are repos that can be
|
||||
* updated and used without using the Internet.
|
||||
*/
|
||||
public static List<Repo> getLocalRepos(List<Repo> repos) {
|
||||
ArrayList<Repo> localRepos = new ArrayList<>();
|
||||
for (Repo repo : repos) {
|
||||
if (isLocalRepoAddress(repo.address)) {
|
||||
localRepos.add(repo);
|
||||
} else {
|
||||
for (String mirrorAddress : repo.getMirrorList()) {
|
||||
if (isLocalRepoAddress(mirrorAddress)) {
|
||||
localRepos.add(repo);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return localRepos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
@ -405,19 +436,7 @@ public class UpdateService extends JobIntentService {
|
||||
Utils.debugLog(TAG, "skipping internet check, this is local: " + address);
|
||||
} else if (netState == ConnectivityMonitorService.FLAG_NET_UNAVAILABLE) {
|
||||
// keep track of repos that have a local copy in case internet is not available
|
||||
ArrayList<Repo> localRepos = new ArrayList<>();
|
||||
for (Repo repo : repos) {
|
||||
if (isLocalRepoAddress(repo.address)) {
|
||||
localRepos.add(repo);
|
||||
} else {
|
||||
for (String mirrorAddress : repo.getMirrorList()) {
|
||||
if (isLocalRepoAddress(mirrorAddress)) {
|
||||
localRepos.add(repo);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
List<Repo> localRepos = getLocalRepos(repos);
|
||||
if (localRepos.size() > 0) {
|
||||
repos = localRepos;
|
||||
} else {
|
||||
|
@ -4,16 +4,22 @@ import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
|
||||
import org.fdroid.fdroid.Preferences;
|
||||
import org.fdroid.fdroid.R;
|
||||
import org.fdroid.fdroid.UpdateService;
|
||||
import org.fdroid.fdroid.data.Repo;
|
||||
import org.fdroid.fdroid.net.ConnectivityMonitorService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
/**
|
||||
* Banner widget which reflects current status related to repository updates.
|
||||
@ -37,6 +43,11 @@ public class StatusBanner extends androidx.appcompat.widget.AppCompatTextView {
|
||||
|
||||
private int updateServiceStatus = UpdateService.STATUS_COMPLETE_WITH_CHANGES;
|
||||
private int networkState = ConnectivityMonitorService.FLAG_NET_NO_LIMIT;
|
||||
private int overDataState;
|
||||
private int overWiFiState;
|
||||
private List<Repo> localRepos;
|
||||
|
||||
private final SharedPreferences preferences;
|
||||
|
||||
public StatusBanner(Context context) {
|
||||
this(context, null);
|
||||
@ -53,6 +64,8 @@ public class StatusBanner extends androidx.appcompat.widget.AppCompatTextView {
|
||||
setBackgroundColor(0xFF4A4A4A);
|
||||
setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
|
||||
setTextColor(0xFFFFFFFF);
|
||||
|
||||
preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -69,6 +82,11 @@ public class StatusBanner extends androidx.appcompat.widget.AppCompatTextView {
|
||||
LocalBroadcastManager.getInstance(context).registerReceiver(onRepoFeedback,
|
||||
new IntentFilter(UpdateService.LOCAL_ACTION_STATUS));
|
||||
|
||||
overDataState = Preferences.get().getOverData();
|
||||
overWiFiState = Preferences.get().getOverWifi();
|
||||
localRepos = UpdateService.getLocalRepos(context);
|
||||
preferences.registerOnSharedPreferenceChangeListener(dataWifiChangeListener);
|
||||
|
||||
setBannerTextAndVisibility();
|
||||
}
|
||||
|
||||
@ -78,6 +96,7 @@ public class StatusBanner extends androidx.appcompat.widget.AppCompatTextView {
|
||||
Context context = getContext();
|
||||
LocalBroadcastManager.getInstance(context).unregisterReceiver(onRepoFeedback);
|
||||
context.unregisterReceiver(onNetworkStateChanged);
|
||||
preferences.unregisterOnSharedPreferenceChangeListener(dataWifiChangeListener);
|
||||
}
|
||||
|
||||
private void setBannerTextAndVisibility() {
|
||||
@ -88,6 +107,15 @@ public class StatusBanner extends androidx.appcompat.widget.AppCompatTextView {
|
||||
|| networkState == ConnectivityMonitorService.FLAG_NET_DEVICE_AP_WITHOUT_INTERNET) {
|
||||
setText(R.string.banner_no_internet);
|
||||
setVisibility(View.VISIBLE);
|
||||
} else if (overDataState == Preferences.OVER_NETWORK_NEVER
|
||||
&& overWiFiState == Preferences.OVER_NETWORK_NEVER) {
|
||||
localRepos = UpdateService.getLocalRepos(getContext());
|
||||
if (localRepos.size() == 0) {
|
||||
setText(R.string.banner_no_data_or_wifi);
|
||||
setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
setVisibility(View.GONE);
|
||||
}
|
||||
} else {
|
||||
setVisibility(View.GONE);
|
||||
}
|
||||
@ -113,4 +141,16 @@ public class StatusBanner extends androidx.appcompat.widget.AppCompatTextView {
|
||||
setBannerTextAndVisibility();
|
||||
}
|
||||
};
|
||||
|
||||
private final SharedPreferences.OnSharedPreferenceChangeListener dataWifiChangeListener =
|
||||
new SharedPreferences.OnSharedPreferenceChangeListener() {
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
if (key == Preferences.PREF_OVER_DATA || key == Preferences.PREF_OVER_WIFI) {
|
||||
overDataState = Preferences.get().getOverData();
|
||||
overWiFiState = Preferences.get().getOverWifi();
|
||||
setBannerTextAndVisibility();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -378,8 +378,12 @@ This often occurs with apps installed via Google Play or other sources, if they
|
||||
-->
|
||||
<string name="status_download_unknown_size">Downloading\n%2$s from\n%1$s</string>
|
||||
<string name="download_404">The requested file was not found.</string>
|
||||
<!-- This is a banner title, it should be maximum 30 characters -->
|
||||
<string name="banner_updating_repositories">Updating repositories</string>
|
||||
<!-- This is a banner title, it should be maximum 30 characters -->
|
||||
<string name="banner_no_internet">No Internet</string>
|
||||
<!-- This is a banner title, it should be maximum 30 characters -->
|
||||
<string name="banner_no_data_or_wifi">No Data or WiFi enabled</string>
|
||||
<string name="status_processing_xml_percent">Processing %2$s / %3$s (%4$d%%) from %1$s</string>
|
||||
<string name="status_connecting_to_repo">Connecting to\n%1$s</string>
|
||||
<string name="status_inserting_apps">Saving app details</string>
|
||||
|
@ -8,21 +8,24 @@ import sys
|
||||
from xml.etree import ElementTree
|
||||
|
||||
maxlengths = {
|
||||
"banner_no_data_or_wifi": 30,
|
||||
"banner_no_internet": 30,
|
||||
"banner_updating_repositories": 30,
|
||||
"installing": 50,
|
||||
"menu_install": 15,
|
||||
"menu_uninstall": 15,
|
||||
"installing": 50,
|
||||
"uninstalling": 50,
|
||||
"nearby_splash__find_people_button": 30,
|
||||
"nearby_splash__request_permission": 30,
|
||||
"swap": 25,
|
||||
"swap_nfc_title": 25,
|
||||
"swap_choose_apps": 25,
|
||||
"swap_confirm": 25,
|
||||
"swap_connecting": 25,
|
||||
"swap_nearby": 25,
|
||||
"swap_nfc_title": 25,
|
||||
"swap_scan_qr": 18,
|
||||
"swap_send_fdroid": 18,
|
||||
"swap_success": 25,
|
||||
"uninstalling": 50,
|
||||
"update_all": 20,
|
||||
"updates__hide_updateable_apps": 35,
|
||||
"updates__show_updateable_apps": 35,
|
||||
|
Loading…
x
Reference in New Issue
Block a user